1
2[Changes 75p2]
3* svobodam@eva.vsp.cz sent in some patches for bx.. Specifically adding
4  ircnet support. His patch for lame_ident's was already implemented. Added
5  some ircnet servers.
6* some changes to the functions $opensocket(). Added a NOTIFY param as the
7  third arg, default is line mode SOCKET reading. This changes the behaviour
8  of the socket. instead of the SOCKET, hook returning the info, another hook
9  SOCKET_NOTIFY is sent instead. IT's upto the script in this case too read
10  the socket. So either a $readsocket() or a $readchar() can be used to read
11  the info from the socket. params on the hooks were changed to be a little
12  more sane. "socketnum servername port flags" for SOCKET_NOTIFY and
13  "socketnum servername port string" for SOCKET.
14* another major in-compatibility in scr-bx  added.. Make sure you update
15  scr-bx. This one adds connection cookies. Without the cookie, you can't
16  connect to a detached bx.
17* /window 2 triple on was coring the client when window 2 was a hidden
18  window. this might have effected other commands as well.
19* bug in wset pointed out by void fixed.
20* make configure check for in_systm.h in netinet and sys directories.
21* added multi-play to internal amp module. quoted filenames are played one
22  after another.
23* small patch for HPUX modules. author of the patch said that he required
24  a additional -DHPUX on the CFLAGS
25* small bug in tab completions fixed. Added #chan completion into tab
26  handling
27* cosmetic changes to /cdcc involving the help.
28* Robohak found and supplied a patch for the new /set mangle routines. Same
29  patch applies to epic.
30* away msg log removal broken when using /back.
31* added a new /cset LAME_IDENT for turning off the ban/kick on lame chars in
32  the ident. seems some servers all this shit.
33* Robohak found and fixed two problems in $winitem().
34* had a crack at fixing the term init problem when you change term sizes.
35  this is not gonna be easy. currently it works. but it's a real kludge and
36  not totally 100%. ie term types have to be the same. xterm != vt100.
37  Changes required too scr-bx so the console size can be passed. This makes
38  scr-bx in-compatible with older scr-bx's
39* a few small changes made too detachcmd(). we now remove the
40  ~/.BitchX/screens file on a TERM signal. This helps when reattaching to a
41  cron'd BitchX process. We can use the same cron script as an egg.
42* re-wrote whokill. /whokill pattern pattern pattern :reason will match
43  the patterns and buffer the kills. on end, it then kills in groups to
44  help prevent flooding of the oper. Added NUM_KILLS variable. Requested
45  by thetaz a dalnet oper. EfNet only allows one kill per KILL.
46* -r filename will now accept a path/filename as well as just a filename.
47* potential problem with a mode change corrected. This would cause the
48  client to become desynced from the actual server modes..
49  /c -lk-oo test nick nick1 too demonstrate. Thanks too SideWnder for this.
50* ignoring ctcp no longer ignore's quits. First mentioned by Hyriluk
51* removed FORMAT_USERS_BOT. it was redundant.
52* added FORMAT_USERS_TITLE. default for FORMAT_USERS FORMAT_USERS_SHIT
53  changed
54* changed the split list so it's server dependant. This way, the list will
55  still work on multiple servers.
56* some problems in the shitlist now fixed. Also added new functionality.
57  if a nick is on the channel and the shitlist is added, they are
58  immediately banned and kicked. if they are unshit'd, and the ban is on
59  the channel the ban is removed as well. The following types of bans are
60  allowed -   nick, nick!user nick!user@host, user@host.
61* error in nicklist hash causing core found. $checkuser(blah *) doesn't
62  core now.
63* 471-476 numerics moved. these CAN hurt internal structures.
64* substr, rsubstr, getopt, isaway and nohighlight functions added.
65* possible timer bug found/fixed.
66* function for collecting number of users, written by Mhacker.
67* minor changes made to nick completion.
68* added a new hook MODULE, which can be called from dll modules and
69  interface with scripts. for example, amp, returns a "AMP PLAY name" on
70  start, a "AMP CLOSE name" on end, "AMP ERRROR name" and "AMP ID3 params".
71* auto_response should be a bool on/off instead of a int. default it too on
72* fixed a problem in the autobot module. should have been u->host
73* kopz notice that dcc min speed was not working.. fixed. Also modified
74  /cdcc minspeed so that it accepts 2 arguements. a minspeed and a timeout.
75* Cset queuing is now fully implemented. You can even specify a cset in
76  your .bitchxrc file. It will be queued up until you join that channel.
77* more modifications to $aliasctl(). a PMATCH param can be specified which
78  will search for wildcarded matches. MATCH does exact char matching.
79* HARD_UH_NOTIFY is gone. along with it went NOTIFY_SIGNON_UH and
80  NOTIFY_SIGNOFF_UH hooks. FORMAT_NOTIFY_SIGNON_UH FORMAT_NOTIFY_SIGNOFF_UH
81  is gone as well. Userhost notification is now the default. /notify can now
82  accept a nick!user@host. All this means is that unless the userhost
83  matches, this notify will not display. Some notify problems found and
84  fixed.
85* $getcset(var #chan value) will set a new value and return the old.
86* Power found a problem with $winitem().
87* Nuke found a solution for the problem with win95 and color. turns out that
88  ansi.sys scroll region, doesn't scroll the color. stupid... Anyways, we
89  changed to a direct windows function for scrolling a region and problem
90  is now solved.
91* replaced the dcc_*_func with something more generic. a
92  add_dcc_bind("type", "modname" init_func, open_func, input, output,
93		close_func);
94	type is a char str defining the new dcc type.
95	modname is the name of the module. for use when unloading.
96	init_func is a function that is called when this ctcp type is
97	recieved.
98	open_func is a function that is called when the dcc is open'd.
99	input is a function that should be called when there is data ready.
100	output is a function to call when you send data.
101	close_func is a function to call when the dcc is to be closed.
102  we could actually replace internal routines with ones that are wanted.
103  each of the above functions should return a int value. in some cases this
104  value is ignored. but the input/output routines do NOT ignore this.
105* change /dc to not chat yourself. Also changed /dcc chat to ignore your own
106  nick.
107* small change to $glob() to fix a memleak.
108* more changes to tab_completion.
109* added the ability for /scan to accept a wildcard nick!user@host to search
110  for. so /scan *!*@*.com
111* Implemented a queued server send system for use in cdcc.
112  /set QUEUE_SENDS #, where number is the number of seconds to wait.
113* fixed up core problem with notify.
114* merged in epic4 pre2.001nr-3 and partial pre2.001nr2 patches.
115* remerged in the OS/2 pm port changes.
116* added a CTCP userlist flag. which allows ctcps on certain ones when
117  cloaked
118* forgot about DCC_PROC for modules. added remove procedure.
119* found bug with numeric 464.
120* humble contributed a color change to bx. in config.h add a #define HUMBLE
121  just before the #include "color.h" and it will be enabled as the default.
122* added a $longcomma() which takes a long number, and formats it with
123  comma's
124* possible fix for core on netsplits with a * in them.
125
126* added a couple of output replacement hooks for dcc and server connections.
127	serv_output_func, serv_input_func, dcc_input_func and
128	dcc_output_func can be defined within a module to replace the normal
129	dgets() and write() functions. This paves the way for secure
130	dcc/server connections.  serv_output_func = some_new_output; in your
131	module.
132
133* new TAB_COMPLETION binding created. A FORMAT_COMPLETE also added for
134  display purposes. This new bind does alot more than the old TAB_MSG bind.
135  commands currently specifically handled with the new tab complete are,
136  MSG/EXEC/DCC/LOAD/SERVER/LS
137		- With nothing on the line, we cycle through the
138		msg buffer nicks. if there are none, then the list of channel
139		nicks is displayed.
140		- if we start typing a nick, then matching channel nicks are
141		displayed. if there's one and only one, then it will be
142		placed on the input line
143		- "/msg " will use the tab buffer, or if that's empty then
144		we  use channel nicks. placing a partial nick, will match
145		that nick from either.
146		- "/exec [pattern]" will attempt to match a filename. if no
147		path is specified, then your $HOME directory is assumed.
148		if you use / then we can match directories. A * is implied
149		when matching, so you don't have to supply one.
150		- "/dcc send nick filename". depending on where you press
151		the tab will determine what is done on the matching. if it's
152		at the nick then tab/chan nick matching is done. if it at
153		the filename, then DCC_DLDIR is used for matching.
154		specifying a / means look in a dir other than DCC_DLDIR.
155	this new tab_completion will also fill in the the input buffer with
156	the most number of chars that are common from the resulting match.
157
158* Added a -ALL flag to xquotecmd to send to all connected servers.
159* found and fixed a problem with timed_server() which was causing a odd
160  coredump with is.bx.
161* modified $aliasctl() for command globbing and assign globbing.
162	$aliasctl(assign/local/alias/command get/set/match what);
163	command globbing is a match only operation.
164	local assigns don't make sense in a match operation.
165	This will however return all matching assign's/alias's/commands.
166	The "what" has a appended * so you if you don't specify
167	a wildcard. Contributed patch to epic.
168* added /clear -scroll for cleaning out the scrollback buffer.
169* the away msg is resent when we reconnect or timeout from a server. client
170  no longer resends the away msg to your channels.
171* format_server_notice changed. and more server notices now use the
172  server_prompt variable
173* Small change made to bx to support NAT. Added -Z flag to enable a userhost
174  on connect to the server. This sets the address to use for dcc transfers.
175  supposedly this is enough to get by the NAT server.
176* # comments supported in .ircservers, ircII.servers etc. when found, we
177  truncate the line at the #.
178* added back in, dcc renumbering code. Possible though I didn't catch all
179  the exits.
180* configure --with-tcl patch added. This makes the configure script #define
181  WANT_TCL in defs.h instead of editing the Makefile. Allows modules to be
182  compiled with tcl/non-tcl support as well.
183* window logfile will now strip certain chars from the name and replace with
184  '-'. This is so that nicks with "|\/:" don't cause problems in any of the
185  clients but specifically with the win95/nt OS2 ports
186* Added 2 new hooks. LEAVE_ME  is hooked when we part a channel under our
187  own power. CHANOP is hooked when we gain ops in a channel.
188* $dccitem() which will return information based on the passed in dcc number
189  or socket number. args are a number (dccitem) or a #number (socketnum).
190	$0 type
191	$1 nick
192	$2 status
193	$3 start time
194	$4 start position for resume/reget/resend
195	$5 bytes recieved
196	$6 bytes sent
197	$7 filesize
198	$8 filename
199	$9 socket number of this connect
200	$10 server
201* $winitem() added which is compatible in most respects with openirc's
202  version. if %num then num is a window refnum. just a number then it's the
203  num'th window in the list.
204	$0 refnum
205	$1 name or <none>
206	$2 server number
207	$3 current channel or <none>
208	$4 query nick or none
209	$5 waiting channel or <none>
210	$6 <none> (oirc has menu name)
211	$7 1 visible 0 non-visible.
212	$8 # of columns
213	$9 # of rows
214	$10 reserved
215	$11 reserved
216	$12 reserved
217	$13 reserved
218	$14 reserved
219	$15 logfile name or none
220	$16 L if logging enabled, "" always apart of string
221	$17 n if nicklist.
222	$18-$19 reserved
223	$20+ window level
224* new flag to /clear -scrollback which will clear the scrollback buffer as
225  well as the window. /clear -scrollback -all works for all windows.
226* $chanmode() extended. $chanmode(#chan #) where # can be 0 normal, 1 bans,
227  2 ban whoset time, 3 exemptions for TS4.
228     $chanmode(#bitchx 1)  ->  "*!*@*.aol.com"
229     $chanmode(#bitchx 2)  ->  "*!*@*.aol.com elmer 9123000"
230* $channicks() and $chanusers() can accept one more param. This is the sort
231  type to use for call. types of sorting are 0 normal, 1 none, 2 nick,
232  3 host, 4 time, 5 ip if available.
233* NICK_COMPLETION_LEN added from a patch by by-tor
234* some buffer modifications to reduce memory usage.
235* some old function unused removed.
236* old prototypes found and removed as well as unneeded ones.
237* /kb fixed to not send -o the nick, as they are already kicked.
238* modified module loading to make it possible to load on alot more systems
239  that don't have -rdynamic flag for exporting symbols. Makes the client
240  250k smaller in size as well. Shouldn't impact memusage at all. Module
241  interface changed though to make this possible. a pointer to a list of
242  functions is passed into the _Init function as well as the pointer to the
243  command table. These functions can now be accessed using a file with
244  "alot" of defines in it. modval.h created for this purpose. Internal
245  functions could possibly be replaced using this method as well.
246* Robohak contributed a patch to function_msar() which should concievably
247  fix the memleak in it.
248* Robohak reported a coredump in p_topic(). should be fixed. looks like a
249  really desynced condition could possibly exist that might cause a core
250  dump. ie join a channel, and a topic change appears immediately after.
251* added /set cdcc on/off for turning your cdcc off.
252* getsets() leaking memory. drendite found this. hops version also leaks.
253* fixed small problem whitedrgn found with hooking 364.
254* seems that /oper <enter> <enter> would core the client.
255* small patch to p_quit() logmsg() needs the channels even when ignored.
256* small problem someone noticed with /quit random msgs and /set log on.
257* changes to convert_output_format() in an attempt at a speedup.
258* dcc closeall seg fixed.
259* Added function to return what the client currently thinks the channel
260  topic is $topic() or $topic(#channel)
261
262
263Changes in BitchX 75p1
264* my fix to msar() was wrong.
265* found and fixed a dcc problem with a rejected dcc.
266* epic pre1.400 changes merged.
267* scr-bx modified. internal /detach modified to go with it. Added a HUP
268  signal which will hangup the session.
269* bug with orignick in .bitchxrc found.
270* documentation for client plugins started.
271* removed Ctrl-Z when detached.
272* added -HUP signal. to detach an attached client. Changed signal handling
273  when we have a detach client.
274* Found and fixed several small memory leaks when /unloading a script.
275  We now remove all arrays and fsets when unloading.
276* Added a plugin hook for window commands.
277* Added a plugin hook for a output procedure. It replaces ALL output's.
278* Set message_from() in chanwall to show too LOG_WALL.
279* BitchX.url buffer was 2048 and a CTOOLZ_DIR path greater than this would
280  overfill the buffer.
281* Added URLGRAB hook which is activated on url's and ftp's. Added USERS_IP
282  hook for display of users ip in /user -ip display
283* Fixed term handling of ctrl chars on the input prompt.
284* Fixed configure option for with-maildir handling.
285* Added $t to return the name of the currently running alias.
286* Changed /load to support loading of .so files instead of using /loaddll.
287* Added a timeout to dcc sends that are inactive. remains to be seen if this
288  will be effective.
289* Added a default case for switch(). there can only be one default case in a
290  switch statement. now switch() works just like the c version.
291* extremely lame buffer overflow bug on startup. who would attempt to
292  exploit themselves? uzfopen() was the culprit in this  case though. and
293  it's used it alot of various file opening functions.
294* small modification to real_file_send() so that FileBuf is searched for the
295  wildcard instead of filename. This allows ~ftp/*.zip to be used.
296* after a little hair-pulling, mirc dcc resumes are now supported. Damn
297  khaled, why not send back the filename instead of that lame "file.ext"
298* Silly bug with dcc resend/resume filesize.
299  if (numbytes == (filesize - offest)) then close the file. Because
300  otherwise we hang around waiting for the end and cause a little cpu usage.
301* FORMAT_WHOIS_SIGNON != FORMAT_NOTIFY_SIGNON in notify.c.
302
303
304
305Changes in BitchX 75  July 1 1998
306
307added $b variable.
308changed strip_ansi() to strip out chr(155) chr(11) and chr(8)
309Xecho -s added.
310window new_hide added.
311fixed +c channel mode core.
312fixed history command.
313
314Added a /paste command. it will take a range of number and optionally a
315nick or channel to send to... /paste 1-5 [-win #] [<nick|#chan>]. The paste
316buffer is from the bottom up.
317
318bhelp is spruced up somewhat. The internals were completely re-written using
319normal c instead of the array functions. /bhelp -dump added, which will
320reload a help file(main reason for the rewrite). Added a -RELATED field in
321the help file (first word on the line). Found and fixed a small memory leak
322with this as well (return from the array function was not free'd).
323
324Showidle command modified. we can now sort the nicks based on time, host,
325nick or none. default is by nick. ex. /showidle -sort time
326
327Added a auto nslookup of all nicks when we join a channel. Added a IP ban
328option for /bantype. Also modified ban_it() to accept an ip if passed, or it
329uses the "Better" bantype if not. /set auto_nslookup determines whether this
330is active or not. /user -ip will show the ips of the users. /user -ip -op
331etc....
332
333A matching lame nick would kick yourself.
334
335set for MIRCS and set for DISPLAY_ANSI have been fixed and updated greatly.
336formats of various types are replaced with a appropriate default formats.
337
338Script writers are going to hate this as I overwrite any changed formats
339with defaults. I'll have to see about some method of allowing both to exist.
340
341Paste command fixed. some lameness on my part was causing the paste to be
342backwards.
343
344New epic who code is a little buggy yet in bx... details need to be worked
345out. Assume it's parameters to the do_hook(). in the hook array.
346
347Added two new command line options. -A for no startup ansi and -N for no
348auto-connect on startup.
349
350Fixed client core when no default servers defined.
351
352Fixed ison and waitcmd() coredumps when no default servers defined. (more of
353these are lurking).
354
355Finally fixed /finger so it works.
356
357Changed the way we set the cloaked client process.. Still need some
358auto-detection routines in configure though.
359
360Forgot about dcc_resend() when adding "filename with space" capabilities to
361dcc sends. cdcc probably needs to be done as well.
362
363Renamed CLONE_READ to SOCKET. Revamped the socket code considerably.
364
365Fixed minor annoyance of /bk not working in new alpha's
366
367More socket improvements. sockets will now timeout after CONNECT_TIMEOUT
368seconds or 120. when we scan sockets, if there is no open sockets dropout of
369the scan.
370
371Possible fix to dcc_Fast.
372
373Fixed core with /bhelp -dump when there's no help file in memory.
374
375Possible fix for kick_if_banned and numerical ips. as well as a core problem
376related to this.
377
378Possible fix for a core when someone joins a channel and you get kicked.
379
380It's now possible to have $glob() return filenames with spaces in them.
381
382Things like this are now possible... (alias from |fingers|)
383alias testarray {
384	fe ($glob(\*)) ii {
385	@ setitem(files_array $numitems(files_array) $ii)
386	}
387}
388
389#$getitem(files_array num)
390FORMAT_ACTION_CHANNELS added. hopefully we got the right methods for
391display'g actions.
392if (is_channel)
393	if (current_channel)
394		if (auto_reply && is_on_user_list)
395			FORMAT_ACTION_USER_AR
396		else if (auto_reply)
397			FORMAT_ACTION_AR
398		else if (is_on_user_list)
399			FORMAT_ACTION_USER
400		else
401			FORMAT_ACTION_CHANNEL
402	else
403		if (auto_reply && is_on_user_list)
404			FORMAT_ACTION_USER_AR
405		else if (auto_reply)
406			FORMAT_ACTION_OTHER_AR
407		else if (is_on_user_list)
408			FORMAT_ACTION_USER
409		else
410			FORMAT_ACTION_OTHER
411else
412	FORMAT_ACTION
413
414Fixed small bug in the notify. We sent out the notifies when we recieve
415jumeric 250. but, the notify list was improperly built.
416433/438 numerics changed to add the server to the hook. $0 is the server.
417
418dcc.c completely rewritten to use the new socket code. non-blocking sends
419are used if possible. FBIONREAD is used to find how much information to read
420from a socket. bot_link.c is not finished. DCC_RAW is not finished. Code is
421alot less verbose than before. arguements to all the send/get/resend/reget
422commands are all the same in the possibilities. Each dcc can have it's own
423blocksize. DCC_TIMEOUT is used to specify the timeout for each dcc. DCC_PROC
424in module.c is actually implemented (might even work). dcc's are much faster
425now...
426
427Small bug in $writesocket() found and fixed for shade.
428
429Changed /wii and friends to support multiple nicks on the command line.
430added -topic to /paste command.
431
432Added +format_xxx variable support. if you /fset +format_xxx "some text"
433that variable is now a format variable and $format_xxx $fparse(format_xxx)
434etc will work on with it. You can re-define ALL the format variables using
435this method, although there could be a speed decrease using it... This might
436actually be a good place for a hash table instead of a linked list.
437
438Found a problem with check_serverlag() where it was possible to flood
439ourselfs off the server with ping requests.
440
441Merged in the changes from epic4pre100.
442
443An auto-away time bug and a msglog bug fixed in update_clock().
444
445Merged in changes from epic4pre200.
446
447Fixed a bug in skip_incoming_mirc() which could cause a lockup. Also fixed
448this so that /set MIRCS works properly...
449
450Channel cset queue setup. what does this mean? well we can now /cset
451#channel  we currently aren't on and add that channel to a queue. So when we
452do finally join that channel, the queue'd csets are used. This allows us to
453use csets from .bitchxrc or .ircrc files.
454
455FromUserHost is set to empty_string at the end of the processing. This
456should allow logmsg() to use $userhost() correctly.
457
458Fixed small problem with spaces in filenames in a dcc. should work now.
459
460A major incompatibility added. /on dcc_request used to return "SEND" as the
461type of request for a file send. Personally I feel this should be "GET".
462
463Added in epics style of ctcp booster for dcc's... what happens is this. If
464you /dcc send or /dcc chat someone and that person happens to "miss" the
465request because of a netsplit, we can /dcc send again and the request is
466booster'd again instead of giving you an error about already existing and
467ignoring. The warning is still given however.
468
469Phucilage found an actual bug. /set scrollback was not doing what it was
470meant todo.
471
472Added USER_FLAG_OP and USER_FLAG_PROT which are run when the a userlist
473person is op'd or a userlist person is kicked or banned.
474
475Found bug in check_prot where a REOP is not possible. Found bug in delay_opz
476for voiced users.
477
478DavidW2 noticed a bug in the way that EXEC_EXIT was done.. m_strdup(logical)
479was not good for the process structure.
480
481Lame BlackJac decided that format_send_away was too plain so forced me to
482add a new variable $u which is the time you set away in seconds since the
483epoch , and change the format to incorporate it.
484
485tsd!tsd@cal001307.student.utwente.nl pointed out that set_xterm_title()
486wasn't following properly. Also added format_xterm_title format.
487
488Added /dump fset  which dumps all fsets and resets them to my defaults.
489
490Added /dump wset  which dumps the wsets for ALL windows and resets to my
491defaults.
492
493Added /dump cset  which recreates the channel csets from the defaults in
494/set
495
496Problems with dcc resends fixed. involved quite a few changes in dcc.c.
497
498Fixed problems with dcc % on status bar as well as fixed up numbers
499displayed while in a dcc resenD on the /dcc list
500
501Decided to use the screen buffer instead of the lastlog buffer in the /paste
502command. This shouldn't mean too much for the casual user but internally it
503means that what you want displayed is displayed. lastlog doesn't always have
504everything logged in it.
505
506[penix_(penix@pm6-24.kconline.com)] found a small problem with dcc causing a
507coredump. several people had mentioned it..
508
509After talking with Sheik, we decided to add a feature to the status bar
510variables. you can now specify a "width" to print a variable. if %<.10>N for
511example, the nick will take "at most" 10, and is space padded to 10. %<-10>N
512will make it left justified. Currently there is no way to say %<-.10>N. This
513will work for all status variables including the status line itself.
514
515Added a $getflags(uh chan) function from sd-.
516
517Added some new hooks. WHOLEFT_FOOTER, USERS_FOOTER, USERLIST_FOOTER,
518STAT_FOOTER, SHOWIDLE_FOOTER, SHITLIST_FOOTER
519
520One more change to dcc sends. removal of dcc_fast for now.
521
522Added a configure option for specifying the mail directory.. --with-maildir
523
524Added NUM_KICKS for the max kicks allowed in one kick...
525
526Changed kickban() to modify the way that /bk and /kb are done. also allow
527for /kb nick,nick1,nick2
528
529Figured out what I'd done wrong in pastecmd().
530
531dcc is working much nicer now. tdcc is not. Fixed a possible core if the
532directory we are attempting to save too is non-existant or non-writable.
533
534Possible core problem with scratch windows cured.
535
536Possible fix for userlist when a channel is specified with a "*" in it. This
537broke the auto-invite on notify feature.
538
539Somes changes to tcl.c and a new tcl.o version is born. the alias var's were
540not exported to tcl. Now _T (current_target) are available. Also get_var,
541set_var, fget_var and fset_var are available.
542
543The party line is now working with the new dcc code.
544
545_]Nuke[_ is working on a OS/2 pm port of bx which will be an option while
546compiling under OS/2.
547
548Found fixed a off by one screen error which was causing problems on a
549/window kill.
550
551STATUS_UPDATE will be hooked anytime a status bar update is occuring.
552DCC_UPDATE will be called when a dcc transfer is occurring at the same time
553that the dcc status percentage is updated.
554
555$randomnick() will take upto 2 args for initial len and max length of the
556string.
557
558With the help of Raistlin and neonapple a bug in the fix_status_buffer()
559code was found and fixed. un-init'd variable was causing the problem
560
561Xavvy requested a install_local which will install BitchX and some other
562files for a local user. it checks and creates ~/bin and ~/.BitchX and then
563copies and links the binary BitchX in ~/bin. Also we copy the various
564BitchX.* files into ~/.BitchX for the user.
565
566OS2 PM changes merged in. todo are multiple windows. added a configure
567option  --enable-pm for os2 PM support. Otherwise vio window support is
568used.
569
570Added support for identwd by whitedrgn. It's a more configurable identd.
571
572Fixed problem with bk and it's mesg about kicking yourself.
573
574Small bug with /quote used in a ctcp hook found and fixed.
575
576New file added. tcl_public.c which set's up the tcl commands within bx.
577source will be distributed for it.
578
579Whoopsy misplaced /clones. also broke auto_away. fixed.
580
581Changed longip() to actually convert a long to a ip and added iplong() which
582takes an ip and converts it to a long.
583
584Added a small change to add_to_channel() in names.c. IF the channel is not
585on your list, but is in the whowas list, the nicks are added to the whowas
586nick buffer. This will allow us to keep a list of nicks from a join to a
587channel when we are kicked immediately before the sync.
588
589a /user -kick would core dump.
590
591Some of the relevant parts of epic4 pre300 have been incorporated. His
592server re-connect needs alot more work than bx's
593
594Added socks4/5 firewall traversal code directly into bx itself.
595 /set SOCKS_HOST and /set SOCKS_PORT as well as command line
596argument -S added. If SOCKS_HOST is not set, then no traversal will be
597attempted. As soon as it is set however, then we will attempt to use the
598SOCKS4/5 firewall on the next reconnect to the irc server. No idea what
599effect this will have on dcc's or other tcp related things.
600
601Changed $channel() to return info about if the user is on your userlist or
602your shitlist. & and ! respectively.
603
604found and fixed several more memory leaks. Added a delete_all_arrays() to the
605/dump all command. Added /dump array command as well.
606
607Loosing my HD didn't help my source tree any. still a few "weird" characters
608scattered around the source tree.
609
610for now we can use the new /detach [password] command to detach a bx client
611from the terminal. you can then later log back into the client using
612BitchX -R [tty] [pass]. This is still rudimentry and still buggy
613at the moment. kasper has agreed to write a frontend program to replace the
614BitchX -R so we aren't running 2 copies of bx. This will reduce memory
615requirements (ie two copies). Password is also encrypted as well using a
616random seed.
617
618Rain noticed a problem with xecho -level. missing break was causing trouble.
619Created a new pgm while waiting for kasper to create it. it's a mini-screen
620attach program for bx's internal /detach. it's called scr-bx. -h gives help
621on this useful little program.
622
623BitchX -B mode changed. it no longer does what it used too. It now detaches
624from the terminal and runs in the background (like before) but, we can now
625re-attach to that session unlike before Thanks too a chat with kasper we now
626have a small program for re-attaching to the backgrounded program..
627
628
629Changes in BitchX 74p3
630Oper'g is now more safe. the oper password is not kept in core. it is
631removed as soon as possible from any place where it might be kept. ie
632do_hook(), vsend_to_server(), parse_line(), parse_command(), oper(),
633oper_password_recieved() all memset the buffer's used if this is a oper up
634command. As well the history() function does not save the /oPer command.
635A bunch of various fixes included.
636$exec() will no longer work from a format.
637change to /window server so that LOG_NONE is set instead of LOG_ALL
638$getinfo() $setinfo() broken and fixed
639/ig + host  no longer cores the client because of a typing error.
640multiple nick changes within nickflood time would trigger for us. we would
641kick ourselves after so many nick changes.
642Habit helped find a problem with the userlist looping on a /save. It seems
643that attempting adding a channel which occured at the end of the hashlist
644would cause the client to lockup while saving a userlist... This is a long
645standing bug that was difficult to find at best.
646Server lag is now sent and calculated for all connected servers.
647Fixed kick of self when /ctcp version yourself.
648mk and lk are fixed now. in fact, they roq.
649
650rale sent me a patch to make bx compile under OpenNT gcc environment. Patch
651is included and here are some notes from him
652# Known Problems:
653#  The configure script screws up when it makes source/sig.inc,
654#  -You need to remove the second line of this file when configure finishes
655#  /exec doesnt work
656#  /window create doesnT work
657
658Added a small change to $fparse() which will add/del a variable if it's not
659found in the list. it's actually assigned. so it will not appear in the
660/fset but will appear in the /assign
661With your userlist off, ctcp op and unban commands were still able to work.
662this is a defiency and is now fixed.
663Patch from  Pharos(hitui@tty005.ims-1.com for making the
664rename_file() return a filename with a number instead of a letter.
665this affects dcc auto transfers.
666Patch from FreeLSD <dimka@solo.telekom.ru> for translation.
667/toggle changed so that the /on set is used for screen output.
668possible fixed for shitty compress_modes() function. This thing was a huge
669memory leak.
670Possible solution for filenames with spaces in them. you need to quote the
671filename ie /dcc send nick "filename with spaces" or
672"dir/filename with spaces". The filename is converted to a name with _'s.
673Christian Deimel (defender@gmx.net) sent me a patch that implements random
674irc names. /ircname with no args will set the ircname to a randomly chosen
675one for the next server connect. BitchX.ircname has the random irc names.
676Changes made to /window level +/- is now allowed.
677Modified server reconnect strategy. /set MAX_SERVER_RECONNECTS defines how
678many times we will attempt to reconnect to a server.
679more fixes to compress_modes.
680%- is now safe as a status format variable.
681Major internal changes for the status bar code. %{0}S specifies status
682expando map 0 (gives server), %{1}S would be map 1 and is undefined at the
683moment. I do have %{1}0-9 defined. which gives us the old %!10  method of
684specifying  status_user10. STATUS_USER was renamed to STATUS_USER0 to help.
685$n will return the current server network if known.
686$getcset(var [#channel]) returns the CSET variable for either the current
687channel or the channel specified.
688$getfsets() or $getfsets(match) will return all or just matching formats.
689Added a field to the cdcc packs for the time added. it's displayed when
690someone requests /msg nick cdcc info #
691$listarray(name) will list all elements in an array with "name"
692New cset/set CTCP_FLOOD_BAN  will ban a nick using the current bantype
693that is currently set. This works for channel and private ctcp floods.
694epic 0.49 changes merged in. along will some fixes for brokenness.
695
696
697Changes in BitchX 74p2
698notify_mark() coredump on undernet fixed.
699p_invite() coredump fixed if your not on a channel when invited to a new
700one.
701Small cosmetic fixes to convert_flags() and /rel
702/j #chan will now reset the prompt to the new channel. This only occured
703when we were already on that channel.
704the /ftp command would seg if a bad host was given
705$s returns the port of the server.
706Changes from epic 0.36 and 0.37 added. These ARE major changes.
707Added new fset FORMAT_OV which is the status format for the oper view.
708Command /addword fixed.
709Couple of minor fixes for /window split on /window triple etc added.
710Fixed expr.c 409 local alias problem.
711Fixed not on channel bug with /ban nick
712KinSlayer
713Fixed up possible problem with cores and windows. rejoining a channel in a
714non-active window had the possibility of causing a coredump.
715$msar() which is a modified sar(). it will do multiple sar's on a  string.
716the command char cannot be used in the string.
717SERVER_PROMPT fixed up to use cparse() style formatting.
718Added /cdcc secure which allows you to add passwords to packages offered.
719New /on FTP for the ftp client output.
720By-Tor made a patch that uses strstr() to help with nick completion. so for
721example |By-tor| is the nick, you can now do By-t: and it will complete.
722Added most changes upto epic 0.41.
723Added a patch from Khinsanth which fixes -H as well as added
724CHANGE_NICK_ON_KILL.
725New keybind BLINK.
726New Variable BLINK_VIDEO
727New /window query which can accept -cmd
728New functions $leftpc(), $mask(), $querywin() replaces $winquery(),
729$uname()
730New argument to /xecho -nolog
731New /cdcc secure added which adds/removes a password for your entire cdcc
732package list.
733Bk found a invite bug.
734Number-6 fixed a problem that BSDi seemed to have with dcc's of 0 size.
735SellFone found a bug that was created when [nutbar] insisted that /Set
736server_prompt be able to parse % color codes.
737I broke sort() when patching in epic changes.
738Green found a problem with /adduser -whatever looping forever.
739Raistlin found a problem with -L removed the - that was being appended to
740the script name. .bitchxrc overrides .ircrc files as a side note.
741fset can now be hooked just like /set is.
742Sping now works again. We now use a slightly modified version of old bx
743technique and new.
744cdcc secure password is stored in the .cdcc.save file.
745Small bug in /hostname on linux systems prevented display of the virtuals.
746
747
748Changes in BitchX 74p1
749
750Coredump problem with timers and windows fixed. Possible problem with
751set_current_screen() repaired.
752
753Abnormal usage with dcc chat's cleared up.
754
755Found/fixed problem with /url grab on
756
757Added IOPS for immediate ops. nick needs to have OPS and IOPS for this to
758work.
759
760Timecop noticed that +Window new 10 times would core a client.
761
762We handle a few more Dalnet specific numerics. Some extra /set's added to
763support them. Check out /fset format_whoi
764
765exec now closes ALL descripters on exit so we no longer run out of file
766handles after 150-limit files.
767
768|by-tor| requested that if there is no current channel but there is a query
769then /ver and /p should be sent to that nick. Added a check for
770get_target_by_refnum() in ping_cmd and ver_cmd.
771
772Phucilage updated the BitchX.help file for us.
773
774Changes in BitchX 74
775
776New userlist is hashed into 3 tiers ala CToolz.
777	tier1 is based on hostname with no wildcards.
778	tier2 is based on channel with no wildcards.
779	tier3 is standard linked list.
780with many user's on the userlist we have increased lookup speed of a user on
781the list significantly. This in turn speeds up the client. Sheik and I
782worked on this.
783
784New flag based userlist system.
785	VOICE, OPS, BAN, UNBAN, INVITE, DCC, KILL, DIE, FLOOD, BOT
786	REOP, DEOP, KICK, PBAN, PINVITE
787
788	Predefined combinations
789		FRIEND = VOICE,OPS,UNBAN,INVITE
790		MASTER = VOICE,OPS,BAN,UNBAN,INVITE,DCC,FLOOD
791		OWNER = MASTER,KILL,DIE,BOT
792
793	Combinations of these flags can be combined ie  VOICE,INVITE,UNBAN
794	so we now have the following
795		/adduser nick #channel voice,invite,unban
796Hostnames are added with the exact hostname unless a nick!user@host is used
797instead of just the nick. This is so that we can take advantage of the new
798userlist system
799
800
801New Compile time defines to remove un-used portions of BX. Look in
802include/config.h
803
804Added the ability to unload a dll after it's loaded. /unloaddll dllname
805
806Added a RAW_PROC for dll's. This is hooked in even before a numeric proc and
807can be used in place of a numeric proc. The Raw proc is a hash'd list
808for a speed increase in large loaded DLL's. Numeric procs will change to
809this format as well.
810
811Fixed up tier3 remove proc to also check on a strcmp() of the host.
812the command /unuser -ALL required this small change.
813
814New screen/window code from epic merged in. /clear works now.
815
816Added new %a aop %s shitlist %h hacking %u userlist %b bitchmode variables
817for the status bar. These are single char flags. Changed status_away to have
818the away msgcount in it.
819
820Fixed /reinit /reinitstatus so it doesn't blank the statusbar on a Ctrl-L.
821
822Reduced memory requirements by a small amount by reducing some static
823buffers.
824
825Status bar repeating chars should now work as advertised.
826$winnames(refnum) will return a list of all names of nicks specific to that
827window. nicks are added with the /window add command
828
829Corrected output of status line. damn extra strmcpy()'s creeped in. This
830might also account for some strange coredumps as well as some strange screen
831behaviour
832
833For some damn reason we forgot about /unuser :)
834Added -ppp to /adduser to add hostnames in the original fashion with
835*.host.edu
836
837Improved /swatch commanD somewhat. This allows /set swatch to save what the
838user would like to server watch.
839
840Changed split_up_line() to recognize a , or a space as a word separator.
841
842Merged in changes from epic4 026. Some changes backed out because they do
843not work. ie -%> which hop had reworked from my original patch.
844
845New load code broke send_text. load_depth of -2 was not a good thing.
846
847Another %c%s type bug found and fixed.
848
849Changed format_away to include  is away: for those that wanted it.
850
851Found small bug in /readlog which was causing the odd occurances in away log
852reading.
853
854Fixed small bug in /load which was causing loTza trouble.
855
856dcc status bar bug I introduced fixed.
857
858timer command changed to allow multiple args. This is not very robust, just
859a quick hack to allow /timer -rep -1 -ref blah   to work.
860
861Added /dcc help command. Also /window help
862
863Fixed /sping to do the right thing if a server doesn't exist.
864
865Changed %s to %f on the status bar added %s as a modified %S
866
867Fixed load parser load_depth != -1 for non-interactive commands so make sure
868and check that in parse_line(). Prevail suddenly almost works now.
869
870Passwords are now checked if passed into find_bestmatch().
871
872Reason scripts were a little broken if a /* appears somewhere on a real
873line, is that /set comment_breakage defaults to off. We should set this on.
874
875Possible fix for window/channel chatter going to wrong windows. Added
876win_channel_swap_ptr() on swap_window() as we need to keep the
877channel->window ptr's current and swap_window() does a nasty thing.
878switch_channels() rewritten and everything seems to work. add_to_screen()
879modified slightly to send text to the correct window/channel.
880
881Added slight modification to cannot_join_channel() so output goes to the
882current window.
883
884Krome found a little bug with /windows and channels. lookup_channel() needed
885to check the return from get_channel_by_refnum() before passing it on to
886stricmp(). This also pointed out that /window kill doesn't update the input
887prompt at all.
888
889Added /dcc help and /window help. Filled out help for these commands as
890well.
891
892The command table from the server has been put into a hashed list. /debugmsg
893will show some simple stats on this.
894
895Modified the server msg to use a hashtable. /debugmsg will display some
896statistics
897Modified /on # to use a hash table for the numeric and then a linked list
898for the actual hooks. This should speed up numeric lookups considerably.
899
900
901
902Note: some of the following commands are a part of openchat irc client by
903mikh.
904
905Added $isconnected(<refnum>) to tell a scripter if we are connected to a
906server or not.
907
908Added /evalserver <refnum> <command>  which will send a command to a
909specifIc server.
910
911Modified $myservers(0/1) to return either the names of the servers or the
912refnum of the server. default is too use the name of the servers but a 1
913will cause it to reply with the refnum of the connected servers
914
915Added /purge name which will completely remove all traces of a
916variable or variable structure. Keep on eye on this as it might also be a
917memory leak.
918
919Found that $[3]#function(params) was not working as it should. Fixed. Epic
920has this same problem.
921
922Added /timer -update refnum  which will update a timer specified by refnum
923to a new timeout or new command.
924
925The /window command now accepts as a first param the window refnum wanted.
926So /window 2 double on will turn on double status on the 2nd window.
927
928Added new function called $fparse() which will take a format name and params
929and evaluate it just like the client does. so $fparse(format_ctcp panasync
930ctcp ctcp) returns the parsed format for format_ctcp.
931
932Added hash'd function list routine. First time a function is used the
933functions list is hashed. From that point on, instead of searching the
934entire list everytime a function is called, a hash of the name is done and
935the lookup becomes very fast.
936
937Seems that /ctcp nick ident and returning the access denied wasn't such a
938good idea, so I removed the access denied notice.
939
940The /on FLOOD has been modified to include the type of flood detected. Also
941the channel or a 0 is sent in order to detect if the flooding took place on
942a channel.
943
944Attempted fix foR that odd error that joining a channel with a { or } in it
945caused.
946
947REfixed my attempt at wierd channel names with {} in them. quoting # was
948maybe not a good idea.
949
950Added limited support for server groupings. ie /server [efnet] will attempt
951to connect you to the first [efnet] server. .ircservers and config.h as well
952as /server modified to support a server group name. .ircservers can use the
953following syntax.  server:port:password:nick:group or [group] on a single
954line by itself to represent all the servers that follow upto the next
955[group]. If any of the params from server:port:pass:nick:group are left out
956then we do the following  server::pass:nick:group or server:::nick:group
957etc.
958
959Fixed find_bestmatch() to not put the userlist entry into the nicklist if
960the channel doesn't match. p_channel() will also reflect this small change
961in that we no longer check for a channel_match().
962
963A /xdebug would cause a coredump in add_to_display_list().
964
965Added back in /lastlog -clear. This was removed because of the new display
966code.
967
968Added $getcdcc(#) which will return info on a specific pack number.
969
970Found and removed a couple of small memory leaks.
971
972argh. /stack on was very broken. might also be why scripts were loosing
973memory all over the place lately. Working now.
974
975Xterm and screen title now set on startup, join to channel and channel
976switch.
977
978Major memory leak foUnd and fixed. This should cause memory usage in certain
979scripts to stabilize alot.
980
981Ctrl-W-b needs fixing.
982
983Small change to format_notify_signon_uh and format_notify_signoff_uh. We now
984store the complete user@host internally instead of separately, meaning we
985needed to change the format's as well. Yell at [nutbar] for this internal
986change.
987
988Fixed another memory leak in the alias parser in calling expand_alias();
989Fixed one other memory leak with /stack push set in vars.c
990Found one in send_text() and add_to_channel() from the whowas chan buffer.
991Another in dcc othername was being m_sprintf() and m_strdup() if BROKEN_MIRC
992was defined.
993Another memory leak in dcc_really_erase(). Where the hell are all these
994coming from.
995
996URL grabber changed. We now keep a list in memory. We can use the new
997command /url to manipulate this list.
998	/url http|ftp on|off
999	/url save|clear|list
1000
1001With help from Rosmo BitchX has been ported to OS/2 vio window. It actually
1002runs better under OS/2 than under win95/nt.
1003
1004Merged in changes from epic 032. Including one other patch for return
1005statements.
1006
1007Merged in changes from epic 033 as well as fixing several bugs in epic 033.
1008
1009Added TIMER_HOUR hook which should go off on a hourly basis only.
1010Added /cdcc stats
1011Modified getcdcc() to return number of packs available when getcdcc(0) is
1012used.
1013Various other fixes made.
1014
1015Attempted fix for SunOS/AIX possibly others problems with /cset and friends.
1016
1017AIX2 doesn't like WANT_DLL so we specifically undefine it in config.h
1018
1019Couple of commands CONTINUE and CONNECT out of order. As well I forget
1020UNCLEAR_TEXT as a key binding.
1021
1022Added sendcdcc() which accepts a nick and a pack number to send.
1023
1024Added hook cdcc_send_nick which is called whenever someone requests a cdcc
1025pack. this can be used to keep stats on who's the top downloaders and stuff.
1026from, userhost, command, pack#, # of files, # of gets, filelist and desc
1027are all passed in. If the file is queued command is pre-pended with Q. For a
1028local send userhost is "unknown".
1029
1030Cdcc now saves the type of send requested to the queue so that queued file
1031sends will follow the requested type.
1032
1033Stack on was causing a problem in scripts using it.. Possibly fixed as
1034this alias no longer causes a core.
1035alias buggy if (![$0]) {echo use /buggy <nick>}{
1036  fe (311 318) num {^stack push on $num}
1037  ^on ^311 * {@_n=[$1]}
1038  ^on ^318 * {fe (311 318) num {^stack pop on $num}}
1039  ^wi $0
1040}
1041
1042The /toggle auto_reconnect was broken due to auto_rejoin.
1043due to complaints the xterm status bar change code is now a toggle.
1044And /wset status_f will now return all the status formats for that match.
1045
1046
1047
104873p2
1049Fixed ${format_version} for scripts.
1050Fixed status bar overwrite on long lines.
1051Fixed annoying problem with scrollback, using new epic display code.
1052Added new flood checking using hash'd lists instead of an array.
1053Other changes made for /set -format for compatibility.
1054a /cset in the .bitchxrc file would core.
1055window.c/status.c changed ala epic. My own modifications added for split
1056menu bar.
1057window split and window triple fixed up to work properly in epic's new code.
1058
1059
1060
106173 released on 09/08/97
1062Still a speeling error in commands.c /ight was in wrong place.
1063Added a /ctcp ident. User must have a password.
1064Slight fix in dcc.c involving read(). We should read the MAX_DCC_BLOCK_SIZE,
1065not just dccBlockSize().
1066
1067Some possible overruns fixed in bot_link.c
1068
1069Added Resume to /dcc help
1070
1071Added two new status variables. %& and %| will display dcc stats and cdcc
1072stats.
1073
1074dcc exempt +nick  will add a nick to the autoget list. This list has nicks
1075that do not trigger dcc/cdcc flood protection and as well even if the dcc
1076autoget is off, the files will still be autogotten. Nicks are saved in the
1077BitchX.sav file.
1078
1079addnoflood nick added. This nick will not trigger flood protection at all.
1080
1081Changed /hostname for linux systems.
1082
1083Added new /tcl bind type for hooks.
1084
1085Fixed a problem with p_part() and send_2comm() which was causing segfaults
1086when leaving channels.
1087
1088Some fixes from firebug incorporated into bx and passed onto epic.
1089
1090A long standing bug in convert_output_format() %l fixed. Damn p++
1091
1092Added $isignored(nick) which will check the ignorance list to see if that
1093nick is ignored.
1094
1095Fixed a bug in the cdcc queue system which could core you.
1096in BOT_MODE a nick has to be on the userlist in order to have auto-chat
1097
1098The cdcc queue should now be more respectful of the DCC_SEND_LIMIT
1099
1100Also people requesting a remote queue list, will not recieve garbage back.
1101As well as fixing a potential core dump of the client.
1102
1103Fixed some possible flood problems in cdcc. Only one mesg is send for a
1104queued file request or a full queue. Changed some msgs in cdcc.
1105
1106More /toggle's added by request.
1107
1108$checkshit returns more info now
1109
1110output_line() make_status(), status_make_printable() modifed heavily.
1111
1112do_unkey() didn't like NULL being passed into vsprintf() on SUN's
1113
1114Added all ircII variables to tcl output. All except the FORMAT's
1115
1116Fixed /toggle oper to actually do the toggle and window create. As well
1117toggle will take multiple args and toggle each of those.
1118
1119New ctcp uptime will return the current uptime of the client.
1120
1121chanst would core if you were not on a channel and didn't specify one on
1122the command line.
1123
1124Some kinda souls noticed an extra d in the msg we send back when away.
1125
1126$channel() or $channel(#chan) will return the channel nicks in a list with
1127a . - normal, @ - op, + - voice. if the user is an ircop then * is first.
1128
1129Status bar ansi bugs fixed.
1130
1131Kill parser for Operview rewritten in an attempt to make it process faster.
1132
1133Fixed up a couple of minor glitches with /toggle /chanst /nwhois
1134
1135Added bots and clients commands to tcl. tcl 1.3
1136
1137Major changes to the output routines from epic. status bars/screen output
1138code has all been rewritten.
1139
1140Fixed a small /back bug with the number of mesg's recieved while away
1141
1142A new command /signore for ircops added. /set SHOW_ variables have now been
1143removed as redundant and unnessary. Some changes to the handle_oper_vision()
1144function were made.
1145
1146Several fixes done on new epic scroll routines. add_to_window(),
1147split_up_line() and put_echo().
1148
1149A new command which set's MSGLOG_LEVEL implemented. /awaylog will set what
1150we want to log in the away log. Started adding moRe logmsg()'s in the code.
1151Need to add some help for this command. /set format_msglog is used to define
1152what is put into the mesg log.
1153
1154Ok, repeating timer added. /timer -rep 10 command will repeat the command
1155every 10 seconds until deleted.
1156FORMAT_TIMER modified to include Repeat as a Yes/No variable.
1157
1158Renamed /signore to /swatch.
1159
1160Changed /timer -rep to /timer -rep times   where -1 will repeat forever, and
1161>1 number's will repeat times times. a 0 rep will do nothing. /timer -r
1162changed to /timer -ref to remove any ambiguity.
1163
1164Bonehead mistake in ircaux strmcat/strmopencat fixed.
1165
1166Fixed up $statsparse(%>%M)  so it actually pads.
1167
1168Getting ready to revamp the help system including /help. A possibility of
1169using the BitchX.help file internally.
1170
1171Major revamp of /cset using Sheik's cset code. Added /wset to compliment
1172this.
1173
1174Some memory leaks on the status bar fixed up. This may have been where we
1175were losing memory.
1176
1177Modified /cset according to sheik to handle * and channel names. This same
1178thing can be applied to windows and window names. So /wset * status_Format1
1179will modify/display the status_format1 variable for displayed windows or
1180just for windows with certain names.
1181
1182Fixed a bunch of complaints mainly todo with /cset /wset. msg counts when
1183/away were slightly borked as well. increased the alias cache to 30.
1184To see what this is do /alias /s .
1185
1186Added /wilm /wiln  for last message and last notice recieved whois
1187
1188Fixed screen/status bar problem with long lines.
1189
1190Changed check_channel_match() to use next_in_comma_list() which should make
1191it faster. Possible fix for ajoin of channel with keys.
1192
1193Added /dump timer. Also changed /unload to dump the running timers.
1194
1195Modifed /ov so that if the operview window is open we can /ov
1196hide/+hide/-hide this window at will
1197
1198Recent changes in the way we handle /set ignore_time cause us to ignore
1199someone for 0 seconds. which in turn causes us to unigore immediately. So
1200check /set ignore_time it should be in seconds. as well check
1201pubflood_ignore_time
1202
1203Fixed awaylog timestamping for good.
1204
1205Added support for ircu's ># <# filter. /list -ircu -min # -max # *irc*
1206Support for this could be automated in scripts quite easily.
1207
1208Fixed NICK statement usage in .bitchxrc or .ircrc files so a segfault
1209doesn't occur. If found all we do is copy this nick into the default
1210nickname statement.
1211
1212Added /fset for the format variables. /set format still works (bonus) but a
1213/set will not display the format variables. /fset WILL replace /set format
1214in the future.
1215
1216Added /set CLOCK_FORMAT  which uses strftime() to set the clock format.
1217
1218Re-arranged some source code. modules.c fset.c var.c.
1219Re-wrote /Fport to use non-blocking connects.
1220
1221Found annoying bug with disappearing messages in rite() update_all_status().
1222recursive split_up_line() output_line() is a real no win.
1223
1224A problem with excessively long lines found and fixed. Dcc chat messages
1225were not being displayed properly on send.
1226A couple of bugfixes for NT/95 Bitchx specific versions introduced.
1227
1228
122972p1 released on 072097
1230Fixed a couple of SunOS bugs. /cdcc list and switching servers no longer
1231cores.
1232Fixed that annoying little problem with the status bar appearing during a
1233/exec or a /redirect. This bug appears in all clients that update the status
1234bar frequently (ie during dcc transfers and a status update).
1235bx-wall now uses format_bwall for output to you as well as incoming.
1236identd server built-in for win95/nt. Simple to code.
1237identd server removed from windows... Simple, but cygwin too buggy for now.
1238Added $winlen(opt_win_refnum)  returns the length of a window.
1239Added -R -X and -Y flags to XECHO. basically does a direct screen write,
1240without logging. no update of the internal structures takes place. Ideas
1241from ShadowImg. -R is a Raw write, no cursor positioning is used.
1242STATUS_FORMAT2 changed slightly. Removed Aw from the format. Added
1243STATUS_MSGCOUNT to format the away msgcount variable.
1244Lotz of other bug fixes which I forgot to keep track of.
1245/dme and /qme commands added. /me is to a channel. /dme goes to the first
1246dcc chat found /qme is for a /query.
1247FORMAT_BWALL used in /wall for output.
1248/loadtcl and /tcl -file will now search the LOAD_PATH for tcl scripts to
1249load.
125072 changelog
1251Little bug fixes in mail and in speeling mistakes I made. /set aop and /cset
1252aop were broke.
1253epic pre 0.38 patches incorporated into the client.
1254/lastlog -file filename  support added.
1255/lastlog -clear to clear the lastlog buffer.
1256maybe fixed up /addidle and /unidle.
1257Added some epic pre 0.39 patches.
1258Rewrote /rel and friends. I think maybe they might actually even be usable
1259now. -kick, -wall, -notice, -msg, -wallop, -topic, -kill, -kboot and -list
1260are the flags for /rel*. Need to test each one as the formats will need to
1261be modified.
1262Fixed lagtime indicator. Seems we forget to check if the server was
1263connected or not.
1264Ctrl-F was not working at all. switch to split server.
1265Not that suicides count_ansi wasn't any good, but we have a internal
1266count_ansi() function already. $countansi() returns the number of ansi chars
1267that are in a string.
1268More /ignore types added. /ignore * quits fixed up to actually work. As well
1269parts, nicks, pongs and squits are implemented.
1270Started to change cdcc.c to allow packs for servers.
1271Small buglet with channel names with % in them. sprintf() was attempting to
1272translate that into valid variables and failing miserably. Only a few places
1273in the client needed to be changed to support the proper thing todo.
1274Small changes to convert_output_format() which allows limited recursion
1275levels. Hairy.
1276Small tcl changes. New bind check_help_tcl() which you can use to display
1277help for tcl / commands. The function name + _help is used to check for a
1278bind of that name. and it is then called with no parameters. tcl_versionstr
1279added to help alleviate some aggravation on what is the newest tcl.o file
1280for a system.
1281format_version has changed to include tcl and 1.0 if possible as params.
1282Hashed the channel's nicklist.
1283Hashed the whowas list of nicks.
1284Fixed /stub which wasn't working at all.
1285/tog disp_ansi  now should do the correct thing with the status bars and
1286input prompt.
1287Several other problems fixed. most notable was the problem with scripts that
1288used $cparse() and the built-in exec protection in it. Source should now
1289compile either on unix or cygwin systems
1290/cdcc describe now works as advertised.
1291
1292patch from Nimrod Zimerman to add a /set AUTO_COMP_CHAR variable. Setting
1293this variable defines the char to look for when using nick completion. If
1294set FORMAT_NICK_COMP is undefined then it is also used for display in the
1295channel. What follows is his description of how it works.
1296
1297This input:
1298   "Lon, What's going on with the Shadows?"
1299Will not be changed under usual condition.
1300
1301However, after executing:
1302   /SET AUTO_COMP_CHAR ,
1303(the comma above is part of the command!)
1304and:
1305   /SET -FORMAT_NICK_COMP
1306The same input will be completed to form:
1307   "Londo, What's going on with the Shadows?"
1308
1309Had we neglected deleting FORMAT_NICK_COMP, however, the completion would
1310have been:
1311   "Londo: What's going on with the Shadows?"
1312(assuming default value in FORMAT_NICK_COMP).
1313
1314Worked around problem with channel actions appearing in wrong window.
1315Changed hash'd whowas/wholeft and nicklist hashing function to one that
1316hash's everything.
1317Fixed numeric 317 format_whois_idle to return the last on info returned from
1318the command /wii
1319/on will no longer bug out when displaying ansi. A simple call to stripansi
1320added to show_hooks()
1321Fixed up /chanst so statistics are correct...
1322fixed up /chanst -ALL again. I had disabled it quite some time ago.
1323Cleaned up update_stats() decifer_mode() and p_kick(). They might even be
1324faster now on mass deops due to less lookups occurring.
1325Fixed idle_timer
1326Added timed unban for most of the flud's.
1327/set AUTO_UNBAN is the timeout in seconds for timer'd unbans. setting this
1328to zero will make the timer not go off.
1329join flooding was broked. did we really need two checks for Join floods?
1330removed one in p_channel()
1331Broke non-userlist'd joins when re-arranging p_channel().
1332Fixed up last of /rel commands so they should all display properly. /rel?
1333-help displays a help message.
1334We will now rejoin channels in correct windows on kills. Removed
1335clear_channel_list() from /reconnect, which allows us to reconnect to all
1336channels. Fixed rejoin to proper hidden windows.
1337Added some changes from epic4 pre040. Skipped new scandir(). Added new
1338method of auto-joining, reconnecting to channels.
1339Added /map by popular request. output looks similar to scrollz. FLiER's code
1340was handy as an example.
1341Added a little check on no such nickname to remove any pending dcc's.
1342Added a userhost on numeric 433 nick in use.
1343Added a /unload command to unload 95% of the things a script changes
1344Added a call to add_to_join_list() in /window channel to preserve the
1345window refnum.
1346Typing /w on a channel now updates the internal nicklist. This fixes up the
1347/away's and the ircop counter.
1348Changes from epic4 pre041 worked in. Highlights are -
1349	3 new sets. CPU_SAVER_AFTER, CPU_SAVER_EVERY and STATUS_CPU_SAVER
1350	%J for a new status format. displays value of cpu saver.
1351	CPU_SAVER key bind to turn this feature on immediately.
1352	small bug fix in reg.c
1353Client now compiles unmodified on win95/nt with Cygnus tools.
1354Added small hack to set_dcc_bits() to prevent lossage of dcc counts.
1355Fixed up who_left() and show_whowas().
1356Added new /igt and /ight for timed ignore's. We use /set ignore_time for the
1357time to ignore this nick or host.
1358Added /reld and /reldt for /rel dcc and rel dcc topic. last 10 saved.
1359Small fix to expand_alias() which should fix problems observed with /eval
1360echo $
1361Changed FORMAT_VERSION for the last time. $4 $5 are the tcl version strings
1362if they are enabled.
1363AUTO_COMP_CHAR renamed to NICK_COMPLETION_CHAR by request of the author of
1364the patch.
1365Fixed /eval echo \ core'g the client.
1366Some patches from Tomas Ogren <stric@ing.umu.se> applied to the client. I
1367didn't agree with the way some of them were done, so they were not applied.
1368I did however introduce special handling of the chr(255) within
1369convert_output_format(). It is now converted directly to a space character.
1370It's used as a kind of place holder for the parser. So we know exactly what
1371argument is where on certain format's this is required. ie format_users and
1372the dcc output parser. This will fix up those non-iso fonts I think, so that
1373a space is correctly shown, instead of some funny character.
1374Fixed a epic /me bug with /query =nick.
1375Fixed a status bar problem with +v in decifer_modes(); BlackJac found this.
1376Some changes to the DLL module loading procedure to make it easier foR
1377module writers to write a module and insert it.
1378xavvy requested a $longip() function. to convert a numeric ip into a network
1379long.
1380Fixed up unbanning of people who are banned by someone.
1381Experimental ignore exception text.
1382/ignore #channel %ALL text "some other text"
1383This adds "text" and "some other text" to the ignore exception. Any lines
1384with "text" or "some other text" appearing in them will be output. No others
1385lines from that channel will appear. Currently this is restricted to
1386privmsgs and notices appearing on a channel.
1387
1388[oweff] ive setup http://crackrock.melnibone.org tho i doubt anyone
1389	will remember that addy. =]
1390[raistlin] raistlin.toledolink.com is mirror'g bitchx.stuph.org. Thanks
1391Blu3Viper foR bitchx.stuph.oRg.
1392
1393
139471p3  Released May 28/97
1395Small amount of changes. All mis-ordered vars are now in order.
1396Fixed ignore of nickname on msg floods.
1397Added epic4 pre034 changes.
1398Fixed /wait -name
1399Fixed message_from() so it works again. This solves a coredumping problem on
1400SunOS.
1401/set window_quiet on turns off window messages
1402/window update updates all windows with the current set of global values
1403/window bind  fixed.
1404If you kicked from a channel on another window, the kick stays on that
1405window.
1406Thomas Niederreiter sent me a patch for #define ONLY_STD_CHARS and
1407REVERSE_WHITE_BLACK for those who are using normal xterms or want a reverse
1408color xterm.
1409Fixed alias_server to return correct servername for the current window.
1410Fixed /cdcc resend so it actually resends a file not just sends
1411Added /ignore exceptions. so /ignore *!*@* ALL except *!*@*.com will ignore
1412everything except .com .
1413/reinit which will reinitialize all string /set's to the defaults
1414New /ignore types added. KICKS JOINS QUITS MODES SMODES
1415WINNT defines removed completely from the source. Added new WINNT defines
1416and created BitchX97 for 95/NT using cygnus tools. term.c completely rewrote
1417for it.
1418/set REASONFILE removed.
1419/set APPEND_LOG added. default is on. This effects all logfiles /set log on
1420and the away log.
1421/chguh to change a nick's userhost added.
1422/addshit nick * 5   adds nick to the auto-ignore shitlist option.
1423/query -cmd cmdname (target)  will set the cmd to use for the query. Valid
1424types are msg, privmsg, notice, csay, cmsg, and any matching commands from a
1425dll that's loaded (ie be cautious).
1426/on partial_hook_name  returns all matching hook names and displays what's
1427on them.
1428rewrote get_builtins() so it returns builtin aliases. So now command
1429completion will return builtin aliases.
1430A /cdcc send nick #1 woUld fail.
1431$statsparse() will return the information from the status variables.
1432so $statsparse(%N %C %L) returns  "root #bitchx [Lag 0]" as a string.
1433requested by suicide.
1434Some small changes with duplicated code in ctcp functions. New ctcp uptime
1435added. It is ignored for everyone but those on your userlist.
1436/window triple on   will create a triple status bar. Some caution is urged
1437with this.
1438$winquery(nick <server num>) returns the window that nick has a query on.
1439removed a stripansicodes() from outgoing dcc raw/chat. We will see if this
1440causes any trouble.
1441dcc raw listens were broken with dcc_fast on. dcc_raw_listen uses a port
1442number for the write, which caused us to attempt a FD_ISSET() on some
1443numbers. This in turn caused a seg fault.
1444/USERINFO nick comment added. if comment isn't specified then comment is
1445deleted.
1446$getinfo(nick) will return userinfo for nick
1447$setinfo(nick comment) will set userinfo to comment or remove it.
1448getcomment, setcomment,_getinfo, _setinfo, _statsparse _winquery
1449added to tcl functions.
1450FORMAT_FRIEND_JOIN can be modified to return the comment as well. Default is
1451to not display comment.
1452Modified tcl matchattr  slightly.
1453Some small fixes to some of the internal check_tcl functions, so that the
1454handle is passed properly.
1455$absstrlen() returns the absolute strlen() of a string after taking out ansi
1456sequences. requested by suicide.
1457/Usershow to show user comments added.
1458
1459
146071p1
1461Minor bugs fixed. Forget a #ifdef around TRANSLATION_VAR in vars.h. This was
1462causing minor problems with /set. FORMAT_MSGCOUNT FORMAT_MSG were in the
1463wrong order as well.
1464
146571 Changelog. Released 042397
1466
1467netsplit handling corrected.
1468tabkey handler rewritten 3 times over.
1469input editing was coredumping.
1470readlog will now correctly read the logfile backwards
1471fixed? /dc nick adding the nick and the =nick to the tabkey
1472Changed output of /nwhois and /chanst
1473fixed /away for scripter's.
1474Added -ping to /whereis to use ping instead of version
1475refnum display for show_timer was screwed up.
1476Novalogic noticed that /deop protection worked, but /kick prot didn't.
1477Oweff and TimeCop requested /on CDCC_NOTE
1478/ftp changed to internal ftp client. /dcc ftp  added.
1479/msg -some.ftp.site used to support ftp.
1480ls cd get put  all supported  /dcc ftp some.site username passwd fixed.
1481dTM noticed that /window new hide channel #channel bind #channel was
1482failing.
1483with two windows and several channels bitchx would cause you to rejoin on
1484the wrong server if you were kicked. p_kick()
1485cleared up the Your not on a channel error message in p_Mode()
1486Changes made to hide_window() to correct and error in window size recalc.
1487umode is sent on numeric 001 which should correct some problems with the
1488server ignoring the umode.
1489/say -c -a -e  for cool annoy and eleet type say's
1490/ctcp now shows what it was sending by request of BlackJac.
1491Added -* flag to XECHO. displays mesg in ALL windows. Requested by TheAsp
1492and Sheik
1493$stripmirc() now correctly strips mirc color codes completely
1494$getreason(nick filename) will use filename as a random reason file
1495replacing $0 with nick.
1496/cdcc queue 			displays number in queue
1497/cdcc queue remove #|nick  	removes # (3- 1-7 etc) or nick from queue.
1498/cdcc queue list		lists contents of queue
1499/cdcc queue list nick		lists contents of queue for nick
1500/cdcc list modified		output is differant
1501/cdcc send			modified. if filename starts with a number
1502				check pack numbers otherwise send filename.
1503refixed logmsg() after some changes were attempted for separate channel
1504logging. This doesn't seem possible. use /log instead.
1505/window set stat wasn't printing the fullname of the variables (suicide)
1506renamed VERBOSE_CTCP to CTCP_VERBOSE
1507/stats flag servername  will output in a nicer format now. c h i k l m o u y
1508/trace flags added. -s -u -o   will trace for servers,users,ircops.
1509Added a HACK_OPS mode. BITCH mode should be on as well as HACK_OPS.
1510check_shit() now checks PROTECT_CHANNELS
1511Added password checking into check_auto(). If user is passwd protected, then
1512auto-ops are not given. they have to /ctcp yournick op #channel passwd
1513Fixed /chat and /nochat.
1514Added time to dcc_glist output for dcc chats/ftp/bot modes.
1515Multiple dcc cdcc sends are possible. Comma separated list of nicks instead
1516of one nick, will send the file to all the nicks in the list.
1517Changed addlist_cmp to use strcasecmp instead of strcmp. wonder how many
1518scripts this'll break.
1519Bans are not enforced if the shitlist for that channel is off (ie /cset).
1520Also the protect_channels var can be used to change the channel that's we
1521protect.
1522Added Ctrl-O bind. it ig's the the tab msg nicks.
1523Changed /set so we can list the dll variables with a partial match.
1524Changed tcl slightly for the raw and input binds. returning 1 from a tcl
1525function will cancel the ircII handling of the information.
1526Modified internal tabkey to hold the type of command we want to use. (csay)
1527Modified /cdcc type and /cdcc echo with no args, displays current. Any other
1528args will toggle.
1529Added /dump channel   for dumping channel stats
1530Some changes to tcl.c required. msg, say, notice, desc added as tcl
1531commands. They use the internal ircII parsers.
1532Internal functions are now available to the tcl parser. To avoid any name
1533space polution we renamed the internal BitchX functions with a "_" so
1534_addshit from tcl accesses the internal function.
1535Coredump in  /back noticed by shadz.
1536Fixed /l #channel so it leaves a channel
1537Fixed problem in /set when using dll variables...
1538Changed the way /rel* sent text to the server.
1539Major Changes to alias/assign code. EPIC 4's alias caching changes merged.
1540Mail handler modified. /set Mail 0 1 2
1541Fixed some variables that have been missing for some time now. Misplaced
1542ones. See ircii-EPIC0.028 UPDATES for complete list of changes for this
1543version of BitchX
1544immortal pointed out that /window new segfaults the client (happens in all
1545irc clients). fix was in add_window_to_list() and new_window().
1546prepare_command now sets active_server = -1. helps prevent segfault.
1547Tweaked cdcc again. modified add_to_queue() to check for duplicate entries
1548in the queue. Modified dcc_sendfrom_queue() to not check DCC_SEND_LIMIT.
1549check_channel_match() modified so if the first char is ! we won't auto-op on
1550that channel, but will on any others that have been specified.
1551FORMAT_HELP added. to be used with /help output.
1552Fixed /chg commands to work properly. Added /chgpass.
1553Fixed check_array_size() and move_array_items()
1554Noticed that the default chan vars are not being updated properly.
1555Added new dcc type. /dcc tsend /dcc tresend /dcc tget /dcc treget. This is a
1556ackless dcc type which responds to filesize for finding the eof. Simple
1557testing shows that this is aprox 150kb/s faster than normal dcc's
1558segfault in netsplit handling fixed.
1559/listdll command added.
1560/mb was segv'g on some systems. fixed.
1561/<esc><esc> handling fixed. This seems to have solved crackrock's tabkey
1562handling as well.
1563EPIC pre0.29 changes added... Still to come are the userhost caching and
1564new whois queue.
156571alpha11 released for people to try.
1566Prob one of the longest standing bugs in the history of Bitchx was squished.
1567cdcc queue sends were crashing once in awhile. bad lamage here.
1568/foreach fixed.
1569/who *netcom.com* would add users to the users on the current channel, not
1570quite what was supposed to happen.
1571flood warning only happens if the internal flood handler doesn't do
1572anything. /on FLOOD will override the internal flood handler. Flood handling
1573was terribly broken for some reason (what was I smoking when I put > instead
1574of < )
157571alpha12 had a short life. rest in peace.
157671alpha13 fixed segfault cause by WHO on join. partially server fault I
1577think. Still a segfault in add_to_channel() I believe. Need more testing.
1578Server handling of /who and /whois has been changed in CsR29 servers.
1579oweff pointed out some problems with cdcc hooks. Fixed. Broke 100% of
1580scripts that handle cdcc output when I added the "type" of msg we are
1581supposed to send according to the internal cdcc. ie NOTICE or PRIVMSG added
1582to CDCC_PREPACK CDCC_PACK CDCC_POSTPACK and CDCC_NOTES.
1583Afte mucho bitching /set mircs actually does something. It converts mirc to
1584ansi when on. But only for non-scripts. So those of you using a script,
1585you'll have to bug your script author about using $mircansi()
1586bans on usernames of greater than 10 chars could fail. bk pointed this out
1587as well as Cyan who explained it better.
1588/toggles operview was broken for the last 8 months.
1589/addidle should work as advertised.
1590/masskick might have been broken.
1591/bhelp dcc raw  was doing some strange things because of a $listen() in the
1592text. fixed.
1593set_dcc_bits() was missing a fast_dcc off setting. This was causing cpu
1594usage to skyrocket.
1595Kinda lame bug fix but it'll do  for now. For some odd reason we are getting
1596a NULL user in the whowas list's. We now check for this.
1597ctcp finger now works again. Thanks Jordy
1598/sk and /whereis removed due to the changes by removing WHO_ON_JOIN
1599should prevent flooding of the client on large channels and a netsplit
1600occuring
1601long standing bug in mircansi fixed.
1602fixed a problem with /set beep_on_msg. forgot to pass all the parameters to
1603the function
1604wait cmd structure could become corrupted if too many wait's were used.
1605Alpha18
1606/set kick_if_banned on/off will turn off kicking of users who have been
1607banned from the channel. Also nick floods check to see if it's you that's
1608doing the nickflooding before kicking.
1609FORMAT_DCC and FORMAT_MSGCOUNT added.
1610$winchan(number) returns the channel that a window is associated with
1611Added a #define to config.h for including translation tables back into the
1612client of those that require it.
1613
1614 ------------ Change log from epic pre 0.29 client -----------------
1615
1616*** News 03/31/97 -- New argument to /WAIT command, ``for''
1617	Yes, ``for'' without a hyphen.  This command guarantees that
1618	the code given as the argument is executed synchronously.
1619	That is to say, if the arguments, when executed, sent something
1620	to the server, the command will not return until that request
1621	has been completed (as if a wait had been done.)  But if the
1622	code does not send a query to the server, no wait is executed,
1623	and the command returns immediately after the code completes.
1624
1625	Example:
1626		/wait for {
1627			if (arg) { who -line {echo $*} }
1628				 { echo Booya! }
1629			echo Foobar!
1630		}
1631
1632	It is important to note that the implicit wait is done AFTER all
1633	of the arguments to /wait for have been executed.  However, any
1634	code that is after the server query (in this case, ``echo Foobar!''
1635	will be executed AFTER the WHO is launched, but BEFORE the
1636	synchronouzation step.  If you needed it to be executed after
1637	the WHO completed, you would noT put it inside the /wait for.
1638
1639	Note that you can nest /wait for's and /wait's and they will
1640	sort themselves out sanely:
1641
1642		/wait for {
1643			if (arg) { who -line {echo $*};wait }
1644		}
1645
1646	(This is a silly example, but bear with me.)  In this case, there
1647	is an explicit WAIT done after the WHO request.  Since a WAIT has
1648	already been completed, the /WAIT FOR will not wait again a second
1649	time.  That is to say, it will recognize that the WHO has already
1650	been waited on and will not delay further.
1651
1652	As a side note, using /redirect within a /wait for loop, or
1653	doing a /wait while you are using /redirect is *bad*, and you
1654	are strongly discouraged from doing so.  It is undefined behavior.
1655
1656
1657*** News 03/19/97 -- About the new who/ison (and soon userhost) queues.
1658	The client now keeps a FIFO (queue) of who/ison/userhost queries
1659	you make.  It is *critically* important that you do not confuse
1660	these queues (due to the nature of these server queries, there is
1661	no way to have any reasonable error recovery).
1662
1663	The following behaviors are forbidden (but the client wont stop
1664	you from doing them)
1665
1666	* Using /ON ^RAW_IRC to wedge the 303, 351, or 315 numerics.
1667	  If you do this, the queues wont be properly flushed, anyone
1668	  waiting on a proper reply wont be handled, and any further
1669	  reqeusts will be thought to be previous queries, and all hell
1670	  will break loose.
1671	* Using /QUOTE to launch USERHOST, ISON, or WHO requests..
1672	  If you do this, the client will whine at you when it gets
1673	  unexpected replies and will eat the information.  If you launch
1674	  another query before the invalid one finishes, all hell will
1675	  break loose.
1676
1677	*** THERE IS NO WAY TO RECOVER IF YOU DO THESE THINGS ***
1678	If youre stupid enough to do it, you get what you deserve.
1679
1680*** News 03/18/97 -- Expanded syntax for $userhost()
1681	For your convenience, the $userhost() function now takes arguments:
1682	You may specify one or more nicknames as arguments to the $userhost()
1683	function, and the corresponding userhost(s) for the nick(s) specified
1684	will be returned.  The string <UNKNOWN>@<UNKNOWN> will be inserted
1685	for any nicknames whose userhost is not known.  The nickname(s)
1686	speified *must* be people who are on channels you are also on for
1687	the current server!  (See the second caveat)
1688
1689	* Caveat -- Because it can take time for the WHO query to complete
1690	after you join a channel, there is no definite way to know if
1691	$userhost() for a person on your channel will succeed or not.
1692	You should probably be prepared to launch a /USERHOST query in
1693	case of failure.  This deficiency may be altered or modified in
1694	the future to block if an otherwise valid request is made while
1695	a WHO query is still pending.
1696
1697	* Caveat -- This function will never be modified to launch a server
1698	query.  That means that this function will only ever recognize those
1699	nicknames that are common to channels you are on.  If you want to find
1700	the userhost for other users, you should use the /userhost command.
1701	It is expected that the /userhost command will soon be able to
1702	take advantage of the userhost caching (but it does not yet.)
1703
1704*** News 03/18/97 -- Expanded syntax for /who
1705	For your convenience, the /who command now takes two new arguments:
1706
1707	-line {...}	The code inside the braces will be executed for each
1708			line returned by the who query.  The arguments are
1709			exactly the same as for the /on who hook, except that
1710			this flag is *gUaranteed* to override the default
1711			/on who, and will also *go away* when the current who
1712			query is finished.
1713
1714	-end {...}	The code inside the braces will be executed at the
1715			end of the who query, when the 315 numeric is parsed.
1716			The arguments are:
1717				$0 - server queried
1718				$1 - body of the query
1719			This is guaranteed to toverride the default /on 315,
1720			and will also go away once the current who query is
1721			completed.
1722
1723	These command bodies will be executed asynchronously, which means
1724	that you must assume that the enclosing code scope will complete
1725	before the code is ever executed (e.g., the same rules as for the
1726	/userhost -cmd flag.) unless you use /wait.  You are encouraged
1727	to not use /wait if you can figure a way around it.  Code that is
1728	not concerned with being stricly backwards compatable with the
1729	stock client is ***strongly encouraged*** to use these new flags.
1730
1731	Underlying this change is a new re-entrant WHO queue, which allows
1732	you to launch more than one WHO query simultaneously.  No longer do
1733	concurrent WHO requests have to wait for previous queries to complete,
1734	and no longer (with the above flags) does the caller need to put the
1735	WHO command in a /stack-/on-/wait wrapper.
1736
1737*** News 03/17/97 -- /on 312, /on 319 changes
1738	All of the whois numerics: 311, 312, 313, 314, 317, 318, 319
1739	now pass $0 as the server name and $1 as the target of the
1740	whois query.  All the rest of the arguments are passed as $2-.
1741	Previously, some of these numerics passed the target as $1,
1742	but not all of them.  I changed it this way for consistancy.
1743
1744*** News 03/17/97 -- New: /ON STATUS_UPDATE and $status()
1745	/ON STATUS_UPDATE is hooked whenever any of the status lines
1746	for any of the visible windows changes **and you are in dumb mode**:
1747	   $0  is the refnum for the window whose status line has changed
1748	   $1  is the status line in that window that has changed
1749	   $2- is the actual status line for that window.
1750
1751	$status() can be used to fetch the current status line for any
1752	visible window.  Invisible windows do not have their status lines
1753	updated, so they may be inaccurate.  This problem may change in
1754	the future.  Pass two arguments:
1755	   $0  is the refnum for a window
1756	   $1  is the status line
1757
1758*** News 03/02/97 -- Local variables can now span entire array tree
1759	The syntax:
1760		``local x.y.''
1761	will define all variables in the subarray $x[y][...] to be
1762	implicitly considered local variables.  That is to say, the
1763	entire variable tree rooted at $x[y] is local to that scope.
1764	This was requested by a user for compatability with another
1765	client.  All local variables that are instantiated in this
1766	manner have the same scope as the explicit declaration above.
1767
1768*** News 02/18/97 -- New built in variable, /SET CONNECT_TIMEOUT <seconds>
1769	Set this to the number of seconds you want your connect()ions to
1770	block before they time out.  Note that this doesnt affect
1771	connect()ions that are already in progress, only those that are
1772	started after you set it.  The default is 30.
1773
1774*** News 01/30/97 -- Expanded syntax for /LOCAL, /STUB
1775	You may now specify more than one name per command:  Each name
1776	will be treated independantly of all others.  The names must be
1777	seperated by a comma, and ***must not*** have any spaces between
1778	the commas and the names (that is, all of the names must form one
1779	logical word).  To declare both "foo" and "bar" as local vars,
1780			/local foo,bar
1781
1782	You can do this to stub more than one alias/assign to the same
1783	file, as well:
1784			/stub foo,bar filename
1785
1786*** News 01/29/97 -- New command /BLESS
1787	Currently this commanD ignores its arguments.  This will not be
1788	the case in the future (eg, arguments will be added)
1789
1790	When given no arguments, the /bless command causes the current
1791	stack frame to not be atomic.  You are therefore free to reference
1792	local variables of the enclosing atomic stack frame.  Extreme
1793	care must be taken that there is indeed an enclosing stack frame
1794	from which to reference local variables:  Otherwise havoc may ensue.
1795	Usually you can ensure this by doing a /wait after a local server
1796	query.  When an enclosing stack frame "returns" (ie, an alias ends),
1797	any /on that is processed later due to a server request made by that
1798	stack frame must not use this command.
1799
1800	Dont forget to clean up your messes when youre done with them. =)
1801	See the 'guh' script for a demonstration of how i used it.
1802
1803*** News 01/27/97 -- New flag for /EXEC, -direct
1804	Syntax:
1805		/EXEC -direct <commands>
1806
1807	This simulates the effect that unsetting the SHELL variable
1808	causes, that is, the command is executed directly, without
1809	invoking a subshell.  This is appropriate for those who wish
1810	to execute a command passing untrusted data as an argument:
1811	With this flag, there would be no shell to interpret metacharacters,
1812	thus cutting down on that ability to have an accidental back door.
1813
1814*** News 01/27/97 -- New command, /SETENV
1815	Syntax:
1816		/SETENV <var-name> <new-val>
1817
1818	Sets the process environment variable <var-name> to the value of
1819	<new-val>.  This command is noT neccesarily useful, nor is it
1820	always appropriate, but it is provided for completeness.  There
1821	are several places in the code that can benefit from the ability
1822	to change environment variables after startup (eg, TZ).  It also
1823	allows you to set environment variables for /exec'd processes,
1824	and it is also possible to really foul things up if you mangle
1825	important environment variables such as DISPLAY and so on.
1826
1827*** News 01/24/97 -- New, /ON ODD_SERVER_STUFF
1828	This is hooked whenever the server sends you something
1829	that the client cannot recognize.  This is usually when
1830	you try to connect to a non ircd server, or you use some
1831	extension that isnT yet supported.
1832
1833	$0  is the server that sent it to you, '*' if unknown
1834	$1- is the unrecognized command and its arguments.
1835
1836*** News 01/22/97 -- /FE, /FOREACH use local variables now
1837	The "control variables" for the /FE and /FOREACH command
1838	now are local variables.  They will not disturb global variables,
1839	but they will destroy any local variables you have by the same
1840	name.  You dont have to explicitly declare the variables as local,
1841	it is done automatically for you.  Note that the normal warnings
1842	for local variables still apply -- dont use any variable name that
1843	is the same as a global variable you might want to use later in
1844	the same alias/on.
1845
1846*** News 01/18/97 -- Support for local variables
1847	You may define a local variable with the following command:
1848
1849		LOCAL <varname> [<value>]
1850
1851	It mirrors the ASSIGN command.  Note that local variables act
1852	in exactly the same way as normal variables, except you cannot
1853	get rid of them.  You also do not (yet) have any way to get at
1854	a global variable that has the same name as a local variable, so
1855	choose wisely.  An example:
1856
1857		alias foobar
1858		{
1859			local b			(declare LOCAL var $b as [])
1860			assign a 4		(assigns 4 to GLOBAL $a)
1861			local a 5		(assigns 5 to LOCAL $a)
1862			eval echo $a		(outputs '5' -- local)
1863			@ a = []		(clears LOCAL variable)
1864			eval echo $a		(outputs '' -- local)
1865		}
1866
1867	Restrictions:
1868	* You cannot have local aliases -- only local variables
1869	* You cannot save local variables.
1870	* You cannot (yet) access a global variable with the same name
1871	  as a local variable.
1872
1873	This support is EXPERIMENTAL and still has a lot of development
1874	to go before it is mature.  Do not depend on any specific detail
1875	of the implementation to remain constant.  The interface should
1876	remain unchanged, but it may also be expanded.  If you have a
1877	specific request about this implementation, feel free to ask.
1878
1879
1880
1881
188202-10-96 BitchX 70 released. We've come along way baby.
1883
1884Seems some bugs cropped up right away... /window set and status.c window
1885pointer was being changed on status_notify which caused me some trouble with
1886seemingly random segfaults. $mircansi() had a bug with ^C1,243324324 and
1887^C234723875 large numbers. Weird problem with /ftp /telnet possibly fixed...
1888for some reason calloc() isn't returning a 0'd memory location. Fix for
1889-parsekey type_text blah instituted. This affected both epic and BitchX,
1890Ctoolz, Scrollz and ALL other ircii clients including 2.9roof. /cdcc offer
1891was displaying the wrong pack number for a note. fixed. small bug that can't
1892happen very often found in built-in alias's. curr_scr_win->server has a
1893possible -1 value. screw() was screwed on certain length host names.
1894Various other small fixes here and there. ChanWallop does 8 nicks at a time
1895now. This gets around the lame server protection that some servers have
1896implemented. Notice small buglet in /addbanword where * was not recognized
1897as a valid channel. /kb and /ban will now check the whowas list for a
1898matching nick and ban it if all else fails. Hacked around in decifer_mode().
1899Added some new botnet commands. /ctoggle and .xlink. with /ctoggle on,
1900someone can send a .xlink command where command is any valid ircii command.
1901so please to be careful with this. If you set a BOT_PASSWD then anyone
1902knowing this password can auto-chat as well as bot-link with you. xlink
1903commands default to off. and I will modify this highly to only recognize
1904certain commands. DLL loading for linux implemented. What this does is allow
1905someone to write a function/command in c and give it to people. They can
1906then dynamic load the function/command which then becomes a regular client
1907command. No source for the module need be distributed. This same method is
1908used in libtcl and I assume perl as well. All internal client functions are
1909available to the module IF we add -rdynamic to the client link stage.
1910Otherwise they are not available. Although untested, tcl functions should
1911also be available in TCL compiled clients. I modified the client to look for
1912dll commands and then commands, alias's etc. I also re-implemented the
1913Tcl_Eval portion of the command loop. It's one of the last things checked.
1914/loaddll function implemented for dynamic loading of functions, ctcp's and
1915commands. These lists are checked before all others so that authors can
1916replace internal's of the same name. /bk and /ban will now check the whowas
1917list for matching nicks and ban it when the nick is not on the channel or
1918has signed off. erase_display() had a off by one error. /reset was lame. and
1919screwed up the display. all fixed. $banonchannel(chan ban) added by request.
1920Checks to see if ban is on the internal banlist for the channel. Well
1921someone nicked goat found the alt char set ansi set would switch the console
1922into this mode. It looked like a flash, but wasn't. Required some rethinking
1923in FixColorAnsi(). NovaX found a bug with not checking the channel match for
1924bans on perm bans. Also found a bug with multiple windows and channels where
1925the away mesg was being displayed twice. FORMAT_SEND_AWAY added by request
1926from shade. /tignore added. it works like /tban. After some prodding I
1927modified the cdcc sends/resends to work with multiple numbers. "*" is also
1928recognized for send all. After removing the /me from /away found that the
1929away message doesn't display to the screen. /back doesn't prompt to delete
1930the away file if /set msglog is off. $winrefs() returns all window refnums.
1931shade and all his color changes on the status bar found a nasty little
1932problem with static buffers. so we increased the buffer sizes by a factor of
19332. Fixed /do say $repeat(5000 blah) to only return upto 2048 chars. Fixed a
1934few windowing bugs shade pointed out. Apatrix pointed out a couple of
1935deficiencies in /set bitch on. Maybe we cleaned it up. BarK0de pointed out a
1936little inconsistancy with /addword and /banword(s). $gethost(nick) returns
1937the hostname for the nick as stored internally. nick has to be on one of our
1938current servers channels and the first match is returned. local variable
1939support added from epic. BEEP_WHEN_AWAY fixed so it doesnt beep you when
1940your away for Flick^. some changes required in p_privmsg().
1941menus, history file support, translation and digraphs have all been removed
1942from the client for various reasons. Some buffer sizes have been reduced to
1943decrease memory footprint. This should make some admins happier. Cleaned up
1944vars.c by removing some old variables no longer used. removed nkill and
1945nhost commands as they require a hacked server to support them. Removed
1946WANT_ANSI from all source files. This cleaned up the source considerably.
1947/mode channel b wasn't displaying the modes for a channel. /set ov on/off
1948wasn't working properly. /window split on/off changed. /set double_status is
1949no longer required. fixed whoreply() to show up in the correct window.
1950Added new function variable %` for the uptime of the client.
1951destroy_call_stack was failing for whatever reason. Some more places where I
1952wasn't clearing the FD_SET() for writes found. /set nick_completion_type 0 1
19532  are valid. 0 nick is first word. 1 nick is somewhere in the string. 2 we
1954do match'g on the string. /set auto_response modified to allow more than one
1955word to trigger nick completion. wildcards are allowed. /finger now doesn't
1956block on connect. This one accomplished by adding a socket callback list.
1957Other functions could accomplish the same thing. maybe a rewrite of the link
1958looker is in order. /scani for scanning a channel for ircops added. Needed
1959some error checking for window->server in $MYCHANNELS(). added -max patch
1960for lastlog command from sheik. added support for colorization of /help (any
1961takers?	. Found bug this introduced in malloc_strcpy(). Added dll_variable
1962support now as well. Jeremy has done some major changes to EPIC3 and made
1963EPIC4. We've tried to follow along. term.c needed to be left the same but
1964support for some decrepatated systems has been removed ie ESIX. Changes to
1965configure have been made and make configuring tcl alot easier. Changes to
1966do_flood(). /ig /igh modified to accept a type as well as multiple nicks.
1967Nick completion changed, partial matching of a nickname is possible.
1968/ig /igh /unig /unigh will use whowas buffer if the nick can't be found.
1969/tignore was not woRking quite right. Someone pointed out that /dcc bot
1970worked without a passwd.  /sc bug fixed. Nick completion modified in
1971behaviour. Pattern matching of the nick will take place. ^R bound to
1972nick_completion() which takes the word behind the cursor and attempts to
1973match it with a nick on the current channel. So typing the following
1974will/should do the following.
1975	/msg pana<tab>     if nick is in tabarray then fill it in
1976	/msg pana<tab>	   if nick is not in tabarray, check current channel
1977	pana^]		   if nick in autoreply buffer fill it in.
1978	pana^]		   if nick not in autoreply buffer but on current
1979			   channel, fill it in.
1980	this is to pana^R  if nick is on current channel fill in the nick.
1981	^R		   cycle through current channel nicks
1982	<tab>		   cycle through tabarray.
1983	^]		   cycle through current channel nicks
1984
1985For some reason noT found yet (ie bug or feature) once one of these
1986functions is accessed in some cases we need to press the key again to bring
1987up the next nick. Depending on how annoying I find this, will determine how
1988long this takes to get fixed. /cdcc offer updated to take multiple file
1989specs on the line. ie  /cdcc offer *.c *.h Makefile  will create a package
1990with all those files in it. /SetAR -|d|pat's commanD added. Added $getvar()
1991function which will get an alias and return it. Protection was broked. Some
1992people are having trouble with the new term.c. Might possibly be termcap
1993related. topic bug found by shadz on newnet. buffer overflow problem.
1994
1995
1996BitchX 69 released. 12/28/96
1997Fixed dcc.c update_transfer_buffer() for the second time. noT sure what
1998happened in the first time I patched this file. Fixed cdcc load to get the
1999right number of files. A problem with /m . fixed. /relw and /relsw fixed.
2000Changed format of FORMAT_BWALL slightly. Added CtoolZ CWallop to notice.c.
2001Fixed bug in free_display() and erase_display(). Added triple status bar, as
2002well as /window split on/off. window split is far from perfect though.
2003Changes to switch_channels() which make the channels that a window owns
2004bound to that window. Pressing Ctrl-X to switch will not switch to a channel
2005that was not joined from the window. Active dcc check on exit changed. Now
2006we only check active dcc gets and regets. send_to_server() modified so that
2007network errors will make the client cycle on a server. Fixed /reli. Fixed
2008pgup and pgdn to display proper number of lines in window. Added %- as a
2009status bar symbol for displaying current topic. hook channel_switch added
2010for script writers to tell when a channel switch has been made. Added /rels
2011for server messages. We keep the last 10 msgs. Changes from epic 3.002 and
20123.003 merged. extended status_user functions added thanks to sheik. %!11
2013through %!19 are available now. %= displays voice on the status bar. /set
2014beep_always on/off. /input_char and /pause x added. WARNING major
2015incompatibility but new functionality. most of the /set status's are now
2016moved into /window set. Fixed /input and /input_char so more than one char
2017can be set in /input. Added /oRignick which will try and take back a nick
2018every 20/30 seconds. format_ctcp $3 and $4 are reversed just to make more
2019sense. /addlamenick and /unlamenick implemented. $stripmirc() will strip the
2020lame mIRC ^C from the input string. ex.
2021/set format_public %b<%n$1%b>%n $stripmirc($3-)
2022Found and fixed a bug in /remlog. which was causing some grief. All
2023format_ctcp's are now changed to use $4- and $3 instead of $3 and $4-. much
2024easier on the client. Added /lamenicklist to show nick list.
2025New tcl bind type. Now we have a type for input. This is called just before
2026the command is sent to the irc interpreter. Input is then passed onto the
2027ircii interpreter. Removed NAMES_ON_JOIN in favor of SHOW_CHANNEL_NAMES.
2028Corrected the workings of this command. tcl command userhost added. Accepts
2029any number of nicknames. When the servEr responds, it sets userhost and
2030un-userhost wIth the appropriate responses. Added tcl getchanmode #channel.
2031Added new tcl bind input (Thanks robocod). It is checked just before the
2032line of input is sent to the interpreter. MAjor dessync problem found and
2033fixed. /quote JOIN #channel where you are already on #channel and channel
2034mode is +i would cause the client to remove the channel. The server actually
2035thought you were on the channel. Small buglet in new parse server notices
2036code, tended to core the client for some reason. Forgot to sync the userlist
2037with the channel nicklist when we did a chglevel/chgaop/chgprot/chgchan
2038operation. /set show_numerics on/off now works, but not in the same way that
2039it used to. The last current numeric is displayed. /set -show_numerics_str
2040now doesn't crash the client. /bki for boot kick ignore added. /fk added as
2041a command alias'd to /masskick ie filter kick. DCC sends have been speeded
2042up by a order of magnitude of 3-6 times. status updating on dcc sends and
2043recieves has been slowed down to occur on every 10th packet or so. Testing
2044was done using ircii ircii-hyper Scrollz eggdrop and a modified ComBot with
2045dcc file capabilies. A 19meg file was transferred repeatly over the course
2046of several days. It was done using localhost connect for highest possible
2047transfer speeds. ncftp was 3.8Mb/s. Scrollz was between 450kb/s-1017kb/s.
2048ircii-hyper was around 650kb/s-1073kb/s (also had trouble with the eof
2049even between two clients irc-hyper). BitchX to eggdrop 460kb/s.
2050BitchX to combot was 806kb/s-1073Kb/s. BitchX 68e was a dismal
2051275kb/s-490KB/s. BitchX to ircii-epic 3.003 was 450-700Kb/s. Ctoolz with
2052DCC_BLOCK_SIZE of 2048 was 1100Kb/s and with 4096 was 1475Kb/s.
2053ircii 2.8.2 with DCC_BLOCK_SIZE of 4096 hit 1050Kb/s and with 2048 got
20541200Kb/s. And finally BitchX 68f to BitchX 68f was variable (*grin*)
2055between 890kb/s and 2150kb/s. Reasons for variance was /set DCC_BLOCKSIZE
2056was changed from 2048 to 4096 between runs and dcc status indicator was
2057turned off as well. (100mhz pent 64m ram. 6 shells open. basic Redhat running
2058with irc server and 2-4 irc clients ide drives). Cpu Usage is down as well.
2059The file used is an actual tar.gz file with data in it. All of dcc.c was
2060colorized.
2061
2062       ������������������������[dcc transfer stats]���������������������͸
2063       �                                                                 �
2064       ���[xferd in]��-[xferd out]ķ�[total files]���[active]ķ�[limit]ķ�
2065       ��      241Mb �       627Mb �            52 �        0 �       6 ��
2066       �������������Ľ����������������������������Ľ�������������������Ľ�
2067       �                                                                 �
2068       �����[in stats]�������[out stats]��ķ����������[toggles]���������ķ
2069       � max: 1755.8kb/s � max: 1755.8kb/s �   autoget:  On   paths: Off �
2070       � min: 236.44kb/s � min:  36.00kb/s � overwrite: Off   quiet: Off �
2071       �����������������Ľ����������������������������������������������Ľ
2072
2073/set lastlog_ansi on/off for display of ansi in your lastlog file.
2074/set dcc_fast on/off to change fast dcc sends on the fly.
2075more binds for /window swap.. added 8 9 and 10. Added access to a internal
2076function called stripansicodes() which will strip all color from a string.
2077Chatted with some newnet oper-admins about there server software. Merged in
2078SOCKS support. Made configure understand some options about tcl,
2079non-blocking, socks, and default-server. Use configure --help to find them.
2080Url grabber. /set http_grab on/off. this will grab any http: string and
2081place in the file $CTOOLZ_DIR/BitchX.http. string can be a public or a msg.
2082As well /lastlog will also match grab any previously said url's. Small bug
2083with input prompt and NULL being inserted into the string (fyi all clients
2084suffer the same problem). ie "null char some text"  and press enter. /dc now
2085accepts a list of nicks to chat with. We also use the userhost queue to find
2086the nicks on irc before starting a chat with them. Added more register usage
2087to possibly speed up the client. modified p_mode to update the structures
2088first and then print out stats. This will increase the speed as well.
2089convert_output_format() takes some cpu to perform it's color parse. Small
2090bug fixed in addlamenick. check_mode_list_join() was getting a null and
2091crashing on a recycle in some cases. /window swap now set's the channel to
2092the bound channel or the current window channel. perm bans were broked.
2093/fkline was modified to use a differant method of scanning k-lines. Need new
2094match() routine that will handle wildcards on either side. Thanks ananda for
2095the mirc->ansi converter which I modified tobe a function. $mircansi() takes
2096a string of text and converts the mirc color codes to ansi. Added /ostat for
2097mperators and cleaned up operator messages considerably. Alot of format's
2098for operator messages added and defaults for efnet are given.
2099
2100Changes for 68e
2101Added command matching. ie /m<tabkey> returns all commands starting with m
2102etc. Linking of clients now made easier with /clink command. Several other
2103commands like /cwho /cwhom /csay have been added. Things said over dcc chat
2104are progated across the link. Some changes in window handling which look
2105like they solve the windowing problems BitchX was having. Added 2 new user
2106auto-op levels for giving voice to someone. 3 is delay voice and 4 is
2107instant voice. other minor fixes. Removed my command matching in favor of
2108the internal command_completion routine. more changes to tabkey routine.
2109/m roo  will return the nick that matches roo, /m root will cycle between
2110nicks. small change to tcl ircii command, so information is returned
2111cleaner. ie we can now do  /tcl set ircii-set [ircii set] so all
2112available ircii set's will be in the tcl variable ircii-set. Ansi stripping
2113is not done. This does have limitations however. Fixed passing 0 to tcl's
2114random(). Changed the party line. We now need to enter .chat to enter the
2115party line. Various other commands are available from the partyline.
2116including .help . /Wall from other BitchX users will now not display as a
2117wall. /set format_bwall can be used to modify the output. /dcx and /dcg
2118added. dcx kills chat request from nick. dcg kills all gets/regets of files
2119from nick. /lwk remove the current window. Note you cannot remove the very
2120last window. added .echo on/off or toggle to /msg =nick on the chat line.
2121Added /cdcc echo toggle cdcc output to yourself on/off. /cdcc type toggles
2122between notify and privmsg. Fixed dcc chat .boot to it informs the
2123partyline of the boot as well as the user that got booted. Wangel
2124contributed /rel to list msgs you have recieved. few other minor nitpicks
2125fixed here and there :) Mathe noticed that /remlog doesn't reset the away
2126msg count. Thanks to CyberD0g kicking me in the head, the status update
2127doesn't occur nearly as often as it was. This increases the speed of dcc
2128considerably on localhost transfers... ie I went from 89KB/s to 213KB/s over
2129127.0.0.1. ctcp nick op #channel changed so that userlevel's > 49 can op
2130themselves, userlevels > 29 < 50 will voice themselves. Idea from mathe.
2131When away and send_away_msg is on, we will send back our away msg to the
2132person msg'g us. The format of this will more than likely change
2133considerably. The dcc status bar % is differant now. it will display upto 10
2134file dcc percentages. Might solve alot of problems people have been having
2135with dcc's and status bar updates.
2136
2137
2138Changes for 68
2139Changed some fundemental functions around a little after a chat with Sheik.
2140Added a new function for setting up channel params. This reduces code size,
2141because for just about any function() that oPerates on a channel we need
2142to do this. Added a new FORMAT_TOPIC_UNSET and a /untopic command. Changed
2143the /topic command around. We now no longer need to have a channel
2144specified. We use the default channel if none is specified. Changes to the
2145userlist started. Fixed major lossage from a /ctcp message. Emergency
2146release. Incompatible change with scripts on FORMAT_TOPIC_SETBY. use stime
2147instead of tdiff(). /relm and /reln now save the last 10 msg/notice's which
2148can be changed with a compile time #define MAX_LAST_MSG. FORMAT_RELM
2149FORMAT_RELN are used to format the output of these. So /rel[m-n] >[channel]
2150[number]> <-l>. /cset aop for channel specific auto-op. the meaning of the
2151/set aop has now changed because of this. Added ^W? key bind. fixed /4op and
2152/topic. Creation of a simple minded Bitch mode. /cset bitch  mode will
2153reverse certain modes placed by someone not on your botlist or your
2154userlist. Fixed core dump with /links command. Added portnum capability to
2155/dcc chat and /dcc bot(tcl) /dcc send and resend. Added a ascii from
2156acidjazz. Thanks. fixed /away sending ansi out to the server. was causing
2157havoc with non-ansi clients :). Replaced some occurance of nickinuser() with
2158a routine from Sheik. Modified slightly to fit in with BitchX's userlist
2159scheme. Mikh suggested a change for doing fast modes.
2160Implemented and tested. Fixed check_prot() so it actually proTects users on
2161the userlist. /userlist will now take several optional arguements. A channel
2162and/or a userhost mask will display only user's matching a certain type.
2163/botlist is also setup the same way. /notify will display the userhost of
2164those on your notify list if present. idle kick won't kick voice'd users or
2165mps if KICK_OPS is off. on channel join we check both the userlist and the
2166botlist and display using FORMAT_FRIEND_JOIN. (68c-T4).  Fixed mode #channel
2167so it displays the mode of a channel without having opz on the channel.
2168Modified /back so if /set -format_back is done it won't prompt for reading
2169the away file. Also won't give you your away time. Possible fix for not
2170displaying ansi with DISPLAY_ANSI off. Possible input prompt fix for ansi
2171input. Some fixes/suggestions from FLiER concerning status update, and
2172.bitchrc (w)SAVEA. nick and join floods now work as advertised. nick floods
2173should be quicker to catch as well. /randomnick now takes upto two optional
2174parameters, count and prefix to use. /window new channel #linux and window
2175swapping were not updating the input prompt at all. Channel joins were not
2176always announced. Still a bug with the nick->userlist in p_channel() not
2177being updated on the first announce of a join. $cparse() added for script
2178color parsing. mathe suggested $getreason(nick). It uses the color parser
2179so $0 and $1 are defined as nick and mynick. output is ansi-stripped.
2180Replace BitchX.reasons quickly. level 5 userlist protection should work as
2181well. /jnw #channel  added. Ansi is allowed in dcc chat's if and only if
2182/set dcc_ansi is set on. Input prompt is now properly cleared. Sergs_ fixed
2183a little problem with check_auto(). Also fixed up a few other things in the
2184check_auto() check_prot() areas ie sent code. Added code to read BitchX.quit
2185which is a file of quit messages. It's passed through color parser so it has
2186$0 defined as well as any other $functions and variables. Lotsa other small
2187fixes added as well. Merged new epic changes in. This added $chmod()
2188$twiddle() and $uniq(). Also added /call to display the script call stack.
2189Added /set cdcc_prompt. Fixed /relm and /reln formats, as well as fixed the
2190send of /relm to a nick. Changed the output of whois to display the channels
2191if the nick is on any of the internal lists. /j added in as an alias for
2192/join again. Fixed /readlog. Modified  userlist once again. What happens is
2193this. If a nick is in the Botlist we ignore the userlist. A botlist entry is
2194an exact nick!user@host entry. If not in the botlist then we check the
2195userlist using *!user@host. We also check the shitlist entries even if they
2196are found in either of the two lists. Ctcp op/invite/Unban work the same way
2197now as well. Fixed a problem in /ctcp op and /ctcp invite noticed by
2198immortal. Added a new FixColorAnsi() from Flier which saves some work and
2199makes the screen output snappier. stripansicodes() was actually rather slow
2200because we stripped ansi everywhere. stripansicodes() is still used but in a
2201much more limited fashion. Setup home page www.sasknet.com/~pionh. Added
2202some debugging functions. /call will display a call stack for an alias. hmmm
2203maybe we should implement the saving of /relsw /relw /relt /relst *grin*.
2204Added a new shitlist level 5 which perm ignores the *!*user@host of someone.
2205$uhost(nick) will return the userhost of someone on your channels. Multiple
2206returns can be expected. /set REVERSE_STATUS_LINE renamed to STATUS_REVERSE.
2207This allows us to be more compatible with scrollz as well as making much
2208more sense. I've also defaulted this to off. As on reverses the meaning of
2209the ansi from /set format_status*'s. Fixed $isuser() to not segfault on
2210shit'd users.
2211
2212
2213Changes for 67 Released 090896
2214
2215/away now converts the output format so we can do nicer things with it.
2216idle time on /wi was screwed up somewhat. ctcp.c has been revamped. Thanks
2217to FLiER of Scrollz fame for sending me a patch for a color input prompt.
2218Changes were minimal to incorparate this into BitchX/epic. %! displays
2219channel counts for ops/nonops/voice/ircops for the current channel. Fixed a
2220problem with the input prompt not updating properly on channel change when a
2221$T is in the input_prompt. Changes in status.c. Added color status bar
2222capabilities. Also added color backgrounds. %0 - %7 are background colors.
2223%8 is reverse and %9 is bold. Fixed some problems with new send_text() and
2224dcc support. Found a couple of memory leaks in dcc. But I don't think I
2225found the main one. Fixed /ftp and friends seg fault problems. Passwords can
2226now be used on the userlist and the botlist. This affects /ctcp's but not
2227auto-op stuff. Fixed a major memory leak that's been around from version
222864. A few new format's added for some numeric responses. Fixed ^L seen on
2229the status line. Changed parse_args() to read the file IDENT_HACK for the
2230username.
2231
2232Changes for 65-66 released sunday Aug 25
2233Fixed to compile on SunOS and other systems. Solaris has a broken va_args()
2234function. This sucks. %c is taken as a int instead and de-promoted to a
2235char. forgot a set_non_blocking call in dcc.c. Some window commands were a
2236little screwy. ie /window new hide channel #warez the ^Wl command didn't
2237display properly. /whois while switched to this window would goto the
2238previous window and the current window. so we made whois display to the
2239current window. netsplit detection while we are on a channel works. netjoin
2240detection seems to work. Netsplit hacking remains to be checked. We should
2241no longer de-op people who had ops on the channel when the server re-joins,
2242within a certain length of time. After that time is up, then we will (or
2243should de-op that person). We are using a modified whowas routine to store
2244split nicks and check that against the person joining the channel.
2245Dakota pointed out that ctcp_reply wasn't being done properly. As well
2246Ctrl-K for invite's was a little problem. Ctr-T and Ctrl-E have the same
2247problem but until a solution hits me in the head :) will remain the way they
2248are. Color can now be used within the BitchX.help file. Topics can't be
2249colored yet, and we still need a couple of indentation spaces before we can
2250start the material for a topic. We now don't kick ourselves on floods and
2251stuff. FORMAT_ACTION* and FORMAT_NOTICE* and FORMAT_MSG and FORMAT_PUBLIC*
2252had a parameter removed. IT was a lame one, that I'd added to remain
2253compatible, but caused more problems that it solved. FORMAT_MODE now should
2254properly handle the case of a server mode. /list will now prompt you yes/no
2255before doing a /list * . FORMAT_VERSION is setup along with a /sv command.
2256Requested by IceBreak. /whokill /tracekill and /traceserv are re-added by
2257request of myc. get_reason() is used for getting random kick reasons from
2258BitchX.reasons. We now can use $ variables in here. $0 is the nick and $1 is
2259our nick. /encrypt will not segfault when we send/recieve a encrypted msg.
2260Enabled the FORMAT_ENCRYPTED_NOTICE/MSG vars as well. Due to popular request
2261FORMAT_NICK_AUTO, FORMAT_NICK_COMP and FORMAT_NICK_MSG were added. Because
2262of this we also added NICK_COMPLETION_TYPE. 0 nick has tobe the first word
2263on the line. 1 the nick can be anywhere on the line. Added /nochat and /chat
2264commands ala Icebreak. /p and /ping now do the right thing and ping a
2265channel if no arguement's given. /ver will version a channel or a person.
2266/back is now separated from /away. /away will still do the same things as
2267previous. ie /away will still set you back /away message will set you away,
2268but /back will only put you back. We also give the option of reading and
2269deleting the log that might be created. /more will display a file of your
2270choice. New send_text() routine makes life easier. But is has one
2271consequence. I had to modify FORMAT_SEND_MSG and FORMAT_SEND_NOTICE to take
2272one other variable. The sender's nick is $2. It was either modify these two
2273or another two.... Damn it. fixed small bug in dcc_message_transmit().
2274Changed FORMAT_SEND_PUBLIC and FORMAT_SEND_PUBLIC_OTHER damn it.
2275$channicks(channel) returns a comma separated list of nicks on a channel.
2276Useful for those mass messaging types. /on nslookup just for BlackJac.
2277format_topic_change_header for BarK0de. Pent suggested format_names_banner,
2278format_name_voicecolor and format_whowas_header. /msay will say something on
2279all your channels at once. Cdcc channels will now accept a * for All
2280channels and it takes all current channels and adds them to the list. Fixed
2281exec -o to actually tell us what it's doing again. Fixed a ignore returning
2282too soon on notice's. Fixed a problem with dcc stats giving wrong numbers.
2283Drastic suggested a /fproT on/off command. This is a simple toggle which
2284either turns on or off full flood protection. /offers command and a /c
2285command added. /c is for channel/user mode changes. /offers is for xdcc
2286list'g a channel, useful in something like #sexpics.
2287
2288081396 -------Changes for BitchX 64--------------- (Major Upgrade)
2289Lotza changes in tooo many places to even begin to list. Most have todo with
2290the ansification of the client. Most msg's output from the client can now be
2291completely user defined using /set FORMAT type variables. Thanks hellshock
2292for the wonderful idea. renamed /dirlm /dirln to /reln and /relm added /relsm
2293and /relsn commands. Fixed term reset todo the proper thing. clear the
2294screen and then reset. Some changes to dcc were made. dcc sends should now
2295be alot faster. Added new keybindings. Added Toggles for Cloak and
2296OperView. Added %K for status bar display of operkills/nick collisions.
2297Added MdVoice and Devoice commands. Same parameters as  deop and mdop. I was
2298asked to remove the cluster() from /addbot for security reasons. Bot's are
2299now matched on exact userhost's + any special server chars "+~-".
2300/scano /scanv /scann /scan will scan a channel for various types of users on
2301a channel. /toggle will display a a screen of toggles which a user can then
2302/toggle <command> to turn on/off. %K will display operkills on status var.
2303uses STATUS_OPER_KILL for the format. Ctrl-E Ctrl-K Ctrl-F Ctrl-X Insert and
2304Delete, F1-F5 and Esc-1 to Esc7 all have internal bindings. They can of
2305course be changed to whatever you like. /rel* functions made alot more
2306stable (ie they don't dump core.) Modified alias_special_char,
2307TruncateAndQuote and strformat() functions. We can now do $[30.]0 and
2308$[-30.]0 to pad a string with a certain character. fixed a small bug with
2309/window double on. When sending a msg/notice we now add that nick to the
2310internal tabkey list. Added ^W bindings for grow window, shrink window,
2311window kill, window hide, window balance, window list, window move, window
2312next and window prev. Added more FORMAT_* vars'. FORMAT_AWAY and FORMAT_BACK
2313FORMAT_NICKNAME_OTHER and quite a few others. Added some changes from new
2314EPIC beta. Fixed Away and back and others. Changed meaning of /set
2315SEND_AWAY_MSG to if on we send a msg to our channels. If off we don't.
2316Forgot to reset /Set AUTO_RESPONSE to our new nick on nick changes.
2317FORMAT_TOPIC_SETBY should now be working. put_it() will not output a blank
2318line. This allows me to get rid of the ERROR MESSAGE and allows the user to
2319set any FORMAT variable to NULL. /eval echo %Pthis is purple%w white%K and
2320bright black  now works. Ban times should now be stored correctly within the
2321client. /on clone_read now works. /set NICK_COMPLETION on/off turns nick
2322completion on or off. Undefined FAST_DCC_SENDS within the config.h file. If
2323you are on a ppp/slip site and require fast dcc sends and are prepared to
2324use some CPU (ie aprox 30%) then define this option. Otherwise leave this
2325alone, as your ISP will more than likely ban you :). Also you can now define
2326a DEFAULT_USERMODE. Because of the way things work within BitchX you need to
2327either define this to change your initial connect or /reconnect in order to
2328set your initial usermode. you can also export IRCUMODE=+iw to change your
2329usermode for the initial connect. /rel* and friends now will take a nick or
2330channel arguement. /set AUTO_AWAY on/off and /set AUTO_AWAY_TIME added. We
2331now will auto-setaway after auto-away_time. only 0 or 10+ minutes allowed.
2332Anything less than 10 is made to be 10. you can also specify this in
2333seconds. /env autoaway will set the default autoaway message. Numbers of
2334minutes the timer is set to is automatically added. hmmm until moRe can be
2335figured out with /echo we won't be using convert_color_format() in echo's.
2336It allows someone to $eval(rm -rf /*) your system. NOT good.
2337
2338
2339
2340
2341
2342
2343--------------- BitchX client -----------------
234401/09/96
2345
2346Fixed small buglet in the size of a alias allowed.. was crashing irc when
2347the alias hit a certain size. just increased size of buffers by double for
2348now.. look further for the rest of the solution later
2349
235001/10/96
2351Added couple of new commands. readlog() and remlog() to deal with msglog's.
2352started adding /adduser  for storing info like a combot would.
2353fixed couple of bugs in /dcc dealing with ~ in filenames.
2354started looking for a way to deal with dcc_num field. also for dealing with
2355dcc_limits. have some ideas, but not implemented yet. Fixed a couple of
2356memory leaks in names.c dealing with new fields added to NickList structure
2357and list_shit structures in pluto.c
2358
235901/14/96
2360Started adding /cdcc and CDCC commands and on ctcp. Added AutoCtcpkick var
2361for kicking on /ctcp * send N :) Removed some duplicate code.
2362
236301/16/96
2364Added /msg nick xdcc command sets. works with xdcc bdcc and cdcc.
2365fixed a strcmp in ctcp.c do_ctcp  so it actually does a my_stricmp.
2366When sending large numbers of files all at once on local system, a bus
2367error will occur.. Need to find this. Also new 2.9b6 server fucks up and
2368don't send a proper response to a nick collision. numeric codes 433 and 437
2369I combined into one number to make it work. Added 251-255 responses from
2370server /lusers works again :)
2371
237201/21/96
2373fixed a couple of small bugs in cdcc handling of private and public msg's.
2374Due to a baby being born, no changes to the queue handling code has been
2375done. So do NOT /set dcc_send_limit. you have been warned.
2376
237701/22/96
2378added auto join channel on invite toggle   /set auto_join on/off default on
2379
238001/24/96
2381nothing new.. couple of bug fixes. crashed irc client on ig/nig combo.
2382also /friends /shit etc were fuxed up
2383fixed auto_join to only join channels when the user doing the invite is
2384on the bot list and authorized for that channel.
2385
238601/25/96
2387well we fuxed with the user_list shit_list stuff.. maybe now they'll be
2388working properly. /userlist will display user's on the user list. need to
2389expand that info at some point in time. /add_user should check the current
2390channel for the nick being added and reinit the info if found. not done yet
2391though. Some other functions may well be broken now though :) anything using
2392cluster will need some reworking as we now store the userhost together
2393instead of separately like before. Fixed some fuckup that either plutonium
2394or comstud created.. you never ever ever ever malloc some memory and then
2395started ++ the pointer to it. This really fux's up the memory manager :)
2396This fix by itself fixed most SIGSEV trouble we were having. user/host fixes
2397maybe put back in if it proves that this would be more advantegous. Release
2398this version to Lifendel and BuddhaX possibly Jondalar to get a couple
2399possible operating versions. Couple of small fixes to the bot list. Save bot
2400list done on /savelist. Auto join channel on invite is setup to only join
2401on invite from recognized bots on the bot_list and the authorized channel
2402for that bot. Should solve most problems with joining 50 channels like
2403#spank_the_monkey_all_night_long type of deals :)
2404
240501/26/96
2406well modified a shitload of source to get more compatible with EPIC. Comstud
2407is a idiot. May as well of started from scratch than use any of his source
2408in this client. Plutonium ain't much better though for using it. Anyways,
2409because of the wholesale changes in the client, some bugs may be present..
2410/notify nick  is working sorta... it don't notify you unless you ask whether
2411someone is online. gotta fix that. status functions changed to use static
2412variables instead of malloc'g em everytime you update. This increases the
2413speed of the update considerably. added a %D for dcc stats on current
2414transfer. added a function ltoa and a dcc_active function. Replaced whole
2415file output.c with EPIC version as I accidently deleted mine :)
2416
241701/28/96
2418ripped out the /aop /shit /friend /beepmsg .. code wasn't working on solaris
2419so fuck it. I'll rewrite so it's better, faster cleaner. we have da
2420technology :). /adduser does the /aop stuff anyways. and other than the
2421/shit the others were of limited value.
2422
242301/29/96
2424ripped out da old irc_io and key binding routines. replaced em with the
2425ones from EPIC beta6. it looks alot cleaner and seems faster. Fixed a small
2426buglet with the double_status line and creating windows.. when the window
2427was marked hidden we had a problem with deleting the window. Fixed the
2428vars.h and keys.h to use enums like epic.. this gets rid of a problem I had
2429when I added a variable and forgot to type make in the include dir. Added
2430bonus is the client is now smaller. Almost 20k smaller now. Fixed little
2431buglet with static declared variables.. I though they were always set to
2432zero on declaration. obviously not. Status line was hit with this little
2433buglet.
2434
243501/30/96
2436oh why oh why did I not start with EPIC.. :) ahh well. I've replaced the
2437brain dead routine for opening a file now.. This version searches the path
2438for the file you want to load. It checks for .gz and .Z extensions and
2439uncompresses the file if needed. It slices it dices it... it... much better
2440than before with 10 copies of the same routine in the code.
2441
244202/05/96
2443So many changes and I haven't documented them :)  EPIC7 and BitchX are
2444sharing there alias's file and a bunch of other stuff. Fixed quite a few
2445bugs I introduced as a result of this. which means there are bugs lurking.
2446ie. /alias save and then PageUp through the screen will core..  Probably
2447something to do with the size of that particular cz.irc alias. Changed
2448UserList a little and what it does. Delayed Auto-op is now working.
2449Userlevel for autoop has to be >= 50 in order for it to work. /adduser -nick
2450will now delete the user from the list. /bot -nick will delete the nick from
2451the internal bot list.  Rewrote a couple Comstud crap routines for masskicks
2452and stuff. they woUld be too slow on a large channel. Now they should be
2453alot quicker. I need to re-rewrite them to share alot of the code that is
2454common between masskicks/mass-deops/massbans etc... they almost do the exact
2455same thing, only differance is the semantics of the operation. Now have an
2456idea of how to do /dcc queue sends, so I guess that'll be next on the list
2457of things to-do. Also removed dead-code all over the client. Fixed a couple
2458of small EPIC7 bugs in the process as well. Hope they appreciate the effort.
2459
246002/05/96
2461fixed bug with alias save from cz.irc.. Seems the line was being split a few
2462too many times for the liking of ircii.. Increased the number of times a
2463line can be split and problem is solved until the next time.. 80 * 80 should
2464be enough for now. Scrollback and ansi don't mix well at this point in time
2465although ansi can be turned off.. it does however not make for a pretty
2466sight.
2467
2468020796
2469due to popular request I've started re-implementing shitlist's.
2470Modified the way auto-op delay is done... using a callback timer function
2471now.. Maybe this will be easier?
2472
2473020896
2474Modified get_reason to accept a nick which is then used to help form
2475automated reasons like in kicks and stuff. This file is called reasons and
2476should be installed in the ~/.BitchX directory.  A %s placed in the string
2477will be replaced with the nickname. fixed reasons on the shitlist, was fuxed
2478up.  started looking for a good place to place the check_auto routine which
2479does Aop and shitlist's. Made the client to a automatic who on join to aid
2480in setting the userlist access. This needs to be done cleaner. Fixed /dirln
2481to display the last notice instead of the last msg.. stupid me.. EPIC don't
2482expand_twiddle filenames at all... so therefore we do. especially when we do
2483a rename on a file using ~/
2484
2485020996
2486automatic WHO <channel> is not a brite idea on large channels.. So we needed
2487to add some special logix to whoreply and numeric 315 to fix it. We still to
2488a WHO on join but we turn off the display an pick up the nicks anyway. This
2489allows the userlist to get synced with the channel on join. Otherwise we'd
2490need to type /w in order to sync it when we join. Six of one, half dozen of
2491the other.  Fixed up link looking we think. Should be compatible with
2492Ctoolz now and is done alot cleaner than what I had previously. LLOOK will
2493display all servers in the list. /set llook on/off turns this feature
2494on/off. LINKS (standard command) might have differant effects depending
2495on the setting of the variable llook. little problem with the channel mode
2496indicator fixed. we were not blanking it properly on channel switch..
2497This caused the mode indicator to seem to lock on the previous channel.
2498Small change made to names.c:remove_channel concerning removing the current
2499channel from the list. Limited nethack protection built in.. Defaults to
2500off. /set HACKING 0/1/2/3 will turn this on. users noT on the userlist or the
2501internal botlist will be de-op'd. Users on the shitlist are whatever you
2502set it too :). So this should all work fine. Yeah right... One result of
2503this change is that we needed to change the args to check-auto in names.c to
2504pass the current channel according to get_channel_by_refnum
2505
2506021096
2507Fixed problem with being klined from a server and core dumping. Numeric 465
2508was the problem and the lousy code contained therein.  Also changed the way
2509we handle adding users to the userlist. If the nick to adduser is given as
2510with ! and @ in it we do not annouce to the user what has happened. This
2511fixes a little problem when reloading the userlist on startup, we don't
2512really want to announce it every time we reload.
2513
2514021196
2515another buglet fixed when connecting to a server you don't have
2516authoRization for. We now successfully try a couple of times and then prompt
2517user to give us another servEr name, just like it's supposed to. Remember to
2518check your BitchX.sav file if something is not working properly. I've been
2519bitten by this several times now. Small bug concerning on exec -name
2520processes coredumping. Thanks Driz for sending me that TiME.irc script.
2521
2522021496
2523finally fixed server changes and modes once and for all. Channels rejoins
2524will be attempted on server change. Channel modes on server change are
2525found. So no more lost modes and channels crashes.
2526
2527021596
2528Lifendel noticed a strange problem with the msglog. This might be fixed..
2529Looks like a old EPIC/ircii bug as well though.. limit checking should have
2530been implemented in both... passing the address of a char to a function
2531that's expecting a char * is not good... Mailed to ircii mailing list.
2532Lameness in /cdcc send is now fixed up.. This should now work instead of
2533core dumping.. Just needed to do some error checking. /cdcc notice now shows
2534you what it sent to the channel instead of just sending without showing the
2535user.. Added /ls and /ps commands. Could add others if needed. Fixed /j to
2536not require a leading # on channel. This doesn't fix the problem with
2537scripts but helps when not using a script.
2538
2539021696
2540Added a call to delay-check_auto in numbers.c numeric 315 which allows us to
2541do auto-ops and autokicks on channel join. The actual work is done on a
2542timer of 3 seconds which fixes the problem where you join a channel but
2543don't have ops yet but try to do a bunch of kicks and bans. I just scan the
2544list of users and shit's to find and if they are on either then add a timer
2545call to check_auto. Seems to woRk well in limited testing.
2546
2547022496
2548Added a function called $flash() which returns a nasty flash sequence. /eval
2549+send $flash() will flash a channel :) .. Due to popular request /set cloak
2550on now cloaks /ctcp userinfo, finger, time and some others from users.
2551
2552022596
2553protected users are now working so be careful in the use of this feature.
2554Re-ops/Deops/Kicks/KickBans are all implemented. Had another look at /Ub and
2555bans these might be working properly again.
2556
2557022696
2558ctcp invite has been implemented. user has to have >24 level and you have to
2559have op's and be on the that channel. delay opz now does moe checking than
2560before. it won't do anything unless the user is on the channel and not-opped.
2561Fixed Makefile.in and possibly configure. We'll see what solaris thinks
2562about the changes to term.c. A new function called $repeat() has been added
2563from EPIC8 soUrce. repeat(2 test file)  produces "test file test file" as
2564it's output. Might be handy for greeting someone :)
2565
2566022796
2567Fixed Flooding.. It was never finding a user in the userlist. Added /ctcp
2568whoami command. Fixed /unuser command to actually delete the proper user.
2569Fixed terminal support. I had upgraded the configure script and some defines
2570in the defs.h.in was forgotten. Caused some strangeness of sorts
2571
2572022796
2573I removed the fake files list. This allowed phoenix with fluff to work.
2574Modified parse_command to allow //^ type commands. Added AJOIN command.
2575Added a bunch of Ctoolz scripts I found to the package. cz-pent, lithium
2576chaos and druid scripts are now included. Added a new status line function.
2577It returns the number of times you have been msg'd while away. %^ on the
2578status line returns the count. Fixed a coRe dump on msg flood problem.
2579Made a new /set called MSGCOUNT to store the count of recieved msg's while
2580away. This was done for any scripts that might want to use it. kludge'd
2581around ^M's on display screen by checking if the eol is ^M nul it, in
2582add_to_screen. Added bitchsay to start replacing the use of say. Added a new
2583function called $isnum() returns 1 if the input is a number else 0. accepts
2584numbers, - and # as a number. Fluff modz compat function.
2585
2586022896
2587Flashes and ansi shit should be much more stable now. Only valid ansi
2588sequence we accept starts with esc. All other sequences are done like normal
2589irc ie bold em and make em printable. Had to make a special case in screen.c
2590just to handle this case. Epic suffers from this as well. ^N ^X and some
2591other chars are deadly to a vt100 screen. We still suffer if someone sets
2592for example a topic with a ansi bomb in it. Fixed Channel sync for those
2593scripts that like to hook who reply's just moved a check I use in parse.c
2594whoreply so the hook never happens..
2595
2596030196
2597Working on whois queue's and ison notification. Added hard Userhost
2598Signon's. /set HARD_UH_NOTIFY on/off  to enable or disable this. A new hook
2599for it as added as well. Command line parser from Epic was added. Have to
2600remove the server_list notification routines that are from epic.. too
2601fucking slow on startup. 23 servers and 20 NOTIFY's and look at the lag
2602indicator :) Although i did improve the speed somewhat by using just the
2603connected to servers it's still not enough.
2604
2605030296
2606You can now specifY a string for BOLD/UNDERLINE/REVERSE of /ignore and
2607kther commands. Why?? you ask, well we can now use ansi escape's for those
2608strings. This saves us from having to use a script /on numeric which speeds
2609up the client. /dcc now shows the chat connections and then a graphical list
2610of /dcc file connections if there are any.
2611
2612030496
2613Added some statistics for a channel. New command is CHSTATS [channel].
2614This displays things that have been seen on a channel from join. Fixed up
2615sync_user_list. And created a new function check_sync. We now do a mode
2616#channel b, a mode #channel and a who  #channel on join. I think NOTIFY
2617needs to be put on a timer though, so when we first logon notify is put on a
261810 second timer. each time after though the results are immediate. New
2619commands AddIdle/UnIdle/ShowIdle have been added. AddIdle <#channel>
2620[seconds] to start idle checking on a channel. Every two minutes we check
2621the channel for new idlers. Unidle <#channel> removes idlechecking and
2622showidle [#channel] show idle users on a channel. Structures for nicks and
2623channels have changes thanks to some advice I received from Sheik. Fixed a
2624small bug in .25 when I changed a structure. Changed new command chstats to
2625accept -all as a parameter. Idle kicks need to be modified a little to slow
2626em down :)
2627
2628030696
2629Added new functionality :)  changed parameters to $open to also accept a
2630mode so we now have $open(filename R B) for reading binary and
2631$open(filename W B) for writing binary. without the B writing is done in
2632append mode with the B files can be overwritten. This change was made for
2633compatibility with Ctoolz. Also added was a function called $bcopy() it takes
2634two parameters both file descriptors which must be opened using $oPen. What
2635does this all mean?? Well we can now play a .snd on events such as receiving
2636a message and quitting the program. The following alias shows how.. This was
2637ripped from Cubic Zirconium.
2638Alias playf {
2639if ([$Voice]==[ON]) {
2640@ rf = open(~/.CZSounds/$0 R B)
2641@ wf = open(/dev/audio W B)
2642@ bcopy($rf $wf)
2643@ close($rf)
2644@ close($wf)
2645}}
2646One word of warning though. The copying blocks, ie until the copy is
2647finished we can do nothing. So make your event sounds short oR else you'll
2648be waiting for awhile until the copy is done. Added two new
2649functions  $epic() returns 1, $bitchx() returns 1 and a $winsize()  which
2650returns the size of the specified window or the current window if nothing
2651passed in.
2652
2653030796
2654Added more on hooks server_notice_local_kill server_notice_foreign_kill
2655server_notice_fakes server_notice_fakes_mychannel
2656server_notice_server_kill.. if you want to know what these are about take
2657a look at notice.c parse_notice() function.
2658
2659030996
2660Fixed a bug in notify add_to_userhost_queue . This may have caused seg's on
2661SunOS 5 and definitely caused a small slowdown in joining a channel when we
2662first started the client actually about 40 secs of slowdown. I might have
2663broken hard_uh_notify though. Added command /Addbot to replace /bot .. It
2664makes more sense with /adduser and /unuser and /Addbot and /UnBot. Channel
2665will default to * if left out. This may also fix AIX compiles.
2666
2667031096
2668Added Bhelp command. Ctoolz.help must be renamed to BitchX.help and placed
2669in your .BitchX directory in order to work. Complaining does help and it was
2670actually a fairly simple command to add, we are using builtin array building
2671commands. In my small tests of this function it seems to work almost exactly
2672as Ctoolz chelp does. Started adding /dcc resend and reget functions. I may
2673have broken dcc in this case though. Sure hope not, dcc.c is a mess. Added
2674new script from Zircon. It includes a new help file with functions from sCZ.
2675
2676031196
2677Added new Ctoolz functions $addtabkey() and $gettabkey() support. These
2678functions take single parameters. addtabkey takes a nickname and adds it to
2679the head of a list. gettabkey takes a number either 1 or -1 which is then
2680used to search either forwards or backwards through the list. The most
2681recent nickname on the list is returned first, and then added to the end of
2682the list. Really fixed HARD_UH_NOTIFY. I was only using it on the first
2683server. If you went to another server normal ison functions were used and
2684the userhost was not. //^ functions should now work and SWITCH command from
2685EPIC was added to the client.
2686
2687031296
2688Sheik made a good suggestion to add a dcc stats command so I did :)
2689/dcc stats gives statistics on dcc's this client has done such as Min and
2690Max rates for both incoming and outgoing files. Bytes in and Bytes out as
2691well as a total file count received and sent.  Added /usage command which
2692gives CPU statistics. Fixed /uptime and /chanst to look a little better as
2693well as give some memory statistics. EPIC script directory is included. This
2694is version .29 already. Enabled NON_BLOCKING CONNECTS. Had to make a couple
2695of fixes here and there, but it looks like it's working. Re-visited idle
2696kicks and we now mode +b then kick the user. one minute later we remove the
2697ban. Added more to /chanst command. Fixed linux kernel for getrusage() :)
2698and sent the patch to Linus. Maybe it'll make it into kernel 1.3.73. Fixed
2699/dcc stats command to correctly display bytes sent/recieved. Fixed $1- bug
2700that has plagued EPIC/Ctoolz/SCROLLZ/BitchX clients. Sometimes though a line
2701of output seems to be lost with fluff mods xdcc commands. Don't ever take a
2702negative index on a "" string. You can get odd results. NON-BLOCKING is
2703working for /dcc but logins seem to have a problem. Hard to fix though as
2704gdb gets sig-pipes all the time. Added /RELOAD command which reloads your
2705BitchX.sav file. Had another look at check_auto and friends. It worked, so
2706wonders never cease. We now use a wildcard in the nick so we match on the
2707*!*user@*.sasknet.ca if this causes trouble we may have to take alook at it
2708again. A variable was added called IDLE_CHECK, it's the time in seconds
2709between idle checks. MAX_IDLEKICKS sets the maximum number of idle kicksperformed at one time. MSGCOUNT is something I added awhile back. A user
2710should never have to set this. As it the number of recieved msgs while
2711away.
2712
2713031396
2714Changed some things around. Created a structure to hold channel stats in.
2715When we join a channel and its not in the list it's added to the list. When
2716we leave the channel it is not deleted. if we then rejoin a channel on this
2717list the stats from before are copied over. Complicated, yes. But it solves
2718a problem with the BitchX.sav list and the information stored there.
2719Eventually a lot more info may get stored in it. Such as the banlist. The
2720current channel's bans are already stored in the server_list channel list
2721structure for each channel. I want to rewrite the /unban /ban routines to
2722use this information.
2723
2724031496
2725busy working on non-blocking /dcc resend and reget's.. they should be
2726working now that I fixed the error of my ways. /dcc glist is now looking
2727alot better.
2728
2729031696
2730Changed /ctcp user invite channel  to be a little more aggresive in it's
2731check for validation. So if the user is found on the userlist, and the
2732userlevel is greater than 24 and that user is allowed on that channel, then
2733we allow the invite, announcing to you that we are inviting someone.
2734Otherwise access is denied. Finally got a chance to try /dcc resend and
2735reget in operation. It works so far. It's compatible with Ctoolz and prob
2736Scrollz as well.
2737
2738031796 BitchX .32
2739Added new command /cset. To start with some sets are put into
2740a default channel list set. This default is copied to the new channel as you
2741join it. These channel sets then become specific for the channel. The
2742default channel options can be changed by modifying include/config.h. They
2743can be changed while running using /set. Userlist and shitlist are fixed up.
2744Seems that we were being a little redundant. Also make sure that we use
2745wild_match on both sides of a string. a New command /reload to reload you
2746BitchX.sav file into the client. The default kick reasons file has been
2747renamed to BitchX.reasons instead of reasons. I seen the new Ctoolz /dcc
2748glist but after some careful though decided that I don't wanna tie the
2749client into the script. Nick Kills and collides should be identified
2750properly in oper mode. Operator kills local and foreign are differianted.
2751I've removed the /msg user -invite channel  stuff. Use /ctcp instead. This
2752only allowed people on the userlist to invite themselves, but I didn't see a
2753reason to have two differant methods.
2754
2755031896
2756Link looking is fixed once again. Forgot about hooks and what happens when
2757someone hooks a numeric on me. Started working on various other flood types,
2758such as nick, deop, pub and kick floods. What a weird bunch of stuff.
2759
2760031996
2761kick on deop flood, kick on kick flood, kick on pub flood and kick on nick
2762change floods are now implemented within the client. They can be setup
2763channel specifically or globally for all channels. /ctcp ops channel and
2764/ctcp unban channel are implemented. Also the user list can be turned off
2765for specific channels as can the shitlist. Doesn't sound like i've changed
2766much, but some major changes internally to support all this. Renamed a
2767command called /nig to /unig put back in /unigh as well. (These are unignore
2768commands). Added /dcc path on/off to remove the path from /dcc'd files on
2769display.
2770
2771032096
2772/dcc was a little bit broken, nothing too serious. Fixed I think. /dcc has
2773alot of commands the "standard" clients do not. Such as stats, paths, quiet,
2774auto, status line update, glist, resend, reget and active. /dcc stats
2775returns a status indicator of various things seen while on irc. paths turns
2776off display of the download path of the files in list. quiet toggles quiet
2777mode for dcc transfers. Auto is a toggle for /set dcc_autoget. status line
2778updates are meant for script writers. glist is a graphical display of active
2779dcc's. resend and reget are for aborted transfers, and active displays the
2780limits and bounds of various set's involving the number of active dcc's and
2781the limit on the number of active dcc's allowed. Also /dcc ? returns a help
2782screen. Added /Qk foR quote kicks. BitchX.reason is used from the .BitchX
2783directory.
2784
2785
2786032196
2787Hmmm discovered that I was hooking numeric 365 end of links number and not
2788doing my end of links routine, therefore link looking for only partially
2789working depending on what script you were using. Fixed /dcc chat #channel.
2790Problem was that we can cancel /dcc transfers by number now and of course we
2791use a # to denote this. Well this causes a problem with anyone dumb enough
2792to try and chat a channel. So we are now a little more paraniod about what
2793we'll accept as a dcc number. We also couldn't close that particular kind of
2794chat as we thought it was a number and treated it as such. We now reset the
2795timers and counts when we toggle a /cset on a channel. Otherwise some
2796strange things can happen. Right Jondalar :) Fixed a problem with mode
2797changes. I was incrementing the deop count for both +o and -o cases. Added a
2798new /user parameter. /user -stats returns the internal counts for deops,
2799kicks, publics and nicks changes. /user -ops -stats shows stats for only the
2800ops and /user -nonops -stats show stats for the nonops. Non-Blocking /dcc
2801connects work great. Non-blocking servers connects are working well. Only
2802problem seems to be that the Non-Blocking /dcc never time out. Have to have
2803a look at that. Anyone have any ideas on what a reasonable time-out would
2804be?  Corrected channel statistics to better reflect what is actually
2805happening on a channel. Had a couple of mistakes here and there. Channel
2806splits might disturb these statistics though.
2807
2808032396  BitchX .35
2809Lotza bug fixes. hooking the 251-255 numerics now. /dcc send *.zip was broke
2810due to some stupidity on my part. gettabkey and addtabkey now take an
2811optional second parameter AUTOREPLY. This second parameter defines what list
2812the is nick taken from. The default is the tabkey array. Two new functions
2813added to retrieve the last message and the last notice were created.
2814$lastnotice() and $lastmessage(). Added a sort function. So $sort( one two
2815three)  returns one three two in sorted order :) poor example. Merged EPIC 3
2816changes for alias.c,dcc.c, ctcp.c and others which fixes several functions.
2817dcc.c fixed for files of size 0. These files are automatically announced but
2818not autoget'd. If you do get the file, then it is rejected. All /dcc rejects
2819are also sent to the offending user as a notice. Last msg was fixed to
2820include the userhost of the user and the time the message was sent. Created
2821diff files for irc.c, dcc.c and server.c for EPIC development to have a look
2822at. Fixed WallMsg to check for arguments. If none then print usage message
2823and return. /dirlm and /dirln can take a optional second argument to specify
2824the channel to send to. May have fixed the problem with being set away on
2825server join. We now auto-join all previous channels on server change.
2826This soLution is more elegant than what was previously implemented.
2827Added /UnAjoin to remove a channel from your autojoin list. Channel has to
2828have been added to this list with /AJoin otherwise nothing happens. Added
2829some changes from EPIC 3-patch3. Still won't add the broken part though.
2830Horrible kludge done to /dcc glist. I actually set errno to zero. This fixes
2831a divide by zero error I haven't been able to find anywhere. The actual
2832divide by zero isn't happening within dcc_glist, but somewhere else in the
2833code. I added memmove() from inn distro for those systems that don't have
2834memmove(). I needed a feature of memmove so it now included. It only gets
2835compiled if HAVE_MEMMOVE is defined 0 in def.h. the source is in ircaux.c.
2836Please let me know if anyone has trouble compiling this.
2837
2838
2839032596
2840fuked up on /savelist if you have /AJOIN's defined it'll lock. Arrggh
2841everyone was wondering what the new flag +r meant on the usermode.. Misread
2842a patch was the problem.. you couldn't unset it period because it did mean
2843you were logg'ed into a server., but it should never have been displayed.
2844Changed behavior of /dump. Be very cautious with this. It removes all
2845aliases or ons or vars or binds or everything loaded. But first everything
2846is saved to BitchX.alias. Changed p_privmsg. First we check if the user is
2847ignored then we check we do ctcp and stuff. Changed keys.c and config.h.
2848EMACS_BINDS is defined now and ALLOW_STOP_IRC define was removed so we can
2849always stop irc. Added /DF for disk free command. Added /banstat to show
2850channel bans optional parameters are channel and/or nick. I'm now using the
2851internal banlist which makes channel unbans reasonably fast :) It sounds
2852like i've done alot here, but most of this was already implemented.. Just
2853needed some "glue" functions.
2854
2855032696
2856Chasing some bug in /dcc with AIX systems. Fixed a bug with /msg nick cdcc
2857and nothing else on command line. Fixed /dcc glist. now we can send files of
28580-length but cannot receive em. /dcc glist doesn't crash if we are sending
2859one. Trying to find a fix for a memory problem involving too many m_strdup's
2860and not enough new_free's. Fixed a problem Frisbee found with not being able
2861to display bans on a channel when you're not in it. Nice thing is EPIC has
2862the same bug :). Lifendel says that with more than 12 dcc's he crashes. Not
2863sure yet what this is about. Fizzle_B says that his client tends to "lockup"
2864for about 10 secs. I think this has to do with hard_uh_notify and the amount
2865of notify's we're getting back. I started using USERHOST which is better
2866than ISON. ISON does tend to do this as we have to send individual requests
2867for each nick. USERHOST we can send 5 at a time. BlackJac mentioned that
2868phoenix runs fine with BitchX.. This has actually been working for awhile
2869now. Looked at Hellshocks dcc.c and whois.c but I don't think I'll add em
2870into the client. His modifications involve sending ansi codes directly from
2871the client. Personally I feel this should be the responsibility of the
2872script itself. Sheik agrees with me on this. /ignore works a little
2873differantly than expected. You need to specify the full nick!name@host where
2874nick, name or host can have a wildcard.  we can now ignore _Elfoo_'s lame
2875attempts of getting BitchX. Everyone should add /ignore
2876*Elfoo*!*@*.central.com ALL into their .ircrc file. Changed cdcc doffer. We
2877now don't need to use #1 we can use 1. Changed xdcc send to accept either #1
2878or 1 as the pack number. A queued message is sent to the user if our
2879active dcc count is greater than DCC_SEND_LIMIT. dcc queues are implemented
2880but not very well tested.
2881
2882032896 .37 released
2883Changed /dump. has a new parameter FILE which dumps to a file. It dumps
2884everything to a file called BitchX.dump in your $HOME directory. Also had
2885forgotten to dump keys for ALL parameter. Added changes from e3000s5 as
2886well. /fe has been changed and a couple of bugs in alias.c as well. Fixed a
2887overzealous m_strdup problem in BitchX/EPIC alias's. Fixed nslookup to work
2888on nicknames as well as hosts. Zircon sure finds them bugs :).
2889As much as I don't like it $unlink() and $rmdir() now are doing
2890expand_twiddle so stuff like $unlink(~/file.zip) expands to your $HOME
2891directory. Please be cautious with this. One nice thing is that low-level
2892functions like unlink don't accept wildcards at all. It has to be an exact
2893filename. loaded scripts and shit on numeric 001 and 004. Not quite sure how
2894well this will work, but what the hey. This has the benefit of us loosing
2895the Welcome to the irc network nickname crap, because we can hook it.
2896
2897032996
2898Fixed IRCUMODE so it works foR all servers. You may get a mode msg twice
2899though. Replaced dcc.c with one from EPIC, with my mods. We'll see if this
2900fixes the problem of AIX crashing the sender. I'm thinking that maybe a
2901misplaced FD_SET is the problem or a FD_CLR. One benefit of loading scripts
2902before anything else is that the client is snappier on startup.. Not much
2903left for almost complete Ctoolz compatibility. Guess we'd better open the
2904file before seeking to the end on resend's. Fixed dcc_dldir problems when i
2905replaced dcc.c with one from epic with bitchx mods. /Channel was broke. If
2906there were no channel modes a NULL was passed to the output. fixed dcc paths
2907problem in dcc.c, I might however have been overzealous in my use of it. dcc
2908numbers are reset back to one on /dcc close function. Have to wait and see
2909what happens when an error occurs. Fixed another couple of epic bugs. One
2910with revw. It should never return a NULL and another in the MatchingBracket
2911routine for $revw( without the closing bracket. Also ran epic regression to
2912a successful completion after fixing a couple of bitchx errors in
2913function_rpattern and function_rfilter.
2914
2915040396
2916Added changes from Epic3-6. Added nethack prot of a sort. 3 levels are
2917provided. 1 gives no warning but deops the splitter. 2 gives a warning and
2918deops the splitter. 3 gives a warning only. /cset hacking sets a channel and
2919+set hacking sets global changes. The user has to be on the userlist or your
2920botlist in order for them not to be de-op'd on a split. Added four new
2921commands /chglevel, /chgprot, /chgchan and /chgautoop to change user stats
2922on the fly. /chglevel nick number will change that users stats. This change
2923is not permaneantly saved until you /savelist. The others are the same
2924format. They should work, but if there are any problems let me know.
2925CAUTION. with this nethack prot turned on you could possibly really fuck a
2926channel badly.
2927Fixed a problem with PUBFLOOD. I wasn't checking to see if WE had ops on the
2928channel we were protecting. I never knew there were so many script writers
2929out there :)
2930Fixed a small long-standing problem, noT a bug with the userlist. If we
2931added a user to the userlist we had to do a WHO command to setup the user
2932display properly. Not anymore. It's updated for every server and all
2933channels on add or on modify.
2934
2935040496
2936Fixed a problem with auto_rejoin. Fixed the /clear being missing.
2937NHprot is now a little more conservative about what it considers to be a
2938nethack. /Adduser will now take a list of channels instead of just a single
2939channel. Wildcards are allowed still. Someone pointed out that wildcards
2940/cdcc's are not great at the moment. If we happen to create a file while
2941offering of a type the matches the wildcard, it is sent out as well. I'll
2942have to make a list instead. Added 5 new hooks USERS, BANS and DCC.
2943USERS displays information from the userlist and the shitlist. BANS is for
2944the channel bans. DCC_STAT, DCC_STATF and DCC_STATF1 is for the /dcc glist
2945information. DCC_STAT returns info on chats, raw etc. DCC_STATF returns info
2946on files and DCC_STATF1 returns info on percentage, sizes etc for the
2947current file. Maybe hellshock will realize that this is better than just
2948adding ansi to the client.
2949
2950040896 .41 released
2951Added some more hooks for script writers. DCC_HEADER, CDCC_QUEUE,
2952CDCC_QUEUEH, CDCC_HEADER, CDCC_PACK and BOTLIST.  We now strip ansi on ALL
2953says, puts etc. What does this mean? Well thanks to Sheik, we can no longer
2954be ansi bombed. Fixed some problems with /server connects to K-lined servers
2955that caused core to be dumped.
2956
2957040996
2958Fixed chelp to allow blank lines instead of locking the client. Otiluke is
2959working on a bitchx help file. Was asking about ansi codes :). Took hooks
2960out of /dcc list  they were breaking things I don't want to break. Reconnect
2961is kinda fixed. Too many reconnect's quickly will confuse the client. This
2962is an effect of non-blocking connects. May have fixed the core on instant op
2963on join problem. Added voice to internal structures. /lk won't kick someone
2964with voice now. Replaced all occurances of gettimeofday except in ircaux.c
2965with call to get_time(). Fixed a bunch of warnings with this. Fixed several
2966kther warnings. Fixed the negative time on channel synch by using time_diff
2967instead of trying to calculate the time diff by subtracting. Made changes to
2968notice.c parse_server_notice so it actually uses the /set SHOW_*'s in
2969vars.c.  Made numbers.c USERS send all info that is required to the server,
2970this might fix the problem some are having with some servers. Someone was
2971asking about showing connections to a server.. I think this is actually a
2972server function. We should see them now if we're allowed to. Changed
2973check_channel_match so it's more generic. We can then use it for
2974PROTECT_CHANNELS var. so PROTECT_CHANNELS can now be a comma separated list
2975of channels to protect. If the CTOOLZ_DIR doesn't exist, it is created.
2976
2977041196 .42 was released.
2978Problem someone had with USER not enough params was caused by bad
2979permissions on /etc/passwd. So i may restore the old behaviour of cheating
2980:). Found a little problem with the new hooks in /dcc glist. forgot to
2981continue before the hook. fixed a little bug in process_incoming_listen.
2982Seems to not like a -1 passed to FD_CLR. previous problem was actaully in
2983function_listen.. it should have required a port number. Fixed finger nick
2984to actually finger someone. fixed CDCC_PACK hook so description is at the
2985end of the hook'd data instead of in the middle. Added new command /statsk
2986what it hopefully does is a grep for server bans matching a certain
2987nick!user@host. Worked on /dcc glist some more. Changed some hooks in cdcc.c
2988CDCC_PREPACK from CDCC_HEADER. CDCC_POSTPACK added. Has the same info as the
2989PREPACK. Patch from epic e3000s7 added. SAVEFILE_LIST and SAVEFILEPOST_LIST
2990and SAVEFILEPRE_LIST hooks added. Modified Makefile's to create BitchX
2991client instead of irc client. modified /fuck to do a /addshit nick channel 3
2992as well.. Just like a hackbot. For a synopis of what was changed in the EPIC
2993patch read the doc/UPDATES file.. Several new commands were added, some
2994restrictions removed from some others, some useless code was removed.
2995
2996041396 .43 released
2997Thanks to piraeus for adding color to the main BitchX ascii. I made a couple
2998of changes for those that have terminals that cannot display ansi. /set
2999display_ansi determines whether or not the screen is displayed in color or
3000not. Some major internal modifications have been made. These are related to
3001the way that userlist entries are looked up on the internal userlist. The
3002lookup's don't happen all the time. instead we store pointers to the
3003userlist on the channel nicklist. this should speed things up quite abit.
3004Have to thank sheik for pointing this method to me. Modified some
3005structures, and hooks quite alot as well. Things like the botlist now have a
3006aop and prot value so the bot doesn't have to be on the userlist and the
3007botlist at the same time. Several hooks have changed the number of params
3008being passed. Added parts of whowas.c sheik donated to me :).. Has the
3009effect of speeding up re-joins because the info is actually stored
3010differently. Course this will be buggy until i figure out exactly how to use
3011it. What it does is on parts' it save the user info into a list, on join it
3012check's the list and if found uses that info. Otherwise it just creates the
3013info again. Saves somes lookups on join an other stuff.. names.c uses most of
3014the calls for this function in case your interested.
3015
3016041496 .44alpha :P
3017So many changes made in things internal, and not documented :) Most of the
3018changes were nitpicking things. But we found some lameness in the code as
3019well. ex. On join a entry is made on the channel nicklist. On /who these
3020entries are recreated again after being removed from the list. Duh. User
3021stats are now kept and a new command added. /Nwhois nick shows stats for a
3022user and this was the cause of most of the fixes. /chanst should be working
3023much nicer now. I put the whowas nicks on an expire timer as well. Some
3024changes from ircii-2.8.15 were made to the code. One noticable one is that
3025+window double now sets the double status bar. /set DOUBLE was removed as a
3026result of this change. New commands are UNTIL and UNLESS to complement IF
3027and WHILE commands. Some changes made to the non-blocking code from
3028ircii-2.8.15 as well.
3029
3030041796 .44magnum released :)
3031Little bug in the new windowing discovered and fixed. Had to do with tog
3032opervision (hidden window) and then switching back and forth. you'd loose a
3033line of display when you did this. /cdcc timer would core. /cdcc save
3034[filename] command added to save your offer list. /cdcc load [filename] to
3035reload the offer list. You can reload this file offer list several times.
3036/cdcc secure will only allow people on the userlist to get files from you.
3037It is a toggle command. defaults to off
3038
3039042396 .45 release
3040Added new cdcc.c from ananda. Modified for BitchX hooks. I like it because
3041it's simple and elegant.
3042
3043042496
3044Fixed a problem with /redirect help. Made DISPLAY_ANSI on/off mean exactly
3045that. If off all ansi strings are removed from output. We can define the
3046default behaviour of this in the Makefile. May have fixed a problem with
3047redirect, where garbage is displayed to the redirect. Changed /k to have a
3048reason if none given. /tban for interactive delete of bans added. /bantype
3049started. Should allow me to get rid of a bunch of useless almost duplicate
3050functions. strtoul is missing on some systems. We now check during configure
3051and supply a version if necessary. Same with memmove. Changes so that
3052.bitchxrc is loaded instead of .ircrc if foUnd. else .ircrc is used.
3053Fixed /bk of a non-existant user. /nwhowas to show the whowas queue. Fixed
3054/fuck of a user not on the channel to work properly. Lamerz beware. Removed
3055sitekickban and siteban commands in preparation of using /banstat.
3056
3057050196
3058Haven't updated this with all the fixes. /fuck should really work now.
3059/banstat is implemented.  /dcc glist now displays reget's and resends.
3060Offered and waiting are also possible. /dcc glist what a pain in the ass.
3061/bantype is implemented. A Screw ban is the same as a screw ban in phoenix
3062and many other scripts. It was also a pain to implement. /bantype takes 4
3063differant types of bans. dcc of small files or fairly large files over a
3064fast link could cause a floating point exception in some cases. Fixed a
3065small bug in /cdcc load ... the /n was confusing the client. Added
3066flood_checking. We will flood_check if FLOOD_PROTECTION is on. If the
3067userlevel is < 90 we will kick user from the channel if FLOOD_KICK is set.
3068And finally we will do a timed auto-ignore of the user for 10 minutes.
3069Several new hooks added at the request of Zircon. USERS, USERS_HEADER, STAT
3070and STAT_HEADER. Fixed a screw-up I had with glob. Forgot to include the
3071source for glob.c and glob.h :) If you need this you'll still have to edit
3072config.h to define NEED_GLOB if you want to include this functionality.
3073
3074050696
3075Due to some stupidity some types of floods were not being set properly. In
3076some cases we were double incrementing variables. Fixed /unig to actually
3077un-ignore a nick!. Fixed LameKick's to do a actual kick. Seems some changes
3078made previously to speed up access to the userlist has broken a couple of
3079functions here and there. We were forgetting to resync the channel userlist
3080after removing a user from the userlist. This could cause a crash. Shitlist
3081was not working. Fixed. shitlist & userlist were not updating the channel
3082nicklist properly. sync'd the botlist and the channel userlist better. Added
3083a new function $userver(nick) which returns the nicks server which we happen
3084to be storing in the the channel nicklist. Added a new command /sk to
3085perform a server kick :). Server can be wildcarded and a optional channel
3086can be specified otherwise the current channel is used. Turned FLOOD_PROT
3087off by default. Increased default FLOOD_RATE and FLOOD_USERS and
3088FLOOD_AFTER's. Memory is cheap :) Changed Screw bans to use a * for the
3089nickname. NetSplit hacking is being worked on.
3090
3091051096  .49 released on net
3092Merged changes from EPIC 3001 beta. $mkdir(), $umask() and /hostname for
3093dynamic IP hosts were added. Not sure exactly what /hostname is needed for
3094though. Need to look at local_ip and re-add that to the client if possible.
3095server info for user was not quite right. /ping hopefully fixed up. Files
3096and chat's can now be encrypt'd when starting the transfer. /dcc send
3097panasync file.zip -encrypt mypasswd will enable this "feature". Removed some
3098lamege from EPIC beta involving malloc. Fixed up flood prot even more. A
3099separate /set CDCC_FLOOD_RATE and /set CDCC_FLOOD_AFTER is implemented. Do
3100we need a separate CDCC_FLOOD_KICK as well? FLOOD_KICK var is a global var.
3101Fixed a long standing bug with channel creation. Seems that we were not
3102getting the value of the proper variable. Added a new set NAMES_ON_JOIN
3103SHOWIDLE and SHOWIDLE_HEADER hooks provided by request. SHOWIDLE returns
3104nick, host, userlevel in the userlist and number of seconds idle.
3105
3106052096 .50 released (aprox date)
3107Been busy at a new job, so not much done recently. I found a silly stupid
3108bug in check_flooding. Fixed /unig to work once again. I think I need a new
3109wild_match routine, that checks both params for a wildcard. Added /cdcc
3110ptimer command. Added a set for the default dcc timeout value. A notice is
3111sent to the other end saying we closed the dcc. _CDCC_CLOSE_IDLE_TIME is the
3112set for this. Added /findports command.
3113
3114052996 Released .52
3115course flooding seems to be a little more difficult than I thought. Some
3116things have been put on hold due to this problem. I have fixed /kb and
3117friends to do a proper screw ban. Fixed /dcc timeouts. We now default to 35
3118seconds for a chat/raw etc and 3 * 35 for file sends/resends/regets etc.
3119Fixed a small flooding problem in the timer as well. wildcard sends are now
3120implemented a little better but I'm still not happy with it. Fixed the Hyper
3121DCC lamage with dcc multi sends. Fixed /dcc list to not core dump..
3122dcc_time() was a problem here. /set autokick_on_Version on/off for those
3123versioning fools. /set mircs on/off for something EFudd wanted. Think it has
3124todo with /ctcp sound. More work on cdcc stuff. /set cdcc_security is a
3125numeric variable which can be set to the userlevel required to get any cdcc
3126response from you. This effectively cut's out the cdcc flood problem if set
3127to anything greater than 0. Course then nobody can get a cdcc list other
3128than a user on the userlist. Also cdcc requests are ignored if there is
3129nothing offered. Flooders beware.
3130
3131053196
3132Changed CDCC_PREPACK to include some dcc_stats by request. dcc_max_rate_out,
3133dcc_bytes_out, dcc_max_rate_in, dcc_bytes_in are added to this hook. Changed
3134behaviour of CDCC_QUEUE_LIMIT a little. If it's set to 0 then in effect
3135there is no queue limit. fixed dcc stats command. Fixed a problem with cdcc
3136and noThing on the offer list. Just pass through the mesg. /ctcp is a little
3137harder todo though. Modified /JOIN to check for a # if it's not there then
3138we add it. Otherwise we just pass the command. Don't forget about the /set
3139SEND_IGNORE_MSG. Also new is a cdcc.irc that can be modified to change the
3140output sent to a channel. It's basically an example of what to do. it'll
3141only work currently with scz-te.irc but this could be changed at your
3142convience. Changed behavior /cdcc offer to now accept a single filename on
3143the command prompt. So instead of prompting fOr a filename/description we
3144can then skip ahead to getting the description. Before you ask if we can
3145have multiple filenames on the prompt, I don't think this is possible from
3146the quick look I had at the code. Quickly implemented /cdcc minspeed
3147checking. It is in KB/s. So 5 would be 5KB/s. You can enter fractional Kb/s
3148as in 1.5KB/s as well. /cdcc timer was changed so it takes a number which is
3149then converted to minutes. We were just using seconds before.
3150
3151060396 .53 Released
3152Fixed some lameness in cdcc again. involving DCC_SENDS_LIMIT and
3153DCC_QUEUE_LIMIT. Forget to check for a equal to 0 value which should
3154effectively disable both of these items. Changed config.h to have a default
3155value for DCC_SEND_LIMIT of 5. Changed CDCC_PREPACK once again added one
3156more parameter for a total of 13 output. We now output the minspeed as sent
3157by you. Changed CDCC_POSTPACK to retrieve same info as the CDCC_PREPACK.
3158Fixed dcc_check_idle to check for a 0 value on _CDCC_MINSPEED_TIME which
3159nullifies the speed checking. Do we want to have differant speeds for
3160differant packs? If the AUTO_REJOIN for a channel is set to any thing other
3161than 0 some wonderful things can happen. If you have a hacked identd client
3162installed, you can change your username as well. There are several examples
3163of type of identd client. cidentd-1.0.tgz is available from sunsite.unc.edu
3164somewhere but the source in pluto.c will need to be changed to support the
3165$(HOME)/.authlie instead of the $HOME/.noidentd file currently used. The
3166routine to make this all happen is called do_newuser() in pluto.c. Fixed
3167/boot so it don't segfault with no args. Fixed compilation on SunOS 4.1.4.
3168/cdcc doffer will now accept any number of arguements on either the command
3169line or the interactive prompt. /cdcc list will accept a pack number to
3170display. It then displays the files in a pack. /cdcc load and save functions
3171will take a optional filename argument. Default is to cdcc.save. File is
3172always relative to your home directory. Minor cosmetic changes to input's
3173in cdcc. /cdcc send and resend will now accept a filename. course we may
3174have a problem if the name of the file is a a number. A pack will be sent
3175matching the number first if possible before we check for a filename. Files
3176are taken from the current directory. /cdcc plist will take an optional
3177channel arguement. If given then that's the channel the plist is sent to.
3178Minimal checking is done on whether this is a valid channel or noT. A comma
3179separated list of channels is allowed. A sample script is provided for
3180script writers in order to provide some directions as to the use of the
3181hooks in cdcc. Added save of banwords command to savefile. Documented many
3182on hooks for script writers perusal. A couple of new hooks implemented.
3183CHANNEL_STAT for the /chanst command output. (32 parameters to this one).
3184USAGE hook for the usage of internal commands. Over the next couple of
3185versions of BitchX I expand the list of commands which can make use of this
3186particular hook. New Documentation and a modified BitchX.help file provided.
3187
3188061096 .54 released
3189Ping fixed we think. ping is still in the CTCP_REPLY list though. if you
3190hook CTCP_REPLY be prepared to handle ping responses. Took another look at
3191kther floods. Fixed /repeat with a off by one error. Took time to make
3192usage mesg's use the new hook and function. Ping is fixed. added rest of
3193command for BanWords. UnBanWords/UnWordKick and ShowWord commands.
3194DCC_TRANSFER_STAT was broke. Forgot to remove a couple of parameters from
3195hook.c. Added a new function $help() which takes a filename and a subject.
3196It uses the filename the same way that /chelp does. It searches the list for
3197the subject in the same way as well. Information from the help file is only
3198loaded once.
3199
3200061296 .55 Released
3201Added a new command /whereis foR looking up people that join and then leave
3202a channel and change nicks. Works well as long as they don't change servers
3203or there isn't more than one of them online at the same time or there
3204username doesn't change. Fixed up /Statsk which is a command for grepping
3205those pesky server bans. Changed chelp and $help(). Sorry script writers but
3206I decided to place the filename last as the parameter to $help(). This way
3207we can initialize it once and then forget it about passing the filename
3208altogether. chelp was changed to actually load the file on BitchX startup.
3209Reasons are that the help from the $help() function will overwrite the ones
3210that are loaded by chelp. So we preload the help, if they are overwritten
3211well not much we can do then except restart irc. $help() returns a long
3212string containing all information about a topic including the usage message.
3213I guess a hook for this might be nice as well. /cdcc minspeed's were a
3214little borked. Added a server sync routine. Fixed Channel keys being saved
3215after a part and a rejoin.
3216
3217061496
3218Fixed /whereis if the user is still on the channel. Stupidity here. $help()
3219changed once again. $help returns info differant from /chelp. It is upto the
3220script writer to format the information returned. A hook is also provided
3221which applies to both /chelp and $help(). Write the proper on hook and never
3222have to woRry about it again. Added SCRIPT_HELP_FILE. This is a full
3223pathname/filename. Default is CTOOLZ_DIR/BitchX.help. $help() needs to be
3224called the first time with a filename. It is expanded to a full pathname
3225automatically. DESYNC_MESSAGE hook provided. See README.hooks for info.
3226IDENT_HACK can be set to the name of the file to use for your hacked ident
3227to hide the username. Default is ".noident". This files needs to reside in
3228your $HOME directory, so ~/ is prepended and expanded automatically.
3229If JOIN is hooked AUTO_NSLOOKUP wasn't happening. So we now do the lookup if
3230AUTO_NSLOOKUP is ON and pass that to the hook. You can no longer just "quit"
3231irc with active dcc's. A second prompt appears asking for verification.
3232Renamed command STATSK to /FKLINE. Integrated changes from ircii2.9base.
3233Fixed a dumb problem in remove_channel(). Forgot to add the nicks to the
3234whowas buffer when we left a channel. This would cause some ghost problems
3235if we then left a channel, and some time later rejoined it. Created a save
3236BitchX variables routine. Only saves the specific BitchX variables to
3237BitchX.sav file. Linux glob functions don't seem to work properly. So I've
3238now enabled the included glob function by default. Added a WHOLEFT hook. We
3239are saving the info from a netsplit currently. type //Wholeft sometime.
3240We'll have to see whether this information is correct before implementing
3241more of it. Server oPs/deops bans/unbans are now incremented when they
3242occur. Affected changes to decifer_mode and update_stats. Added /cleartab
3243which will clear the tabkey array and /clearauto for clearing the
3244autoreply table. Started adding has_ops to whowas info. This is for netsplit
3245stuff. Eventually if a user splits away with opz, on rejoin we won't de-op
3246them. Sounds simple, but it's not. We'll have todo a little more work before
3247this can be a reality.
3248
32490617  .56 released for comsumption.
3250Changed /set Log on to strip ansi escapes out of the output. Changed
3251behavior of /ban. we check the list of nicks to match the supplied ban. If
3252their is no match then we will either do one of two things. if a ! and a @
3253is in the ban spec then we just do a mode +b otherwise we search out the
3254match using whois and doing the ban that way. All nicks on the channel are
3255matched against the ban. Otherwise some could slip through the cracks.
3256Oops. .bitchxrc file was not being loaded properly due to a missing / .
3257Changed behaviour of /tban and /unban to follow the variable NUM_BANMODES
3258for the number of unbans todo in one shot. We now unban multiple bans in one
3259shot. Thanks to  BlackJac for the start of a great INSTALLATION file. It was
3260the first time he had compiled the client and made some notes for other
3261beginNers and some not so beginners to follow. Found the little bug with
3262.BitchX no being created with u+x permissions. Added BITCHX_HELP var. This
3263is the complete path/filename of the default BitchX.help file. Default is
3264~/.BitchX/BitchX.help. Changed $help() to look at the SCRIPT_HELP var if no
3265filename is passed to it. This Allows us to set SCRIPT_HELP to a dir/helpfile
3266and then just call $help(some_topic). Notice the lack of filename. Default
3267is ~/.BitchX/BitchX.help still. Fixed small annoyance in /notify that could
3268possibly save a blank notify to the notify list. This caused the notify list
3269to display on startup. nasty bug in status.c fixed. Added a isuser()
3270function that returns info on a nick that is in your userlist,botlist or
3271shitlist. $isuser(nick userhost channel) is the syntax of this
3272useful little function. Channel can be left off in which case a * is
3273returned. The type of the list is returned as either USER|BOT|SHIT along with
3274the relavent information to that particular type of list, thanks Jordy.
3275Jordy also sent code!! for a new function called $pad(). It accepts a number
3276that is either +/- and the string to pad. If negative it pads to the right,
3277else it pads to the left. Fixed /set LOGFILE to expand the path of the
3278filename passed to it. /Window double no args would core the client. Fixed.
3279Without DCC_* hooks /dcc quiet really means quiet. /lastlog now strips out
3280all ansi codes period. Some hooks were being used that echo'd the lastlog
3281info to the screen. Ansi - chr 27 looks really ugly displayed this way.
3282Increased default timeout on dcc chats to 55 seconds, files is 3 *  this
3283number.
3284
32850624 .57 released
3286immediately BigHead noticed a bug with the /user command. Fixed a bug
3287icebreak reported with $cluster(). Fixed dban so if we do a *.me the count
3288is more correct. 3 new functions. $isban(channel nick) returns 1 or 0 if the
3289person is on the internal ban list. $isop(channel nick) returns 1 or 0 if
3290the person has ops on the channel on the internal userlist.
3291ischanop(nick channel) is already implemented isvoice(channel nick) return 1
3292or 0 if the person has voice on the channel.
3293
32940626 .58 released
3295Fixed ctcp flooding I think. Had the wrong order of events necessary in
3296order to auto-ignore floods. Created a CTCP_DELAY variable. This is the
3297amount of time that is supposed to pass before we will accept another ctcp.
3298/ctcp niak xdcc list has a separate flood characteristic than normal ctcp.
3299These can be set using /set CDCC_FLOOD_AFTER and CDCC_FLOOD_RATE. Please do
3300understand what these represent before changing the default values. Also we
3301have CTCP_FLOOD_PROTECTION which can turn this on/off. Fixed a problem I
3302created with some color experimentation. Seems Bold was getting translated
3303into the color red. Changed output from dcc_transfer_struct. packet counts
3304were not exactly correct, due to differant buffering sizes between clients.
3305Changed status_msgcount to display a 0 for no away messages. Changed
3306flood_ignore to make the code a little more sensible. Anyone over 90 in the
3307userlist or the botlist can ctcp flood you without being kicked or ignored.
3308Due to some complaints on $help() formatting, we have now modified $help to
3309directly output the information to the user. A typical alias looks something
3310like the following
3311alias shelp {@htopic = [$0]?[$0]:[index] ;$help($htopic) }
3312
3313062796 .59 Released
3314ctcp flood protection. If the current incoming ctcp is within CTCP_DELAY
3315seconds we drop the request. 3 works well for most situations. Someone
3316offering files may want to make this value 2 which is the default for
3317ircII2.9. Value is saved in the BitchX.sav file. Fixed a couple of other
3318nits with the wholeft commanD. Seems op kills were being interpreted as a
3319server split. Someone suggested using "))" as the fix. Seems to work. When
3320"we" left a channel it was being intrepreted as a server split as well. This
3321was in remove_channel(). /window double 1 on will create a double status on
3322window 1, /window double 2 on will create a double status on window 2 if it
3323exists else it does nothing. /mload now expand and searches paths for the
3324menu you'd like to load. /cdcc notice will now also accept a channel to
3325display the offerlist to. Added new ansi from reefa. Changed output of ctcp
3326version a little. Found a small bug in server.c where it was possible to
3327crash the client if we couldn't connect to a server. Found this while adding
3328/set NEXT_SERVER_ON_LOCAL_KILL to the client. Modified server_read_file to
3329check for a file called .ircservers in the $HOME directory. If found it is
3330parsed as a extra list of servers to be included after
3331/usr/local/lib/irc/ircII.servers. This behaviour might be modified later to
3332use one or the other and not both. Modified bans, kb etc to use one function
3333to create the ban string. Call it a code clean up. Fixed /ban to work
3334properly. Added User /bantype by request. Flooding once again. This time it
3335just might work. (if anyone ever asks you to add flood checking, tell em to
3336go f**k themselves). Added a new cset for PUBFLOOD_IGNORE_TIME. This is the
3337amount of time in minutes we will default ignore someone. if FLOOD_KICK is
3338off we don't kick someone that is pubflooding. We ignore them :). Whole
3339bunch of other minor details.
3340
3341070196 .60 released.
3342Fixed .ircservers usage to not require it to be in the users home directory.
3343Probably solved most segfaults due to server's not being found etc. Might
3344have also fixed some misc segs' on linux systems with this as well.
3345Replaced two key bindings. TAB and ^] are setup as auto msg and auto
3346response by default within the client. Basically we can get rid of the
3347tabkey stuff from scripts. Changed $gettabkey and $addtabkey functions
3348around a little. Made /ClearAuto work as advertised. Moved clear_auto and
3349friend to a differant file (misc.c). Started adding /tlock and /modelock
3350functions. Cleaned up some code and some output fixes as suggested by
3351BarK0de who's creating a new helpfile for us. Added a new function called
3352$randomnick() which returns a string that could be useful as a nickname.
3353Also a command /randomnick will actually change your nick to some random
3354nickname. Patched in changes from new EPIC beta. /redirect might even work
3355now. minor speedups were involved here as well.
3356
3357070796  .61 Released
3358well BJ finds a bug due to some lameness on my part. fixed irc.c. Also fixed
3359configure for Ultrix systems. Need to fix for AIX -lld. Removed more ComStud
3360lameness. Fixed some of my own lameness on the init of the auto reply
3361string, which should be automatically set to your nickname. It wasn't
3362occurring properly. Found and fixed a problem with $read(). Lines with no
3363carriage return were screwed up (Thanks Flier). BlackJac noticed a problem
3364with the status bar channel modes not being properly updated. ChaosLord sent
3365in a small patch for modifying argv to hide BitchX from admins. edit
3366config.h and #define CLOAKED "emacs" or whatever and recompile. BitchX now
3367looks like it's emacs and noT irc client. Sheik suggested something that
3368sounded pretty good. The ability to /ignore a whole channel or just certain
3369things on a channel. Well we can now do this. /ignore #bitchx public  will
3370ignore all publics from the channel bitchx. The channel ignore is checked
3371after the regular ignore, so we can modify the behaviour of channel ignore
3372using dont_ignore for a nickname etc. Some types of ignores don't translate
3373well into channel ignore, so IGNORE_CRAP may not ignore everything you
3374normally would be used to on a channel wide basis. (And Sheik this was easy
3375to add :P). Added another var called SHOW_NUMERICS_STR. It's default at the
3376moment is the string from scz-te numerics. Basically you can now change this
3377on the fly, and add ansi in places you didn't think were possible. (Some
3378server responses for example). The default will change back to "***" after
3379awhile, but I want to leave it like this for a short time to make people
3380aware of it. Calculation of dcc rates on /dcc stats was corrected. Added
3381AR_REPLY hook which is called when user presses ^]. Nothing is added to the
3382input it's up to the script writer at this point to do something with this.
3383Added two new hooks AR_PUBLIC and AR_PUBLIC_OTHER. This makes some scripts
3384work a little strangely until the script writers catch on. :) Provided
3385better keybindings for pgup/pgdn/end. Modified do_screens to accomadate this
3386change. Found bug with /bind meta1 which would segfault the second time you
3387ran this command. Changed /w command just a little to default to something a
3388little better ie it now does a /w $C instead of a whois nickname by default.
3389Someone had pointed out that shitlist bans were not working. Added /tlock
3390command for locking the channel topic. Renamed a couple of variables to be
3391more consistant. So we now have MSGLOG_FILE and KILLLOG_FILE. Fixed some
3392more inconsistancies in various commands. Fixed /eval echo $f[e][  bug we
3393share with ePIC. stripansicodes used on /redirect output. /Tlock was not
3394quite right in the implementation of it. Fixed.
3395
3396071896 62 released.
3397Added a new match() routine. we'll see how this works out. Routine is
3398wildmat routine from Rick Saltz and is almost a standard. Added a new
3399optional parameter to /unbot, /unuser and /unshit. -All will remove all
3400entries from the respective list. We also sync the channel nick list at the
3401same time which effectively completely removes all traces of that list.
3402Changed some internals around to make auto-op/deop more effective after a
3403chat with Sheik. SEND_IGNORE_MSG is used more often in the source ie whois.c
3404Also SEND_AWAY_MSG is now used as well. Added /back to compliment /away
3405command. It's an alias. /sping <server> and internal lag indicator. %L will
3406display lag on the status bar. -b switch added to load the script -before-
3407we connect to the server. Changes to bans for 2.9 servers. Also have to make
3408sure that user@host bans strip ~ as well. Documented -n switch. Added -r
3409switch for reading a specified list of servers other than the default
3410.ircservers. This file is relative to ~ or your home directory. Added four
3411new functions which are basically untested. $opensocket(name port) returns a
3412socket number. $closesocket(socket_number) closes a open socket.
3413$readsocket(socket_number) returns 0, -1 or number of chars read and the
3414string. $writesocket(socket_number string) writes to open socket and returns
3415either -1 or the number of chars written to the socket. If your writing to a
3416irc server make sure and append \n to the output. STATUS_LAG can be used to
3417setup what the lag indicator looks like. /mvoice and /voice added.
3418
3419
3420-panasync    edwac@sk.sympatico.ca
3421
3422