Browse Source

Plan 9 from Bell Labs 2004-11-20

David du Colombier 14 years ago
parent
commit
848c727e15

+ 18 - 12
dist/replica/_plan9.db

@@ -890,6 +890,7 @@ lib/constitution - 644 sys sys 1020369312 45285
 lib/dicewords - 664 sys sys 1037463439 89128
 lib/dict - 20000000775 sys sys 1063656980 0
 lib/dict/README.pgw - 664 sys sys 1063660179 147
+lib/dict/README.roget - 664 sys sys 1100894426 105
 lib/face - 20000000775 sys sys 945049943 0
 lib/face/.machinelist - 644 sys sys 944945676 97
 lib/face/48x48x1 - 20000000755 sys sys 944941680 0
@@ -3897,6 +3898,7 @@ sys/lib/kbmap - 20000000775 sys sys 1079535430 0
 sys/lib/kbmap/ascii - 664 sys sys 1082221421 6248
 sys/lib/kbmap/azerty - 644 sys sys 1079473812 735
 sys/lib/kbmap/bgmap - 664 sys sys 1079475826 561
+sys/lib/kbmap/de - 664 sys sys 1100894012 6265
 sys/lib/kbmap/ee - 644 sys sys 1080222237 429
 sys/lib/kbmap/es - 664 sys sys 1079535430 1360
 sys/lib/kbmap/fi - 664 sys sys 1079617317 369
@@ -4744,7 +4746,7 @@ sys/man/1/proof - 664 sys sys 950892796 2297
 sys/man/1/ps - 664 sys sys 1019769758 1642
 sys/man/1/ps2pdf - 664 sys sys 1032632098 1359
 sys/man/1/pwd - 664 sys sys 957920008 930
-sys/man/1/rc - 664 sys sys 953844589 19457
+sys/man/1/rc - 664 sys sys 1100894083 19898
 sys/man/1/replica - 664 sys sys 1021927495 6619
 sys/man/1/resample - 664 sys sys 1015024740 1083
 sys/man/1/rio - 664 sys sys 1072729053 14321
@@ -7326,7 +7328,7 @@ sys/src/cmd/dict/ahd.c - 664 sys sys 944960882 2082
 sys/src/cmd/dict/canonind.awk - 664 sys sys 944960880 665
 sys/src/cmd/dict/comfix.awk - 664 sys sys 944960880 1202
 sys/src/cmd/dict/dict.c - 664 sys sys 1063660142 12040
-sys/src/cmd/dict/dict.h - 664 sys sys 1063656965 4087
+sys/src/cmd/dict/dict.h - 664 sys sys 1100894436 4172
 sys/src/cmd/dict/egfix - 775 sys sys 944960880 179
 sys/src/cmd/dict/egfix2 - 775 sys sys 944960880 134
 sys/src/cmd/dict/fromemf - 664 sys sys 944960880 2231
@@ -7335,7 +7337,7 @@ sys/src/cmd/dict/gefix - 775 sys sys 944960880 447
 sys/src/cmd/dict/getneeds - 775 sys sys 944960880 205
 sys/src/cmd/dict/jis208.c - 664 sys sys 944960882 60007
 sys/src/cmd/dict/kuten.h - 664 sys sys 944960882 3073
-sys/src/cmd/dict/mkfile - 664 sys sys 1063656964 385
+sys/src/cmd/dict/mkfile - 664 sys sys 1100894435 394
 sys/src/cmd/dict/mkindex.c - 664 sys sys 1063855359 1871
 sys/src/cmd/dict/movie.c - 664 sys sys 944960880 5361
 sys/src/cmd/dict/oed.c - 664 sys sys 1014925320 35942
@@ -7344,11 +7346,12 @@ sys/src/cmd/dict/pcollinsg.c - 664 sys sys 944960881 5114
 sys/src/cmd/dict/pgw.c - 664 sys sys 1063656967 29729
 sys/src/cmd/dict/rev.awk - 664 sys sys 944960880 74
 sys/src/cmd/dict/robert.c - 664 sys sys 944960882 6835
+sys/src/cmd/dict/roget.c - 664 sys sys 1100894437 2500
 sys/src/cmd/dict/simple.c - 664 sys sys 944960882 692
 sys/src/cmd/dict/slang.c - 664 sys sys 944960880 3229
 sys/src/cmd/dict/t.awk - 664 sys sys 944960880 189
 sys/src/cmd/dict/thesaurus.c - 664 sys sys 944960881 1273
-sys/src/cmd/dict/utils.c - 664 sys sys 1063656968 14200
+sys/src/cmd/dict/utils.c - 664 sys sys 1100894437 14345
 sys/src/cmd/dict/world.c - 664 sys sys 944960882 4264
 sys/src/cmd/diff - 20000000775 sys sys 944960882 0
 sys/src/cmd/diff/diff.h - 664 sys sys 1014925333 769
@@ -10184,10 +10187,10 @@ sys/src/cmd/ratfs/mkfile - 664 sys sys 1016943965 142
 sys/src/cmd/ratfs/proto.c - 664 sys sys 1016943965 8528
 sys/src/cmd/ratfs/ratfs.h - 664 sys sys 1016943965 2743
 sys/src/cmd/rc - 20000000775 sys sys 945182874 0
-sys/src/cmd/rc/code.c - 664 sys sys 1055698766 8158
+sys/src/cmd/rc/code.c - 664 sys sys 1100894086 8215
 sys/src/cmd/rc/compiling.on.unix - 664 sys sys 1071884773 37638
-sys/src/cmd/rc/exec.c - 664 sys sys 1055698767 16060
-sys/src/cmd/rc/exec.h - 664 sys sys 1055698767 2779
+sys/src/cmd/rc/exec.c - 664 sys sys 1100894087 16525
+sys/src/cmd/rc/exec.h - 664 sys sys 1100894087 2804
 sys/src/cmd/rc/fmtquote.c - 664 sys sys 1055698768 3609
 sys/src/cmd/rc/fns.h - 664 sys sys 1055698768 1377
 sys/src/cmd/rc/getflags.c - 664 sys sys 1055698770 3954
