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 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910
|
@(#)$eterna: OLDNEWS,v 1.2 2001/08/12 15:42:26 mrg Exp $
Changes since ircII 2.2.9:
New functions:
o onchannel(nick #channel) is `nick' on `#channel' ?
o pid() returns the pid of this client
o ppid() returns the parent pid of this client
o chanusers(#channel) returns a list of the users on this channel
o for() like c's for with the separator being `,' not
`;'. (hop)
o fe() and fec() an alternative to recursion. (hop)
New commands:
o beep sends a beep to the terminal
o rbind function shows the keys bound to `function'
o stack action list arg `action' is either push or pop. list is one
of `on', `alias', `assign', `bind', or `set'.
only `on' is implemented currently
o window remove nick the opposite of window add.
o window number num changes the refnum of a window, forcing a
swap if so needed.
o window bind #chan permanently bind a channel to a window.
o window unbind [#chan] remove permanent binding to a window.
o abort drops a core file, and a saved file (hop).
o disconnect [ser [reason]] disconnects from the named server (number) with
the given reason.
Fixed commands:
o set help_window now works again.
o dcc close send nick file no longer requires the full path for `file'.
o transpose_characters now works with the cursor at the `end' of the
screen.
o topic * now works as expected.
Changed commands:
o userhost [nicks] -cmd now accepts any number of nicks.
o save [-all] [...] save `all' values, or any part. valid parts
are: assign, alias, all, bind, notify, on,
set and digraph.
o clear -unhold as well as clearing the screen, it also
unholds one screen. same as the binding
clear_screen
New scripts:
o newaway does `set show_away_once on' in scripts and
with as many nicks as you want
o uhnotify gives userhost with the notify list. works
much better with the new userhost syntax.
o complete, compl.mods tcsh-like complete scripts. see script for
more information.
o imap creates an irc map. see script for more info.
o undernet script to make ircII understand undernet extras.
Changed scripts:
o 2.8script updated for 2.8
o finger updated
o newformat updated
o netsplit updated
o tabkey fixes for nicks with \'s in them.
New variables:
o realname changes the value of your `realname' the
next time you change servers (or use
`/quote quit').
o notify_handler three values. `noisy', `quiet', and `old'
old makes /notify work like it did for 2.2,
`noisy' and `quiet' make it work on a lot
more events. join/quit/message/etc trigger
the notify, the difference being that `quiet'
won't show these extra differences, where as
`noisy' will. they both add/remove the
name to the internal `notified' list.
o screen_options this is orthogonal to xterm_options for
/window create.
Other things:
o redirect works much better. it doesn't `catch' things it shouldn't in
most cases.
o lots and lots and logs of bug fixes
o ctcp flooding is handled better.
o lots and lots of bug fixes.
o on dcc_raw dcc close works.
o all dcc messages go to level dcc
o level all contains `dcc' again.
o lots of bug fixes.
o gnu `autoconf'ified.
o did i meantion lots of bug fixes?
o if you add #define DYNAMIC_SLIP, you don't need to restart ircii
for it to notice the ip number of the local machine has changed.
note: this has since been obsoleted by a smarter, more general method.
o /window create might be stabler. really this time.
o new `-q' switch does `quick start' (no .ircrc processing)
New things for ircII 2.2
^^^^^^^^^^^^^^^^^^^^^^^^
Commands that have changed.
It is now possible to redirect to a DCC CHAT connecoitn with
REDIRECT =nick
You can have some command execute on the results of USERHOST with
USERHOST -CMD command
You can, and are recommented to, use WAIT different now with
WAIT -CMD command
You can have ircII create new winodows on screen or xterm's with
WINDOW CREATE
The IF and WHILE commands have changed.
New in 2.2.2
You can delete a server from the server list with
SERVER -DELETE <num>
Two new IGNORE levels, CRAP and CTCP.
New commands
WHICH script - returns which script will be loaded with LOAD
FOREACH - to iterate over a list.
TIMER seconds command - executes `command' after `seconds' seconds.
INPUT "prompt" command - executes `command' when input is read from
the keyboard.
PING nick - uses CTCP PING to work out how many seconds a remote
is from you.
PARSEKEY key - acts as though a key bound to `key' was pressed.
SENDLINE line - is the same as typing in the line.
HOOK line - does an ON HOOK check.
EVAL line - passes `line' to the inline parser, to be executed.
CTCP UTC - A time CTCP.
MLOAD - loads a menu.
New in 2.2.1
CTCP ECHO - Similar to CTCP ERRMSG.
WINDOW LOGFILE - Sets the logfile for that window.
New in 2.2.2
WINDOW NOTIFY_LEVEL - sets notify level for that window.
XTYPE - gives full control over /type
(Set help files for these)
New alias variables:
$W $V $H $U $~
New SETable variables
NO_CTCP_FLOOD
SHOW_STATUS_ALL
STATUS_USER1-3
MENU
HIGHLIGHT_CHAR
HELP_PROMPT
HELP_SERVICE
HELP_PATH
DCC_BLOCK_SIZE
LOAD_PATH
DEBUG
VERBOSE_CTCP
SCROLL_BACKWARD
SCROLL_FORWARD
SCROLL_END
TRANSLATION
BOLD_VIDEO
New in 2.2.1
SHOW_WHO_HOPCOUNT
New in 2.2.2
XTERM_OPTIONS
EIGHT_BIT_CHARACTERS
NOTIFY_LEVEL
And STATUS_FORMAT has these new variables
%W %X %Y %B %# %@
New in 2.2.2
%>
New/changed on hook's.
ON DCC_RAW
ON HOOK
ON INPUT
Several of the numeric ON's have changed.
New in 2.2.1
ON SERVER_NOTICE ***** THIS HAS CHANGED *****
New in 2.2.2
ON PUBLIC ***** THIS HAS CHANGED *****
New bindable keys.
ERASE_TO_BEG_OF_LINE
REFRESH_INPUTLINE
META3_CHARACTER
META4_CHARACTER
New functions.
$ENCODE()
$DECODE()
$TOUPPER()
$TOLOWER()
$TDIFF()
$CONNECT()
$LISTEN()
$ISCHANNEL(word)
$ISCHANOP(nick channel)
$WORD(number wordlist)
$WINNUM()
$WINNAM()
New in 2.2.2
$MYCHANNELS(window)
$MYSERVERS()
Other
You can no longer use \n in a line to separate commands.
Functions are now access with $name(). $%name() is not supported.
You can access varibles in structures by using struct[index]
as well as struct.index.
You can use { } style braces around aliases.
You can connected to the server via Unix domain sockets.
The display defaults to OFF while loading a script.
You can #define SCROLL_AFTER_DISPLAY to get 2.1.5 like scrolling.
New in 2.2.2
New command line option, -v, which prints the version
and internal version (release date).
You can use literal ^M's and ^J's to seperate the input line.
New in 2.2.3
The character atribute chars have changed in this version. They
are now:
^_ does underline
^B does bold
^V does inverse.
^O turns them all off.
old HISTORY file:
2.2.9
fixed memory leak
2.2.7
DCC SEND/GET now shows the size, if it exists.
You can now use \ to escape newlines in scripts.
2.2.5
New key binding, SCROLL_START, which moves the scroll
buffer to the start of the lastlog buffer. Bound to
meta1-< by default.
New arguemnt to /LASTLOG, -LITERAL, which allows you
to specify the next argument as the pattern to match.
Allows matching of numbers, eg
/LASTLOG -LITERNAL 6667
Channel keys, if set, are now shown in STATUS_MODE.
When DCC connections become connected, the remote IP number
is shown, for additional security.
2.2.3
I think the Makefile and config.h file are easier to use
now.
The control characters for bold, inverse and underline
have been changed to ^B ^V and ^_ respectively, so make
some sort of visual connection (B to bold, _ to underline)
with these characters.
2.2.2
New command, XTYPE. Happens like this;
XTYPE [-LITERAL] <text>
This text gets added to the input cursor, like /type does,
except bindings are ignored with the -LITERAL switch is
used.
New function $CURPOS() which returns the postition from the
start of the input line to where the cursor is now.
New STATUS_FORMAT variable, %> which makes anything beyond
it right justified.
It is now possible to close all DCC connections and kill all
EXEC'ec process by sending the client a SIGUSR1.
ON PUBLIC has now got this format:
$0 sender
$1 channel sent to
$2- message
New variable, NOTIFY_LEVEL, and window command NOTIFY_LEVEL,
which affect the notification of hidden windows. Same
arguments as LASTLOG_LEVEL.
Two new level of /IGNORE, CRAP, and CTCP.
New functions, MYCHANNELS() and MYSERVERS() added.
MYCHANNELS() takes a window refnum (defaults to current
window), and returns a string with a list of channels on that
windows server. MYSERVERS() returns a string of the names of
the servers you are connected to.
New variable, XTERM_OPTIONS, which are passed to xterm, when
using WINDOW CREATE. Note that -geom switches are already
generated by ircII, so these will be ignored by xterm.
New variables, EIGHT_BIT_CHARACTERS, which, if set, allows
you to input 8 bit characters (such as the Swedish character
set).
New SERVER option, -DELETE, allows you to remove servers
from the internal server list.
New command line option, -v, which prints the version
and internal version (release date).
2.2.1
New WINDOW command LOGFILE has been added. It takes one
argument, the file name of the logfile to be used for this
window. Nothing is appended to this name, if you use
WINDOW LOG. If you don't set a logfile for the window, and
use WINDOW LOG, then ircII creates a name for you (old way).
ON SERVER_NOTICE has been changed, and any script which used
this will most likely not work any more. In the new format,
$0 is the server name, and $1- is the notice itself.
New variable, SHOW_WHO_HOPCOUNT, which if set will not filter
out the hopcount on a who reply.
2.2c
New CTCP, ECHO, which just returns what you sent.
2.2
New alias variables `$W', `$V' and `$H' which expand to the
current working directory, the internal ircII release date,
in YYYYMMDD format, and the current numeric being processed,
respectively.
/ME and /DESCRIBE no longer add a period to the end.
New variable NO_CTCP_FLOOD has been added. When set, it makes
your client only send out one CTCP REPLY each second, and will
ignore anyothers it gets for that second.
New BINDable key function, REFRESH_INPUTLINE, which, amazingly,
refreshes the input line.
Several /ON NUMERICS's have been changed such that $0 is now the
server name of the originating. These include the 31x series
(/WHOIS replies), which in turn is /ON WHO and /ON WHOIS.
Numberics 401, have also been changd for this.
MSG -channel is no longer supported. Multi-channal make
this switch unreliable.
IRCII now supports CTCP PING. You can call this with
/PING nick[,nick[,nick...]]
And it will show you how many seconds to takes to get a
message to them and back. Be warned that too many nick
will cause the server flood control to be used, making
the times calculated wrong.
You can now redirect in to a dcc chat connection, with
REDIRECT =nick command.
2.2pre8
New command, INPUT has been added. It takes arguments like:
/INPUT "prompt" command args
Where it displays "prompt" and then calls command, with args,
and with the line prompted for as $*. The use of this is
strongly encouraged over the use of variable $"..". Similar
problems that occur in /wait.
USERHOST and HOST commands have been changed to allow
asymnronous command execution, depening on the return of
the userhost reply. The form is
/USERHOST <nick> -CMD <commands>
Where $0 - $4 expand to the nick, oper status, away status,
username and hostname respectively.
If you want the screen to be scrolled like it was in 2.1.5
and before (A line at the bottom), edit source/window.h and
define SCROLL_AFTER_DISPLAY.
DCC CHAT has be improved. No longer will a collision cause
nasty things to happen - the client will automatically connect
if a collision is detected.
LASTLOG has been changed so that you can now use it like this:
/LASTLOG <pattern> <count> to get the last <count> lines that
match <pattern>.
LIST -TOPIC has been fixed, and its functionality changed,
so that it do NOT over ride other switches, but works with
them.
Three new variables STATUS_USER1-3 have been added, to combine
with the new STATUS_FORMAT variables, %X, %Y and %Z. <poxaV>
New command, PARSEKEY, added. The argument is one of the key
functions, and the effect is the same as would be if you
pressed a key bound to that function.
New command, SENDLINE added. The arguments parsed to it
are processed like normal text input, except they are not
caught by ON INPUT.
ON INPUT changed to catch all inputted text, not just
text being send to a channel or a nick. New variable
INPUT_PROTECTION added to stop people shooting their
own foot with the new ON INPUT.
One new BIND functions has been implimented -
ERASE_TO_BEG_OF_LINE (not bound to anything by default),
erases from the current cursor position to the beginning
of the input line - <poxaV>
Added new variable HIGHLIGHT_CHAR. That is /setable to either
BOLD, INVERSE, or UNDERLINE. It effects the character that
ignore + uses.
Made dcc chat messages show the time after them, if away,
like normal messages.
Made ctcp not reply to global messages, either in the form
of $*.domain, or #*.domain.
Added a new command line argument. `-S'. It does the
oppsite of the `-s' option, and also made -s the default.
Make then run ircserv if they want it, not if they don't
know.
Rewrote BreakArgs() in parse.c trying to fix a bug with
referencing NULL pointers on domain/ox.
More of the source files reformatted. Starting to get some
distance with this finally.
We now understand that &channel are channels, for the 2.8 servers
that will be arriving soon.
DCC LIST now shows the start time, and the number of bytes
sent, and read on a dcc connection.
Added a ctcp reply to dcc.c so that when a dcc collision
occurs, we also inform the other client of the event, rather
than them not knowing about it. (obsoleted)
Added new functiality to the /TIMER command. If it is called
with out arguments, then it list the commands that were
added with /TIMER, that are pending to be executed. If it is
called with the -DELETE flag, and given a refnum (first column
in the timer list), it will attempt to delete the timer. You
can also specific the TIMER command to use a refnum of your
choice, with the -REFNUM n flag. It generates an error if
the refnum already exists, or you specify a negative number.
It is illegal to remove a timer from itself.
Added new functionality to /window server command. You can now
do /window server server.name:port:password:nick, and the nick
will be set properly for that server.
Two new functions, $ENCODE() and $DECODE(). They work as a
pair, such that $ENCODE($DECODE(blah)) will return blah, and
the other way around. The primary use is tha $ENCODE() always
returns a value that is suitable for a variable name, so that
the well used $strip_chan() alias is not needed. <Daemon>
Added -WIDE flag to /LIST. Shows the channel names, and their
sizes in as little space as possible. <Troy>
HELP now works properly again. No recusive calls to irc_io, and
no ping timeouts, but with the same functionality as 2.2pre7.
New variable added, HELP_PROMPT. If set ON, nothing different
happens, but if set OFF, then ircII will not prompt for more
help after showing a file.
All the header files reformatted, and some of the source files.
Fixed bug in window server which caused the client to become
confused about nicks for each window.
Fixed bug that caused ircII to continue trying to connect to the
last server in the server list if it failed on every other one,
and often flooded umode s people. Nasty Nasty.
Fixed bug in status.c/window.c that caused the window_notify
to be out of date on occasion.
When changing servers, or when the last window to a server is
closed, the QUIT is actually sent.
2.2pre8.troy
A new command has been added - /TIMER. This takes the form:
TIMER seconds command
and causes the given command to be executed after the specified
number of seconds. Any number of timers can be issued, and
they do not need to be issued in order. For example, the following
alias:
ALIAS JUMBLE TIMER 10 echo one;TIMER 5 echo two; \
TIMER 15 echo three
will cause "two", "one" and "three" to be printed at 5 second
intervals, starting with "two" in 5 seconds. Using /TIMER should
be the preferred approach over /SLEEP.
ircII can now take advantage of X windows and screen to create
windows in different xterms or screen windows. The command to
create such a window is /WINDOW CREATE. Each window created in
this manner gets its own input line. This feature is
particularly useful if you use multiple channels. There are
still some things to be fixed with this. In particular,
prompted input can give unexpected results ($"..", /Oper and
server passwords, confirmations), as can the old form of the
/WAIT command. In short, when using multiple windows,
expect the unexpected. To use this feature you will have to
define WINDOW_CREATE in source/window.c.
A new form of the WAIT command, /WAIT -CMD command,
(or WAIT -CMD %process command) causes the given command
to be executed after the wait condition has occured.
For example, the following alias:
ALIAS BACKWARDS wait -cmd echo hello there;echo hi there
Will actually display "hi there" before "hello there", because
the "hello there" echo is not executed until a WAIT token is
received from the server.
This new form of /WAIT is to be used in preference over the
old form. The old form has innumerable problems, among them being:
If one WAIT is executed while another is pending,
both will be registered as satisfied when the first
returns. A warning is now issued when this happens.
If you are in a prompted input sequence (such as oper
password, confirmation prompts, and $".." input),
results can be unpredictable.
It is not consistant with the message driven programming
model which exists in ircII.
With multi window enhancements the problems with WAIT become even
more prohibitive, unless used in the -CMD form.
If you are echoing output to the screen from within the WAIT -CMD
form, it is probably a good idea to record the current window
and use XECHO -WINDOW to ensure that output goes where it should.
2.2lynx.pre8
Modified /me (edit.c) to automatically append periods,
feature used by new 'action' script.
Revamped many scripts, the config.h, little changes to
Makefile and help files.
Globally replaced all put_it("*** .. by new function say()
and changed put_it_always into yell.
2.2pre7.myc6.phone
Added Megre support of irc 2.8, there is still a long way to
go here. Code for the user mode e has been written, but not
added, as it probably won't be in the server.
Added window refnum to the output of the WINDOW LIST command.
Notify bug on start up fixed.
Two new functions GETPID() and GETPPID() added to allow the
process ID, and parent process ID to be accessable with in
a script. These have been left out for now.
Changed the KICK command, to allow the sending of kick
comments.
Bug in QUIT_ON_OPERATOR_KILL fixed, where last time was
not `seen' for long enough to be read.
Mail checking bug fixed.
Added new variable SHOW_STATUS_ALL. When set, it shows everthing
in every (visible) status line. When not set, it only show
things that (I think) are relevant to that window, and are
not the same as the current window. Things like nickname,
usermode, are only shown on one window, if connected to only
one server.
Made DCC with no arguments the same as DCC LIST.
Added the window notification status to WINDOW command (no args).
Away changed to allow different away messages on different
servers. Two flags -ONE and -ALL (-ONE default) for the sending
of the away message to the servers you are on.
Bug in $RAND() fixed <Daemon>.
2.2pre7.myc6
HELP_SERVICE and HELP_PATH are now SETtable variables.
Memory leak in add_to_window() is fixed.
WHICH doesn't wedge the client (by corrupting load_depth) any more.
MSG *, QUERY *, CTCP *, REDIRECT *, NAMES *, LIST *. [Daemon]
$U inserts cut buffer. [Daemon]
$RAND() is a bit more portable and doesn't use floating point.
Scripts updated to use `:' as noop rather than `#'.
2.2pre7.myc5
QUOTE USERHOST *really* doesn't core dump any more. B-)
`voice' script updated for new script parser.
2.2pre7.myc4
The Makefile now handles making the symlink for config.h. This
has the advantage of being slightly easier to use on a machine
without symbolic links; you just change the `LN' variable in the
top-level Makefile to `cp'. It also has the advantage that we
won't see patch files with two copies of the diffs for config.h
any more. B-)
Makefile.proto has been rearranged somewhat, and the dependencies
have been updated.
DCC GET bug from myc2 fixed.
2.2pre7.myc3
All the bloody #defines at the beginning of keys.c are now in
keys.h.proto, and are handled by `count'.
Stupid inverse (and bold) video bug from myc2 fixed.
2.2pre7.myc2
^Os are no longer appended to lines before storing them in the
lastlog. This avoids adding ^Os to lines in the log file when
using /LASTLOG. Bleah.
New commmand :, which is a noop. Using # as a noop command is
strongly discouraged, as it is treated differently in scripts.
(# at the beginning of a line in a script (ignoring spaces) means
to ignore the whole line.)
Bug in handling quoted braces from 2.2pre7.myc1 fixed.
`DCC GET nickname' gets the first file offered by `nickname'.
KICK comments are now displayed, if present.
Removed silly whitespace limitation in scripts.
JOIN no longer automatically adds a `#' to a channel name if missing.
[Avalon]
2.2pre7.myc1
New commands WINDOW BACK, NEXT, PREVIOUS. [phone]
New commands ON HOOK and HOOK. [Daemon]
DCC SEND and GET now display speed when transfer is finished. [Avalon]
(Rest of these by Mycroft:)
Added declaration for `newexp' in whilecmd() which Troy left
out.
Removed line discipline code for AIX.
Fixed ON_KICK.
Tabs now display in reverse video after limit reached, so you
can actually see them.
-c works again.
ON WINDOW doesn't recurse (and thus doesn't crash).
TOPIC and ACTION messages go in the right windows.
PAUSE_AFTER_MOTD is now a compile-time option and actually
works.
QUOTE USERHOST doesn't crash.
QUOTE ISON does something sensible.
USERHOST and ISON with no arguments no longer corrupt the
whois queue.
\ is no longer converted to \\ by /SAVE and in the history.
/MSG FOO, does the right thing.
/TYPE \^ now types out a caret, which you couldn't do before.
White space around braces is less important. The main effect
is that K&R style braces now work. You should be able to use
whatever indenting style you prefer. Note that braces inside
a command should be quoted now, a la \{ and \}.
2.2pre7
Meta4 is now sticky. That is, Meta4-C-D-E-F-G invokes the
meta4 versions of C, D, E, F and G. This effect lasts until
meta4 is invoked again. Additionally, the Meta4 characters
^h, SPACE, h, i, j, k, x, H, I, J, K, L and X have been
bound in such a way that BIND ^[ META4_CHARACTER now
gives a vi editing mode.
Bugs in complex '@' expressions fixed.
Thu Jun 11 09:48:47 1992 Charles Hannum (mycroft@ai.mit.edu):
* Makefile: Change RS/6000 support.
* config.h (DEFAULT_STATUS_CHANNEL): Delete duplicate definition.
* script/action: Remove `on's.
* script/bigcheese: Convert to 2.2pre6 syntax.
script/finger.who, script/fnet, script/killpath: Likewise.
script/kpstat, script/log, script/nicks, script/repeat: Likewise.
script/shell, script/voice: Likewise.
* script/version: Update version number.
script/netsplit: Rewrite to handle multiple splits.
script/brc: Fix typo.
* source/alias.c: Change function prototypes to match definitions.
source/ctcp.c, source/edit.c, source/status.c: Likewise.
source/term.c, source/translat.c, source/vars.c: Likewise.
source/window.c: Likewise.
* source/edit.c: Put comment delimiters around text after #endif.
source/help.c, source/hold.h, source/irc.h, source/ircaux.c: Likewise.
source/lastlog.h, source/term.h: Likewise.
* source/exec.c: Add support for AIX 3.
source/help.c, source/irc.h, source/ircserv.c: Likewise.
source/log.c, source/newio.c, source/scandir.c: Likewise.
* source/ircaux.c: Rename _RS6000 to _IBMR2.
source/status.c: Likewise.
* source/term.c: Remove unnecessary code for AIX 3.
* source/vars.c: Replace NULLs with 0s in integer context.
* source/status.c (convert_sub_format): Make bletch an array to
prevent being put in readonly storage.
(status_channel): Use format string even if *private*.
* source/notice.c (parse_server_notice): Don't call
reconnect_all_channels and reinstate_user_modes if first connect
(phone bug).
* source/menu.c: Make sure menu cursor doesn't get redrawn if menu
disappears.
* source/exec.c: Make sure messages get redirected after EXEC output.
* source/edit.c (evalcmd): Fix EVAL when subargs == NULL.
source/if.c (ifcmd, whilecmd, foreach): Likewise for IF, WHILE,
and FOREACH.
* source/if.c (whilecmd): Copy exp on every iteration, as parse_inline
destroys it.
* source/irc.c: Update version number.
* source/dcc.c: Include arpa/inet.h for prototypes.
* script/ping, script/whowas: New scripts.
2.2pre6
WARNING. 2.2pre6 will almost certainly require changes
to your .ircrc and script files due to changes in the
parsing. The intention at this point is to keep the new
syntax forever. That is, unless there's something I
have missed, there will be no further script breaking
changes.
DISPLAY now defaults to OFF in scripts.
Two new meta keys have been added. Meta3 is bound by
default to META1-[, and Meta4 is left unbound.
DCC SEND now checks that a file exists before sending
the request. Memory allocation bugs when using DCC
file transfers with ~ pathnames fixed.
If you have experienced corrupted output from ircII,
this should be fixed.
Several display bugs, including a memory leak related
to using windows have been fixed.
Missed PINGs when in the help pager fixed.
A new command, EVAL, has been added. EVAL causes
its arguments to be passed through variable substitution
and executed.
Alias substitution is no longer performed in scripts,
regardless of the setting of INPUT_ALIASES. To force alias
substitution, use EVAL.
A command beginning with '@' is taken to be an
alias expression as would be normally parsed
from within ${}. The expression is substituted and
the substituted value discarded.
The script loading path is now accessible as the SET
variable, LOAD_PATH. Additionally, if you are unsure
as to which directory a script being loaded is in,
the /WHICH command will display the full path to a
script. eg. /which global shouls give something on all
systems.
Bugs in Menus which caused core dumps have been fixed.
Bug in DCC which caused incoming DCC messages not to be
directed to window level DCC fixed.
Bug with +s channels and /names fixed.
Connections to servers on UNIX domain sockets are now
supported.
Aliases can now be recursive up to a maximum level
as specified in the variable MAX_RECURSIONS.
The inline variable parser now substitutes \n, \r, \0
and \p too their equivalents in the CTRL-P convention.
Having ! as the first character for the INDEX function
no longer causes just unescaped characters to be matched.
It is now a normal character in this context.
The $%FUNCTION syntax is no longer supported. You can
still use functions - just remove the '%'.
The parser used when INPUT_ALIASES is on has been changed
again. Text between brackets (...) and {...} is no longer
subject to alias expansion, unless the opening bracket is
escaped (ie... \( or \{ ). This affects alii and input when
INPUT_ALIASES is on.
Additionally, You can return to full alias substitution
within ${...} by enclosing the substitution text in
[...]. Thus if $0 == test, and $bear == black
${[$0]} expands to "test"
${[$bear]} expands to "black"
${bear} also expands to "black"
${ bear == [black] } expands to "1",
${ [$0] == [test] ) expands to "1"
${ [$0] == [black] ) expands to "0"
${ [$0](this) } expands to the return value of $test(this)
There is a new form for the if command. This is:
if (expr) {then_commands} {else_commands}
Note that because the expression, the then_commands
and the else_commands are between brackets, they are
not expanded in alias expansion. This is taken care of
in the if statement itself. The expression is treated
as if it were enclosed in ${...}. Thus all the comparisons,
groupings, arithmetic and boolean operations that a
available in ${...} can be used in the expression.
Also note that you can have more than one command in
each of the then and else parts of the condition.
The result is that what used to look like this:
on ^send_public * if "$^!^=^>^<C=$^!^=^>^<0" \
"echo $%format(11 <$N>) $^"1-" \
"echo $%format(10 <$N):$^"0> $^"1-"
can (and must) now be expressed like this:
on ^send_public * if ( C == [$0] ) \
{ echo $format(11 <$N> $1- } \
{ echo $format(10 <$N):$0> $1- }
Note that this means there is no longer any need for using the
^ escaping, and this may disappear in a later version unless
there are strong objections.
The same thing has happened to while and foreach, which now
have the syntax:
WHILE (expr) {commands}
AND
FOREACH structure index {commands}
The effect of this on WHILE and FOREACH is that you no longer
need to double up occurrences of '$'. You can still get this
effect if you wish by escaping the leading bracket in the
appropriate expression. Additionally, both while and foreach
can now be recursive. Thus the following works as expected:
assign a.1.1 one one
assign a.1.2 one two
assign a.2.1 two one
assign a.2.2 two two
alias fe
{
foreach a i
{
foreach a.$i j
{
echo $i $j $a[$i][$j]
}
}
}
THE OLD SYNTAX FOR IF, WHILE AND FOREACH IS NO LONGER SUPPORTED.
In scripts, lines beginning with '{' and containing other text
are joined on to the previous line with one space placed between
the two lines, thus the above example could have been written as:
on ^send_public * if ( C == [$0] )
{ echo $format(11 <$N> $1- }
{ echo $format(10 <$N):$0> $1- }
Additionally, the {..} syntax for grouping within scripts
can now be nested. Nested {...} pairs must have the brackets
placed on their own line, and the brackets are included in the
resulting text. Thus the following is equivalent to the above:
on ^send_public * if ( C == [$0] )
{
echo $format(11 <$N> $1-
}
{
echo $format(10 <$N):$0> $1-
}
Or, for a little more verbosity:
on ^send_public * if ( C == [$0] )
{
echo Current Channel:
echo $format(11 <$N> $1-
}
{
echo Another Channel:
echo $format(10 <$N):$0> $1-
}
2.2pre5
Bug in "Password" prompt for server passwords fixed.
Bug in WINDOW REFNUM fixed. <phone>
Bug in ON DCC_CHAT which prevented interaction with
the server fixed. <phone>
Bug which caused +w'd non-opers to see their own WALLOPs
twice fixed. <phone>
Additional operators have been added to the ${...}
expresions. They are the equality and inequality
operators (==, !=, >, >=, <, <=), the unary NOT
operator (!), and the conjugation operators (&&, ||, ^^).
These take 0 as false and any other number as true,
and return 1 as true and 0 as false.
On top of these are the assignment operator (=) and the
string concatenation operator (##). The assignment operator
means that the following now makess sense, and causes the value
of first_name and last_name to be concatenated with a space
inserted between them, and the value assigned to full_name.
@ full_name = first_name ## [ ] ## last_name
The following is also possible:
@ a = b * (c + d)
A new variable has been added for script developers.
The DEBUG variable enables three types of debugging
output dependant on the settings of various bits.
bit value purpose
0 1 Display all commands executed
1 2 Display all alias substitutions made
2 4 Display all function calls and return values
More changes to parsing have occured. Firstly, there
is no longer any '\' substitution on input. Thus, when
you type text to a channel, in a /msg or elsewhere, it
comes out exactly as you type it.
On the other hand, '\' processing does exist anywhere
that alias expansion occurs. The result is that if you
have INPUT_ALIASES ON, you won't notice the difference.
Also, aliases and ons still get the '\' substitution
performed on them. All \c pairs where c is any character
are collapsed to just 'c' after all parsing has been done,
with the exception of ", !, =, < and >, which are
required by if and while. This shouldn't be the case
for much longer.
Function and array index expansion now only observes
unescaped bracket delimiters. Thus $%index(\) abc\)def)
returns 3.
Finally, the '%' is no longer needed for functions.
Thus you the above example is the same as
$index(\) abc\)def)
The net result of all the changes to parsing in this
version should be to make both command entry and alias
construction much more intuitive.
A new function, TDIFF, has been implemented.
TDIFF takes as its argument a time interval in seconds
and returns it as the english representation of
that number in the form:
dd days hh hours mm minutes ss seconds
omiting any zero values, unless all values are zero,
in which case the seconds field is returned.
Bugs in dumb mode fixed.
The parsing of ${} expressions has been changed. When
mathematical expressions are being used, order of
operations is respected and brackets are recognised
and treated correctly. Additionally, functions can
be referenced (without needing the % qualifier), and
functions and aliases can be mixed to give versatility.
This may break some numeric expressions, but will make
a lot more a whole lot more legible and intuitive. For
example, the following:
${3*(INDEX(x abcxdef)+2)}
Yields 3*(3+2) = 15
or, if you have an alias:
ALIAS TEST echo ${INDEX(x $0)*5}
and then type:
/TEST abcxdef
you will get back 15
Then, if you have a set of functions, A.1, A.2, A.3,
and the variable IND is set to 2, then ${A[$IND]()}
will resolve to an invocation of A.2 as a function.
If you have a function, F, and a pair of arrays A
and B, each with elements numbered 1-10, and F returns
either A for 1 and B for 2, then the following:
${F(2)[5]}
returns element 5 from array B.
Because order of operations is now respected, both
${3*2+5} and ${5+2*3} return 11.
2.2pre4
/WHO * now results in failure if you are not on a channel.
Behaviour of positioning when menus are being used has been
corrected. There's the possibility that I broke something
else while doing it though.
The worst of the memory leaks has been fixed. There are
still some memory leaks apparently present. If you compile
with ALLOC_DEBUG defined, then when the memory tracking
table gets full (indicating a leak), IRCII will abort,
generating a debug.log which lists all allocated blocks
with their sizes and contents in ASCII. This should
prove helpful in tracking leaks.
The slosh (\) no longer quotes characters which have no
special meaning, thus allowing you to enter a '\' in the
text without doubling it up. Additionally, The \n sequence
no longer works. Use ';' in aliases instead, and quote the
CR or NL character to get the same effect interactively
(ie. ^Q^J or similar).
Fixes to the multitude of bugs in pre3.
2.2pre3
If the environment variable "MAIL" is set, IRCII now uses
it to determine which file to check for mail.
The VERBOSE_CTCP variable has been fixed.
A new function, CONNECT(), gives access to TCP sockets
at the application level. The arguments are the destination
host and port number, and the return value is the
file descriptor (fd) associated with that socket.
A null file descriptor indicates that the host could
not be resolved, and a negative descriptor indicates
that an error occured in connecting.
To test this facility, create a connection to the
echo service on some machine with:
/alias socktest echo $%connect(host 7)
Which will echo the file descriptor.
Then send messages to it with:
/dcc raw fd host message
These will be echoed back at you by the remote host.
Incoming messages can be intercepted with ON DCC_RAW,
which has the following formats:
fd host D data
fd host C
fd host N port
fd host E port
The D message indicated incoming data.
The C message indicates that the socket has been closed.
The N message indicates that a socket listening on the
specified port has accepted a connection. fd in this case
is the file descriptor for the new connection.
The E message is generated when a CONNECT() results in a
successful connection.
The LISTEN() function creates a listening socket. It takes
a single argument - the port number on which to listen. If
this is zero, then a port number is assigned. The return
value is the port number on which the socket is listening
for connections. A port number below 1025 results in an
error.
Conventions to be used for the socket access:
Scripts using sockets should never use the
serial number 0 in their hooks. As their first
act before using the DCC_RAW hooks, they should
set:
ON ^DCC RAW * #
To ensure that all raw DCC sockets produce no
output.
A new set of hooks should be created for each
active socket at a chosen serial number. One
must always exist to detect the close message,
and as its last act must remove all the hooks
for that file descriptor.
You can now "send" a message to a command. For example,
/msg /echo this is a test
is the same as
/echo this is a test.
The primary use of this is to allow a /QUERY of a command.
Thus if you /query /echo, everything you type to the
current window will simply be echoed back, and if you
/query /exec, you can use IRCII as a shell. Note that
when querying a command, you may need to use XECHO -WINDOW
to ensure output goes to the right place.
CTCP UTC has been added. This is primarily for robots
to send date and time information to users and have it
displayed in local time. The format of the UTC
CTCP is:
UTC number
where number is the ASCII representation of the 32 bit
integer representing the time as is used on UNIX machines.
When IRCII receives this CTCP, it replaces the text of
the local time expressed in the local language back into
the original message. Thus if you send the following:
/NOTICE nick The time is ^AUTC 702777074^A
The user might see:
-yournick- The time is Thu Apr 9 09:51:14 1992
(if their timezone is Australian Eastern Standard Time).
Menus have been added. The menus are totally user
configurable and a test menu has been provided in
the top level directory of the IRCII source distribution.
To use this menu, copy it to your home directory,
run IRC, and to the following:
/MLOAD test
/SET menu Main Menu
Control-R is bound to ENTER_MENU, and while in the menu
you can use vi-like keys or EMACS-like keys to move
through the options, and either '.' or SPACE to select
an option. The format of the menu file is as follows
A line beginning with a '#' represents a comment.
Blank lines are ignored.
A line beginning with the word "MENU" starts a new menu
and gives it a name.
A line beginning with the word "OPTION" adds a new option
to the menu, gives it a name and describes what it does.
For more information, see the demonstration menu shipped
with the sources.
Bug which cleared the input line when calling WAIT from
ON TIMER fixed.
Bug which left channel names from a previous connection
in the channel list even if they could not be rejoined
fixed.
User modes are now restored after a disconnect/reconnect.
Bug which caused the scrollback buffer to duplicate messages
when HOLD_MODE is on fixed.
USERHOST is now used in place of WHOIS to retrieve IRC-Op
information on WALLOPing users and in the case of 2.6.2
servers, user@host information for IGNORE. This means
that there are now three commands going through the WHOIS
queue - WHOIS, ISON and USERHOST. It is not a good idea
to /quote these, as you will be likely to corrupt the
WHOIS queue. USERHOST can now be issued with /HOST and
/USERHOST
It is now possible to have more than one ON hook executed for
each event triggering a hook. This has been done by adding a
new serial number concept to the ON command. Each ON hook has
a serial number attached. Serial numbers can be any number
from -maxint to maxint, with the default being 0.
When an event triggers a hook, IRCII now goes through the ON
hooks added for that event, and for each serial number used
by ON hooks in that hook type, finds the best match out of those
ON hooks which have that serial number and executes that ON
hook. The hooks are executed in order of serial number. Thus
if you set up the following set of MSG hooks.
ON #^MSG -666 * echo Message coming:
ON ^MSG * echo Message from $0: $1-
ON #^MSG 666 * echo I got one, I got one!
ON #^MSG 666 WiZ echo WiZ hath spoken
will cause the following to appear when you receive a message:
Message coming:
Message from nick: text
I got one, I got one!
And the following if you receive a message from WiZ:
Message coming:
Message from WiZ: text
WiZ hath spoken
The default serial number is 0, and the serial numbers are always
executed in order, starting with the lowest, and ending with the
highest.
Although the '^' modifier can be used with any serial number,
it will only suppress the decault action if used with serial
number 0. Thus if the only message hook you have is:
ON #^MSG -666 * echo Incoming:
You will see the following when you receive a message:
Incoming:
*nick* text
It is advisable to place any ON hooks which do not suppress the
default action in a serial number other than 0. In particular,
TIMER hooks, which are generally not intended to exclude other
TIMER hooks, should be placed at different serial numbers wherever
possible, and never on 0 (since 0 is the most likely place to
get a clash if anybody does use it).
The # modifier (bind to current server) for ON commands has been
changed to '&'.
Fixed display bug with reverse and bold modes which caused
these modes to be turned off if a line wrapped. Also fixed
NOTIFY and LINKS problems.
The bug in user mode processing when a MODE command makes no
actual changes to the user mode has been fixed.
A new status line variable, %B, gives the number of lines
in the hold buffer for the current window. Its format
is controlled by the STATUS_HOLD_LINES variable. %B is only
updates once for every ten lines.
New status line variable, %# added. This returns the current
user mode. Its format is controlled by the STATUS_UMODE
variable.
The behaviour of FLUSH when HOLD_MODE is on has changed.
it now clears the hold buffer for the current window before
flushing further output from the server. The result is that
with HOLD_MODE on it is now impossible to get into a
situation where you are being flooded by server output
with no hope of reprieve.
2.2pre2
^G bug fixed. A couple of small things cleaned up.
2.2pre1
Note that there have been several new variables added in
this version, so old config.h files won't work. Also the
IRCIIhelp service is being regionalised. You should set
HELP_SERVICE to the nearest IRCII help service in config.h
Three new BIND functions have been implimented -
SCROLL_BACKWARD (bound by default to ESC-p), SCROLL_FORWARD
(bound by default to ESC-n), and SCROLL_END (bound by
default to ESC-e). These allow you to scroll through the
output stored in LASTLOG without having to use the
LASTLOG command. SCROLL_BACKWARD causes IRCII to scroll
half a window of LASTLOG data on to the screen, pushing
whatever is in the window towards the bottom. ESC-p
reverses this, thus looking at newer parts of the LASTLOG
history. ESC-e exits this scrollback buffer facility
at any time. This facility is probably best used with
HOLD_MODE set to ON, and requires SCROLL to be set to ON.
If you use this facility with HOLD_MODE off, then when you
leave the scrollback buffer, either by SCROLL_FORWARDing
to the end of it or SCROLL_ENDing, all text that has been
accumulated will be printed. If you have HOLD_MODE on,
the window will be held until you manually unhold it.
Provision has been made for memory allocation debugging
for developers. Add -DALLOC_DEBUG to the CFLAGS, and
IRCII will abort (generating a core dump) should memory
be freed which was never allocated. Additionally, a
dump will be made showing the locations of all allocated
memory with the two preceding long integers in memory.
Additionally, SEGV will be trapped and will generate
a similar log, with the addition that if you are using
an IBM RS6000 it will dump a heap walk. People on other
platforms will need to either add heap walk code for
those systems or manually walk the heap using the
debugging information. The dump is stored in debug.log
A new XECHO flag, -WINDOW, has been implimented. Thus:
XECHO -WINDOW 1
always sends output to window 1, and
XECHO -WINDOW JUNK
always sends output to the window named "junk". If the
window does not exist, the -WINDOW flag has no effect,
except to cancel any earlier -WINDOW flag.
Two new modifiers have been added to /ON. If the first
character of the first argument (the hook name or numeric
number) is '#' or '@', the ON only affects things relating
to the current server. Additionally, if it is '@', and there
is no match for things in the list of ONs applying to the
current server, it will not resort to the default list.
[Changed in pre3]
WHO -LUSERS (returns only non-operators) and
WHO -NICK <nickname> (returns only people matching the
nickname argument) have been implimented.
A new variable, DCC_BLOCK_SIZE controls the size of
blocks sent when sending files using DCC SEND.
The default is normally 512. Increasing this number
increases network efficiency. Decreasing this number
slows down the transfer, but also decreases the chances
of the transfer being aborted over bad links.
Use of real estate when SCROLL is ON has been improved.
There is no longer a blank line between the text and
the status bar. This takes a little getting used to,
as now the screen scrolls before a line is printed
rather than after.
You can now include text modification characters
(^B, ^V, ^_ and ^O) in STATUS_FORMAT. If you change
the format at the start of STATUS_FORMAT, you will
have to do it again after any %C or %U, as these
both reset it to reverse video.
You can no longer abbreviate QUIT, SIGNOFF, BYE or EXIT
in NOVICE mode.
All restrictions on IGNORE by user@host removed.
Internals given a decent reworking. There could be bugs here.
You should now never see ircd's colons marking the last
argument.
Added two new wildcards to the pattern matching system.
'%' matches any sequence of characters except a space.
'?' matches any single character.
International character set support added. Translation
tables are supplied for various terminal types. To activate
the appropriate character set, /SET TRANSLATION charset_name
eg. For an IBM PC set up for US English (Code page 437),
/SET TRANSLATION CP437
The translation tables assume that text transmitted on the
servers adheres to ISO 8859/1. If your terminal understands
ISO8859/1, set TRANSLATION to LATIN_1. The default is ASCII,
due to the fact that nothing can be safelt assumed about any
terminal.
Bug in /set history 1 fixed
Bug with redirecting to yourself fixed. It is now illegal
to redirect to yourself.
$P (Chanop status variable) fixed, and a new status line
substitution, %@, which subsitutes to STATUS_CHANOP if
you are chanop on the channel shown on the status bar.
$~ now substitutes to the last word on a line.
New functions:
ISCHANNEL(word) Returns 1 if word is a valid
channel name.
ISCHANOP(nick channel) Returns 1 if nick is a chanop
on the given channel.
WORD(number wordlist) Returns the specified word from
wordlist. The first word is
numbered 0.
WINNUM() Returns the current window number.
this is always the window which is
indicated by STATUS_WINDOW.
WINNAM() Returns the current window name.
this is always the window which is
indicated by STATUS_WINDOW.
If the window has no name, it returns
nothing.
INVERSE_VIDEO variable and beyond fixed.
A new character attribute, bold, has been added. This
is enabled and disabled with ^_. Disabling bold has
the side effect of disabling inverse and underline
without recording it internally. You should allow for
this when using bold text. Bold text can be enabled
and disabled with the BOLD_VIDEO variable.
The status line problems with attribute characters
have been fixed. You can now include attribute characters
in the status line and they will take effect. One
application of this is to change the status bar from
inverse text to bold or underlined by including ^_ or
^V at the start of STATUS_FORMAT.
You can now refer to the elements of structures
(normally Structure.Element) as Structure[Element].
When you do this, Element is evaluated as an expression
before it is appended to Structure. Thus if A has the
value "TEST", and there is a variable "B.TEST" with the
value "Message":
echo $B[$A]
yields:
Message
These can be repeated, as in:
$MATRIX[0][0]
which becomes "$MATRIX.0.0". The result is a pseudo-array
effect.
New command, FOREACH has been added. The format is
FOREACH structure variable command
This causes command to be executed once for each
element in the named structure, with variable
substituted to the name of the element. Thus
if you have assigned:
/ASSIGN A.1 ONE
/ASSIGN A.2 TWO
/ASSIGN A.3 THREE
/ASSIGN A.4 FOUR
/ASSIGN A.5 FIVE
and have an alias:
/ALIAS SHOWA FOREACH a i ECHO $$i
and type
/SHOWA
The output will be:
1
2
3
4
5
Alternatively, you can use:
/ALIAS SHOWA FOREACH a i ECHO $$a[$$i]
to get:
ONE
TWO
THREE
FOUR
FIVE
Note that if you use numbers, 11 comes before 2.
The easiest way around this is to start numbering
elements at a higher number, such as 100.
Note that FOREACH, like WHILE, does variable
substitution once when the FOREACH command is
evaluated, and once for each iteration. This
means that in general you will need to double
up any occurences of '$'.
2.1.5b-2.1.5g
Functionality of WHO -HOST and WHO -SERVER returned.
New WHO flags, -HERE and -AWAY added.
New functions:
MATCH(pattern word-list) Returns an index into the word
list of the first word that matches
the pattern, starting at 1 and
returning 0 for no match.
RMATCH(word pattern-list) Returns an index into the pattern
list of the pattern that word best
matches.
STRIP(charlist line) Strips all occurrences of characters
contained in charlist from the line.
You no longer need to supply the leading # to JOIN and PART.
If the leading # is omitted, and you are on a 2.7 server,
it will be inserted. Notable exceptions to this rule are
channel '#', which would have no name if the # were omitted,
and channels beginning with '##'.
CTCP Action format changed so as not to interfere with channel
text. ON ACTION and ON SEND_ACTION added. You can now suppress
ACTION text with these, or reformat it.
Many bugs fixed.
2.1.5-2.1.5a
New functions:
USERHOST() Returns the user@host of the sender
of the message currently being
processed.
WHO -HOST and -SERVER is no more supported. (This is reenabled
in a later version).
The contents of an alias can now be surrounded by '{' and '}'
in and broken over multiple lines. See script/finger for an example.
Indentation with leading tabs and spaces is now permitted in script
files. See /HELP LOAD.
HOLD_MODE no longer holds when you are being active in that window.
If you have SHOW_AWAY_ONCE on, away messages are remembered and
only displayed when they change.
Notification of the receipt of a CTCP request no longer occurs
unless VERBOSE_CTCP is on.
Prompts from EXECed processes now appear in the input window if
$T appears in INPUT_PROMPT.
Scripts and help files can now be stored in compressed format.
They will be uncompressed as they are used.
All the scripts have been updated and many helpfiles written and
rewritten. Many bugs have been fixed, support of newer server
features added. Server 2.7 compatibility improved.
There have been major changes in the command parser. Commands
are not expected to have a leading / unless entered interactively,
if you experience incompatibilities, you will have to add 'say' and
'send' wherever you have made aliases that send to the channel or query.
See also /help ircII programming for this. Also the ';' has a new
meaning as command seperator within ALIAS, BIND and ON. You might have
to \escape it.
CTCP ACTION has been implemented which permits you to send
descriptions of actions/'feelings' to other people on channels
and even through queries. You can use it with /me and the action
script. See also: /help load action.
* 2.1.5 (by lynX) Text is historically from new to old, that is - read it from bottom to top!
Updated help files: NEWS LOAD/* WHOIS IRCII/IRCII IRCII/PROGRAMMING
ALIAS/ALIAS BIND/PARSE_COMMAND BIND/EXAMPLES ON/ON CTCP/* ME DESCRIBE
ON/SIGNOFF SEND SAY NOTIFY SET/COMMAND_MODE ALIAS/SPECIAL RESTART
SET/LASTLOG_LEVEL
Threw out /who -s and -h, they were superflous and bad.
Cleaned up the vars.h and hook.h by cleaning the protos... FINALLY!
Wrote count.c and the proto headerfiles, adapted the Makefile.proto
Added underlining mechanism with put_it-code ^V.
Updated man page a bit.
Added optional code to limit the notify list length (MAX_NOTIFY).
Removed lots of do_hook-numeric if's by splitting the numeric's switch.
Rewritten /notify list.
Simplified notify.c and whois.c to no more support channel notify.
(If ISON doesn't, why should we then?).
Added Troy's alias functions MATCH and USERHOST, but no HELPs.
Added support for { } constructs in scripts and indentation.
Removed the oper-flags from the IRC commands, if you issue oper commands while
you're not one, you get the beautiful ircd error messages.
Seem to have fixed the problem in the status_mail sprintf...
Changed the handling of 2.7 UserHost in PRIVMSG etc.
The $, is now also set when you get an invitation.
Added oneself's nickname as command alias for /me. "/lynx smiles."
Improved HOLD_MODE: it no more holds a window if the user is being active on it.
Added some numeric codes in numbers.c for 2.7 compatibility.
Added support for ~ in IRCPATH, but only referring to the user's own home-dir.
Suspended a piece of new code in mail.c which seems to cause weird problems.
Introduced lastlog_level 'ACTIONS' to log in and outgoing CTCP ACTION lines.
Made 317 (whois-idle) a tiny bit smarter (seconds or minutes).
Added #ifdef SVR4 code.
Added SHOW_AWAY_ONCE and VERBOSE_CTCP vars.
Replaced QUIT_ON_KILL variable by a #define.
Applied Allanon's patches to ctcp.c and dcc.c, removal of DCC/SENDCRC + GETCRC.
Added support for numeric 364 (new LINREPLY). Old LINREPLY code not removed.
New handling of process prompts. In the past they were put into the window->prompt
and then inserted into the INPUT_PROMPT var mask, which looks *ugly*, also the
input would not get echoed. Now it does this: If a prompt is detected you are
elegantly prompted, as if you were in the program itself, when you enter your
datum prompt and input are displayed in the window the way it would look outside
ircII. This is a great step towards using ircII as an interface to all kinds of
things, ircII + /bin/sh as a replacement for tcsh.. Ha ha I'm kidding. Well, for
a MUD client it's fine. ircII can now be used as MUD client.
BTW, I had to do profound changes in the handling of prompts throughout the source.
Fixed ancient bug concerning process-query: you can now type 'just CR' into an exec.
Fixed strange bug with /save prompt. Still don't know what was actually wrong,
but it behaves correctly now. :-I
Away messages are only displayed ONCE.
Added #ifdef into new_free() to hunt for free's that should not take place.
If you have spare time hunt some of those.. ;)
Added the commands '<text> and :<text> which only work in COMMAND_MODE and
act like /send and /me respectively. This is a MUD standard.
Added /restart, /xtra and /host which calls USERHOST. The last two have no
/help files.
Introduced Allanon's implementation of ZCAT help file display.
Also scripts (files for /load) can be stored in compressed format if one likes.
Patched /save to work with totally dumb terminals, with -d it saves without prompting.
Added special sequence '$D' to the alias parser. Thanks to The_Edge for the idea.
Added binding ESC-G to the 'commander' script that uses it.
Applied Veggen's patch to alias.c concerning uninitialized variables.
Removed /set VERBOSE_QUERY since the same can be achieved with /^query...
(If you want it use /alias quer ^query)
Added DCC SENDCRC and GETCRC by Allanon. These functions transmit and receive
files with checksum. It has to be tested and decided if a checksum is needed
or futile by TCP definition. The commands are temporary and should replace
the current SEND/GET or be removed away again. Since this decision affects
other client coders, too, it should be discussed via USENET or interactively.
Added ';' handling: In ALIASes, ONs and BINDs it is legal to use ; as command
seperator instead of \\n while in LOAD and interactive mode ';' is considered a
normal character (to be able to type ;-) ). With a little magic I managed to make
it possible to escape the ; with \; in aliases if you want it as character. *PHEW*
Repaired /whois 317 (idle time output).
Added /whois <server> <nick>[,<nick2>..] format to /whois command.
Added commands /me and /describe to produce ACTION messages.
Added CTCP ACTION handling.
Disabled GLOBAL_IRCRC, replaced by automatic /load of 'global' which is
supposed to be in the IRCPATH. This permits easier debugging and developing
of scripts by redirecting everything into an other directory.
If a person has an .ircrc the person is assumed to not be a novice, the /HELP NEWUSER
notice is not output.
Added variable QUIT_ON_KILL to select if one wants to /quit when
one is killed. /ON KILL has not been implemented for obvious
reasons of possible misuse.. :-(
Added #ifdef AUTO_RECONNECT to make ircII not auto-reconnecting.
Added CTCP TIME by Veggen.
Added 'signoff reason' to signoff message. Modified some messages concerning
CTCP and NOTIFY for beauty or better elequence...
Added /send command which sends something to the current query or channel
as if it were typed. Acts as replacement to bare text, since that is now
interpreted as commands
Added /say command which does the same as '/ <text>'
and /# (or # in script mode) command which is the same as /comment.
Introduced script (command) mode and COMMAND_MODE variable.
Removed some code that would never get used, as my optimizer told me.
Bug fixes concerning buffers, /if command with HP/UX, ...
by Allanon and Veggen.
* 2.1.4c
Some bug fixes, including the CTCP DCC bug and substitution
of '\' in alias expansion.
Bug in SAVE with "-d" mode fixed.
* 2.1.4b
Support for server version 2.7
* 2.1.4a
Bug fixes.
* 2.1.4
$N now substitutes correctly to the nick on the current server.
Bug with changing servers when on multiple channels fixed.
ISON based NOTIFY has been implemented. In addition, the
code has been modified so that NOTIFY will cause much lower
network loads.
/TOPIC can now change the topic of a # channel on a 2.6.2b
or newer server. The new format for /TOPIC is:
/TOPIC [<channel>] [<topic>]
Aliases and ASSIGNed variables can now include a dot
('.') in their names. When listing aliases and assigned
variables, anthing after a dot in the variable name
is suppressed, unless typed explicitly. If two variables
have the same name after this, only the first occurence
is printed. This allows a structure-like effect.
/ASSIGN A.A This is a
*** Assign A.A added
/ASSIGN A.B this is B
*** Assign A.B added
/ASSIGN A.C This is c
*** Assign A.C added
/ASSIGN A
*** Assigns:
*** A <Structure>
/ASSIGN A.
*** Assigns:
*** A.A This is a
*** A.B this is B
*** A.C This is c
/ALIAS A.A alias a
*** Alias A.A added
/ALIAS A.B alias b
*** Alias A.B added
/ALIAS A.C alias c
*** Alias A.C added
/ALIAS A
*** Aliases:
*** A <Structure>
/ALIAS A.
*** Aliases:
*** A.A alias a
*** A.B alias b
*** A.C alias c
Note that structures are effectively in a different naming
space to non structures. Thus, you can have a structure called
'A' and a normal variable, also called 'A'.
Server notices are now displayed with the SNOTE level.
Four additional lastlog levels, USERLOG1-USERLOG4, are
reserved for users. These can be used by displaying text
with the XECHO command.
Four new alias substitutions: $O substitutes to the value
of STATUS_OPER if you are an operator, $P to '@' if you are
a channel operator on the current channel, $M to the modes
on the current channel, and $A to the current away message.
* 2.1.3c
A new DCC command, rename, changes the name of a file sent
to you by somebody else. DCC file transfer should also accept
the ~ now.
Some bug fixes.
* 2.1.3b
A new log level, OPNOTE, has been added. This level applies
to notices sent to operators, such as KILL notices.
A new status line variable, %F, lists the hidden windows in
which there has been activity since they were made hidden.
An associated IRCII variable, STATUS_NOTIFY, sets the format
for this to be displayed.
New ONs: CHANNEL_NICK and CHANNEL_SIGNOFF are executed once
for each channel from which the user changes nick or signs off.
If all the CHANNEL_NICK and CHANNEL_SIGNOFF hooks which are
matched suppress output, then the default output and the NICKNAME
and SIGNOFF hooks will be suppressed.
Various bug fixes.
* 2.1.3a
Various bug fixes.
* 2.1.3
Added support for the Tektronix XD88
Added DCC talk. To use this, /DCC TALK user@host. DCC talk
will only send an announcement once, rather than an infinite
number of times.
Fixed bug with functions which have no arguments. Added RINDEX
function.
* 2.1.2.2
New help files RULES and IMPORTANT included. You should
read these before installing help and decide on a site
by site basis if you wish to install them. If not, remove
them from the help directory.
Hopefully fixed the WHOIS queue once and for all.
Fixed some bugs outstanding from 2.1 (HELP paging with
HOLD_MODE ON, Core dumps after a WHOIS or WHOWAS if the
WHOIS queue was empty, core dumps when the status line
is an empty string)
* 2.1.2
Added DCC file transfers (GET and SEND), and DCC CLOSE
Added new window command - NOTIFY. This toggles the
notification status of the current window. A window with
notification on causes a message to be printed in the
current window if output to that window occurs while
it is hidden.
Changed group message ([$#]*.domain) handling so that such
messages are treated more like WALLs than MSGs. (Meaning
that it beeps if you have WALLs set in BEEP_ON_MSG, not
if you have MSGs set).
The type of the MAIL variable has been changed from BOOLEAN
back to INTEGER. If set to 2, it will now display some of the
headers from incoming mail. Setting it to 1 is the same as
setting it to ON used to be.
/ON SERVER_NOTICE processes messages sent from the server
as NOTICEs, including MOTDs and many server status messages.
The easiest way to see what is trapped by this is to do a
/ON ^SERVER_NOTICE * /echo [SNOTICE] $* and see what happens.
/WHO -FILE performs a /WHO, displaying only those nnicks
contained in the named file. This allows a larger list to
be kept of people you know on IRC but not well enough to
put them in the NOTIFY list.
If a channel name exceeds the channel name width in the output
of /NAMES or /WHO, the last character that would be displayed
is shown as a '>'.
Added NOVICE variable. Causes a new user message to be printed
after .ircrc has been loaded if it is still set to ON, and
refuses to allow any ON commands to be executed.
Added /ON RAW_IRC to deal with any unknown commands coming from
the server. This is primarily of use to people working on server
code, or people using servers with new commands which IRCII does
not yet recognise.
Direct Client Connections implemented. /DCC CHAT opens a direct
connection to another client. The user at the other end can either
accept the chat with a /DCC chat or ignore it. Messages are sent
across DCC CHAT connections with DMSG or DQUERY. A new status
specifier, %D (STATUS_DQUERY) is supported, which substitutes
the DQUERY value. Two more /ONs, DCC_CHAT and SEND_DCC_CHAT, deal
with DMSG messages.
* 2.1.1
Version 2.1.1 supports user defined functions. A user
defined functions is an alias that ASSIGNs a value to
FUNCTION_RETURN. Another alias can substitute the return
value with $%FUNCTION(ARGUMENTS). See /HELP ALIAS FUNCTIONS
Pattern matching has been improved. IRCII now has an idea
of the "best" match. This allows #* to be treated differently
to * in /ON NAMES, for example.
IF and WHILE now only use unescaped operators. Thus if it
is possible for a substitution in an if or while to produce
an operator, such as a channel name containing !, it can
be entered as $^!CHANNEL, escaping the ! and making IF
and WHILE work as expected.
Support has been added for privileged ports. If IRCII is
installed setuid->root it will attempt to bind the local
socket to a privileged port, allowing some servers to
verify connecting users on this basis. The PP_OBJS and
PP_DEFS macros in Makefile must be uncommented.
|