Browse Source

Plan 9 from Bell Labs 2005-03-17

David du Colombier 19 years ago
parent
commit
682fc25340

+ 14 - 12
dist/replica/_plan9.db

@@ -102,7 +102,7 @@
 386/bin/aux/g3p9bit - 775 sys sys 1104121976 67278
 386/bin/aux/getflags - 775 sys sys 1104121977 43817
 386/bin/aux/gpsevermore - 775 sys sys 1107490157 71417
-386/bin/aux/gpsfs - 775 sys sys 1108440451 175635
+386/bin/aux/gpsfs - 775 sys sys 1110946100 176112
 386/bin/aux/grabit - 775 sys sys 1020319063 1244
 386/bin/aux/hardcopy - 775 sys sys 1020319063 1699
 386/bin/aux/isvmware - 775 sys sys 1032486791 23997
@@ -493,7 +493,7 @@
 386/bin/venti/verifyarena - 775 sys sys 1104122086 104270
 386/bin/venti/wrarena - 775 sys sys 1104122086 176179
 386/bin/venti/write - 775 sys sys 1104122087 102499
-386/bin/vncs - 775 sys sys 1109132009 470894
+386/bin/vncs - 775 sys sys 1110946101 470895
 386/bin/vncv - 775 sys sys 1109132010 518017
 386/bin/vt - 775 sys sys 1106799182 172859
 386/bin/vtdump - 775 sys sys 1104122090 159451
@@ -550,7 +550,7 @@
 386/lib/libip.a - 664 sys sys 1108268398 35602
 386/lib/libl.a - 664 sys sys 1108268398 5384
 386/lib/libmach.a - 664 sys sys 1108268400 652906
-386/lib/libmemdraw.a - 664 sys sys 1108699740 283188
+386/lib/libmemdraw.a - 664 sys sys 1110946101 283198
 386/lib/libmemlayer.a - 664 sys sys 1108699740 47360
 386/lib/libmp.a - 664 sys sys 1108268401 79532
 386/lib/libndb.a - 664 sys sys 1108268401 60666
@@ -3087,7 +3087,7 @@ rc/bin/reboot - 775 sys sys 1020011207 36
 rc/bin/replica - 20000000775 sys sys 1018321122 0
 rc/bin/replica/changes - 775 sys sys 1022177304 276
 rc/bin/replica/defs - 664 sys sys 1103390458 778
-rc/bin/replica/pull - 775 sys sys 1045504036 1445
+rc/bin/replica/pull - 775 sys sys 1110990531 1447
 rc/bin/replica/push - 775 sys sys 1043865725 361
 rc/bin/replica/scan - 775 sys sys 1089299188 472
 rc/bin/replica/setupdirs - 775 sys sys 1109511315 411
@@ -3362,7 +3362,7 @@ sys/doc/venti/venti.pdf - 755 sys sys 1020384352 139090
 sys/doc/venti/venti.ps - 664 sys sys 1019852320 2012620
 sys/games - 20000000775 sys sys 952648872 0
 sys/games/lib - 20000000775 sys sys 952648879 0
-sys/games/lib/fortunes - 664 sys sys 1110309055 253240
+sys/games/lib/fortunes - 664 sys sys 1111012774 253406
 sys/games/lib/mahjongg - 20000000775 sys sys 1095792278 0
 sys/games/lib/mahjongg/backgrounds - 20000000775 sys sys 1095792293 0
 sys/games/lib/mahjongg/backgrounds/default.bit - 664 sys sys 1095792293 346803
@@ -3506,7 +3506,7 @@ sys/lib/acid/alpha - 664 sys sys 944955985 4849
 sys/lib/acid/arm - 664 sys sys 984696197 1842
 sys/lib/acid/coverage - 664 sys sys 944955985 1746
 sys/lib/acid/kernel - 664 sys sys 1063858104 4994
-sys/lib/acid/leak - 664 sys sys 1048637057 2185
+sys/lib/acid/leak - 664 sys sys 1110989276 2185
 sys/lib/acid/mips - 664 sys sys 944955985 5472
 sys/lib/acid/network - 664 sys sys 1020313817 2499
 sys/lib/acid/pool - 664 sys sys 1063858105 4898
@@ -3929,6 +3929,9 @@ sys/lib/kbmap/es - 664 sys sys 1079535430 1360
 sys/lib/kbmap/fi - 664 sys sys 1079617317 369
 sys/lib/kbmap/jp - 664 sys sys 1106107712 317
 sys/lib/kbmap/n97 - 664 sys sys 1109430112 561
+sys/lib/kbmap/no - 664 sys sys 1110991440 367
+sys/lib/kbmap/ru - 664 sys sys 1110991440 6380
+sys/lib/kbmap/ua - 664 sys sys 1110991440 6380
 sys/lib/kbmap/uk - 664 sys sys 1079473812 55
 sys/lib/kbmap/us - 664 sys sys 1082221421 6248
 sys/lib/lex - 20000000775 sys sys 945136651 0
@@ -9758,8 +9761,8 @@ sys/src/cmd/mk/word.c - 664 sys sys 944961025 2595
 sys/src/cmd/mkdir.c - 664 sys sys 1082593106 1026
 sys/src/cmd/mkfile - 664 sys sys 1108476348 2414
 sys/src/cmd/mklib - 664 sys sys 1101213349 618
-sys/src/cmd/mkmany - 664 sys sys 1022112160 1196
-sys/src/cmd/mkone - 664 sys sys 1101311048 835
+sys/src/cmd/mkmany - 664 sys sys 1110990445 1283
+sys/src/cmd/mkone - 664 sys sys 1110990445 898
 sys/src/cmd/mkstate.c - 664 sys sys 1014926695 2995
 sys/src/cmd/mksyslib - 664 sys sys 1022112160 660
 sys/src/cmd/mntgen.c - 664 sys sys 1106410349 3630
