1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426
|
EPIC5 Projects, Bugs, and other Errata:
THINGS TO WORK ON
------------------------------------------------
Actual bugs
============
<none>
Creature Comforts
====================
* /window maximize + new status expando when a zero-height window gets output
* Be able to retrieve/cycle through "next notified (activity) window"
Data improvements
===================
* Rethink "targets" with channels and queries
* Change /ignore to support broader patterns (servers, nicks, etc)
* Support "virtual timestamps" -- don't fetch the real time
* Support ZNC's CAP that prefixes timestamp (see above)
Weaknesses
===========
* The way we handle "screen is not tall enough" underflow needs work
* Typing 😂😂(multi-column emojis) upsets screen.
* I don't think /msg @L1 is implemented correctly
files.c:file_write() for type == 2
Foundational improvements
===========================
* Mouse support (for fusion)
* Unlimited size input line with auto-chonking
* Outbound flood control for irc servers
* Properly support 005 PREFIX=(qaohv)~&@%+
* Properly support CAP
https://datatracker.ietf.org/doc/html/draft-mitchell-irc-capabilities-01
* Rewrite the RFC1459 message tokenizer ("BreakArgs")
- Make CAP tokens (@stupid=value) first class citizens somehow
* Support for column counting ZWJ compound emojis
+ Sending a "Man shrugging medium-light skin tone"
https://emojipedia.org/man-shrugging-medium-light-skin-tone
is a "ZWJ sequence" which epic may not support correctly
[ 5:34PM] -> (#epic) https://imgur.com/a/46IUXP0 -- how it originally appeared as received (expected behavior per github)
[ 5:34PM] -> (#epic) https://imgur.com/a/P8gEFnG -- how it appeared after you swapped the window out and in again
[ 5:35PM] -> (#epic) https://imgur.com/a/lSlLqQE -- how it appeared in the log (text) file
+ Not every terminal emulator handles them, and then there's screen and tmux, too
+ Supposedly, you can output emojis and ask for column position to assess what's supported.
[I moved the old list to the file "WISHLIST" to keep this file short]
[See http://www.epicsol.org/PROJECTS for things to come in the future]
[See http://www.epicsol.org/CHANGELOG5 for things that changed in the past]
THE CHANGELOG SINCE THE LAST RELEASE:
-------------------------------------
* Patch from twincest to fix build on solaris
* Don't honor queries for WALLOPS (requested by opers)
* Conditionalize <ieeefp.h> per twincest's fix.
* Clear RUBYDOTOH if ruby is found but it isn't usable (rb Zoopee)
* Rewrite checks for (intmax_t) for systems w/o strtoimax(). (rb JailBird)
* Define NSIG as _NSIG or 32 if it's not defined (rb JailBird)
* Broaden what you can specify for the server "proto" field (see UPDATES)
* Fix figure_out_address() to properly identify a server name
* This fixes /ignore user@host.com which was lamely broken.
* Make /window channel output all channels in the window
* Don't call update_all_status() if /set -status_clock (by Oliver Fromme)
* Comment out strtol() compat stuff, causing people problems.
* More graciously handle snprintf() returning -1 (rb twincest)
* Do not use /usr/include/ep on hpux
* Mark lastlog items as "dead" and check for them to avoid dangling ptrs
* Handle (graciously) when /set scroll_lines is > size of the window. (rb CE)
* Properly handle remove_lastlog_item() for the very last item.
* Fixes /eval defer window new kill;defer window new;defer window kill_others
* Add $hookctl(ARGS <recursive> <args>) allows you to replace $* in /on.
* Add $hookctl(USERINFO <recursive> <info>) allows you to set dynamic info.
* Don't lamely malloc_strcpy() over non-malloced strings in hookctl.
* Add $iconvctl() to control iconv stuff. (See UPDATES.)
* Add $xform(iconv +<iconv id>) functionality. (See UPDATES.)
* Fix bug where /window number could lead to confused lastlogs
* Generalize base64 encoding so it doesn't hardcode the base64 string.
* Add $xform(+FISH64 ...) which does FiSH's base64 encoding.
* Make a better test for embedded perl support by calling SvTRUE().
* Fix /bind -defaults so it actually removes all keybindings first. doh.
* Fix /window double so it actually shows you the current double status.
* Make the expression error for too many operands output the expression.
* Rewrite the iconv() configure checks to deal with libiconv's #define's.
* Rewrite the strtoimax() tests so they don't fail lamely to detect (intmax_t)
* Rewrite the perl and ruby runtime configure tests so they work right with gcc
* Fix various warnings revealed by gcc warnings
* Make a very preliminary attempt to write some fish decoding stuff. Not Ready!
* Fix for configure to handle perl's non-existance (kreca)
* Fix wserv4 dependencies so you can do make -j4 on multi-cpu.
* Rework the ruby checking in configure so it builds on freebsd-7
* Add CTCP FISH support (this is _not_ fish support!), see UPDATES
* Make an initial stab at proper support for FiSH's base64 converter.
* I took the "fish64" entry out of $xform() for now while it's broken.
* Capture stdout of ruby scripts and send it to an epic window. yay!
* This means you can do regular old 'puts' in ruby script and it'll Just Work.
* Finish $xform() for +fish64 and -fish64, verified against actual FiSH code
* Try to make the perl configure check more robust for non-working perls.
* Start a project to convert things to use transform_string().
* Fix show_lastlog() to return the rewritten result (so -mangle works)
* Actually sunset [en|de]code().
* Create transform_string_dyn, a pleasant api in front of transform_string.
* Create a bunch of global vars for transform_string to avoid lookups.
* Add hints to how big destination buffers should be for xforming.
* Fix transforms by initializing the expander and overhead items.
* Make various sanity checks for transforms to fix amn.
* Ensure all the users of transform_string_dyn are prepared to handle NULLs
* Ensure all the xform encoder/decoders can handle zero dest buffer sizes
* Add code to configure to fail if OpenSSL is not found. No turning back!
* Split the notion of "iv size" and "blocksize" in crypto support
* This is needed because FiSH does not use an IV, being an ECB cipher
* It's also needed because the notion that the IV *must* be blocksize is lame.
* Add notion of "trimmable bytes" to end of crypto message
* Again, this is for FiSH, because it doesn't trim bytes on last packet.
* Support for assissting valgrind in helping us find memory leaks (caf)
* Fix memory leaks found by valgrind (caf)
* GC function_[en|de]code() and function_sha256 (superceded by $xform())
* GC unused [en|de]code(), enquote_it, dequote_it, and dequote_buffer().
* Fix display calcs when adding 1st window to 1st screen
* This allows you to change 'status.number' for default # of status lines
* Start tracking timestamps for scrollback items
* Full generalization of scrollback/scrollforward functions
* Implement scrollback/forward based on lines
* Implement scrollback/forward based on regex
* Begin thinking about implementing scrollback/forward based on time (not done)
* Windows that are hidden from birth have a fake height of 24 lines
* This fixes a bug where doing /window double on hold_slider 0 in a
never-visible window caused it to get stuck in an infinite loop.
* Add new scripts, "help.irc", "history.rb", "locale", and "tabkey.sjh"
* I need to document these in UPDATE!
* Add /exec -closeout, to send EOF to the exec'd process
* Add $dccctl(FD_TO_REFNUM <fd>) to convert $connect() to a refnum for dccctl.
* Remember $dccctl(GET refnum WRITABLE) detects a connected socket, by rule
* Change /on 322 handler so output always goes to OTHER, not to the window.
* Add an /on switch_query, but it's incomplete, so don't use it yet.
* Rewrite malloc_sprintf() so it can be used by do_hook_internal().
* Revamp do_hook() so it returns the final value of $*
* This will allow future use of do_hook() to rewrite text.
* Don't test for /usr/local/lib/libiconv.a because os x doesn't have it
* Prototype malloc_vsnprintf().
* Don't test uninitialized variables, you dummy.
* Have to be more aggressive using va_copy() for 64-bit sake
* Add /xeval -n {...} which un-does the ^ operation.
* Fix the 'ambig' script to use /xeval -n.
* Fix the command mode support in 'builtins' to use /xeval -n
* Reorganize open_log(), add support for double quotes around filenames
* Verify that logfiles are now working as I Hope they would.
* Make 'global' load ambig and newnick, since those recently came up
* Change a variable name to avoid conflicts with a global symbol
* Create a stub function to calculate how long the input line could be.
* Fix a bug with /who -real (i forgot who reported this, sorry!)
* Fix the redonkulous spurious errors when using $convert().
* Add a configure check for strtoimax() being a macro (ugh)
* Apparently strings in configure are supposed to be [quote]d.
* Check for strtoimax() separately in inttypes.h and stdint.h
* This hopefully fixes the build on hpux
* Add @E<win> as a /msg target so you can /msg a window.
* Fix lame compile error in wserv() if we need yell().
* Improve the test for libarchive in configure
* Fix /bind -default because it whacked the bindings themselves. doh!
* Normalize the copyright notice on scripts BlackJac wrote, per his request
* Fix 439 handling for inspircd (rb twincest)
* Add the ability to /log server all or /log add all for server logs.
* Change the configure test for perl from AC_TRY_LINK to AC_TRY_RUN
* Change string insensitive comparisons so "SERVER" doesn't match "SASAFRASS"
* Bump up the "overhead" bytes for xform()s to multiples of 8 per zlonix
* Support /log server ALL and /log type server add ALL to log all servers
* Fix brain-o that I missed -- strnicmp() consumers must use FULL STRINGS!
* Fix more. You'd think I was not paying attention or something.
* Don't permit /xecho /flag because that's just useless
* Fix two dcc locking bogons that i discovered by accident.
* Revert the string insensitive comparison changes for now.
* Use PRIdMAX and PRIuMAX for printing (intmax_t), for hpux, or larne
* Fix my brokenness of my_stricmp(). Time to go hide under a rock.
* Fix the bug where the right indicator appeared when it should not.
* Add the 'logman' script which does per-server, and per-channel logging
* Handle inspired's BBC 351 numeric, for larne.
* Fix bug with /encrypt complaining "X is not a multiple of Y!" (rb zlonix)
* Add a bunch more scripts I've been sitting on that were contributed.
* Add 'cycle', 'set_color', 'ban', and 'speak.irc' scripts. i need to doc them
* Create some internal funcs to allow updating a server desc on the fly
* Allow add_servers() to update server descriptions
* Allow /server -add to update server descriptions
* Allow /server -update to update server descriptions
* Allow plain old /server to update server descriptions
* Allow $serverctl(READ_FILE filename) to update server descriptions
* Add $serverctl(UPDATE refnum stuff) to update server descriptions
* Allow /window server to update server descriptions
* Add $windowctl(GET x SERVER_STRING) returns last good /window server value
* Release epic5-1.1.1 (commit 1631) (Prolixity)
* Fixes so /server <group> doesn't clobber <host> with <group> (rb howl)
* Add support for /server refnum:<other flags> which I noticed
* For example, this means, /server 0:type=irc-ssl now works! yay!
* Add special check for OS X (Zach)
* Fix configure check for perl so it doesn't segfault.
* Fix configure check for iconv, so it doesn't bork the freebsd port
* Iconv support really is mandatory now! I mean it!
* Fix transform_string_dyn(). How did nobody catch this??
* Add a function findchar_quoted() like strchr(), but honors \.s
* Use this in server descriptions to find the unquoted : after a PASS.
* This means you can \ a : in a password. yay!
* Nuke the "URLPASS" support. Let us never speak of this again.
* Two changes to timer.c from caf.
* Fix bugs found by --with-warns.
* Add a check in configure for -fno-strict-aliasing; could be used with -O2?
* Fix /parsekey reset_line so it sets the cursor to the end (for howl)
* Add /on unknown_set for howl (see UPDATES)
* Fix set_input(), which fixes history. yay!
* When /dcc causes nonblocking connect, tell the user so they know we tried
* Add 'c' option to $sar() and $msar() (see UPDATES)
* Revamp substitute_string() so $sar() and $msar() work as intended.
* Add a NONE_xform const to do null transformations.
* Release epic5-1.1.2 (commit 1638) (Trencherman)
* Fix build so it builds on mac os x, with or without macports perl.
* Fix brain-dead typo with /on unknown_set support
* Rewrite /bind transpose_characters in response to it being borked.
* Fix configure support so valgrind can be used (caf)
* Fix crash when you output to a window while it's being killed (caf)
* Fix memory leak with initialization of hook stuff (caf)
* Fix memory leak with realnames when a server is destroyed (caf)
* Change /bind previous_word and next_word to honor /set word_break
* Apparently the lastlog output stuff wasn't guarded properly by show_lastlog
* Refine fix for crash when you output to a window while it's being killed
* Use the length passed to write_server_ssl(), that's what it's there for (ce)
* Avoid null derefs with OMATCH/IMATCH/PMATCH in serverctl (ce)
* Fix /allocdump so it doesn't crash without a filename (ce)
* Fix for a bug that stopped "/xquote -u" inserting null chars.
* Fixed $serverctl([gio]match ...) to not return deleted servers.
* Improve performance in the main select loop. In practice, MAY require minor script alterations.
* Save the errno from a failed $dbmctl(OPEN) for $dbmctl(ERROR -1)
* Add $channelsyncing(#chan server) for tjh.
* Make $info(o) show "S" if OpenSSL was compiled in -- useful for crypto
* When starting /dcc nonblocking connect, don't worry the user with noise
* Display the original /window arglist on any syntax error.
* Remove ADD_STR_TO_LIST macro (caf)
* Add "from" window to adjust_context_windows, windows are killed (caf)
* Fix from_server getting lost in vsyserr (caf)
* Fix null deref in umode handler (caf)
* Add %G status expando, to return 005 NETWORK (caf)
* Friendlier ZNC support changes follow here...
* Allow multiple servers on same (host,port) with different passwords
* For now, neutralize adjust_window_refnums() until a proper fix (rb tjh)
* Caf noticed I fixed the wrong bug. oops!
* EPIC5-1.1.3 released here (Feculance) (Commit ID: 1656)
* Add $xform("+LEN" ...) which turns anything into a length (for ciphertext)
* Fix $xform("-FiSH" ...) for compatability with other implementations.
* Don't accept EAGAIN as a valid error code for connect (caf)
* Fix infinite loop bug with /userhost (caf)
* Fix memory leak with /who in certain error conditions (caf)
* Rewrite isonbase() so it handles longer nicks correctly (caf)
* Implement /lastlog -ignore, which shows everything EXCEPT the pattern.
* Add /xeval -nolog which suppresses logging for that command.
* Implement $dccctl([SG]ET refnum PACKET_SIZE num) for packet-buffering
* Implement $dccctl([SG]ET refnum FULL_LINE_BUFFER [01]) for forced line buff
* Implement $hookctl(CURRENT_IMPLIED_HOOK) for implied on hooks to know context
* Add "expire timeout" to lastlog entries
* Create do_expire_lastlog_entries() which wipes expired window output
* Add functions to "merge" logfiles/channels/output/timers to a new window
* Remove the scripted COMMAND_MODE feature, which interferes with /window merge
* Add /xecho -E which causes window output to get away after some seconds
* Add /window merge which collapses two windows into one and kills the other
* window->lastlog_size must be maintained for both giver and taker!
* Try to fix some infinite loops when cleaning up window lastlogs.
* Add fn name to many panics.
* Make /on set only throw once if the user types the canonical /set name.
* Automatically close all $dbmctl() open files on exit.
* Fix /lastlog -context (but only for the normal case. -reverse comes next)
* Update_server_from_raw_desc() was missing a clear_serverinfo().
* Improve error handling for /hostname errors.
* Add /xdebug no_color which turns off color support at the lowest level.
* Fix /lastlog -reverse -context, all done now!
* Don't allow $repeat() or $pad() to request strings > 1MB.
* Have the malloc-failed panic tell you how many bytes were requested.
* Add a feature to check for unreleased message_from contexts in main().
* Fix two missing message_from leaks in server handler.
* Fix the lastlog trimming, an infinite loop (caf)
* Increase detail when debugging output contexts (caf)
* Reformat some code, fix more display context leaks (caf)
* EPIC5-1.1.4 released here (Adumbration) (Commit ID: 1667)
* Fix lock-ups when killing windows by refining the safeguard
* Create slurp_elf_file/string_feof|fgets|fgetc, to front-end ELF files
* Change /load to use the string front-end functions
* This allows /load to work on pure strings, and decouples from files
* Create recode_with_iconv() to convert a string using iconv() (for /load)
* Add /load -encoding which lets you specify the encoding of the file
* This means you can load iso-8859-1 encoded files on a utf8 terminal!
* Fix various warnings from gcc -Wall
* Add a new /set DEFAULT_SCRIPT_ENCODING -- will be used soon!
* Call setlocale(LC_ALL, "") at start of main() to get locale info
* Fix slurp_file() (caf)
* Fix make installman, man page filename had changed
* Begin a major project to fix issues suggested by clang (Ancient)
* Fix xecho as suggested by clang
* Check retval of set[ug]id() just because it's good style
* Make sure "MAXPATHLEN" (bsd) is always spelled "PATH_MAX" (posix)
* Fix while as suggested by clang
* Re-comment translate_user_input() based on suggestion by ce
* Move add_wait_prompt() to a new home
* Fix whoreply() as suggested by clang
* All of the below were suggested by clang.
* Fix set_screens_current_window() and search_for().
* Fix a "use-after-free" when realloc() fails
* Fix or paper over string-overruns for a malformed globs
* Fix a memory leak when opening a compressed file fails
* Fix a corruption of from_server in vsyserr()
* Check the param to denormalize_string()
* Slurp_file shouldn't call stat() or check its retval
* Denormalize_string() should check its param
* And so should p_killmsg(), and dishonor kill msg if its malformed.
* Fix /while, /topic, and $repeat() in case of malformed arguments
* All of the above were suggested by clang
* More fixes suggested by clang that I'm too annoyed to list out.
* Even more fixes suggested by clang (most related to theoretical null derefs)
* Even more fixes...
* Rewrite /window move and /window move_to to make clang happy
* One final batch of updates by clang....
* Rewrite lastlog moving funcs to use windows ptrs instead of refnums (caf)
* EPIC5-1.1.5 released here (Gallimaufry) (Commit ID: 1683)
* Add /QUEUE -RUNONE
* Caf and jm confirmed that ircu doesn't use 307 for USERIP any more.
* ignorectl(DELETE) is not silent and it should be.
* To satisfy fedora packaging rules, accept DESTDIR for 'make install'
* Many printf() format fixes (caf)
* Many changes clang suggested
* Fix "topicbar" script to double quote "s for now.
* Fixed-skipped windows don't get channels from /window kill (unless no choice)
* Add $windowctl(REFNUMS_BY_PRIORITY) to give you windows by current-ness
* Add /lastlog -reignore (ce)
* Add $logctl(NEW)
* Add $logctl(LAST_CREATED)
* EPIC5-1.1.6 released here (Kakorrhaphiophobia) (Commit ID: 1693)
* Begin a big project to decouple status bar generation from window refresh.
* Create $status_oneoff() which lets you press a status bar on the fly.
* Fix configure and the build so it works with ruby 1.8/1.9/2.0
* Update the help script to work with the new website (credit <fill in here>)
* Make many changes based on suggestions by clang and scan-build
* Make the configure checks for ruby support more ruby executable names
* A few minor changes to the history.rb script for no reason
* Add /input -- to end arg processing so your prompt can start with hyphen
* Fix a typo bug that kept the correct status bar from being regen.
* Fix another issue with /window server that caused status not to be updated
* Add a VERY TEMPORARY /debuglog command for my use. Will go away soon!
* Fix status bar update problems (sigh)
* Update status bar from set_server_005s, so %G updates right away. (caf)
* Larnifications for incoming nicknames (caf)
* Add %{4}S status bar expando, always returns full "itsname"
* When checking Maildir for /set mail 1, ignore subdirectories (rb zlonix)
* Change string_fgets() to return the number of bytes read
* Always check servers at startup, even if user did -S.
* (They might have done /server in their startup)
* Change file_size() to use normalize_filename().
* This allows MAILDIR to support ~-expansion (ie, ~/Maildir)
* The sender can be omitted (such as with "NOTICE AUTH"), so don't check those
* New xmsglog script from zlonix
* Fix trimming support for $xform(). Plus, FISH should do trimming. (rb zlonix)
* Fix maildir support for /set mail 1 (help by zlonix)
* Update tabkey.ce from fudd
* Update xmsglog from zlonix
* Two new scripts, sasl_auth and idlealert from zlonix.
* EPIC5-1.1.7 released here (Kainotophobia) (Commit ID: 1705)
* Updated massmode from zlonix.
* All the stuff below are round 1 utf8 support for input line
* New file, wcwidth.c, utf8<->unicode conversion, unicode column counting.
* Revamp /INPUT system to be utf8 aware. callback 2nd arg is now const.
* Specifically, save the state of the input line across /INPUTs.
* -- This is stub code. needs to be completely fleshed out.
* Reformat keys.c so I can work with it easier
* Only bytes < 127 can now participate in binds. >= 128 are SELF_INSERT.
* I think the keybinding system can grow 'namespaces' which might be cool.
* The TRANSPOSE_CHARACTERS keybinding has passed away quietly.
* New keybinding DEBUG_INPUT_LINE to help me
* Revamp the edit_codepoint() system to work with unicode code points
* Screen input now collects bytes until it gets valid utf8 code points.
* Collect all of the input line data structures into Struct InputLine
* Give each screen it's own inputline with an eye towards stacking them.
* The ability to 'fake' input in dumb mode has passed away quietly.
* Completely revamp input.c to work with inputline data structure
* Change input line so users operate on "logical characters"
* Inputline data structure maps "logical characters" to bytes in input buffer.
* It's almost too overwhelming to describe specific details.
* Basically the input system accepts unicode code points, and stores in utf8.
* Things like cursor movement, column counting, side scrolling all Just Work.
* Even things like cut buffering work.
* HOWEVER -- it seems this stuff doesn't work in GNU screen. can't fix this. :/
* Internal function strext2() allows me to cut substrings out, for input buf.
* Fix input_delete_character(), it forgot to call retokenize_input()
* Fix term_inputline_putchar() so it doesn't mangle 0x9b (valid utf8 char)
* Fix $curpos(), sort of. Does this return byte offset or column offset?
* It used to be the same, but now it's not!
* InputLine.buffer_pos isn't used any more. Whack that.
* Test every keybinding, fix the ones that are broken.
* Fix handling of highlight chars
* Add "number_of_logical_chars" to input line so we can boundary check eol.
* Error if you try to /bind a high bit char -- that's illegal now.
* Test and fix composed characters (for mac os x)
* Teach the normalize_string, prepare_display, and output_with_count about utf8
* Since utf8 parsing is "consumptive", some utility funcs changed too
* Column counting/line wrapping in the display works correctly now.
* Fix read_color_seq().
* ... again.
* Fix screen prompts so they can recurse, and restore previous state!
* Fix line wrapping bug that zlonix found.
* Get column counting working for the status bar (rb zlonix)
* Re-implement /input -noecho
* Create a utf8 string checker
* Add "encoding=<stuff>" flag to /server descriptions to act as default.
* EG, /server host=irc.foo.com:encoding=ISO-8859-1
* Run every non-utf8 string from the server through iconv using def encoding
* Extend $chr() to accept U+xxxx strings
* Add function $unicode() converts input into U+xxxx strings
* Add recode.c, to hold stuff regarding /ENCODING and encoding xlates
* New command, /ENCODING, declare encodings for targets. only "console" now.
* Translate user input via /encoding console setting, defaults to utf8.
* Translate screen output to /encoding console setting
* Non-utf8 users now appear as utf8 users to irc!
* UTF8 users now appear as non-utf8 users to non-utf8 epic users!
* Automatically recode undeclared non-utf8 scripts using /encoding scripts
* Add Emojis (unicode 6) to the column counting code (rb Kitambi)
* Set /ENCODING CONSOLE automatically to nl_langinfo(CODESET) from LC_ALL.
* If the default codeset is "US-ASCII" then it's changed to ISO-885-1.
* In translate_user_input() try to detect utf8 typers using non-utf8 encodings
* Tell user if we're recoding a script at /load time.
* Fix slurp_elf_file() it was leaving a 0xFF at end of file, confusing /load
* Don't bind ^T to non-existing TRANSPOSE_CHARACTERS keybinding.
* Bump MAXPARA from 15 to 20 for RusNet
* Fix the UTF8 detector for user input
* Fix cursor left when switching zones to the left.
* Allow /set word_break to include high bit code points (rb fusion)
* To work around RusNET, forgive truncated utf8 sequences at the end.
* Fix /server , so it doesn't null deref.
* Add /lastlog -this_server and /lastlog -global for zlonix.
* Fix $windowctl(NEW) by forbidding status updates during window creation.
* Default /ENCODING CONSOLE to the user's locale, not to utf8.
* Re-implement /set allow_c1_chars for input line, display prep, and output.
* Fix diagnostic output of /encoding
* Comment out some stuff in term.c that isn't being used.
* Re-implement status repeat-char-fill for utf8. (rb fudd)
* Fix /xtype -l to be UTF-8 aware. (rb zlonix)
* When status updates are suppressed, make a note if an attempt is tried
* When status updates are permitted again, do an update_all_status() if defered
* Make /set lastlog do a scrollback redraw to "dispose" of extra lines
* Make /set lastlog refuse to set to a value < twice the biggest window.
* However, doing /set lastlog 0 WILL delete everything and clear every window.
* Have configure auto-detect your "local" directory (/usr/local|opt|/usr/pkg)
* Have configure use the auto-detected local directory.
* Reformat some parts of server.c
* Change the current window whenever we're processing server stuff.
-- This was withdrawn because it was very unpopular.
* Don't allow /window lastlog to set the lastlog too low.
* Add support for ITALICS (^P) (\020), including ITALIC keybinding.
* Add support for 256 colors. I should document all changes but i don't wanna
* Document all the places where encoding translation should happen.
* De-harshen some comments I wrote 20 years ago in anger.
* Fix colors with high bit set. (rb Hellfire)
* Change ^X so it only supports two hex digits 00-FF
* Fix QUOTE_CHARACTER (^Q)
* Lots of internal work to implement back-end of /encoding.
* Add decide_encoding() to evaluate rules and pick one for non-utf8 stuff.
* Add serverinfo_matches_servref() internal to decide if (si) works for a serv.
* Add outbound_recode() internal to translate messages we're sending out
* Add inbound_recode() internal to translate messages received from irc.
* Add recode_with_iconv_t() internal function for the above.
* Rewrite (inbound_recode()) privmsgs, notices, topics, all this good stuff
* Rewrite (outbound_recode()) msgs, notices.
* Withdraw the /server -encoding feature.
* Add /xdebug recode to debug recoding rules. Help you help me!
* Review the recode code and leave comments for future improvement
* Don't allow the user to delete the magic recode rules.
* Fix $tobase(<base> 0) to always return 0 instead of empty string.
* Fix $"", caused by accumulator in translate_user_input not being cleaned.
* Fix bug with /encoding found by zlonix.
* Make serverinfo_matches_servref() honor 005 NETWORK value.
* Add /encoding support for 311, 314, 322, 332, and 352 numerics (*gulp*)
* Leave notes to add support for outbound topic/kick/part/etc.
* Add /encoding support for CTCPs (reported by zlonix)
* Fix /encoding support for PARTs (found by zlonix)
* Add /encoding support for outbound KICKs/TOPICs/etc
* Create internal rfc1459_any_to_utf8 to preprocess before parse_server().
* Tokenize recode rule "target" at create time instead of every evaluation
* This is part of a larger code cleanup for recode.c
* Remove the per-message handling for /encoding since it's done globally now.
* Change vsend_to_aserver so it does recoding.
* This means outbound doesn't honor /set translation any more
* This requires send_to_server_with_payload() since payloads already recoded
* Fix typo causing payload not to be recoded properly.
* Missing a break. d'oh.
* Outbound messages should not be recoded if they're already utf8.
* Yes they must be! duh. Square all this away with zlonix.
* Fix send_text so it doesn't send non-utf8 text through /on send_msg
* Finnese invalid_utf8str() so it doesn't truncate partial cp's for non-utf8s
* Warn if we try to do double-outbound-recoding
* Be more sensible about handling string lengths in vsend_to_server()s.
* Add $^*var to 'quote everything' (except letters and digits)
* When recoding inbound, move server|payload part out of buffer first.
* Don't double decode the ircname in whoreply.
* Rewrite strformat() to be utf8 aware. This fixes $[9]var
* Rewrite $pad() to be utf8 aware.
* Allow char-based /set's to hold a utf8 code point (for /set pad_char)
* Fix typo in check_xdigit() that borked 256 colors
* Fix $status_oneoff() to repeat with space if status bar is empty string.
* Don't -1 the line len when passing to prepare_display(); already adjusted!
* De-confuse ctcp_type and sed_type in the /encrypt stuff
* Make encryption work again, with encoding (but not with recursive ctcps)
* Write special handling for (defering) recoding of CTCPs until decrypted
* Rewrite $left(), $right(), and $mid() to be utf8 aware.
* Make /FEC utf8 aware.
* Fix a double recode with outbound ctcps
* Extend send_text() with a new flag saying if text already recoded
* Don't double-recode ctcp's!
* Inbound recoding of CTCPs must happen *before* processing, not afterwards
* This fixes /encode + /encrypt + /me
* Convert $strlen() to utf8-aware, many others to follow
* Add new flag "CTCP_NORECODE" which tells do_ctcp not to recode first.
* This allows non-encryption ctcps to automatically be recoded.
* This fixes /me yet again.
* Create internal cpindex() and rcpindex(), like [r]sindex(), but works on CPs
* Adjust internal chop() to work on code points.
* Make a first pass to choke if /encoding argument is not valid locale.
* Write some more internal CP based functions in wcwidth.c
* Rewrite/ensure these functions are UTF8 aware:
strlen chop index rindex indextoword wordtoindex maxlen
* Write a half-finished reimplementation of $fix_width() that is commented out
* Fix rcpindex() when the search char isn't in the string
* Fix search_for() which makes $before() and $after() utf8 aware.
* Eliminate usage of internal sindex() -> strchr(), strpbrk(), or cpindex().
* Rewrite/ensure these functions are UTF8 aware:
strip split before after curpos
* At startup, create a (locale_t) that points to "en_US.UTF-8" for ctype funcs
* Create internal mkupper_l and mklower_l to convert codepoints to upper/lower
* Rewrite internal upper()/lower() to use mk(upper|lower)_l.
* This makes $toupper() and $tolower() utf8 aware. yay! And other stuff!
* Implement internal utf8_strnicmp and use it for my_str[n]icmp.
* This means things like case insensitive aliases work for non-english! yay!
* Rewrite/ensure these functions are UTF8 aware:
toupper tolower
* Add sanity check to next_code_point() to warn if i do something stupid.
* Revise next_in_div_list to take CP so $[m]sar() can take arbitrary delims
* Revise substitute_string to handle case insensitivity as utf8 aware.
* Rewrite/ensure these functions are UTF8 aware:
reverse rest pass sar msar
* De-emphasize toupper() and tolower(), which are not utf8 aware
* Comment out $shiftseg() until I learn more about it (needs utf8)
* Rewrite/ensure these functions are UTF8 aware:
center tr chrq insert
* Rewrite/ensure these functions are UTF8 aware:
substr rsubstr
* Fix many warnings suggested by the compiler
* Zlonix updated idlealert, sasl_auth, xmsglog, and added new_lastlog.
* I had added contrib/utf8.c and regress/test_xform3 regress/test_xform4.
* Fix many warnings/bugs suggested by clang's static analyzer
* Add sanity checking for encodings, so we can warn the user
* Specifically check the locale encoding for sanity, use ISO-8859-1 as fallback
* Warn the user if /encoding encoding is unusable -- and don't switch over.
* Put in references to two wiki pages I need to document
http://epicsol.org/encodings_and_locales
http://epicsol.org/encoding
* Server names can contain '*'s. (rb zlonix)
* Fix /topic when you don't supply a channel (rb zlonix)
* EPIC5-1.1.8 released here (Atavistic) (Commit ID: 1775)
* Fix from freebsd to avoid checking yes(1) as ruby executable in configure
* Create functions to enumerate what should be documented in wiki
* This is exposed via undocumented $help_topics() function.
* Explicitly set LC_NUMERIC to "C" because otherwise math parser breaks
* Reset /window activity when a window becomes current (as in /window notified)
* Create stub for $encodingctl(), and spec it, but not implemented yet.
* Create internal time_since_startup() function (for eventual load logging)
* recode.c needs to include <xlocale.h> because of newlocale(3).
* Add new "source" flag to recode rules, to tell user where rule came from.
* Implement $encodingctl().
* RecodeRule->magic wasn't being set correctly.
* Output the recode rule refnum for /encoding
* Rewrite internal fix_string_with(), with new chop_[final_]columns() funcs.
* Extend $fix_width() to support 'c'enter and 'r'ight justify, and UTF8 aware.
* EPIC5-1.1.9 released here (Desquamation) (Commit: 1780)
* Fix compile error in function_help_topics
* EPIC5-1.1.10 released here (Desquamation) (Commit: 1781)
* Updated sasl_auth (v1.2) from zlonix
* Fix input lines being blank on non-main screens (set output_screen)
* Fix not being able to chain /INPUT's together (reset input line before callb)
* DO NOT set the window when handling server (very unpopular)
(* Change the current window whenever we're processing server stuff.)
* Rewrite add_window_to_screen/remove_window_from_rewrite
* Rewrite recalculate_windows.
* This fixes screen corruption when creating wins or shrinking your screen.
* Fix a bug where UPDATE_STATUS could get ignored (introduce FORCE_STATUS)
* Remove /set translation and all its stuff.
* Don't unforce the status bar until it's actually been redrawn.
* Set a window's screen before hiding it on /window new_hide (rb fusion)
* Fix rogue semicolon.
* Fix a null deref in creating new window when all other windows are fixed
* Fix some bugs that clang static analyzer found
* Fix where /set -continued_line led to strange denormalize behavior (rb Tilt)
* Add tmux support for /window create, (zlonix)
* Fix all calls to iconv() so they follow standard (2d arg -> (char **))
* Revamp do_crypto() to recode messages after decryption. Somehow missed this
* Add comments to various functions that I think deserve it.
* Windows added to screens must have their "my_cols" set!
* Add support for detecting iso2022-jp for fusion (Japenese non-utf8 encoding)
* Plaster over two lame clang warnings in if.c so i don't have to look at them.
* Don't #include "wcwidth.c" from ircaux.c, compile on its own
* Make next_code_point() self-synchronizing; callers doesn't have to handle err
* Update for topicbar from zlonix (rename topicbar.purge -> datapurge)
* Modify next_code_point() to allow re-syncing or error reporting.
* This fixes a bug where invalid_utf8string was broken (rb zlonix)
* Adjust the wrapping point for long lines without breaks (rb fudd)
* Remove /set default_script_encoding (superceded by /encoding scripts)
* Remove /set high_bit_escape (superceded by /encoding console)
* When i rewrote recalculate_windows() forgot to call window_check_columns()!
* $read() will using /encoding scripts to convert non-utf8 strings. (temp!)
* Fix next_code_point() to skip bytes, not increment them (fusion)
* Don't permit /set no_control_log to overrule mangling
* Improve the warning for /set dcc_use_gateway_addr for ipv6 only conns
* Don't use/require /hostname to be set for /server connections, (rb stygian)
* Fix connecting to server w/o vhost (caused by previous commit)
* Fix a crash with ^L when there is a dead screen (rb zlonix)
* Fix a crash with /window create (rb zlonix)
* Do not allow add_to_log() to be recursive, an invalid rewriter can cause
[error] output, leading to infinite recursion (rb tjh)
* BTW, to do timestamping in logfiles, try
/@logctl(SET 2 REWRITE "\\($strftime(%b %d %X)) $$0 $$1-")
* Add $windowctl(REFNUMS_ON_SCREEN <winref>) to get all wins in screen order
* Fix configure check for socks5 (binki at gentoo dot org) -- Thanks!
* If after resize, scrolling view is "too high", do an /unclear (rb desaster)
* Get_subarray_elements (ie, /foreach) does NOT honor "type" arg and it should
* This fixes /foreach -cmds i {....}. Odd that nobody noticed this...
* Allow ~'s in nicknames because ircnet permits it. (rb Harzelien)
* New sasl_auth script from zlonix
* Add recoding support (ie, UTF8 support) to send/recv msgs from /exec procs.
* Don't whine that your irc hostname is invalid until /dcc fails because of it.
* Fix null deref when looking up a variable that exists but not as a variable
* Fix recoding /exec's by having the "target" be "%<name>", like /msg works.
* Don't let /ignore hop msgs cover up /ignore #epic joins
* Allow ` in nicknames for ircnet. (caf)
* Two scripts from zlonix, scripts/user_list scripts/tmux_away
* Fix build on systems without <xlocale.h>, newlocale() [FreeBSD-8]
* Rewrite target_file_write() to support the expected syntax
* Rewrite $write() and $writeb() to use new target_file_write() properly.
* Remove frivolous fprintf()s to stdout.
* These features were suggested by Roca He, who is doing a research project
on inproper OpenSSL API usage by open source software.
* Output the SSL protocol upon connect (SSL_get_version())
* Call SSL_CTX_load_verify_locations() to load root CAs. Need to /set-ify this
* Call SSL_get_verify_result() to validate certs whenever possible.
* Extend /on ssl_server_cert with $4=SSL_get_verify_result()
* Extend /on ssl_server_cert with $5=SSL_get_version()
* Refactor ssl_connected() with comments and clarity.
* Fetch a SSL server's certificate (including subject, issuer, pkey, and digest)
* Extend /on ssl_server_cert with $6=SSL digest (+URLified))
* Someday, we'll save the ssl_certificate and cert_hash in the server struct
* Someday, we want ssl.h to save all the metadata, for non-servers.
* Add new argument "snap" to add_timer(), for determining initial timeout.
* Updated tmux_away, userlist script (zlonix)
* Fix bug in target_file_write() not properly handling @W/@L/@ref
* Refactor the timer subsystem with comments and clarity
* Add /TIMER -SNAP which allows you to run timers "at the top of the interval"
* Make /timer option processing similar to other commands
* Add comments to make the timer API more clear and robust.
* Revamp add_time() to add snapping, and handle updating better
* Add /SET SSL_ROOT_CERT_LOCATION to pass to SSL_CTX_load_verify_locations
* Add script 'find_ssl_root_certs' which sets SSL_ROOT_CERT_LOCATION for you.
* Have 'find_ssl_root_certs' loaded by 'global'
* Fix very many warnings recommended by clang.
* Use X509_verify_cert_error_string() to get SSL verification explanation
* Revamp /load find_ssl_root_certs after discussions with folks.
* Signficantly revamp ssl.c, to make clearer, and save metadata of connection
* This is so in future, $serverctl() may provide SSL info to user/script.
* Create $serverctl(GET refnum SSL_<*>) operations for SSL info (see UPDATES)
* CIPHER VERIFY_RESULT PEM CERT_HASH PKEY_BITS
* SUBJECT SUBJECT_URL ISSUER ISSUER_URL VERSION
* New function $chankey() -- similar to $key(), but can specify servref.
* Support inbound recoding of dcc chat messages.
* (Outbound recoding of dcc chat messages was already supported)
* This means that dcc chat (including ctcp-over-dcc) is now utf-8 aware.
* This concludes the UTF-8 project. EPIC5 is now fully UTF-8 aware.
* Change /set ssl_root_cert_file to /set ssl_root_cert_location
* Change default ^X binding back to SWITCH_CHANNELS
* Add a callback to /set ssl_root_cert_location to help with auto-detecting
* Don't /load find_ssl_root_certs by default, since it's auto-detected
* Updated 'layout' script from zlonix.
* This means /set -ssl_root_cert_location uses openssl default suggestions
* For crypt.c and crypto.c, "key"->"password" for passwords
* For crypt.c and crypto.c, "key"->"crypt" for crypt struct objects
* Remove #ifdef HAVE_SSL's in crypt.c, because ssl is required now.
* Change crypt's primary key to be target only, not target+crypt type
* Add /encrypt -remove to remove an entry more simply
* Make errors for string transformations and ctcp encodings more verbose
* EPIC5-1.1.11 released here (Lucubrations) (Commit: 1810)
* Use pending-nickname if we have one as the default nickname on reconnect (caf)
* Add @serverctl(SET refnum UMODE ...) to overrule reconnect umodes
* Handle /SET -SSL_ROOT_CERTS_LOCATION in set_root_certs_location (caf)
* Eliminate some avoidable uses of strcpy/strcat/sprintf for the pedantic.
* Move the uncompleted wishlist items to the web-based wishlist
* Signficantly rewrite the shebang (-S) command line option to remove strcpy()s
* Increase the padding for SHA256 xforms to avoid a buffer overflow (caf)
* -- I switched to git here --
* "Make install" modified permissions in the tree. Ew. Take that out.
* EPIC5-1.2 released here (Deracination) (Commit: 1816)
* Always #define UNAME_HACK; don't return detailed OS info on CTCP VERSION
* OK, a compromise -- don't #define UNAME_HACK, but don't show OS version.
* Fix a crash when you do $splitw("" abcd)
* Make sure /encoding shows a builtin rule is "Set by User" if user changes it
* Internal function new_split_string() is like split_string() but utf-8 aware
* Rewrite $splitw() to use new_split_string(), so it's utf8-aware! yay!
* Fix warnings about libarchive and abs() from clang
* Fix warnings from ubuntu as a special favor to wjr.
* I can't believe it's so difficult to believe "I don't care if this fails"
* More complier warnings from gcc-4.9
* Final compiler warning, from openbsd this time.
* Lots of OS's and compilers checked. Looks good!
* Final warning fixed!
* Refuse to recurse more than twice in send_text() to avoid infinite recursion
* Fix crash if you try to clear an /encoding rule that doesn't eixst.
* Refactor deleting a recode rule into a func and have everyone use it (rb des)
* "Valid UTF8" requires something other than a broken code point at end (rb des)
* Treat ^C99 as a bare ^C, because of other clients (rb wuf)
* Turn #define use_automargins on for now
* Add /SET FIRST_LINE which will be prefixed to all lines of output.
* Do a term_clreol() at the START of output, not the end
* This allows us to write to the last column of the display!
* Just /set -continued_line and /set first_line @ (or whatever)!
* You _MUST_ use an automargin TERM (ie, export TERM=vt102am) for this to work
* EPIC5-1.4 released here (Sententious) (Commit: 1833)
* Fix null deref when you used an implied unary operator in expression stmt.
* Fix call stack dumping, which was missing a frame, null derefing (caf)
* Add /on raw_irc_bytes for caf - raw, unfiltered data from server
* Fix dcc resume (caf)
* Be reasonable handling DCC ACCEPTs where DCC RESUME was not requested (caf)
* Fix dcc resume again (caf)
* Ensure translate_user_input() passes nul terminated string to n_c_p (caf)
* Fix memory leak with sanity_checking_encoding() (caf)
* Fix memory leak with bind_string_comporess() (caf)
* Fix $bindctl(SEQUENCE .. SET ..) when find_sequence() fails (caf)
* Below two items were reported by Felix Janda
* Musl C library (for linux) doesn't support sys_siglist, and our shim fails
* Don't require sys_siglist to be present to build epic; just remove features
* Eventually I'll build something into epic to do this at startup.
* Fix clueless function get_all_server_groups() (rb ce)
* Proper signal numbers start with 0. (0 is permitted by some systems) (fj)
* Fix preserve_serverinfo() when the hostname is an ipv6 paddr.
* Deprecate the use of strformat() which can't count columns correctly
* Add truncation to fix_width(), to allow the below...
* Fix $[len]var to use fix_width(), for well-defined behavior (see UPDATES)
* Fix $pad() to use fix_width(), for well-defined behavior (see UPDATES)
* Hide all the SSL debugging chatter behind /xdebug SSL
* Add /window log_rewrite, to overrule /set log_rewrite on window logs
* Add /window log_mangle, to overrule /set mangle_logfiles on window logs
* Remove prohibition from /query'ing an exec process that doesn't exist
* For musl libc (linux), eliminate use of sys_siglist and sig.inc.
* Roll our own signal names at runtime (ie, SIGHUP -> "HUP")
* This fixes /exec -SIGNAL %process.
* Support iconv()s that don't support //TRANSLIT (Felix Janda)
* Fix /load guh, it had an old-style C comment
* Eliminate LocalHostName in favor of LocalIPv(4|6)HostName
* If your Vhost does not resolve in the family you're using, use fallback
* Use the protocol-specific vhost when registering with the server
* The following fixes make /load ../regress/func work again
* Fix a crash with $after(1). There are more bogons downwind here.
* Fix cpindex() and rcpindex() which fixes $index() and $rindex().
* Fix $tr() to behave the way it is documented
* Change transform_string_dyn() to return the bytes in retval, not it's size
* -- I hope this doesn't break anything else!
* EPIC5-1.6 released here (Usufruct) (Commit: 1854)
* Remove non-utf8 characters (rb Felix Janda)
* These bug fixes from caf
* Report getsockopt() errno and result in the right order (caf)
* Prevent memory leak after /DUMP (caf)
* Fix a memory leak in $bindctl(SEQUENCE .. SET ..) (caf)
* Fix memory leak caused by $open(file R) when file is executable (caf)
* Fix memory leak in /ASSIGN <name> (caf)
* Fix memory leak in $close() (caf)
* Stop looping in $delitem() after the entire array is deleted (caf)
* When deleting the only item in an array, $delitems() should return 0 (caf)
* Thanks to caf for his bug hunting and fixing! :)
* Fix false positive memory leak from using VALGRIND_MEMORY_TRIM (caf)
* Fix false positive memory leak deleting local variable stack at exit (caf)
* Fix memory leak when deleting server (caf)
* At the request of gentoo, the following patches and requests...
* Change highlight chars (^V) to #def's (REV_TOG_STR) because file(1) is weak
* Fix tcl, ruby, perl, libarchive support to be more gentoo friendly (binki)
* (We had already applied their socks patch a long time ago)
* Remove 'localhost' from IRCSERVERS default list - default is efnet now.
* The patches were for autoconf-2.60, so some changes were made
* End changes requested by gentoo
* Fix to make --with-localdir more gentoo friendly (binki)
* Fix to make parallel builds work better for gentoo (binki)
* Make /set logfile behave more like /log filename (see UPDATES)
* Make /window logfile behave more like /log filename (see UPDATES)
* Ooops. Should have tested that better.
* EPIC5-1.8 released here (Perlustration) (Commit: 1862)
* Fix memory leak with closing ssl cnnections (caf)
* Fix memory leak with servers that never get connected (caf)
* EPIC5-2.0 released here (Gamboling) (Commit: 1864)
* Call setgid() before setuid(), for best practice (caf)
* Fix off-by-one error with printing OpenSSL strings (caf)
* Don't output the full SSL certificate for a server (caf)
* When (re-)connecting, use the hardcoded server description nick (rb larne)
* Fix utf8_strnicmp(), which broke $uniq() (robo, caf)
* Fix null deref when a server has no CA (caf)
* Remove a couple of unused variables in ssl handling (caf)
* Fix crash when you $close() an fd from $exec() [rb CE]
* Reformat all the ./configure --help outputs [rb skered]
* EPIC5-2.0.1 released here (Indolence) (Commit: 1869)
* Revamped maildir support to count both 'new' and 'cur' (wcarson)
* Optimize maildir support so it's as fast as possible (wcarson)
* Fix uninitialized pointer of window->log_rewrite (rb Q)
* Fix handling of <locale.h> for CentOS 5.11.
* new_timer() should initialise ->domref (caf)
* Remove unnecessary window->screen check in hide_window() (caf)
* Remove double-setting of *outbound in check_recoding_iconv() (caf)
* banner() should use %d for printing current_numeric (caf)
* inet_vhostsockaddr() should use %d to print port (caf)
* Simplify expression in show_key() (caf)
* Remove doubled-up SIGABRT from init_signal_names() (caf)
* In transform_string_dyn() don't use my_dest_str_len without testing for NULL (caf)
* Make output size check more robust in fish64_encode() / fish64_decode() (caf)
* Remove unused function slurp_file() (caf)
* Fix $ignorectl(WITH_TYPES ...) when only exceptive ignores are supplied (caf)
* Remove unnecessary double-setting of window_display (caf)
* Loosen overly-tight restrictions from $hookctl(SET .. SERIAL) and $hookctl(SET .. NICK) (caf)
* Fix /USLEEP for fractional second delays (caf)
* Add ( ) around constants declared as macros using shift operator (caf)
* Include output.h in compat.c for yell() (caf)
* Don't lower-case the channel name passed to whobase() (caf, rb white)
* Only populate server->uh_addr when it's needed, to avoid spurious warning
* Extend new_close() to new_close_with_option() allowing callers to manage fd
* This is used for python fd handling.
* Make new_io_event() actually support NEWIO_NULL (no io callback)
* Python support merged into 'master' here.
* Add new_open_failure_callback() which allows getting a callback on dead fd.
* Add %{1}P status bar variable, "prefix when (not) current" (see UPDATES)
* Add /set status_prefix_when(_not)_current variables, default to empty string
* Add /window status_prefix_when(_not)_current operations, default to nothing
* Convert CTCP data structures from static arrays to a bucket
* Initialize hardcoded CTCPs at boot time
* Guard against null deref when changing lastlog and/or scrollback at same time
* Overhaul ctcp.c so there are no more magic integers used as foreign keys.
* Fix a core and leak to do with /userhost and /ison queues (ce)
* Revamp/unify do_ctcp() and do_notice_ctcp() to reduce code duplication
* Change send_ctcp() to take a boolean int rather than a string for first param.
* Simplify the CTCP flags to just "ordinary" and "special", with "raw" (or not)
* CTCPs are "raw" if they need the original payload, or not if payload is string
* CTCPs are "special" if they handle everything themselves (/me, /dcc)
* Enforce anti-botnet CTCP reply flooding on the /CTCP side, not request side
* (That way, CTCPs that don't generate responses are not throttled)
* Implement $ctcpctl() to register user-defined ctcp handlers. (see UPDATES)
* Add $ctcpctl(ALL) for CLIENTINFO purposes.
* Create /load ctcp, some basic CTCPs implemented in script
* Make /load builtins do a /load ctcp
* Comment out some basic CTCPs from the base client -- yay!
* Treat empty return strings from ctcp handlers as "not handled"
* Initialize status.prefix_when_(not_)current in new windows.
* Create a distinction between CTCPs that replace their bodies and themselves
* via $ctcpctl(SET <type> REPLACE_ARGS 0|1) [see UPDATES]
* Rewrite CTCP PING handler, create CTCP UTC handler
* Fix ipv6 p-addr vhosts for /server (rb wcarson)
* Add /exec -wintarget, output to any old window (rb wcarson) (caf)
* EPIC5-2.1.1 released here (Abulia) (Commit: 1898)
* Improve perl support (remove warnings) (caf)
* The : before final param is part of the syntax, not the message (caf, rb trn)
* Fix bug in previous patch
* Don't include <term.h> unless it's needed, because of ruby-2.7 support
* Modernize ruby support while we're at it (checked with 2.3/2.6/2.7)
* Add "passthrough read|write" support to newio, for python.
* Change python's "epic.xecho" to not default force -s by default
* Change python's @on decorator do a ^on so it's silent
* Fix a couple of compiler warnings suggested by new clang.
* Add _epic.callback_when_readable and _epic.callback_when_writable for python
* They take a python callback, and dispatch when an fd is ready.
* This allows python scripts to submit an fd for callback with newio.
* Call PyErr_Print() on an exception. This is "noisy", but i needed it for debug.
* Eventually we have to be able to do this on our own.
* Add /pyload shortener -- an in-client url shortening redirecting proxy!
* Capture STDOUT and STDERR from python, redirect to /echo.
* Pull out the python init code into its own function
* Don't try to fancy-print exceptions, now that we're capturing stderr.
* Add count_initial_codepoints() to convert a ptr to something for $mid()
* Change $regmatches() to use count_initial_codepoints().
* Fix a dumb warning from clang about pointer arithmetic.
* Revamp /exec to behave regularly so we can treat %proc as real targetsa (see UPDATES)
* Add /on send_exec so you can reformat messages being sent to exec procs
* Add $uuid4() -- it returns UUID4s!
* Add /exec -nolaunch so you can build an /exec before starting it.
* Add $execctl() -- see UPDATES
* EPIC5-2.1.2 released here (Lugibrious) (Commit: 1908)
* Fix count_initial_codepoints() - it couldn't return 0
* This fixes $regmatches() for wcarson
* Add /window delete_kill (rb Harzilein)
* Fix /wait %proc (caf, rb wuf)
* Fix chmod() to not use ancien S_IREAD/S_IWRITE (S_IRUSR) (rb Tilt)
* Support /window -<operation> to pass in NULL to window op
* Seed all window operations with no-op handlers for NULL
* Don't discard DNS results for server until we get to ACTIVE
* Add a stub for $inputctl() -- future expansion.
* Add %{5}S status expando -- the server status (ie, "ACTIVE")
* Signficant refactoring of server.c/server.h
* - Change the term "server status" to 'server state" everywhere
* - Reorganize Server object to show what values are filled in by each state
* - Make all server.c functions static whenever possible
* - Remove all server.c functions not used anywhere
* - Remove all server.h decls not used anywhere
* - Remove unused variables in Server and other structs
* - Remove extern server_list[] and make get_server() an ordinary function
* - Remove extern server_states[] and create get_server_state_str()
* - Document many more things to make it more understandable
* - Drive the determination of "ircop" from your umode, not from a variable
* Add /on server_state to duplicate /on server_status for now
* Support $serverctl(GET x STATE) to duplicate GET STATUS
* More refactoring of server.c/server.h ssl support
* - Remove unused fields and getters/setters
* - Defer all "is this ssl?" questions to the ssl module
* - Rename "is_ssl_enabled()" to "is_fd_ssl_enabled()"
* - Rename "get_server_isssl()" to "get_server_ssl_enabled()"
* - Remove trying to track ssl enablement separately
* - Since openssl has been required for a while, remove "ssl is missing" stuff
* - Avoid setting the server state directly (ie, avoiding /on server_state)
* If something goes wrong in do_server(), just close_server()
- If a server is connected to a window with more addrs, it'll resurrect
* Add $inputctl(GET|SET CUTBUFFER), manipulate the cut buffer. See UPDATES
* Fix /load help.irc - point to correct url
* Remove some commented out code before release
* window_next() and window_previous() can accept nulls from SWAP_NEXT_WINDOW
* Add /window unclear -- why did this not exist?
* If a Python callback fails, call the except; if that fails, give up on fd
* /PYDIRECT without args needs a usage message
* Support /timers with /unload (rb zlonix)
* New version of epic.py and shortener.py from skully -- he asked for testing
* Improve the code in vars.c
* - Change 'flags' to 'pending' since that's all it is used for
* - Change $symbolctl() to support both FLAGS and PENDING for the symbols
* - Make get_string_var() return a const ptr so people don't change it
* - Make make_string_var_bydata() take an (IrcVariable) since that's easier
* Crank up the warning flags and start addressing things
* - Add a test in configure for __attribute__((fallthrough))
* - This allows the use of FALLTHROUGH to shut up warnings.
* - Improve a lot of const correctness issues
* - Fix other bogons it pointed out (d'oh!)
* Fix my_ctime() to honor that ctime() can return NULL.
* EPIC5-2.1.3 released here (Redound) (Commit: 1926)
* Fix configure on mac when you do --with-ssl=/path/to/somewhere (rb archon)
* Fix configure for systems where "gcc" is c99-only
* Add "verbose" flag to sanity_check_encoding()
* This is needed in init_encodings() to not output too early. (rb wcarson)
* Don't make a lack of CP437 locale a boot failure (rb wcarson)
* A lot of work was done on configure to support macports better.
* Fix where NSIG was decld in irc_std.h (caf) (rb CE)
* Add /ON CHANNEL_CLAIM and /WINDOW CLAIM (see UPDATES)
* Exempt claimable channels from referential integrity checks
* Add $uuid4(NODASHES) to get uuids without dashes
* $windowctl(GET x UUID) -- every window has a hash-free UUID now
* Allow windows to be reffed by their UUID in /window
* Revamp how channels get claimed (I like this better) to be channel-driven
* Fix get_window_by_desc() (rb Harzilein)
* Migrate configure to autoconf-2.69.
* Round two of getting configure working with 2.69
* Round three of getting configure working with 2.69
* Round four of getting configure working with 2.69
* Get configure to support Python 3.8+
* EPIC5-2.1.5 released here (Fecund) (Commit: 1945)
* Add "ssl_checkhost" field to server descriptions
* Make ssl_startup() require a hostname for ssl hostname checks
* Add ssl_get_checkhost_status() to return ssl hostname check
* Fix a place where we don't check the retval of alloca()
* Remove the "ENCODING" field from server descs which went away long ago
* Ensure "ssl-checkhost" is preserved through serverinfo changes/updates
* Perform hostname checking on ssl server connections and abort if failed
* Change "ssl-checkhost" to "ssl-strict"
* Make ssl strict checking require both the cert and hostname pass muster
* Change ssl_info.ssl_fd to "ssl" to confuse me less
* Check for self-signed certificates and pass it in /on ssl_server_cert
* Add support for getting SANs out of an SSL certificate (rb wcarson)
* Add $serverctl(GET x SSL_STRICT_STATUS)
* Add $serverctl(GET x SSL_SANS)
* Remove $serverctl(GET x SSL_STRICT_STATUS)
* Add /on SERVER_SSL_EVAL (see UPDATES)
* Add /set ACCEPT_INVALID_SSL_CERT (see UPDATES)
* Remove per-server server "strict status" in server desc
* Add "accept_cert" per server, to track whether we accept the ssl cert
* Add $serverctl(GET x SSL_CHECKHOST_RESULT)
* Add $serverctl(GET x SSL_SELF_SIGNED)
* Add $serverctl(GET|SET x SSL_ACCEPT_CERT) (see UPDATES)
* Add /SET SSL_CIPHERS (see UPDATES)
* I forgot to implement the use of /SET SSL_CIPHERS. oops
* I made signficant changes, so the above probably obsolete now
* Create an object (ssl_cert_error)
* Start tracking *every* ssl cert verification error
* Treat ssl verification errors as tiered problems
* ie, self-signed is not as bad as bad-hostname not as bad as others
* Revamp things like "verify_result", "self_signed", etc to errors
* ie, verify_error, checkhost_error, self_signed_error
* Add a new "other_error" and "most_serious_error"
* Try to emulate the old policy behavior (pending more work)
* I need to document the flow and /on's and /set's in UPDATES
* Change $serverctl()s
* serverctl change: SSL_VERIFY_RESULT -> SSL_VERIFY_ERROR
* serverctl change: SSL_CHECKHOST_RESULT -> SSL_CHECKHOST_ERROR
* serverctl change: SSL_SELF_SIGNED -> SSL_SELF_SIGNED_ERROR
* serverctl change: new: SSL_OTHER_ERROR
* serverctl change: new: SSL_MOST_SERIOUS_ERROR
* Reorg ssl.c because it was getting too jumbled to follow
* Ensure every function is decld static or is in header file
* Group functions by their subject area
* Only create on (SSL_CTX) for all global use now
* Don't bother pretending we support being an SSL server.
* Create a SSL verification callback that tracks/sorts every error
* This allows us to catch multiple problems (self-signed, bad hostname)
* We see multiple errors on efnet, for example
* Change find_ssl() to get_ssl_info() so its named after data type
* Roll Bad Hostname check into main SSL verification instead of extra step
* (OpenSSL discourages you from doing it as an extra step)
* I need to review /on ssl_server_cert for sanity and document it
* Remove the now superfluous notion of "strict status" checking
* Remove the bogus stubs for #ifndef HAVE_SSL since that's not supported
* Make widening the screen honor /window scrolladj
* Sync all /window operations in tabkey.ce
* Re-sort the /window operations list ("claim" was in the wrong place)
* Document $json_explode(), $json_implode() and $json_error()
* Add winref as $2 in /on channel_lost
* Remove tracking of "cursor window", a thing we haven't supported in 25 years
* Add support for (arglist) {block} statement type
* Add /window clearlevel <levels> (rb zlonix)
* The #define DEFAULT_STATUS_HOLDMODE was different from UPDATES and irregular
* Fix many things clang's static analyzer pointed out.
* Add /on reconnect_required (sb zlonix)
* /WINDOW winref SERVER servref should no-op if it's already that way.
* Add /window clearregex <regex> (rb zlonix)
* When printf()ing (time_t)s, always cast to (intmax_t) and use INTMAX_FORMAT
* When processing CTCPs with a script, don't short out /on ctcp or verbse_ctcp
* Add $serverctl(GET x PADDR) returns the p-addr of a connected server.
* Fix /server + so it correctly rolls over to server 0.
* Add $serverctl(GET x OPEN) [don't forget to document this]
* Set parsing_server_index around server errors so /timers create correctly
* Fix missing else causing all ssl cert's to be accepted
* Add support for tilde-expansion for /set ssl_root_certs_location
* If a server fd does not map to any server, close it.
* Updated version of 'reconnect' from zlonix.
* Convert our bundled test.c to be minimal c99 to avoid warnings
* Don't permit /reconnect on servers that are actively working
* /RECONNECT must not default to the current input window (bah)
* Reconnect script should use /server +refnum, not /reconnect
* Reconnect script should only do /server + on servers with groups
* EPIC5-2.1.6 (1981) (Impignorate) released here
* Add debuglog testing for /window search_back (for fusion)
* Strip all attributes when regex()ing /window search_back
* Fix warnings on mac os x 12 (rb skered)
* Add support for json object arguments ("kwargs")
* Add support for kwargs for $json_implode(): "root", "compact" (rb fusion)
* Add support for tcl8.6 -- run 'make makedepend'
* Remove dead code that was #if 0'd out for a long time.
* Make /pretend object when you're disconnected (rb skered)
* Change panic() to setjmp/longjmp back to main() instead of exit()
* Fix bugs with the new panic stuff.
* Add 'colors' and 'sasl_nistp256' scripts from zlonix
* Fix crash when you switched to AESSHA /encryption (rb zlonix)
* Add configure check for newlocale() for slackware 15 (rb fusion)
* Some CTCPs are "restartable" (encryption types). (rb zlonix)
* Add $serverctl(GET x NEXT_SERVER_IN_GROUP)
* New reconnect script (zlonix)
* Fix $realpath(); the 2d arg to normalize_filename is (Filename) (zlonix)
* Permit /lastlog -file to support ~-expansion (zlonix)
* /ON RECONNECT_REQUIRED only gets thrown when connected!
* Permit status bars on hidden windows to be generated in the ordinary way
* Add /set broken_aixterm for silly emulators that don't support bold+color
* Add ?? binary operator (coalesce), same priority as || ("DOR")
* A /window clear on a notified hidden window requires a full status regen
* Add $serverctl(DONT_CONNECT 1) to trigger the -s command line option
* Add $rgb() function to convert rgbs to 256 color (first try at this)
* Add support for ^[[38;2;r;g;bm (and 48-2) color codes
* Prefix $rgb() with ^X for skered
* Change hardcoded \003 and \030's to macros.
* Add $rgb({...}) and $rgb{#RRGGBB) (see UPDATES)
* EPIC5-2.1.7 (2011) (Cinereous) released here
* Add /set automargin_override (for skered) - always turn on automargins
* De-cruftify the /set automargin_override stuff (rb skered)
* Begin a larger project to transition (Window *) ptrs to winrefs.
* The intention is to make (Window *) a pure data object and not a linked list
* Repair regression with lineno in /set status_update (rb ce)
* Fix /on reconnect_required (doh)
* Continue the work on reducing (Window *)s outside of window.h
* More work (mostly focused on status)
* No more Window ptrs in status.c yay!
* Fix a bug with output going to the wrong window (rb fro, me)
* Fix bug with /window number (rb zlonix)
* Fix %F showing the wrong window refnum (rb zlonix, fro)
* Ensure lookup_window() is always handled for error correctly
* De-cruftify epic's install procedure. This is for all my pkg friends!
* Remove configure --with-threaded-stdout
* Remove crutches for people without INET6
* Remove legacy compat for people without getaddrinfo()
* Remove dead #define's in config.h
* Fix /on switch_windows (rb zlonix)
* Add $pledge() and $unveil() for openbsd (zlonix)
* Add a "newlist" type for migrating linked lists to.
* Improve handling of realpath() failures (rb zlonix)
* Make /log on fail (ie, reset to OFF) if the log can't be opened (rb zlonix)
* More improvements to window.c, refactor of /window query
* Several scripting changes by zlonix
* When writing to /log-files, check both refnum and user-refnum (rb zlonix)
* Allow adding window refnums, names, and uuids to /logs, and check them passively
* Fix /log properly showing targets for window-type logs (rb zlonix)
* Fix $winchan(#chan) not returning user refnum (rb zlonix)
* Improvements to sasl script (rb harzelein) (zlonix)
* More changes, moving towards de-listifying the window object
* Type punning project starts here...
* Add check for __attribute__((may_alias)) (gcc and clang)
* Tag all socket types with "may_alias"
* Tag all (List *) types and subtypes with "may_alias"
* List changes:
* - Use C99 union type casts to convert to and from (List *)
* - Create new List macros that use union type casts
* - Convert everything to use the macros instead of base fns
* - /crypt, /ignore, /bind, /log, /query,
* Alist (array) changes:
* - Remove (array_item) as a type that can be inherited from
* - Create (array_item_) as a container for a (void *)
* - Change (array) to keep a list of (array_item_s)
* - Change all the alist api's to take these new-style (arrays)
* - Convert notify lists from (NotifyList) to ordinary (array)
* - Migrate the 'ison' field from (NotifyList) out to the (Server)
* - Convert A005 lists from (A005) to ordinary (array)
* - Convert symbol lists from (SymbolSet) to ordinary (array)
* - Convert symbol api from (SymbolSet *) to (array *)
* - Convert nick lists from (NickList) to ordinary (array)
* Type punning project ends here ^^^^^
* Compile with -O2 instead of -O to satisfy pedants
* Begin removing linked list from (Window) type
* - Change window_list to _window_list in screens
* - This revealed every place we were manipulating the list
* - Change macros in input.c to not hardcode 'current_screen'
* - (This required changing INPUT_LINE to INPUT_LINE_ROW)
* - Eliminate hardocded uses of 'last_input_screen' in input.c
* When doing /window number, be sure to clear old refnum! (rb zlonix)
* Add sanity check for direct window lookups
* Have $serverwin() return user refnum not internal refnum (rb ce)
* Fix the sanity check just above (rb ce)
* Re-fix $serverwin() (rb ce)
* Changes to color script (zlonix)
* Add 'stringify.c', a program to convert data to a C string.
* Add support for grabbing configure params in info.c.sh
* Add support for grabbing $CC -v output in info.c.sh
* Add $info(y) and $info(z) (see UPDATES)
* Replace $info(y) and $info(z) with $info(z:*) (see UPDATES)
* Add all this z-stuff to the -v cli
* Use 'id -u -n' instead of LOGNAME in info.c.sh
* Create (union SSu) to capture all (struct sockaddr*) types
* Migrate all internal APIs to use (SSUs) to avoid type punning
* This makes our socket code all c99-compliant.
* Fix typo (reported by ce, fro)
* Fix another typo (reported by ce)
* Fix bogon with /assign output (rb ce)
* Reduce warnings
* Eliminate final warnings with -Wwrite-strings -W -Wall -Wextra
(except -Wno-pointer-sign -Wno-unused -Wno-unused-parameter)
* EPIC5-2.1.8 (2052 - Decoupage) released here
* EPIC5-2.1.9 (2053 - Decoupage) released here
* Eliminate final warnings with scan-build (clang's static analyzer)
* Eliminate found warnings with clang's undefined behavior checker
* Remediate the rest of clang's static analyzer's findings.
* Fix slurp_elf_file() (rb fro)
* Change SIZE_T_MAX to SIZE_MAX (rb ce)
* Handle dequoting a single quote (detected by ubsan)
* More changes to avoid undefined behavior and zlonix's "impossible bug"
* EPIC5-2.1.10 (2059 - Casuistry) released here
* Always call alists 'alist's instead of 'array's
* Add a #define UINTMAX_HEX_FORMAT for pointers
* Change (List)s to have a data pointer rather than inheritance
* This removes a major remaining type punning issue
* Remove '_window_list_end' from screens. Determine it on the fly.
* Add get_screen_bottom_window() to replace '_window_list_end'
* Change (Crypt) from a (List) type to a data object for List
* Change various crypt.c functions to take a straight (List).
* Change various crypt.c functions to create and store a (Crypt) in (List)
* Make (WNickList) private to window.c, use ordinary (List)s ordinarily
* Change window's 'waiting_chans' and 'nicks' ordinary (List)s
* Add ARAs - "automatically resizable arrays"; directly addressable arrays
* Comment out bucket_(var|cmd)_alias and bucket_builtin_* to avoid warnings
* Except bucket_builtin_variables() which is the only one actually used!
* Convert (Ignore) from a (List) type to a data object for List
* If a panic() happens during shutdown, then just go ahead and exit.
* Convert (Binding) from a (List) type to a data object for List
* Convert (Logfile) to use a plain old (List) to hold target names.
* Rename 'invislble_list' to '_invisible_list' for future deprecation
* Make everything using invisible list go through a function.
* Split 'delete_window' into 'unlink_window' and 'delete_window_contents'
* And make those two take refnums instead of a window ptr.
* /fe ("" .) foo {echo $foo} with /xdebug dword (rb ce)
* Fix /window swap_others (skered)
* Un-break $unveil() with no arguments (rb zlonix)
* Remove configure checks for sysctlbyname(), <sys/sysctl.h>
* Fix warnings from raspbian (rb zlonix)
* Don't include <sys/syctl.h> (not used) (rb zlonix)
* Do #define _GNU_SOURCE 1 for slackware (BAH!)
* Begin untangling the "signed pointer mess"
* Generally this means:
* - (char *), not (unsigned char *) is the "generic type" in C params
* - Pointer parameters have to have *equivalent* types, not just *compatible* types.
* - The type of "a bunch of bytes" is always (char *), not (unsigned char *)
* - Even though (char *) is not 8 bit clean.
* - Type type of literals is always (char *), not (unsigned char *)
* - So don't use (unsigned char *) for params unless the thing is NOT a BoBs.
* - So DO use (char *) and cast it on both sides of the call.
* - Don't have (const unsigned char **) params to modify a pointer
* - Prefer (const unsigned char *) and return a (ptrdiff_t)
* Change (Crypt) 'passwd' to unsigned because OpenSSL wants it that way.
* Eliminate all warnings from -Wpointer-sign
* - Mostly by eliminating nearly all uses of (unsigned char *)
* Eliminate all warnings from -Wunused
* - But not from -Wno-unused-functions or -Wno-unused-parameter
* Remove many spurious casts to and from (void *) (c99-ism)
* Fix warnings found by wider testing
* EPIC5-2.1.11 (2071 - Adynaton) released here
* Replace the historical (u_32int_t) with the c99 (uint32_t)
* Remove the now-unused 'hash' field in alist data items
* Remove accommodations for the long gone Interix system
* Don't hide __A() and __N() from clang, which supports them just fine
* We don't need to cover for systems that don't have memmove()
* We should cast the retval of alloca() within LOCAL_COPY().
* Stop redefinining NULL
* Remove #ifdef HAVE_SSL and HAVE_ICONV since they're mandatory now
* Build 'stringify' using $< and $@ (for separate builds) (rb zlonix)
* Remove the c99 macro shims for (List) and rationalize the API
* Remove the use of c99 macro shim "MAY_ALIAS" since it's untrue now
* Move "reconnect.orig" to "reconnect.old" (rb zlonix)
* get_server_protocol_state() can return -1 -- handle properly (rb zlonix)
* Guard bogons in set_server_protocol_state()
* Have info.c.sh.in use @builddir@ instead of @srcdir@ (zlonix)
* Add add_item_to_list() for List management, fix callers
* Don't let user create too many windows (rb ce)
* Fix configure check for raspberry pis with bad python (rb zlonix)
* Fix window refnum bogon (rb zlonix)
* EPIC5-2.1.12 (2078 - Secondment) released here
* When doing target searches, don't require global targets to have server
* Fix /query, particularly for dcc chats (rb fudd)
* Fix a null deref found by clang static checker (it was unused code)
* Fix widening when window is /clear and /window scrolladj off (rb skered)
* More conversions of (Window *) to int refnums
* Now the (Window) refers to its neighbors through int's! Huzzah!
* Now Screen's window list holds just an int to the head!
* Now the invisible list is just an int to refer to the head!
* This means we don't need to expose (Window) to #include "window.h"
* Add $ctcpctl(SET x ACTIVE 0|1), $ctcpctl([IN]ACTIVE)
* Add /ctcp_cloak and /ctcp_uncloak to /load ctcp (rb zlonix)
* Remove size limits on $repeat (rb ce)
* Fix CTCP CLIENTINFO (x) (rb zlonix)
* Fix swap_window() (rb fro, zlonix)
* Make _invisible_list an int and not a pointer. yay!
* Fix bug with /server showing p-addrs on connect (rb zlonix, skered)
* Continue converting internal window.c functions to refnums
* More conversions of internal window.c functions to refnums
* Complete conversion of internal functions from (Window *) to (int). Yay!
* Create screen restful api (well, the getters at least)
* Sunset global "Screen *screen_list" in favor of get_screen_by_refnum()
* Make everything that used (Screen *) use int refnums (except windows)
* Don't have dequoter() take clue, was causing ub (sorry, ce) (rb zlonix)
* Fix screen->last_window_refnum, was wrong type (rb zlonix)
* Fix /window clearlevel (need to normalize window refnums) (rb zlonix)
* Fix ub with utf-8 detection for non-utf8 console users.
* Revert dequoter() changes above (rb zlonix, ce)
* Fix ub with decryption (rb zlonix) [this code makes me nervous]
* Try a gentler fix for the ub in dequoter()
* Add the "clear_point" per-window where you last did a /clear
* When moving the "top of scrolling" around, honor the clear_point
* The /unclear command will ignore the clear_point (backwards compatible)
* The /unclear -noforce flag will honor the clear_point
* Fix ub when decoding base64 data with invalid characters
* Add /xdebug sequence_points and %{2}P and /set status_sequence_point
* Also, $sequence_point(). This is all an easter egg.
* Create notion of "Window Attachments", that belong to the screen
* Create screen-focused API to manage "window attachments" (window list)
* In the meantime, change (Window)->_next and ->_prev to ->_next_ and ->_prev_
* Sanity check the window-based window list from the screen-based window list
* Fix bug with 'clearpoint' (rb zlonix)
* Updated reconnect script (zlonix)
* Finalize replacement of (Screen *) with (int) refnums.
* Move Screen definition inside screen.c. Yay!
* Remove unused ANSIFLAGS from Makefile
* Add $tags(), support for CAP tags (zlonix)
* Add script for CAP negotitation (zlonix)
* Add "cert" field for server descs (client-side SSL certs) (rb tjh)
* Add ability to specify client-side cert for SSL (generally)
* Move Window definition inside window.c YAY~!
* Add dont_need_lastlog_item() so windows can repudiate lastlog items
* Make /window flush_scrollback repudiate lastlog items
* That way rebuilding the scrollback doesn't make flushed things re-appear
* Fixes to above (rb zlonix)
* Fixes/improvements from zlonix for the above
* Fix handling CAP multi-prefix (rb zlonix)
* Use ctime_r() [c99] instead of ctime() [c90]
* Add /clearignore in 2.8script (rb sobriquet)
* Begin a project to clean up message_from() in dcc [sb Harz]
* Handle /redirect /cmd better so it behaves sensibly.
* Expand the range of unicode 6 emojis (from 1f5ff to 1f6ff)
* Add /on ping (rb skered)
* Fix the addition of 'git_commit' to handle releases (rb zlonix)
* Update to 'colors' script (zlonix)
* Fix /window create (rb fusion); fix ub in wserv.c
* Have configure check for crypt()
* Adapt and regenerate configure to use autoconf-2.71 (sigh)
* Make $crypt() return empty if no crypt() [rb Tilt]
* In /load history, ^U should use erase_line not reset_line. (rb fusion)
* Add /set blank_line_indicator (rb harz) -- see UPDATES
* Add $symbolctl(GET <varname> 0 BUILTIN_VARIABLE ORIG_DATA) (very much WIP!)
* Don't have configure check for <sys/fcntl.h> (sigh)
* Don't use inline expandos ($L) in /load history -- use $builtin_expand()
* When /set status_does_expandos, double-quote the injected text (rb fudd, lw)
* Fix bogus use of * in on send_public in builtins (rb lw)
* Fix antiquated/bogus use of dword in /load country
* Add make uninstall, which does its best (rb skered)
* Rewrite /disconnect|reconnect so it behaves more reasonably (i hope) (rb CE)
* Fix a bogon with new STATUS_DOES_EXPANDOS stuff (rb wcarson)
* Add $windowctl(GET x CURRENT_CHANNEL) returns a window's current channel
* Fix where first char of continued lines didn't have attributes (rb skered)
/eval echo $chr(3)53$repeat(500 .) for example
* Remove a debug statement harz found with /window channel
* Make window toplines honor /set automargin_override.
* Use gcc13 -fanalyzer and clang-devel scan-build (static analyzers)
* The following changes were directed by the static analyzer
* Check/use -fno-delete-null-pointer-checks in configure
* Fix pop_integer() to return correct type
* Use fseek() instead of rewind() so clang doesn't complain about errno
* Don't check a pointer after using it so as to not offend gcc13
* If you pass no args to $unshift() or $push(), get nothing back
* Fix uninitialized clue in $currchans() [this was an actual bug]
* Strip down $globi() so I can fix static analysis complaints
* Fix uninitialized variable in $hookctl() [this was an actual bug]
* Don't just assume open() doesn't fail in opento() [actual bug]
* ifdef out split_message() and friends because i don't understand
what gcc13 is complaining about there and I don't use it
* Oh, you get the idea. more of the same as above
* Add /window lister "refnums" (see UPDATES)
* Explore writing output using fd's rather than (FILE *)s
* Add /set auto_reconnect_delay to reconnect (skered)
* Update cJSON to a more recent version (upstream)
* Everything below is part of the RGB project.
* Change name of "256 colors" to "extended colors" to encompass RGB
* Stop hardcoding the value of internal Attribute, so it can grow later.
* Introduce the concept of "Unified Color Values" which will grow later.
- The idea is to unify all the different number system into one 32 bit int
* Extend attributes to support 32 bit fg and bg ints
* Change the name "display attributes" to "internal attributes" for clarity
* Make sure to match up internal attributes reader and writer
* Change the name "logical attributes" to "ircii attributes", reader, writer
* Modify term_attribute() to hardcode how colors are output (for now)
* Change 'prepare_display2' to 'prepare_display_fixed_size' which is clearer
* Add $hex(<digits> <number>) which converts <number> to <digits> hex digits
* Support ^X#rrggbb,rrggbb to take RGB codes (yay! \o/)
* Change the ^[[38;2;r;g;b grokker to output RGB codes instead of 256 colors
* Change $rgb() to output RGB codes now (yay! \o/)
* Lots of internal changes to support larger Attributes, color spaces
* The above is the RGB project's first pass. Here goes nothing!
* Fix colors not showing on topline in p_d_f_s() (rb fusion)
* Revamp ^C handling to use 256 x-colors. (yay! \o/)
* Some compilers like it when you put parens around macro params (rb fusion)
* Make the ^C color xlate table absolute (so we can use RGB later)
* Fix brain-o (rb fro)
* Make prepare_display() tolerate longer lines without going haywire.
* Don't make /set output_rewrite subject to hard size limits.
* Remove length limit on physical lines of display
* Refactor double_quote() so I can fix rogue \s on the status bar
* Add support for bg colors in $rgb(), see UPDATES
* Fix more suggestions from the nitpickers in gcc and clang
* Fix $rgb() [rb wcarson, fusion]
* EPIC5-2.1.13 (2125 - Sockdolager) released here
* ^C16 was defined and was used by lice. sigh. (rb tjh)
* Toplines were one column too narrow (rb fusion)
* Very rudimentary support for CAP multi-prefix. more to come!
* Fix /load files
* Include new script, /load epiclogo -- a nice easter egg. :)
* Change /exec so it's fully line buffered. This fixes /exec cat.
* Stop using "inline", since the compiler does what it wants anyways.
* Roll back the CAP support, it inteferes with the SASL script (rb skered)
* Below is the "Spring Cleaning 2024" project
* Sunset flood detection and its attendant features (see UPDATES)
* Sunset the "clue" stuff
* Sunset the "alloc tracking" stuff
* Sunset the "delayed free" stuff
* Differentiate between "quoting" ("") and "escaping" (\)
* Below is the "ircaux.c reorg" sub-project
* Categorize and sort all function decls in ircaux.h
* Review each function; GC unused functions; collapse dupes
* Comment functions to force analysis of behavior, fix bogons
* Fix normalize_filename() (rb skered, foo, fudd)
* Fix off-by-one (too short) error in dequoter() [rb fudd,lw]
* Add support for OpenSSL's RAND_bytes() API
* Stop doing all the other legacy PRNGs.
* Sunset arc4random() support, particularly the builtin stuff
* Regen autoconf with 2.72, because a 1 line change causes 125k diff!
* Fix various complaints from gcc and clang's static analyzers
* Refactor upper()/lower() to a new strmap() to reduce dup code
* Rationalize and comment stristr() and rstristr()
* Random numbers now always use openssl -- /set random_source is ignored
* Fix "long topline can be longer than status bar" (rb fusion)
* Sunset support for socks[45], including "socks5p.h"
* Stop checking for any using <ieeefp.h> unless someone can explain why not
* Sunset support for systems without job control (!!)
* Various minor ircaux.c cleanups, nothing user-facing
* EPIC5-2.2 (2135 - Sedulous) released here
* Fix /xecho -b (rb fudd)
* EPIC5-2.4 (2136 - Sedulous) released here
* Fix malloc_strcat_word()
* EPIC5-2.6 (2137 - Sedulous) released here
* Fix binary to hex encoding
* EPIC5-3.0 (2139 - Brigadoon) released here
* Add circuit breaker if recalculate_windows gets jammed (rb Tilt)
* Fix two memory leaks; one major, one minor (thanks, valgrind!)
* Fix more memory leaks (thanks, valgrind)
* EPIC5-3.0.1 (2143 - Corrigendum) released here
* Don't disable padding for encryption/decryption (zlonix)
* Regex problems: Extended regexes don't support backrefs (boo!)
* Regex improvements: Use REG_ENHANCED for mac os x (wcarson)
* Regex improvements: Use -lregex for freebsd
* Add /1 /2 /3 ... aliases to /load altchan for window switch (zlonix)
* Use $levelctl(LEVELS) instead of list in /load tabkey.ce (zlonix)
* Updates to /load colors (zlonix)
* Updates to tabkey.jm (skered)
* GLOB_QUOTE does not actually exist
* Change notion of "away" to "away_message" [see UPDATES]
* Add notion of "away status" and $serverctl(GET x AWAY_STATUS)
* Add /exec -exit {} (rb fusion) [see UPDATES]
* Connecting to port 6697 now always forces SSL. So there.
* If a server connection fails w/o data, it might be an SSL server
* In a server desc, a + before a port means "do ssl" like other clients support.
* EPIC5-3.0.2 (2154 - Peregrination) released here 12/2/2024
* Backport the fix for /eval echo $rgb(#2C4267)#derp from epic6.
* Fix/rewrite $uname(), (rb sob)
* EPIC5-3.0.3 (2157 - Obturation) released here 2/27/2025
|