@@ -10198,12 +10201,12 @@ sys/src/cmd/rc/haventfork.c - 664 sys sys 1055698771 3122
 sys/src/cmd/rc/here.c - 664 sys sys 1055698771 2497
 sys/src/cmd/rc/io.c - 664 sys sys 1055698773 3623
 sys/src/cmd/rc/io.h - 664 sys sys 944961082 532
-sys/src/cmd/rc/lex.c - 664 sys sys 1055698774 6042
+sys/src/cmd/rc/lex.c - 664 sys sys 1100894085 6100
 sys/src/cmd/rc/mkfile - 664 sys sys 1055698774 812
-sys/src/cmd/rc/pcmd.c - 664 sys sys 1055698775 2628
-sys/src/cmd/rc/pfnc.c - 664 sys sys 1055698776 1303
+sys/src/cmd/rc/pcmd.c - 664 sys sys 1100894086 2681
+sys/src/cmd/rc/pfnc.c - 664 sys sys 1100894087 1320
 sys/src/cmd/rc/plan9.c - 664 sys sys 1055698776 9382
-sys/src/cmd/rc/rc.h - 664 sys sys 1091904421 3314
+sys/src/cmd/rc/rc.h - 664 sys sys 1100894086 3329
 sys/src/cmd/rc/simple.c - 664 sys sys 1055698777 8993
 sys/src/cmd/rc/subr.c - 664 sys sys 1055698779 1206
 sys/src/cmd/rc/syn.y - 664 sys sys 944961083 3128
@@ -10916,7 +10919,7 @@ sys/src/cmd/upas/smtp/rfc822.y - 664 sys sys 1064589606 13417
 sys/src/cmd/upas/smtp/rmtdns.c - 664 sys sys 1015013150 1069
 sys/src/cmd/upas/smtp/smtp.c - 664 sys sys 1097901337 19565
 sys/src/cmd/upas/smtp/smtp.h - 664 sys sys 1064589597 1084
-sys/src/cmd/upas/smtp/smtpd.c - 664 sys sys 1098803934 30216
+sys/src/cmd/upas/smtp/smtpd.c - 664 sys sys 1100893957 30201
 sys/src/cmd/upas/smtp/smtpd.h - 664 sys sys 1067722781 1111
 sys/src/cmd/upas/smtp/smtpd.y - 664 sys sys 1061836986 6949
 sys/src/cmd/upas/smtp/spam.c - 664 sys sys 1098803961 10231
@@ -12391,3 +12394,6 @@ usr/glenda/lib/profile - 664 glenda glenda 1021580005 847
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
+386/bin/dict - 775 sys sys 1100924601 185420
+386/bin/rc - 775 sys sys 1100924601 141176
+386/bin/upas/smtpd - 775 sys sys 1100924602 326474

+ 18 - 15
dist/replica/plan9.db

@@ -193,7 +193,7 @@
 386/bin/dial/drain - 775 sys sys 1068385869 4120
 386/bin/dial/expect - 775 sys sys 1085077029 58049
 386/bin/dial/pass - 775 sys sys 1085077030 38786
-386/bin/dict - 775 sys sys 1085077031 183178
+386/bin/dict - 775 sys sys 1100924601 185420
 386/bin/diff - 775 sys sys 1099800611 81711
 386/bin/disk - 20000000775 sys sys 984788664 0
 386/bin/disk/dump9660 - 775 sys sys 1085077032 150298
@@ -356,7 +356,7 @@
 386/bin/ps - 775 sys sys 1085077090 63831
 386/bin/pwd - 775 sys sys 1085077091 36869
 386/bin/ramfs - 775 sys sys 1085077091 86527
-386/bin/rc - 775 sys sys 1085077091 140758
+386/bin/rc - 775 sys sys 1100924601 141176
 386/bin/rdbfs - 775 sys sys 1089397315 166357
 386/bin/read - 775 sys sys 1085077092 56014
 386/bin/replica - 20000000775 sys sys 1018321168 0
@@ -450,7 +450,7 @@
 386/bin/upas/scanmail - 775 sys sys 1085077115 126758
 386/bin/upas/send - 775 sys sys 1098848045 189497
 386/bin/upas/smtp - 775 sys sys 1098848046 270306
-386/bin/upas/smtpd - 775 sys sys 1098848047 326493
+386/bin/upas/smtpd - 775 sys sys 1100924602 326474
 386/bin/upas/spam - 775 sys sys 1064598366 36
 386/bin/upas/testscan - 775 sys sys 1085077117 81626
 386/bin/upas/token - 775 sys sys 1085077117 75518
@@ -890,6 +890,7 @@ lib/constitution - 644 sys sys 1020369312 45285
 lib/dicewords - 664 sys sys 1037463439 89128
 lib/dict - 20000000775 sys sys 1063656980 0
 lib/dict/README.pgw - 664 sys sys 1063660179 147
+lib/dict/README.roget - 664 sys sys 1100894426 105
 lib/face - 20000000775 sys sys 945049943 0
 lib/face/.machinelist - 644 sys sys 944945676 97
 lib/face/48x48x1 - 20000000755 sys sys 944941680 0
@@ -3897,6 +3898,7 @@ sys/lib/kbmap - 20000000775 sys sys 1079535430 0
 sys/lib/kbmap/ascii - 664 sys sys 1082221421 6248
 sys/lib/kbmap/azerty - 644 sys sys 1079473812 735
 sys/lib/kbmap/bgmap - 664 sys sys 1079475826 561
+sys/lib/kbmap/de - 664 sys sys 1100894012 6265
 sys/lib/kbmap/ee - 644 sys sys 1080222237 429
 sys/lib/kbmap/es - 664 sys sys 1079535430 1360
 sys/lib/kbmap/fi - 664 sys sys 1079617317 369
@@ -4744,7 +4746,7 @@ sys/man/1/proof - 664 sys sys 950892796 2297
 sys/man/1/ps - 664 sys sys 1019769758 1642
 sys/man/1/ps2pdf - 664 sys sys 1032632098 1359
 sys/man/1/pwd - 664 sys sys 957920008 930
