1EPIC5 Projects, Bugs, and other Errata: 2 3KNOWN ERRATA (eg, bugs, or unresolved requests): 4------------------------------------------------ 5<none> 6 7EPIC5-3.0 MAJOR PROJECTS 8------------------------ 91. Python support that doesn't suck 102. Saving and restoring client state across restarts 113. Robust, no compromises, ZNC support 124. Reboot of /set load_path, /load, and namespaces 135. SQLite support 14 15MEDIUM-TERM PROJECTS 16-------------------- 17* Need to have a script that implements per-channel FiSH support 18* There needs to be an /on switch_query for wuf/sjhoran 19* What about scrolling back to some point in time? 20* What about a facility to do auto-off-hold-mode ? 21* wuf says that fred!user@machine.domain.com.au should not be 22 *!*user@*.com.au but instead *!*user@*.domain.com.au 23* There should be a fake level for "channel stuff" 24* Curse would like an outbound protocol queue to avoid flooding the server 25* Larne wants syntactic word extraction like $foo{3} or $foo{1,4} 26* Howl wants to be able to have per-window /input and /input_char 27* Howl would like "advanced scrollback" searches, like hit counts 28* I think maybe i should expose a better scrollback interface? 29* Should be able to change LINE value in windows (for howl) 30* Howl would like to be able to replace any line of scrollback via windowctl 31* Kitambi would like to be able to rewrite lines after they've been displayed. 32* Should any commands be #ifdef'd out at compile time, as opposed to just 33 being replaced with error-generating shims? 34* /Foreach should work with local variables. It can't right now because 35 of the challenge of indicating which elements are from local variables. 36* Harz would like a way to do /bind -default for just a single binding. 37* /PAUSE does not save/restore context, and it should. 38* /window maximize + new status expando when a zero-height window gets output 39 40[I moved the old list to the file "WISHLIST" to keep this file short] 41 42[See http://www.epicsol.org/PROJECTS for things to come in the future] 43[See http://www.epicsol.org/CHANGELOG5 for things that changed in the past] 44 45THE CHANGELOG SINCE THE LAST RELEASE: 46------------------------------------- 47* Patch from twincest to fix build on solaris 48* Don't honor queries for WALLOPS (requested by opers) 49* Conditionalize <ieeefp.h> per twincest's fix. 50* Clear RUBYDOTOH if ruby is found but it isn't usable (rb Zoopee) 51* Rewrite checks for (intmax_t) for systems w/o strtoimax(). (rb JailBird) 52* Define NSIG as _NSIG or 32 if it's not defined (rb JailBird) 53* Broaden what you can specify for the server "proto" field (see UPDATES) 54* Fix figure_out_address() to properly identify a server name 55* This fixes /ignore user@host.com which was lamely broken. 56* Make /window channel output all channels in the window 57* Don't call update_all_status() if /set -status_clock (by Oliver Fromme) 58* Comment out strtol() compat stuff, causing people problems. 59* More graciously handle snprintf() returning -1 (rb twincest) 60* Do not use /usr/include/ep on hpux 61* Mark lastlog items as "dead" and check for them to avoid dangling ptrs 62* Handle (graciously) when /set scroll_lines is > size of the window. (rb CE) 63* Properly handle remove_lastlog_item() for the very last item. 64* Fixes /eval defer window new kill;defer window new;defer window kill_others 65* Add $hookctl(ARGS <recursive> <args>) allows you to replace $* in /on. 66* Add $hookctl(USERINFO <recursive> <info>) allows you to set dynamic info. 67* Don't lamely malloc_strcpy() over non-malloced strings in hookctl. 68* Add $iconvctl() to control iconv stuff. (See UPDATES.) 69* Add $xform(iconv +<iconv id>) functionality. (See UPDATES.) 70* Fix bug where /window number could lead to confused lastlogs 71* Generalize base64 encoding so it doesn't hardcode the base64 string. 72* Add $xform(+FISH64 ...) which does FiSH's base64 encoding. 73* Make a better test for embedded perl support by calling SvTRUE(). 74* Fix /bind -defaults so it actually removes all keybindings first. doh. 75* Fix /window double so it actually shows you the current double status. 76* Make the expression error for too many operands output the expression. 77* Rewrite the iconv() configure checks to deal with libiconv's #define's. 78* Rewrite the strtoimax() tests so they don't fail lamely to detect (intmax_t) 79* Rewrite the perl and ruby runtime configure tests so they work right with gcc 80* Fix various warnings revealed by gcc warnings 81* Make a very preliminary attempt to write some fish decoding stuff. Not Ready! 82* Fix for configure to handle perl's non-existance (kreca) 83* Fix wserv4 dependencies so you can do make -j4 on multi-cpu. 84* Rework the ruby checking in configure so it builds on freebsd-7 85* Add CTCP FISH support (this is _not_ fish support!), see UPDATES 86* Make an initial stab at proper support for FiSH's base64 converter. 87* I took the "fish64" entry out of $xform() for now while it's broken. 88* Capture stdout of ruby scripts and send it to an epic window. yay! 89* This means you can do regular old 'puts' in ruby script and it'll Just Work. 90* Finish $xform() for +fish64 and -fish64, verified against actual FiSH code 91* Try to make the perl configure check more robust for non-working perls. 92* Start a project to convert things to use transform_string(). 93* Fix show_lastlog() to return the rewritten result (so -mangle works) 94* Actually de-orbit [en|de]code(). 95* Create transform_string_dyn, a pleasant api in front of transform_string. 96* Create a bunch of global vars for transform_string to avoid lookups. 97* Add hints to how big destination buffers should be for xforming. 98* Fix transforms by initializing the expander and overhead items. 99* Make various sanity checks for transforms to fix amn. 100* Ensure all the users of transform_string_dyn are prepared to handle NULLs 101* Ensure all the xform encoder/decoders can handle zero dest buffer sizes 102* Add code to configure to fail if OpenSSL is not found. No turning back! 103* Split the notion of "iv size" and "blocksize" in crypto support 104* This is needed because FiSH does not use an IV, being an ECB cipher 105* It's also needed because the notion that the IV *must* be blocksize is lame. 106* Add notion of "trimmable bytes" to end of crypto message 107* Again, this is for FiSH, because it doesn't trim bytes on last packet. 108* Support for assissting valgrind in helping us find memory leaks (caf) 109* Fix memory leaks found by valgrind (caf) 110* GC function_[en|de]code() and function_sha256 (superceded by $xform()) 111* GC unused [en|de]code(), enquote_it, dequote_it, and dequote_buffer(). 112* Fix display calcs when adding 1st window to 1st screen 113* This allows you to change 'status.number' for default # of status lines 114* Start tracking timestamps for scrollback items 115* Full generalization of scrollback/scrollforward functions 116* Implement scrollback/forward based on lines 117* Implement scrollback/forward based on regex 118* Begin thinking about implementing scrollback/forward based on time (not done) 119* Windows that are hidden from birth have a fake height of 24 lines 120* This fixes a bug where doing /window double on hold_slider 0 in a 121 never-visible window caused it to get stuck in an infinite loop. 122* Add new scripts, "help.irc", "history.rb", "locale", and "tabkey.sjh" 123* I need to document these in UPDATE! 124* Add /exec -closeout, to send EOF to the exec'd process 125* Add $dccctl(FD_TO_REFNUM <fd>) to convert $connect() to a refnum for dccctl. 126* Remember $dccctl(GET refnum WRITABLE) detects a connected socket, by rule 127* Change /on 322 handler so output always goes to OTHER, not to the window. 128* Add an /on switch_query, but it's incomplete, so don't use it yet. 129* Rewrite malloc_sprintf() so it can be used by do_hook_internal(). 130* Revamp do_hook() so it returns the final value of $* 131* This will allow future use of do_hook() to rewrite text. 132* Don't test for /usr/local/lib/libiconv.a because os x doesn't have it 133* Prototype malloc_vsnprintf(). 134* Don't test uninitialized variables, you dummy. 135* Have to be more aggressive using va_copy() for 64-bit sake 136* Add /xeval -n {...} which un-does the ^ operation. 137* Fix the 'ambig' script to use /xeval -n. 138* Fix the command mode support in 'builtins' to use /xeval -n 139* Reorganize open_log(), add support for double quotes around filenames 140* Verify that logfiles are now working as I Hope they would. 141* Make 'global' load ambig and newnick, since those recently came up 142* Change a variable name to avoid conflicts with a global symbol 143* Create a stub function to calculate how long the input line could be. 144* Fix a bug with /who -real (i forgot who reported this, sorry!) 145* Fix the redonkulous spurious errors when using $convert(). 146* Add a configure check for strtoimax() being a macro (ugh) 147* Apparently strings in configure are supposed to be [quote]d. 148* Check for strtoimax() separately in inttypes.h and stdint.h 149* This hopefully fixes the build on hpux 150* Add @E<win> as a /msg target so you can /msg a window. 151* Fix lame compile error in wserv() if we need yell(). 152* Improve the test for libarchive in configure 153* Fix /bind -default because it whacked the bindings themselves. doh! 154* Normalize the copyright notice on scripts BlackJac wrote, per his request 155* Fix 439 handling for inspircd (rb twincest) 156* Add the ability to /log server all or /log add all for server logs. 157* Change the configure test for perl from AC_TRY_LINK to AC_TRY_RUN 158* Change string insensitive comparisons so "SERVER" doesn't match "SASAFRASS" 159* Bump up the "overhead" bytes for xform()s to multiples of 8 per zlonix 160* Support /log server ALL and /log type server add ALL to log all servers 161* Fix brain-o that I missed -- strnicmp() consumers must use FULL STRINGS! 162* Fix more. You'd think I was not paying attention or something. 163* Don't permit /xecho /flag because that's just useless 164* Fix two dcc locking bogons that i discovered by accident. 165* Revert the string insensitive comparison changes for now. 166* Use PRIdMAX and PRIuMAX for printing (intmax_t), for hpux, or larne 167* Fix my brokenness of my_stricmp(). Time to go hide under a rock. 168* Fix the bug where the right indicator appeared when it should not. 169* Add the 'logman' script which does per-server, and per-channel logging 170* Handle inspired's BBC 351 numeric, for larne. 171* Fix bug with /encrypt complaining "X is not a multiple of Y!" (rb zlonix) 172* Add a bunch more scripts I've been sitting on that were contributed. 173* Add 'cycle', 'set_color', 'ban', and 'speak.irc' scripts. i need to doc them 174* Create some internal funcs to allow updating a server desc on the fly 175* Allow add_servers() to update server descriptions 176* Allow /server -add to update server descriptions 177* Allow /server -update to update server descriptions 178* Allow plain old /server to update server descriptions 179* Allow $serverctl(READ_FILE filename) to update server descriptions 180* Add $serverctl(UPDATE refnum stuff) to update server descriptions 181* Allow /window server to update server descriptions 182* Add $windowctl(GET x SERVER_STRING) returns last good /window server value 183* Release epic5-1.1.1 (commit 1631) (Prolixity) 184* Fixes so /server <group> doesn't clobber <host> with <group> (rb howl) 185* Add support for /server refnum:<other flags> which I noticed 186* For example, this means, /server 0:type=irc-ssl now works! yay! 187* Add special check for OS X (Zach) 188* Fix configure check for perl so it doesn't segfault. 189* Fix configure check for iconv, so it doesn't bork the freebsd port 190* Iconv support really is mandatory now! I mean it! 191* Fix transform_string_dyn(). How did nobody catch this?? 192* Add a function findchar_quoted() like strchr(), but honors \.s 193* Use this in server descriptions to find the unquoted : after a PASS. 194* This means you can \ a : in a password. yay! 195* Nuke the "URLPASS" support. Let us never speak of this again. 196* Two changes to timer.c from caf. 197* Fix bugs found by --with-warns. 198* Add a check in configure for -fno-strict-aliasing; could be used with -O2? 199* Fix /parsekey reset_line so it sets the cursor to the end (for howl) 200* Add /on unknown_set for howl (see UPDATES) 201* Fix set_input(), which fixes history. yay! 202* When /dcc causes nonblocking connect, tell the user so they know we tried 203* Add 'c' option to $sar() and $msar() (see UPDATES) 204* Revamp substitute_string() so $sar() and $msar() work as intended. 205* Add a NONE_xform const to do null transformations. 206* Release epic5-1.1.2 (commit 1638) (Trencherman) 207* Fix build so it builds on mac os x, with or without macports perl. 208* Fix brain-dead typo with /on unknown_set support 209* Rewrite /bind transpose_characters in response to it being borked. 210* Fix configure support so valgrind can be used (caf) 211* Fix crash when you output to a window while it's being killed (caf) 212* Fix memory leak with initialization of hook stuff (caf) 213* Fix memory leak with realnames when a server is destroyed (caf) 214* Change /bind previous_word and next_word to honor /set word_break 215* Apparently the lastlog output stuff wasn't guarded properly by show_lastlog 216* Refine fix for crash when you output to a window while it's being killed 217* Use the length passed to write_server_ssl(), that's what it's there for (ce) 218* Avoid null derefs with OMATCH/IMATCH/PMATCH in serverctl (ce) 219* Fix /allocdump so it doesn't crash without a filename (ce) 220* Fix for a bug that stopped "/xquote -u" inserting null chars. 221* Fixed $serverctl([gio]match ...) to not return deleted servers. 222* Improve performance in the main select loop. In practice, MAY require minor script alterations. 223* Save the errno from a failed $dbmctl(OPEN) for $dbmctl(ERROR -1) 224* Add $channelsyncing(#chan server) for tjh. 225* Make $info(o) show "S" if OpenSSL was compiled in -- useful for crypto 226* When starting /dcc nonblocking connect, don't worry the user with noise 227* Display the original /window arglist on any syntax error. 228* Remove ADD_STR_TO_LIST macro (caf) 229* Add "from" window to adjust_context_windows, windows are killed (caf) 230* Fix from_server getting lost in vsyserr (caf) 231* Fix null deref in umode handler (caf) 232* Add %G status expando, to return 005 NETWORK (caf) 233* Friendlier ZNC support changes follow here... 234* Allow multiple servers on same (host,port) with different passwords 235* For now, neutralize adjust_window_refnums() until a proper fix (rb tjh) 236* Caf noticed I fixed the wrong bug. oops! 237* EPIC5-1.1.3 released here (Feculance) (Commit ID: 1656) 238* Add $xform("+LEN" ...) which turns anything into a length (for ciphertext) 239* Fix $xform("-FiSH" ...) for compatability with other implementations. 240* Don't accept EAGAIN as a valid error code for connect (caf) 241* Fix infinite loop bug with /userhost (caf) 242* Fix memory leak with /who in certain error conditions (caf) 243* Rewrite isonbase() so it handles longer nicks correctly (caf) 244* Implement /lastlog -ignore, which shows everything EXCEPT the pattern. 245* Add /xeval -nolog which suppresses logging for that command. 246* Implement $dccctl([SG]ET refnum PACKET_SIZE num) for packet-buffering 247* Implement $dccctl([SG]ET refnum FULL_LINE_BUFFER [01]) for forced line buff 248* Implement $hookctl(CURRENT_IMPLIED_HOOK) for implied on hooks to know context 249* Add "expire timeout" to lastlog entries 250* Create do_expire_lastlog_entries() which wipes expired window output 251* Add functions to "merge" logfiles/channels/output/timers to a new window 252* Remove the scripted COMMAND_MODE feature, which interferes with /window merge 253* Add /xecho -E which causes window output to get away after some seconds 254* Add /window merge which collapses two windows into one and kills the other 255* window->lastlog_size must be maintained for both giver and taker! 256* Try to fix some infinite loops when cleaning up window lastlogs. 257* Add fn name to many panics. 258* Make /on set only throw once if the user types the canonical /set name. 259* Automatically close all $dbmctl() open files on exit. 260* Fix /lastlog -context (but only for the normal case. -reverse comes next) 261* Update_server_from_raw_desc() was missing a clear_serverinfo(). 262* Improve error handling for /hostname errors. 263* Add /xdebug no_color which turns off color support at the lowest level. 264* Fix /lastlog -reverse -context, all done now! 265* Don't allow $repeat() or $pad() to request strings > 1MB. 266* Have the malloc-failed panic tell you how many bytes were requested. 267* Add a feature to check for unreleased message_from contexts in main(). 268* Fix two missing message_from leaks in server handler. 269* Fix the lastlog trimming, an infinite loop (caf) 270* Increase detail when debugging output contexts (caf) 271* Reformat some code, fix more display context leaks (caf) 272* EPIC5-1.1.4 released here (Adumbration) (Commit ID: 1667) 273* Fix lock-ups when killing windows by refining the safeguard 274* Create slurp_elf_file/string_feof|fgets|fgetc, to front-end ELF files 275* Change /load to use the string front-end functions 276* This allows /load to work on pure strings, and decouples from files 277* Create recode_with_iconv() to convert a string using iconv() (for /load) 278* Add /load -encoding which lets you specify the encoding of the file 279* This means you can load iso-8859-1 encoded files on a utf8 terminal! 280* Fix various warnings from gcc -Wall 281* Add a new /set DEFAULT_SCRIPT_ENCODING -- will be used soon! 282* Call setlocale(LC_ALL, "") at start of main() to get locale info 283* Fix slurp_file() (caf) 284* Fix make installman, man page filename had changed 285* Begin a major project to fix issues suggested by clang (Ancient) 286* Fix xecho as suggested by clang 287* Check retval of set[ug]id() just because it's good style 288* Make sure "MAXPATHLEN" (bsd) is always spelled "PATH_MAX" (posix) 289* Fix while as suggested by clang 290* Re-comment translate_user_input() based on suggestion by ce 291* Move add_wait_prompt() to a new home 292* Fix whoreply() as suggested by clang 293* All of the below were suggested by clang. 294* Fix set_screens_current_window() and search_for(). 295* Fix a "use-after-free" when realloc() fails 296* Fix or paper over string-overruns for a malformed globs 297* Fix a memory leak when opening a compressed file fails 298* Fix a corruption of from_server in vsyserr() 299* Check the param to denormalize_string() 300* Slurp_file shouldn't call stat() or check its retval 301* Denormalize_string() should check its param 302* And so should p_killmsg(), and dishonor kill msg if its malformed. 303* Fix /while, /topic, and $repeat() in case of malformed arguments 304* All of the above were suggested by clang 305* More fixes suggested by clang that I'm too annoyed to list out. 306* Even more fixes suggested by clang (most related to theoretical null derefs) 307* Even more fixes... 308* Rewrite /window move and /window move_to to make clang happy 309* One final batch of updates by clang.... 310* Rewrite lastlog moving funcs to use windows ptrs instead of refnums (caf) 311* EPIC5-1.1.5 released here (Gallimaufry) (Commit ID: 1683) 312* Add /QUEUE -RUNONE 313* Caf and jm confirmed that ircu doesn't use 307 for USERIP any more. 314* ignorectl(DELETE) is not silent and it should be. 315* To satisfy fedora packaging rules, accept DESTDIR for 'make install' 316* Many printf() format fixes (caf) 317* Many changes clang suggested 318* Fix "topicbar" script to double quote "s for now. 319* Fixed-skipped windows don't get channels from /window kill (unless no choice) 320* Add $windowctl(REFNUMS_BY_PRIORITY) to give you windows by current-ness 321* Add /lastlog -reignore (ce) 322* Add $logctl(NEW) 323* Add $logctl(LAST_CREATED) 324* EPIC5-1.1.6 released here (Kakorrhaphiophobia) (Commit ID: 1693) 325* Begin a big project to decouple status bar generation from window refresh. 326* Create $status_oneoff() which lets you press a status bar on the fly. 327* Fix configure and the build so it works with ruby 1.8/1.9/2.0 328* Update the help script to work with the new website (credit <fill in here>) 329* Make many changes based on suggestions by clang and scan-build 330* Make the configure checks for ruby support more ruby executable names 331* A few minor changes to the history.rb script for no reason 332* Add /input -- to end arg processing so your prompt can start with hyphen 333* Fix a typo bug that kept the correct status bar from being regen. 334* Fix another issue with /window server that caused status not to be updated 335* Add a VERY TEMPORARY /debuglog command for my use. Will go away soon! 336* Fix status bar update problems (sigh) 337* Update status bar from set_server_005s, so %G updates right away. (caf) 338* Larnifications for incoming nicknames (caf) 339* Add %{4}S status bar expando, always returns full "itsname" 340* When checking Maildir for /set mail 1, ignore subdirectories (rb zlonix) 341* Change string_fgets() to return the number of bytes read 342* Always check servers at startup, even if user did -S. 343* (They might have done /server in their startup) 344* Change file_size() to use normalize_filename(). 345* This allows MAILDIR to support ~-expansion (ie, ~/Maildir) 346* The sender can be omitted (such as with "NOTICE AUTH"), so don't check those 347* New xmsglog script from zlonix 348* Fix trimming support for $xform(). Plus, FISH should do trimming. (rb zlonix) 349* Fix maildir support for /set mail 1 (help by zlonix) 350* Update tabkey.ce from fudd 351* Update xmsglog from zlonix 352* Two new scripts, sasl_auth and idlealert from zlonix. 353* EPIC5-1.1.7 released here (Kainotophobia) (Commit ID: 1705) 354* Updated massmode from zlonix. 355* All the stuff below are round 1 utf8 support for input line 356* New file, wcwidth.c, utf8<->unicode conversion, unicode column counting. 357* Revamp /INPUT system to be utf8 aware. callback 2nd arg is now const. 358* Specifically, save the state of the input line across /INPUTs. 359* -- This is stub code. needs to be completely fleshed out. 360* Reformat keys.c so I can work with it easier 361* Only bytes < 127 can now participate in binds. >= 128 are SELF_INSERT. 362* I think the keybinding system can grow 'namespaces' which might be cool. 363* The TRANSPOSE_CHARACTERS keybinding has passed away quietly. 364* New keybinding DEBUG_INPUT_LINE to help me 365* Revamp the edit_codepoint() system to work with unicode code points 366* Screen input now collects bytes until it gets valid utf8 code points. 367* Collect all of the input line data structures into Struct InputLine 368* Give each screen it's own inputline with an eye towards stacking them. 369* The ability to 'fake' input in dumb mode has passed away quietly. 370* Completely revamp input.c to work with inputline data structure 371* Change input line so users operate on "logical characters" 372* Inputline data structure maps "logical characters" to bytes in input buffer. 373* It's almost too overwhelming to describe specific details. 374* Basically the input system accepts unicode code points, and stores in utf8. 375* Things like cursor movement, column counting, side scrolling all Just Work. 376* Even things like cut buffering work. 377* HOWEVER -- it seems this stuff doesn't work in GNU screen. can't fix this. :/ 378* Internal function strext2() allows me to cut substrings out, for input buf. 379* Fix input_delete_character(), it forgot to call retokenize_input() 380* Fix term_inputline_putchar() so it doesn't mangle 0x9b (valid utf8 char) 381* Fix $curpos(), sort of. Does this return byte offset or column offset? 382* It used to be the same, but now it's not! 383* InputLine.buffer_pos isn't used any more. Whack that. 384* Test every keybinding, fix the ones that are broken. 385* Fix handling of highlight chars 386* Add "number_of_logical_chars" to input line so we can boundary check eol. 387* Error if you try to /bind a high bit char -- that's illegal now. 388* Test and fix composed characters (for mac os x) 389* Teach the normalize_string, prepare_display, and output_with_count about utf8 390* Since utf8 parsing is "consumptive", some utility funcs changed too 391* Column counting/line wrapping in the display works correctly now. 392* Fix read_color_seq(). 393* ... again. 394* Fix screen prompts so they can recurse, and restore previous state! 395* Fix line wrapping bug that zlonix found. 396* Get column counting working for the status bar (rb zlonix) 397* Re-implement /input -noecho 398* Create a utf8 string checker 399* Add "encoding=<stuff>" flag to /server descriptions to act as default. 400* EG, /server host=irc.foo.com:encoding=ISO-8859-1 401* Run every non-utf8 string from the server through iconv using def encoding 402* Extend $chr() to accept U+xxxx strings 403* Add function $unicode() converts input into U+xxxx strings 404* Add recode.c, to hold stuff regarding /ENCODING and encoding xlates 405* New command, /ENCODING, declare encodings for targets. only "console" now. 406* Translate user input via /encoding console setting, defaults to utf8. 407* Translate screen output to /encoding console setting 408* Non-utf8 users now appear as utf8 users to irc! 409* UTF8 users now appear as non-utf8 users to non-utf8 epic users! 410* Automatically recode undeclared non-utf8 scripts using /encoding scripts 411* Add Emojis (unicode 6) to the column counting code (rb Kitambi) 412* Set /ENCODING CONSOLE automatically to nl_langinfo(CODESET) from LC_ALL. 413* If the default codeset is "US-ASCII" then it's changed to ISO-885-1. 414* In translate_user_input() try to detect utf8 typers using non-utf8 encodings 415* Tell user if we're recoding a script at /load time. 416* Fix slurp_elf_file() it was leaving a 0xFF at end of file, confusing /load 417* Don't bind ^T to non-existing TRANSPOSE_CHARACTERS keybinding. 418* Bump MAXPARA from 15 to 20 for RusNet 419* Fix the UTF8 detector for user input 420* Fix cursor left when switching zones to the left. 421* Allow /set word_break to include high bit code points (rb fusion) 422* To work around RusNET, forgive truncated utf8 sequences at the end. 423* Fix /server , so it doesn't null deref. 424* Add /lastlog -this_server and /lastlog -global for zlonix. 425* Fix $windowctl(NEW) by forbidding status updates during window creation. 426* Default /ENCODING CONSOLE to the user's locale, not to utf8. 427* Re-implement /set allow_c1_chars for input line, display prep, and output. 428* Fix diagnostic output of /encoding 429* Comment out some stuff in term.c that isn't being used. 430* Re-implement status repeat-char-fill for utf8. (rb fudd) 431* Fix /xtype -l to be UTF-8 aware. (rb zlonix) 432* When status updates are suppressed, make a note if an attempt is tried 433* When status updates are permitted again, do an update_all_status() if defered 434* Make /set lastlog do a scrollback redraw to "dispose" of extra lines 435* Make /set lastlog refuse to set to a value < twice the biggest window. 436* However, doing /set lastlog 0 WILL delete everything and clear every window. 437* Have configure auto-detect your "local" directory (/usr/local|opt|/usr/pkg) 438* Have configure use the auto-detected local directory. 439* Reformat some parts of server.c 440* Change the current window whenever we're processing server stuff. 441 -- This was withdrawn because it was very unpopular. 442* Don't allow /window lastlog to set the lastlog too low. 443* Add support for ITALICS (^P) (\020), including ITALIC keybinding. 444* Add support for 256 colors. I should document all changes but i don't wanna 445* Document all the places where encoding translation should happen. 446* De-harshen some comments I wrote 20 years ago in anger. 447* Fix colors with high bit set. (rb Hellfire) 448* Change ^X so it only supports two hex digits 00-FF 449* Fix QUOTE_CHARACTER (^Q) 450* Lots of internal work to implement back-end of /encoding. 451* Add decide_encoding() to evaluate rules and pick one for non-utf8 stuff. 452* Add serverinfo_matches_servref() internal to decide if (si) works for a serv. 453* Add outbound_recode() internal to translate messages we're sending out 454* Add inbound_recode() internal to translate messages received from irc. 455* Add recode_with_iconv_t() internal function for the above. 456* Rewrite (inbound_recode()) privmsgs, notices, topics, all this good stuff 457* Rewrite (outbound_recode()) msgs, notices. 458* Withdraw the /server -encoding feature. 459* Add /xdebug recode to debug recoding rules. Help you help me! 460* Review the recode code and leave comments for future improvement 461* Don't allow the user to delete the magic recode rules. 462* Fix $tobase(<base> 0) to always return 0 instead of empty string. 463* Fix $"", caused by accumulator in translate_user_input not being cleaned. 464* Fix bug with /encoding found by zlonix. 465* Make serverinfo_matches_servref() honor 005 NETWORK value. 466* Add /encoding support for 311, 314, 322, 332, and 352 numerics (*gulp*) 467* Leave notes to add support for outbound topic/kick/part/etc. 468* Add /encoding support for CTCPs (reported by zlonix) 469* Fix /encoding support for PARTs (found by zlonix) 470* Add /encoding support for outbound KICKs/TOPICs/etc 471* Create internal rfc1459_any_to_utf8 to preprocess before parse_server(). 472* Tokenize recode rule "target" at create time instead of every evaluation 473* This is part of a larger code cleanup for recode.c 474* Remove the per-message handling for /encoding since it's done globally now. 475* Change vsend_to_aserver so it does recoding. 476* This means outbound doesn't honor /set translation any more 477* This requires send_to_server_with_payload() since payloads already recoded 478* Fix typo causing payload not to be recoded properly. 479* Missing a break. d'oh. 480* Outbound messages should not be recoded if they're already utf8. 481* Yes they must be! duh. Square all this away with zlonix. 482* Fix send_text so it doesn't send non-utf8 text through /on send_msg 483* Finnese invalid_utf8str() so it doesn't truncate partial cp's for non-utf8s 484* Warn if we try to do double-outbound-recoding 485* Be more sensible about handling string lengths in vsend_to_server()s. 486* Add $^*var to 'quote everything' (except letters and digits) 487* When recoding inbound, move server|payload part out of buffer first. 488* Don't double decode the ircname in whoreply. 489* Rewrite strformat() to be utf8 aware. This fixes $[9]var 490* Rewrite $pad() to be utf8 aware. 491* Allow char-based /set's to hold a utf8 code point (for /set pad_char) 492* Fix typo in check_xdigit() that borked 256 colors 493* Fix $status_oneoff() to repeat with space if status bar is empty string. 494* Don't -1 the line len when passing to prepare_display(); already adjusted! 495* De-confuse ctcp_type and sed_type in the /encrypt stuff 496* Make encryption work again, with encoding (but not with recursive ctcps) 497* Write special handling for (defering) recoding of CTCPs until decrypted 498* Rewrite $left(), $right(), and $mid() to be utf8 aware. 499* Make /FEC utf8 aware. 500* Fix a double recode with outbound ctcps 501* Extend send_text() with a new flag saying if text already recoded 502* Don't double-recode ctcp's! 503* Inbound recoding of CTCPs must happen *before* processing, not afterwards 504* This fixes /encode + /encrypt + /me 505* Convert $strlen() to utf8-aware, many others to follow 506* Add new flag "CTCP_NORECODE" which tells do_ctcp not to recode first. 507* This allows non-encryption ctcps to automatically be recoded. 508* This fixes /me yet again. 509* Create internal cpindex() and rcpindex(), like [r]sindex(), but works on CPs 510* Adjust internal chop() to work on code points. 511* Make a first pass to choke if /encoding argument is not valid locale. 512* Write some more internal CP based functions in wcwidth.c 513* Rewrite/ensure these functions are UTF8 aware: 514 strlen chop index rindex indextoword wordtoindex maxlen 515* Write a half-finished reimplementation of $fix_width() that is commented out 516* Fix rcpindex() when the search char isn't in the string 517* Fix search_for() which makes $before() and $after() utf8 aware. 518* Eliminate usage of internal sindex() -> strchr(), strpbrk(), or cpindex(). 519* Rewrite/ensure these functions are UTF8 aware: 520 strip split before after curpos 521* At startup, create a (locale_t) that points to "en_US.UTF-8" for ctype funcs 522* Create internal mkupper_l and mklower_l to convert codepoints to upper/lower 523* Rewrite internal upper()/lower() to use mk(upper|lower)_l. 524* This makes $toupper() and $tolower() utf8 aware. yay! And other stuff! 525* Implement internal utf8_strnicmp and use it for my_str[n]icmp. 526* This means things like case insensitive aliases work for non-english! yay! 527* Rewrite/ensure these functions are UTF8 aware: 528 toupper tolower 529* Add sanity check to next_code_point() to warn if i do something stupid. 530* Revise next_in_div_list to take CP so $[m]sar() can take arbitrary delims 531* Revise substitute_string to handle case insensitivity as utf8 aware. 532* Rewrite/ensure these functions are UTF8 aware: 533 reverse rest pass sar msar 534* De-emphasize toupper() and tolower(), which are not utf8 aware 535* Comment out $shiftseg() until I learn more about it (needs utf8) 536* Rewrite/ensure these functions are UTF8 aware: 537 center tr chrq insert 538* Rewrite/ensure these functions are UTF8 aware: 539 substr rsubstr 540* Fix many warnings suggested by the compiler 541* Zlonix updated idlealert, sasl_auth, xmsglog, and added new_lastlog. 542* I had added contrib/utf8.c and regress/test_xform3 regress/test_xform4. 543* Fix many warnings/bugs suggested by clang's static analyzer 544* Add sanity checking for encodings, so we can warn the user 545* Specifically check the locale encoding for sanity, use ISO-8859-1 as fallback 546* Warn the user if /encoding encoding is unusable -- and don't switch over. 547* Put in references to two wiki pages I need to document 548 http://epicsol.org/encodings_and_locales 549 http://epicsol.org/encoding 550* Server names can contain '*'s. (rb zlonix) 551* Fix /topic when you don't supply a channel (rb zlonix) 552* EPIC5-1.1.8 released here (Atavistic) (Commit ID: 1775) 553* Fix from freebsd to avoid checking yes(1) as ruby executable in configure 554* Create functions to enumerate what should be documented in wiki 555* This is exposed via undocumented $help_topics() function. 556* Explicitly set LC_NUMERIC to "C" because otherwise math parser breaks 557* Reset /window activity when a window becomes current (as in /window notified) 558* Create stub for $encodingctl(), and spec it, but not implemented yet. 559* Create internal time_since_startup() function (for eventual load logging) 560* recode.c needs to include <xlocale.h> because of newlocale(3). 561* Add new "source" flag to recode rules, to tell user where rule came from. 562* Implement $encodingctl(). 563* RecodeRule->magic wasn't being set correctly. 564* Output the recode rule refnum for /encoding 565* Rewrite internal fix_string_with(), with new chop_[final_]columns() funcs. 566* Extend $fix_width() to support 'c'enter and 'r'ight justify, and UTF8 aware. 567* EPIC5-1.1.9 released here (Desquamation) (Commit: 1780) 568* Fix compile error in function_help_topics 569* EPIC5-1.1.10 released here (Desquamation) (Commit: 1781) 570* Updated sasl_auth (v1.2) from zlonix 571* Fix input lines being blank on non-main screens (set output_screen) 572* Fix not being able to chain /INPUT's together (reset input line before callb) 573* DO NOT set the window when handling server (very unpopular) 574 (* Change the current window whenever we're processing server stuff.) 575* Rewrite add_window_to_screen/remove_window_from_rewrite 576* Rewrite recalculate_windows. 577* This fixes screen corruption when creating wins or shrinking your screen. 578* Fix a bug where UPDATE_STATUS could get ignored (introduce FORCE_STATUS) 579* Remove /set translation and all its stuff. 580* Don't unforce the status bar until it's actually been redrawn. 581* Set a window's screen before hiding it on /window new_hide (rb fusion) 582* Fix rogue semicolon. 583* Fix a null deref in creating new window when all other windows are fixed 584* Fix some bugs that clang static analyzer found 585* Fix where /set -continued_line led to strange denormalize behavior (rb Tilt) 586* Add tmux support for /window create, (zlonix) 587* Fix all calls to iconv() so they follow standard (2d arg -> (char **)) 588* Revamp do_crypto() to recode messages after decryption. Somehow missed this 589* Add comments to various functions that I think deserve it. 590* Windows added to screens must have their "my_cols" set! 591* Add support for detecting iso2022-jp for fusion (Japenese non-utf8 encoding) 592* Plaster over two lame clang warnings in if.c so i don't have to look at them. 593* Don't #include "wcwidth.c" from ircaux.c, compile on its own 594* Make next_code_point() self-synchronizing; callers doesn't have to handle err 595* Update for topicbar from zlonix (rename topicbar.purge -> datapurge) 596* Modify next_code_point() to allow re-syncing or error reporting. 597* This fixes a bug where invalid_utf8string was broken (rb zlonix) 598* Adjust the wrapping point for long lines without breaks (rb fudd) 599* Remove /set default_script_encoding (superceded by /encoding scripts) 600* Remove /set high_bit_escape (superceded by /encoding console) 601* When i rewrote recalculate_windows() forgot to call window_check_columns()! 602* $read() will using /encoding scripts to convert non-utf8 strings. (temp!) 603* Fix next_code_point() to skip bytes, not increment them (fusion) 604* Don't permit /set no_control_log to overrule mangling 605* Improve the warning for /set dcc_use_gateway_addr for ipv6 only conns 606* Don't use/require /hostname to be set for /server connections, (rb stygian) 607* Fix connecting to server w/o vhost (caused by previous commit) 608* Fix a crash with ^L when there is a dead screen (rb zlonix) 609* Fix a crash with /window create (rb zlonix) 610* Do not allow add_to_log() to be recursive, an invalid rewriter can cause 611 [error] output, leading to infinite recursion (rb tjh) 612* BTW, to do timestamping in logfiles, try 613 /@logctl(SET 2 REWRITE "\\($strftime(%b %d %X)) $$0 $$1-") 614* Add $windowctl(REFNUMS_ON_SCREEN <winref>) to get all wins in screen order 615* Fix configure check for socks5 (binki at gentoo dot org) -- Thanks! 616* If after resize, scrolling view is "too high", do an /unclear (rb desaster) 617* Get_subarray_elements (ie, /foreach) does NOT honor "type" arg and it should 618* This fixes /foreach -cmds i {....}. Odd that nobody noticed this... 619* Allow ~'s in nicknames because ircnet permits it. (rb Harzelien) 620* New sasl_auth script from zlonix 621* Add recoding support (ie, UTF8 support) to send/recv msgs from /exec procs. 622* Don't whine that your irc hostname is invalid until /dcc fails because of it. 623* Fix null deref when looking up a variable that exists but not as a variable 624* Fix recoding /exec's by having the "target" be "%<name>", like /msg works. 625* Don't let /ignore hop msgs cover up /ignore #epic joins 626* Allow ` in nicknames for ircnet. (caf) 627* Two scripts from zlonix, scripts/user_list scripts/tmux_away 628* Fix build on systems without <xlocale.h>, newlocale() [FreeBSD-8] 629* Rewrite target_file_write() to support the expected syntax 630* Rewrite $write() and $writeb() to use new target_file_write() properly. 631* Remove frivolous fprintf()s to stdout. 632* These features were suggested by Roca He, who is doing a research project 633 on inproper OpenSSL API usage by open source software. 634* Output the SSL protocol upon connect (SSL_get_version()) 635* Call SSL_CTX_load_verify_locations() to load root CAs. Need to /set-ify this 636* Call SSL_get_verify_result() to validate certs whenever possible. 637* Extend /on ssl_server_cert with $4=SSL_get_verify_result() 638* Extend /on ssl_server_cert with $5=SSL_get_version() 639* Refactor ssl_connected() with comments and clarity. 640* Fetch a SSL server's certificate (including subject, issuer, pkey, and digest) 641* Extend /on ssl_server_cert with $6=SSL digest (+URLified)) 642* Someday, we'll save the ssl_certificate and cert_hash in the server struct 643* Someday, we want ssl.h to save all the metadata, for non-servers. 644* Add new argument "snap" to add_timer(), for determining initial timeout. 645* Updated tmux_away, userlist script (zlonix) 646* Fix bug in target_file_write() not properly handling @W/@L/@ref 647* Refactor the timer subsystem with comments and clarity 648* Add /TIMER -SNAP which allows you to run timers "at the top of the interval" 649* Make /timer option processing similar to other commands 650* Add comments to make the timer API more clear and robust. 651* Revamp add_time() to add snapping, and handle updating better 652* Add /SET SSL_ROOT_CERT_LOCATION to pass to SSL_CTX_load_verify_locations 653* Add script 'find_ssl_root_certs' which sets SSL_ROOT_CERT_LOCATION for you. 654* Have 'find_ssl_root_certs' loaded by 'global' 655* Fix very many warnings recommended by clang. 656* Use X509_verify_cert_error_string() to get SSL verification explanation 657* Revamp /load find_ssl_root_certs after discussions with folks. 658* Signficantly revamp ssl.c, to make clearer, and save metadata of connection 659* This is so in future, $serverctl() may provide SSL info to user/script. 660* Create $serverctl(GET refnum SSL_<*>) operations for SSL info (see UPDATES) 661* CIPHER VERIFY_RESULT PEM CERT_HASH PKEY_BITS 662* SUBJECT SUBJECT_URL ISSUER ISSUER_URL VERSION 663* New function $chankey() -- similar to $key(), but can specify servref. 664* Support inbound recoding of dcc chat messages. 665* (Outbound recoding of dcc chat messages was already supported) 666* This means that dcc chat (including ctcp-over-dcc) is now utf-8 aware. 667* This concludes the UTF-8 project. EPIC5 is now fully UTF-8 aware. 668* Change /set ssl_root_cert_file to /set ssl_root_cert_location 669* Change default ^X binding back to SWITCH_CHANNELS 670* Add a callback to /set ssl_root_cert_location to help with auto-detecting 671* Don't /load find_ssl_root_certs by default, since it's auto-detected 672* Updated 'layout' script from zlonix. 673* This means /set -ssl_root_cert_location uses openssl default suggestions 674* For crypt.c and crypto.c, "key"->"password" for passwords 675* For crypt.c and crypto.c, "key"->"crypt" for crypt struct objects 676* Remove #ifdef HAVE_SSL's in crypt.c, because ssl is required now. 677* Change crypt's primary key to be target only, not target+crypt type 678* Add /encrypt -remove to remove an entry more simply 679* Make errors for string transformations and ctcp encodings more verbose 680* EPIC5-1.1.11 released here (Lucubrations) (Commit: 1810) 681* Use pending-nickname if we have one as the default nickname on reconnect (caf) 682* Add @serverctl(SET refnum UMODE ...) to overrule reconnect umodes 683* Handle /SET -SSL_ROOT_CERTS_LOCATION in set_root_certs_location (caf) 684* Eliminate some avoidable uses of strcpy/strcat/sprintf for the pedantic. 685* Move the uncompleted wishlist items to the web-based wishlist 686* Signficantly rewrite the shebang (-S) command line option to remove strcpy()s 687* Increase the padding for SHA256 xforms to avoid a buffer overflow (caf) 688* -- I switched to git here -- 689* "Make install" modified permissions in the tree. Ew. Take that out. 690* EPIC5-1.2 released here (Deracination) (Commit: 1816) 691* Always #define UNAME_HACK; don't return detailed OS info on CTCP VERSION 692* OK, a compromise -- don't #define UNAME_HACK, but don't show OS version. 693* Fix a crash when you do $splitw("" abcd) 694* Make sure /encoding shows a builtin rule is "Set by User" if user changes it 695* Internal function new_split_string() is like split_string() but utf-8 aware 696* Rewrite $splitw() to use new_split_string(), so it's utf8-aware! yay! 697* Fix warnings about libarchive and abs() from clang 698* Fix warnings from ubuntu as a special favor to wjr. 699* I can't believe it's so difficult to believe "I don't care if this fails" 700* More complier warnings from gcc-4.9 701* Final compiler warning, from openbsd this time. 702* Lots of OS's and compilers checked. Looks good! 703* Final warning fixed! 704* Refuse to recurse more than twice in send_text() to avoid infinite recursion 705* Fix crash if you try to clear an /encoding rule that doesn't eixst. 706* Refactor deleting a recode rule into a func and have everyone use it (rb des) 707* "Valid UTF8" requires something other than a broken code point at end (rb des) 708* Treat ^C99 as a bare ^C, because of other clients (rb wuf) 709* Turn #define use_automargins on for now 710* Add /SET FIRST_LINE which will be prefixed to all lines of output. 711* Do a term_clreol() at the START of output, not the end 712* This allows us to write to the last column of the display! 713* Just /set -continued_line and /set first_line @ (or whatever)! 714* You _MUST_ use an automargin TERM (ie, export TERM=vt102am) for this to work 715* EPIC5-1.4 released here (Sententious) (Commit: 1833) 716* Fix null deref when you used an implied unary operator in expression stmt. 717* Fix call stack dumping, which was missing a frame, null derefing (caf) 718* Add /on raw_irc_bytes for caf - raw, unfiltered data from server 719* Fix dcc resume (caf) 720* Be reasonable handling DCC ACCEPTs where DCC RESUME was not requested (caf) 721* Fix dcc resume again (caf) 722* Ensure translate_user_input() passes nul terminated string to n_c_p (caf) 723* Fix memory leak with sanity_checking_encoding() (caf) 724* Fix memory leak with bind_string_comporess() (caf) 725* Fix $bindctl(SEQUENCE .. SET ..) when find_sequence() fails (caf) 726* Below two items were reported by Felix Janda 727* Musl C library (for linux) doesn't support sys_siglist, and our shim fails 728* Don't require sys_siglist to be present to build epic; just remove features 729* Eventually I'll build something into epic to do this at startup. 730* Fix clueless function get_all_server_groups() (rb ce) 731* Proper signal numbers start with 0. (0 is permitted by some systems) (fj) 732* Fix preserve_serverinfo() when the hostname is an ipv6 paddr. 733* Deprecate the use of strformat() which can't count columns correctly 734* Add truncation to fix_width(), to allow the below... 735* Fix $[len]var to use fix_width(), for well-defined behavior (see UPDATES) 736* Fix $pad() to use fix_width(), for well-defined behavior (see UPDATES) 737* Hide all the SSL debugging chatter behind /xdebug SSL 738* Add /window log_rewrite, to overrule /set log_rewrite on window logs 739* Add /window log_mangle, to overrule /set mangle_logfiles on window logs 740* Remove prohibition from /query'ing an exec process that doesn't exist 741* For musl libc (linux), eliminate use of sys_siglist and sig.inc. 742* Roll our own signal names at runtime (ie, SIGHUP -> "HUP") 743* This fixes /exec -SIGNAL %process. 744* Support iconv()s that don't support //TRANSLIT (Felix Janda) 745* Fix /load guh, it had an old-style C comment 746* Eliminate LocalHostName in favor of LocalIPv(4|6)HostName 747* If your Vhost does not resolve in the family you're using, use fallback 748* Use the protocol-specific vhost when registering with the server 749* The following fixes make /load ../regress/func work again 750* Fix a crash with $after(1). There are more bogons downwind here. 751* Fix cpindex() and rcpindex() which fixes $index() and $rindex(). 752* Fix $tr() to behave the way it is documented 753* Change transform_string_dyn() to return the bytes in retval, not it's size 754* -- I hope this doesn't break anything else! 755* EPIC5-1.6 released here (Usufruct) (Commit: 1854) 756* Remove non-utf8 characters (rb Felix Janda) 757* These bug fixes from caf 758* Report getsockopt() errno and result in the right order (caf) 759* Prevent memory leak after /DUMP (caf) 760* Fix a memory leak in $bindctl(SEQUENCE .. SET ..) (caf) 761* Fix memory leak caused by $open(file R) when file is executable (caf) 762* Fix memory leak in /ASSIGN <name> (caf) 763* Fix memory leak in $close() (caf) 764* Stop looping in $delitem() after the entire array is deleted (caf) 765* When deleting the only item in an array, $delitems() should return 0 (caf) 766* Thanks to caf for his bug hunting and fixing! :) 767* Fix false positive memory leak from using VALGRIND_MEMORY_TRIM (caf) 768* Fix false positive memory leak deleting local variable stack at exit (caf) 769* Fix memory leak when deleting server (caf) 770* At the request of gentoo, the following patches and requests... 771* Change highlight chars (^V) to #def's (REV_TOG_STR) because file(1) is weak 772* Fix tcl, ruby, perl, libarchive support to be more gentoo friendly (binki) 773* (We had already applied their socks patch a long time ago) 774* Remove 'localhost' from IRCSERVERS default list - default is efnet now. 775* The patches were for autoconf-2.60, so some changes were made 776* End changes requested by gentoo 777* Fix to make --with-localdir more gentoo friendly (binki) 778* Fix to make parallel builds work better for gentoo (binki) 779* Make /set logfile behave more like /log filename (see UPDATES) 780* Make /window logfile behave more like /log filename (see UPDATES) 781* Ooops. Should have tested that better. 782* EPIC5-1.8 released here (Perlustration) (Commit: 1862) 783* Fix memory leak with closing ssl cnnections (caf) 784* Fix memory leak with servers that never get connected (caf) 785* EPIC5-2.0 released here (Gamboling) (Commit: 1864) 786* Call setgid() before setuid(), for best practice (caf) 787* Fix off-by-one error with printing OpenSSL strings (caf) 788* Don't output the full SSL certificate for a server (caf) 789* When (re-)connecting, use the hardcoded server description nick (rb larne) 790* Fix utf8_strnicmp(), which broke $uniq() (robo, caf) 791* Fix null deref when a server has no CA (caf) 792* Remove a couple of unused variables in ssl handling (caf) 793* Fix crash when you $close() an fd from $exec() [rb CE] 794* Reformat all the ./configure --help outputs [rb skered] 795* EPIC5-2.0.1 released here (Indolence) (Commit: 1869) 796* Revamped maildir support to count both 'new' and 'cur' (wcarson) 797* Optimize maildir support so it's as fast as possible (wcarson) 798* Fix uninitialized pointer of window->log_rewrite (rb Q) 799* Fix handling of <locale.h> for CentOS 5.11. 800* new_timer() should initialise ->domref (caf) 801* Remove unnecessary window->screen check in hide_window() (caf) 802* Remove double-setting of *outbound in check_recoding_iconv() (caf) 803* banner() should use %d for printing current_numeric (caf) 804* inet_vhostsockaddr() should use %d to print port (caf) 805* Simplify expression in show_key() (caf) 806* Remove doubled-up SIGABRT from init_signal_names() (caf) 807* In transform_string_dyn() don't use my_dest_str_len without testing for NULL (caf) 808* Make output size check more robust in fish64_encode() / fish64_decode() (caf) 809* Remove unused function slurp_file() (caf) 810* Fix $ignorectl(WITH_TYPES ...) when only exceptive ignores are supplied (caf) 811* Remove unnecessary double-setting of window_display (caf) 812* Loosen overly-tight restrictions from $hookctl(SET .. SERIAL) and $hookctl(SET .. NICK) (caf) 813* Fix /USLEEP for fractional second delays (caf) 814* Add ( ) around constants declared as macros using shift operator (caf) 815* Include output.h in compat.c for yell() (caf) 816* Don't lower-case the channel name passed to whobase() (caf, rb white) 817* Only populate server->uh_addr when it's needed, to avoid spurious warning 818* Extend new_close() to new_close_with_option() allowing callers to manage fd 819* This is used for python fd handling. 820* Make new_io_event() actually support NEWIO_NULL (no io callback) 821* Python support merged into 'master' here. 822* Add new_open_failure_callback() which allows getting a callback on dead fd. 823* Add %{1}P status bar variable, "prefix when (not) current" (see UPDATES) 824* Add /set status_prefix_when(_not)_current variables, default to empty string 825* Add /window status_prefix_when(_not)_current operations, default to nothing 826* Convert CTCP data structures from static arrays to a bucket 827* Initialize hardcoded CTCPs at boot time 828* Guard against null deref when changing lastlog and/or scrollback at same time 829* Overhaul ctcp.c so there are no more magic integers used as foreign keys. 830* Fix a core and leak to do with /userhost and /ison queues (ce) 831* Revamp/unify do_ctcp() and do_notice_ctcp() to reduce code duplication 832* Change send_ctcp() to take a boolean int rather than a string for first param. 833* Simplify the CTCP flags to just "ordinary" and "special", with "raw" (or not) 834* CTCPs are "raw" if they need the original payload, or not if payload is string 835* CTCPs are "special" if they handle everything themselves (/me, /dcc) 836* Enforce anti-botnet CTCP reply flooding on the /CTCP side, not request side 837* (That way, CTCPs that don't generate responses are not throttled) 838* Implement $ctcpctl() to register user-defined ctcp handlers. (see UPDATES) 839* Add $ctcpctl(ALL) for CLIENTINFO purposes. 840* Create /load ctcp, some basic CTCPs implemented in script 841* Make /load builtins do a /load ctcp 842* Comment out some basic CTCPs from the base client -- yay! 843* Treat empty return strings from ctcp handlers as "not handled" 844* Initialize status.prefix_when_(not_)current in new windows. 845* Create a distinction between CTCPs that replace their bodies and themselves 846* via $ctcpctl(SET <type> REPLACE_ARGS 0|1) [see UPDATES] 847* Rewrite CTCP PING handler, create CTCP UTC handler 848* Fix ipv6 p-addr vhosts for /server (rb wcarson) 849* Add /exec -wintarget, output to any old window (rb wcarson) (caf) 850* EPIC5-2.1.1 released here (Abulia) (Commit: 1898) 851* Improve perl support (remove warnings) (caf) 852* The : before final param is part of the syntax, not the message (caf, rb trn) 853* Fix bug in previous patch 854* Don't include <term.h> unless it's needed, because of ruby-2.7 support 855* Modernize ruby support while we're at it (checked with 2.3/2.6/2.7) 856* Add "passthrough read|write" support to newio, for python. 857* Change python's "epic.xecho" to not default force -s by default 858* Change python's @on decorator do a ^on so it's silent 859* Fix a couple of compiler warnings suggested by new clang. 860* Add _epic.callback_when_readable and _epic.callback_when_writable for python 861* They take a python callback, and dispatch when an fd is ready. 862* This allows python scripts to submit an fd for callback with newio. 863* Call PyErr_Print() on an exception. This is "noisy", but i needed it for debug. 864* Eventually we have to be able to do this on our own. 865* Add /pyload shortener -- an in-client url shortening redirecting proxy! 866* Capture STDOUT and STDERR from python, redirect to /echo. 867* Pull out the python init code into its own function 868* Don't try to fancy-print exceptions, now that we're capturing stderr. 869* Add count_initial_codepoints() to convert a ptr to something for $mid() 870* Change $regmatches() to use count_initial_codepoints(). 871* Fix a dumb warning from clang about pointer arithmetic. 872* Revamp /exec to behave regularly so we can treat %proc as real targetsa (see UPDATES) 873* Add /on send_exec so you can reformat messages being sent to exec procs 874* Add $uuid4() -- it returns UUID4s! 875* Add /exec -nolaunch so you can build an /exec before starting it. 876* Add $execctl() -- see UPDATES 877* EPIC5-2.1.2 released here (Lugibrious) (Commit: 1908) 878* Fix count_initial_codepoints() - it couldn't return 0 879* This fixes $regmatches() for wcarson 880* Add /window delete_kill (rb Harzilein) 881* Fix /wait %proc (caf, rb wuf) 882* Fix chmod() to not use ancien S_IREAD/S_IWRITE (S_IRUSR) (rb Tilt) 883* Support /window -<operation> to pass in NULL to window op 884* Seed all window operations with no-op handlers for NULL 885* Don't discard DNS results for server until we get to ACTIVE 886* Add a stub for $inputctl() -- future expansion. 887* Add %{5}S status expando -- the server status (ie, "ACTIVE") 888* Signficant refactoring of server.c/server.h 889* - Change the term "server status" to 'server state" everywhere 890* - Reorganize Server object to show what values are filled in by each state 891* - Make all server.c functions static whenever possible 892* - Remove all server.c functions not used anywhere 893* - Remove all server.h decls not used anywhere 894* - Remove unused variables in Server and other structs 895* - Remove extern server_list[] and make get_server() an ordinary function 896* - Remove extern server_states[] and create get_server_state_str() 897* - Document many more things to make it more understandable 898* - Drive the determination of "ircop" from your umode, not from a variable 899* Add /on server_state to duplicate /on server_status for now 900* Support $serverctl(GET x STATE) to duplicate GET STATUS 901* More refactoring of server.c/server.h ssl support 902* - Remove unused fields and getters/setters 903* - Defer all "is this ssl?" questions to the ssl module 904* - Rename "is_ssl_enabled()" to "is_fd_ssl_enabled()" 905* - Rename "get_server_isssl()" to "get_server_ssl_enabled()" 906* - Remove trying to track ssl enablement separately 907* - Since openssl has been required for a while, remove "ssl is missing" stuff 908* - Avoid setting the server state directly (ie, avoiding /on server_state) 909* If something goes wrong in do_server(), just close_server() 910 - If a server is connected to a window with more addrs, it'll resurrect 911* Add $inputctl(GET|SET CUTBUFFER), manipulate the cut buffer. See UPDATES 912* Fix /load help.irc - point to correct url 913* Remove some commented out code before release 914* window_next() and window_previous() can accept nulls from SWAP_NEXT_WINDOW 915* Add /window unclear -- why did this not exist? 916* If a Python callback fails, call the except; if that fails, give up on fd 917* /PYDIRECT without args needs a usage message 918* Support /timers with /unload (rb zlonix) 919* New version of epic.py and shortener.py from skully -- he asked for testing 920* Improve the code in vars.c 921* - Change 'flags' to 'pending' since that's all it is used for 922* - Change $symbolctl() to support both FLAGS and PENDING for the symbols 923* - Make get_string_var() return a const ptr so people don't change it 924* - Make make_string_var_bydata() take an (IrcVariable) since that's easier 925* Crank up the warning flags and start addressing things 926* - Add a test in configure for __attribute__((fallthrough)) 927* - This allows the use of FALLTHROUGH to shut up warnings. 928* - Improve a lot of const correctness issues 929* - Fix other bogons it pointed out (d'oh!) 930* Fix my_ctime() to honor that ctime() can return NULL. 931* EPIC5-2.1.3 released here (Redound) (Commit: 1926) 932* Fix configure on mac when you do --with-ssl=/path/to/somewhere (rb archon) 933* Fix configure for systems where "gcc" is c99-only 934* Add "verbose" flag to sanity_check_encoding() 935* This is needed in init_encodings() to not output too early. (rb wcarson) 936* Don't make a lack of CP437 locale a boot failure (rb wcarson) 937* A lot of work was done on configure to support macports better. 938* Fix where NSIG was decld in irc_std.h (caf) (rb CE) 939* Add /ON CHANNEL_CLAIM and /WINDOW CLAIM (see UPDATES) 940* Exempt claimable channels from referential integrity checks 941* Add $uuid4(NODASHES) to get uuids without dashes 942* $windowctl(GET x UUID) -- every window has a hash-free UUID now 943* Allow windows to be reffed by their UUID in /window 944* Revamp how channels get claimed (I like this better) to be channel-driven 945* Fix get_window_by_desc() (rb Harzilein) 946* Migrate configure to autoconf-2.69. 947* Round two of getting configure working with 2.69 948* Round three of getting configure working with 2.69 949* Round four of getting configure working with 2.69 950* Get configure to support Python 3.8+ 951* EPIC5-2.1.5 released here (Fecund) (Commit: 1945) 952* Add "ssl_checkhost" field to server descriptions 953* Make ssl_startup() require a hostname for ssl hostname checks 954* Add ssl_get_checkhost_status() to return ssl hostname check 955* Fix a place where we don't check the retval of alloca() 956* Remove the "ENCODING" field from server descs which went away long ago 957* Ensure "ssl-checkhost" is preserved through serverinfo changes/updates 958* Perform hostname checking on ssl server connections and abort if failed 959* Change "ssl-checkhost" to "ssl-strict" 960* Make ssl strict checking require both the cert and hostname pass muster 961* Change ssl_info.ssl_fd to "ssl" to confuse me less 962* Check for self-signed certificates and pass it in /on ssl_server_cert 963* Add support for getting SANs out of an SSL certificate (rb wcarson) 964* Add $serverctl(GET x SSL_STRICT_STATUS) 965* Add $serverctl(GET x SSL_SANS) 966* Remove $serverctl(GET x SSL_STRICT_STATUS) 967* Add /on SERVER_SSL_EVAL (see UPDATES) 968* Add /set ACCEPT_INVALID_SSL_CERT (see UPDATES) 969* Remove per-server server "strict status" in server desc 970* Add "accept_cert" per server, to track whether we accept the ssl cert 971* Add $serverctl(GET x SSL_CHECKHOST_RESULT) 972* Add $serverctl(GET x SSL_SELF_SIGNED) 973* Add $serverctl(GET|SET x SSL_ACCEPT_CERT) (see UPDATES) 974* Add /SET SSL_CIPHERS (see UPDATES) 975* I forgot to implement the use of /SET SSL_CIPHERS. oops 976* I made signficant changes, so the above probably obsolete now 977* Create an object (ssl_cert_error) 978* Start tracking *every* ssl cert verification error 979* Treat ssl verification errors as tiered problems 980* ie, self-signed is not as bad as bad-hostname not as bad as others 981* Revamp things like "verify_result", "self_signed", etc to errors 982* ie, verify_error, checkhost_error, self_signed_error 983* Add a new "other_error" and "most_serious_error" 984* Try to emulate the old policy behavior (pending more work) 985* I need to document the flow and /on's and /set's in UPDATES 986* Change $serverctl()s 987* serverctl change: SSL_VERIFY_RESULT -> SSL_VERIFY_ERROR 988* serverctl change: SSL_CHECKHOST_RESULT -> SSL_CHECKHOST_ERROR 989* serverctl change: SSL_SELF_SIGNED -> SSL_SELF_SIGNED_ERROR 990* serverctl change: new: SSL_OTHER_ERROR 991* serverctl change: new: SSL_MOST_SERIOUS_ERROR 992* Reorg ssl.c because it was getting too jumbled to follow 993* Ensure every function is decld static or is in header file 994* Group functions by their subject area 995* Only create on (SSL_CTX) for all global use now 996* Don't bother pretending we support being an SSL server. 997* Create a SSL verification callback that tracks/sorts every error 998* This allows us to catch multiple problems (self-signed, bad hostname) 999* We see multiple errors on efnet, for example 1000* Change find_ssl() to get_ssl_info() so its named after data type 1001* Roll Bad Hostname check into main SSL verification instead of extra step 1002* (OpenSSL discourages you from doing it as an extra step) 1003* I need to review /on ssl_server_cert for sanity and document it 1004* Remove the now superfluous notion of "strict status" checking 1005* Remove the bogus stubs for #ifndef HAVE_SSL since that's not supported 1006* Make widening the screen honor /window scrolladj 1007* Sync all /window operations in tabkey.ce 1008* Re-sort the /window operations list ("claim" was in the wrong place) 1009* Document $json_explode(), $json_implode() and $json_error() 1010* Add winref as $2 in /on channel_lost 1011* Remove tracking of "cursor window", a thing we haven't supported in 25 years 1012* Add support for (arglist) {block} statement type 1013* Add /window clearlevel <levels> (rb zlonix) 1014* The #define DEFAULT_STATUS_HOLDMODE was different from UPDATES and irregular 1015* Fix many things clang's static analyzer pointed out. 1016* Add /on reconnect_required (sb zlonix) 1017* /WINDOW winref SERVER servref should no-op if it's already that way. 1018* Add /window clearregex <regex> (rb zlonix) 1019* When printf()ing (time_t)s, always cast to (intmax_t) and use INTMAX_FORMAT 1020* When processing CTCPs with a script, don't short out /on ctcp or verbse_ctcp 1021* Add $serverctl(GET x PADDR) returns the p-addr of a connected server. 1022* Fix /server + so it correctly rolls over to server 0. 1023* Add $serverctl(GET x OPEN) [don't forget to document this] 1024* Set parsing_server_index around server errors so /timers create correctly 1025* Fix missing else causing all ssl cert's to be accepted 1026* Add support for tilde-expansion for /set ssl_root_certs_location 1027* If a server fd does not map to any server, close it. 1028* Updated version of 'reconnect' from zlonix. 1029* Convert our bundled test.c to be minimal c99 to avoid warnings 1030* Don't permit /reconnect on servers that are actively working 1031* /RECONNECT must not default to the current input window (bah) 1032* Reconnect script should use /server +refnum, not /reconnect 1033* Reconnect script should only do /server + on servers with groups 1034* EPIC5-2.1.6 (1981) (Impignorate) released here 1035