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 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478
|
EPIC3.003 [[MORE BY DEMAND]]
*** News 11/08/97 -- DCC SENDs now trigger the ON DCC_REQUEST hook.
Same thing as with DCC GETs but for DCC SENDs. When you send
a file to someone, the DCC_REQUEST hook will be activated.
*** News 11/04/97 -- Syntax of QUOTE command improved.
Now the QUOTE commands can take an argument for the
server to send data to.
/QUOTE -server <server index number>
This will only work if the server is connected.
The old behavior still works.
*** News 7/14/97 -- Support for ISO2469 (mIRC) colors added.
To toggle it ON/OFF, set the variable "DISPLAY_COLOR".
The format is:
^Cxx,yy
Where xx is the foreground value (0 - 16) and yy the
background value (0 - 16). The "," must be present if
a background color is desired.
Possible combinations include:
^Cxx - Set just foreground color.
^C,yy - Set just background color.
^Cxx,yy - Set both.
^C - Toggles color OFF.
There can't be spaces between ^C and the xx|yy values or ",".
Sematics:
operator := [int] ["," + [int]]
If no background color is given and "," is supplied, the comma
will be taken as literal and displayed as part of regular text.
Possible colors (Color Table):
1/black 2/navy blue 3/green 4/red 5/brown 6/purple 7/orange 8/yellow
9/birgh green 10/greyblue 11/brightblue 12/blue
13/magenta 14/dark gray 15/gray 16 or 0/ white
These are valid for both foreground and background colors. Any
value exceeded than 16 will go to a lower denominator of 16.
-- SrfRoG (srfrog@nema.com).
*** News 12/30/96 -- Support for all 26 possible user modes
All user modes are now supported. This should be the last
of it until someone comes up with the bright idea of making
uppercase modes mean different things (and ill strangle the
bastard who does...) I based it on the idea from sheik, but
i took a quite different approach...
*** News 12/27/96 -- New built in command /repeat
Up until now, /repeat has been an alias. This has been a pain
in the butt, because all of them either cant be used recursively,
or theyre terribly expensive to use (or both). So now you have
a zero-overhead /repeat command that can be used without any
headaches.
There are two forms. The old one you all know and love, and a new
form that allows you to specify an expression in parens:
/repeat text command(s) (traditional form)
/repeat (exp) command(s) (new form)
eg, the following two commands are equivalent:
/repeat $var {commands}
/repeat (var) {commands)
*** News 12/12/96 -- New command, /input_char
/input_char is identical to /input, except that it returns after
only one character has been pressed, instead of waiting for the
return key to be pressed. See the 'less' script for an example.
/input_char has problems with /wait and /pause just like /input.
*** News 12/12/96 -- New command, /pause <X>
If you specify an argument, the client will wait X seconds
before continuing. Its kind of a mix between /wait and /sleep,
except that this is nonblocking (unlike sleep) and doesnt send
anything to the server (unlike wait). It also doesnt assure
that you wont have any race conditions (unlikes wait) and it
will parse all incoming traffic normally (unlike sleep).
If no argument is specfied, the client will wait for the user
to press a key. This kind of sort of works, but not really so
much as i would recommend you use it unless you do so as an
experiment as to whether it really works in the real world.
Maybe if you find bugs youll tell me about it? >;-)
/pause does recursive calls to io() (much like /wait does).
That means that it has problems if you intermix calls to /input
while you are /pause'd, and vice versa. Let the coder beware.
*** News 12/12/96 -- New /window option, "BEEP_ALWAYS"
This option allows you to control whether a beep in a hidden
window will still beep. (Up until now, it has not.) If this
is ON, then a beep in a hidden window will beep anyhow. If
this is OFF, then a beep in a hidden window will be silent.
*** News 12/12/96 -- /ON DCC_CONNECT/DCC_REQUEST changed
Arguments to /ON DCC_REQUEST are now:
$0 Nickname of other peer
$1 The type of DCC
$2 Filename or other information
$3 The remote IP
$4 The remote port
$5 Filename (DCC SEND only)
$6 File Size (DCC SEND only)
Arguments to /ON DCC_CONNECT are now:
$0 Nickname of the other peer
$1 The type of DCC
$2 The remote IP
$3 The remote port
$4 Filename (DCC SEND only)
$5 File Size (DCC SEND only)
*** News 12/10/96 -- Virtual Hostname support
The IRCHOST environment variable, and the /hostname (/irchost)
commands reflect this new support. Supposedly it works on
feeding, so i guess its ok. (thanks to flarp)
*** News 12/09/96 -- Double line status bar
/window double and its attendant features have been added.
You can thank Archon for doing all the work =)
*** News 12/06/96 -- New status line variable
You can now use %= in your status format to denote when
you are a channel voice (+v). It only goes on when you are
+v but not also +o. (Crowman)
*** News 11/25/96 -- New Built in function $winvisible()
Archon pestered me enough to put this in that i did so that
he would leave me alone. ;-)
It takes one argument, a reference to a window.
The return value is:
1 if window exists and is visible
0 if window exists and is hidden
-1 if the window does not exist (error)
EPIC3.002 [[MINOR RELEASE]]
*** News 10/29/96 -- New functionality to /timer
You may now specify any arbitrary string (up to 10 characters)
as the refnum for /timer. Example:
/timer -refnum foobar 10 echo booya booya booya boo!
*** News 10/28/96 -- New script ``fake-dcc''
I wrote a new script to demonstrate the two features below.
It allows the client to (at random) substitute any word out
of a list for the word ``DCC'' in a DCC handshake. The
reciever, if they have the same list of words, will then be
able to decode it using this script.
*** News 10/28/96 -- New /on, /ON SEND_TO_SERVER
Any time anything is sent to a server, this will be hooked. It
takes three (or more) arguments:
$0 - the server refnum
$1 - the unix filedescriptor
$2- - what is being sent
Note that using this /on is very expensive -- expensive along the
same lines as /on raw_irc. So please use with discernment.
If you hook this SILENTLY, you will inhibit the sending of the
message to the server. You can then use /QUOTE to send a new
message. Please note that use of /QUOTE in /ON SEND_TO_SERVER
can cause an infinitely loop that will crash your client if you
are not careful. It is up to you to not do that.
on ^send_to_server "% % % PRIVMSG % :$chr(1)DCC*" {
quote PRIVMSG $4 :$chr(1)$getrandword($fake_dcc) $6-
}
*** News 10/28/96 -- New command, /PRETEND
The pretend command allows you to ``pretend'' that a line has come
from the CURRENT server. Use of this command where the current
server is undefined results in undefined behavior. Use of this
command is expensive and can lead to convoluted scripting. You
(of course) can use it however you wanted, but i had in mind a way
to fake out the client when there is no other way to get around
some client limitation. See the ``fake-dcc'' script for an example
of such a case.
on ^raw_irc "% PRIVMSG % :$chr(1)\\[$fake_dcc\\]*" {
pretend $0 $1 $2 :$chr(1)DCC $4-
}
EPIC3.001 [[FINAL PUBLIC RELEASE]]
*** News 10/12/96 -- Solidified syntax for /SERVER
Now you may use either of the forms:
server:port:password:nick
or server port password nick
for the ``server'' argument(s) to /SERVER. Of course, all fields,
except for the ``server'' field, are optional. If you want to
omit a field, you will have to use the colon-seperated syntax.
*** News 10/11/96 -- New built in function
$uniq(... list of words ...) -- The easiest way to explain this is
that each word in the given list is present at most once in the
return value.
*** News 10/04/96 -- New /set, /SET COMMENT_HACK
Sheik wanted this to become a /set rather than a compile time option.
Just remember to make sure this is the right setting, (It should be
ON usually), or your scripts could get very confused.
*** News 10/04/96 -- New /set, /SET DCC_STORE_PATH
This setting determines what directory you want your incoming dcc's
to be stored into. You must have it set correctly before you
/dcc get, as there's no turning back after that. Twiddles are
expanded, there is no default (puts it into the current directory).
*** News 10/03/96 -- New command, /CALL
The built in command "/CALL" outputs to the display the current
script-level stack trace. These are the commands whose execution
is in progress.
If the client crashes (due to a segmentation or bus fault), the
stack trace will be displayed, as an aid to debugging.
There must be a #define WIND_STACK in config.h (the default).
This will show up as an 'a' in $info(o)
*** News 09/23/96 -- New built-in-functions
Several new built in functions are available:
$chmod([filename|fd] perm) -- given either a filename, or a file
descriptor corresponding to a previously $open()ed file, change the
permissions on that file to 'perm', which is an absolute octal value.
Example: $chmod(foobar 0700). See the man page for 'chmod' for
more information.
$umask(perm) -- specfies the bits that are to be turned OFF when
you next create a file. This affects every file that the client
may create during the same session, including but not limited to
any $open()s, or /save's. The old umask is returned, so you can
restore it later if you want to. See the man page for 'umask'
for more information.
*** News 09/18/96 -- Information about /on send_notice
/on send_notice is triggered any time you send a notice or a notice
is sent on your behalf, unless such triggering would cause an infinite
loop, in that case the /on is NOT triggered. If you want to send a
notice without it ever being triggered, try /quote notice instead.
*** News 09/18/96 -- /set AUTO_REJOIN semantics fixed
It should now rejoin in the CORRECT window instead of the current
window. This should make some people happy. =)
*** News 09/18/96 -- New flag to /XECHO -- "-CURRENT"
/XECHO -CURRENT ..... sends "....." to your current window.
Im not really sure why i told people to use this when it didnt
exist. *cough*.
*** News 09/17/96 -- Change to /WINDOW ADD and /WINDOW DELETE.
James pointed out that you cant /WINDOW ADD a nick that begins
with a caret ('^'), and that a caret is a legal n-char.
Furthermore, /WINDOW REMOVE has existed and is the "normal"
way to remove nicknames from the list. Therefore, you may no
longer remove a nick from the window's "nicklist" by prepending
it with a caret ('^'). You must now use /WINDOW REMOVE to remove
any nicknames. You may now /WINDOW ADD nicks that start with a
caret without any error messages.
*** News 09/16/96 -- New set, /SET DCC_SLIDING_WINDOW <int>
When you are sending a file to any peer, EPIC will send
<int> packets at the initiation and attempt to always keep
<int> packets outstanding. This is a simplistic implementation
of the traditional sliding window algorithm. There is no irc-level
error correction: We depend entirely on TCP to keep everything
straight. This should not be a problem, except over lossy networks,
so you should have this /SET to 1 unless you are willing to take a
gamble! Since packet sizes are 2k, and most OSs have socket sendq's
ranging from 4k to 32k, you may have to tweak this /SET for optimal
efficiency on your system (trial and error).
This should have *NO IMPACT* on the person to whom youre sending
the file, regardless of what client theyre using. If you have any
problems, it is probably a bug -- so please let me know.
*** News 09/16/96 -- Silent change to /WINDOW arguments
At the request of kanan, /WINDOW LEVEL, /WINDOW NOTIFY_LEVEL
and /WINDOW LASTLOG_LEVEL now do not require an argument.
If you do not specify an argument, the current level will
be displayed.
*** News 09/02/96 -- New feature covers up weakness in syntax
There was a semantic ambiguity that allowed the following
construction:
/EVAL (...[$0])
to crash the client due to the $0 not being expanded because
the (...) protects expansion. After conferring with several
people, it appeared that no real reason exists to formally
support aliases that begin with a left-paren. This allows the
use of the left-paren to be semantically bound to something
else, to prevent the above from crashing the client, and so the
paren-set was made as a synonym for the @ construction: So that
means the following two STATEMENTS are equivalent:
@ x = 3
(x = 3)
*** News 08/14/96 -- Two new config.h define's.
#define MIRC_BROKEN_DCC_RESUME turns on mIRC compatable
/DCC RESUME feature. It breaks the protocol, so it does
NOT come #define'd by default -- you must turn it on yourself
explicitly so that you take sole responsibility for it.
This shows up as 'i' in $info(o)
#define USE_DCC_CHECKSUM turns on DCC SEND checksumming.
If not defined, you neither send nor honor file checksums
that are sent from other epic clients.
This shows up as 'v' in $info(o).
*** News 08/08/96 -- Silent change to /on send_(msg|public)
With the changes to the send_text subsystem, if you sent a msg
to multiple targets, it will pass all of the nicks to
/on send_msg and /on send_public. This is in contrast to previously,
where it hooked them once per nick. It is still possible for
both to be hooked with the same message, of course.
*** News 08/07/96 -- CTCP PING now works to microsecond resolution
More or less. The client now sends off second + usecond
information, and then calculates the ping time based on
that when it comes back.
*** News 08/06/96 -- Revamped CTCP support
Several changes have happened to the CTCP support:
If any of these changes cause you a great deal of problems, let
me know, and ill work something out with you. The choices made
here were based upon personal and public discussions i had with
people on the epic mailing list, so your mileage may vary:
* If you have an /encrypt set up for a target, any CTCPs you send
to that person will be encrypted now. This is very useful for
encrypting DCC handshakes. This is in addition to your ability
to send CTCPs over pre-existing DCC CHAT connections.
* Since no known clients allow you to send more than one CTCP per
privmsg, and this (multiple CTCPs per privmsg) is a well known
mechanism for flooding, only the first CTCP that would normally
be "returned" is actually returned. All the rest are ignored.
CTCPs that dont "return" are not limited by this restriction.
The one exception to *this* is DCC. Only one CTCP DCC will be
accepted per privmsg.
* Other internal changes have occured. See the source code for
more information. Most of the support has been rewritten.
Nothing else should have changed from the user point of view.
*** News 08/03/96 -- Added socks support from ircii-2.9
ircII-2.9 has support for the 'socks' firewall library,
and so i took that support and added it at the request
of several people.
*** News 08/02/96 -- Implemented workaround for incompatability
I implemented support for the gratutitous incompatability
brought to you by the efnet 2.9 server in the JOIN command.
It should do the "right thing" now.
*** News 07/31/96 -- Finished work on encrypted CTCPs.
I had started support before for encrypted CTCPs. They should
be fully supported now, and they will be used if possible. Note
that this might be a problem if youre carrying on an /encrypt'd
conversation with a non-EPIC peer and you send CTCPs. They will
be encrypted, and the other peer will probably not know what
to do with them. If anyone has a grave problem with this, let
me know and ill work something out with you.
*** News 07/28/96 -- Striping quotation marks
If you want to $strip() out quotation marks, you have to
quote the quotation mark, so it isnt taken as a word
delimiter. People have been reporting $strip(" ....) not
working correct as a bug, but this is _not_ a bug, because
we need a way to be able to strip out spaces
To strip out spaces: $strip(" " ....)
To strip out quotation marks: $strip(\\" ....)
*** News 07/27/96 -- /FEC now has same semantics as /FE
The syntax as /FEC is now the same as the syntax for /FE.
However, the semantics all remain the same. An example of
what you can now do that you couldnt do before:
fec ($variable) a b c {echo $a $b $c}
*** News 05/14/96 -- $tdiff() no longer leaves trailing space
If you do $tdiff(60), you no longer get that trailing space
that was left behind: This was (IMO) a bug, because $tdiff(59)
did not have any trailing spaces.
*** News 05/14/96 -- Can now do /timer -delete all
If you want to delete all your timers, you can do /timer -delete all
and your timer list will be made very empty.
*** News 05/10/96 -- Made 'make install' less painful
Now when you do 'make install', it will attempt to only install
those things that really need to be installed. Only those things
that are newer then the installed components will actually be copied.
This applies to all the binaries, scripts, and translation tables.
*** News 05/09/96 -- Added $mkdir() at request of CrowMan
He asked why we had $rmdir() but not $mkdir().. and i guess
there wasnt any particular reason. So here it is.
*** News 05/08/96 -- Significant profiling project completed
This marks the end of the second major profiling project
in EPIC's history. Some strategic modifications have been
made in an attempt to reduce the rate at which ircII consumes
CPU time. Note that this does not neccesarily make EPIC
"faster", but rather just makes it less of a hog. Future
performance enahancements may occur on an informal basis.
*** News 05/08/96 -- New $info() command, "O" (crowman)
The "O" command (short for "options") returns a string that is
representative of the compiled-in options for the binary.
*** News 05/04/96 -- New command, /HOSTNAME (demon)
At the request of DemoN, ive added the /HOSTNAME command
that allows those with dynamic/multiple IP addresses to
change the address that DCC should use without having to
restart the client.
*** News 04/28/96 -- Added encryption over dcc send/get/chat
Its very simple. At the end of the command line, just
append a '-encrypt PASSWD' where PASSWD is what you want
the dcc encrypted with. It uses ircII's standard encryption,
so it isnt totaly secure, but its "secure enough" for those
who may be snooping. Dont even *THINK* of giving me a hard
time for implementing this.
--------------------------------------------------------
----- This doesnt work at the time of this release -----
--------------------------------------------------------
*** News 04/25/96 -- Added /server -add
Now you can add a server entry w/o having to connect to it.
Just do /server -add hostname portname password
EPIC3 [[ Hurray! We're done! (yea.... right.) ]]
*** News 04/21/96 -- New Built-in function $glob()
Before i begin, you can turn this off by #undef'fing
INCLUDE_GLOB_FUNCTION in config.h. If your system cant compile
the supplied glob.c, you should #undef NEED_GLOB in config.h.
You'll have to try your luck with your system's glob(). If your
system doesnt have a working glob(), and you cant compile glob.c,
then you must #undef INCLUDE_GLOB_FUNCTION.
The $glob() function allows you to specify a "shell-like"
wildcard argument list, for which it will return all the files
that match the patterns. Its "supposed" to behave just like the
shell does, so you should already know how it works. Yes, you
can specify more then one argument. Directories are appended
with a forward-slash ('/'), making it easier to seperate them
from the regular files.
*** News 04/20/96 -- Workaround for lame ircd lossage on ``K-line comments''
(Rant on)
I hate these things. Whoever allowed K-line comments to contain
an unlimited under of words should be drawn and quartered.
(Rant off)
*** News 04/19/96 -- Added $numsort()
Its like $sort(), but it makes an attempt to properly order
numbers present in the text. The strings are alphabetically
sorted except when numbers are placed in identicaly locations.
So 'abc5' is located before 'abc12'. However, 'abcX', where X
is any non-digit, is guaranteed to be treated as if "X" were a
0, when comparing with 'abcY', where Y is a digit.
Examples:
$sort(12 1 5) returns "1 5 12"
$sort(S5 S1 S12) returns "S1 S5 S12"
$sort(B2 A3 C1) returns "A3 B2 C3"
$sort(abcd abc12 abc5) returns "abcd abc5 abc12"
*** News 04/16/96 -- No, the help bot support wasnt removed...
I just #ifdef'd it out. Its #define USE_HELP_BOTS.
Youll have to add it to the config.h to get the support.
*** News 04/12/96 -- AUTO_UNMARK_AWAY will call /away alias if possible
Someone asked that the code that does AUTO_UNMARK_AWAY call the
user's 'away' alias if they had one, so that scripts like superpak
and phoenix could correctly end their msg logging. I should have
told the person to do an /on 306 instead. ;-)
*** News 04/11/96 -- New set, /SET DCC_LONG_PATHNAMES (ON|OFF)
If its ON, youll see the whole pathname of the files youre sending.
if its OFF, youll only see the last part.
*** News 04/11/96 -- More info in the status bar for DCC transfers
As a comprimise to those who want a ncftp-ish "progress-o-meter"
with reverse text et all, i decided to display the total number
of packets in the file transfer and how many have been transfered
so far, so that the percentage you see is more meaningful.
Will this lead some day to ETC? Perhaps.
*** News 04/10/96 -- HACKED_DCC_WARNING no longer default
So many people have had problems with it, that i am #undef'ing
it by default -- you are of course free to #define it if you
like having it.
*** News 04/08/96 -- Dropped support for help bots.
The help bots dont exist any more, so im going to take
out the code that supports them. Ill have to make sure
that the help files are easily available with the release.
*** News 04/08/96 -- Added #define CONNECT_TIMEOUT to config.h
It was silly that it was hard coded and not user-specifiable.
I changed it to 30 seconds (it was 15 before) since 15 seconds
hasnt seemed to cut it for me.
*** News 04/06/96 -- Same thing for /WHILE and /UNTIL
Removed the silly restriction (see below) for /WHILE.
The following are supported:
/while (expr) commands
/while (expr) {commands}
Applies also to /UNTIL.
*** News 04/06/96 -- removed silly restriction on /IF
The silly restriction that required you to enclose the THEN
part of an /IF comamnd even if you didnt have an ELSE part
has been removed. This is not to say you cannot, but rather
to say that you are not required to. The /IF command can now
be of the form(s):
/IF (expr) commands
/IF (expr) {commands}
/IF (expr) {commands} {commands}
Just so long as it appears as all one logical line in the script.
You should use {}s for asthetic reasons if you are using more then
one command in the THEN body. You MUST use {}s if you have an
ELSE part. All this applies to /UNLESS as well.
*** News 04/06/96 -- Added /UNLESS and /UNTIL
/UNLESS is the opposite of /IF.
unless (x == 0) {y = 7}
/UNTIL is the opposite of /WHILE.
until (x == 0) {x--;y += func()}
*** News 04/01/96 -- New built in function, $notify()
If specified with no arguments, returns the nicknames you
have on your notify list. It takes the following arguments:
ON - specifies that only those who are PRESENT should be returned
OFF - specifies that only those who are ABSENT should be returned
SERV X - specifies that server number X should be used.
This flag can be used without the "ON" or "OFF" arguments,
but there isnt much point to that. If the number argument
is missing, the whole function returns nothing.
In case of error (like invalid server number), the function returns
nothing.
*** News 03/27/96 -- $rmdir(), $unlink(), and $rename()
They now expand twiddles, per the suggestion of Crowman.
*** News 03/20/96 -- Added 'sound' script
The 'sound' script is an attempt on my part to support mirc's
CTCP SOUND command. See the script for usage info.
*** News 03/20/96 -- Fix two bugs in /exec
The first one was a lame typo lamage that was the reason posix
systems (freebsd, linux) were having lossage trying to kill off
exec'd processes on quit. That should all be kosher now
The second one is that the signal handlers are reset right after
the fork() in exec'd processes so that if the program being run
coredumps, it wont output that annoying "IRC-II has trapped..."
message back up the pipe to ircII, but will rather die the default
death for memory faults on the system (a coredump).
*** News 03/20/96 -- New built in function -- $sort()
Yes, I finally got off my duff and wrote this. it requires
qsort(3), which is required by ANSI, so i hope everyone has
that without my having to have 'configure' check for it...
*** News 03/20/96 -- Reworked io()
io() no longer recreates the fd_set's every time its called,
it doesnt call functions it doesnt need to call, and several
other optimizations intended to reduce unnecesary CPU usage.
*** News 03/19/96 -- Fixed alias_special_char() to not call parse_inline()
Unscientific tests show that it improves performance of simple
variable lookups by almost 20%.
Performance of expression mode is not effected by this change,
but the performance of [$var] instead of 'var' goes from 50%
slower to 30% slower.
*** News 03/19/96 -- $common() and $diff() fixed
The following things were "broken" with $common() and $diff()
-- If a word in the left part was found in part of a word in
the right part, it was wrongly returned:
$common(one two / phone ugh) returned "one"
-- If a word appeared multiple times in the left part, and it
was present at least once in the right part, it was returned
multiple times:
$common(one two one / one three) returned "one one"
Both of these weaknesses are now fixed.
*** News 03/18/96 -- Fixed /on bug
Up until now, doing something like this didnt work like expected:
/on foo "blah blah"
{
...
}
or
/on foo "blah blah" ....
because the extra spaces fouled up the /ON command. Now any spaces
between the pattern and the body of the ON are ignored. This also
means that anyone who was doing this:
/on foo "blah blah" text to send to channel
should change it to look like this:
/on foo "blah blah" / text to send to channel
This seems to make a lot more sense to me...
*** News 03/18/96 -- Finished the "new and improved" ircserv.
This new ircserv has all the functionality of the old one except
that it actually works now, and its much simpler to both the
client and ircserv itself. The catch is that the client wont work
with the old ircserv any more, and the new ircserv wont work with
old clients. You must install the new ircserv with this version
of the client if you expect to use ircserv.
*** News 03/08/96 -- Support for //^ "feature"
The //^ "feature" that is used by many large and widely used scripts
is now supported again by popular demand. However, you should NOT
use this "feature" in new scripts, *please* use the syntactically
correct ^// construct. Thanks.
*** News 03/07/96 -- Added new command /SWITCH
The syntax is:
switch (control text)
{
(switch 1) /* "switch set" is an expr */
{ /* and some commands to */
body 1 /* execute if it matches the */
} /* control text */
(switch 2) /* A switch set may have */
(switch 3) /* then one expression, and */
{ /* if any of them match, */
body 2 /* then the commands are */
} /* executed. */
}
The "control text" is the text that youre trying to match.
Each "switch set" is comprised of one or more "switch texts"
and a "switch body". If any of the "switch texts" are found
to match (wildcards are allowed) the control text, then the
commands are executed. Only the first such "switch set" found
to match the control text is executed, the rest are ignored.
So it is important to put your most general switches at the
end of the structure.
At the face of it, the general idea is that it is a way to
allow you to do a multi-way selection on a string when there
are more then two possible values. On a deeper level, there
is also the flexibility to parse arguments using regular
expressions and then knowing what to do depending on which
pattern was matched. See the "country" script for an example
of what im talking about.
*** News 03/06/96 -- Workaround for longstanding /foreach bug
It has been a long standing problem that you couldnt use []
notation in the /foreach command
So now instead of being required to do:
/foreach foo.${ii}.${jj} kk { ... }
You have the more asthetically appealing option of:
/foreach foo[$ii][$jj] kk { ... }
Sorry, you still cant (and never will be able to) do
/foreach foo.$ii.$jj kk { ... }
*** News 03/06/96 -- Added new built in function $usermode()
Hard to believe there wasnt one before. You give it a server
number, and it gives you your umode on that server. If no
argument is specified, the "current" server is used. Specify
an argument at your own peril, as no sanity checking is done.
*** News 03/06/96 -- Added new on, /on SILENCE
Whenever you get a SILENCE message from the server, /ON SILENCE
will be hooked. It provides the following arguments:
$0 - a plus ('+') or a minus ('-') depending on whether this
message is for a silence added or removed
$1 - the pattern silenced or unsilenced.
*** News 03/06/96 -- Modified /alias's behavior on error.
Well, it seemed pretty lame indeed that having trailing junk
after the closing } in an alias would cause it to crap on the
entire alias. So now it just emits a warning and adds the alias
anyhow, which is more sensible.
EPIC3pre8 [[ Bug fixes, performance tuning ]]
*** News 03/05/96 -- Added $winsize()
If given an argument, returns the size (height) of the specified
window. If not given an argument, returns the size of the current
window.
*** News 03/04/96 -- /fe now honors "extended" words correctly
The words that are surrounded with quotation marks are now
parsed (correctly) as one word...
*** News 02/28/96 -- /set highlight_char now accepts any string
If the argument to /set highlight_char is not BOLD, UNDERLINE,
or REVERSE, the argument is taken as the string to be used as
your highlight string.
*** News 02/27/96 -- notify now queries each server
Yes, thats right -- /notify now works on each server you
have open independantly of each other. Try it out. =)
Due to logistics problems, each server has an independant
list, but each server must have exactly the same set of
nicknames (you cannot have a different list for each server,
sorry.)
*** News 02/26/96 -- Added the $strftime() function
The $strftime() function from ircII2.8.2 has been integrated.
The biggest change i made to it is that the first argument,
which is an integer representing the time, is optional. If
no time is specified, then the "current" time is used.
*** News 02/25/96 -- Fixed horrendous ++/-- bugs.
The ++/-- operators, that had a few non-trivial bugs before,
have been revamped to work in all situtations. The only catch
is that they do not actually operate on the values until such
time as they are parsed. That is to say that a prefix operator
does not reflect the new value until the operand. A postfix
operator is definitely reflected in tokens after the operand.
For a contrived example, if $foobar is 3,
(foobar++ + foobar) is (3 + 4 == 7), and *not* 6. Also,
(foobar + ++foobar) is (3 + 4 == 7), and *not* 8.
Its not so hard to understand how it works, just that its hard
to accept that it does work that way. ;-)
*** News 02/25/96 -- revamped much of next_unit (parse_inline())
I rewrote most of next_unit() by making a few general macros
and then writing the rest of everything in terms of the macros.
Makes the function a lot easier to read, and allowed me to fix
the ++/-- bugs as described above. This shouldnt affect anything
as i didnt actually change the code used, only how it is arranged.
*** News 02/22/96 -- New built-in function $pass()
This function is the opposite of $strip(). You specify a list of
characters to NOT strip out of the text, and it returns the text
after all the characters that are not in the list are removed.
*** News 02/20/96 -- New built-in function $repeat()
Very simple:
$repeat(count text)
Returns "text" repeated "count" times. You should not assume
any leading spaces are either retained or stripped, but you may
assume spaces after words (including the last word) are retained.
It doesnt put a space between each repitition -- if you need a
space between each repetition, make sure to append a trailing space.
*** News 02/20/96 -- ansi compiling
Please compile EPIC with ansi mode turned on if at all possible!
EPIC3pre7 [[ IS THIS THE LAST BETA RELEASE? WE CAN ONLY HOPE! ]]
*** News 01/16/96 -- Ok. ok. the -S and -s overloaded cla were lame.
The -s and -S command line arguments, which were overloaded to
allow you to specify a default server have now lost that semantic.
-s and -S now have only their classical meanings, whether or not
to use ircserv
*** News 01/15/96 -- The semantics for $splice()
Semantics for the heretoforth "undocumented" function $splice():
$splice(variable start length text)
Where "variable" is the name of a variable.
"variable" is modified such that words "start" to "start+length"
are replaced with the specified text. The words removed
are returned. Using an absurd value for "start" or
"length" just appends the text to the closest end.
Assuming in all cases tha the value of $foobar is "one two three"
$splice(foobar 0 1 booya booya)
returns "one"
$foobar assigned to "booya booya two three"
$splice(foobar 5 4 ooga booya)
returns empty string
$foobar assigned to "one two three ooga booya"
$splice(foobar 1 2 one)
returns "two three"
$foobar assigned to "one one"
If $foobar is empty string:
$splice(foobar 3 4 one)
returns empty string
$foobar assigned to "one"
FYI, $splice() is an expensive function, but not as expensive
as the script version was.
*** News 01/15/96 -- Added $geom()
Returns the value of the global variables CO and LI that
correspond to the number of columns and the number of lines,
respectively, in the main screen for ircII. If you have
more then one screen open and they are of different sizes,
then the actual value(s) returned by this function is at
best undefined. If all the screens are the same size, however,
then that size should always be returned by this function.
*** News 01/13/96 -- Added $chanmode()
Semantics for $chanmode():
$chanmode(#channel)
If #channel is not specified or is an "asterisk", the current
channel is assumed.
This function returns the "channel mode" for the specified
channel. You must be on the channel to use this function.
(See the $key() function for related semantics.)
*** News 01/13/96 -- revamped "timer" mechanism
At the request of several people (esp. Shiek), I have rewritten
the interface to the /timer function and written timer.c which
contains a generic time-delayed callback mechanism. You may use
it in your own C code. See the code for more information.
*** News 01/13/96 -- Silent chagne to /timer
Support for timer refnum zero ("0") is hereby withdrawn due to
the impossibility to portably differentiate between an explicitly
specified zero argument and an error returned from atoi(). More
specifically, if you attempt to use a non-numeric value for the
refnum option to /timer, it would implicitly be assigned the value
of 0, which prohibited the emition of an error message since up until
now specifying a 0 refnum was valid. Now any attempt to use refnum
zero is flagged as an error.
It is possible to support the old (broken) semantics. See the
source code for more information.
*** News 01/07/96 -- Attempts to make $ expandoes boundless
Up until this release, all $ expandoes have been truncated at
a 2048 character length. Since this has made a few people rather
irritated due to unreliable behavior, the behavior has been changed
so that $ expandoes are never truncated at any length.
Testing has shown that this new method is somewhat slower for
extremely large variables (10,000 characters and up), but this is
not totaly unexpected since mallocing off large chunks of memory
and strcpy()ing them around is more expensive then just whipping
up a stack array and strcpy()ing a shorter string into it.
For the sake of sanity, i want to point out that unless your variables
are long enough that they were being truncated, the processing time
for all variables is essentially zero. Also note that this entire
discussion applies only to the use of $ expandos and does not apply
at all to "expression" mode where variables have never been truncated.
*** News 01/02/96 -- /dcc get nick works multiple times.
/dcc get nick will not issue an error about connection already being
in progress unless all connections currently being offered from "nick"
are actually in progress. (Previously, you could only do /dcc get nick
one time, no matter how many files "nick" had offered you.)
*** News 01/01/96 -- New built-in function $info()
Semantics for $info():
Description: A function used to supply non-specific information
about the actual executable image itself.
Arguments: "COMPILE" returns information about who compiled
the binary in the form:
"Compiled by <user>@<host> on <date> at <time>"
"SUM" returns the output from the 'sum' command when
run on the file 'info.c.sh' (see below). If this value
is different from a previous use of the program you can
be insured that the binary *has* been recompiled. Since
absolute protection against tampering is effectively
impossible, the converse can not hold.
More arguments are planned in the future.
*** News 01/01/96 -- Added compile logging to the Makefile
The file "info.c.sh" is now run as a shell script and the result is
compiled each time just before a final link is executed. It records
the user, host, and time the compile was done.
If you do not want your username to be returned by the $info()
function, you can #define ANONYMOUS_COMPILE in the config.h file.
The username will then be "<anonymous>", but the host and time will
be normal.
*** News 12/28/95 -- Cleaned up config.h, vars.h, vars.c
Removed irc-vars that were not used or referenced.
Removed #defines that were not used anywhere.
*** News 12/28/95 -- Fixed a really *stupid* bug with set_int_var
To make a long story short, there were a few places that
were using set_int_var() in an inappropriate manner. Those
have been fixed to use the (correct) function set_var_val().
This was the cause of a few obscure bugs, which have now gone away.
*** News 12/28/95 -- A few modifications to the menus:
* If you are in a menu, pressing the Q key kills off the menu
as if you had done /set -menu.
* The <return> key now selects the current option in the menu.
The old behavior of <return> toggling hold mode is deprecated.
* If you #define MENU_BOTTOM in the config.h file, then that
define will be used as a seperator between a menu and the rest
of the window. The #define'd pattern is repeated for the width
of the screen.
* Cursor keys are now supported while in menu mode. Your cursor
keys must be outputing either ^[[X or ^[OX (where X is A,B,C,or D)
to take advantage of this (every vt-like terminal does this)
*** News 12/28/95 -- Made getting a quit message for youself not fatal
Apparantly it *is* possible to get a quit message for youself
in an otherwise legitimite context. I still dont believe it is
possible, but the bug reports are coming in. Now it just emits
a cryptic error message that is not fatal.
*** News 12/28/95 -- Fixed /dump on (reported by Oldpink)
Fixed dumb bug in hook.c:flush_on_hooks() that was prohibiting
named-hooks from being flushed (numeric hooks were being flushed
just fine).
*** News 12/28/95 -- Fixed $connect() (reported by Chaos and others)
The problem was that in dcc_raw_connect (what $connect()
calls to establish the connection) i forgot to cast the
user-specified portnum to network order, so on wrong-endian
machines it was actually specifying a wrong port. *sigh*
*** News 12/28/95 -- Changed the behavior of alias.c:add_alias()
The semantics of assignment have been changed slightly to support
the removal of variables when their values would be otherwise set
to a string with length 0 (an "empty string"). Such assignments
this cause the variable to "go away". This is not a problem since
referencing a variable that "dont exist" expand to the empty string,
so you get the same value either way. This also affects places where
variables are implicitly assigned (such as $shift() and $splice()).
*** News 12/28/95 -- ADVISORY -- use care with the /OPER command!
Some advice to you opers out there...
1) Dont put your history in a file if you use /oper nick passwd.
Obviously, this puts your passwd in plaintext out on the file
system which is a "bad idea", especially if someone is able to
log in as you, they can use the cursor keys to just back up in
your history and become oper w/o having to crack your passwd.
2) Make sure noone is peeking over your shoulder if you do /oper nick
and type the passwd as "invisible text", as the person peeking
would be able to figure out how many characters your passwd has
which helps them in cracking it.
*** News 12/28/95 -- Added $crypt() from CrowMan
Semantics for $crypt():
$crypt(salt password)
You give it a salt (a two letter combination) and a plaintext
and it returns an encrypted string. This just calls the C library
function $crypt(), so if you dont have it, this wont do you any good.
*** News 12/28/95 -- Added $fexist() and $fsize() from Sheik
Semantics for $fexist() and $fsize():
$fexist(filename) returns 1 if file exists, -1 if not.
$fsize(filename) returns size of file, -1 if file not exist.
*** News 12/28/95 -- Added new key binding, DELETE_TO_PREVIOUS_SPACE
Keybinding deletes characters backwards until if finds a space.
Note that if the character to the left is a space, it wont delete
anything.
EPIC3pre6 [[ LAST MINUTE BUG FIXES/ADDITIONS ]]
*** News 12/3/95 -- New built in function $aliasctl()
Semantics for $aliasctl():
Description: A function that allows for low-level manipulation
of the alias and variable lists. It takes three or more arguments:
The first argument is the string "ALIAS" or "ASSIGN"
The second argument is one of the options "GET", "SET", or "MATCH"
The third argument is the alias/assign you are operating on.
If the operation is "MATCH" and this argument is
an asterisk ('*'), then it will match all top-level
alias/assigns.
The rest of the arguments are used if you are doing a SET.
More operations may be added in the future.
"GET" returns the value of an alias/assign.
"SET" sets the value of an alias/assign.
"MATCH" returns a word-list of all aliases/assigns that begin
with the specified argument. "MATCH" does not descend
into arrays or subarrays: "MATCH" does not accept wildcards,
but does accept the special argument "*" which returns all
first-level alias/assigns.
contrived examples:
$aliasctl(ASSIGN GET foo) returns the value of $foo
$aliasctl(ASSIGN SET foo 3) same as @ foo = 3
$aliasctl(ALIAS GET join) returns the "stuff" for /join
$aliasctl(ALIAS SET join window join)
same as /alias join window join
$aliasctl(ASSIGN MATCH *) Returns all top-level assigns.
Does not return any arrays.
$aliasctl(ALIAS MATCH w) Returns list of all aliases
that start with 'w'
$aliasctl(ALIAS MATCH tk) Returns list of all aliases that
begin with 'tk'
$aliasctl(ALIAS MATCH tk.) Returns list of all aliases in
the array "tk"
*** News 12/3/95 -- New built in functions $numwords() and $strlen()
$numwords() returns the number of words in the given text.
$strlen() returns the number of characters in the given text.
Text with all whitespace characters has zero (0) words.
$numwords() does not recognize "extended words".
Use @var or #var when possible, as they are more efficient.
*** News 12/2/95 -- /FOREACH can work on command aliases
If the named argument to /FOREACH begins with a hyphen ('-')
then iteration will occur over the array of command aliases
specified (as opposed to assign aliases)
*** News 12/1/95 -- /WINDOW size added
You can specify the absolute height of a window by using the
/window size <height> operation. If the specified size is
inappropriate, the client will whine at you.
*** News 12/1/95 -- /LASTLOG displays ANSI codes if #define MURPLE
If you #define MURPLE in your config.h, /LASTLOG will turn on
DISPLAY_ANSI during its execution and turn it back to whatever
you had it set to when its done. If murple likes it, i might
make it the default.
*** News 12/1/95 -- New functions $winserv(), $lastserver(), $servername()
These functions return -1 on error (ie, on illegal value)
$winserv() or $winserv(0) returns the server index for current
window.
$winserv(winrefnum) returns the server index for that
window.
$lastserver() returns the server index for the last
server we parsed. Useful with:
$servername(servrefnum) returns the name of the specified
server.
*** News 12/1/95 -- DISPLAY_ANSI var only lets escapes through
The only ANSI character that is valid and less then 32
is the escape character (27). So if DISPLAY_ANSI is
on, we let it though but reverse all the rest (like say,
the XON/XOFF characters, and ^R and ^T. >;-)
*** News 12/1/95 -- LASTLOG level "ALL" includes USERLOG levels
You get the idea.
*** News 12/1/95 -- $-0 silent change
I think i can explain it best by an example:
For the args " 1 2 3 4", $-1 on the stock client is " 1 2"
but for the string $-0, the stock client does "1". This is
inconsistent: It should never strip the leading spaces on $-n.
So i fixed it so that $-0 is " 1" instead of "1".
*** News 12/1/95 -- /set BEEP off really *means* off
You wont get beeped *at all* if you have BEEP set to off.
Really.
EPIC3pre5 [[[ FINAL BETA RELEASE! ]]]
*** News 11/27/95 -- New built-in function $writeb()
The function $writeb() is exactly the same as $write(),
except it does not append a trailing newline.
*** News 11/27/95 -- New functionality to $read()
Expanded semantics for $read():
$read(fd bytes) -- returns the next "bytes" bytes from
the $open()ed file. It is guaranteed
that many bytes will be read and returned
unless end-of-file occurs.
*** News 11/27/95 -- Added support for NOTEs
Added support for undernet-style NOTEs.
Incoming NOTEs look like this:
[nickname] message (time)
where "nickname" is the person who sent the nick,
"message" is the message, and "(time)" is the time that the
message was sent, if and only if the message was sent more than
one minute ago. If (time) is absent, the message was just sent.
/ON NOTE supplies the following arguments:
$0 nickname of the sender
$1 The time the note was sent -- this field is only
accurate up to plus or minus 60 seconds, so just understand
that you cant trust the seconds to be accurate.
$2- The message
/IGNOREing NOTEs now works.
*** News 11/23/95 -- Sanity for /STACK
People commented that if you attemped to /stack push on XXX,
and there were no /on XXXs present, that an empty "placeholder"
should be placed on the stack, so that when /stack pop on XXX
is executed, the /on XXXs should be cleared, instead of not
clearing them and emitting an error message (agreed, fixed.)
*** News 11/23/95 -- Support for long nicknames
#define ALLOW_LONG_NICKNAMES if you want support for 30
character nicknames. Dont define it if you dont use any
servers that support long nicknames. (Default is undef)
*** News 11/23/95 -- Closed up tty bug
Sometimes, characters with the high bit set were being sneaked into
the client even if the client asked the terminal handler to strip
off the high bit. Now the client just goes ahead and strips off
the high bit itself if 8 bit characters are turned off. This fixes
the bug when people would send XOFF characters with the high bit
set and that would get passed to the terminal, which ignores the high
bit, and turns off the person's flow control -> bad. (chaos)
*** News 11/23/95 -- Support for CS servers
Support for user modes +c, +f, +k, +r, and +u have been added.
EPIC3pre4
*** News September/October/November - lots of bug fixes
So im lame. I didnt add any new features, just fixed bugs as
they popped up.
EPIC3pre3.3
*** News 09/30/95 -- Added a feature to deny a specific host
In some schools that have networked systems (ie, under AFS),
the same executable may be run by any nmber of people on any
number of machines. For these people, there is now a config.h
#define that allows you to set a file that will be checked for
hosts to deny access to the executable.
EPIC3pre3
*** News 09/09/95 -- Got rid of stupid 'count' program!
Converted *.h.proto files to use 'enum' instead of that stupid
'count' program. EPIC no longer requires (f)lex to compile.
*** News 07/31/95 -- major rewrite of built-in functions and regression test
I rewrote most of the built-in functions to fix all of the remaining
bugs that were present. I also whipped up a script to test a lot of
functions to make sure that in the future, ill know right away when
a function isnt working right.
*** News 07/06/95 -- DCC TALK and DCC SUMMON removed
In a move that is likely to be a little controversial, i removed
the DCC TALK and DCC SUMMON features because they seemed to be
1) redundant
2) not implemented very well
And also because we want to make EPIC smaller by ridding it of
extraneous unused features.
*** News 07/03/95 -- Userhost now taken on advice of the server
At the suggestion of DemoN, the client now asks the server what
it thinks our userhost is when we have connected to it, and we
take it at its word. In this way, we no longer have DCC conflicts
when we think our IP address is one thing and the rest of the
world thinks its another...
EPIC3pre2
*** News 06/23/95 -- /on timer actually hooks at the top of each minute
/on TIMER actually hooks when the minute rolls around instead
of "up to" 15 seconds after the minute. Another aspect of this
is that EPIC doesnt do 4 select() calls a minute when youre
idle, it only does one, which lowers the CPU usage.
*** News 06/14/95 -- DCC Transfers now measured to microsecond precision
If your system has gettimeofday() (its a BSDish syscall) EPIC
will report your DCC transfer rates in terms of second/usecond
resolution -- providing a better representation of the kb/sec
for small, fast transfers. Anyone want to tell me what/if there
is a posix or sysv call to get second/usecond info?
EPIC3pre1 (size level 123%)
*** News 05/21/95 Highlight characters may now be bound (keys.c, edit.c)
You may bind any sequence you wish to BOLD, UNDERLINE, REVERSE,
or HIGHLIGHT_OFF. However, please note that no matter what key
you have bound to them, BOLD will always insert a ^B into your
input line, UNDERLINE inserts ^_, etc, etc, etc. Yes. i know this
can be confusing, but unless someone comes up with a big gripe,
im most likely going to leave it this way. The highlight keys come
bound to the highlight bindings that they should be bound to by
default. >;-)
*** News 05/21/95 /set INDENT should work properly with ascii sequences
(screen.c)
Or so i think. Let me know if you dont think it works properly.
*** News 05/20/95 # walls incorrectly hooked (parse.c)
# walls (ie, walls sent to a hostname pattern) were incorrectly
hooked as PUBLIC_MSGs instead of MSG_GROUP. Fixed.
*** News 05/20/95 choices for help now paged (help.c)
When you are given a list of choices to select from in the help
browser (ie, in /help set), the options are paged if you have
HELP_PAGER set.
*** News 05/17/95 built-in aliases now binary searched (alias.c)
The built in aliases (all 101 of them) are now binary searched
instead of sequentially searched. This should make the use of
built in aliases all that much faster, as well as increasing
the speed of your own aliases since the entire builtin alias
list will not have to be traversed before your aliases are
searched.
*** News 05/17/95 Complete rewrite of main loop (irc.c, others)
irc_io has been replaced (modularized, actually). Hopefully
this will make ircII more reliable and less prone to lock ups.
The first thing you will probably notice is that the client
still accepts input from the keyboard even during a /wait
command. Preliminary tests show this new design to be more
sturdy then irc_io ever hoped to be.
*** News 05/11/95 Completed rewrite of ignore (ignore.c, whois.c)
The rewrite of the ignore system has been completed. Ignores are
now officially based on *!*@* patterns instead of nickname or
userhost patterns.
*** News 05/11/95 Key bindings are now allocated dynamically (keys.c)
Up until now, the key maps have been stored in static arrays, 10 maps
of 256 characters for a total of 2560 entries at 13 bytes per entry.
(2 integers a pointer and a char) for a usage of 33,280 bytes (32K).
That has been dropped down to 2560 pointers (10,240 bytes) with 13
bytes still used for each key binding, a savings of 23,040 bytes
(22k) in overhead. You would have to have over 1,770 key bindings
before you will use as much RAM under this new system as you did under
the old system.
*** News 05/11/95 Client no longer needs the 002 numeric (notice.c)
Some people, who hacked the 002 numeric reply on their server, broke
all the ircII clients out there that rely on the 002 numeric being of
a specific format to extract the server name and version info. This
is totaly ludicrous to me, since that is what the 004 numeric is there
for, (to provide server and version info.) So the .ircrc is not
loaded until the 004 numeric is recieved now. The ``kludge'' that
ircd has for older ircII clients is ignored if you recieve the 001
numeric (which signifies a 2.8 class server). If you do not recieve
a 001 numeric, then the server waits until the kludge is recieved to
load the .ircrc, as it has always done for ever and a day.
*** News 05/09/95 Removal of support for 2.5/2.6 (all)
Per the vote taken on the mailing list, all support for ircd2.5
and ircd2.6 has been terminated. Please do not use EPIC on those
servers. (This should not be a problem since there hasnt been a
ircd2.6 server in over three years) I have ripped out large chunks
of code that were specific to ircd2.5 and 2.6, and which were
confusing the whole code and making things harder then they had to
be. Also, code that is specific to ircd2.7 servers has been
#ifdef'd out by default, you can get that code by #define COMPAT_27
in the config.h. If you dont need ircd2.7 compatability, you will
save some amount of space in your executable.
*** News 05/06/95 new command /MESG (output.c)
The new command 'MESG' now does what its counterpart in unix does:
It allows or disallows writes to your screen: If you set it to 'n',
you will not recieve any talk requests or writes from other users
directly onto your screen. If you set it to 'y', you will be able
to recieve talk requests and writes from other users. THIS DOES NOT
RESET THE PREVIOUS STATE WHEN YOU EXIT! If you use 'MESG' to set
permissions on your tty, those permissions will still be set after
you exit.
*** News 05/06/95 new function $trunc (alias.c)
A new function $trunc() is available for rounding or truncating
floating point numbers. It takes two arguments, the first is the
precision and the second is the number. If the first argument is
positive, that is taken as the number of decimal places to round at.
If the first argument is negative, that is taken as the number of
significant digits to round at. The answer will never have more
precision then what you provide. This function uses the system call
printf() to format the output, so your actual output is dependant
upon your system's implementation of printf(). If you provide strange
input (ie, something that isnt a number) you will probably get strange
output. (garbage in, garbage out)
*** News 05/06/95 DCC reject (dcc.c ctcp.c)
If you use the /DCC CLOSE command to close an offered or pending DCC
connection, it will send a CTCP notice to the other peer telling them
that the transaction will not occur. Both peers will then remove the
offer from their respective DCC lists. Either peer (either the sender
or the reciever) may reject the connection by using /DCC CLOSE and the
other peer will be notified. If the other peer is an older client,
they may not handle the CTCP notice gracefully. A script is provided
with the client to supply this functionality to older clients.
*** News 05/06/95 DCC Warning before overwriting file (dcc.c)
If you recieve a dcc send request for a file that already exists, you
will get a warning to that effect, advising you to use /DCC RENAME if
you dont want to overwrite the original file.
*** News 05/06/95 DCC Progress-o-meter (dcc.c, etc)
New status format variable: %D -- shows the progress of the current
DCC send/get transfer showing the nickname and percent of transfer
completed. /DCC LIST now shows the size of the file and the
percentage transfered instead of simply showing the number of bytes
sent.
*** News 05/01/95 Floating point support (alias.c)
There *IS* floating point support. However, it is preliminary and
may not neccesarily be complete or manageable! In all cases where
integers are needed, any floating point values will be truncated to
the next lowest integer (or to the next higher integer if youre
talking about a negative value)
You have to /set FLOATING_POINT_MATH to 1 before you will get any
floating point answers. This is to maintain backwards compatability
with old scripts until i have a chance to assess the damage that
would result in older scripts that assume integer math.
Also note that no matter what FLOATING_POINT_MATH is set to, floating
point math will be done on the operands. if it is set to OFF, the
result will then be truncated after the operation. So any script that
did something like 8 - 3.2 will get the answer '4' instead of the '5'
that previously would have been given.
Please keep in mind that ircII parses its algebraic expressions from
right to left (this is a bug im working on, so dont harass me yet),
so if you try to do floating point math, please be aware that you may
have to use paranthesis to get the right parsing order.
*** News 04/28/95: More security
A new /set, "SECURITY" is in place to allow you to do some primitive
backdoor security. If you set it to 1, you cannot use a variable as
a command. If you set it to 2, you cannot use /exec except
interactively. If you set it to 4, you cannot use the /set command
except interactively. You can add these numbers up to suit the
security you wish to have.
****************************************************************************
EPIC2 [[[ PUBLIC RELEASED VERSION! ]]]
*** News 04/09/95: ~ operator had wrong precedence (alias.c)
The ~ operator had the wrong precedence. Its now been fixed.
*** News 04/08/95: $open() now expands twiddles (files.c)
Kev asked me to have the $open() call expand_twiddle so
you can do ~/filenam type stuff.
*** News 04/08/95: New functions added (alias.c)
The following functions, which act simply as front ends
to the system calls by the same name have been added:
$unlink(file1 [file2 ...]) Delete a list of files
$rename(file1 file2) Rename file1 to file2
$rmdir(file1 [file2 ...]) Delete a list of directories
These functions return the number of files that were not
successfully handled. So, it returns 0 if all went well or
if no arguments were specified.
These functions wont do anything the system call wont do, ie,
theyre rather primative. Use /exec for more complex tasks.
These functions do NOT do any wildcard expansion!
*** News 04/08/95: EMACS keybindings no longer bound by default (keys.c)
Someone from Europe said that using EPIC on scandinavean
keyboards was difficult at best becuase of the emacs metakey
bindings that i doubt anyone uses anyhow. You can #define
EMACS_KEYBINDS if you want them, or just /bind them in
your .ircrc
*** News 04/05/95: Nickname not fudged in /nick (numbers.c, etc)
Kanan asked that the /nick command not fudge your nick
if you enter an invalid nickname.
*** News 04/03/95: Fixed brain dead ignore (ignore.c)
Many, many people have asked why /ignore cannot support
the nick!user@host construct. Well, now it can. In fact,
you can give it any non-ambiguous nick!user@host pattern
and it will recognize it and do the right thing. A userhost
*must* contain either a "@" or a "." Any string with no
"!"s, "@"s, or "."s is assumed to be a nickname.
Also, the /ignore command stores ignores as nick!user@host
patterns now instead of as a "nick" or a "userhost" -- this
is backwards compatable becuase you can think of what used
to be stored as "nick" is now "nick!*@*" and what used to
be stored as "user@host" is now "*!user@host" -- ok?
*** News 04/03/95: Finished implmenting /stack (stack.c)
/stack (PUSH|POP) (ASSIGN|ALIAS|ON) now works.
/stack LIST isnt implemented yet. Will come in future version.
EPIC2pre5 [[[ FINAL BETA RELEASE! ]]]
*** News 04/02/95: Modified 'LOAD' command (edit.c)
You may now specify any number of filenames per LOAD command.
Not only will this allow you to tighten up your scripts by
loading many files per LOAD command, but also allows you to
stub several files to one alias (see below) -- of course,
if you use the -args flag, you may not specify more then
one file after the flag to load. The -args flag has effect
only on the one filename that follows it. (see help files)
*** News 04/02/95: New command "STUB" (alias.c edit.c)
*** NOTE: The use of the word 'alias' can also be
extended to the word 'assign' as well.
You may now "stub" an alias to a file. What this means is
that the first time you attempt to use that alias, the file
it is stubbed to will be loaded. Therefore, if the alias
is never used, the file it is contained in will never be
loaded (Obviously, if another alias that is stubbed to the
same file is used, all aliases in that file will also be
unstubbed.) The idea is that instead of loading a very
large script pack on boot up, you can create a file that
will contain "stubs" to the real files those aliases are in.
If/when you actually use those aliases, at that time will the
file be loaded, so you dont have to load everything every time
if you dont use everything every time. >;-)
Stubs *are* aliases. The /STUB command is used only to enter
stubs. Once they are entered, you can (and must) list or
delete list them using the /ALIAS command just as if it were
a normal alias.
Probably I (or someone who is interested) should write a C
program, or maybe even a perl program that will automatically
generate stub programs for multi-file script packs.
*** News 03/31/95: Implemented CTCP over DCC (ctcp.c, dcc.c, etc)
You are now allowed to send CTCP commands over an open
DCC CHAT connection by using the form =nickname, just like
you do for /msg =nick. This buys you three things:
* On a really really bad day, you can send files to a person
you are dcc chatting with without having to be at the mercy
of a certain d0g3-st()()p1d server that lags a lot.
* If you dont want to tell the whole net that youre sending
a file to someone, this allows only you and your target to
see the handshake.
* Since all CTCP commands can be sent this way, its just another
way to reduce network traffic, making life better for everyone.
*** News 03/28/95: Fixed the STACK command (stack.c)
STACK POP ON XXX now works correctly. huzzah!
EPIC2pre4
*** News 03/27/95: Bug fix for umode +o (parse.c)
Doh! Cant pass a null pointer to do_hook....
*** News 03/27/95: New privacy feature (config.h, irc.c)
As detailed in the config.h, there is a new privacy feature
in ircII. You are now able to define at compile time, or,
to specify a file containing at run time, user ids in integer
form, that will be authorized to run the program. Unauthorized
users will be "spoofed" -- that is, ircII will execute another
program (that you may also define) without giving any clues.
You may also specify a password that will be used in conjunction
with uid checking.
You can also define a second file that will be used to specify
the uids of those users who will NOT be allowed to use the
program *at all*
See the config.h for a full explanation of the feature.
*** News 03/26/95: Fixed bug with ${} expando (alias.c)
The ${} expando (that allows you to switch to the expression
context from within the command context) didnt allow nesting
before. I consider this a bug, so i fixed it.
(ie, ${[${foo}bar]} now is the variable $foo followed
by the string 'bar'. Nesting ${}s usually is done
when you are using the tertiary operator)
EPIC2pre3.1
*** News 03/23/95: new /set: DISPLAY_ANSI
At the request of Deadelvis, i included a new /set that will allow
you to display ANSI characters as is without their being fudged
by the client into reverse characters. It is off by default.
*** *** *** WARNING! *** *** *** WARNING! *** *** ***
If you run the client with this set to ON, you run the risk of
keybombs/whatnot!
*** *** *** *** *** *** *** *** *** *** *** *** *** ***
My advice is to do something like this:
alias real_echo {set DISPLAY_ANSI ON;eval echo $*;set DISPLAY_ANSI OFF}
then use /real_echo to display things with ansi characters.
*** News 03/23/95: Unexpected EOF message more informative
the "Unexpected EOF in file ..." error message will now attempt
to tell you what line the beginning { started at. Its not
guaranteed to get the right one, but it will get the first unmatched
{ correct. ;-) (deadelvis)
*** News 03/23/95: /ignore MSG no longer ignores CTCPs
At the request of DeadelviS, /ignore ... MSG no longer ignores
CTCPs. you have to /ignore ... MSG CTCP now. Unless someone has
a dire problem with this, i will keep it this way. If you have
a dire problem with it, let me know, and ill work something out
with you.
*** News 03/23/95: wait % functionality restored
Flav alerted me to the fact that wait % was a noop. I put back
its functionality. Dont ask me why phone took it out in the first
place. Whee.
EPIC2pre3 (2.8 compliant)
*** News 03/19/95: finished prototyping
Most (all?) the header files are now prototyped.
*** News 03/18/95: new config.h define, "EXEC_COMMAND"
At the request of DemoN, i have included a define in config.h
that will allow you to remove the EXEC command at compile time.
If you remove the EXEC command, it cannot be used unless you
recompile the client again. If you do not define EXEC_COMMAND,
you cannot use the file manipulation functions either. This
is "supposed" to be a security feature. >;-)
*** News 03/17/95: New /set: AUTO_NEW_NICK
If the server rejects you for a nickname collision, and
you have AUTO_NEW_NICK set to ON, the client will convolute
your nickname in an attempt to get a nickname suitable for
reconnecting. It has a pretty good idea when its out of
guesses, and if that happens, it will fall back and ask
you for a new nickname. If AUTO_NEW_NICK is off, the client
will always ask you for a new nickname if you are collided.
*** News 03/17/95: New function (alias.c notice.c server.h)
New function:
$version([servernumber]) - returns in text form the "class"
of server specified. The servernumber should be
a number corresponding to a server in your server list
TO WHICH YOU ARE OR ALREADY HAVE BEEN CONNECTED!!
Specifying no arguments implies your current server.
The classes are such:
"2.5" a 2.5 server
"2.6" a 2.6 server
"2.7" a 2.7 server
"2.8" a regular 2.8 server
"u2.8" an undernet 2.8 server (mu/me)
"2.9" a regular 2.9 server
"u2.9" an undernet 2.9 server
"2.10" a regular 2.10 server
"u3.0" an undernet 3.0 server
Please dont get confused if you get the reply "u2.8" from
a server on efnet: All that is meant to convey is that the
server has the capability to handle the extended undernet
numerics and replies.
If you ask for the version of a server to which you have not
been connected, "2.5" will be returned (becuase it is the
lowest common denominator)
*** News 03/16/95: EPIC finally loads 100% of ircII2.2.9 scripts
Thanks to the prodding of Kanan and Murple, i tracked down
the reason EPIC wouldnt load old script packs. It was in
edit.c in the loader, the part that handled comments was
munging up lines that it shouldnt have been. I am now able
to load textbox, axis, and phoenix without any apparant
problems. (mixed blessing) This is the most fundamental
bug that i have fixed, so it is worth upgrading for.
*** News 03/16/95: character translation function
New function:
$tr(/oldc/newc/text) - Substitutes any instances of characters
in 'oldc' with corresponding character in 'newc' in
'text'. If 'oldc' is longer then 'newc', then the last
character in 'newc' will be used to extend 'newc' to the
length of 'oldc' Delim is the first character, does not
have to be '/'. Examples:
$tr(/a/b/Mary had a little lamb) returns "Mbry hbd b little lbmb"
$tr(?a??Mary had a little lamb) returns "Mry hd little lmb"
$tr(:abcdefghijklmnopqrstuvqxyz:nopqrstuvwxyzabcdefghijklm:$*)
would do a "rot-13" on the text passed to the alias.
$tr(/$chr($jot($ascii(a) $ascii(z)))/
$chr($jot($ascii(n) $ascii(z)))$chr($jot($ascii(a) $ascii(m)))/$*)
Does the same thing as above.
EPIC2pre2 (2.8 compliant)
*** News 03/14/95: New IP/name conversion functions
Added three new functions:
$iptoname(ip-addr) given a XXX.XXX.XXX.XXX ip address, returns the
hostname associated with that IP
$nametoip(hostname) given a hostname, returns the XXX.XXX.XXX.XXX
ip address associated with that host.
$convert(whatever) converts whatever you give it to whatever it isnt.
$convert($convert(rush.cc.edu)) should return "rush.cc.edu"
*** News 03/13/95: file reading/writing by popular request
You now have the capability to manipulate files directly in
irc using several built in functions.
$open(FILENAME <type>) where <type> is R or W depending
on whether you want to Read or Write. Write does
not truncate file, but rather appends. Returns the
file descriptor to the opened file.
$close(fd) closes the file corresponding to the fd.
$read(fd) returns a line from the file corresponding to the fd.
$write(fd text...) writes the line of text to the file
corresponding to the fd.
$eof(fd) returns 1 if the fd is at end-of-file, 0 otherwise.
These functions return -1 if there is some sort of error.
More functions can be added if you tell me what you want to have.
The "read" option uses uzfopen, so you can read compressed files
via this method if you wish.
Example of usage:
alias cat {
@ fd = open($0 R)
do { echo $read($fd) } while (!eof($fd))
@close($fd)
}
EPIC2pre1 (2.8 compilant)
*** News 03/01/95: do (if.c) (final support in pre2)
Finally got around to supporting the do/while command. It takes
the following form(s):
/do cmds
/do {cmds}
/do {cmds} while (expr)
All forms should work correctly.
*** News 02/28/95: uzfopen (edit.c ircaux.c help.c)
Added capability for ircII to automatically grok the *.Z, *.z,
and *.gz compressed file extentions and automatically know what
to do with them. You may now compress any LOADable file, or
any HELP file any way you choose (gzip or compress) and ircII
will know what to do. Blew away all uses of the ZCAT macro.
*** News 02/27/95: Bug fixes, 2.8 compliance (all)
Wow. Now that its all ANSI prototyped, i have to go through and
fix all the function calls that are incorrect, especially most
of the key binding functions. Some of them were (char, char *),
some of them were (char *, void (*)()), and some of them were (void).
Ick. They all take (char, char *) now. I need to go through and
compile ircII with the -Wall option and find all the bugs i can...
*** News 02/15/95: More Undernet Support (edit.c status.c)
u2.9 commands /RPING, /UPING, and /MAP now supported
u2.9 user mode +d now supported.
mu3 /SILENCE command and replies now supported
*** News 02/9/95: Hack for 'uname' and 'c-like comments'
see config.h about #define UNAME_HACK and #define COMMENT_HACK
basically, it provides some sanity checking for people who dont
like 1) giving out their uname's, and 2) having scripts like
phoenix break on EPIC. (awwwww! >;-)
*** News 01/10/95: Bug fixes (alias.c)
A tertiary operator without a colon (? but no :) caused a
coredump: this has been fixed
*** News 01/02/95: Sanity check for SUPPRESS_SERVER_MOTD (numbers.c)
If you have /set SUPPORT_SERVER_MOTD set to ON, then you
cannot hook /on 372, 375, or 376 the first time you join
a server (ie, its suppressed). You will still hook these
ons any other time you do a /motd.
*** News 01/02/95: new set: NUM_OF_WHOWAS (vars.h.proto vars.c edit.c whois.c)
Allows you to set the number of WHOWAS replies you will recieve
from the server for any given /WHOWAS command. If the value is
nonpositive, the WHOWAS suppression is turned off and you will
recieve all the WHOWAS replies from the server. If it is set
to a positive number, you will recieve up to but not more then
that number of WHOWAS replies per command.
You can override the set by using /WHOWAS <nickname> <NUMBER>
where number is the number of whowas's you want for that
command ONLY. It does not change the default.
*** News 12/22/94: Command line parser rewritten (irc.c)
Revamped the command line argument parser, its not quite as
quirky now, and is more able to cope with different styles.
The biggest change (that will break things) is that every flag
must be preceeded by a hypen (ie, -lbs is *not* the same as
-l -b -s any more.)
Of the commands that need to take an argument, the argument
may either be in the same "word" as the flag or may be in
the next word. (ie, -lfoo.irc is the same as -l foo.irc)
Arguments given in the same word to flags that do not expect
an argument elicit a warning but are not fatal.
Naked arguments (arguments not starting with a hyphen) are parsed
just like they always have been, with the first naked argument
being used as the default nickname and any other naked args used
as default server(s)
All taken into account, it is intended that the command line
arguments will now be easier to use and wont be quite so
painful with its (oft) mistaken restrictions...
New command line argument(s):
-n sets the default nickname
The command flags -I and -i will be supported in some future
release. (used to determine default visibility)
***************************************************************************
EPIC1.003 (vars.h.proto vars.c alias.c)
Added new set, /set PAD_CHAR that is used to determine the
padding character used in the "width" expando (ie, $[10]foo).
While syntatically PAD_CHAR may be set to any string, only the
first character will actually be used and the rest are ignored.
EPIC1 (2.6 compliant)
Upgraded to 2.6 (of course)
Functions isalpha() and isdigit() added: isalpha() returns "1"
if first character passed is a lowercase or uppercase letter.
Isdigit() returns "1" if the number is a digit, or is a hypen and
the second character is a digit.
Most (all?) of the word functions now call new_next_arg() instead
of next_arg(). What this means for you is that if you wish, you
can group more than one word inside of quotation marks, and they
will be considered as one "word" for matching/counting/etc.
The usefulness of this will be demonstrated below. ;-)
Flexible hooks have been added: You can enter and recognize
flexible hooks by using single quotes (') instead of double
quotes (") around the pattern in the /on statement.
So: /on join '$N *' echo $*
will /echo $* any time you join a channel. The difference
between a flexible hook and a regular hook is that the
flexible hook's pattern is not static, but rather is dynamic,
and any variables in the pattern will be expanded before it
is matched against the incoming line. This allows you to put
variables/functions in a pattern and have it work right.
Ability added to allow inline explosion of regular expressions.
If you place two or more words inside a \\[ \\] set, the word
that makes the pattern best match the string will be used:
Example: (newlines added solely for readability)
$rmatch(jnelson@rush.cc.edu
"sconway@\\[ugly raisin\\].ucs.indiana.edu"
"jnelson@\\[rush.cc.edu it.uwp.edu\\]")
would return "2" because the 2nd pattern matches the string.
$rmatch(sconway@raisin.ucs.indiana.edu
"sconway@\\[ugly raisin\\].ucs.indiana.edu"
"jnelson@\\[rush.cc.edu it.uwp.edu\\]")
would return "1" becuase the 1st pattern matches the string.
Note the use of quotation marks around the 2nd and 3rd argument
(which contain spaces) allows them to be considered as one
logical word.
An example that combines the previous two features:
/assign $ak nick@user*host lamer@bogus*host
/on JOIN '% % \\[$ak\\]' kick $1 $0
This ON will be parsed as follows: Since this is a flexible hook,
the $ak will be expanded to its value each time someone joins a
channel. Next, it sees that the value of $ak is inside a \\[ \\]
pair, so it subsitutes each word inside the pair into the expression
to see which (if any) best match the pattern. The value of a
\\[ \\] pattern is the number of characters that is matched
by the word in the pattern that exactly matches the most number of
characters in the pattern.
While it is syntatically acceptable to use nested \\[ \\] sets,
the behavior of this is currently undefined and should not be used
or trusted to be consistant in any future releases.
The $which() function can now take two arguments, with the
first being the file to search for, and the second argument
being a colon seperated path. The second argument is optional
and $LOAD_PATH is used if no path is specified.
EPIC-pre1 (2.3.23 compliant)
Ban listings are now counted, and the total number of
bans is displayed (or available via /on 368 as $1)
Undernet numerics are now (mostly) supported, and the
additions to present numerics are also supported
(Obsolete stuff about ZCAT removed)
If you want things the way wintrhawk has them, just
#define WINTRHAWK somewhere in config.h: otherwise things
will appear as they normally are, more conventionally.
2.3.23+11.1
(obviously) upgraded to 2.3.23
Included stuff from wintrhawk: (everything from here on till
you see the 2.3.22+11 line is from WintrHawk)
Added 6 new STATUS_USER [4..9] variables that will only show in
your NON-CURRENT window. SHOW_STATUS_ALL must be OFF for these to
work. You can predefine these in the config.h or utilise them in
exactly the same manner as you would STATUS_USER[..3].
Additionally, all STATUS_USER variables can now be called with
%0..%9 in STATUS_FORMAT with backwards compatibility of:
[%U, %X..%Z] == [%0..%3]
I hope you'll find these usefull in displaying additional
information on your statusbar. Look for my updated scripts that
will take advantage of these in the near future. I actually do plan
to add more STATUS_USER variables but I don't have the time or
patience yet. |8^)
Fixed the core dump problem when you attempt irc -h.
Got rid of the "ircII%s..." bug that refused to show version info on
abnormal termination.
Introduced a new global variable UNAME to define system type and
release information during a CTCP VERSION reply. Maybe one of these
days I'll have it autoconfig'd with the Gnu AutoConfigure Script.
Fixed the bug that hop introduced that would strip all leading
whitespaces from the input line. Maybe he had a hidden agenda for
doing that... I just found it annoying.
DCC TALK was disabled because the routines didn't work right. It's
now fixed.
Also fixed the bug that would cause you to exit even if you answered
"no" to the "Do you want to quit?" prompt after hitting ^C.
Changed +10's IRCFINGER routine. Functionality remains the same.
2.3.22+11
New function: $which() searches your LOAD_PATH for
the filename you specify, and returns the full path
to it. Useful for this example:
alias send_script dcc send $0 $which($1)
You can now enclose arguments to /LASTLOG inside "".
You can also now use wildcards in /LASTLOG to determine
what you want to search against. If you use these two
together, you can search for multi-word regexes.
example: /lastlog "t*is su"
/lastlog -literal "6667 is the port for irc"
/lastlog o*er
$before() and $after() now have a few new features.
You can now supply an optional integer value as the
first argument to these functions, and if present, will
be used to indicate which instance of the characters
you wish to use. If the number is negative, it counts
off from the end. You can also supply more then one
character to look for, if you wish. Some examples:
# completely backwards compatable
$after(! hop!jnelson@pv0420.vincent.iastate.edu)
returns "jnelson@pv0420.vincent.iastate.edu"
$after(-1 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "edu"
$before(2 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "hop!jnelson@pv0420.vincent"
$before(-3 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "hop!jnelson@pv0420"
$after(-5 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "" because there are not 5 .'s
Added new operators: +=, -=, *=, %=, /=, #=. All do
just what they do in C, except for #= which is a
string catenation operator. I hope to have &=, ^=, and |=
in the next release.
New Keybinding: SHOVE_TO_HISTORY: simply takes what you
have in the input line, saves it to your history, and
then clears the input line (presumably for more pressing
needs). You can get back to your line whenever you
wish by just cycling through your history.
Comes bound to ^] by default.
$F now returns the time the client booted up,
in $time() format (long integer in seconds since 1970)
$J now returns the ircII client version you are
running as a string ($V returns the date released)
2.3.17+10
A new hook, /on EXIT will be hooked as the client is exiting.
This hook is not recoverable (the client can not be stopped
from exiting when /on exit is hooked), but you can do some
housekeeping before the client quits with this.
The /DUMP command can now have 4 optional arguments
"ALIAS" dumps all aliases
"VARIABLES" dumps all variables
"ON" dumps all ons
"ALL" dumps everything
If no args are given, all is used as the default.
New function $chr(int int int int)
Returns the string corresponding to the ascii numbers given
$chr(65 66 67 68) returns the string "ABCD"
New Function: $ascii(string)
Returns the ascii numbers corresponding to the chars given
$ascii(ABCD) returns "65 66 67 68"
Thanks to tychy for the following idea.
When you get an incoming dcc handshake, the userhost of
the person who sent you the request is displayed, as well
as the machine that is in the handshake, and the port number
in the handshake.
If the port number is less then 1024, it is rejected.
If the userhost does not agree with the ip number, beware!
Added two functions: $before() and $after()
Syntax: $before(chars text text text)
Usage: Returns the text (before|after) the first instance
of any character in "chars"
$E now returns your idle time.
Added C-like comments /* */.
Limitations:
While comments may span more then one line, code
may not be broken up over one line. For example:
echo test /* this is a comment
this is more comment */booya
will echo "test" and execute the alias booya.
If you #define COMMENT_HACK, you can only have C like
comments that start at the BEGINNING of a line. The
end of the comment still can occur anywhere.
Fixed the serial numbered hook bug. The one where any serial
numbered hooks higher then the first serial number hook set
that did not have a match were not hooked.
Fixed the mother of all memory leaks. The one that leaked
the channel mode each time the status bar was updated. Phone
fixed this but introduced a new bug in the process. That bug
got fixed in EPIC1.
Added the ~ operator (Bitwise negative)
Added the comma operator. What it does is evaluate the
expression to the left of the comma, and throws away the
result, then evaluates the right side and returns it.
If you are kicked from a channel, and there is a channel
key, auto-rejoin will use that key.
2.3.16+9
Reworked the mathematical parser (next_unit) as follows:
* Added the &, |, and ^ operators
* Made && and || short circuit
* Added the tertiary operator
* The order of hirearchy is the same as C++,
the main change being that assignment
has LESS priority then conjunctions.
Are you sick of when your status line repeats the last
character off to the end of the line? Then you can just
/set status_no_repeat ON.
Added the /ABORT command. It does a "save" into the current
directory and then coredumps. If ALLOC_DEBUG is defined,
it does a memory dump, as well. Useful for confused bots.
NOTE: IT WILL *_NOT_* corrupt your .ircrc!
New function $numonchannel(). Returns the number of people
on the channel specified. The channel may not be ommitted,
and you must be on the channel in question. Returns 0 on error.
Replaced Auto-reconnect in a new form, which was removed from
2.3.16. Autoreconnect is done automatically on server kills.
fixed the $ischanop() bug from 2.2.9. The one where if
someone changed nickname, the client thought they were no
longer opped. This bug still seems to be around in 2.8,
but it is not present in EPIC.
2.3.16+8
Changed the /userhost command. You may now use any number of
nicks per command, delimiting the list with "-cmd", and each
nick will be passed through the commands given.
The client does not automatically turn on the screen when it
is done loading a script, but rather honors the value of
/set DISPLAY. Dont ask me why it was changed in the first
place.
A mode stripper has been added: The mode stripper does not
replace /on mode, but rather complements it. You can turn on
the mode stripper with:
/set MODE_STRIPPER on
and then you can catch stripped modes with
/on MODE_STRIPPED "...."
NOTE: /on mode STILL works even with the mode stripper on.
The load parser has been partially rewritten fixing a bug
when a semicolon was the last char on a line.
2.2.9+7
The behavior of the Command Parser has been changed, and you
may now use {} blocks just about anywhere you want to,
including the /userhost and /timer command, without having
to use the /do command. Try playing around with it, and
youll see what i mean.
The "WAIT has been called recursively" problem is no longer
a problem, so the warning message has been removed. Waiting
recusively no longer locks up the client.
New Functions:
$center(length string)
Returns "STRING" centered in a field
of length LENGTH.
To get a string of length 'length' you
will need to use the width expando, ie
$[length]center(length string)
$split(delim string)
Actually, it just changes any occurances
of any character in DELIM to a space.
Useful with the $word() function.
The % operator (modulus, aka remainder) has been added
Full support for postfix and prefix (in|de)crement
operators has been added. They now work correctly
and as you would expect.
Remember: $blah++ is not legal, it must be used as
${blah++}. Also legal is @ blah++.
New Functions/commands:
$SHIFT(var) removes word 0 from $var and returns it
$UNSHIFT(var word) puts "words" at the beginning of $var
$POP(var) removes the last word from $var and returns it
$PUSH(var word) puts "words" at the end of $var, returns $var.
These functions are also provided in command form, so that
they can be used simply for their side effects.
New Function:
$SAR([r][g]/search/replace/text) - search and replace
If 'r' is the first character, "text" is assumed
to be the name of a variable, and the text sub-
titution is done on that variable and the result
is put back into the variable, and is returned.
If 'g' is the first character, all matches of
"search" will be replaced with "replace". Normally
only the first match is replaced.
In any case, the first character that is not 'r' or
'g' is assumed to be the delimiter. You may use any
delimiter you want, but you should take care that
you dont use it in the first two fields (obviously).
The delimiter may safely appear in the last field.
2.2.9+6
New Command: FEC
Syntax: /fec (string) var {commands}
FEC iterates over STRING one character at a time putting
each character into $var. If you specify more then one
variable, the first one is used, the rest are ignored.
For each character in the string, the commands are
executed.
/fec (booya) x {echo $x}
would output "booya" one character on a line.
New Command: DO
Syntax: /do {commands}
Useful for those places where you can only have one
command, and backslashing semicolons doesnt appeal to
you, like in /timer.
*** Note: This command has added capabilities now. But
its straight use is generally uneccesary becuase the command
parser is now able to deal with embedded {} blocks effectively.
FOR, FOREACH, and FE are now all aliases of each other.
If the arguments do not start with a '(', it is assumed
to be the "FOREACH" command. If there is a () pair, and
there are exactly two commas between them, it is assumed
to be a FOR command, else it is assumed to be a FE command.
New functions:
$reverse(text)
reverses all the text character by character
$revw(word ... word)
reverses the text word by word
$jot(min max interval)
returns a list of numbers from "min" to "max" every
"interval" integers, (interval is one if ommited)
EXAMPLE:
$jot(1 10) returns the string
"1 2 3 4 5 6 7 8 9 10"
$jot(2 10 2) returns the string
"2 4 6 8 10"
2.2.9+5 (includes 2.2.9+4.1)
New command: FOR (CMDS1, EXPR, CMDS2) {CMDS3}
Looks and feels just like the C command (sorta)
Upon commension, cmds1 is executed once
Expr is then evaluated, and if expr is TRUE,
Cmds3 and then cmds2 are executed,
Repeat loop.
Stop command
The comma was chosen as a delimeter on purpose, so you can
have multiple commands in a set.
Example:
alias repeat for (@x=0, x<$0, @x++) {$1-}
alias foo for (@x=0; @y=0, x+y<5 , @x=x+2;@y--) {echo $x $y}
New command: DUMP
Deletes all of your aliases, assigns, and ons,
in case you really FUBAR things. You can then
/load global and your .ircrc to effectively reboot.
New functions:
RPATTERN (word patttern pattern...)
Returns all patterns that match "word"
RFILTER (word pattern pattern...)
Returns all patterns that do not match "word"
COPATTERN (pattern variable1 variable2)
For each value in variable1 that matches the pattern,
the corresponding value from variable2 is returned.
ENFORCE_STRICTER_PROTOCOL now forbids kicks from /on who.
Using /on who to kick is lame anyhow....
If you give the function $key() no arguments, or the argument
'*', the current channel will be assumed.
2.2.9+4
New command: /QUEUE <flags> NAME <number> <{commands}>
Flags: -DO run the commands in the named queue. Deletes
the queue by default.
-NO_FLUSH when you run the commands, do not delete
the queue.
-SHOW show the contents of all of the queues
-LIST show the contents of the named queue.
-DELETE remove the numbered entry in the named queue
-FLUSH remove the named queue
o The "QUEUE" command allows you to store a list of commands
into named queues. You may have as many entries into an
individual queue as you like, and you may have as many
named queues as you like.
o Error checking is not very tight right now, so if you try to
crash the command by doing weird stuff, you probably will.
o If you give a list of commands, they must be surrounded by
braces, and they will be added to the named queue.
o At this point, it is not recommended that you use more
then one flag per command, as i have not tested this yet.
Store commands: /queue BOOYA {echo one}
/queue WAHOO {mode * +o nick}
Exec. commands: /queue -do BOOYA
/queue -do -no_flush WAHOO
If you provide no arguments or the argument "*" to the
functions $onchannel(), $chops(), and $nochops(), the
current channel will be assumed.
New function: $key(#channel)
Returns the channel key for #channel, (provided
you are on the channel that you ask about)
2.2.9+3
$X now returns your userhost
$Y now returns your ircname
(*** Deleted info about $tert() function that is obsolete)
Added the builtin function $onchannel() that returns
everyone on the channel given, but is only reliable if
you are ON that channel. Returns a null if you are not.
Added the builtin functions $chops() and $nochops()
They return the channel operators and non-channel
operators on the specified channels.
Karll's "Array Suite" has been incorperated. The source
file is array.c and the instructions are in ARRAY
META5-9 have been added. You now have 9 META keys to
work with. Meta4 is still sticky.
New command "REALNAME" (or "IRCNAME") allows you to change
your REALNAME (the text on the right in the first line of
a whois reply), it will take effect after you use the
command "RECONNECT"
2.2.9+2
Several new built-in functions have been added:
$leftw(x list) returns the x left words in list
$rightw(x list) returns the x right words in list
$restw(x list) returns the Xth word and after
$midw(start stop list) returns the words start to
stop in list
$notw(x list) return list without the Xth word
$insertw(x word list) returns list with word added as
the Xth word
$remw(word list) returns the list without "word"
$pattern(pattern list) returns all words in list that
rmatch pattern
$filter(pattern list) returns all words in list that
do not rmatch pattern
$chngw(x new list) returns list with the Xth word
changed to new.
$tow(word list) returns the list up to/including word
$fromw(word list) returns the list after/including word
$beforew(word list) returns the list before word
$afterw(word list) returns the list after word
$common(list1 / list2) returns all words present in
both list1 and list2 (case insensitive)
$diff(list1 / list2) returns all words not in both list1
and list2 (case insensitive)
/on encrypted_privmsg and /on encrypted_notice added:
they have the same parameters as /on msg and /on notice
expect that they only are hooked when the msg is encrypted.
NOTE: If you hook these with ^, normal /on msgs will not
be hooked. (you can override defaults)
(Obsolete stuff about ZSUFFIX and loaded files removed)
/on disconnect now hooks whenever you are not connected to a
server, as stated in the help files.
2.2.9+
(Obsolete stuff about ZSUFFIX and help files removed)
Four new ONs added: NOTE: /on dcc_raw ALWAYS has higher
priority over any of these ons.
/on DCC_REQUEST tells you when you have recieved a DCC request
$0 is the person sending the request
$1 is the type of DCC request (chat, send)
$2 is the description (filename for dcc send)
$3 is the size of the file (for dcc send)
/on DCC_LOST tells you when a DCC connection terminates
$0 is the user connected to
$1 is the type of connection lost
$2- any additional information as applicable
/on DCC_CONNECT tells you when a DCC connection becomes active
$0 is the user connected to
$1 is the type of connection being made
$2- any addition information as applicable
A new SET has been added, "AUTO_REJOIN". When set to ON,
you will automatically rejoin the channel if you are kicked.
A new command /FE has been added.
FE (list of words) control vars { commands to execute }
FE allows you to go through a given list of words using an
arbitrary number of them at a time, and execute a set of
commands once for each pass. examples:
/alias opalot fe ($2-) x y z {mode $0 $1ooo $x $y $z}
/alias kickalot fe ($1-) xx {kick $0 $xx}
The first would op/deop a list of people 3 at a time
The second kicks a list of people
An arbitrary limit of 255 control variables was used.
A lot of scripts added. Look through them, you might find
some of them useful.
CTCP FINGER returns a null. (if you #define HOP)
|