-sys/man/1/rc - 664 sys sys 953844589 19457
+sys/man/1/rc - 664 sys sys 1100894083 19898
 sys/man/1/replica - 664 sys sys 1021927495 6619
 sys/man/1/resample - 664 sys sys 1015024740 1083
 sys/man/1/rio - 664 sys sys 1072729053 14321
@@ -7326,7 +7328,7 @@ sys/src/cmd/dict/ahd.c - 664 sys sys 944960882 2082
 sys/src/cmd/dict/canonind.awk - 664 sys sys 944960880 665
 sys/src/cmd/dict/comfix.awk - 664 sys sys 944960880 1202
 sys/src/cmd/dict/dict.c - 664 sys sys 1063660142 12040
-sys/src/cmd/dict/dict.h - 664 sys sys 1063656965 4087
+sys/src/cmd/dict/dict.h - 664 sys sys 1100894436 4172
 sys/src/cmd/dict/egfix - 775 sys sys 944960880 179
 sys/src/cmd/dict/egfix2 - 775 sys sys 944960880 134
 sys/src/cmd/dict/fromemf - 664 sys sys 944960880 2231
@@ -7335,7 +7337,7 @@ sys/src/cmd/dict/gefix - 775 sys sys 944960880 447
 sys/src/cmd/dict/getneeds - 775 sys sys 944960880 205
 sys/src/cmd/dict/jis208.c - 664 sys sys 944960882 60007
 sys/src/cmd/dict/kuten.h - 664 sys sys 944960882 3073
-sys/src/cmd/dict/mkfile - 664 sys sys 1063656964 385
+sys/src/cmd/dict/mkfile - 664 sys sys 1100894435 394
 sys/src/cmd/dict/mkindex.c - 664 sys sys 1063855359 1871
 sys/src/cmd/dict/movie.c - 664 sys sys 944960880 5361
 sys/src/cmd/dict/oed.c - 664 sys sys 1014925320 35942
@@ -7344,11 +7346,12 @@ sys/src/cmd/dict/pcollinsg.c - 664 sys sys 944960881 5114
 sys/src/cmd/dict/pgw.c - 664 sys sys 1063656967 29729
 sys/src/cmd/dict/rev.awk - 664 sys sys 944960880 74
 sys/src/cmd/dict/robert.c - 664 sys sys 944960882 6835
+sys/src/cmd/dict/roget.c - 664 sys sys 1100894437 2500
 sys/src/cmd/dict/simple.c - 664 sys sys 944960882 692
 sys/src/cmd/dict/slang.c - 664 sys sys 944960880 3229
 sys/src/cmd/dict/t.awk - 664 sys sys 944960880 189
 sys/src/cmd/dict/thesaurus.c - 664 sys sys 944960881 1273
-sys/src/cmd/dict/utils.c - 664 sys sys 1063656968 14200
+sys/src/cmd/dict/utils.c - 664 sys sys 1100894437 14345
 sys/src/cmd/dict/world.c - 664 sys sys 944960882 4264
 sys/src/cmd/diff - 20000000775 sys sys 944960882 0
 sys/src/cmd/diff/diff.h - 664 sys sys 1014925333 769
@@ -10184,10 +10187,10 @@ sys/src/cmd/ratfs/mkfile - 664 sys sys 1016943965 142
 sys/src/cmd/ratfs/proto.c - 664 sys sys 1016943965 8528
 sys/src/cmd/ratfs/ratfs.h - 664 sys sys 1016943965 2743
 sys/src/cmd/rc - 20000000775 sys sys 945182874 0
-sys/src/cmd/rc/code.c - 664 sys sys 1055698766 8158
+sys/src/cmd/rc/code.c - 664 sys sys 1100894086 8215
 sys/src/cmd/rc/compiling.on.unix - 664 sys sys 1071884773 37638
-sys/src/cmd/rc/exec.c - 664 sys sys 1055698767 16060
-sys/src/cmd/rc/exec.h - 664 sys sys 1055698767 2779
+sys/src/cmd/rc/exec.c - 664 sys sys 1100894087 16525
+sys/src/cmd/rc/exec.h - 664 sys sys 1100894087 2804
 sys/src/cmd/rc/fmtquote.c - 664 sys sys 1055698768 3609
 sys/src/cmd/rc/fns.h - 664 sys sys 1055698768 1377
 sys/src/cmd/rc/getflags.c - 664 sys sys 1055698770 3954
@@ -10198,12 +10201,12 @@ sys/src/cmd/rc/haventfork.c - 664 sys sys 1055698771 3122
 sys/src/cmd/rc/here.c - 664 sys sys 1055698771 2497
 sys/src/cmd/rc/io.c - 664 sys sys 1055698773 3623
 sys/src/cmd/rc/io.h - 664 sys sys 944961082 532
-sys/src/cmd/rc/lex.c - 664 sys sys 1055698774 6042
+sys/src/cmd/rc/lex.c - 664 sys sys 1100894085 6100
 sys/src/cmd/rc/mkfile - 664 sys sys 1055698774 812
-sys/src/cmd/rc/pcmd.c - 664 sys sys 1055698775 2628
-sys/src/cmd/rc/pfnc.c - 664 sys sys 1055698776 1303
+sys/src/cmd/rc/pcmd.c - 664 sys sys 1100894086 2681
+sys/src/cmd/rc/pfnc.c - 664 sys sys 1100894087 1320
 sys/src/cmd/rc/plan9.c - 664 sys sys 1055698776 9382
-sys/src/cmd/rc/rc.h - 664 sys sys 1091904421 3314
+sys/src/cmd/rc/rc.h - 664 sys sys 1100894086 3329
 sys/src/cmd/rc/simple.c - 664 sys sys 1055698777 8993
 sys/src/cmd/rc/subr.c - 664 sys sys 1055698779 1206
 sys/src/cmd/rc/syn.y - 664 sys sys 944961083 3128
