THE CHANGELOG FOR EPIC4pre1 PIDDLY STUFF: ------------- * Make sure popular scripts work with this release. * Try not to umode +o on reconnect. Why not though? NITPICKS: -------- * Should DCC collisions do some sort of recovery or not? * Strip escapes from inbound messages * Scrollback sucks, but what else is new? * When you reconnect, sometimes get +ws set for no apparantly reason. * Should we handle doing WHO in ON JOIN? * Remove now bogus calls to dgets_timeout(). * DCC Xfers with filenames of 9 digits only show 8 of them. BIG TICKET ITEMS: ----------------- * (pre1) Rewrite the alias implementation * (pre1) Rewrite the whois interface * (pre2) Thorough code audit, profiling, get const correctness under control * (pre2) Sort out the entire lastlog/ignore level fiasco. * (pre2) Unified symbol tables/package retention (maybe) * (pre2) Dynamic loading of object modules, (contingent on above) * (pre2) Convert channel stuff to use alist * (pre3) Rewrite the i/o implementation * (pre3) Rewrite the help implementation * (pre3) New security system * (pre3) Rewrite the set implementation * (pre4) Rewrite the on implementation * (pre4) Finish the new math parser * (pre5) Work on the window/screen implementation * (pre5) You know i hate how ignore works... * (pre5) New wildcard parser * Real ``return'' and ``break'' commands * Modernize the code base * $HELP_PATH should be searchable path? * Reverse DCC? All of DCC? * Settable delays between notify ISONs * Really must encapsulate server_list. Really. * Some way to "sign" a dcc send with a larger file. PENDING THINGS: -------------- From James' Wish List: * real arrays (i.e. replace Karll's arrays with a numerical array op), * case-sensitivity for input and comparisons (maybe a /set for this) * some mechanism for tracking loaded scripts (for unloaded, etc.) * hard returns in word wrap so logfiles are readable? * a real "return" command * we have #=, so why not something that prepends text? * tighten (or clarify) ++ and -- syntax rules * more (graceful) ircd 2.9 support (I know you hate it, but...) * pattern matching for removing ignore patterns (i.e. /ignore -*!*@*.au) * Automatic expandos for current alias, parent alias, filename, line num... * IGNORE/LASTLOG/etc levels dont match, and they should. * AUTO_REJOIN/AUTO_RECONNECT should have /set'table delays. My Wish List: * more graceful ef2.9 and u2.10 support (yuck) * slurp up possible umodes from 004 numeric and use those. * People want to see time delayed auto-rejoin. hrm. * Add WARN_OF_IGNORES back for outbound messages * Check the semantics of $winchan() and improve in pre2... CHANGELOG: ---------- 0.000 Fixed bug with /set lastlog_level ALL -C (rb crowman) 0.000 Fixed bug with $N and $R (rb wc) 0.000 Fixed lame bug with /leave, /part (rb wc) 0.000 Local variable support 0.000 Import epic3.004-alpha 0.000 Rebuild 0.001 split alias.c->(alias.c/functions.c), rename edit.c->commands.c 0.001 syntax error debugging 0.001 Rebuild 0.002 catalog alias.h, document functions 0.002 rearrange alias.c, seperate interface from internals 0.002 Remove several funcs from alias.c, unneeded 0.002 Rebuild 0.003 Add malloc tracing to new_free, etc. 0.003 Rebuild 0.004 Move stack alias support from stack.c to alias.c 0.004 Make alias_list static to alias.c 0.004 Make x_debug have individual flags 0.004 Make new command /XDEBUG to turn on x_debug flags, rebuild. 0.004 Make Alias static to alias.c, isolates all alias stuff to alias.c 0.004 Unify /alias, /assign, /stub, /local commands 0.004 User functions call execute_alias directly. 0.004 Rebuild 0.005 Add /ON ODD_SERVER_STUFF $0 - server, $1- - stuff. 0.005 Remove ircflush, ``shell' script. 0.005 Remove alarm clock feature. 0.005 Remove ircserv. 0.005 Remove translation tables 0.005 Remove external encryption support 0.005 Hack up configure.in, dont check for POSIX stuff. 0.005 Rebuild 0.006 Cleanup of term.c, 0.006 Import simplified mail checker. 0.006 Support for naked CTCPs over DCC CHAT (lame mIRC hack) 0.006 Added /SETENV command 0.006 Added EXEC -direct for the lazy =) 0.006 Rebuild 0.007 Applied fix from flier (by way of Colten) for split_up_line. 0.007 Most input can be specified in "common" formats (hex, oct, dec). 0.007 Fixed up wserv.c, /window create stuff. Honors XTERM env var., 0.007 Rebuild 0.008 Fix /alias,/local,/assign,/stub to allow multiple vars per command 0.008 Rebuild 0.009 Removed boot-time MOTD file support 0.009 Removed the -c command line flag 0.009 Rebuild (Released) 0.010 Fix /input char (found by wc) 0.010 Fix some memory leaks with help from wc. 0.010 Fix bugs reported by Colten (different way, though.) 0.010 Rebuild 0.011 Remove NOVICE mode and all its lamage. 0.011 Convert args handling to getopt() 0.011 Seperate the four alias commands, work on updating them 0.011 Start on alist.c, a resizeable binary searched array. 0.011 Convert command searches to use alist stuff. 0.011 Rebuild (except for alias.c) 0.012 Remove legacy pipe() compat in exec.c 0.012 Change all gratuitous uses of sys_errlist to strerror() 0.012 Fix how client deals with broken 333 reply (simon) 0.012 Clean up ircaux.h, irc.h, irc_std.h 0.012 Rebuild (except for alias.c) 0.013 Fix Unix code in connect_by_number 0.013 Change window create and dcc raw code to use connect_by_number 0.013 Added new var "CONNECT_TIMEOUT" for how long to block on connect()s. 0.013 Remove lame broken old signal compat code, only use sigaction 0.013 Rebuild (except for alias.c) 0.014 Syntax mop up in dcc.c, names.c, files.c, funny.c 0.014 Whacked on history.c a good deal 0.014 Add compat code for vsnprintf/snprintf, start using it. 0.014 Clean up configure script. 0.014 Rebuild (except for alias.c) 0.015 Whacked on parse_args() 0.015 Fix memory leak in check_wait_command (Colten) 0.015 Add /xecho -* (/xecho -a) to echo to every window. 0.015 Changed new_realloc() at the suggestion of Colten 0.015 Whacked on code as neccesary to implement above 0.015 Removed pointless /set SEND_IGNORE feature. 0.015 Rebuild (doesnt link) 0.016 Remove all the rest of the __STDC__ usages. 0.016 Remove all uses of lame _(()) macro 0.016 More work on rewriting stuff in alias.c 0.016 Use __attribute__((format)) for GNU cc to catch errors 0.016 Fix lots and lots of ``printf'' type errors. 0.016 Fix /window list code so its more efficient 0.016 Rebuild (doesnt link) 0.017 Write find_in_fixed_array() and make commands and vars use it 0.017 Fixed built in functions from passing function calls to macros 0.017 Change built in function searching to use find_in_fixed_array(). 0.017 Fix a lot of null pointer deref bugs with get_string_var 0.017 Continued work on alias.c 0.017 Rebuild (doesnt link) 0.018 Added simple caches for global vars and global cmds. 0.018 Write last major functions in alias.c (yea!) 0.018 Write last minor functions needed to link (woo hoo!) 0.018 Rebuild 0.019 Bug hunting 0.019 Removal of infinite recursion detection. 0.019 Rebuild 0.020 Preliminary profiling. Very simple and very dramatic improvements. 0.020 Rebuild (release) 0.021 Fix bug with sig.inc being in the dependancies 0.021 Fix bugs with /stub 0.021 Include compat code for LAME SOLARIS THAT DOESNT HAVE SETENV 0.021 Include compat code for LAME SOLARIS THAT DOESNT HAVE SCANDIR 0.022 To get it to work on solaris, you need to use -lbsdmalloc. 0.022 Rebuild (release) 0.023 Roll in changes to make it work on FreeBSD/linux 0.023 Fix malloc fault in /for, reported by bigmac. 0.023 Fix bug with get_subarray_elements that caused /foreach to break 0.023 Added back /set mail 2 in a much simplified form. 0.023 Fix bug with word_count() that counted extended words incorrectly. 0.023 Fix grand mal seiuzure bug that fixes /stub, most known crashes. 0.023 Fix implicit local variable declaration so it works 0.023 Rebuild 0.024 Deconstruct whois.c, roll changes into numbers.c from 4pre1-old 0.024 Remove ``SHOW_AWAY_ONCE'' feature, covered already by scripts. 0.024 Rebuild (release) 0.025 Fix bug with /dcc send being broken. 0.025 Fix bug with escapes not being allowed through (trusted_output = 1) 0.025 Fix bug with /set suppress being not alphabetical order 0.025 Fix some lamages with lastlog levels 0.025 Offer target nickname in /on 312, /on 319. 0.025 Fix bug with /stub alias overriding previous /alias 0.025 Add /ON STATUS_UPDATE and $status() features 0.025 Finalize the use of alloca(), include alloca.o 0.025 Fix insane lamage with ``underline'' display toggle 0.025 Fix stupid bug in streq(). 0.025 Rebuild (release) (broken) 0.026 Fix stupid bugs cascaded from bug fix in streq(). 0.026 Roll in new who queue, hold off ison and userhost queues for now. 0.026 Added new -line, -end flags for WHO 0.026 Added WHO query when you join channel, cache userhosts for channels 0.026 Change $userhost() to take arguments, use userhost cache. 0.026 Rebuild 0.027 Roll in changes for ISON queue 0.027 Utterly obliterate everything but userhost handling from whois.c 0.027 Fix memory leak with /help. 0.027 Rebuild (release) 0.028 Fix buglet with username handling and also with fencepost lamage. 0.028 Fix bug with /who failing to pop entry after joining channel. 0.028 Fix bug in glob_cmd_alias (Colten) 0.028 Fix bug with handling of numeric 433 0.028 Fix race condition with ons after removing them. 0.028 Rebuild (release) 0.029 Fix outputting of highlighted ignores. 0.029 Fix how header for /timer -list looks 0.029 Change io() to take descriptive arg, hope to trap odd loops 0.029 Commented out FD_SET macros that cause warnings under linux. 0.029 Worked over $numonchannel(), $onchannel(), $chops(), $nochops(), $key(). 0.029 Fixed bug where client would crash if server went down. 0.029 Add ``wait for'' support to do something synchronously. 0.029 Fix bug that add_to_window_list() shouldnt nuke win! (Colten) 0.029 doing_privmsg, doing_notice, etc reset while youre /wait'ing. 0.029 Rebuild (release) 0.030 edit.h -> commands.h 0.030 Cleanup in various header files. 0.030 Fix insane bug in glob_cmd_alias (Colten) 0.030 Deal with write() errors in dcc.c, gracefully (sug by Simon) 0.030 Should punt rather than fail if EBADF, ESEARCH on select(). ugh. 0.030 Allow users to hook /on 352 as well as /on who. 0.030 Fix bug in word_count not checking for EOS. (Colten) 0.030 Fix bug that prevented ``local a.'' from working 0.030 Fix really stupid bug/typo that broke /query /command 0.030 Add perl-compatable =~ and !~ operators. 0.030 Fix typo in ``away'' script that broke it 0.030 Fix bug with send_text sending privmsg to privmsg automatically. 0.030 Rebuild (release) 0.031 Fix bug with WARN_OF_IGNORES not being removed in vars.h 0.031 Finally got alists to binary search. 0.031 Fix $aliasctl(), stupid bug. 0.031 Doh! Forgot to take out new_free(&commence) in forcmd(). 0.031 Remove SUMMON and USERS from built in command list, unsupported. 0.031 Finish the new userhost queue. 0.031 Rewrite the USERHOST command to use built in caching if possible 0.031 Include -direct flag for USERHOST 0.031 Rewrite the userhost handler, much cleaner now. 0.031 Eradicate whois.c, whois.h once and for all (Huzzah!) 0.031 $X now uses server-returned userhost if possible. 0.031 DCC file checksumming now can cope with DCC_STORE_DIR. 0.031 Fixed command completion. 0.031 Rebuild (release) 0.032 Arick was unhappy that i removed -c, so i put it back. 0.032 Fix brain dead compiliation problems. 0.032 Fix bug in userhostcmd using wrong local variable (doh!) 0.032 Rebuild (release) 0.033 Check all meaningful write() and read() calls for failure. 0.033 Add /on set for dynamically extending /set capabilities 0.033 Remove usages of set_string_var and set_int_var outside vars.c 0.033 Add new set, /set BANNER controls how *** should look. 0.033 Change the error message for /who * 0.033 Change the two bugs in /userhost that corrupted the output 0.033 Fix it so /set can do argument completion again. 0.033 Fix bug that didnt consider aliases for auto-completion. 0.033 Fix logging so it expands twiddles in log filenames. 0.033 Fix bug with POBJECTS in Makefile (wyv) 0.033 Rebuild (release) 0.034 Fix uninit'd retval in function_onchannel (colten) 0.034 Fix save_message_from() and restore_message_from() (rb Colten) 0.034 Check set variables on startup for alphabetical order 0.034 This fixes the cant do /set notify_on_termination bug 0.034 Roll in function_winchan() from IceKarma, adapt as neccesary. 0.034 Fix find_in_server_list() so above works correctly. 0.034 Fix bugs found by -Wall 0.034 Fix /load so it honors /set input_aliases. 0.034 Deal with broken sunos4 vsprintf. Sigh. 0.034 Fix ``Ambiguous command'' error for unknown commands (rb wyv) 0.034 Fix bug in get_subarray_elements() that caused /foreach to freak out. 0.034 Roll back lsay(), broken broken broken, fixes DCC crashes. 0.034 Fix mail checking for /set mail 1. 0.034 Add /stack set (Colten) 0.034 Add /lastlog -max (Shiek) 0.034 Add $winchan() (IceKarma) 0.034 Add DISPATCH_UNKNOWN_COMMANDS (rb Kasi) 0.034 Rebuild (Release) 0.035 Fix bug with #var 0.035 "IRC log started ...." now includes time zone (rb wc) * 0.035 Add /set QUIT_MESSAGE, makes #define WINTRHAWK obsolete. 0.035 Remove #define HOP, not even I use it any more. 0.035 Fix DISPATCH_UNKNOWN_COMMANDS (rb Kasi) * 0.035 Fix bogus call to get_procss_index() (Colten) * 0.035 Fix for weird input-line-clearing-because-of-blank-on bug * 0.035 Fix Unknown command; message (semicolon was wrong) * 0.035 Change /set lastlog so its global. 0.035 Add /window lastlog to the old /set lastlog semantics. 0.035 Fix memory leak in switchcmd(). 0.035 Ok, ok, so main() returns int (Kasi) * 0.035 Fixed $remw(). (rb wc) * 0.035 Rebuild (Release) 0.036 Change pattern matcher so \'s dont quote normal chars. 0.036 More work on wserv.c, use inet sockets, much better, more portable! 0.036 Close semantic weakness for $# and $@. 0.036 Add $findw(). Should suck a good deal less than $rmatch(). 0.036 Extraneous comma in numbers.c (kasi) * 0.036 Rebuild 0.037 Added debug_new_free to help wc debug. 0.037 Added /on yell for wc. I still need to document this. 0.037 Efficiency patch in expr, handle [$0], handle [text], works great. 0.037 All new /if command, lots of new functionality. See UPDATES file 0.037 Rebuild 0.038 Add padding to MO. Why does it make it crash less? 0.038 Finally fix how nicknames are handled, much less lame. 0.038 Fix mail checking once and for all 0.038 Fix TOPIC once and for all. 0.038 Allow "IRC_SERVERS_FILE" environment variable for users 0.038 Rebuild (Release) 0.039 Use TIOCSTI to handle /type command while in dumb mode. (bleh) 0.039 Reworked parse_args() to handle env vars more gracefully 0.039 This fixes the "You have entered an invalid nickname" bug. 0.039 If youre running as a bot, send stdout to /dev/null. 0.039 PID and ttyname echoed on bootup. 0.039 Dont open /dev/tty -- only way to term_init is if stdin is already a tty. 0.039 Fall back to dumb mode (dont just die) if cant set up normal display. 0.039 Dont let last_window_refnum get stale, maybe /window killswap wont die. 0.039 Replace all signal handler defns with SIGNAL_HANDLER macro. 0.039 Replace all command defns with BUILT_IN_COMMAND macro. 0.039 Fix a whole multitude of drifting ptr bugs found by -fbounds-checking. 0.039 You can bet ill be looking for lots more, too... =) 0.039 Rebuild (Release) 0.040 Fix bug so USER when using virtual hosts doesnt choke. 0.040 New scandir, should be more portable... 0.040 Fix bug where two trailing *'s or %'s made a regex fail. 0.040 Fix up multitude of bugs in "nban" alias 0.040 Clean up after key bindings, prevents phantom memory leaks. 0.040 Fix /msg /command bug (Matt Carothers) 0.040 Im not seeing memory leaks with local vars any more.... 0.040 Fix memory leak in function_pattern. 0.040 Fix array overrun crash that happens when you get rejected from server. 0.040 "Bound" and "Waiting" channels are checked for correct server. 0.040 This fixes the "AUTO_REJOIN to the wrong bound window" problems. 0.040 Fix in remove_channel, ``channel'' might be ``tmp->channel'', kablooie! 0.040 This might be the mysterious "crash on /quit" bug. 0.040 Support added back for AIX 3.2.5, dont trust this forever. 0.040 Remove use of ANSI C function raise() because stupid sunos 4 sucks. 0.040 Send only one JOIN for all channels on reconnect (idea by orabidoo) 0.040 Header line for logs now shows time in "date" format, with timezone. 0.040 Include inet_aton from 4.4BSD for systems that lack it. 0.040 Fix /on yell, dont ask. 0.040 Rebuild (Release) 0.041 Fix scandir so it actually works. 0.041 Remove #define RESTRICTED -- duplicates #define EXEC_COMMAND 0.041 Fix bug when you do /away when not connected (rb wyv) 0.041 Total rewrite how AWAY handling is done, encapsulate. 0.041 Optimize how time_to_next_minute() is computed in normal case. 0.041 Add underlying support for cpu saver mode in irc.c 0.041 Add new /set's, CPU_SAVER_AFTER and CPU_SAVER_EVERY 0.041 Add new status line expando, %L, see below. 0.041 Add new /set, STATUS_CPU_SAVER, controls how %L looks. 0.041 Rebuild (Release) 0.042 Fix bug where "Not registered yet" was your nickname on dcc chats. 0.042 New script "utimes" which does some basic $utime() manipulations. 0.042 Fix get_server_name() when primary_server == -1. (Arnold) 0.042 Support for DALNet /part messages, (suggestion by Crackbaby) 0.042 Fix for /^msg nick text not being quiet (Colten) 0.042 Fix to m_strcat_ues() so /eval echo \ doesnt crash (Colten) 0.042 Fix so /eval echo $ returns empty string, not garbage (idea by Colten) 0.042 Added -H command line flag for virtual hostname (Crackbaby) 0.042 Fix bug so if (false) commands doesnt execute commands anyways. 0.042 Finish all new dgets(), all buffering in dgets() 0.042 Fix callers to dgets() to handle new semantics (IMPORTANT!) 0.042 Remove duplicate buffer in struct server, dgets() buffers all now. 0.042 Remove duplicate buffer in struct dcc, dgets() buffers for all now. 0.042 Fix bug doing a memory leak in set_waiting_channel (fb Colten) 0.042 Found that really annoying memory leak with local vars (hurrah!) 0.042 Fix bug where send_text() reset message_from even when no msg. (Colten) 0.042 Fix last_arg() so quoted args handled properly, fixes $revw(). 0.042 Fix memory leak in function_pattern. 0.042 Remove term_ALDL_scroll from term.c, unused. 0.042 Rebuild 0.100 Release 0.200 Fix -H, add help description (Matt) 0.200 Fix so definitions for alloca() dont choke (Crowman) 0.200 #define strerror shouldnt have ; at the end (Scott Jann) 0.200 Remove two spurious malloc's in TruncateAndQuote. 0.200 Changes to strformat() and double_quote() to remove spurious malloc's. 0.200 Remove spurious third arg to main(), return dummy value from main(). 0.200 Fix (apparantly not broken) possible alloca overrun in input.c 0.200 Attempt to more gracefully handle seg faults in irc_exit(). 0.200 Clean up stuff malloced by windows on exit 0.200 Rewrote the man page just for the halibut. 0.200 Remove unused rfgets(). 0.200 Fix most bogus uses of feof(), fix fgets(), fread() calls. 0.200 Fix bug in dgets() causing infinite looping lossage 0.200 Fix problem with outbound DCC CHATs going to wrong window. 0.200 Fix crash for boneheads who /set -banner ;-) (Crowman) 0.200 In /exec, close unwanted fd's right away, not after dup2()s. (Colten) 0.200 Support for undernet's modified list syntax (Matt) 0.200 Rebuild 1.000 Release