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