@@ -10916,7 +10919,7 @@ sys/src/cmd/upas/smtp/rfc822.y - 664 sys sys 1064589606 13417
 sys/src/cmd/upas/smtp/rmtdns.c - 664 sys sys 1015013150 1069
 sys/src/cmd/upas/smtp/smtp.c - 664 sys sys 1097901337 19565
 sys/src/cmd/upas/smtp/smtp.h - 664 sys sys 1064589597 1084
-sys/src/cmd/upas/smtp/smtpd.c - 664 sys sys 1098803934 30216
+sys/src/cmd/upas/smtp/smtpd.c - 664 sys sys 1100893957 30201
 sys/src/cmd/upas/smtp/smtpd.h - 664 sys sys 1067722781 1111
 sys/src/cmd/upas/smtp/smtpd.y - 664 sys sys 1061836986 6949
 sys/src/cmd/upas/smtp/spam.c - 664 sys sys 1098803961 10231

+ 18 - 0
dist/replica/plan9.log

@@ -17068,3 +17068,21 @@
 1100793608 0 c sys/games/lib/fortunes - 664 sys sys 1100793355 251029
 1100795409 0 c sys/games/lib/fortunes - 664 sys sys 1100793812 251061
 1100797209 0 c sys/games/lib/fortunes - 664 sys sys 1100795513 251274
+1100894427 0 a lib/dict/README.roget - 664 sys sys 1100894426 105
+1100894427 1 a sys/lib/kbmap/de - 664 sys sys 1100894012 6265
+1100894427 2 c sys/man/1/rc - 664 sys sys 1100894083 19898
+1100894427 3 c sys/src/cmd/dict/dict.h - 664 sys sys 1100894436 4172
+1100894427 4 c sys/src/cmd/dict/mkfile - 664 sys sys 1100894435 394
+1100894427 5 a sys/src/cmd/dict/roget.c - 664 sys sys 1100894437 2500
+1100894427 6 c sys/src/cmd/dict/utils.c - 664 sys sys 1100894437 14345
+1100894427 7 c sys/src/cmd/rc/code.c - 664 sys sys 1100894086 8215
+1100894427 8 c sys/src/cmd/rc/exec.c - 664 sys sys 1100894087 16525
+1100894427 9 c sys/src/cmd/rc/exec.h - 664 sys sys 1100894087 2804
+1100894427 10 c sys/src/cmd/rc/lex.c - 664 sys sys 1100894085 6100
+1100894427 11 c sys/src/cmd/rc/pcmd.c - 664 sys sys 1100894086 2681
+1100894427 12 c sys/src/cmd/rc/pfnc.c - 664 sys sys 1100894087 1320
+1100894427 13 c sys/src/cmd/rc/rc.h - 664 sys sys 1100894086 3329
+1100894427 14 c sys/src/cmd/upas/smtp/smtpd.c - 664 sys sys 1100893957 30201
+1100925033 0 c 386/bin/dict - 775 sys sys 1100924601 185420
+1100925033 1 c 386/bin/rc - 775 sys sys 1100924601 141176
+1100925033 2 c 386/bin/upas/smtpd - 775 sys sys 1100924602 326474

+ 5 - 0
lib/dict/README.roget

