File: OLDNEWS

package info (click to toggle)
ircii 20030315-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 5,068 kB
  • ctags: 3,146
  • sloc: ansic: 44,021; makefile: 945; sh: 582; lex: 26
file content (1910 lines) | stat: -rw-r--r-- 67,770 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
@(#)$eterna: OLDNEWS,v 1.2 2001/08/12 15:42:26 mrg Exp $

Changes since ircII 2.2.9:

New functions:

  o  onchannel(nick #channel)   is `nick' on `#channel' ?
  o  pid()                      returns the pid of this client
  o  ppid()                     returns the parent pid of this client
  o  chanusers(#channel)        returns a list of the users on this channel
  o  for()                      like c's for with the separator being `,' not
                                `;'.  (hop)
  o  fe() and fec()             an alternative to recursion.  (hop)

New commands:

  o  beep                       sends a beep to the terminal
  o  rbind function             shows the keys bound to `function'
  o  stack action list arg      `action' is either push or pop. list is one
                                of `on', `alias', `assign', `bind', or `set'.
                                only `on' is implemented currently
  o  window remove nick         the opposite of window add.
  o  window number num          changes the refnum of a window, forcing a
                                swap if so needed.
  o  window bind #chan          permanently bind a channel to a window.
  o  window unbind [#chan]      remove permanent binding to a window.
  o  abort                      drops a core file, and a saved file (hop).
  o  disconnect [ser [reason]]  disconnects from the named server (number) with
                                the given reason.

Fixed commands:

  o  set help_window            now works again.
  o  dcc close send nick file   no longer requires the full path for `file'.
  o  transpose_characters       now works with the cursor at the `end' of the
                                screen.
  o  topic *                    now works as expected.

Changed commands:

  o  userhost [nicks] -cmd      now accepts any number of nicks.
  o  save [-all] [...]          save `all' values, or any part.  valid parts
                                are: assign, alias, all, bind, notify, on,
                                set and digraph.

  o  clear -unhold              as well as clearing the screen, it also
                                unholds one screen.  same as the binding
                                clear_screen

New scripts:

  o  newaway                    does `set show_away_once on' in scripts and
                                with as many nicks as you want
  o  uhnotify                   gives userhost with the notify list.  works
                                much better with the new userhost syntax.
  o  complete, compl.mods       tcsh-like complete scripts.  see script for
                                more information.
  o  imap                       creates an irc map.  see script for more info.
  o  undernet			script to make ircII understand undernet extras.

Changed scripts:

  o  2.8script			updated for 2.8
  o  finger			updated
  o  newformat			updated
  o  netsplit			updated
  o  tabkey			fixes for nicks with \'s in them.

New variables:

  o  realname                   changes the value of your `realname' the
                                next time you change servers (or use 
                                `/quote quit').
  o  notify_handler             three values.  `noisy', `quiet', and `old'
                                old makes /notify work like it did for 2.2,
                                `noisy'  and `quiet' make it work on a lot
                                more events.  join/quit/message/etc trigger
                                the notify, the difference being that `quiet'
                                won't show these extra differences, where as
                                `noisy' will.  they both add/remove the
                                name to the internal `notified' list.
  o  screen_options             this is orthogonal to xterm_options for
                                /window create.

Other things:

  o  redirect works much better.  it doesn't `catch' things it shouldn't in
     most cases.
  o  lots and lots and logs of bug fixes
  o  ctcp flooding is handled better.
  o  lots and lots of bug fixes.
  o  on dcc_raw dcc close works.
  o  all dcc messages go to level dcc
  o  level all contains `dcc' again.
  o  lots of bug fixes.
  o  gnu `autoconf'ified.
  o  did i meantion lots of bug fixes?
  o  if you add #define DYNAMIC_SLIP, you don't need to restart ircii
     for it to notice the ip number of the local machine has changed.
     note: this has since been obsoleted by a smarter, more general method.
  o  /window create might be stabler.  really this time.
  o  new `-q' switch does `quick start' (no .ircrc processing)


	New things for ircII 2.2
	^^^^^^^^^^^^^^^^^^^^^^^^

Commands that have changed.
	It is now possible to redirect to a DCC CHAT connecoitn with
		REDIRECT =nick
	You can have some command execute on the results of USERHOST with
		USERHOST -CMD command
	You can, and are recommented to, use WAIT different now with
		WAIT -CMD command
	You can have ircII create new winodows on screen or xterm's with
		WINDOW CREATE
	The IF and WHILE commands have changed.
    New in 2.2.2
	You can delete a server from the server list with
		SERVER -DELETE <num>
	Two new IGNORE levels, CRAP and CTCP.

New commands
	WHICH script - returns which script will be loaded with LOAD
	FOREACH - to iterate over a list.
	TIMER seconds command - executes `command' after `seconds' seconds.
	INPUT "prompt" command - executes `command' when input is read from
		the keyboard.
	PING nick - uses CTCP PING to work out how many seconds a remote 
		is from you.
	PARSEKEY key - acts as though a key bound to `key' was pressed.
	SENDLINE line - is the same as typing in the line.
	HOOK line - does an ON HOOK check.
	EVAL line - passes `line' to the inline parser, to be executed.
	CTCP UTC - A time CTCP.
	MLOAD - loads a menu.
    New in 2.2.1
	CTCP ECHO - Similar to CTCP ERRMSG.
	WINDOW LOGFILE - Sets the logfile for that window.
    New in 2.2.2
	WINDOW NOTIFY_LEVEL - sets notify level for that window.
	XTYPE - gives full control over /type

(Set help files for these)

New alias variables:
	$W $V $H $U $~

New SETable variables
	NO_CTCP_FLOOD
	SHOW_STATUS_ALL
	STATUS_USER1-3
	MENU
	HIGHLIGHT_CHAR
	HELP_PROMPT
	HELP_SERVICE
	HELP_PATH
	DCC_BLOCK_SIZE
	LOAD_PATH
	DEBUG
	VERBOSE_CTCP
	SCROLL_BACKWARD
	SCROLL_FORWARD
	SCROLL_END
	TRANSLATION
	BOLD_VIDEO
    New in 2.2.1
	SHOW_WHO_HOPCOUNT
    New in 2.2.2
	XTERM_OPTIONS
	EIGHT_BIT_CHARACTERS
	NOTIFY_LEVEL

   And STATUS_FORMAT has these new variables
	%W %X %Y %B %# %@
    New in 2.2.2
	%>

New/changed on hook's.
	ON DCC_RAW
	ON HOOK
	ON INPUT
	Several of the numeric ON's have changed.
    New in 2.2.1
	ON SERVER_NOTICE   *****  THIS HAS CHANGED  *****
    New in 2.2.2
	ON PUBLIC          *****  THIS HAS CHANGED  *****

New bindable keys.
	ERASE_TO_BEG_OF_LINE
	REFRESH_INPUTLINE
	META3_CHARACTER
	META4_CHARACTER

New functions.
	$ENCODE()
	$DECODE()
	$TOUPPER()
	$TOLOWER()
	$TDIFF()
	$CONNECT()
	$LISTEN()
	$ISCHANNEL(word)
	$ISCHANOP(nick channel)
	$WORD(number wordlist)
	$WINNUM()
	$WINNAM()
    New in 2.2.2
	$MYCHANNELS(window)
	$MYSERVERS()

Other
	You can no longer use \n in a line to separate commands.
	Functions are now access with $name().  $%name() is not supported.
	You can access varibles in structures by using struct[index]
	  as well as struct.index.
	You can use { } style braces around aliases.
	You can connected to the server via Unix domain sockets.
	The display defaults to OFF while loading a script.
	You can #define SCROLL_AFTER_DISPLAY to get 2.1.5 like scrolling.
    New in 2.2.2
	New command line option, -v, which prints the version
	and internal version (release date).
	You can use literal ^M's and ^J's to seperate the input line.

    New in 2.2.3
	The character atribute chars have changed in this version.  They
	are now:
		^_ does underline
		^B does bold
		^V does inverse.
		^O turns them all off.

old HISTORY file:
2.2.9
	fixed memory leak

2.2.7
	DCC SEND/GET now shows the size, if it exists.

	You can now use \ to escape newlines in scripts.

2.2.5
	New key binding, SCROLL_START, which moves the scroll
	buffer to the start of the lastlog buffer.  Bound to
	meta1-< by default.

	New arguemnt to /LASTLOG, -LITERAL, which allows you
	to specify the next argument as the pattern to match.
	Allows matching of numbers, eg
		/LASTLOG -LITERNAL 6667

	Channel keys, if set, are now shown in STATUS_MODE.

	When DCC connections become connected, the remote IP number
	is shown, for additional security.

2.2.3
	I think the Makefile and config.h file are easier to use
	now.

	The control characters for bold, inverse and underline
	have been changed to ^B ^V and ^_ respectively, so make
	some sort of visual connection (B to bold, _ to underline)
	with these characters.

2.2.2
	New command, XTYPE.  Happens like this;
		XTYPE [-LITERAL] <text>

	This text gets added to the input cursor, like /type does,
	except bindings are ignored with the -LITERAL switch is
	used.

	New function $CURPOS() which returns the postition from the
	start of the input line to where the cursor is now.

	New STATUS_FORMAT variable, %> which makes anything beyond 
	it right justified.

	It is now possible to close all DCC connections and kill all
	EXEC'ec process by sending the client a SIGUSR1.

	ON PUBLIC has now got this format:
		$0  sender
		$1  channel sent to
		$2- message

	New variable, NOTIFY_LEVEL, and window command NOTIFY_LEVEL,
	which affect the notification of hidden windows.  Same
	arguments as LASTLOG_LEVEL.

	Two new level of /IGNORE, CRAP, and CTCP.

	New functions, MYCHANNELS() and MYSERVERS() added.
	MYCHANNELS() takes a window refnum (defaults to current
	window), and returns a string with a list of channels on that
	windows server.  MYSERVERS() returns a string of the names of
	the servers you are connected to.

	New variable, XTERM_OPTIONS, which are passed to xterm, when
	using WINDOW CREATE.  Note that -geom switches are already
	generated by ircII, so these will be ignored by xterm.

	New variables, EIGHT_BIT_CHARACTERS, which, if set, allows
	you to input 8 bit characters (such as the Swedish character
	set).

	New SERVER option, -DELETE, allows you to remove servers
	from the internal server list.

	New command line option, -v, which prints the version
	and internal version (release date).

2.2.1
	New WINDOW command LOGFILE has been added.  It takes one 
	argument, the file name of the logfile to be used for this
	window.  Nothing is appended to this name, if you use 
	WINDOW LOG.  If you don't set a logfile for the window, and
	use WINDOW LOG, then ircII creates a name for you (old way).

	ON SERVER_NOTICE has been changed, and any script which used
	this will most likely not work any more.  In the new format,
	$0 is the server name, and $1- is the notice itself.

	New variable, SHOW_WHO_HOPCOUNT, which if set will not filter
	out the hopcount on a who reply.

2.2c
	New CTCP, ECHO, which just returns what you sent.

2.2
	New alias variables `$W', `$V' and `$H' which expand to the
	current working directory, the internal ircII release date,
	in YYYYMMDD format, and the current numeric being processed, 
	respectively.

	/ME and /DESCRIBE no longer add a period to the end.

	New variable NO_CTCP_FLOOD has been added.  When set, it makes
	your client only send out one CTCP REPLY each second, and will
	ignore anyothers it gets for that second.

	New BINDable key function, REFRESH_INPUTLINE, which, amazingly,
	refreshes the input line.

	Several /ON NUMERICS's have been changed such that $0 is now the
	server name of the originating.  These include the 31x series
	(/WHOIS replies), which in turn is /ON WHO and /ON WHOIS.
	Numberics 401, have also been changd for this.

	MSG -channel is no longer supported.  Multi-channal make
	this switch unreliable.

	IRCII now supports CTCP PING.  You can call this with
		/PING nick[,nick[,nick...]]
	And it will show you how many seconds to takes to get a
	message to them and back.  Be warned that too many nick
	will cause the server flood control to be used, making
	the times calculated wrong.

	You can now redirect in to a dcc chat connection, with
		REDIRECT =nick command.

2.2pre8
	New command, INPUT has been added.  It takes arguments like:
		/INPUT "prompt" command args
	
	Where it displays "prompt" and then calls command, with args,
	and with the line prompted for as $*.  The use of this is
	strongly encouraged over the use of variable $"..".  Similar
	problems that occur in /wait.

	USERHOST and HOST commands have been changed to allow
	asymnronous command execution, depening on the return of
	the userhost reply.  The form is
		/USERHOST <nick> -CMD <commands>

	Where $0 - $4 expand to the nick, oper status, away status,
	username and hostname respectively.

	If you want the screen to be scrolled like it was in 2.1.5
	and before (A line at the bottom), edit source/window.h and
	define SCROLL_AFTER_DISPLAY.

	DCC CHAT has be improved.  No longer will a collision cause
	nasty things to happen - the client will automatically connect
	if a collision is detected.

	LASTLOG has been changed so that you can now use it like this:
	/LASTLOG <pattern> <count> to get the last <count> lines that
	match <pattern>.

	LIST -TOPIC has been fixed, and its functionality changed,
	so that it do NOT over ride other switches, but works with
	them.

	Three new variables STATUS_USER1-3 have been added, to combine
	with the new STATUS_FORMAT variables, %X, %Y and %Z. <poxaV>

	New command, PARSEKEY, added.  The argument is one of the key
	functions, and the effect is the same as would be if you
	pressed a key bound to that function.

	New command, SENDLINE added.  The arguments parsed to it
	are processed like normal text input, except they are not
	caught by ON INPUT.

	ON INPUT changed to catch all inputted text, not just
	text being send to a channel or a nick.  New variable
	INPUT_PROTECTION added to stop people shooting their
	own foot with the new ON INPUT.

	One new BIND functions has been implimented -
	ERASE_TO_BEG_OF_LINE (not bound to anything by default),
	erases from the current cursor position to the beginning
	of the input line - <poxaV>

	Added new variable HIGHLIGHT_CHAR.  That is /setable to either
	BOLD, INVERSE, or UNDERLINE.  It effects the character that
	ignore + uses.

	Made dcc chat messages show the time after them, if away,
	like normal messages.

	Made ctcp not reply to global messages, either in the form
	of $*.domain, or #*.domain.

	Added a new command line argument.  `-S'.  It does the 
	oppsite of the `-s' option, and also made -s the default.
	Make then run ircserv if they want it, not if they don't
	know.

	Rewrote BreakArgs() in parse.c trying to fix a bug with
	referencing NULL pointers on domain/ox.

	More of the source files reformatted.   Starting to get some
	distance with this finally.

	We now understand that &channel are channels, for the 2.8 servers
	that will be arriving soon.

	DCC LIST now shows the start time, and the number of bytes
	sent, and read on a dcc connection.

	Added a ctcp reply to dcc.c so that when a dcc collision 
	occurs, we also inform the other client of the event, rather
	than them not knowing about it.  (obsoleted)

	Added new functiality to the /TIMER command.  If it is called
	with out arguments, then it list the commands that were
	added with /TIMER, that are pending to be executed.  If it is
	called with the -DELETE flag, and given a refnum (first column
	in the timer list), it will attempt to delete the timer.  You
	can also specific the TIMER command to use a refnum of your
	choice, with the -REFNUM n flag.  It generates an error if
	the refnum already exists, or you specify a negative number.
	It is illegal to remove a timer from itself.

	Added new functionality to /window server command.  You can now
	do /window server server.name:port:password:nick, and the nick
	will be set properly for that server.

	Two new functions, $ENCODE() and $DECODE().  They work as a
	pair, such that $ENCODE($DECODE(blah)) will return blah, and
	the other way around.  The primary use is tha $ENCODE() always
	returns a value that is suitable for a variable name, so that
	the well used $strip_chan() alias is not needed.  <Daemon>

	Added -WIDE flag to /LIST.  Shows the channel names, and their
	sizes in as little space as possible.  <Troy>

	HELP now works properly again.  No recusive calls to irc_io, and
	no ping timeouts, but with the same functionality as 2.2pre7.

	New variable added, HELP_PROMPT.  If set ON, nothing different
	happens, but if set OFF, then ircII will not prompt for more
	help after showing a file.

	All the header files reformatted, and some of the source files.

	Fixed bug in window server which caused the client to become
	confused about nicks for each window.

	Fixed bug that caused ircII to continue trying to connect to the
	last server in the server list if it failed on every other one,
	and often flooded umode s people.  Nasty Nasty.

	Fixed bug in status.c/window.c that caused the window_notify
	to be out of date on occasion.

	When changing servers, or when the last window to a server is
	closed, the QUIT is actually sent.

2.2pre8.troy
	A new command has been added - /TIMER. This takes the form:

		TIMER seconds command

	and causes the given command to be executed after the specified
	number of seconds. Any number of timers can be issued, and 
	they do not need to be issued in order. For example, the following
	alias:

		ALIAS JUMBLE TIMER 10 echo one;TIMER 5 echo two; \
				TIMER 15 echo three

	will cause "two", "one" and "three" to be printed at 5 second
	intervals, starting with "two" in 5 seconds. Using /TIMER should
	be the preferred approach over /SLEEP.

	ircII can now take advantage of X windows and screen to create
	windows in different xterms or screen windows. The command to
	create such a window is /WINDOW CREATE. Each window created in
	this manner gets its own input line. This feature is
	particularly useful if you use multiple channels. There are
	still some things to be fixed with this. In particular,
	prompted input can give unexpected results ($"..", /Oper and
	server passwords, confirmations), as can the old form of the
	/WAIT command. In short, when using multiple windows,
	expect the unexpected.  To use this feature you will have to
	define WINDOW_CREATE in source/window.c.

	A new form of the WAIT command, /WAIT -CMD command,
	(or WAIT -CMD %process command) causes the given command
	to be executed after the wait condition has occured.
	For example, the following alias:

		ALIAS BACKWARDS wait -cmd echo hello there;echo hi there

	Will actually display "hi there" before "hello there", because
	the "hello there" echo is not executed until a WAIT token is
	received from the server.

	This new form of /WAIT is to be used in preference over the
	old form. The old form has innumerable problems, among them being:

		If one WAIT is executed while another is pending,
		both will be registered as satisfied when the first
		returns. A warning is now issued when this happens.

		If you are in a prompted input sequence (such as oper
		password, confirmation prompts, and $".." input),
		results can be unpredictable.

		It is not consistant with the message driven programming
		model which exists in ircII.

	With multi window enhancements the problems with WAIT become even
	more prohibitive, unless used in the -CMD form.

	If you are echoing output to the screen from within the WAIT -CMD
	form, it is probably a good idea to record the current window
	and use XECHO -WINDOW to ensure that output goes where it should.

2.2lynx.pre8
	Modified /me (edit.c) to automatically append periods,
	feature used by new 'action' script.

	Revamped many scripts, the config.h, little changes to
	Makefile and help files.

	Globally replaced all put_it("*** .. by new function say()
	and changed put_it_always into yell.


2.2pre7.myc6.phone
	Added Megre support of irc 2.8, there is still a long way to
	go here.   Code for the user mode e has been written, but not
	added, as it probably won't be in the server.

	Added window refnum to the output of the WINDOW LIST command.

	Notify bug on start up fixed.

	Two new functions GETPID() and GETPPID() added to allow the 
	process ID, and parent process ID to be accessable with in
	a script.   These have been left out for now.

	Changed the KICK command, to allow the sending of kick
	comments.

	Bug in QUIT_ON_OPERATOR_KILL fixed, where last time was
	not `seen' for long enough to be read.

	Mail checking bug fixed.

	Added new variable SHOW_STATUS_ALL.  When set, it shows everthing
	in every (visible) status line.  When not set, it only show
	things that (I think) are relevant to that window, and are
	not the same as the current window.   Things like nickname, 
	usermode, are only shown on one window, if connected to only
	one server.

	Made DCC with no arguments the same as DCC LIST.

	Added the window notification status to WINDOW command (no args).

	Away changed to allow different away messages on different
	servers.  Two flags -ONE and -ALL (-ONE default) for the sending
	of the away message to the servers you are on.

	Bug in $RAND() fixed <Daemon>.

2.2pre7.myc6
	HELP_SERVICE and HELP_PATH are now SETtable variables.

	Memory leak in add_to_window() is fixed.

	WHICH doesn't wedge the client (by corrupting load_depth) any more.

	MSG *, QUERY *, CTCP *, REDIRECT *, NAMES *, LIST *.  [Daemon]

	$U inserts cut buffer.  [Daemon]

	$RAND() is a bit more portable and doesn't use floating point.

	Scripts updated to use `:' as noop rather than `#'.

2.2pre7.myc5
	QUOTE USERHOST *really* doesn't core dump any more.  B-)

	`voice' script updated for new script parser.

2.2pre7.myc4
	The Makefile now handles making the symlink for config.h.  This
	has the advantage of being slightly easier to use on a machine
	without symbolic links; you just change the `LN' variable in the
	top-level Makefile to `cp'.  It also has the advantage that we
	won't see patch files with two copies of the diffs for config.h
	any more.  B-)

	Makefile.proto has been rearranged somewhat, and the dependencies
	have been updated.

	DCC GET bug from myc2 fixed.

2.2pre7.myc3
	All the bloody #defines at the beginning of keys.c are now in
	keys.h.proto, and are handled by `count'.

	Stupid inverse (and bold) video bug from myc2 fixed.

2.2pre7.myc2
	^Os are no longer appended to lines before storing them in the
	lastlog.  This avoids adding ^Os to lines in the log file when
	using /LASTLOG.  Bleah.

	New commmand :, which is a noop.  Using # as a noop command is
	strongly discouraged, as it is treated differently in scripts.
	(# at the beginning of a line in a script (ignoring spaces) means
	to ignore the whole line.)

	Bug in handling quoted braces from 2.2pre7.myc1 fixed.

	`DCC GET nickname' gets the first file offered by `nickname'.

	KICK comments are now displayed, if present.

	Removed silly whitespace limitation in scripts.

	JOIN no longer automatically adds a `#' to a channel name if missing.
	[Avalon]

2.2pre7.myc1
	New commands WINDOW BACK, NEXT, PREVIOUS.  [phone]

	New commands ON HOOK and HOOK.  [Daemon]

	DCC SEND and GET now display speed when transfer is finished.  [Avalon]

	(Rest of these by Mycroft:)

	Added declaration for `newexp' in whilecmd() which Troy left
	out.

	Removed line discipline code for AIX.

	Fixed ON_KICK.

	Tabs now display in reverse video after limit reached, so you
	can actually see them.

	-c works again.

	ON WINDOW doesn't recurse (and thus doesn't crash).

	TOPIC and ACTION messages go in the right windows.

	PAUSE_AFTER_MOTD is now a compile-time option and actually
	works.

	QUOTE USERHOST doesn't crash.

	QUOTE ISON does something sensible.

	USERHOST and ISON with no arguments no longer corrupt the
	whois queue.

	\ is no longer converted to \\ by /SAVE and in the history.

	/MSG FOO, does the right thing.

	/TYPE \^ now types out a caret, which you couldn't do before.

	White space around braces is less important.  The main effect
	is that K&R style braces now work.  You should be able to use
	whatever indenting style you prefer.  Note that braces inside
	a command should be quoted now, a la \{ and \}.

2.2pre7
	Meta4 is now sticky. That is, Meta4-C-D-E-F-G invokes the
	meta4 versions of C, D, E, F and G. This effect lasts until
	meta4 is invoked again. Additionally, the Meta4 characters
	^h, SPACE, h, i, j, k, x, H, I, J, K, L and X have been
	bound in such a way that BIND ^[ META4_CHARACTER now
	gives a vi editing mode.

	Bugs in complex '@' expressions fixed.

	Thu Jun 11 09:48:47 1992  Charles Hannum  (mycroft@ai.mit.edu):

	* Makefile: Change RS/6000 support.

	* config.h (DEFAULT_STATUS_CHANNEL): Delete duplicate definition.

	* script/action: Remove `on's.

	* script/bigcheese: Convert to 2.2pre6 syntax.
	script/finger.who, script/fnet, script/killpath: Likewise.
	script/kpstat, script/log, script/nicks, script/repeat: Likewise.
	script/shell, script/voice: Likewise.

	* script/version: Update version number.
	script/netsplit: Rewrite to handle multiple splits.
	script/brc: Fix typo.

	* source/alias.c: Change function prototypes to match definitions.
	source/ctcp.c, source/edit.c, source/status.c: Likewise.
	source/term.c, source/translat.c, source/vars.c: Likewise.
	source/window.c: Likewise.

	* source/edit.c: Put comment delimiters around text after #endif.
	source/help.c, source/hold.h, source/irc.h, source/ircaux.c: Likewise.
	source/lastlog.h, source/term.h: Likewise.

	* source/exec.c: Add support for AIX 3.
	source/help.c, source/irc.h, source/ircserv.c: Likewise.
	source/log.c, source/newio.c, source/scandir.c: Likewise.
	* source/ircaux.c: Rename _RS6000 to _IBMR2.
	source/status.c: Likewise.
	* source/term.c: Remove unnecessary code for AIX 3.

	* source/vars.c: Replace NULLs with 0s in integer context.

	* source/status.c (convert_sub_format): Make bletch an array to
	prevent being put in readonly storage.
	(status_channel): Use format string even if *private*.

	* source/notice.c (parse_server_notice): Don't call
	reconnect_all_channels and reinstate_user_modes if first connect
	(phone bug).

	* source/menu.c: Make sure menu cursor doesn't get redrawn if menu
	disappears.

	* source/exec.c: Make sure messages get redirected after EXEC output.

	* source/edit.c (evalcmd): Fix EVAL when subargs == NULL.
	source/if.c (ifcmd, whilecmd, foreach): Likewise for IF, WHILE,
	and FOREACH.

	* source/if.c (whilecmd): Copy exp on every iteration, as parse_inline
	destroys it.

	* source/irc.c: Update version number.

	* source/dcc.c: Include arpa/inet.h for prototypes.

	* script/ping, script/whowas: New scripts.
2.2pre6
	WARNING. 2.2pre6 will almost certainly require changes
	to your .ircrc and script files due to changes in the
	parsing. The intention at this point is to keep the new
	syntax forever. That is, unless there's something I
	have missed, there will be no further script breaking
	changes.

	DISPLAY now defaults to OFF in scripts.

	Two new meta keys have been added. Meta3 is bound by
	default to META1-[, and Meta4 is left unbound.

	DCC SEND now checks that a file exists before sending
	the request. Memory allocation bugs when using DCC
	file transfers with ~ pathnames fixed.

	If you have experienced corrupted output from ircII,
	this should be fixed.

	Several display bugs, including a memory leak related
	to using windows have been fixed.

	Missed PINGs when in the help pager fixed.

	A new command, EVAL, has been added. EVAL causes
	its arguments to be passed through variable substitution
	and executed.

	Alias substitution is no longer performed in scripts,
	regardless of the setting of INPUT_ALIASES. To force alias
	substitution, use EVAL.

	A command beginning with '@' is taken to be an
	alias expression as would be normally parsed
	from within ${}. The expression is substituted and
	the substituted value discarded.

	The script loading path is now accessible as the SET
	variable, LOAD_PATH. Additionally, if you are unsure
	as to which directory a script being loaded is in,
	the /WHICH command will display the full path to a
	script. eg. /which global shouls give something on all
	systems.

	Bugs in Menus which caused core dumps have been fixed.

	Bug in DCC which caused incoming DCC messages not to be
	directed to window level DCC fixed.

	Bug with +s channels and /names fixed.

	Connections to servers on UNIX domain sockets are now
	supported.

	Aliases can now be recursive up to a maximum level
	as specified in the variable MAX_RECURSIONS.

	The inline variable parser now substitutes \n, \r, \0
	and \p too their equivalents in the CTRL-P convention.

	Having ! as the first character for the INDEX function
	no longer causes just unescaped characters to be matched.
	It is now a normal character in this context.

	The $%FUNCTION syntax is no longer supported. You can
	still use functions - just remove the '%'.

	The parser used when INPUT_ALIASES is on has been changed
	again. Text between brackets (...) and {...} is no longer
	subject to alias expansion, unless the opening bracket is
	escaped (ie... \( or \{ ). This affects alii and input when
	INPUT_ALIASES is on.

	Additionally, You can return to full alias substitution
	within ${...} by enclosing the substitution text in
	[...]. Thus  if $0 == test, and $bear == black
		${[$0]} expands to "test"
		${[$bear]} expands to "black"
		${bear} also expands to "black"
		${ bear == [black] }  expands to "1",
		${ [$0] == [test] ) expands to "1"
		${ [$0] == [black] ) expands to "0"
		${ [$0](this) } expands to the return value of $test(this)

	There is a new form for the if command. This is:
		if (expr) {then_commands} {else_commands}
	Note that because the expression, the then_commands
	and the else_commands are between brackets, they are
	not expanded in alias expansion. This is taken care of
	in the if statement itself. The expression is treated
	as if it were enclosed in ${...}. Thus all the comparisons,
	groupings, arithmetic and boolean operations that a
	available in ${...} can be used in the expression.
	Also note that you can have more than one command in
	each of the then and else parts of the condition.

	The result is that what used to look like this:

	on ^send_public * if "$^!^=^>^<C=$^!^=^>^<0" \
		"echo $%format(11 <$N>) $^"1-" \
		"echo $%format(10 <$N):$^"0> $^"1-"

	can (and must) now be expressed like this:

	on ^send_public * if ( C == [$0] ) \
			{ echo $format(11 <$N> $1- } \
			{ echo $format(10 <$N):$0> $1- }

	Note that this means there is no longer any need for using the
	^ escaping, and this may disappear in a later version unless
	there are strong objections.

	The same thing has happened to while and foreach, which now
	have the syntax:
		WHILE (expr) {commands}
	AND
		FOREACH structure index {commands}

	The effect of this on WHILE and FOREACH is that you no longer
	need to double up occurrences of '$'. You can still get this
	effect if you wish by escaping the leading bracket in the
	appropriate expression. Additionally, both while and foreach
	can now be recursive. Thus the following works as expected:

		assign a.1.1 one one
		assign a.1.2 one two
		assign a.2.1 two one
		assign a.2.2 two two
		alias fe
		{
			foreach a i
			{
				foreach a.$i j
				{
					echo $i $j $a[$i][$j]
				}
			}
		}

	THE OLD SYNTAX FOR IF, WHILE AND FOREACH IS NO LONGER SUPPORTED.

	In scripts, lines beginning with '{' and containing other text
	are joined on to the previous line with one space placed between
	the two lines, thus the above example could have been written as:

	on ^send_public * if ( C == [$0] )
			{ echo $format(11 <$N> $1- }
			{ echo $format(10 <$N):$0> $1- }

	Additionally, the {..} syntax for grouping within scripts
	can now be nested. Nested {...} pairs must have the brackets
	placed on their own line, and the brackets are included in the
	resulting text. Thus the following is equivalent to the above:

	on ^send_public * if ( C == [$0] )
			{
				 echo $format(11 <$N> $1-
			}
			{
				echo $format(10 <$N):$0> $1-
			}

	Or, for a little more verbosity:

	on ^send_public * if ( C == [$0] )
			{
				echo Current Channel:
				echo $format(11 <$N> $1-
			}
			{
				echo Another Channel:
				echo $format(10 <$N):$0> $1-
			}

2.2pre5
	Bug in "Password" prompt for server passwords fixed.

	Bug in WINDOW REFNUM fixed. <phone>

	Bug in ON DCC_CHAT which prevented interaction with
	the server fixed. <phone>

	Bug which caused +w'd non-opers to see their own WALLOPs
	twice fixed. <phone>

	Additional operators have been added to the ${...}
	expresions. They are the equality and inequality
	operators (==, !=, >, >=, <, <=), the unary NOT
	operator (!), and the conjugation operators (&&, ||, ^^).
	These take 0 as false and any other number as true,
	and return 1 as true and 0 as false.

	On top of these are the assignment operator (=) and the
	string concatenation operator (##). The assignment operator
	means that the following now makess sense, and causes the value
	of first_name and last_name to be concatenated with a space
	inserted between them, and the value assigned to full_name.

		@ full_name = first_name ## [ ] ## last_name

	The following is also possible:

		@ a = b * (c + d)

	A new variable has been added for script developers.
	The DEBUG variable enables three types of debugging
	output dependant on the settings of various bits.
		bit	value	purpose
		 0	  1	Display all commands executed
		 1	  2	Display all alias substitutions made
		 2	  4	Display all function calls and return values

	More changes to parsing have occured. Firstly, there
	is no longer any '\' substitution on input. Thus, when
	you type text to a channel, in a /msg or elsewhere, it
	comes out exactly as you type it.

	On the other hand, '\' processing does exist anywhere
	that alias expansion occurs. The result is that if you
	have INPUT_ALIASES ON, you won't notice the difference.
	Also, aliases and ons still get the '\' substitution
	performed on them. All \c pairs where c is any character
	are collapsed to just 'c' after all parsing has been done,
	with the exception of ", !, =, < and >, which are
	required by if and while. This shouldn't be the case
	for much longer.

	Function and array index expansion now only observes
	unescaped bracket delimiters. Thus $%index(\) abc\)def)
	returns 3.

	Finally, the '%' is no longer needed for functions.
	Thus you the above example is the same as
	$index(\) abc\)def)

	The net result of all the changes to parsing in this
	version should be to make both command entry and alias
	construction much more intuitive.

	A new function, TDIFF, has been implemented.
	TDIFF takes as its argument a time interval in seconds
	and returns it as the english representation of
	that number in the form:

		dd days hh hours mm minutes ss seconds

	omiting any zero values, unless all values are zero,
	in which case the seconds field is returned.

	Bugs in dumb mode fixed.

	The parsing of ${} expressions has been changed. When
	mathematical expressions are being used, order of
	operations is respected and brackets are recognised
	and treated correctly. Additionally, functions can
	be referenced (without needing the % qualifier), and
	functions and aliases can be mixed to give versatility.
	This may break some numeric expressions, but will make
	a lot more a whole lot more legible and intuitive. For
	example, the following:

		${3*(INDEX(x abcxdef)+2)}

	Yields 3*(3+2) = 15
	or, if you have an alias:

		ALIAS TEST echo ${INDEX(x $0)*5}

	and then type:

		/TEST abcxdef

	you will get back 15

	Then, if you have a set of functions, A.1, A.2, A.3,
	and the variable IND is set to 2, then ${A[$IND]()}
	will resolve to an invocation of A.2 as a function.

	If you have a function, F, and a pair of arrays A
	and B, each with elements numbered 1-10, and F returns
	either A for 1 and B for 2, then the following:

		${F(2)[5]}

	returns element 5 from array B.
	Because order of operations is now respected, both
	${3*2+5} and ${5+2*3} return 11.

2.2pre4
	/WHO * now results in failure if you are not on a channel.

	Behaviour of positioning when menus are being used has been
	corrected. There's the possibility that I broke something
	else while doing it though.

	The worst of the memory leaks has been fixed. There are
	still some memory leaks apparently present. If you compile
	with ALLOC_DEBUG defined, then when the memory tracking
	table gets full (indicating a leak), IRCII will abort,
	generating a debug.log which lists all allocated blocks
	with their sizes and contents in ASCII. This should
	prove helpful in tracking leaks.

	The slosh (\) no longer quotes characters which have no
	special meaning, thus allowing you to enter a '\' in the
	text without doubling it up. Additionally, The \n sequence
	no longer works. Use ';' in aliases instead, and quote the
	CR or NL character to get the same effect interactively
	(ie. ^Q^J or similar).

	Fixes to the multitude of bugs in pre3.

2.2pre3
	If the environment variable "MAIL" is set, IRCII now uses
	it to determine which file to check for mail.

	The VERBOSE_CTCP variable has been fixed.

	A new function, CONNECT(), gives access to TCP sockets
	at the application level. The arguments are the destination
	host and port number, and the return value is the
	file descriptor (fd) associated with that socket.
	A null file descriptor indicates that the host could
	not be resolved, and a negative descriptor indicates
	that an error occured in connecting.

	To test this facility, create a connection to the
	echo service on some machine with:

		/alias socktest echo $%connect(host 7)

	Which will echo the file descriptor.
	Then send messages to it with:

		/dcc raw fd host message

	These will be echoed back at you by the remote host.
	Incoming messages can be intercepted with ON DCC_RAW,
	which has the following formats:

		fd host D data
		fd host C
		fd host N port
		fd host E port

	The D message indicated incoming data.
	The C message indicates that the socket has been closed.
	The N message indicates that a socket listening on the
	specified port has accepted a connection. fd in this case
	is the file descriptor for the new connection.
	The E message is generated when a CONNECT() results in a
	successful connection.

	The LISTEN() function creates a listening socket. It takes
	a single argument - the port number on which to listen. If
	this is zero, then a port number is assigned. The return
	value is the port number on which the socket is listening
	for connections. A port number below 1025 results in an
	error.

	Conventions to be used for the socket access:

		Scripts using sockets should never use the
		serial number 0 in their hooks. As their first
		act before using the DCC_RAW hooks, they should
		set:

		ON ^DCC RAW * #

		To ensure that all raw DCC sockets produce no
		output.

		A new set of hooks should be created for each
		active socket at a chosen serial number. One
		must always exist to detect the close message,
		and as its last act must remove all the hooks
		for that file descriptor.
	
	
	You can now "send" a message to a command. For example,
		/msg /echo this is a test
	is the same as
		/echo this is a test.
	The primary use of this is to allow a /QUERY of a command.
	Thus if you /query /echo, everything you type to the
	current window will simply be echoed back, and if you
	/query /exec, you can use IRCII as a shell. Note that
	when querying a command, you may need to use XECHO -WINDOW
	to ensure output goes to the right place.

	CTCP UTC has been added. This is primarily for robots
	to send date and time information to users and have it
	displayed in local time. The format of the UTC
	CTCP is:
		UTC number
	where number is the ASCII representation of the 32 bit
	integer representing the time as is used on UNIX machines.
	When IRCII receives this CTCP, it replaces the text of
	the local time expressed in the local language back into
	the original message. Thus if you send the following:

		/NOTICE nick The time is ^AUTC 702777074^A

	The user might see:

		-yournick- The time is Thu Apr  9 09:51:14 1992

	(if their timezone is Australian Eastern Standard Time).

	Menus have been added. The menus are totally user
	configurable and a test menu has been provided in
	the top level directory of the IRCII source distribution.
	To use this menu, copy it to your home directory,
	run IRC, and to the following:

		/MLOAD test
		/SET menu Main Menu

	Control-R is bound to ENTER_MENU, and while in the menu
	you can use vi-like keys or EMACS-like keys to move
	through the options, and either '.' or SPACE to select
	an option. The format of the menu file is as follows

	A line beginning with a '#' represents a comment.
	Blank lines are ignored.
	A line beginning with the word "MENU" starts a new menu
	and gives it a name.
	A line beginning with the word "OPTION" adds a new option
	to the menu, gives it a name and describes what it does.

	For more information, see the demonstration menu shipped
	with the sources.

	Bug which cleared the input line when calling WAIT from
	ON TIMER fixed.

	Bug which left channel names from a previous connection
	in the channel list even if they could not be rejoined
	fixed.

	User modes are now restored after a disconnect/reconnect.

	Bug which caused the scrollback buffer to duplicate messages
	when HOLD_MODE is on fixed.

	USERHOST is now used in place of WHOIS to retrieve IRC-Op
	information on WALLOPing users and in the case of 2.6.2
	servers, user@host information for IGNORE. This means
	that there are now three commands going through the WHOIS
	queue - WHOIS, ISON and USERHOST. It is not a good idea
	to /quote these, as you will be likely to corrupt the
	WHOIS queue. USERHOST can now be issued with /HOST and
	/USERHOST

	It is now possible to have more than one ON hook executed for
	each event triggering a hook. This has been done by adding a
	new serial number concept to the ON command. Each ON hook has
	a serial number attached. Serial numbers can be any number
	from -maxint to maxint, with the default being 0.

	When an event triggers a hook, IRCII now goes through the ON
	hooks added for that event, and for each serial number used
	by ON hooks in that hook type, finds the best match out of those
	ON hooks which have that serial number and executes that ON
	hook. The hooks are executed in order of serial number. Thus
	if you set up the following set of MSG hooks.

		ON #^MSG -666 * echo Message coming:
		ON ^MSG * echo Message from $0: $1-
		ON #^MSG 666 * echo I got one, I got one!
		ON #^MSG 666 WiZ echo WiZ hath spoken

	will cause the following to appear when you receive a message:

		Message coming:
		Message from nick: text
		I got one, I got one!

	And the following if you receive a message from WiZ:

		Message coming:
		Message from WiZ: text
		WiZ hath spoken

	The default serial number is 0, and the serial numbers are always
	executed in order, starting with the lowest, and ending with the
	highest.

	Although the '^' modifier can be used with any serial number,
	it will only suppress the decault action if used with serial
	number 0. Thus if the only message hook you have is:

		ON #^MSG -666 * echo Incoming:

	You will see the following when you receive a message:

		Incoming:
		*nick* text

	It is advisable to place any ON hooks which do not suppress the
	default action in a serial number other than 0. In particular,
	TIMER hooks, which are generally not intended to exclude other
	TIMER hooks, should be placed at different serial numbers wherever
	possible, and never on 0 (since 0 is the most likely place to
	get a clash if anybody does use it).
	
	The # modifier (bind to current server) for ON commands has been
	changed to '&'.

	Fixed display bug with reverse and bold modes which caused
	these modes to be turned off if a line wrapped. Also fixed
	NOTIFY and LINKS problems.

	The bug in user mode processing when a MODE command makes no
	actual changes to the user mode has been fixed.

	A new status line variable, %B, gives the number of lines
	in the hold buffer for the current window. Its format
	is controlled by the STATUS_HOLD_LINES variable. %B is only
	updates once for every ten lines.

	New status line variable, %# added. This returns the current
	user mode. Its format is controlled by the STATUS_UMODE
	variable.

	The behaviour of FLUSH when HOLD_MODE is on has changed.
	it now clears the hold buffer for the current window before
	flushing further output from the server. The result is that
	with HOLD_MODE on it is now impossible to get into a
	situation where you are being flooded by server output
	with no hope of reprieve.

2.2pre2
	^G bug fixed. A couple of small things cleaned up.

2.2pre1
	Note that there have been several new variables added in
	this version, so old config.h files won't work. Also the
	IRCIIhelp service is being regionalised. You should set
	HELP_SERVICE to the nearest IRCII help service in config.h

	Three new BIND functions have been implimented -
	SCROLL_BACKWARD (bound by default to ESC-p), SCROLL_FORWARD
	(bound by default to ESC-n), and SCROLL_END (bound by
	default to ESC-e). These allow you to scroll through the
	output stored in LASTLOG without having to use the
	LASTLOG command. SCROLL_BACKWARD causes IRCII to scroll
	half a window of LASTLOG data on to the screen, pushing
	whatever is in the window towards the bottom. ESC-p
	reverses this, thus looking at newer parts of the LASTLOG
	history. ESC-e exits this scrollback buffer facility
	at any time. This facility is probably best used with
	HOLD_MODE set to ON, and requires SCROLL to be set to ON.
	If you use this facility with HOLD_MODE off, then when you
	leave the scrollback buffer, either by SCROLL_FORWARDing
	to the end of it or SCROLL_ENDing, all text that has been
	accumulated will be printed. If you have HOLD_MODE on,
	the window will be held until you manually unhold it.

	Provision has been made for memory allocation debugging
	for developers. Add -DALLOC_DEBUG to the CFLAGS, and
	IRCII will abort (generating a core dump) should memory
	be freed which was never allocated. Additionally, a
	dump will be made showing the locations of all allocated
	memory with the two preceding long integers in memory.
	Additionally, SEGV will be trapped and will generate
	a similar log, with the addition that if you are using
	an IBM RS6000 it will dump a heap walk. People on other
	platforms will need to either add heap walk code for
	those systems or manually walk the heap using the
	debugging information. The dump is stored in debug.log

	A new XECHO flag, -WINDOW, has been implimented. Thus:
		XECHO -WINDOW 1
	always sends output to window 1, and
		XECHO -WINDOW JUNK
	always sends output to the window named "junk". If the
	window does not exist, the -WINDOW flag has no effect,
	except to cancel any earlier -WINDOW flag.

	Two new modifiers have been added to /ON. If the first
	character of the first argument (the hook name or numeric
	number) is '#' or '@', the ON only affects things relating
	to the current server. Additionally, if it is '@', and there
	is no match for things in the list of ONs applying to the
	current server, it will not resort to the default list.
	[Changed in pre3]

	WHO -LUSERS (returns only non-operators) and
	WHO -NICK <nickname> (returns only people matching the
	nickname argument) have been implimented.

	A new variable, DCC_BLOCK_SIZE controls the size of
	blocks sent when sending files using DCC SEND.
	The default is normally 512. Increasing this number
	increases network efficiency. Decreasing this number
	slows down the transfer, but also decreases the chances
	of the transfer being aborted over bad links.

	Use of real estate when SCROLL is ON has been improved.
	There is no longer a blank line between the text and
	the status bar. This takes a little getting used to,
	as now the screen scrolls before a line is printed
	rather than after.

	You can now include text modification characters
	(^B, ^V, ^_ and ^O) in STATUS_FORMAT. If you change
	the format at the start of STATUS_FORMAT, you will
	have to do it again after any %C or %U, as these
	both reset it to reverse video.

	You can no longer abbreviate QUIT, SIGNOFF, BYE or EXIT
	in NOVICE mode.

	All restrictions on IGNORE by user@host removed.

	Internals given a decent reworking. There could be bugs here.
	You should now never see ircd's colons marking the last
	argument.

	Added two new wildcards to the pattern matching system.
	'%' matches any sequence of characters except a space.
	'?' matches any single character.

	International character set support added. Translation
	tables are supplied for various terminal types. To activate
	the appropriate character set, /SET TRANSLATION charset_name
	eg. For an IBM PC set up for US English (Code page 437),
		/SET TRANSLATION CP437
	The translation tables assume that text transmitted on the
	servers adheres to ISO 8859/1. If your terminal understands
	ISO8859/1, set TRANSLATION to LATIN_1. The default is ASCII,
	due to the fact that nothing can be safelt assumed about any
	terminal.

	Bug in /set history 1 fixed

	Bug with redirecting to yourself fixed. It is now illegal
	to redirect to yourself.

	$P (Chanop status variable) fixed, and a new status line
	substitution, %@, which subsitutes to STATUS_CHANOP if
	you are chanop on the channel shown on the status bar.

	$~ now substitutes to the last word on a line.

	New functions:

	ISCHANNEL(word)		Returns 1 if word is a valid
				channel name.
	ISCHANOP(nick channel)	Returns 1 if nick is a chanop
				on the given channel.
	WORD(number wordlist)	Returns the specified word from
				wordlist. The first word is
				numbered 0.
	WINNUM()		Returns the current window number.
				this is always the window which is
				indicated by STATUS_WINDOW.
	WINNAM()		Returns the current window name.
				this is always the window which is
				indicated by STATUS_WINDOW.
				If the window has no name, it returns
				nothing.

	INVERSE_VIDEO variable and beyond fixed.

	A new character attribute, bold, has been added. This
	is enabled and disabled with ^_. Disabling bold has
	the side effect of disabling inverse and underline
	without recording it internally. You should allow for
	this when using bold text. Bold text can be enabled
	and disabled with the BOLD_VIDEO variable.

	The status line problems with attribute characters
	have been fixed. You can now include attribute characters
	in the status line and they will take effect. One
	application of this is to change the status bar from
	inverse text to bold or underlined by including ^_ or
	^V at the start of STATUS_FORMAT.

	You can now refer to the elements of structures
	(normally Structure.Element) as Structure[Element].
	When you do this, Element is evaluated as an expression
	before it is appended to Structure. Thus if A has the
	value "TEST", and there is a variable "B.TEST" with the
	value "Message":
		echo $B[$A]
	yields:
		Message
	These can be repeated, as in:
		$MATRIX[0][0]
	which becomes "$MATRIX.0.0". The result is a pseudo-array
	effect.

	New command, FOREACH has been added. The format is
		FOREACH structure variable command
	This causes command to be executed once for each
	element in the named structure, with variable
	substituted to the name of the element. Thus
	if you have assigned:
		/ASSIGN A.1 ONE
		/ASSIGN A.2 TWO
		/ASSIGN A.3 THREE
		/ASSIGN A.4 FOUR
		/ASSIGN A.5 FIVE
	and have an alias:
		/ALIAS SHOWA FOREACH a i ECHO $$i
	and type
		/SHOWA
	The output will be:
		1
		2
		3
		4
		5
	Alternatively, you can use:
		/ALIAS SHOWA FOREACH a i ECHO $$a[$$i]
	to get:
		ONE
		TWO
		THREE
		FOUR
		FIVE
	Note that if you use numbers, 11 comes before 2.
	The easiest way around this is to start numbering
	elements at a higher number, such as 100.
	Note that FOREACH, like WHILE, does variable
	substitution once when the FOREACH command is
	evaluated, and once for each iteration. This
	means that in general you will need to double
	up any occurences of '$'.
2.1.5b-2.1.5g

	Functionality of WHO -HOST and WHO -SERVER returned.

	New WHO flags, -HERE and -AWAY added.

	New functions:

	MATCH(pattern word-list) Returns an index into the word
				list of the first word that matches
				the pattern, starting at 1 and
				returning 0 for no match.
	RMATCH(word pattern-list) Returns an index into the pattern
				list of the pattern that word best
				matches.
	STRIP(charlist line)	Strips all occurrences of characters
				contained in charlist from the line.

	You no longer need to supply the leading # to JOIN and PART.
	If the leading # is omitted, and you are on a 2.7 server,
	it will be inserted. Notable exceptions to this rule are
	channel '#', which would have no name if the # were omitted,
	and channels beginning with '##'.

	CTCP Action format changed so as not to interfere with channel
	text. ON ACTION and ON SEND_ACTION added. You can now suppress
	ACTION text with these, or reformat it.

	Many bugs fixed.

2.1.5-2.1.5a

	New functions:

	USERHOST()		Returns the user@host of the sender
				of the message currently being
				processed.

	WHO -HOST and -SERVER is no more supported. (This is reenabled
	in a later version).

	The contents of an alias can now be surrounded by '{' and '}'
	in and broken over multiple lines. See script/finger for an example.

	Indentation with leading tabs and spaces is now permitted in script
        files. See /HELP LOAD.

	HOLD_MODE no longer holds when you are being active in that window.

	If you have SHOW_AWAY_ONCE on, away messages are remembered and
	only displayed when they change.

	Notification of the receipt of a CTCP request no longer occurs
	unless VERBOSE_CTCP is on.

	Prompts from EXECed processes now appear in the input window if
	$T appears in INPUT_PROMPT.

	Scripts and help files can now be stored in compressed format.
	They will be uncompressed as they are used.

	All the scripts have been updated and many helpfiles written and
	rewritten.  Many bugs have been fixed, support of newer server
	features added. Server 2.7 compatibility improved.

	There have been major changes in the command parser. Commands
	are not expected to have a leading / unless entered interactively,
	if you experience incompatibilities, you will have to add 'say' and 
	'send' wherever you have made aliases that send to the channel or query.
	See also /help ircII programming for this. Also the ';' has a new
	meaning as command seperator within ALIAS, BIND and ON. You might have
	to \escape it.

	CTCP ACTION has been implemented which permits you to send
	descriptions of actions/'feelings' to other people on channels
	and even through queries. You can use it with /me and the action
	script. See also: /help load action.

* 2.1.5 (by lynX) Text is historically from new to old, that is - read it from bottom to top!

	Updated help files: NEWS LOAD/* WHOIS IRCII/IRCII IRCII/PROGRAMMING
	    ALIAS/ALIAS BIND/PARSE_COMMAND BIND/EXAMPLES ON/ON CTCP/* ME DESCRIBE
	    ON/SIGNOFF SEND SAY NOTIFY SET/COMMAND_MODE ALIAS/SPECIAL RESTART
	    SET/LASTLOG_LEVEL

	Threw out /who -s and -h, they were superflous and bad.
	Cleaned up the vars.h and hook.h by cleaning the protos... FINALLY!
	Wrote count.c and the proto headerfiles, adapted the Makefile.proto
	Added underlining mechanism with put_it-code ^V.
	Updated man page a bit.
	Added optional code to limit the notify list length (MAX_NOTIFY).
	Removed lots of do_hook-numeric if's by splitting the numeric's switch.
	Rewritten /notify list.
	Simplified notify.c and whois.c to no more support channel notify.
	    (If ISON doesn't, why should we then?).
	Added Troy's alias functions MATCH and USERHOST, but no HELPs.
	Added support for {  } constructs in scripts and indentation.

	Removed the oper-flags from the IRC commands, if you issue oper commands while
	you're not one, you get the beautiful ircd error messages.

	Seem to have fixed the problem in the status_mail sprintf...
	Changed the handling of 2.7 UserHost in PRIVMSG etc.
	The $, is now also set when you get an invitation.
	Added oneself's nickname as command alias for /me. "/lynx smiles."
	Improved HOLD_MODE: it no more holds a window if the user is being active on it.
	Added some numeric codes in numbers.c for 2.7 compatibility.
	Added support for ~ in IRCPATH, but only referring to the user's own home-dir.
	Suspended a piece of new code in mail.c which seems to cause weird problems.
	Introduced lastlog_level 'ACTIONS' to log in and outgoing CTCP ACTION lines.
	Made 317 (whois-idle) a tiny bit smarter (seconds or minutes).
	Added #ifdef SVR4 code.
	Added SHOW_AWAY_ONCE and VERBOSE_CTCP vars.
	Replaced QUIT_ON_KILL variable by a #define.
	Applied Allanon's patches to ctcp.c and dcc.c, removal of DCC/SENDCRC + GETCRC.
	Added support for numeric 364 (new LINREPLY). Old LINREPLY code not removed.

	New handling of process prompts. In the past they were put into the window->prompt
	and then inserted into the INPUT_PROMPT var mask, which looks *ugly*, also the
	input would not get echoed. Now it does this: If a prompt is detected you are
	elegantly prompted, as if you were in the program itself, when you enter your
	datum prompt and input are displayed in the window the way it would look outside
	ircII. This is a great step towards using ircII as an interface to all kinds of
	things, ircII + /bin/sh as a replacement for tcsh.. Ha ha I'm kidding. Well, for
	a MUD client it's fine. ircII can now be used as MUD client.
	BTW, I had to do profound changes in the handling of prompts throughout the source.

	Fixed ancient bug concerning process-query: you can now type 'just CR' into an exec.

	Fixed strange bug with /save prompt. Still don't know what was actually wrong,
	but it behaves correctly now.  :-I

	Away messages are only displayed ONCE.

	Added #ifdef into new_free() to hunt for free's that should not take place.
	If you have spare time hunt some of those..  ;)

	Added the commands '<text> and :<text> which only work in COMMAND_MODE and
	act like /send and /me respectively. This is a MUD standard.

	Added /restart, /xtra and /host which calls USERHOST. The last two have no
	/help files.

	Introduced Allanon's implementation of ZCAT help file display.
	Also scripts (files for /load) can be stored in compressed format if one likes.

	Patched /save to work with totally dumb terminals, with -d it saves without prompting.

	Added special sequence '$D' to the alias parser. Thanks to The_Edge for the idea.
	Added binding ESC-G to the 'commander' script that uses it.

	Applied Veggen's patch to alias.c concerning uninitialized variables.

	Removed /set VERBOSE_QUERY since the same can be achieved with /^query...
	(If you want it use /alias quer ^query)

	Added DCC SENDCRC and GETCRC by Allanon. These functions transmit and receive
	files with checksum. It has to be tested and decided if a checksum is needed
	or futile by TCP definition. The commands are temporary and should replace
	the current SEND/GET or be removed away again. Since this decision affects
	other client coders, too, it should be discussed via USENET or interactively.

	Added ';' handling: In ALIASes, ONs and BINDs it is legal to use ; as command
	seperator instead of \\n while in LOAD and interactive mode ';' is considered a
	normal character (to be able to type ;-) ). With a little magic I managed to make
	it possible to escape the ; with \; in aliases if you want it as character.  *PHEW*

	Repaired /whois 317 (idle time output).
	Added /whois <server> <nick>[,<nick2>..] format to /whois command.

	Added commands /me and /describe to produce ACTION messages.

	Added CTCP ACTION handling.

	Disabled GLOBAL_IRCRC, replaced by automatic /load of 'global' which is
	supposed to be in the IRCPATH. This permits easier debugging and developing
	of scripts by redirecting everything into an other directory.

	If a person has an .ircrc the person is assumed to not be a novice, the /HELP NEWUSER
	notice is not output.

	Added variable QUIT_ON_KILL to select if one wants to /quit when
	one is killed. /ON KILL has not been implemented for obvious
	reasons of possible misuse..  :-(

	Added #ifdef AUTO_RECONNECT to make ircII not auto-reconnecting.

	Added CTCP TIME by Veggen.

	Added 'signoff reason' to signoff message. Modified some messages concerning
	CTCP and NOTIFY for beauty or better elequence...

	Added /send command which sends something to the current query or channel
	as if it were typed. Acts as replacement to bare text, since that is now
	interpreted as commands

	Added /say command which does the same as '/ <text>'
	and /# (or # in script mode) command which is the same as /comment.

	Introduced script (command) mode and COMMAND_MODE variable.

	Removed some code that would never get used, as my optimizer told me.

	Bug fixes concerning buffers, /if command with HP/UX, ...
	by Allanon and Veggen.

* 2.1.4c
	Some bug fixes, including the CTCP DCC bug and substitution
	of '\' in alias expansion.

	Bug in SAVE with "-d" mode fixed.

* 2.1.4b
	Support for server version 2.7

* 2.1.4a
	Bug fixes.

* 2.1.4
	$N now substitutes correctly to the nick on the current server.

	Bug with changing servers when on multiple channels fixed.

	ISON based NOTIFY has been implemented. In addition, the
	code has been modified so that NOTIFY will cause much lower
	network loads.

	/TOPIC can now change the topic of a # channel on a 2.6.2b
	or newer server. The new format for /TOPIC is:
	/TOPIC [<channel>] [<topic>]

	Aliases and ASSIGNed variables can now include a dot
	('.') in their names. When listing aliases and assigned
	variables, anthing after a dot in the variable name
	is suppressed, unless typed explicitly. If two variables
	have the same name after this, only the first occurence
	is printed. This allows a structure-like effect.

	/ASSIGN A.A This is a
	*** Assign A.A added
	/ASSIGN A.B this is B
	*** Assign A.B added
	/ASSIGN A.C This is c
	*** Assign A.C added
	/ASSIGN A
	*** Assigns:
	***	A	<Structure>
	/ASSIGN A.
	*** Assigns:
	***	A.A	This is a
	***	A.B	this is B
	***	A.C	This is c
	/ALIAS A.A alias a
	*** Alias A.A added
	/ALIAS A.B alias b
	*** Alias A.B added
	/ALIAS A.C alias c
	*** Alias A.C added
	/ALIAS A
	*** Aliases:
	***	A	<Structure>
	/ALIAS A.
	*** Aliases:
	***	A.A	alias a
	***	A.B	alias b
	***	A.C	alias c

	Note that structures are effectively in a different naming
	space to non structures. Thus, you can have a structure called
	'A' and a normal variable, also called 'A'.

	Server notices are now displayed with the SNOTE level.
	Four additional lastlog levels, USERLOG1-USERLOG4, are
	reserved for users. These can be used by displaying text
	with the XECHO command.

	Four new alias substitutions: $O substitutes to the value
	of STATUS_OPER if you are an operator, $P to '@' if you are
	a channel operator on the current channel, $M to the modes
	on the current channel, and $A to the current away message.
* 2.1.3c
	A new DCC command, rename, changes the name of a file sent
	to you by somebody else. DCC file transfer should also accept
	the ~ now.

	Some bug fixes.
* 2.1.3b
	A new log level, OPNOTE, has been added. This level applies
	to notices sent to operators, such as KILL notices.

	A new status line variable, %F, lists the hidden windows in
	which there has been activity since they were made hidden.
	An associated IRCII variable, STATUS_NOTIFY, sets the format
	for this to be displayed.

	New ONs: CHANNEL_NICK and CHANNEL_SIGNOFF are executed once
	for each channel from which the user changes nick or signs off.
	If all the CHANNEL_NICK and CHANNEL_SIGNOFF hooks which are
	matched suppress output, then the default output and the NICKNAME
	and SIGNOFF hooks will be suppressed.

	Various bug fixes.
* 2.1.3a
	Various bug fixes.
* 2.1.3
	Added support for the Tektronix XD88

	Added DCC talk. To use this, /DCC TALK user@host. DCC talk
	will only send an announcement once, rather than an infinite
	number of times.

	Fixed bug with functions which have no arguments. Added RINDEX
	function.

* 2.1.2.2
	New help files RULES and IMPORTANT included. You should
	read these before installing help and decide on a site
	by site basis if you wish to install them. If not, remove
	them from the help directory.

	Hopefully fixed the WHOIS queue once and for all.

	Fixed some bugs outstanding from 2.1 (HELP paging with
	HOLD_MODE ON, Core dumps after a WHOIS or WHOWAS if the
	WHOIS queue was empty, core dumps when the status line
	is an empty string)

* 2.1.2
	Added DCC file transfers (GET and SEND), and DCC CLOSE

	Added new window command - NOTIFY. This toggles the
	notification status of the current window. A window with
	notification on causes a message to be printed in the
	current window if output to that window occurs while
	it is hidden.
	
	Changed group message ([$#]*.domain) handling so that such
	messages are treated more like WALLs than MSGs. (Meaning
	that it beeps if you have WALLs set in BEEP_ON_MSG, not
	if you have MSGs set).

	The type of the MAIL variable has been changed from BOOLEAN
	back to INTEGER. If set to 2, it will now display some of the
	headers from incoming mail. Setting it to 1 is the same as
	setting it to ON used to be.

	/ON SERVER_NOTICE processes messages sent from the server
	as NOTICEs, including MOTDs and many server status messages.
	The easiest way to see what is trapped by this is to do a
	/ON ^SERVER_NOTICE * /echo [SNOTICE] $* and see what happens.

	/WHO -FILE performs a /WHO, displaying only those nnicks
	contained in the named file. This allows a larger list to
	be kept of people you know on IRC but not well enough to
	put them in the NOTIFY list.

	If a channel name exceeds the channel name width in the output
	of /NAMES or /WHO, the last character that would be displayed
	is shown as a '>'.

	Added NOVICE variable. Causes a new user message to be printed
	after .ircrc has been loaded if it is still set to ON, and
	refuses to allow any ON commands to be executed.

	Added /ON RAW_IRC to deal with any unknown commands coming from
	the server. This is primarily of use to people working on server
	code, or people using servers with new commands which IRCII does
	not yet recognise.

	Direct Client Connections implemented. /DCC CHAT opens a direct
	connection to another client. The user at the other end can either
	accept the chat with a /DCC chat or ignore it. Messages are sent
	across DCC CHAT connections with DMSG or DQUERY. A new status
	specifier, %D (STATUS_DQUERY) is supported, which substitutes
	the DQUERY value. Two more /ONs, DCC_CHAT and SEND_DCC_CHAT, deal
	with DMSG messages.

* 2.1.1
	Version 2.1.1 supports user defined functions. A user
	defined functions is an alias that ASSIGNs a value to
	FUNCTION_RETURN. Another alias can substitute the return
	value with $%FUNCTION(ARGUMENTS). See /HELP ALIAS FUNCTIONS

	Pattern matching has been improved. IRCII now has an idea
	of the "best" match. This allows #* to be treated differently
	to * in /ON NAMES, for example.

	IF and WHILE now only use unescaped operators. Thus if it
	is possible for a substitution in an if or while to produce
	an operator, such as a channel name containing !, it can
	be entered as $^!CHANNEL, escaping the ! and making IF
	and WHILE work as expected.

	Support has been added for privileged ports. If IRCII is
	installed setuid->root it will attempt to bind the local
	socket to a privileged port, allowing some servers to
	verify connecting users on this basis. The PP_OBJS and
	PP_DEFS macros in Makefile must be uncommented.