home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / bx75p3.zip / Changes < prev    next >
Text File  |  1999-02-23  |  185KB  |  3,474 lines

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