@@ -0,0 +1,5 @@
+To get the Project Gutenberg Roget's thesaurus use
+
+	9fs sources
+	cp /n/sources/extra/roget/* /lib/dict
+

+ 640 - 0
sys/lib/kbmap/de

@@ -0,0 +1,640 @@
+0	0	0x0
+0	1	0x1b
+0	2	0x31
+0	3	0x32
+0	4	0x33
+0	5	0x34
+0	6	0x35
+0	7	0x36
+0	8	0x37
+0	9	0x38
+0	10	0x39
+0	11	0x30
+0	12	0xdf
+0	13	0x27
+0	14	0x8
+0	15	0x9
+0	16	0x71
+0	17	0x77
+0	18	0x65
+0	19	0x72
+0	20	0x74
+0	21	0x7a
+0	22	0x75
+0	23	0x69
+0	24	0x6f
+0	25	0x70
+0	26	0xfc
+0	27	0x2b
+0	28	0xa
+0	29	0xf862
+0	30	0x61
+0	31	0x73
+0	32	0x64
+0	33	0x66
+0	34	0x67
+0	35	0x68
+0	36	0x6a
+0	37	0x6b
+0	38	0x6c
+0	39	0xf6
+0	40	0xe4
+0	41	0x5e
+0	42	0xf860
+0	43	0x23
+0	44	0x79
+0	45	0x78
+0	46	0x63
+0	47	0x76
+0	48	0x62
+0	49	0x6e
+0	50	0x6d
+0	51	0x2c
+0	52	0x2e
+0	53	0x2d
+0	54	0xf860
+0	55	0x2a
+0	56	0xf863
+0	57	0x20
+0	58	0xf862
+0	59	0xf001
+0	60	0xf002
+0	61	0xf003
+0	62	0xf004
+0	63	0xf005
+0	64	0xf006
+0	65	0xf007
+0	66	0xf008
+0	67	0xf009
+0	68	0xf00a
+0	69	0xf865
+0	70	0xf015
+0	71	0x37
+0	72	0x38
+0	73	0x39
+0	74	0x2d
+0	75	0x34
+0	76	0x35
+0	77	0x36
+0	78	0x2b
+0	79	0x31
+0	80	0x32
+0	81	0x33
+0	82	0x30
+0	83	0x2e
+0	84	0x0
+0	85	0x0
+0	86	0x3c
+0	87	0xf00b
+0	88	0xf00c
+0	89	0x0
+0	90	0x0
+0	91	0x0
+0	92	0x0
+0	93	0x0
+0	94	0x0
+0	95	0x0
+0	96	0x0
+0	97	0x0
+0	98	0x0
+0	99	0x0
+0	100	0x0
+0	101	0x0
+0	102	0x0
+0	103	0x0
+0	104	0x0
+0	105	0x0
+0	106	0x0
+0	107	0x0
+0	108	0x0
+0	109	0x0
+0	110	0x0
+0	111	0x0
+0	112	0x0
+0	113	0x0
+0	114	0x0
+0	115	0x0
+0	116	0x0
+0	117	0x0
+0	118	0x0
+0	119	0x0
+0	120	0x0
+0	121	0xf800
+0	122	0x0
+0	123	0xf00e
+0	124	0x0
+0	125	0x0
+0	126	0x0
+0	127	0x0
+1	0	0x0
+1	1	0x1b
+1	2	0x21
+1	3	0x22
+1	4	0xa7
+1	5	0x24
+1	6	0x25
+1	7	0x26
+1	8	0x2f
+1	9	0x28
+1	10	0x29
+1	11	0x3d
+1	12	0x3f
+1	13	0x60
+1	14	0x8
+1	15	0x9
+1	16	0x51
+1	17	0x57
+1	18	0x45
+1	19	0x52
+1	20	0x54
+1	21	0x5a
+1	22	0x55
+1	23	0x49
+1	24	0x4f
+1	25	0x50
+1	26	0xdc
+1	27	0x2a
+1	28	0xa
+1	29	0xf862
+1	30	0x41
+1	31	0x53
+1	32	0x44
+1	33	0x46
+1	34	0x47
+1	35	0x48
+1	36	0x4a
+1	37	0x4b
+1	38	0x4c
+1	39	0xd6
+1	40	0xc4
+1	41	0xb0
+1	42	0xf860
+1	43	0x27
+1	44	0x59
+1	45	0x58
+1	46	0x43
+1	47	0x56
+1	48	0x42
+1	49	0x4e
+1	50	0x4d
+1	51	0x3b
+1	52	0x3a
+1	53	0x5f
+1	54	0xf860
+1	55	0x2a
+1	56	0xf863
+1	57	0x20
+1	58	0xf862
+1	59	0xf001
+1	60	0xf002
+1	61	0xf003
+1	62	0xf004
+1	63	0xf005
+1	64	0xf006
+1	65	0xf007
+1	66	0xf008
+1	67	0xf009
+1	68	0xf00a
+1	69	0xf865
+1	70	0xf015
+1	71	0x37
+1	72	0x38
+1	73	0x39
+1	74	0x2d
+1	75	0x34
+1	76	0x35
+1	77	0x36
+1	78	0x2b
+1	79	0x31
+1	80	0x32
+1	81	0x33
+1	82	0x30
+1	83	0x2e
+1	84	0x0
+1	85	0x0
+1	86	0x3e
+1	87	0xf00b
+1	88	0xf00c
+1	89	0x0
+1	90	0x0
+1	91	0x0
+1	92	0x0
+1	93	0x0
+1	94	0x0
+1	95	0x0
+1	96	0x0
+1	97	0x0
+1	98	0x0
+1	99	0x0
+1	100	0x0
+1	101	0x0
+1	102	0x0
+1	103	0x0
+1	104	0x0
+1	105	0x0
+1	106	0x0
+1	107	0x0
+1	108	0x0
+1	109	0x0
+1	110	0x0
+1	111	0x0
+1	112	0x0
+1	113	0x0
+1	114	0x0
+1	115	0x0
+1	116	0x0
+1	117	0x0
+1	118	0x0
+1	119	0x0
+1	120	0x0
+1	121	0xf00e
+1	122	0x0
+1	123	0xf00e
+1	124	0x0
+1	125	0x0
+1	126	0x0
+1	127	0x0
+2	0	0x0
+2	1	0x0
+2	2	0x0
+2	3	0x0
+2	4	0x0
+2	5	0x0
+2	6	0x0
+2	7	0x0
+2	8	0x0
+2	9	0x0
+2	10	0x0
+2	11	0x0
+2	12	0x0
+2	13	0x0
+2	14	0x0
+2	15	0x0
+2	16	0x0
+2	17	0x0
+2	18	0x0
+2	19	0x0
+2	20	0x0
+2	21	0x0
+2	22	0x0
+2	23	0x0
+2	24	0x0
+2	25	0x0
+2	26	0x0
+2	27	0x0
+2	28	0xa
+2	29	0xf862
+2	30	0x0
+2	31	0x0
+2	32	0x0
+2	33	0x0
+2	34	0x0
+2	35	0x0
+2	36	0x0
+2	37	0x0
+2	38	0x0
+2	39	0x0
+2	40	0x0
+2	41	0x0
+2	42	0xf860
+2	43	0x0
+2	44	0x0
+2	45	0x0
+2	46	0x0
+2	47	0x0
+2	48	0x0
+2	49	0x0
+2	50	0x0
+2	51	0x0
+2	52	0x0
+2	53	0x2f
+2	54	0x0
+2	55	0xf010
+2	56	0xf867
+2	57	0x0
+2	58	0x0
+2	59	0x0
+2	60	0x0
+2	61	0x0
+2	62	0x0
+2	63	0x0
+2	64	0x0
+2	65	0x0
+2	66	0x0
+2	67	0x0
+2	68	0x0
+2	69	0x0
+2	70	0xf861
+2	71	0xf00d
+2	72	0xf00e
+2	73	0xf00f
+2	74	0x0
+2	75	0xf011
+2	76	0x0
+2	77	0xf012
+2	78	0x0
+2	79	0xf018
+2	80	0xf800
+2	81	0xf013
+2	82	0xf014
+2	83	0x7f
+2	84	0x0
+2	85	0x0
+2	86	0x0
+2	87	0x0
+2	88	0x0
+2	89	0x0
+2	90	0x0
+2	91	0x0
+2	92	0x0
+2	93	0x0
+2	94	0x0
+2	95	0x0
+2	96	0x0
+2	97	0x0
+2	98	0x0
+2	99	0x0
+2	100	0x0
+2	101	0x0
+2	102	0x0
+2	103	0x0
+2	104	0x0
+2	105	0x0
+2	106	0x0
+2	107	0x0
+2	108	0x0
+2	109	0x0
+2	110	0x0
+2	111	0x0
+2	112	0x0
+2	113	0x0
+2	114	0x0
+2	115	0x0
+2	116	0x0
+2	117	0x0
+2	118	0x0
+2	119	0x0
+2	120	0x0
+2	121	0xf00e
+2	122	0x0
+2	123	0x0
+2	124	0x0
+2	125	0x0
+2	126	0x0
+2	127	0x0
+3	0	0x0
+3	1	0x0
+3	2	0x0
+3	3	0xb2
+3	4	0xb3
+3	5	0x0
+3	6	0x0
+3	7	0x0
+3	8	0x7b
+3	9	0x5b
+3	10	0x5d
+3	11	0x7d
+3	12	0x5c
+3	13	0x0
+3	14	0x0
+3	15	0x0
+3	16	0x40
+3	17	0x0
+3	18	0x20ac
+3	19	0x0
+3	20	0x0
+3	21	0x0
+3	22	0x0
+3	23	0x0
+3	24	0x0
+3	25	0x0
+3	26	0x0
+3	27	0x7e
+3	28	0xa
+3	29	0xf862
+3	30	0x0
+3	31	0x0
+3	32	0x0
+3	33	0x0
+3	34	0x0
+3	35	0x0
+3	36	0x0
+3	37	0x0
+3	38	0x0
+3	39	0x0
+3	40	0x0
+3	41	0x0
+3	42	0xf860
+3	43	0x0
+3	44	0x0
+3	45	0x0
+3	46	0x0
+3	47	0x0
+3	48	0x0
+3	49	0x0
+3	50	0x3bc
+3	51	0x0
+3	52	0x0
+3	53	0x2f
+3	54	0x0
+3	55	0xf010
+3	56	0xf867
+3	57	0x0
+3	58	0x0
+3	59	0x0
+3	60	0x0
+3	61	0x0
+3	62	0x0
+3	63	0x0
+3	64	0x0
+3	65	0x0
+3	66	0x0
+3	67	0x0
+3	68	0x0
+3	69	0x0
+3	70	0xf861
+3	71	0xf00d
+3	72	0xf00e
+3	73	0xf00f
+3	74	0x0
+3	75	0xf011
+3	76	0x0
+3	77	0xf012
+3	78	0x0
+3	79	0xf018
+3	80	0xf800
+3	81	0xf013
+3	82	0xf014
+3	83	0x7f
+3	84	0x0
+3	85	0x0
+3	86	0x7c
+3	87	0x0
+3	88	0x0
+3	89	0x0
+3	90	0x0
+3	91	0x0
+3	92	0x0
+3	93	0x0
+3	94	0x0
+3	95	0x0
+3	96	0x0
+3	97	0x0
+3	98	0x0
+3	99	0x0
+3	100	0x0
+3	101	0x0
+3	102	0x0
+3	103	0x0
+3	104	0x0
+3	105	0x0
+3	106	0x0
+3	107	0x0
+3	108	0x0
+3	109	0x0
+3	110	0x0
+3	111	0x0
+3	112	0x0
+3	113	0x0
+3	114	0x0
+3	115	0x0
+3	116	0x0
+3	117	0x0
+3	118	0x0
+3	119	0x0
+3	120	0x0
+3	121	0xf00e
+3	122	0x0
+3	123	0x0
+3	124	0x0
+3	125	0x0
+3	126	0x0
+3	127	0x0
+4	0	0x0
+4	1	0x1b
+4	2	0x11
+4	3	0x12
+4	4	0x13
+4	5	0x14
+4	6	0x15
+4	7	0x16
+4	8	0x17
+4	9	0x18
+4	10	0x19
+4	11	0x10
+4	12	0xd
+4	13	0x1d
+4	14	0x8
+4	15	0x9
+4	16	0x11
+4	17	0x17
+4	18	0x5
+4	19	0x12
+4	20	0x14
+4	21	0x19
+4	22	0x15
+4	23	0x9
+4	24	0xf
+4	25	0x10
+4	26	0x1b
+4	27	0x1d
+4	28	0xa
+4	29	0xf862
+4	30	0x1
+4	31	0x13
+4	32	0x4
+4	33	0x6
+4	34	0x7
+4	35	0x8
+4	36	0xa
+4	37	0xb
+4	38	0xc
+4	39	0x1b
+4	40	0x7
+4	41	0x0
+4	42	0xf860
+4	43	0x1c
+4	44	0x1a
+4	45	0x18
+4	46	0x3
+4	47	0x16
+4	48	0x2
+4	49	0xe
+4	50	0xd
+4	51	0xc
+4	52	0xe
+4	53	0xf
+4	54	0xf860
+4	55	0xa
+4	56	0xf863
+4	57	0x0
+4	58	0xf862
+4	59	0x5
+4	60	0x6
+4	61	0x7
+4	62	0x4
+4	63	0x5
+4	64	0x6
+4	65	0x7
+4	66	0xc
+4	67	0xd
+4	68	0xe
+4	69	0x5
+4	70	0x6
+4	71	0x17
+4	72	0x18
+4	73	0x19
+4	74	0xd
+4	75	0x14
+4	76	0x15
+4	77	0x16
+4	78	0xb
+4	79	0x11
+4	80	0x12
+4	81	0x13
+4	82	0x10
+4	83	0xe
+4	84	0x0
+4	85	0x0
+4	86	0x0
+4	87	0xf
+4	88	0xc
+4	89	0x0
+4	90	0x0
+4	91	0x0
+4	92	0x0
+4	93	0x0
+4	94	0x0
+4	95	0x0
+4	96	0x0
+4	97	0x0
+4	98	0x0
+4	99	0x0
+4	100	0x0
+4	101	0x0
+4	102	0x0
+4	103	0x0
+4	104	0x0
+4	105	0x0
+4	106	0x0
+4	107	0x0
+4	108	0x0
+4	109	0x0
+4	110	0x0
+4	111	0x0
+4	112	0x0
+4	113	0x0
+4	114	0x0
+4	115	0x0
+4	116	0x0
+4	117	0x0
+4	118	0x0
+4	119	0x0
+4	120	0x0
+4	121	0x7
+4	122	0x0
+4	123	0x8
+4	124	0x0
+4	125	0x0
+4	126	0x0
+4	127	0x0

+ 17 - 1
sys/man/1/rc

@@ -333,6 +333,12 @@ the caret is deleted.
 If
 .I eof-marker
 is quoted, no substitution occurs.
+The standard input file
+may also be redirected from a file by the sequence
+.BI <> file \f1,
+which opens
+.I file
+exactly once, for reading and writing.
 .PP
 Redirections may be applied to a file-descriptor other than standard input
 or output by qualifying the redirection operator
@@ -342,7 +348,8 @@ may be redirected by writing
 .BR "cc junk.c >[2]junk" .
 .PP
 A file descriptor may be redirected to an already open descriptor by writing
-.BI >[ fd0 = fd1 ]
+.BI >[ fd0 = fd1 ],
+.BI <>[ fd0 = fd1 ],
 or
 .BI <[ fd0 = fd1 ]\f1.
 .I Fd1
@@ -366,6 +373,15 @@ have different effects: the first puts standard output in
 and then puts diagnostic output in the same place, where the second
 directs diagnostic output to the terminal and sends standard output to
 .BR /dev/null .
+.PP
+.B newconn <>/net/tcp/clone >[1=0]
+opens
+.B /net/tcp/clone
+exactly once for reading and writing and puts it on standard input and output.
+.B lpd <>[3]/net/tcp/42/data
+opens
+.B /net/tcp/42/data
+exactly once for reading and writing and puts it on file descriptor 3.
 .SS Compound Commands
 A pair of commands separated by a pipe operator
 .RB ( | )

+ 3 - 0
sys/src/cmd/dict/dict.h

@@ -130,6 +130,9 @@ void	movieprintkey(void);
 long	pgwnextoff(long);
 void	pgwprintentry(Entry,int);
 void	pgwprintkey(void);
+void	rogetprintentry(Entry, int);
+long	rogetnextoff(long);
+void	rogetprintkey(void);
 long	slangnextoff(long);
 void	slangprintentry(Entry, int);
 void	slangprintkey(void);

+ 1 - 1
sys/src/cmd/dict/mkfile

@@ -2,7 +2,7 @@
 
 TARG=dict
 LFILES=oed.$O ahd.$O pcollins.$O pcollinsg.$O movie.$O slang.$O robert.$O\
-	world.$O jis208.$O gb2312.$O thesaurus.$O simple.$O pgw.$O
+	world.$O jis208.$O gb2312.$O thesaurus.$O simple.$O pgw.$O roget.$O
 
 OFILES=dict.$O\
 	$LFILES\

+ 147 - 0
sys/src/cmd/dict/roget.c

@@ -0,0 +1,147 @@
+#include <u.h>
+#include <libc.h>
+#include <bio.h>
+#include <ctype.h>
+#include "dict.h"
+
+/* Roget's Thesaurus from project Gutenberg */
+
+static long Last = 0;
+
+void
+rogetprintentry(Entry e, int cmd)
+{
+	int spc;
+	char c, *p;
+
+	spc = 0;
+	p = e.start;
+
+	if(cmd == 'h'){
+		while(!isspace(*p) && p < e.end)
+			p++;
+		while(strncmp(p, " -- ", 4) != 0 && p < e.end){
+			while(isspace(*p) && p < e.end)
+				p++;
+			if (*p == '[' || *p == '{'){	
+				c = (*p == '[')? ']': '}';
+				while(*p != c && p < e.end)
+					p++;
+				p++;
+				continue;
+			}
+			if (isdigit(*p) || ispunct(*p)){
+				while(!isspace(*p) && p < e.end)
+					p++;
+				continue;
+			}
+
+
+			if (isspace(*p))
+				spc = 1;
+			else
+			if (spc){
+				outchar(' ');
+				spc = 0;
+			}
+
+			while(!isspace(*p) && p < e.end)
+				outchar(*p++);
+		}
+		return;
+	}	
+
+	while(p < e.end && !isspace(*p))
+		p++;
+	while(p < e.end && isspace(*p))
+		p++;
+
+	while (p < e.end){
+		if (p < e.end -4 && strncmp(p, " -- ", 4) == 0){	/* first line */
+			outnl(2);
+			p += 4;
+			spc = 0;
+		}
+			
+		if (p < e.end -2 && strncmp(p, "[ ", 4) == 0){		/* twiddle layout */
+			outchars(" [");
+			continue;
+		}
+
+		if (p < e.end -4 && strncmp(p, "&c (", 4) == 0){	/* usefull xref */
+			if (spc)
+				outchar(' ');
+			outchar('/');
+			while(p < e.end && *p != '(')
+				p++;
+			p++;
+			while(p < e.end && *p != ')')
+				outchar(*p++);
+			p++;
+			while(p < e.end && isspace(*p))
+				p++;
+			while(p < e.end && isdigit(*p))
+				p++;
+			outchar('/');
+			continue;
+		}
+
+		if (p < e.end -3 && strncmp(p, "&c ", 3) == 0){		/* less usefull xref */
+			while(p < e.end && !isdigit(*p))
+				p++;
+			while(p < e.end && isdigit(*p))
+				p++;
+			continue;
+		}
+
+		if (*p == '\n' && p < (e.end -1)){			/* their newlines */
+			spc = 0;
+			p++;
+			if (isspace(*p)){				/* their continuation line */
+				while (isspace(*p))
+					p++;
+				p--;
+			}
+			else{
+				outnl(2);
+			}
+		}
+		if (spc && *p != ';' && *p != '.' &&
+		    *p != ',' && !isspace(*p)){				/* drop spaces before punct */
+			spc = 0;
+			outchar(' ');
+		}
+		if (isspace(*p))
+			spc = 1;
+		else
+			outchar(*p);
+		p++;
+	}
+	outnl(0);
+}
+
+long
+rogetnextoff(long fromoff)
+{
+	int i;
+	vlong l;
+	char *p;
+
+	Bseek(bdict, fromoff, 0);
+	Brdline(bdict, '\n');
+	while ((p = Brdline(bdict, '\n')) != nil){
+		l = Blinelen(bdict);
+		if (!isdigit(*p))
+			continue;
+		for (i = 0; i < l-4; i++)
+			if (strncmp(p+i, " -- ", 4) == 0)
+				return Boffset(bdict)-l;
+	}
+	return Boffset(bdict);
+}
+
+void
+rogetprintkey(void)
+{
+	Bprint(bout, "No pronunciation key.\n");
+}