@@ -10244,7 +10247,7 @@ sys/src/cmd/read.c - 664 sys sys 1022047660 1278
 sys/src/cmd/replica - 20000000775 sys sys 1018321113 0
 sys/src/cmd/replica/all.h - 664 sys sys 1091904421 1265
 sys/src/cmd/replica/applychanges.c - 664 sys sys 1068497831 6123
-sys/src/cmd/replica/applylog.c - 664 sys sys 1053210813 17189
+sys/src/cmd/replica/applylog.c - 664 sys sys 1110990530 18079
 sys/src/cmd/replica/avl.c - 664 sys sys 1068497830 6242
 sys/src/cmd/replica/compactdb.c - 664 sys sys 1018323475 652
 sys/src/cmd/replica/db.c - 664 sys sys 1019340165 2989
@@ -11782,6 +11785,7 @@ sys/src/libc/port/netmkaddr.c - 664 sys sys 1014927400 863
 sys/src/libc/port/nrand.c - 664 sys sys 1035832917 191
 sys/src/libc/port/ntruerand.c - 664 sys sys 1014927400 371
 sys/src/libc/port/perror.c - 664 sys sys 1014927400 199
+sys/src/libc/port/pool.acid - 664 sys sys 1110989242 12026
 sys/src/libc/port/pool.c - 664 sys sys 1102093118 30853
 sys/src/libc/port/pow.c - 664 sys sys 1014927401 965
 sys/src/libc/port/pow10.c - 664 sys sys 1014927401 1946
@@ -12478,6 +12482,4 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 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/vncs - 775 sys sys 1110946101 470895
-386/bin/aux/gpsfs - 775 sys sys 1110946100 176112
-386/lib/libmemdraw.a - 664 sys sys 1110946101 283198
+386/bin/replica/applylog - 775 sys sys 1111032635 116663

+ 11 - 7
dist/replica/plan9.db

@@ -370,7 +370,7 @@
 386/bin/read - 775 sys sys 1104122049 58046
 386/bin/replica - 20000000775 sys sys 1018321168 0
 386/bin/replica/applychanges - 775 sys sys 1104122049 98562
-386/bin/replica/applylog - 775 sys sys 1104122049 99358
+386/bin/replica/applylog - 775 sys sys 1111032635 116663
 386/bin/replica/changes - 775 sys sys 1020319082 42
 386/bin/replica/compactdb - 775 sys sys 1104122050 78491
 386/bin/replica/pull - 775 sys sys 1020319083 39
@@ -3087,7 +3087,7 @@ rc/bin/reboot - 775 sys sys 1020011207 36
 rc/bin/replica - 20000000775 sys sys 1018321122 0
 rc/bin/replica/changes - 775 sys sys 1022177304 276
 rc/bin/replica/defs - 664 sys sys 1103390458 778
-rc/bin/replica/pull - 775 sys sys 1045504036 1445
+rc/bin/replica/pull - 775 sys sys 1110990531 1447
 rc/bin/replica/push - 775 sys sys 1043865725 361
 rc/bin/replica/scan - 775 sys sys 1089299188 472
 rc/bin/replica/setupdirs - 775 sys sys 1109511315 411
@@ -3362,7 +3362,7 @@ sys/doc/venti/venti.pdf - 755 sys sys 1020384352 139090
 sys/doc/venti/venti.ps - 664 sys sys 1019852320 2012620
 sys/games - 20000000775 sys sys 952648872 0
 sys/games/lib - 20000000775 sys sys 952648879 0
-sys/games/lib/fortunes - 664 sys sys 1110309055 253240
+sys/games/lib/fortunes - 664 sys sys 1111012774 253406
 sys/games/lib/mahjongg - 20000000775 sys sys 1095792278 0
 sys/games/lib/mahjongg/backgrounds - 20000000775 sys sys 1095792293 0
 sys/games/lib/mahjongg/backgrounds/default.bit - 664 sys sys 1095792293 346803
@@ -3506,7 +3506,7 @@ sys/lib/acid/alpha - 664 sys sys 944955985 4849
 sys/lib/acid/arm - 664 sys sys 984696197 1842
 sys/lib/acid/coverage - 664 sys sys 944955985 1746
 sys/lib/acid/kernel - 664 sys sys 1063858104 4994
-sys/lib/acid/leak - 664 sys sys 1048637057 2185
+sys/lib/acid/leak - 664 sys sys 1110989276 2185
 sys/lib/acid/mips - 664 sys sys 944955985 5472
 sys/lib/acid/network - 664 sys sys 1020313817 2499
 sys/lib/acid/pool - 664 sys sys 1063858105 4898
@@ -3929,6 +3929,9 @@ sys/lib/kbmap/es - 664 sys sys 1079535430 1360
 sys/lib/kbmap/fi - 664 sys sys 1079617317 369
 sys/lib/kbmap/jp - 664 sys sys 1106107712 317
 sys/lib/kbmap/n97 - 664 sys sys 1109430112 561
+sys/lib/kbmap/no - 664 sys sys 1110991440 367
+sys/lib/kbmap/ru - 664 sys sys 1110991440 6380
+sys/lib/kbmap/ua - 664 sys sys 1110991440 6380
 sys/lib/kbmap/uk - 664 sys sys 1079473812 55
 sys/lib/kbmap/us - 664 sys sys 1082221421 6248
 sys/lib/lex - 20000000775 sys sys 945136651 0
@@ -9758,8 +9761,8 @@ sys/src/cmd/mk/word.c - 664 sys sys 944961025 2595
 sys/src/cmd/mkdir.c - 664 sys sys 1082593106 1026
 sys/src/cmd/mkfile - 664 sys sys 1108476348 2414
 sys/src/cmd/mklib - 664 sys sys 1101213349 618
-sys/src/cmd/mkmany - 664 sys sys 1022112160 1196
-sys/src/cmd/mkone - 664 sys sys 1101311048 835
+sys/src/cmd/mkmany - 664 sys sys 1110990445 1283
+sys/src/cmd/mkone - 664 sys sys 1110990445 898
 sys/src/cmd/mkstate.c - 664 sys sys 1014926695 2995
 sys/src/cmd/mksyslib - 664 sys sys 1022112160 660
 sys/src/cmd/mntgen.c - 664 sys sys 1106410349 3630
@@ -10244,7 +10247,7 @@ sys/src/cmd/read.c - 664 sys sys 1022047660 1278
 sys/src/cmd/replica - 20000000775 sys sys 1018321113 0
 sys/src/cmd/replica/all.h - 664 sys sys 1091904421 1265
 sys/src/cmd/replica/applychanges.c - 664 sys sys 1068497831 6123
-sys/src/cmd/replica/applylog.c - 664 sys sys 1053210813 17189
+sys/src/cmd/replica/applylog.c - 664 sys sys 1110990530 18079
 sys/src/cmd/replica/avl.c - 664 sys sys 1068497830 6242
 sys/src/cmd/replica/compactdb.c - 664 sys sys 1018323475 652
 sys/src/cmd/replica/db.c - 664 sys sys 1019340165 2989
@@ -11782,6 +11785,7 @@ sys/src/libc/port/netmkaddr.c - 664 sys sys 1014927400 863
 sys/src/libc/port/nrand.c - 664 sys sys 1035832917 191
 sys/src/libc/port/ntruerand.c - 664 sys sys 1014927400 371
 sys/src/libc/port/perror.c - 664 sys sys 1014927400 199
+sys/src/libc/port/pool.acid - 664 sys sys 1110989242 12026
 sys/src/libc/port/pool.c - 664 sys sys 1102093118 30853
 sys/src/libc/port/pow.c - 664 sys sys 1014927401 965
 sys/src/libc/port/pow10.c - 664 sys sys 1014927401 1946

+ 11 - 0
dist/replica/plan9.log

@@ -13924,3 +13924,14 @@
 1110947407 0 c 386/bin/vncs - 775 sys sys 1110946101 470895
 1110947407 1 c 386/bin/aux/gpsfs - 775 sys sys 1110946100 176112
 1110947407 2 c 386/lib/libmemdraw.a - 664 sys sys 1110946101 283198
+1110990615 0 c rc/bin/replica/pull - 775 sys sys 1110990531 1447
+1110990615 1 c sys/lib/acid/leak - 664 sys sys 1110989276 2185
+1110990615 2 c sys/src/cmd/replica/applylog.c - 664 sys sys 1110990530 18079
+1110990615 3 c sys/src/cmd/mkmany - 664 sys sys 1110990445 1283
+1110990615 4 c sys/src/cmd/mkone - 664 sys sys 1110990445 898
+1110990615 5 a sys/src/libc/port/pool.acid - 664 sys sys 1110989242 12026
+1110992415 0 a sys/lib/kbmap/no - 664 sys sys 1110991440 367
+1110992415 1 a sys/lib/kbmap/ru - 664 sys sys 1110991440 6380
+1110992415 2 a sys/lib/kbmap/ua - 664 sys sys 1110991440 6380
+1111014019 0 c sys/games/lib/fortunes - 664 sys sys 1111012774 253406
+1111033824 0 c 386/bin/replica/applylog - 775 sys sys 1111032635 116663

+ 2 - 2
rc/bin/replica/pull

@@ -21,7 +21,7 @@ n=`{ls -l $clientlog >[2]/dev/null |awk '{print $6}'}
 s=`{ls -l $serverlog >[2]/dev/null |awk '{print $6}'}
 if(~ $n 0 || ~ $#n 0 || test $s -lt $n){
 	if(test -e $clientlog) must rm $clientlog
-	must cp $serverlog $clientlog
+	must fcp $serverlog $clientlog
 }
 if not{
 	m=`{echo $n-1024 | hoc}
@@ -34,7 +34,7 @@ if not{
 		must tail +^$n^c $serverlog >>$clientlog
 	case *': differ'
 		must rm $clientlog
-		must cp $serverlog $clientlog
+		must fcp $serverlog $clientlog
 	case ''
 		;
 	case *

+ 1 - 0
sys/games/lib/fortunes

@@ -4057,3 +4057,4 @@ It's almost as though someone is creating billboards that read, ``If you can#t s
 And, as you read, please forgive the necessary typos - I'm going for rock-solid facts, rather than spelling.
 mp3riot -  Directory search utility
 val.h:152: class `FloatVal' is implicitly friends with itself
+The MOV mnemonic, which stands for `move', is a misnomer.  A copy function is actually performed instead of a move. - AMD64 Architecture Programmer's Manual Volume 1

+ 3 - 3
sys/lib/acid/leak

@@ -34,7 +34,7 @@ dumparena(arena)
 		if nb > atail then {
 			b = (Bhdr)(b+4);
 			print("lost at block ", (b-4)\X, ", scanning forward\n");
-			while b < atail && b.magic != KEMPT_MAGIC && b.magic != FREE_MAGIC do
+			while b < atail && b.magic != ALLOC_MAGIC && b.magic != FREE_MAGIC do
 				b = (Bhdr)(b+4);
 			print("stopped at ", b\X, " ", *b\X, "\n");
 		}else
@@ -59,14 +59,14 @@ dumpblock(addr)
 {
 	complex Bhdr addr;
 
-	if addr.magic == KEMPT_MAGIC || addr.magic == FREE_MAGIC then {
+	if addr.magic == ALLOC_MAGIC || addr.magic == FREE_MAGIC then {
 		local a, x, s;
 
 		a = addr;
 		complex Alloc a;
 
 		x = addr+8;
-		if addr.magic == KEMPT_MAGIC then
+		if addr.magic == ALLOC_MAGIC then
 			s = "block";
 		else
 			s = "free";

+ 46 - 0
sys/lib/kbmap/no

@@ -0,0 +1,46 @@
+0 12 '+
+0 13 '\
+0 26 'å
+0 27 '¨
+0 39 'ø
+0 40 'æ
+0 41 '|
+0 43 ''
+0 51 ',
+0 52 '.
+0 53 '-
+0 86 '<
+1 2 '!
+1 3 '"
+1 4 '#
+1 5 '$
+1 6 '%
+1 7 '&
+1 8 '/
+1 9 '(
+1 10 ')
+1 11 '=
+1 12 '?
+1 13 '`
+1 26 'Å
+1 27 '^
+1 39 'Ø
+1 40 'Æ
+1 41 '§
+1 43 '*
+1 51 ';
+1 52 ':
+1 53 '_
+1 86 '>
+3 3 '@
+3 4 '£
+3 5 '$
+3 8 '{
+3 9 '[
+3 10 ']
+3 11 '}
+3 12 '\
+3 18 '€
+3 27 '~
+3 46 '¢
+3 52 '|

+ 640 - 0
sys/lib/kbmap/ru

@@ -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	0x2d
+0	13	0x3d
+0	14	0x8
+0	15	0x9
+0	16	0x0439
+0	17	0x0446
+0	18	0x0443
+0	19	0x043a
+0	20	0x0435
+0	21	0x043d
+0	22	0x0433
+0	23	0x0448
+0	24	0x0449
+0	25	0x0437
+0	26	0x0445
+0	27	0x044a
+0	28	0xa
+0	29	0xf862
+0	30	0x0444
+0	31	0x044b
+0	32	0x0432
+0	33	0x0430
+0	34	0x043f
+0	35	0x0440
+0	36	0x043e
+0	37	0x043b
+0	38	0x0434
+0	39	0x0436
+0	40	0x044d
+0	41	0x0451
+0	42	0xf860
+0	43	0x5c
+0	44	0x044f
+0	45	0x0447
+0	46	0x0441
+0	47	0x043c
+0	48	0x0438
+0	49	0x0442
+0	50	0x044c
+0	51	0x0431
+0	52	0x044e
+0	53	0x2e
+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	0x0
+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	0x23
+1	5	0x3b
+1	6	0x25
+1	7	0x3a
+1	8	0x3f
+1	9	0x2a
+1	10	0x28
+1	11	0x29
+1	12	0x5f
+1	13	0x2b
+1	14	0x8
+1	15	0x9
+1	16	0x0419
+1	17	0x0426
+1	18	0x0423
+1	19	0x041a
+1	20	0x0415
+1	21	0x041d
+1	22	0x0413
+1	23	0x0428
+1	24	0x0429
+1	25	0x0417
+1	26	0x0425
+1	27	0x042a
+1	28	0xa
+1	29	0xf862
+1	30	0x0424
+1	31	0x042b
+1	32	0x0412
+1	33	0x0410
+1	34	0x041f
+1	35	0x0420
+1	36	0x041e
+1	37	0x041b
+1	38	0x0414
+1	39	0x0416
+1	40	0x042d
+1	41	0x0401
+1	42	0xf860
+1	43	0x7c
+1	44	0x042f
+1	45	0x0427
+1	46	0x0421
+1	47	0x041c
+1	48	0x0418
+1	49	0x0422
+1	50	0x044c
+1	51	0x0411
+1	52	0x042e
+1	53	0x2c
+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	0x0
+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	0x0
+3	4	0x0
+3	5	0x0
+3	6	0x0
+3	7	0x0
+3	8	0x0
+3	9	0x0
+3	10	0x0
+3	11	0x0
+3	12	0x0
+3	13	0x0
+3	14	0x0
+3	15	0x0
+3	16	0x0
+3	17	0x0
+3	18	0x0
+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	0x0
+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	0x0
+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	0x0
+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

+ 640 - 0
sys/lib/kbmap/ua

@@ -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	0x2d
+0	13	0x3d
+0	14	0x8
+0	15	0x9
+0	16	0x0439
+0	17	0x0446
+0	18	0x0443
+0	19	0x043a
+0	20	0x0435
+0	21	0x043d
+0	22	0x0433
+0	23	0x0448
+0	24	0x0449
+0	25	0x0437
+0	26	0x0445
+0	27	0x0457
+0	28	0xa
+0	29	0xf862
+0	30	0x0444
+0	31	0x0456
+0	32	0x0432
+0	33	0x0430
+0	34	0x043f
+0	35	0x0440
+0	36	0x043e
+0	37	0x043b
+0	38	0x0434
+0	39	0x0436
+0	40	0x0454
+0	41	0x0491
+0	42	0xf860
+0	43	0x5c
+0	44	0x044f
+0	45	0x0447
+0	46	0x0441
+0	47	0x043c
+0	48	0x0438
+0	49	0x0442
+0	50	0x044c
+0	51	0x0431
+0	52	0x044e
+0	53	0x2e
+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	0x0
+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	0x23
+1	5	0x3b
+1	6	0x25
+1	7	0x3a
+1	8	0x3f
+1	9	0x2a
+1	10	0x28
+1	11	0x29
+1	12	0x5f
+1	13	0x2b
+1	14	0x8
+1	15	0x9
+1	16	0x0419
+1	17	0x0426
+1	18	0x0423
+1	19	0x041a
+1	20	0x0415
+1	21	0x041d
+1	22	0x0413
+1	23	0x0428
+1	24	0x0429
+1	25	0x0417
+1	26	0x0425
+1	27	0x0407
+1	28	0xa
+1	29	0xf862
+1	30	0x0424
+1	31	0x0406
+1	32	0x0412
+1	33	0x0410
+1	34	0x041f
+1	35	0x0420
+1	36	0x041e
+1	37	0x041b
+1	38	0x0414
+1	39	0x0416
+1	40	0x0404
+1	41	0x0490
+1	42	0xf860
+1	43	0x7c
+1	44	0x042f
+1	45	0x0427
+1	46	0x0421
+1	47	0x041c
+1	48	0x0418
+1	49	0x0422
+1	50	0x044c
+1	51	0x0411
+1	52	0x042e
+1	53	0x2c
+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	0x0
+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	0x0
+3	4	0x0
+3	5	0x0
+3	6	0x0
+3	7	0x0
+3	8	0x0
+3	9	0x0
+3	10	0x0
+3	11	0x0
+3	12	0x0
+3	13	0x0
+3	14	0x0
+3	15	0x0
+3	16	0x0
+3	17	0x0
+3	18	0x0
+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	0x0
+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	0x0
+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	0x0
+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

+ 6 - 0
sys/src/cmd/mkmany

@@ -1,4 +1,5 @@
 PROGS=${TARG:%=$O.%}
+MANFILES=${TARG:%=%.man}
 LDFLAGS=
 YFLAGS=-d
 
@@ -69,3 +70,8 @@ clean:V:
 
 %.acid: %.$O $HFILES
 	$CC $CFLAGS -a $stem.c >$target
+
+%.man:	$MAN/$stem
+	cp $stem.man $MAN/$stem
+
+man:V:	$MANFILES

+ 6 - 0
sys/src/cmd/mkone

@@ -52,3 +52,9 @@ safeinstallall:V:
 
 %.acid: %.$O $HFILES
 	$CC $CFLAGS -a $stem.c >$target
+
+%.man:	$MAN/$stem
+	cp $stem.man $MAN/$stem
+
+man:V:	$TARG.man
+

+ 90 - 19
sys/src/cmd/replica/applylog.c

@@ -1,11 +1,20 @@
 #include "all.h"
 
+#define	Nwork	16
+
 int localdirstat(char*, Dir*);
 int ismatch(char*);
 void conflict(char*, char*, ...);
 void error(char*, ...);
 int isdir(char*);
 
+void worker(int fdf, int fdt, char *from, char *to);
+vlong	nextoff(void);
+void	failure(void *, char *note);
+
+QLock	lk;
+vlong	off;
+
 int errors;
 int nconf;
 int donothing;
@@ -615,33 +624,95 @@ enum { DEFB = 8192 };
 static int
 copy1(int fdf, int fdt, char *from, char *to)
 {
-	char buf[DEFB];
-	long n, n1, rcount;
-	int rv;
-	char err[ERRMAX];
-
-	/* clear any residual error */
-	err[0] = '\0';
-	errstr(err, ERRMAX);
-	rv = 0;
-	for(rcount=0;; rcount++) {
-		n = read(fdf, buf, DEFB);
-		if(n <= 0)
+	int i, n, rv, pid[Nwork];
+	Waitmsg *w;
+
+	n = 0;
+	off = 0;
+	for(i=0; i<Nwork; i++){
+		switch(pid[n] = rfork(RFPROC|RFMEM)){
+		case 0:
+			notify(failure);
+			worker(fdf, fdt, from, to);
+		case -1:
 			break;
-		n1 = write(fdt, buf, n);
-		if(n1 != n) {
-			fprint(2, "error writing %q: %r\n", to);
-			rv = -1;
+		default:
+			n++;
 			break;
 		}
 	}
-	if(n < 0) {
-		fprint(2, "error reading %q: %r\n", from);
-		rv = -1;
+	if(n == 0){
+		fprint(2, "cp: rfork: %r\n");
+		return -1;
+	}
+
+	rv = 0;
+	while((w = wait()) != nil){
+		if(w->msg[0]){
+			rv = -1;
+			for(i=0; i<n; i++)
+				if(pid[i] > 0)
+					postnote(PNPROC, pid[i], "failure");
+		}
+		free(w);
 	}
 	return rv;
 }
 
+void
+worker(int fdf, int fdt, char *from, char *to)
+{
+	char buf[DEFB], *bp;
+	long len, n;
+	vlong o;
+
+	len = sizeof(buf);
+	bp = buf;
+	o = nextoff();
+
+	while(n = pread(fdf, bp, len, o)){
+		if(n < 0){
+			fprint(2, "reading %s: %r\n", from);
+			_exits("bad");
+		}
+		if(pwrite(fdt, buf, n, o) != n){
+			fprint(2, "writing %s: %r\n", to);
+			_exits("bad");
+		}
+		bp += n;
+		o += n;
+		len -= n;
+		if(len == 0){
+			len = sizeof buf;
+			bp = buf;
+			o = nextoff();
+		}
+	}
+	_exits(nil);
+}
+
+vlong
+nextoff(void)
+{
+	vlong o;
+
+	qlock(&lk);
+	o = off;
+	off += DEFB;
+	qunlock(&lk);
+
+	return o;
+}
+
+void
+failure(void*, char *note)
+{
+	if(strcmp(note, "failure") == 0)
+		_exits(nil);
+	noted(NDFLT);
+}
+
+
 static int
 opentemp(char *template)
 {

+ 628 - 0
sys/src/libc/port/pool.acid

@@ -0,0 +1,628 @@
+sizeof_1_ = 8;
+aggr _1_
+{
+	'U' 0 lo;
+	'U' 4 hi;
+};
+
+defn
+_1_(addr) {
+	complex _1_ addr;
+	print("	lo	", addr.lo, "\n");
+	print("	hi	", addr.hi, "\n");
+};
+
+sizeofFPdbleword = 8;
+aggr FPdbleword
+{
+	'F' 0 x;
+	{
+	'U' 0 lo;
+	'U' 4 hi;
+	};
+};
+
+defn
+FPdbleword(addr) {
+	complex FPdbleword addr;
+	print("	x	", addr.x, "\n");
+	print("_1_ {\n");
+		_1_(addr+0);
+	print("}\n");
+};
+
+UTFmax = 3;
+Runesync = 128;
+Runeself = 128;
+Runeerror = 128;
+sizeofFmt = 48;
+aggr Fmt
+{
+	'b' 0 runes;
+	'X' 4 start;
+	'X' 8 to;
+	'X' 12 stop;
+	'X' 16 flush;
+	'X' 20 farg;
+	'D' 24 nfmt;
+	'X' 28 args;
+	'D' 32 r;
+	'D' 36 width;
+	'D' 40 prec;
+	'U' 44 flags;
+};
+
+defn
+Fmt(addr) {
+	complex Fmt addr;
+	print("	runes	", addr.runes, "\n");
+	print("	start	", addr.start\X, "\n");
+	print("	to	", addr.to\X, "\n");
+	print("	stop	", addr.stop\X, "\n");
+	print("	flush	", addr.flush\X, "\n");
+	print("	farg	", addr.farg\X, "\n");
+	print("	nfmt	", addr.nfmt, "\n");
+	print("	args	", addr.args\X, "\n");
+	print("	r	", addr.r, "\n");
+	print("	width	", addr.width, "\n");
+	print("	prec	", addr.prec, "\n");
+	print("	flags	", addr.flags, "\n");
+};
+
+FmtWidth = 1;
+FmtLeft = 2;
+FmtPrec = 4;
+FmtSharp = 8;
+FmtSpace = 16;
+FmtSign = 32;
+FmtZero = 64;
+FmtUnsigned = 128;
+FmtShort = 256;
+FmtLong = 512;
+FmtVLong = 1024;
+FmtComma = 2048;
+FmtByte = 4096;
+FmtFlag = 8192;
+sizeofTm = 40;
+aggr Tm
+{
+	'D' 0 sec;
+	'D' 4 min;
+	'D' 8 hour;
+	'D' 12 mday;
+	'D' 16 mon;
+	'D' 20 year;
+	'D' 24 wday;
+	'D' 28 yday;
+	'a' 32 zone;
+	'D' 36 tzoff;
+};
+
+defn
+Tm(addr) {
+	complex Tm addr;
+	print("	sec	", addr.sec, "\n");
+	print("	min	", addr.min, "\n");
+	print("	hour	", addr.hour, "\n");
+	print("	mday	", addr.mday, "\n");
+	print("	mon	", addr.mon, "\n");
+	print("	year	", addr.year, "\n");
+	print("	wday	", addr.wday, "\n");
+	print("	yday	", addr.yday, "\n");
+	print("	zone	", addr.zone, "\n");
+	print("	tzoff	", addr.tzoff, "\n");
+};
+
+PNPROC = 1;
+PNGROUP = 2;
+Profoff = 0;
+Profuser = 1;
+Profkernel = 2;
+Proftime = 3;
+Profsample = 4;
+sizeofLock = 4;
+aggr Lock
+{
+	'D' 0 val;
+};
+
+defn
+Lock(addr) {
+	complex Lock addr;
+	print("	val	", addr.val, "\n");
+};
+
+sizeofQLp = 12;
+aggr QLp
+{
+	'D' 0 inuse;
+	'A' QLp 4 next;
+	'C' 8 state;
+};
+
+defn
+QLp(addr) {
+	complex QLp addr;
+	print("	inuse	", addr.inuse, "\n");
+	print("	next	", addr.next\X, "\n");
+	print("	state	", addr.state, "\n");
+};
+
+sizeofQLock = 16;
+aggr QLock
+{
+	Lock 0 lock;
+	'D' 4 locked;
+	'A' QLp 8 $head;
+	'A' QLp 12 $tail;
+};
+
+defn
+QLock(addr) {
+	complex QLock addr;
+	print("Lock lock {\n");
+	Lock(addr.lock);
+	print("}\n");
+	print("	locked	", addr.locked, "\n");
+	print("	$head	", addr.$head\X, "\n");
+	print("	$tail	", addr.$tail\X, "\n");
+};
+
+sizeofRWLock = 20;
+aggr RWLock
+{
+	Lock 0 lock;
+	'D' 4 readers;
+	'D' 8 writer;
+	'A' QLp 12 $head;
+	'A' QLp 16 $tail;
+};
+
+defn
+RWLock(addr) {
+	complex RWLock addr;
+	print("Lock lock {\n");
+	Lock(addr.lock);
+	print("}\n");
+	print("	readers	", addr.readers, "\n");
+	print("	writer	", addr.writer, "\n");
+	print("	$head	", addr.$head\X, "\n");
+	print("	$tail	", addr.$tail\X, "\n");
+};
+
+sizeofRendez = 12;
+aggr Rendez
+{
+	'A' QLock 0 l;
+	'A' QLp 4 $head;
+	'A' QLp 8 $tail;
+};
+
+defn
+Rendez(addr) {
+	complex Rendez addr;
+	print("	l	", addr.l\X, "\n");
+	print("	$head	", addr.$head\X, "\n");
+	print("	$tail	", addr.$tail\X, "\n");
+};
+
+sizeofNetConnInfo = 36;
+aggr NetConnInfo
+{
+	'X' 0 dir;
+	'X' 4 root;
+	'X' 8 spec;
+	'X' 12 lsys;
+	'X' 16 lserv;
+	'X' 20 rsys;
+	'X' 24 rserv;
+	'X' 28 laddr;
+	'X' 32 raddr;
+};
+
+defn
+NetConnInfo(addr) {
+	complex NetConnInfo addr;
+	print("	dir	", addr.dir\X, "\n");
+	print("	root	", addr.root\X, "\n");
+	print("	spec	", addr.spec\X, "\n");
+	print("	lsys	", addr.lsys\X, "\n");
+	print("	lserv	", addr.lserv\X, "\n");
+	print("	rsys	", addr.rsys\X, "\n");
+	print("	rserv	", addr.rserv\X, "\n");
+	print("	laddr	", addr.laddr\X, "\n");
+	print("	raddr	", addr.raddr\X, "\n");
+};
+
+RFNAMEG = 1;
+RFENVG = 2;
+RFFDG = 4;
+RFNOTEG = 8;
+RFPROC = 16;
+RFMEM = 32;
+RFNOWAIT = 64;
+RFCNAMEG = 1024;
+RFCENVG = 2048;
+RFCFDG = 4096;
+RFREND = 8192;
+RFNOMNT = 16384;
+sizeofQid = 16;
+aggr Qid
+{
+	'W' 0 path;
+	'U' 8 vers;
+	'b' 12 type;
+};
+
+defn
+Qid(addr) {
+	complex Qid addr;
+	print("	path	", addr.path, "\n");
+	print("	vers	", addr.vers, "\n");
+	print("	type	", addr.type, "\n");
+};
+
+sizeofDir = 60;
+aggr Dir
+{
+	'u' 0 type;
+	'U' 4 dev;
+	Qid 8 qid;
+	'U' 24 mode;
+	'U' 28 atime;
+	'U' 32 mtime;
+	'V' 36 length;
+	'X' 44 name;
+	'X' 48 uid;
+	'X' 52 gid;
+	'X' 56 muid;
+};
+
+defn
+Dir(addr) {
+	complex Dir addr;
+	print("	type	", addr.type, "\n");
+	print("	dev	", addr.dev, "\n");
+	print("Qid qid {\n");
+	Qid(addr.qid);
+	print("}\n");
+	print("	mode	", addr.mode, "\n");
+	print("	atime	", addr.atime, "\n");
+	print("	mtime	", addr.mtime, "\n");
+	print("	length	", addr.length, "\n");
+	print("	name	", addr.name\X, "\n");
+	print("	uid	", addr.uid\X, "\n");
+	print("	gid	", addr.gid\X, "\n");
+	print("	muid	", addr.muid\X, "\n");
+};
+
+sizeofWaitmsg = 20;
+aggr Waitmsg
+{
+	'D' 0 pid;
+	'a' 4 time;
+	'X' 16 msg;
+};
+
+defn
+Waitmsg(addr) {
+	complex Waitmsg addr;
+	print("	pid	", addr.pid, "\n");
+	print("	time	", addr.time, "\n");
+	print("	msg	", addr.msg\X, "\n");
+};
+
+sizeofIOchunk = 8;
+aggr IOchunk
+{
+	'X' 0 addr;
+	'U' 4 len;
+};
+
+defn
+IOchunk(addr) {
+	complex IOchunk addr;
+	print("	addr	", addr.addr\X, "\n");
+	print("	len	", addr.len, "\n");
+};
+
+sizeofPool = 88;
+aggr Pool
+{
+	'X' 0 name;
+	'U' 4 maxsize;
+	'U' 8 cursize;
+	'U' 12 curfree;
+	'U' 16 curalloc;
+	'U' 20 minarena;
+	'U' 24 quantum;
+	'U' 28 minblock;
+	'X' 32 freeroot;
+	'X' 36 arenalist;
+	'X' 40 alloc;
+	'X' 44 merge;
+	'X' 48 move;
+	'D' 52 flags;
+	'D' 56 nfree;
+	'D' 60 lastcompact;
+	'X' 64 lock;
+	'X' 68 unlock;
+	'X' 72 print;
+	'X' 76 panic;
+	'X' 80 logstack;
+	'X' 84 private;
+};
+
+defn
+Pool(addr) {
+	complex Pool addr;
+	print("	name	", addr.name\X, "\n");
+	print("	maxsize	", addr.maxsize, "\n");
+	print("	cursize	", addr.cursize, "\n");
+	print("	curfree	", addr.curfree, "\n");
+	print("	curalloc	", addr.curalloc, "\n");
+	print("	minarena	", addr.minarena, "\n");
+	print("	quantum	", addr.quantum, "\n");
+	print("	minblock	", addr.minblock, "\n");
+	print("	freeroot	", addr.freeroot\X, "\n");
+	print("	arenalist	", addr.arenalist\X, "\n");
+	print("	alloc	", addr.alloc\X, "\n");
+	print("	merge	", addr.merge\X, "\n");
+	print("	move	", addr.move\X, "\n");
+	print("	flags	", addr.flags, "\n");
+	print("	nfree	", addr.nfree, "\n");
+	print("	lastcompact	", addr.lastcompact, "\n");
+	print("	lock	", addr.lock\X, "\n");
+	print("	unlock	", addr.unlock\X, "\n");
+	print("	print	", addr.print\X, "\n");
+	print("	panic	", addr.panic\X, "\n");
+	print("	logstack	", addr.logstack\X, "\n");
+	print("	private	", addr.private\X, "\n");
+};
+
+complex Pool mainmem;
+complex Pool imagmem;
+POOL_ANTAGONISM = 1;
+POOL_PARANOIA = 2;
+POOL_VERBOSITY = 4;
+POOL_DEBUGGING = 8;
+POOL_LOGGING = 16;
+POOL_TOLERANCE = 32;
+POOL_NOREUSE = 64;
+sizeofBhdr = 8;
+aggr Bhdr
+{
+	'U' 0 magic;
+	'U' 4 size;
+};
+
+defn
+Bhdr(addr) {
+	complex Bhdr addr;
+	print("	magic	", addr.magic, "\n");
+	print("	size	", addr.size, "\n");
+};
+
+NOT_MAGIC = 3735943697;
+DEAD_MAGIC = 3735936685;
+TAIL_MAGIC0 = 190;
+TAIL_MAGIC1 = 239;
+sizeofBtail = 8;
+aggr Btail
+{
+	'b' 0 magic0;
+	'a' 1 datasize;
+	'b' 3 magic1;
+	'U' 4 size;
+};
+
+defn
+Btail(addr) {
+	complex Btail addr;
+	print("	magic0	", addr.magic0, "\n");
+	print("	datasize	", addr.datasize, "\n");
+	print("	magic1	", addr.magic1, "\n");
+	print("	size	", addr.size, "\n");
+};
+
+sizeofFree = 24;
+aggr Free
+{
+	{
+	'U' 0 magic;
+	'U' 4 size;
+	};
+	'A' Free 8 left;
+	'A' Free 12 right;
+	'A' Free 16 next;
+	'A' Free 20 prev;
+};
+
+defn
+Free(addr) {
+	complex Free addr;
+	print("Bhdr {\n");
+		Bhdr(addr+0);
+	print("}\n");
+	print("	left	", addr.left\X, "\n");
+	print("	right	", addr.right\X, "\n");
+	print("	next	", addr.next\X, "\n");
+	print("	prev	", addr.prev\X, "\n");
+};
+
+FREE_MAGIC = 3126770193;
+sizeofAlloc = 8;
+aggr Alloc
+{
+	{
+	'U' 0 magic;
+	'U' 4 size;
+	};
+};
+
+defn
+Alloc(addr) {
+	complex Alloc addr;
+	print("Bhdr {\n");
+		Bhdr(addr+0);
+	print("}\n");
+};
+
+ALLOC_MAGIC = 168889353;
+UNALLOC_MAGIC = 3400535327;
+sizeofArena = 24;
+aggr Arena
+{
+	{
+	'U' 0 magic;
+	'U' 4 size;
+	};
+	'A' Arena 8 aup;
+	'A' Arena 12 down;
+	'U' 16 asize;
+	'U' 20 pad;
+};
+
+defn
+Arena(addr) {
+	complex Arena addr;
+	print("Bhdr {\n");
+		Bhdr(addr+0);
+	print("}\n");
+	print("	aup	", addr.aup\X, "\n");
+	print("	down	", addr.down\X, "\n");
+	print("	asize	", addr.asize, "\n");
+	print("	pad	", addr.pad, "\n");
+};
+
+ARENA_MAGIC = 3231835599;
+ARENATAIL_MAGIC = 3965590029;
+ALIGN_MAGIC = 2716979649;
+MINBLOCKSIZE = 32;
+complex Free checklist:t;
+complex Free checklist:q;
+complex Free checktree:t;
+complex Free ltreewalk:t;
+complex Free treelookup:t;
+complex Free treeinsert:tree;
+complex Free treeinsert:node;
+complex Free treeinsert:loc;
+complex Free treeinsert:repl;
+complex Free treedelete:tree;
+complex Free treedelete:node;
+complex Free treedelete:loc;
+complex Free treedelete:lsucc;
+complex Free treedelete:succ;
+complex Free treelookupgt:t;
+complex Free treelookupgt:lastgood;
+complex Free listadd:list;
+complex Free listadd:node;
+complex Free listdelete:list;
+complex Free listdelete:node;
+complex Pool pooladd:p;
+complex Alloc pooladd:anode;
+complex Free pooladd:lst;
+complex Free pooladd:olst;
+complex Free pooladd:node;
+complex Free pooladd:parent;
+complex Pool pooldel:p;
+complex Free pooldel:node;
+complex Free pooldel:lst;
+complex Free pooldel:olst;
+complex Free pooldel:parent;
+complex Pool dsize2bsize:p;
+complex Pool bsize2asize:p;
+complex Pool blockmerge:pool;
+complex Bhdr blockmerge:a;
+complex Bhdr blockmerge:b;
+complex Btail blockmerge:t;
+complex Bhdr blocksetsize:b;
+complex Btail blocksetsize:t;
+complex Alloc getdsize:b;
+complex Btail getdsize:t;
+complex Pool blocksetdsize:p;
+complex Alloc blocksetdsize:b;
+complex Btail blocksetdsize:t;
+complex Pool trim:p;
+complex Alloc trim:b;
+complex Alloc trim:frag;
+complex Pool freefromfront:p;
+complex Alloc freefromfront:b;
+complex Alloc freefromfront:bb;
+complex Arena arenasetsize:a;
+complex Bhdr arenasetsize:atail;
+complex Pool poolnewarena:p;
+complex Arena poolnewarena:a;
+complex Arena poolnewarena:ap;
+complex Arena poolnewarena:lastap;
+complex Alloc poolnewarena:b;
+complex Pool blockgrow:p;
+complex Bhdr blockgrow:b;
+complex Alloc blockgrow:a;
+complex Bhdr blockgrow:bnxt;
+complex Alloc blockgrow:a;
+complex Pool arenamerge:p;
+complex Arena arenamerge:bot;
+complex Arena arenamerge:top;
+complex Bhdr arenamerge:bbot;
+complex Bhdr arenamerge:btop;
+complex Btail arenamerge:t;
+complex Pool dumpblock:p;
+complex Bhdr dumpblock:b;
+complex Pool printblock:p;
+complex Bhdr printblock:b;
+complex Pool panicblock:p;
+complex Bhdr panicblock:b;
+complex Pool blockcheck:p;
+complex Bhdr blockcheck:b;
+complex Alloc blockcheck:a;
+complex Btail blockcheck:t;
+FLOATING_MAGIC = 3419130827;
+complex Pool arenacompact:p;
+complex Arena arenacompact:a;
+complex Bhdr arenacompact:b;
+complex Bhdr arenacompact:wb;
+complex Bhdr arenacompact:eb;
+complex Bhdr arenacompact:nxt;
+complex Pool poolcompactl:pool;
+complex Arena poolcompactl:a;
+complex Pool B2D:p;
+complex Alloc B2D:a;
+complex Pool D2B:p;
+complex Alloc D2B:a;
+complex Pool poolallocl:p;
+complex Free poolallocl:fb;
+complex Alloc poolallocl:ab;
+complex Pool poolreallocl:p;
+complex Alloc poolreallocl:a;
+complex Bhdr poolreallocl:left;
+complex Bhdr poolreallocl:right;
+complex Bhdr poolreallocl:newb;
+complex Btail poolreallocl:t;
+complex Pool poolallocalignl:p;
+complex Alloc poolallocalignl:b;
+complex Pool poolfreel:p;
+complex Alloc poolfreel:ab;
+complex Bhdr poolfreel:back;
+complex Bhdr poolfreel:fwd;
+complex Pool poolalloc:p;
+complex Pool poolallocalign:p;
+complex Pool poolcompact:p;
+complex Pool poolrealloc:p;
+complex Pool poolfree:p;
+complex Pool poolmsize:p;
+complex Alloc poolmsize:b;
+complex Pool poolcheckarena:p;
+complex Arena poolcheckarena:a;
+complex Bhdr poolcheckarena:b;
+complex Bhdr poolcheckarena:atail;
+complex Pool poolcheckl:p;
+complex Arena poolcheckl:a;
+complex Pool poolcheck:p;
+complex Pool poolblockcheck:p;
+complex Pool pooldumpl:p;
+complex Arena pooldumpl:a;
+complex Pool pooldump:p;
+complex Pool pooldumparena:p;
+complex Arena pooldumparena:a;
+complex Bhdr pooldumparena:b;