+ 3 - 0
sys/src/cmd/dict/utils.c

@@ -16,6 +16,9 @@ Dict dicts[] = {
 	{"thesaurus",	"Collins Thesaurus",
 	 "/lib/dict/thesaurus",	"/lib/dict/thesindex",
 	 thesnextoff,	thesprintentry,	thesprintkey},
+	{"roget",		"Project Gutenberg Roget's Thesaurus",
+	 "/lib/dict/roget", "/lib/dict/rogetindex",
+	 rogetnextoff,	rogetprintentry,	rogetprintkey},
 
 	{"ce",		"Gendai Chinese->English",
 	 "/lib/dict/world/sansdata/sandic24.dat",

+ 4 - 0
sys/src/cmd/rc/code.c

@@ -319,6 +319,9 @@ outcode(tree *t, int eflag)
 		case HERE:
 			emitf(Xread);
 			break;
+		case RDWR:
+			emitf(Xrdwr);
+			break;
 		}
 		emiti(t->fd0);
 		outcode(c1, eflag);
@@ -466,6 +469,7 @@ codefree(code *cp)
 		return;
 	for(p = cp+1;p->f;p++){
 		if(p->f==Xappend || p->f==Xclose || p->f==Xread || p->f==Xwrite
+		|| p->f==Xrdwr
 		|| p->f==Xasync || p->f==Xbackq || p->f==Xcase || p->f==Xfalse
 		|| p->f==Xfor || p->f==Xjump
 		|| p->f==Xsubshell || p->f==Xtrue) p++;

+ 28 - 0
sys/src/cmd/rc/exec.c

@@ -219,6 +219,7 @@ main(int argc, char *argv[])
  * Xpipefd[type]{... Xreturn}		connect {} to pipe (input or output,
  * 					depending on type), push /dev/fd/??
  * Xpopm(value)				pop value from stack
+ * Xrdwr(file)[fd]			open file for reading and writing
  * Xread(file)[fd]			open file to read
  * Xsettraps(names){... Xreturn}		define trap functions
  * Xshowtraps				print trap list
@@ -375,6 +376,33 @@ Xread(void)
 }
 
 void
+Xrdwr(void)
+{
+	char *file;
+	int f;
+
+	switch(count(runq->argv->words)){
+	default:
+		Xerror1("<> requires singleton\n");
+		return;
+	case 0:
+		Xerror1("<> requires file\n");
+		return;
+	case 1:
+		break;
+	}
+	file = runq->argv->words->word;
+	if((f = open(file, ORDWR))<0){
+		pfmt(err, "%s: ", file);
+		Xerror("can't open");
+		return;
+	}
+	pushredir(ROPEN, f, runq->code[runq->pc].i);
+	runq->pc++;
+	poplist();
+}
+
+void
 turfredir(void)
 {
 	while(runq->redir!=runq->startredir)

+ 1 - 0
sys/src/cmd/rc/exec.h

@@ -5,6 +5,7 @@ extern void Xappend(void), Xasync(void), Xbackq(void), Xbang(void), Xclose(void)
 extern void Xconc(void), Xcount(void), Xdelfn(void), Xdol(void), Xqdol(void), Xdup(void);
 extern void Xexit(void), Xfalse(void), Xfn(void), Xfor(void), Xglob(void);
 extern void Xjump(void), Xmark(void), Xmatch(void), Xpipe(void), Xread(void);
+extern void Xrdwr(void);
 extern void Xrdfn(void), Xunredir(void), Xstar(void), Xreturn(void), Xsubshell(void);
 extern void Xtrue(void), Xword(void), Xwrite(void), Xpipefd(void), Xcase(void);
 extern void Xlocal(void), Xunlocal(void), Xassign(void), Xsimple(void), Xpopm(void);

+ 4 - 2
sys/src/cmd/rc/lex.c

@@ -267,8 +267,10 @@ yylex(void)
 			if(nextis(c)){
 				t->rtype = HERE;
 				*w++=c;
-			}
-			else t->rtype = READ;
+			} else if (nextis('>')){
+				t->rtype = RDWR;
+				*w++=c;
+			} else t->rtype = READ;
 			t->fd0 = 0;
 			break;
 		}

+ 3 - 0
sys/src/cmd/rc/pcmd.c

@@ -110,7 +110,10 @@ pcmd(io *f, tree *t)
 		case HERE:
 			pchr(f, '<');
 		case READ:
+		case RDWR:
 			pchr(f, '<');
+			if(t->rtype==RDWR)
+				pchr(f, '>');
 			if(t->fd0!=0)
 				pfmt(f, "[%d]", t->fd0);
 			break;

+ 1 - 0
sys/src/cmd/rc/pfnc.c

@@ -18,6 +18,7 @@ struct{
 	Xjump, "Xjump",
 	Xmark, "Xmark",
 	Xpopm, "Xpopm",
+	Xrdwr, "Xrdwr",
 	Xread, "Xread",
 	Xreturn, "Xreturn",
 	Xtrue, "Xtrue",

+ 1 - 0
sys/src/cmd/rc/rc.h

@@ -74,6 +74,7 @@ char tok[NTOK];
 #define	HERE	4
 #define	DUPFD	5
 #define	CLOSE	6
+#define RDWR	7
 struct var{
 	char *name;		/* ascii name */
 	word *val;	/* value */

+ 1 - 1
sys/src/cmd/upas/smtp/smtpd.c

@@ -1347,7 +1347,7 @@ auth(String *mech, String *resp)
 		goto bomb_out;
 
  	syslog(0, "smtpd", "auth(%s, %s) from %s", s_to_c(mech),
-		resp==nil?"nil":s_to_c(resp), him);
+		"(protected)", him);
 
 	if (authenticated) {
 	bad_sequence: