Browse Source

Plan 9 from Bell Labs 2003-09-19

David du Colombier 20 years ago
parent
commit
2d4f830104

+ 79 - 73
dist/replica/plan9.db

@@ -2926,7 +2926,7 @@ rc/bin/9fs - 775 sys sys 1042305252 869
 rc/bin/B - 775 sys sys 945617206 645
 rc/bin/B - 775 sys sys 945617206 645
 rc/bin/C - 775 sys sys 1045493437 788
 rc/bin/C - 775 sys sys 1045493437 788
 rc/bin/Kill - 775 sys sys 1018637942 115
 rc/bin/Kill - 775 sys sys 1018637942 115
-rc/bin/a: - 775 sys sys 1015089505 204
+rc/bin/a: - 775 sys sys 1063856406 255
 rc/bin/ape - 20000000775 sys sys 954039414 0
 rc/bin/ape - 20000000775 sys sys 954039414 0
 rc/bin/ape/ar89 - 775 sys sys 945617285 308
 rc/bin/ape/ar89 - 775 sys sys 945617285 308
 rc/bin/ape/c89 - 775 sys sys 945617285 39
 rc/bin/ape/c89 - 775 sys sys 945617285 39
@@ -3136,7 +3136,7 @@ sys/doc/contents.ms - 664 sys sys 1019916701 4920
 sys/doc/contents.ps - 664 sys sys 1019916845 232629
 sys/doc/contents.ps - 664 sys sys 1019916845 232629
 sys/doc/docfonts - 664 sys sys 1038117516 208
 sys/doc/docfonts - 664 sys sys 1038117516 208
 sys/doc/fonts - 664 sys sys 944959649 137
 sys/doc/fonts - 664 sys sys 944959649 137
-sys/doc/fossil.ms - 664 sys sys 1050623502 31400
+sys/doc/fossil.ms - 664 sys sys 1063856349 31400
 sys/doc/fossil.pdf - 664 sys sys 1042123169 63200
 sys/doc/fossil.pdf - 664 sys sys 1042123169 63200
 sys/doc/fossil.ps - 664 sys sys 1042123131 313750
 sys/doc/fossil.ps - 664 sys sys 1042123131 313750
 sys/doc/fs - 20000000775 sys sys 945616779 0
 sys/doc/fs - 20000000775 sys sys 945616779 0
@@ -3208,13 +3208,13 @@ sys/doc/prog4.ms - 664 sys sys 1019932830 16485
 sys/doc/prog4.ps - 664 sys sys 1019932831 271581
 sys/doc/prog4.ps - 664 sys sys 1019932831 271581
 sys/doc/ps - 664 sys sys 944959649 1739
 sys/doc/ps - 664 sys sys 944959649 1739
 sys/doc/rc.html - 664 sys sys 1019922810 39710
 sys/doc/rc.html - 664 sys sys 1019922810 39710
-sys/doc/rc.ms - 664 sys sys 953237029 34368
+sys/doc/rc.ms - 664 sys sys 1063856321 34373
 sys/doc/rc.ps - 664 sys sys 960837920 337955
 sys/doc/rc.ps - 664 sys sys 960837920 337955
 sys/doc/release3.html - 664 sys sys 1019922810 6329
 sys/doc/release3.html - 664 sys sys 1019922810 6329
 sys/doc/release3.ms - 664 sys sys 961261276 5492
 sys/doc/release3.ms - 664 sys sys 961261276 5492
 sys/doc/release3.ps - 664 sys sys 961261277 230682
 sys/doc/release3.ps - 664 sys sys 961261277 230682
 sys/doc/release4.html - 664 sys sys 1019922810 5869
 sys/doc/release4.html - 664 sys sys 1019922810 5869
-sys/doc/release4.ms - 664 sys sys 1020100479 5056
+sys/doc/release4.ms - 664 sys sys 1063856338 5160
 sys/doc/release4.ps - 664 sys sys 1020100480 230580
 sys/doc/release4.ps - 664 sys sys 1020100480 230580
 sys/doc/sam - 20000000775 sys sys 945617037 0
 sys/doc/sam - 20000000775 sys sys 945617037 0
 sys/doc/sam/fig1.bm - 464 sys sys 944959645 42200
 sys/doc/sam/fig1.bm - 464 sys sys 944959645 42200
@@ -3267,7 +3267,7 @@ sys/doc/venti/venti.pdf - 755 sys sys 1020384352 139090
 sys/doc/venti/venti.ps - 664 sys sys 1019852320 2012620
 sys/doc/venti/venti.ps - 664 sys sys 1019852320 2012620
 sys/games - 20000000775 sys sys 952648872 0
 sys/games - 20000000775 sys sys 952648872 0
 sys/games/lib - 20000000775 sys sys 952648879 0
 sys/games/lib - 20000000775 sys sys 952648879 0
-sys/games/lib/fortunes - 664 sys sys 1063072455 244492
+sys/games/lib/fortunes - 664 sys sys 1063856231 244987
 sys/include - 20000000775 sys sys 1016902416 0
 sys/include - 20000000775 sys sys 1016902416 0
 sys/include/9p.h - 664 sys sys 1044836327 4309
 sys/include/9p.h - 664 sys sys 1044836327 4309
 sys/include/String.h - 664 sys sys 1055701304 1291
 sys/include/String.h - 664 sys sys 1055701304 1291
@@ -3375,16 +3375,16 @@ sys/lib/acid/alef - 664 sys sys 944955985 2293
 sys/lib/acid/alpha - 664 sys sys 944955985 4849
 sys/lib/acid/alpha - 664 sys sys 944955985 4849
 sys/lib/acid/arm - 664 sys sys 984696197 1842
 sys/lib/acid/arm - 664 sys sys 984696197 1842
 sys/lib/acid/coverage - 664 sys sys 944955985 1746
 sys/lib/acid/coverage - 664 sys sys 944955985 1746
-sys/lib/acid/kernel - 664 sys sys 1020313817 4737
+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 1048637057 2185
 sys/lib/acid/mips - 664 sys sys 944955985 5472
 sys/lib/acid/mips - 664 sys sys 944955985 5472
 sys/lib/acid/network - 664 sys sys 1020313817 2499
 sys/lib/acid/network - 664 sys sys 1020313817 2499
-sys/lib/acid/pool - 664 sys sys 1016833869 4244
+sys/lib/acid/pool - 664 sys sys 1063858105 4898
 sys/lib/acid/port - 664 sys sys 1049580489 8902
 sys/lib/acid/port - 664 sys sys 1049580489 8902
 sys/lib/acid/power - 664 sys sys 969499633 3058
 sys/lib/acid/power - 664 sys sys 969499633 3058
 sys/lib/acid/sparc - 664 sys sys 944955986 5339
 sys/lib/acid/sparc - 664 sys sys 944955986 5339
 sys/lib/acid/syscall - 664 sys sys 1016926088 5353
 sys/lib/acid/syscall - 664 sys sys 1016926088 5353
-sys/lib/acid/thread - 664 sys sys 1046363154 5848
+sys/lib/acid/thread - 664 sys sys 1063858106 5979
 sys/lib/acid/transcript - 775 sys sys 954614670 752
 sys/lib/acid/transcript - 775 sys sys 954614670 752
 sys/lib/acid/trump - 664 sys sys 1014924361 3177
 sys/lib/acid/trump - 664 sys sys 1014924361 3177
 sys/lib/acid/truss - 664 sys sys 1036381004 5271
 sys/lib/acid/truss - 664 sys sys 1036381004 5271
@@ -3402,7 +3402,7 @@ sys/lib/dist/bin/386 - 20000000775 sys sys 1018720418 0
 sys/lib/dist/cdstub - 20000000555 sys sys 1018640690 0
 sys/lib/dist/cdstub - 20000000555 sys sys 1018640690 0
 sys/lib/dist/cdstub/bootdisk.img - 664 sys sys 1019324215 0
 sys/lib/dist/cdstub/bootdisk.img - 664 sys sys 1019324215 0
 sys/lib/dist/cmd - 20000000775 sys sys 1018641008 0
 sys/lib/dist/cmd - 20000000775 sys sys 1018641008 0
-sys/lib/dist/cmd/bargraph.c - 664 sys sys 1018469727 5287
+sys/lib/dist/cmd/bargraph.c - 664 sys sys 1063858117 5849
 sys/lib/dist/cmd/bflz.c - 664 sys sys 1033073375 6115
 sys/lib/dist/cmd/bflz.c - 664 sys sys 1033073375 6115
 sys/lib/dist/cmd/bzfs - 20000000775 sys sys 1018641007 0
 sys/lib/dist/cmd/bzfs - 20000000775 sys sys 1018641007 0
 sys/lib/dist/cmd/bzfs/bzfs.h - 664 sys sys 1018469727 223
 sys/lib/dist/cmd/bzfs/bzfs.h - 664 sys sys 1018469727 223
@@ -3435,35 +3435,44 @@ sys/lib/dist/pc/glenda/tmp - 20000000775 sys sys 1018469723 0
 sys/lib/dist/pc/inst - 20000000775 sys sys 1018721419 0
 sys/lib/dist/pc/inst - 20000000775 sys sys 1018721419 0
 sys/lib/dist/pc/inst/bootfloppy - 775 sys sys 1019240165 899
 sys/lib/dist/pc/inst/bootfloppy - 775 sys sys 1019240165 899
 sys/lib/dist/pc/inst/bootplan9 - 775 sys sys 1019534696 1584
 sys/lib/dist/pc/inst/bootplan9 - 775 sys sys 1019534696 1584
-sys/lib/dist/pc/inst/bootsetup - 775 sys sys 1032990667 3034
+sys/lib/dist/pc/inst/bootsetup - 775 sys sys 1063856192 3551
 sys/lib/dist/pc/inst/bootwin9x - 775 sys sys 1020384273 2525
 sys/lib/dist/pc/inst/bootwin9x - 775 sys sys 1020384273 2525
 sys/lib/dist/pc/inst/bootwinnt - 775 sys sys 1019240165 1041
 sys/lib/dist/pc/inst/bootwinnt - 775 sys sys 1019240165 1041
 sys/lib/dist/pc/inst/configarch - 775 sys sys 1018640312 636
 sys/lib/dist/pc/inst/configarch - 775 sys sys 1018640312 636
 sys/lib/dist/pc/inst/configdist - 775 sys sys 1019322595 400
 sys/lib/dist/pc/inst/configdist - 775 sys sys 1019322595 400
 sys/lib/dist/pc/inst/configether - 775 sys sys 1019240165 1238
 sys/lib/dist/pc/inst/configether - 775 sys sys 1019240165 1238
+sys/lib/dist/pc/inst/configfs - 775 sys sys 1063856192 538
 sys/lib/dist/pc/inst/configip - 775 sys sys 1018469719 1132
 sys/lib/dist/pc/inst/configip - 775 sys sys 1018469719 1132
 sys/lib/dist/pc/inst/confignet - 775 sys sys 1019322596 1301
 sys/lib/dist/pc/inst/confignet - 775 sys sys 1019322596 1301
 sys/lib/dist/pc/inst/configppp - 775 sys sys 1019058714 1402
 sys/lib/dist/pc/inst/configppp - 775 sys sys 1019058714 1402
 sys/lib/dist/pc/inst/copydist - 775 sys sys 1019917500 703
 sys/lib/dist/pc/inst/copydist - 775 sys sys 1019917500 703
-sys/lib/dist/pc/inst/defs - 664 sys sys 1032795309 2599
-sys/lib/dist/pc/inst/download - 775 sys sys 1019240166 1146
+sys/lib/dist/pc/inst/defs - 664 sys sys 1063856187 2728
+sys/lib/dist/pc/inst/download - 775 sys sys 1063856193 1237
 sys/lib/dist/pc/inst/finish - 775 sys sys 1032990669 266
 sys/lib/dist/pc/inst/finish - 775 sys sys 1032990669 266
+sys/lib/dist/pc/inst/fmtfossil - 775 sys sys 1063856193 1990
+sys/lib/dist/pc/inst/fmtventi - 775 sys sys 1063856189 3345
 sys/lib/dist/pc/inst/gui - 775 sys sys 1032539034 79
 sys/lib/dist/pc/inst/gui - 775 sys sys 1032539034 79
-sys/lib/dist/pc/inst/halt - 775 sys sys 1033009553 353
+sys/lib/dist/pc/inst/halt - 775 sys sys 1063856192 497
 sys/lib/dist/pc/inst/hasmbr - 775 sys sys 1018469719 171
 sys/lib/dist/pc/inst/hasmbr - 775 sys sys 1018469719 171
 sys/lib/dist/pc/inst/hdrs - 775 sys sys 1018469719 106
 sys/lib/dist/pc/inst/hdrs - 775 sys sys 1018469719 106
 sys/lib/dist/pc/inst/is9660 - 775 sys sys 1018469719 307
 sys/lib/dist/pc/inst/is9660 - 775 sys sys 1018469719 307
 sys/lib/dist/pc/inst/isext2 - 775 sys sys 1018469719 204
 sys/lib/dist/pc/inst/isext2 - 775 sys sys 1018469719 204
 sys/lib/dist/pc/inst/isfat - 775 sys sys 1018469719 457
 sys/lib/dist/pc/inst/isfat - 775 sys sys 1018469719 457
+sys/lib/dist/pc/inst/isfossil - 775 sys sys 1063856189 385
 sys/lib/dist/pc/inst/iskfs - 775 sys sys 1018469719 183
 sys/lib/dist/pc/inst/iskfs - 775 sys sys 1018469719 183
-sys/lib/dist/pc/inst/main - 775 sys sys 1019240166 1867
+sys/lib/dist/pc/inst/isventi - 775 sys sys 1063856189 228
+sys/lib/dist/pc/inst/isventiarenas - 775 sys sys 1063856189 258
+sys/lib/dist/pc/inst/isventiisect - 775 sys sys 1063856190 256
+sys/lib/dist/pc/inst/main - 775 sys sys 1063856189 1952
 sys/lib/dist/pc/inst/mainloop - 775 sys sys 1019058715 532
 sys/lib/dist/pc/inst/mainloop - 775 sys sys 1019058715 532
 sys/lib/dist/pc/inst/mkini.awk - 664 sys sys 1019917495 1163
 sys/lib/dist/pc/inst/mkini.awk - 664 sys sys 1019917495 1163
 sys/lib/dist/pc/inst/mountdist - 775 sys sys 1045504304 4889
 sys/lib/dist/pc/inst/mountdist - 775 sys sys 1045504304 4889
-sys/lib/dist/pc/inst/mountfs - 775 sys sys 1019661617 2435
+sys/lib/dist/pc/inst/mountfossil - 775 sys sys 1063856193 3556
+sys/lib/dist/pc/inst/mountfs - 775 sys sys 1063856188 217
+sys/lib/dist/pc/inst/mountkfs - 775 sys sys 1063856188 2481
 sys/lib/dist/pc/inst/moveoldfs - 775 sys sys 1018469719 1361
 sys/lib/dist/pc/inst/moveoldfs - 775 sys sys 1018469719 1361
-sys/lib/dist/pc/inst/partdisk - 775 sys sys 1019058715 1588
-sys/lib/dist/pc/inst/prepdisk - 775 sys sys 1019058715 878
+sys/lib/dist/pc/inst/partdisk - 775 sys sys 1063856191 1828
+sys/lib/dist/pc/inst/prepdisk - 775 sys sys 1063856190 1604
 sys/lib/dist/pc/inst/replcfg - 775 sys sys 1019533019 395
 sys/lib/dist/pc/inst/replcfg - 775 sys sys 1019533019 395
 sys/lib/dist/pc/inst/startether - 775 sys sys 1018640315 513
 sys/lib/dist/pc/inst/startether - 775 sys sys 1018640315 513
 sys/lib/dist/pc/inst/startppp - 775 sys sys 1019058715 577
 sys/lib/dist/pc/inst/startppp - 775 sys sys 1019058715 577
@@ -3474,17 +3483,17 @@ sys/lib/dist/pc/inst/stopppp - 775 sys sys 1018469719 250
 sys/lib/dist/pc/inst/textonly - 775 sys sys 1032539034 154
 sys/lib/dist/pc/inst/textonly - 775 sys sys 1032539034 154
 sys/lib/dist/pc/inst/watchfd - 775 sys sys 1019322599 315
 sys/lib/dist/pc/inst/watchfd - 775 sys sys 1019322599 315
 sys/lib/dist/pc/inst/xxx - 775 sys sys 1018469719 160
 sys/lib/dist/pc/inst/xxx - 775 sys sys 1018469719 160
-sys/lib/dist/pc/mkfile - 664 sys sys 1032838501 1998
+sys/lib/dist/pc/mkfile - 664 sys sys 1063856155 2026
 sys/lib/dist/pc/plan9.ini - 664 sys sys 1020361168 512
 sys/lib/dist/pc/plan9.ini - 664 sys sys 1020361168 512
 sys/lib/dist/pc/plan9.ini.blank - 664 sys sys 1018469720 512
 sys/lib/dist/pc/plan9.ini.blank - 664 sys sys 1018469720 512
 sys/lib/dist/pc/plan9.ini.cd - 664 sys sys 1045500125 343
 sys/lib/dist/pc/plan9.ini.cd - 664 sys sys 1045500125 343
 sys/lib/dist/pc/plan9.ini.vmware - 664 sys sys 1045500078 168
 sys/lib/dist/pc/plan9.ini.vmware - 664 sys sys 1045500078 168
-sys/lib/dist/pc/proto - 664 sys sys 1033073499 3916
+sys/lib/dist/pc/proto - 664 sys sys 1063856156 4312
 sys/lib/dist/pc/sub - 20000000775 sys sys 1018640631 0
 sys/lib/dist/pc/sub - 20000000775 sys sys 1018640631 0
 sys/lib/dist/pc/sub/a: - 775 sys sys 1018469726 481
 sys/lib/dist/pc/sub/a: - 775 sys sys 1018469726 481
 sys/lib/dist/pc/sub/bind - 775 sys sys 1018469726 207
 sys/lib/dist/pc/sub/bind - 775 sys sys 1018469726 207
 sys/lib/dist/pc/sub/boota: - 664 sys sys 1032058333 532
 sys/lib/dist/pc/sub/boota: - 664 sys sys 1032058333 532
-sys/lib/dist/pc/sub/bunzip2 - 664 sys sys 1018469726 41
+sys/lib/dist/pc/sub/bunzip2 - 664 sys sys 1063856127 46
 sys/lib/dist/pc/sub/common - 664 sys sys 1018469726 2370
 sys/lib/dist/pc/sub/common - 664 sys sys 1018469726 2370
 sys/lib/dist/pc/sub/compactdb - 775 sys sys 1019322641 24
 sys/lib/dist/pc/sub/compactdb - 775 sys sys 1019322641 24
 sys/lib/dist/pc/sub/local - 664 sys sys 1018469726 117
 sys/lib/dist/pc/sub/local - 664 sys sys 1018469726 117
@@ -3492,9 +3501,9 @@ sys/lib/dist/pc/sub/mkdir - 775 sys sys 1018469726 58
 sys/lib/dist/pc/sub/ndist - 775 sys sys 1018640631 354
 sys/lib/dist/pc/sub/ndist - 775 sys sys 1018640631 354
 sys/lib/dist/pc/sub/pci - 775 sys sys 1018469726 52
 sys/lib/dist/pc/sub/pci - 775 sys sys 1018469726 52
 sys/lib/dist/pc/sub/pwd - 664 sys sys 1018469726 59
 sys/lib/dist/pc/sub/pwd - 664 sys sys 1018469726 59
-sys/lib/dist/pc/sub/ramfs - 775 sys sys 1018469726 44
+sys/lib/dist/pc/sub/ramfs - 775 sys sys 1063856126 48
 sys/lib/dist/pc/sub/sleep - 664 sys sys 1018469726 118
 sys/lib/dist/pc/sub/sleep - 664 sys sys 1018469726 118
-sys/lib/dist/pc/sub/termrc - 664 sys sys 1032990663 1632
+sys/lib/dist/pc/sub/termrc - 664 sys sys 1063856126 1965
 sys/lib/dist/pc/sub/unmount - 664 sys sys 1018469726 46
 sys/lib/dist/pc/sub/unmount - 664 sys sys 1018469726 46
 sys/lib/dist/pc/sub/users - 664 sys sys 1018469726 103
 sys/lib/dist/pc/sub/users - 664 sys sys 1018469726 103
 sys/lib/dist/pc/sub/vmware - 775 sys sys 1033073493 132
 sys/lib/dist/pc/sub/vmware - 775 sys sys 1033073493 132
@@ -3752,7 +3761,7 @@ sys/lib/lp - 20000000775 sys sys 954037460 0
 sys/lib/lp/bin - 20000000775 sys sys 959999531 0
 sys/lib/lp/bin - 20000000775 sys sys 959999531 0
 sys/lib/lp/bin/UNLOCK - 775 sys sys 954037458 25
 sys/lib/lp/bin/UNLOCK - 775 sys sys 954037458 25
 sys/lib/lp/bin/kill_xerox-4512 - 775 sys sys 954037458 92
 sys/lib/lp/bin/kill_xerox-4512 - 775 sys sys 954037458 92
-sys/lib/lp/bin/lpscratch - 775 sys sys 960142626 874
+sys/lib/lp/bin/lpscratch - 775 sys sys 1063856100 908
 sys/lib/lp/bin/lpsend.rc - 775 sys sys 954037458 361
 sys/lib/lp/bin/lpsend.rc - 775 sys sys 954037458 361
 sys/lib/lp/bin/true - 775 sys sys 954037458 18
 sys/lib/lp/bin/true - 775 sys sys 954037458 18
 sys/lib/lp/daemon - 20000000775 sys sys 1015012112 0
 sys/lib/lp/daemon - 20000000775 sys sys 1015012112 0
@@ -3852,7 +3861,7 @@ sys/lib/man/preface4 - 664 sys sys 1020082276 1758
 sys/lib/man/secindex - 775 sys sys 956337727 322
 sys/lib/man/secindex - 775 sys sys 956337727 322
 sys/lib/man/title - 664 sys sys 1019915894 746
 sys/lib/man/title - 664 sys sys 1019915894 746
 sys/lib/man/trademarks - 664 sys sys 958527089 1838
 sys/lib/man/trademarks - 664 sys sys 958527089 1838
-sys/lib/mimetype - 664 sys sys 1045933187 5318
+sys/lib/mimetype - 664 sys sys 1063856077 5336
 sys/lib/newuser - 775 sys sys 1018386991 1229
 sys/lib/newuser - 775 sys sys 1018386991 1229
 sys/lib/plumb - 20000000775 sys sys 944957365 0
 sys/lib/plumb - 20000000775 sys sys 944957365 0
 sys/lib/plumb/basic - 664 sys sys 1032058379 2908
 sys/lib/plumb/basic - 664 sys sys 1032058379 2908
@@ -4257,10 +4266,6 @@ sys/lib/sysconfig/auth/files/tcp567 - 775 sys sys 1016833537 34
 sys/lib/sysconfig/auth/mkfile - 664 sys sys 1016833657 2937
 sys/lib/sysconfig/auth/mkfile - 664 sys sys 1016833657 2937
 sys/lib/sysconfig/blast - 20000000775 sys sys 1059490895 0
 sys/lib/sysconfig/blast - 20000000775 sys sys 1059490895 0
 sys/lib/sysconfig/blast/boot - 775 sys sys 1059490900 571
 sys/lib/sysconfig/blast/boot - 775 sys sys 1059490900 571
-sys/lib/sysconfig/fl - 20000000775 sys sys 1042004836 0
-sys/lib/sysconfig/fl/boot - 775 sys sys 1048637071 773
-sys/lib/sysconfig/fl/flproto - 664 sys sys 1048637070 137
-sys/lib/sysconfig/fl/venti.conf - 664 sys sys 1042004837 139
 sys/lib/sysconfig/proto - 20000000775 sys sys 959740591 0
 sys/lib/sysconfig/proto - 20000000775 sys sys 959740591 0
 sys/lib/sysconfig/proto/allproto - 664 sys sys 945018241 2
 sys/lib/sysconfig/proto/allproto - 664 sys sys 945018241 2
 sys/lib/sysconfig/proto/armpaqproto - 664 sys sys 1037173885 2270
 sys/lib/sysconfig/proto/armpaqproto - 664 sys sys 1037173885 2270
@@ -4918,11 +4923,11 @@ sys/man/8/aan - 664 sys sys 1045501064 1670
 sys/man/8/aliasmail - 664 sys sys 1055701148 1353
 sys/man/8/aliasmail - 664 sys sys 1055701148 1353
 sys/man/8/apm - 664 sys sys 1017679308 1811
 sys/man/8/apm - 664 sys sys 1017679308 1811
 sys/man/8/auth - 664 sys sys 1035838620 4062
 sys/man/8/auth - 664 sys sys 1035838620 4062
-sys/man/8/boot - 664 sys sys 1063855776 8354
+sys/man/8/boot - 664 sys sys 1063858248 8362
 sys/man/8/booting - 664 sys sys 1015024984 4136
 sys/man/8/booting - 664 sys sys 1015024984 4136
 sys/man/8/checkarenas - 664 sys sys 1019866709 669
 sys/man/8/checkarenas - 664 sys sys 1019866709 669
 sys/man/8/cpurc - 664 sys sys 971455510 1275
 sys/man/8/cpurc - 664 sys sys 971455510 1275
-sys/man/8/cron - 664 sys sys 944959679 1750
+sys/man/8/cron - 664 sys sys 1063858596 1867
 sys/man/8/dhcpd - 664 sys sys 1032654987 5237
 sys/man/8/dhcpd - 664 sys sys 1032654987 5237
 sys/man/8/drawterm - 664 sys sys 958419689 2458
 sys/man/8/drawterm - 664 sys sys 958419689 2458
 sys/man/8/fossilcons - 664 sys sys 1063855784 14700
 sys/man/8/fossilcons - 664 sys sys 1063855784 14700
@@ -4970,7 +4975,7 @@ sys/man/8/tlssrv - 664 sys sys 1037580152 2594
 sys/man/8/udpecho - 664 sys sys 954305553 303
 sys/man/8/udpecho - 664 sys sys 954305553 303
 sys/man/8/update - 664 sys sys 961259288 2336
 sys/man/8/update - 664 sys sys 961259288 2336
 sys/man/8/venti - 664 sys sys 1055707404 5274
 sys/man/8/venti - 664 sys sys 1055707404 5274
-sys/man/8/ventiaux - 664 sys sys 1055707404 10528
+sys/man/8/ventiaux - 664 sys sys 1063855987 10487
 sys/man/8/vga - 664 sys sys 959698505 3557
 sys/man/8/vga - 664 sys sys 959698505 3557
 sys/man/fonts - 664 sys sys 944959700 218
 sys/man/fonts - 664 sys sys 944959700 218
 sys/man/index.html - 664 sys sys 1019918444 1859
 sys/man/index.html - 664 sys sys 1019918444 1859
@@ -5086,18 +5091,17 @@ sys/src/9/bitsy/uartsa1110.c - 664 sys sys 1037029045 8530
 sys/src/9/bitsy/wavelan.c - 664 sys sys 1053340976 27266
 sys/src/9/bitsy/wavelan.c - 664 sys sys 1053340976 27266
 sys/src/9/bitsy/wavelan.h - 664 sys sys 1037029076 27
 sys/src/9/bitsy/wavelan.h - 664 sys sys 1037029076 27
 sys/src/9/boot - 20000000775 sys sys 1018556557 0
 sys/src/9/boot - 20000000775 sys sys 1018556557 0
-sys/src/9/boot/aux.c - 664 sys sys 1015012529 2520
-sys/src/9/boot/boot.c - 664 sys sys 1055700840 5316
-sys/src/9/boot/boot.h - 664 sys sys 1055703887 1773
+sys/src/9/boot/aux.c - 664 sys sys 1063857702 2579
+sys/src/9/boot/boot.c - 664 sys sys 1063857658 5334
+sys/src/9/boot/boot.h - 664 sys sys 1063857659 1785
 sys/src/9/boot/bootauth.c - 664 sys sys 1039763726 1097
 sys/src/9/boot/bootauth.c - 664 sys sys 1039763726 1097
-sys/src/9/boot/bootcache.c - 664 sys sys 1039763729 1518
-sys/src/9/boot/bootip.c - 664 sys sys 1055703889 3414
+sys/src/9/boot/bootcache.c - 664 sys sys 1063857645 1579
+sys/src/9/boot/bootip.c - 664 sys sys 1063857634 3405
 sys/src/9/boot/bootmkfile - 664 sys sys 1032053196 390
 sys/src/9/boot/bootmkfile - 664 sys sys 1032053196 390
 sys/src/9/boot/doauthenticate.c - 664 sys sys 1015012529 2300
 sys/src/9/boot/doauthenticate.c - 664 sys sys 1015012529 2300
 sys/src/9/boot/embed.c - 664 sys sys 1039763720 1191
 sys/src/9/boot/embed.c - 664 sys sys 1039763720 1191
 sys/src/9/boot/getpasswd.c - 664 sys sys 957373373 654
 sys/src/9/boot/getpasswd.c - 664 sys sys 957373373 654
-sys/src/9/boot/libboot.a8 - 664 sys sys 1062721685 54780
-sys/src/9/boot/local.c - 664 sys sys 1039763718 2041
+sys/src/9/boot/local.c - 664 sys sys 1063857543 5325
 sys/src/9/boot/mkboot - 775 sys sys 1045504382 1935
 sys/src/9/boot/mkboot - 775 sys sys 1045504382 1935
 sys/src/9/boot/nopsession.c - 664 sys sys 957373374 843
 sys/src/9/boot/nopsession.c - 664 sys sys 957373374 843
 sys/src/9/boot/paq.c - 664 sys sys 1039763722 1099
 sys/src/9/boot/paq.c - 664 sys sys 1039763722 1099
@@ -5118,9 +5122,9 @@ sys/src/9/ip/igmp.c - 664 sys sys 1055700768 5175
 sys/src/9/ip/il.c - 664 sys sys 1055700772 26893
 sys/src/9/ip/il.c - 664 sys sys 1055700772 26893
 sys/src/9/ip/inferno.c - 664 sys sys 1022588098 517
 sys/src/9/ip/inferno.c - 664 sys sys 1022588098 517
 sys/src/9/ip/ip.c - 664 sys sys 1047951326 15285
 sys/src/9/ip/ip.c - 664 sys sys 1047951326 15285
-sys/src/9/ip/ip.h - 664 sys sys 1054391400 16066
+sys/src/9/ip/ip.h - 664 sys sys 1063857527 16054
 sys/src/9/ip/ipaux.c - 664 sys sys 1049423191 12798
 sys/src/9/ip/ipaux.c - 664 sys sys 1049423191 12798
-sys/src/9/ip/ipifc.c - 664 sys sys 1048288617 37843
+sys/src/9/ip/ipifc.c - 664 sys sys 1063857527 37499
 sys/src/9/ip/ipmux.c - 664 sys sys 1047260566 15362
 sys/src/9/ip/ipmux.c - 664 sys sys 1047260566 15362
 sys/src/9/ip/iproute.c - 664 sys sys 1049423192 14763
 sys/src/9/ip/iproute.c - 664 sys sys 1049423192 14763
 sys/src/9/ip/ipv6.c - 664 sys sys 1047951328 14433
 sys/src/9/ip/ipv6.c - 664 sys sys 1047951328 14433
@@ -5136,7 +5140,7 @@ sys/src/9/ip/rudp.c - 664 sys sys 1055700790 21415
 sys/src/9/ip/tcp.c - 664 sys sys 1055700797 65217
 sys/src/9/ip/tcp.c - 664 sys sys 1055700797 65217
 sys/src/9/ip/tripmedium.c - 664 sys sys 1045063515 7136
 sys/src/9/ip/tripmedium.c - 664 sys sys 1045063515 7136
 sys/src/9/ip/udp.c - 664 sys sys 1055700791 13069
 sys/src/9/ip/udp.c - 664 sys sys 1055700791 13069
-sys/src/9/mkfile - 664 sys sys 1017795039 191
+sys/src/9/mkfile - 664 sys sys 1063857477 205
 sys/src/9/mtx - 20000000775 sys sys 1018721288 0
 sys/src/9/mtx - 20000000775 sys sys 1018721288 0
 sys/src/9/mtx/clock.c - 664 sys sys 1032053278 1293
 sys/src/9/mtx/clock.c - 664 sys sys 1032053278 1293
 sys/src/9/mtx/cycintr.c - 664 sys sys 1018721285 230
 sys/src/9/mtx/cycintr.c - 664 sys sys 1018721285 230
@@ -5185,8 +5189,8 @@ sys/src/9/pc/devlpt.c - 664 sys sys 1015014514 4420
 sys/src/9/pc/devpccard.c - 664 sys sys 1048644060 39977
 sys/src/9/pc/devpccard.c - 664 sys sys 1048644060 39977
 sys/src/9/pc/devrtc.c - 664 sys sys 1015014515 7167
 sys/src/9/pc/devrtc.c - 664 sys sys 1015014515 7167
 sys/src/9/pc/devtv.c - 664 sys sys 1032052915 45652
 sys/src/9/pc/devtv.c - 664 sys sys 1032052915 45652
-sys/src/9/pc/devusb.c - 664 sys sys 1048644072 17991
-sys/src/9/pc/devvga.c - 664 sys sys 1039753498 8625
+sys/src/9/pc/devusb.c - 664 sys sys 1063857423 18352
+sys/src/9/pc/devvga.c - 664 sys sys 1063857412 8714
 sys/src/9/pc/dma.c - 664 sys sys 1015014515 4736
 sys/src/9/pc/dma.c - 664 sys sys 1015014515 4736
 sys/src/9/pc/ether2000.c - 664 sys sys 1017854323 2839
 sys/src/9/pc/ether2000.c - 664 sys sys 1017854323 2839
 sys/src/9/pc/ether2114x.c - 664 sys sys 1034021961 38762
 sys/src/9/pc/ether2114x.c - 664 sys sys 1034021961 38762
@@ -5200,7 +5204,7 @@ sys/src/9/pc/ether83815.c - 664 sys sys 1026847640 23050
 sys/src/9/pc/ether8390.c - 664 sys sys 1015014517 17548
 sys/src/9/pc/ether8390.c - 664 sys sys 1015014517 17548
 sys/src/9/pc/ether8390.h - 664 sys sys 1015014517 1511
 sys/src/9/pc/ether8390.h - 664 sys sys 1015014517 1511
 sys/src/9/pc/etherec2t.c - 664 sys sys 1020284820 4038
 sys/src/9/pc/etherec2t.c - 664 sys sys 1020284820 4038
-sys/src/9/pc/etherelnk3.c - 664 sys sys 1059064966 48481
+sys/src/9/pc/etherelnk3.c - 664 sys sys 1063857363 48522
 sys/src/9/pc/etherga620.c - 664 sys sys 1032052917 28786
 sys/src/9/pc/etherga620.c - 664 sys sys 1032052917 28786
 sys/src/9/pc/etherga620fw.h - 644 sys sys 1026847642 222295
 sys/src/9/pc/etherga620fw.h - 644 sys sys 1026847642 222295
 sys/src/9/pc/etherif.h - 664 sys sys 1045063564 961
 sys/src/9/pc/etherif.h - 664 sys sys 1045063564 961
@@ -5258,8 +5262,8 @@ sys/src/9/pc/sdscsi.c - 664 sys sys 1055689892 7406
 sys/src/9/pc/trap.c - 664 sys sys 1056299507 19012
 sys/src/9/pc/trap.c - 664 sys sys 1056299507 19012
 sys/src/9/pc/uarti8250.c - 664 sys sys 1060266726 12826
 sys/src/9/pc/uarti8250.c - 664 sys sys 1060266726 12826
 sys/src/9/pc/uartpci.c - 664 sys sys 1015014524 2709
 sys/src/9/pc/uartpci.c - 664 sys sys 1015014524 2709
-sys/src/9/pc/usb.h - 664 sys sys 1015014524 3505
-sys/src/9/pc/usbuhci.c - 664 sys sys 1026847653 30686
+sys/src/9/pc/usb.h - 664 sys sys 1063857246 3566
+sys/src/9/pc/usbuhci.c - 664 sys sys 1063857239 30688
 sys/src/9/pc/vga.c - 664 sys sys 1039753497 4963
 sys/src/9/pc/vga.c - 664 sys sys 1039753497 4963
 sys/src/9/pc/vga3dfx.c - 664 sys sys 1026847654 4837
 sys/src/9/pc/vga3dfx.c - 664 sys sys 1026847654 4837
 sys/src/9/pc/vgaark2000pv.c - 664 sys sys 1015014524 3416
 sys/src/9/pc/vgaark2000pv.c - 664 sys sys 1015014524 3416
@@ -5282,7 +5286,7 @@ sys/src/9/pc/vgasavage.c - 664 sys sys 1046203931 16194
 sys/src/9/pc/vgat2r4.c - 664 sys sys 1015014528 10355
 sys/src/9/pc/vgat2r4.c - 664 sys sys 1015014528 10355
 sys/src/9/pc/vgatvp3020.c - 664 sys sys 1015014528 4491
 sys/src/9/pc/vgatvp3020.c - 664 sys sys 1015014528 4491
 sys/src/9/pc/vgatvp3026.c - 664 sys sys 1015014528 3940
 sys/src/9/pc/vgatvp3026.c - 664 sys sys 1015014528 3940
-sys/src/9/pc/vgavmware.c - 664 sys sys 1020284822 6334
+sys/src/9/pc/vgavmware.c - 664 sys sys 1063858321 6398
 sys/src/9/pc/vgax.c - 664 sys sys 1015014528 1655
 sys/src/9/pc/vgax.c - 664 sys sys 1015014528 1655
 sys/src/9/pc/wavelan.c - 664 sys sys 1056299581 27253
 sys/src/9/pc/wavelan.c - 664 sys sys 1056299581 27253
 sys/src/9/pc/wavelan.h - 664 sys sys 1055700615 6151
 sys/src/9/pc/wavelan.h - 664 sys sys 1055700615 6151
@@ -5318,7 +5322,7 @@ sys/src/9/port/devroot.c - 664 sys sys 1048912313 4015
 sys/src/9/port/devsd.c - 664 sys sys 1055688396 28669
 sys/src/9/port/devsd.c - 664 sys sys 1055688396 28669
 sys/src/9/port/devsdp.c - 664 sys sys 1057323393 44800
 sys/src/9/port/devsdp.c - 664 sys sys 1057323393 44800
 sys/src/9/port/devsegment.c - 664 sys sys 1017679394 9600
 sys/src/9/port/devsegment.c - 664 sys sys 1017679394 9600
-sys/src/9/port/devsrv.c - 664 sys sys 1014931174 5146
+sys/src/9/port/devsrv.c - 664 sys sys 1063856594 5197
 sys/src/9/port/devssl.c - 664 sys sys 1045063590 26100
 sys/src/9/port/devssl.c - 664 sys sys 1045063590 26100
 sys/src/9/port/devtinyfs.c - 664 sys sys 1015278339 15347
 sys/src/9/port/devtinyfs.c - 664 sys sys 1015278339 15347
 sys/src/9/port/devtls.c - 664 sys sys 1055688453 43764
 sys/src/9/port/devtls.c - 664 sys sys 1055688453 43764
@@ -5332,13 +5336,14 @@ sys/src/9/port/latin1.c - 664 sys sys 1015278339 1418
 sys/src/9/port/latin1.h - 664 sys sys 1015278339 3524
 sys/src/9/port/latin1.h - 664 sys sys 1015278339 3524
 sys/src/9/port/lib.h - 664 sys sys 1014931175 5676
 sys/src/9/port/lib.h - 664 sys sys 1014931175 5676
 sys/src/9/port/log.c - 664 sys sys 1014931175 2860
 sys/src/9/port/log.c - 664 sys sys 1014931175 2860
-sys/src/9/port/master - 664 sys sys 1057838456 479
+sys/src/9/port/master - 664 sys sys 1063856961 516
+sys/src/9/port/master.local - 664 sys sys 1063856961 130
 sys/src/9/port/mkbootrules - 775 sys sys 1055700518 923
 sys/src/9/port/mkbootrules - 775 sys sys 1055700518 923
 sys/src/9/port/mkdevc - 775 sys sys 1055700518 3446
 sys/src/9/port/mkdevc - 775 sys sys 1055700518 3446
 sys/src/9/port/mkdevlist - 775 sys sys 1055700519 510
 sys/src/9/port/mkdevlist - 775 sys sys 1055700519 510
 sys/src/9/port/mkerrstr - 775 sys sys 1015278340 75
 sys/src/9/port/mkerrstr - 775 sys sys 1015278340 75
 sys/src/9/port/mkextract - 775 sys sys 1039753334 435
 sys/src/9/port/mkextract - 775 sys sys 1039753334 435
-sys/src/9/port/mkfile - 664 sys sys 1045531976 266
+sys/src/9/port/mkfile - 664 sys sys 1063856960 350
 sys/src/9/port/mkroot - 775 sys sys 1039753334 235
 sys/src/9/port/mkroot - 775 sys sys 1039753334 235
 sys/src/9/port/mkrootall - 775 sys sys 1055954696 386
 sys/src/9/port/mkrootall - 775 sys sys 1055954696 386
 sys/src/9/port/mkrootc - 775 sys sys 1055954695 717
 sys/src/9/port/mkrootc - 775 sys sys 1055954695 717
@@ -5355,8 +5360,8 @@ sys/src/9/port/portfns.h - 664 sys sys 1060266745 10822
 sys/src/9/port/portmkfile - 664 sys sys 1055700523 2057
 sys/src/9/port/portmkfile - 664 sys sys 1055700523 2057
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/proc.c - 664 sys sys 1055688525 24316
 sys/src/9/port/proc.c - 664 sys sys 1055688525 24316
-sys/src/9/port/qio.c - 664 sys sys 1047260594 23281
-sys/src/9/port/qlock.c - 664 sys sys 1055688539 3311
+sys/src/9/port/qio.c - 664 sys sys 1063857200 23407
+sys/src/9/port/qlock.c - 664 sys sys 1063857173 3311
 sys/src/9/port/rdb.c - 664 sys sys 1018721202 1698
 sys/src/9/port/rdb.c - 664 sys sys 1018721202 1698
 sys/src/9/port/realtimesub.c - 664 sys sys 1055688540 9185
 sys/src/9/port/realtimesub.c - 664 sys sys 1055688540 9185
 sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
 sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
@@ -6132,7 +6137,7 @@ sys/src/ape/lib/bsd/getprotobyname.c - 664 sys sys 1014921995 1498
 sys/src/ape/lib/bsd/getservbyaddr.c - 664 sys sys 1014921995 308
 sys/src/ape/lib/bsd/getservbyaddr.c - 664 sys sys 1014921995 308
 sys/src/ape/lib/bsd/getservbyname.c - 664 sys sys 1014921995 1595
 sys/src/ape/lib/bsd/getservbyname.c - 664 sys sys 1014921995 1595
 sys/src/ape/lib/bsd/getsockname.c - 664 sys sys 1014921995 847
 sys/src/ape/lib/bsd/getsockname.c - 664 sys sys 1014921995 847
-sys/src/ape/lib/bsd/gettimeofday.c - 664 sys sys 1014921995 247
+sys/src/ape/lib/bsd/gettimeofday.c - 664 sys sys 1063858406 756
 sys/src/ape/lib/bsd/inet_addr.c - 664 sys sys 1014921995 770
 sys/src/ape/lib/bsd/inet_addr.c - 664 sys sys 1014921995 770
 sys/src/ape/lib/bsd/inet_ntoa.c - 664 sys sys 1014921995 382
 sys/src/ape/lib/bsd/inet_ntoa.c - 664 sys sys 1014921995 382
 sys/src/ape/lib/bsd/ioctl.c - 664 sys sys 1014921995 561
 sys/src/ape/lib/bsd/ioctl.c - 664 sys sys 1014921995 561
@@ -6578,7 +6583,7 @@ sys/src/cmd/9nfs/xfile.c - 664 sys sys 1017337816 1847
 sys/src/cmd/aan.c - 664 sys sys 1019856827 9758
 sys/src/cmd/aan.c - 664 sys sys 1019856827 9758
 sys/src/cmd/acid - 20000000775 sys sys 944960739 0
 sys/src/cmd/acid - 20000000775 sys sys 944960739 0
 sys/src/cmd/acid/acid.h - 664 sys sys 1046198958 4354
 sys/src/cmd/acid/acid.h - 664 sys sys 1046198958 4354
-sys/src/cmd/acid/builtin.c - 664 sys sys 1014924908 19979
+sys/src/cmd/acid/builtin.c - 664 sys sys 1063859225 19980
 sys/src/cmd/acid/dbg.y - 664 sys sys 1046198962 5450
 sys/src/cmd/acid/dbg.y - 664 sys sys 1046198962 5450
 sys/src/cmd/acid/dot.c - 664 sys sys 944960739 2161
 sys/src/cmd/acid/dot.c - 664 sys sys 944960739 2161
 sys/src/cmd/acid/exec.c - 664 sys sys 1016833876 8187
 sys/src/cmd/acid/exec.c - 664 sys sys 1016833876 8187
@@ -6660,7 +6665,7 @@ sys/src/cmd/auth/changeuser.c - 664 sys sys 1015008431 2933
 sys/src/cmd/auth/convbio.c - 664 sys sys 1015008432 2212
 sys/src/cmd/auth/convbio.c - 664 sys sys 1015008432 2212
 sys/src/cmd/auth/convkeys.c - 664 sys sys 1015008430 2347
 sys/src/cmd/auth/convkeys.c - 664 sys sys 1015008430 2347
 sys/src/cmd/auth/convkeys2.c - 664 sys sys 1015008432 2401
 sys/src/cmd/auth/convkeys2.c - 664 sys sys 1015008432 2401
-sys/src/cmd/auth/cron.c - 664 sys sys 1025352270 11010
+sys/src/cmd/auth/cron.c - 664 sys sys 1063858528 11410
 sys/src/cmd/auth/debug.c - 664 sys sys 1044839697 7324
 sys/src/cmd/auth/debug.c - 664 sys sys 1044839697 7324
 sys/src/cmd/auth/disable - 775 sys sys 1015008431 146
 sys/src/cmd/auth/disable - 775 sys sys 1015008431 146
 sys/src/cmd/auth/enable - 775 sys sys 1015008430 134
 sys/src/cmd/auth/enable - 775 sys sys 1015008430 134
@@ -6798,7 +6803,7 @@ sys/src/cmd/aux/rdwr.c - 664 sys sys 1016833876 811
 sys/src/cmd/aux/reboot.c - 664 sys sys 1014925091 1411
 sys/src/cmd/aux/reboot.c - 664 sys sys 1014925091 1411
 sys/src/cmd/aux/searchfs.c - 664 sys sys 1014925091 18176
 sys/src/cmd/aux/searchfs.c - 664 sys sys 1014925091 18176
 sys/src/cmd/aux/stub.c - 664 sys sys 1032468954 2637
 sys/src/cmd/aux/stub.c - 664 sys sys 1032468954 2637
-sys/src/cmd/aux/timesync.c - 664 sys sys 1058474964 24413
+sys/src/cmd/aux/timesync.c - 664 sys sys 1063897024 24500
 sys/src/cmd/aux/trampoline.c - 664 sys sys 1034780422 3571
 sys/src/cmd/aux/trampoline.c - 664 sys sys 1034780422 3571
 sys/src/cmd/aux/typepasswd.c - 664 sys sys 1014925091 1761
 sys/src/cmd/aux/typepasswd.c - 664 sys sys 1014925091 1761
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
@@ -7271,7 +7276,7 @@ sys/src/cmd/fossil/archive.c - 664 sys sys 1061530723 9109
 sys/src/cmd/fossil/build - 664 sys sys 1042005505 449
 sys/src/cmd/fossil/build - 664 sys sys 1042005505 449
 sys/src/cmd/fossil/buildsh - 775 sys sys 1042005505 561
 sys/src/cmd/fossil/buildsh - 775 sys sys 1042005505 561
 sys/src/cmd/fossil/bwatch.c - 664 sys sys 1042005505 6754
 sys/src/cmd/fossil/bwatch.c - 664 sys sys 1042005505 6754
-sys/src/cmd/fossil/cache.c - 664 sys sys 1063855213 43214
+sys/src/cmd/fossil/cache.c - 664 sys sys 1063859017 43398
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1055703747 1407
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1055703747 1407
 sys/src/cmd/fossil/dat.h - 664 sys sys 1061530727 7851
 sys/src/cmd/fossil/dat.h - 664 sys sys 1061530727 7851
 sys/src/cmd/fossil/deadlock - 775 sys sys 1042005506 413
 sys/src/cmd/fossil/deadlock - 775 sys sys 1042005506 413
@@ -9130,7 +9135,7 @@ sys/src/cmd/ip/dhcpd/dat.h - 664 sys sys 1032655000 2503
 sys/src/cmd/ip/dhcpd/db.c - 664 sys sys 1032655001 7484
 sys/src/cmd/ip/dhcpd/db.c - 664 sys sys 1032655001 7484
 sys/src/cmd/ip/dhcpd/dhcpd.c - 664 sys sys 1050714684 32770
 sys/src/cmd/ip/dhcpd/dhcpd.c - 664 sys sys 1050714684 32770
 sys/src/cmd/ip/dhcpd/dhcpleases.c - 664 sys sys 1032655001 779
 sys/src/cmd/ip/dhcpd/dhcpleases.c - 664 sys sys 1032655001 779
-sys/src/cmd/ip/dhcpd/mkfile - 664 sys sys 1050714681 423
+sys/src/cmd/ip/dhcpd/mkfile - 664 sys sys 1063897571 433
 sys/src/cmd/ip/dhcpd/ndb.c - 664 sys sys 1063855141 6025
 sys/src/cmd/ip/dhcpd/ndb.c - 664 sys sys 1063855141 6025
 sys/src/cmd/ip/dhcpd/ping.c - 664 sys sys 956275654 1881
 sys/src/cmd/ip/dhcpd/ping.c - 664 sys sys 956275654 1881
 sys/src/cmd/ip/dhcpd/testlook.c - 664 sys sys 950389140 4640
 sys/src/cmd/ip/dhcpd/testlook.c - 664 sys sys 950389140 4640
@@ -9143,6 +9148,7 @@ sys/src/cmd/ip/ftpfs/ftpfs.c - 664 sys sys 1048285493 13555
 sys/src/cmd/ip/ftpfs/ftpfs.h - 664 sys sys 1048312051 2328
 sys/src/cmd/ip/ftpfs/ftpfs.h - 664 sys sys 1048312051 2328
 sys/src/cmd/ip/ftpfs/mkfile - 664 sys sys 1048312050 173
 sys/src/cmd/ip/ftpfs/mkfile - 664 sys sys 1048312050 173
 sys/src/cmd/ip/ftpfs/proto.c - 664 sys sys 1048285496 29321
 sys/src/cmd/ip/ftpfs/proto.c - 664 sys sys 1048285496 29321
+sys/src/cmd/ip/gizzard.c - 664 sys sys 1063897565 8950
 sys/src/cmd/ip/glob.c - 664 sys sys 1015013111 2968
 sys/src/cmd/ip/glob.c - 664 sys sys 1015013111 2968
 sys/src/cmd/ip/glob.h - 664 sys sys 1015090252 270
 sys/src/cmd/ip/glob.h - 664 sys sys 1015090252 270
 sys/src/cmd/ip/gping.c - 664 sys sys 1015013112 20476
 sys/src/cmd/ip/gping.c - 664 sys sys 1015013112 20476
@@ -9179,7 +9185,7 @@ sys/src/cmd/ip/imap4d/imap4d.c - 664 sys sys 1045505233 40500
 sys/src/cmd/ip/imap4d/imap4d.h - 664 sys sys 1015013076 6697
 sys/src/cmd/ip/imap4d/imap4d.h - 664 sys sys 1015013076 6697
 sys/src/cmd/ip/imap4d/list.c - 664 sys sys 1015013076 7619
 sys/src/cmd/ip/imap4d/list.c - 664 sys sys 1015013076 7619
 sys/src/cmd/ip/imap4d/mbox.c - 664 sys sys 1015013077 16842
 sys/src/cmd/ip/imap4d/mbox.c - 664 sys sys 1015013077 16842
-sys/src/cmd/ip/imap4d/mkfile - 664 sys sys 1032059772 355
+sys/src/cmd/ip/imap4d/mkfile - 664 sys sys 1063897579 332
 sys/src/cmd/ip/imap4d/msg.c - 664 sys sys 1055699143 31357
 sys/src/cmd/ip/imap4d/msg.c - 664 sys sys 1055699143 31357
 sys/src/cmd/ip/imap4d/mutf7.c - 664 sys sys 1015013077 2724
 sys/src/cmd/ip/imap4d/mutf7.c - 664 sys sys 1015013077 2724
 sys/src/cmd/ip/imap4d/nodes.c - 664 sys sys 1015013077 3173
 sys/src/cmd/ip/imap4d/nodes.c - 664 sys sys 1015013077 3173
@@ -9188,7 +9194,7 @@ sys/src/cmd/ip/imap4d/store.c - 664 sys sys 1015013077 1910
 sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1015013077 2481
 sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1015013077 2481
 sys/src/cmd/ip/ipconfig.c - 664 sys sys 1060189236 29311
 sys/src/cmd/ip/ipconfig.c - 664 sys sys 1060189236 29311
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
-sys/src/cmd/ip/mkfile - 664 sys sys 1038443023 1222
+sys/src/cmd/ip/mkfile - 664 sys sys 1063897563 1250
 sys/src/cmd/ip/ping.c - 664 sys sys 1061496964 5552
 sys/src/cmd/ip/ping.c - 664 sys sys 1061496964 5552
 sys/src/cmd/ip/ppp - 20000000775 sys sys 988249980 0
 sys/src/cmd/ip/ppp - 20000000775 sys sys 988249980 0
 sys/src/cmd/ip/ppp/block.c - 664 sys sys 1015090266 5353
 sys/src/cmd/ip/ppp/block.c - 664 sys sys 1015090266 5353
@@ -9197,7 +9203,7 @@ sys/src/cmd/ip/ppp/doclient - 775 sys sys 944961007 50
 sys/src/cmd/ip/ppp/doserve - 775 sys sys 944961009 91
 sys/src/cmd/ip/ppp/doserve - 775 sys sys 944961009 91
 sys/src/cmd/ip/ppp/dotest - 775 sys sys 944961006 152
 sys/src/cmd/ip/ppp/dotest - 775 sys sys 944961006 152
 sys/src/cmd/ip/ppp/ipaux.c - 664 sys sys 1015090266 2326
 sys/src/cmd/ip/ppp/ipaux.c - 664 sys sys 1015090266 2326
-sys/src/cmd/ip/ppp/mkfile - 664 sys sys 1032059844 378
+sys/src/cmd/ip/ppp/mkfile - 664 sys sys 1063897576 352
 sys/src/cmd/ip/ppp/mppc.c - 664 sys sys 1015090267 16624
 sys/src/cmd/ip/ppp/mppc.c - 664 sys sys 1015090267 16624
 sys/src/cmd/ip/ppp/ppp.c - 664 sys sys 1063855083 59501
 sys/src/cmd/ip/ppp/ppp.c - 664 sys sys 1063855083 59501
 sys/src/cmd/ip/ppp/ppp.h - 664 sys sys 1050360942 8225
 sys/src/cmd/ip/ppp/ppp.h - 664 sys sys 1050360942 8225
@@ -9246,7 +9252,7 @@ sys/src/cmd/ip/snoopy/udp.c - 664 sys sys 1055699195 1718
 sys/src/cmd/ip/telnet.c - 664 sys sys 1015013113 8547
 sys/src/cmd/ip/telnet.c - 664 sys sys 1015013113 8547
 sys/src/cmd/ip/telnet.h - 664 sys sys 1015090250 5902
 sys/src/cmd/ip/telnet.h - 664 sys sys 1015090250 5902
 sys/src/cmd/ip/telnetd.c - 664 sys sys 1032060109 11731
 sys/src/cmd/ip/telnetd.c - 664 sys sys 1032060109 11731
-sys/src/cmd/ip/tftpd.c - 664 sys sys 1063855054 7166
+sys/src/cmd/ip/tftpd.c - 664 sys sys 1063897567 7186
 sys/src/cmd/ip/traceroute.c - 664 sys sys 1032060124 9370
 sys/src/cmd/ip/traceroute.c - 664 sys sys 1032060124 9370
 sys/src/cmd/ip/udpecho.c - 664 sys sys 1050714674 855
 sys/src/cmd/ip/udpecho.c - 664 sys sys 1050714674 855
 sys/src/cmd/join.c - 664 sys sys 944961364 7488
 sys/src/cmd/join.c - 664 sys sys 944961364 7488
@@ -9455,10 +9461,10 @@ sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1055701929 3062
 sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1055701926 15331
 sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1055701926 15331
 sys/src/cmd/ndb/dns.c - 664 sys sys 1063855017 15261
 sys/src/cmd/ndb/dns.c - 664 sys sys 1063855017 15261
 sys/src/cmd/ndb/dns.h - 664 sys sys 1063855018 8983
 sys/src/cmd/ndb/dns.h - 664 sys sys 1063855018 8983
-sys/src/cmd/ndb/dnsdebug.c - 664 sys sys 1060663185 8430
+sys/src/cmd/ndb/dnsdebug.c - 664 sys sys 1063861697 8449
 sys/src/cmd/ndb/dnserver.c - 664 sys sys 1021579994 3687
 sys/src/cmd/ndb/dnserver.c - 664 sys sys 1021579994 3687
 sys/src/cmd/ndb/dnsquery.c - 664 sys sys 1014926160 2108
 sys/src/cmd/ndb/dnsquery.c - 664 sys sys 1014926160 2108
-sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1056171180 7066
+sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1063861697 7085
 sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1055701924 5277
 sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1055701924 5277
 sys/src/cmd/ndb/ipquery.c - 664 sys sys 960335375 760
 sys/src/cmd/ndb/ipquery.c - 664 sys sys 960335375 760
 sys/src/cmd/ndb/mkdb.c - 664 sys sys 957402054 2886
 sys/src/cmd/ndb/mkdb.c - 664 sys sys 957402054 2886
@@ -10096,11 +10102,11 @@ sys/src/cmd/ssh/msg.c - 664 sys sys 1062091016 8023
 sys/src/cmd/ssh/pubkey.c - 664 sys sys 1019928902 3974
 sys/src/cmd/ssh/pubkey.c - 664 sys sys 1019928902 3974
 sys/src/cmd/ssh/scp.c - 664 sys sys 1048644598 13757
 sys/src/cmd/ssh/scp.c - 664 sys sys 1048644598 13757
 sys/src/cmd/ssh/smsg.c - 664 sys sys 1062091015 6135
 sys/src/cmd/ssh/smsg.c - 664 sys sys 1062091015 6135
-sys/src/cmd/ssh/ssh.c - 664 sys sys 1062091019 9635
+sys/src/cmd/ssh/ssh.c - 664 sys sys 1063858802 9635
 sys/src/cmd/ssh/ssh.h - 664 sys sys 1048179595 6054
 sys/src/cmd/ssh/ssh.h - 664 sys sys 1048179595 6054
 sys/src/cmd/ssh/sshnet.c - 664 sys sys 1062091019 17661
 sys/src/cmd/ssh/sshnet.c - 664 sys sys 1062091019 17661
 sys/src/cmd/ssh/sshserve.c - 664 sys sys 1062091020 5786
 sys/src/cmd/ssh/sshserve.c - 664 sys sys 1062091020 5786
-sys/src/cmd/ssh/util.c - 664 sys sys 1048644598 4478
+sys/src/cmd/ssh/util.c - 664 sys sys 1063858753 4478
 sys/src/cmd/stats.c - 664 sys sys 1056035464 27570
 sys/src/cmd/stats.c - 664 sys sys 1056035464 27570
 sys/src/cmd/strings.c - 664 sys sys 944961364 1216
 sys/src/cmd/strings.c - 664 sys sys 944961364 1216
 sys/src/cmd/strip.c - 664 sys sys 1014926661 3306
 sys/src/cmd/strip.c - 664 sys sys 1014926661 3306
@@ -10202,7 +10208,7 @@ sys/src/cmd/time.c - 664 sys sys 1014926662 1546
 sys/src/cmd/tlsclient.c - 664 sys sys 1024375149 1631
 sys/src/cmd/tlsclient.c - 664 sys sys 1024375149 1631
 sys/src/cmd/tlssrv.c - 664 sys sys 1018720167 3254
 sys/src/cmd/tlssrv.c - 664 sys sys 1018720167 3254
 sys/src/cmd/touch.c - 664 sys sys 1018387005 893
 sys/src/cmd/touch.c - 664 sys sys 1018387005 893
-sys/src/cmd/tprof.c - 664 sys sys 1014926662 2603
+sys/src/cmd/tprof.c - 664 sys sys 1063858806 2716
 sys/src/cmd/tr.c - 664 sys sys 944961464 6008
 sys/src/cmd/tr.c - 664 sys sys 944961464 6008
 sys/src/cmd/troff - 20000000775 sys sys 944961294 0
 sys/src/cmd/troff - 20000000775 sys sys 944961294 0
 sys/src/cmd/troff/FIXES - 644 sys sys 944961293 24982
 sys/src/cmd/troff/FIXES - 644 sys sys 944961293 24982
@@ -10494,9 +10500,9 @@ sys/src/cmd/upas/filterkit/readaddrs.c - 664 sys sys 1018549521 1381
 sys/src/cmd/upas/filterkit/token.c - 664 sys sys 1018549521 1312
 sys/src/cmd/upas/filterkit/token.c - 664 sys sys 1018549521 1312
 sys/src/cmd/upas/fs - 20000000775 sys sys 988250018 0
 sys/src/cmd/upas/fs - 20000000775 sys sys 988250018 0
 sys/src/cmd/upas/fs/dat.h - 664 sys sys 1047490337 4267
 sys/src/cmd/upas/fs/dat.h - 664 sys sys 1047490337 4267
-sys/src/cmd/upas/fs/fs.c - 664 sys sys 1045505917 27332
+sys/src/cmd/upas/fs/fs.c - 664 sys sys 1063896947 27346
 sys/src/cmd/upas/fs/imap4.c - 664 sys sys 1061779754 18103
 sys/src/cmd/upas/fs/imap4.c - 664 sys sys 1061779754 18103
-sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1047490342 28282
+sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1063858849 28505
 sys/src/cmd/upas/fs/mkfile - 664 sys sys 1047490336 321
 sys/src/cmd/upas/fs/mkfile - 664 sys sys 1047490336 321
 sys/src/cmd/upas/fs/plan9.c - 664 sys sys 1047490343 7464
 sys/src/cmd/upas/fs/plan9.c - 664 sys sys 1047490343 7464
 sys/src/cmd/upas/fs/pop3.c - 664 sys sys 1063854740 12408
 sys/src/cmd/upas/fs/pop3.c - 664 sys sys 1063854740 12408
@@ -10536,7 +10542,7 @@ sys/src/cmd/upas/pop3/pop3.c - 664 sys sys 1063854524 14283
 sys/src/cmd/upas/q - 20000000775 sys sys 988250019 0
 sys/src/cmd/upas/q - 20000000775 sys sys 988250019 0
 sys/src/cmd/upas/q/mkfile - 664 sys sys 1031707299 290
 sys/src/cmd/upas/q/mkfile - 664 sys sys 1031707299 290
 sys/src/cmd/upas/q/qer.c - 664 sys sys 1014926528 3179
 sys/src/cmd/upas/q/qer.c - 664 sys sys 1014926528 3179
-sys/src/cmd/upas/q/runq.c - 664 sys sys 1038186990 11851
+sys/src/cmd/upas/q/runq.c - 664 sys sys 1063858968 11982
 sys/src/cmd/upas/scanmail - 20000000775 sys sys 988250021 0
 sys/src/cmd/upas/scanmail - 20000000775 sys sys 988250021 0
 sys/src/cmd/upas/scanmail/common.c - 664 sys sys 1015013177 12385
 sys/src/cmd/upas/scanmail/common.c - 664 sys sys 1015013177 12385
 sys/src/cmd/upas/scanmail/mkfile - 664 sys sys 1031707308 362
 sys/src/cmd/upas/scanmail/mkfile - 664 sys sys 1031707308 362
@@ -10943,7 +10949,7 @@ sys/src/lib9p/parse.c - 664 sys sys 1032324435 2050
 sys/src/lib9p/post.c - 664 sys sys 1044429937 364
 sys/src/lib9p/post.c - 664 sys sys 1044429937 364
 sys/src/lib9p/post.h - 664 sys sys 1029850260 201
 sys/src/lib9p/post.h - 664 sys sys 1029850260 201
 sys/src/lib9p/ramfs.c - 664 sys sys 1030450927 2534
 sys/src/lib9p/ramfs.c - 664 sys sys 1030450927 2534
-sys/src/lib9p/req.c - 664 sys sys 1044429938 1551
+sys/src/lib9p/req.c - 664 sys sys 1063859068 1637
 sys/src/lib9p/srv.c - 664 sys sys 1050583820 16705
 sys/src/lib9p/srv.c - 664 sys sys 1050583820 16705
 sys/src/lib9p/tpost.c - 664 sys sys 1044429939 324
 sys/src/lib9p/tpost.c - 664 sys sys 1044429939 324
 sys/src/lib9p/uid.c - 664 sys sys 1015023311 517
 sys/src/lib9p/uid.c - 664 sys sys 1015023311 517
@@ -11229,7 +11235,7 @@ sys/src/libc/arm/tas.s - 664 sys sys 984709514 62
 sys/src/libc/arm/vlop.s - 664 sys sys 984709514 262
 sys/src/libc/arm/vlop.s - 664 sys sys 984709514 262
 sys/src/libc/arm/vlrt.c - 664 sys sys 984709514 8865
 sys/src/libc/arm/vlrt.c - 664 sys sys 984709514 8865
 sys/src/libc/fmt - 20000000775 sys sys 1014927318 0
 sys/src/libc/fmt - 20000000775 sys sys 1014927318 0
-sys/src/libc/fmt/dofmt.c - 664 sys sys 1039753802 8626
+sys/src/libc/fmt/dofmt.c - 664 sys sys 1063859138 8582
 sys/src/libc/fmt/dorfmt.c - 664 sys sys 1014927313 777
 sys/src/libc/fmt/dorfmt.c - 664 sys sys 1014927313 777
 sys/src/libc/fmt/errfmt.c - 664 sys sys 1016731560 175
 sys/src/libc/fmt/errfmt.c - 664 sys sys 1016731560 175
 sys/src/libc/fmt/fltfmt.c - 664 sys sys 1034952854 4339
 sys/src/libc/fmt/fltfmt.c - 664 sys sys 1034952854 4339
@@ -11238,7 +11244,7 @@ sys/src/libc/fmt/fmtdef.h - 664 sys sys 1018029975 1808
 sys/src/libc/fmt/fmtfd.c - 664 sys sys 1014927314 508
 sys/src/libc/fmt/fmtfd.c - 664 sys sys 1014927314 508
 sys/src/libc/fmt/fmtlock.c - 664 sys sys 1014927314 134
 sys/src/libc/fmt/fmtlock.c - 664 sys sys 1014927314 134
 sys/src/libc/fmt/fmtprint.c - 664 sys sys 1014927314 465
 sys/src/libc/fmt/fmtprint.c - 664 sys sys 1014927314 465
-sys/src/libc/fmt/fmtquote.c - 664 sys sys 1034959808 4732
+sys/src/libc/fmt/fmtquote.c - 664 sys sys 1063859096 4705
 sys/src/libc/fmt/fmtrune.c - 664 sys sys 1014927314 314
 sys/src/libc/fmt/fmtrune.c - 664 sys sys 1014927314 314
 sys/src/libc/fmt/fmtstr.c - 664 sys sys 1048801026 140
 sys/src/libc/fmt/fmtstr.c - 664 sys sys 1048801026 140
 sys/src/libc/fmt/fmtvprint.c - 664 sys sys 1014927315 449
 sys/src/libc/fmt/fmtvprint.c - 664 sys sys 1014927315 449

+ 84 - 0
dist/replica/plan9.log

@@ -13258,3 +13258,87 @@
 1063855914 48 c sys/src/cmd/plumb/match.c - 664 sys sys 1063854983 8191
 1063855914 48 c sys/src/cmd/plumb/match.c - 664 sys sys 1063854983 8191
 1063855914 49 c sys/src/cmd/sam/mesg.c - 664 sys sys 1063854937 14046
 1063855914 49 c sys/src/cmd/sam/mesg.c - 664 sys sys 1063854937 14046
 1063855914 50 d sys/src/cmd/dict/mkindex - 775 sys sys 944960881 0
 1063855914 50 d sys/src/cmd/dict/mkindex - 775 sys sys 944960881 0
+1063857716 0 c rc/bin/a: - 775 sys sys 1063856406 255
+1063857716 1 c sys/doc/rc.ms - 664 sys sys 1063856321 34373
+1063857716 2 c sys/doc/release4.ms - 664 sys sys 1063856338 5160
+1063857716 3 c sys/doc/fossil.ms - 664 sys sys 1063856349 31400
+1063857716 4 c sys/games/lib/fortunes - 664 sys sys 1063856231 244987
+1063857716 5 c sys/lib/dist/pc/inst/bootsetup - 775 sys sys 1063856192 3551
+1063857716 6 a sys/lib/dist/pc/inst/configfs - 775 sys sys 1063856192 538
+1063857716 7 c sys/lib/dist/pc/inst/defs - 664 sys sys 1063856187 2728
+1063857716 8 c sys/lib/dist/pc/inst/download - 775 sys sys 1063856193 1237
+1063857716 9 a sys/lib/dist/pc/inst/fmtfossil - 775 sys sys 1063856193 1990
+1063857716 10 a sys/lib/dist/pc/inst/fmtventi - 775 sys sys 1063856189 3345
+1063857716 11 c sys/lib/dist/pc/inst/halt - 775 sys sys 1063856192 497
+1063857716 12 a sys/lib/dist/pc/inst/isfossil - 775 sys sys 1063856189 385
+1063857716 13 a sys/lib/dist/pc/inst/isventi - 775 sys sys 1063856189 228
+1063857716 14 a sys/lib/dist/pc/inst/isventiarenas - 775 sys sys 1063856189 258
+1063857716 15 a sys/lib/dist/pc/inst/isventiisect - 775 sys sys 1063856190 256
+1063857716 16 c sys/lib/dist/pc/inst/main - 775 sys sys 1063856189 1952
+1063857716 17 a sys/lib/dist/pc/inst/mountfossil - 775 sys sys 1063856193 3556
+1063857716 18 c sys/lib/dist/pc/inst/mountfs - 775 sys sys 1063856188 217
+1063857716 19 a sys/lib/dist/pc/inst/mountkfs - 775 sys sys 1063856188 2481
+1063857716 20 c sys/lib/dist/pc/inst/partdisk - 775 sys sys 1063856191 1828
+1063857716 21 c sys/lib/dist/pc/inst/prepdisk - 775 sys sys 1063856190 1604
+1063857716 22 c sys/lib/dist/pc/mkfile - 664 sys sys 1063856155 2026
+1063857716 23 c sys/lib/dist/pc/proto - 664 sys sys 1063856156 4312
+1063857716 24 c sys/lib/dist/pc/sub/bunzip2 - 664 sys sys 1063856127 46
+1063857716 25 c sys/lib/dist/pc/sub/ramfs - 775 sys sys 1063856126 48
+1063857716 26 c sys/lib/dist/pc/sub/termrc - 664 sys sys 1063856126 1965
+1063857716 27 c sys/lib/lp/bin/lpscratch - 775 sys sys 1063856100 908
+1063857716 28 c sys/lib/mimetype - 664 sys sys 1063856077 5336
+1063857716 29 c sys/man/8/ventiaux - 664 sys sys 1063855987 10487
+1063857716 30 c sys/src/9/boot/aux.c - 664 sys sys 1063857702 2579
+1063857716 31 c sys/src/9/boot/boot.c - 664 sys sys 1063857658 5334
+1063857716 32 c sys/src/9/boot/boot.h - 664 sys sys 1063857659 1785
+1063857716 33 c sys/src/9/boot/bootcache.c - 664 sys sys 1063857645 1579
+1063857716 34 c sys/src/9/boot/bootip.c - 664 sys sys 1063857634 3405
+1063857716 35 c sys/src/9/boot/local.c - 664 sys sys 1063857543 5325
+1063857716 36 c sys/src/9/ip/ip.h - 664 sys sys 1063857527 16054
+1063857716 37 c sys/src/9/ip/ipifc.c - 664 sys sys 1063857527 37499
+1063857716 38 c sys/src/9/mkfile - 664 sys sys 1063857477 205
+1063857716 39 c sys/src/9/pc/devusb.c - 664 sys sys 1063857423 18352
+1063857716 40 c sys/src/9/pc/devvga.c - 664 sys sys 1063857412 8714
+1063857716 41 c sys/src/9/pc/etherelnk3.c - 664 sys sys 1063857363 48522
+1063857716 42 c sys/src/9/pc/usb.h - 664 sys sys 1063857246 3566
+1063857716 43 c sys/src/9/pc/usbuhci.c - 664 sys sys 1063857239 30688
+1063857716 44 c sys/src/9/port/devsrv.c - 664 sys sys 1063856594 5197
+1063857716 45 c sys/src/9/port/master - 664 sys sys 1063856961 516
+1063857716 46 c sys/src/9/port/mkfile - 664 sys sys 1063856960 350
+1063857716 47 c sys/src/9/port/qio.c - 664 sys sys 1063857200 23407
+1063857716 48 c sys/src/9/port/qlock.c - 664 sys sys 1063857173 3311
+1063857716 49 a sys/src/9/port/master.local - 664 sys sys 1063856961 130
+1063857716 50 d sys/lib/sysconfig/fl - 20000000775 sys sys 1042004836 0
+1063857716 51 d sys/lib/sysconfig/fl/boot - 775 sys sys 1048637071 0
+1063857716 52 d sys/lib/sysconfig/fl/flproto - 664 sys sys 1048637070 0
+1063857716 53 d sys/lib/sysconfig/fl/venti.conf - 664 sys sys 1042004837 0
+1063857716 54 d sys/src/9/boot/libboot.a8 - 664 sys sys 1062721685 0
+1063859516 0 c sys/lib/acid/kernel - 664 sys sys 1063858104 4994
+1063859516 1 c sys/lib/acid/pool - 664 sys sys 1063858105 4898
+1063859516 2 c sys/lib/acid/thread - 664 sys sys 1063858106 5979
+1063859516 3 c sys/lib/dist/cmd/bargraph.c - 664 sys sys 1063858117 5849
+1063859516 4 c sys/man/8/boot - 664 sys sys 1063858248 8362
+1063859516 5 c sys/man/8/cron - 664 sys sys 1063858596 1867
+1063859516 6 c sys/src/9/pc/vgavmware.c - 664 sys sys 1063858321 6398
+1063859516 7 c sys/src/ape/lib/bsd/gettimeofday.c - 664 sys sys 1063858406 756
+1063859516 8 c sys/src/cmd/acid/builtin.c - 664 sys sys 1063859225 19980
+1063859516 9 c sys/src/cmd/auth/cron.c - 664 sys sys 1063858528 11410
+1063859516 10 c sys/src/cmd/ssh/ssh.c - 664 sys sys 1063858802 9635
+1063859516 11 c sys/src/cmd/ssh/util.c - 664 sys sys 1063858753 4478
+1063859516 12 c sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1063858849 28505
+1063859516 13 c sys/src/cmd/upas/q/runq.c - 664 sys sys 1063858968 11982
+1063859516 14 c sys/src/cmd/fossil/cache.c - 664 sys sys 1063859017 43398
+1063859516 15 c sys/src/cmd/tprof.c - 664 sys sys 1063858806 2716
+1063859516 16 c sys/src/lib9p/req.c - 664 sys sys 1063859068 1637
+1063859516 17 c sys/src/libc/fmt/dofmt.c - 664 sys sys 1063859138 8582
+1063859516 18 c sys/src/libc/fmt/fmtquote.c - 664 sys sys 1063859096 4705
+1063861713 0 c sys/src/cmd/ndb/dnsdebug.c - 664 sys sys 1063861697 8449
+1063861713 1 c sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1063861697 7085
+1063897300 0 c sys/src/cmd/aux/timesync.c - 664 sys sys 1063897024 24500
+1063897300 1 c sys/src/cmd/upas/fs/fs.c - 664 sys sys 1063896947 27346
+1063899104 0 c sys/src/cmd/ip/dhcpd/mkfile - 664 sys sys 1063897571 433
+1063899104 1 a sys/src/cmd/ip/gizzard.c - 664 sys sys 1063897565 8950
+1063899104 2 c sys/src/cmd/ip/imap4d/mkfile - 664 sys sys 1063897579 332
+1063899104 3 c sys/src/cmd/ip/mkfile - 664 sys sys 1063897563 1250
+1063899104 4 c sys/src/cmd/ip/ppp/mkfile - 664 sys sys 1063897576 352
+1063899104 5 c sys/src/cmd/ip/tftpd.c - 664 sys sys 1063897567 7186

+ 20 - 0
sys/lib/acid/kernel

@@ -249,6 +249,26 @@ defn up() {
 	return mach.externup;
 	return mach.externup;
 }
 }
 
 
+defn intrcount() {
+	local p, pp, t, i, j;
+
+	p = intrtimes;
+	i=0;
+	loop 1,256 do {
+		pp = p[i];
+		i=i+1;
+		if pp != 0 then {
+			j=0;
+			t=0;
+			loop 1,1000 do {
+				t = t+pp[j];
+				j=j+1;
+			}
+			print(itoa(i, "%5d"), " ", itoa(t, "%11d"), "\n");
+		}
+	}
+}
+
 print("/sys/lib/acid/kernel");
 print("/sys/lib/acid/kernel");
 
 
 defn needacid(s){
 defn needacid(s){

+ 53 - 1
sys/lib/acid/pool

@@ -206,7 +206,7 @@ checkarena(arena)
 
 
 	atail = A2TB(arena);
 	atail = A2TB(arena);
 	complex Bhdr arena;
 	complex Bhdr arena;
-	b = a;
+	b = arena;
 	while b.magic != ARENATAIL_MAGIC && b < atail do {
 	while b.magic != ARENATAIL_MAGIC && b < atail do {
 		checkblock(b);
 		checkblock(b);
 		if B2NB(b) == b then {
 		if B2NB(b) == b then {
@@ -225,6 +225,7 @@ defn
 checkpool(p)
 checkpool(p)
 {
 {
 	complex Pool p;
 	complex Pool p;
+	local a;
 	a = p.arenalist;
 	a = p.arenalist;
 
 
 	while a != 0 do {
 	while a != 0 do {
@@ -252,3 +253,54 @@ dumptree(f)
 {
 {
 	gendumptree(f, 0, "*");
 	gendumptree(f, 0, "*");
 }
 }
+
+defn
+poolwhopointsat(p, addr)
+{
+	complex Pool p;
+	local a;
+
+	a = p.arenalist;
+	while a != 0 do {
+		complex Arena a;
+		arenawhopointsat(a, addr);
+		a = a.down;
+	}
+}
+
+defn 
+arenawhopointsat(arena, addr)
+{
+	local atail, b;
+
+	atail = A2TB(arena);
+	complex Bhdr arena;
+	b = arena;
+	while b < atail do {
+		if *b == addr then 
+			print(b\X, "\n");
+		b = b+4;
+	}
+}
+
+defn
+whopointsat(addr)
+{
+	poolwhopointsat(*mainmem, addr);
+}
+
+defn
+blockhdr(addr)
+{
+	addr = addr & ~3;
+
+	while *addr != FREE_MAGIC 
+		&& *addr !=  ARENA_MAGIC
+		&& *addr != UNKEMPT_MAGIC
+		&& *addr != KEMPT_MAGIC
+		&& *addr != ARENATAIL_MAGIC
+	do
+		addr = addr-4;
+	return addr;
+}
+

+ 10 - 2
sys/lib/acid/thread

@@ -75,6 +75,12 @@ defn fnname(a){
 	return itoa(a, "%x");
 	return itoa(a, "%x");
 }
 }
 
 
+stkignorelist = {};
+
+defn stkignore(s){
+	append stkignorelist, s;
+}
+
 defn threadstkline(T){
 defn threadstkline(T){
 	local stk, frame, pc, pc0, file, lastpc0, s, sym, i, stop;
 	local stk, frame, pc, pc0, file, lastpc0, s, sym, i, stop;
 
 
@@ -91,14 +97,16 @@ defn threadstkline(T){
 	while stk && !stop do {
 	while stk && !stop do {
 		file = pcfile(pc);
 		file = pcfile(pc);
 		if !regexp("^/sys/src/libc/", file)
 		if !regexp("^/sys/src/libc/", file)
-		&& !regexp("^/sys/src/libthread/", file) then
+		&& !regexp("^/sys/src/libthread/", file) 
+		&& match(file, stkignore)==-1 then
 			stop = 1;
 			stop = 1;
 		else{
 		else{
 			lastpc0 = pc0;
 			lastpc0 = pc0;
 			frame = head stk;
 			frame = head stk;
 			stk = tail stk;
 			stk = tail stk;
-			pc0 = frame[0];
+			nextframe = head stk;
 			pc = frame[1];
 			pc = frame[1];
+			pc0 = nextframe[0];
 		}
 		}
 	}
 	}
 	file = pcfile(pc);
 	file = pcfile(pc);

+ 60 - 29
sys/lib/dist/cmd/bargraph.c

@@ -7,10 +7,11 @@
 enum {PNCTL=3};
 enum {PNCTL=3};
 
 
 static char* rdenv(char*);
 static char* rdenv(char*);
-void newwin(char*);
+int newwin(char*);
 Rectangle screenrect(void);
 Rectangle screenrect(void);
 
 
 int nokill;
 int nokill;
+int textmode;
 char *title;
 char *title;
 
 
 Image *light;
 Image *light;
@@ -27,26 +28,51 @@ initcolor(void)
 
 
 Rectangle rbar;
 Rectangle rbar;
 Point ptext;
 Point ptext;
-long n, d;
+vlong n, d;
 int last;
 int last;
 int lastp;
 int lastp;
+int first = 1;
+
+char backup[80];
 
 
 void
 void
 drawbar(void)
 drawbar(void)
 {
 {
-	int i;
+	int i, j;
 	int p;
 	int p;
-	char buf[10];
+	char buf[10], bar[100];
 
 
 	if(n > d || n < 0 || d <= 0)
 	if(n > d || n < 0 || d <= 0)
 		return;
 		return;
 
 
-	i = (Dx(rbar)*(vlong)n)/d;
+	i = (Dx(rbar)*n)/d;
 	p = (n*100LL)/d;
 	p = (n*100LL)/d;
 
 
 	if(lastp == p && last == i)
 	if(lastp == p && last == i)
 		return;
 		return;
 
 
+	if(textmode){
+		bar[0] = '|';
+		for(j=0; j<i; j++)
+			bar[j+1] = '#';
+		for(; j<60; j++)
+			bar[j+1] = '-';
+		bar[61] = '|';
+		bar[62] = ' ';
+		sprint(bar+63, "%3d%%", p);
+		if(first)
+			first = 0;
+		else{
+			for(i=0; i<strlen(bar); i++)
+				backup[i] = '\b';
+			write(1, backup, i);
+		}
+		write(1, bar, strlen(bar));
+		lastp = p;
+		last = i;
+		return;
+	}
+		
 	if(lastp != p){
 	if(lastp != p){
 		sprint(buf, "%d%%", p);
 		sprint(buf, "%d%%", p);
 		
 		
@@ -100,7 +126,7 @@ bar(Biobuf *b)
 	parent = getpid();
 	parent = getpid();
 
 
 	die = 0;
 	die = 0;
-	switch(child = rfork(RFMEM|RFPROC)) {
+	if(!textmode) switch(child = rfork(RFMEM|RFPROC)) {
 	case 0:
 	case 0:
 		sleep(1000);
 		sleep(1000);
 		while(!die && (k = eread(Ekeyboard|Emouse, &e))) {
 		while(!die && (k = eread(Ekeyboard|Emouse, &e))) {
@@ -117,8 +143,8 @@ bar(Biobuf *b)
 		p[Blinelen(b)-1] = '\0';
 		p[Blinelen(b)-1] = '\0';
 		if(tokenize(p, f, 2) != 2)
 		if(tokenize(p, f, 2) != 2)
 			continue;
 			continue;
-		n = atol(f[0]);
-		d = atol(f[1]);
+		n = strtoll(f[0], 0, 0);
+		d = strtoll(f[1], 0, 0);
 		drawbar();
 		drawbar();
 	}
 	}
 	postnote(PNCTL, child, "kill");
 	postnote(PNCTL, child, "kill");
@@ -129,7 +155,7 @@ bar(Biobuf *b)
 void
 void
 usage(void)
 usage(void)
 {
 {
-	fprint(2, "usage: bargraph [-w minx,miny,maxx,maxy] 'title'\n");
+	fprint(2, "usage: bargraph [-kt] [-w minx,miny,maxx,maxy] 'title'\n");
 	exits("usage");
 	exits("usage");
 }
 }
 
 
@@ -140,12 +166,15 @@ main(int argc, char **argv)
 	char *p, *q;
 	char *p, *q;
 	int lfd;
 	int lfd;
 
 
-	p = "0,0,200,40";
+	p = "0,0,200,60";
 	
 	
 	ARGBEGIN{
 	ARGBEGIN{
 	case 'w':
 	case 'w':
 		p = ARGF();
 		p = ARGF();
 		break;
 		break;
+	case 't':
+		textmode = 1;
+		break;
 	case 'k':
 	case 'k':
 		nokill = 1;
 		nokill = 1;
 		break;
 		break;
@@ -162,15 +191,16 @@ main(int argc, char **argv)
 
 
 	while(q = strchr(p, ','))
 	while(q = strchr(p, ','))
 		*q = ' ';
 		*q = ' ';
-	newwin(p);
-
-	initdraw(0, 0, "bar");
-	initcolor();
-
-	einit(Emouse|Ekeyboard);
-
 	Binit(&b, lfd, OREAD);
 	Binit(&b, lfd, OREAD);
-	eresized(0);
+	if(textmode || newwin(p) < 0){
+		textmode = 1;
+		rbar = Rect(0, 0, 60, 1);
+	}else{
+		initdraw(0, 0, "bar");
+		initcolor();
+		einit(Emouse|Ekeyboard);
+		eresized(0);
+	}
 	bar(&b);
 	bar(&b);
 }
 }
 
 
@@ -198,7 +228,7 @@ rdenv(char *name)
 	return v;
 	return v;
 }
 }
 
 
-void
+int
 newwin(char *win)
 newwin(char *win)
 {
 {
 	char *srv, *mntsrv;
 	char *srv, *mntsrv;
@@ -207,8 +237,8 @@ newwin(char *win)
 
 
 	switch(rfork(RFFDG|RFPROC|RFNAMEG|RFENVG|RFNOTEG|RFNOWAIT)){
 	switch(rfork(RFFDG|RFPROC|RFNAMEG|RFENVG|RFNOTEG|RFNOWAIT)){
 	case -1:
 	case -1:
-		fprint(2, "page: can't fork: %r\n");
-		exits("no fork");
+		fprint(2, "bargraph: can't fork: %r\n");
+		return -1;
 	case 0:
 	case 0:
 		break;
 		break;
 	default:
 	default:
@@ -219,8 +249,8 @@ newwin(char *win)
 	if(srv == 0){
 	if(srv == 0){
 		mntsrv = rdenv("/mnt/term/env/wsys");
 		mntsrv = rdenv("/mnt/term/env/wsys");
 		if(mntsrv == 0){
 		if(mntsrv == 0){
-			fprint(2, "page: can't find $wsys\n");
-			exits("srv");
+			fprint(2, "bargraph: can't find $wsys\n");
+			return -1;
 		}
 		}
 		srv = malloc(strlen(mntsrv)+10);
 		srv = malloc(strlen(mntsrv)+10);
 		sprint(srv, "/mnt/term%s", mntsrv);
 		sprint(srv, "/mnt/term%s", mntsrv);
@@ -231,13 +261,13 @@ newwin(char *win)
 	srvfd = open(srv, ORDWR);
 	srvfd = open(srv, ORDWR);
 	free(srv);
 	free(srv);
 	if(srvfd == -1){
 	if(srvfd == -1){
-		fprint(2, "page: can't open %s: %r\n", srv);
-		exits("no srv");
+		fprint(2, "bargraph: can't open %s: %r\n", srv);
+		return -1;
 	}
 	}
 	sprint(spec, "new -r %s", win);
 	sprint(spec, "new -r %s", win);
 	if(mount(srvfd, -1, "/mnt/wsys", 0, spec) == -1){
 	if(mount(srvfd, -1, "/mnt/wsys", 0, spec) == -1){
-		fprint(2, "page: can't mount /mnt/wsys: %r (spec=%s)\n", spec);
-		exits("no mount");
+		fprint(2, "bargraph: can't mount /mnt/wsys: %r (spec=%s)\n", spec);
+		return -1;
 	}
 	}
 	close(srvfd);
 	close(srvfd);
 	unmount("/mnt/acme", "/dev");
 	unmount("/mnt/acme", "/dev");
@@ -245,8 +275,8 @@ newwin(char *win)
 	cons = open("/dev/cons", OREAD);
 	cons = open("/dev/cons", OREAD);
 	if(cons==-1){
 	if(cons==-1){
 	NoCons:
 	NoCons:
-		fprint(2, "page: can't open /dev/cons: %r");
-		exits("no cons");
+		fprint(2, "bargraph: can't open /dev/cons: %r");
+		return -1;
 	}
 	}
 	dup(cons, 0);
 	dup(cons, 0);
 	close(cons);
 	close(cons);
@@ -257,6 +287,7 @@ newwin(char *win)
 	dup(cons, 2);
 	dup(cons, 2);
 	close(cons);
 	close(cons);
 //	wctlfd = open("/dev/wctl", OWRITE);
 //	wctlfd = open("/dev/wctl", OWRITE);
+	return 0;
 }
 }
 
 
 Rectangle
 Rectangle

+ 4 - 3
sys/man/8/boot

@@ -304,11 +304,12 @@ The loopback interface is still configured.
 same as the last but specify alternate venti service and web addresses.
 same as the last but specify alternate venti service and web addresses.
 The loopback interface is still configured.
 The loopback interface is still configured.
 .TP
 .TP
-.B tcp!135.104.9.2!17034
+.B tcp!135.104.9.2!17034 \fR[ \fIargs\fR ]
 the network address of a venti server running on a separate machine.
 the network address of a venti server running on a separate machine.
 .I Boot
 .I Boot
-will configure the IP stack by passing any remaining
-boot arguments to
+will configure the IP stack by passing
+.IR args ,
+if any, to
 .IR ipconfig (8).
 .IR ipconfig (8).
 .PP
 .PP
 If the disk is not a
 If the disk is not a

+ 10 - 0
sys/man/8/cron

@@ -86,6 +86,16 @@ The user's profile is run with
 .B $service
 .B $service
 set to
 set to
 .BR rx .
 .BR rx .
+If
+.I host
+is
+set to
+.BR local ,
+.I cron
+will run the command as
+.I user
+on the local machine without using
+.BR rx .
 .PP
 .PP
 .I Cron
 .I Cron
 is not a reliable service.
 is not a reliable service.

+ 20 - 15
sys/src/9/boot/aux.c

@@ -109,8 +109,10 @@ setenv(char *name, char *val)
 
 
 	snprint(ename, sizeof ename, "#e/%s", name);
 	snprint(ename, sizeof ename, "#e/%s", name);
 	f = create(ename, 1, 0666);
 	f = create(ename, 1, 0666);
-	if(f < 0)
+	if(f < 0){
+		fprint(2, "create %s: %r\n", ename);
 		return;
 		return;
+	}
 	write(f, val, strlen(val));
 	write(f, val, strlen(val));
 	close(f);
 	close(f);
 }
 }
@@ -138,13 +140,13 @@ srvcreate(char *name, int fd)
 	close(f);
 	close(f);
 }
 }
 
 
-static int
+void
 catchint(void *a, char *note)
 catchint(void *a, char *note)
 {
 {
 	USED(a);
 	USED(a);
 	if(strcmp(note, "alarm") == 0)
 	if(strcmp(note, "alarm") == 0)
-		return 1;
-	return 0;
+		noted(NCONT);
+	noted(NDFLT);
 }
 }
 
 
 int
 int
@@ -153,21 +155,24 @@ outin(char *prompt, char *def, int len)
 	int n;
 	int n;
 	char buf[256];
 	char buf[256];
 
 
-	atnotify(catchint, 1);
-	if(cpuflag)
+	if(len >= sizeof buf)
+		len = sizeof(buf)-1;
+
+	if(cpuflag){
+		notify(catchint);
 		alarm(15*1000);
 		alarm(15*1000);
-	do{
-		print("%s[%s]: ", prompt, *def ? def : "no default");
-		n = read(0, buf, len);
-		if(cpuflag)
-			alarm(15*1000);
-	}while(n==0);
-	if(cpuflag)
+	}
+	print("%s[%s]: ", prompt, *def ? def : "no default");
+	memset(buf, 0, sizeof buf);
+	n = read(0, buf, len);
+	if(cpuflag){
 		alarm(0);
 		alarm(0);
-	atnotify(catchint, 0);
+		notify(0);
+	}
+
 	if(n < 0)
 	if(n < 0)
 		return 1;
 		return 1;
-	if(n != 1){
+	if(n > 1){
 		buf[n-1] = 0;
 		buf[n-1] = 0;
 		strcpy(def, buf);
 		strcpy(def, buf);
 	}
 	}

+ 3 - 3
sys/src/9/boot/boot.c

@@ -39,10 +39,10 @@ boot(int argc, char *argv[])
 	bind("#c", "/dev", MAFTER);
 	bind("#c", "/dev", MAFTER);
 	/*
 	/*
 	 * init will reinitialize its namespace.
 	 * init will reinitialize its namespace.
-	 * #ec gets us plan9.ini settings.
+	 * #ec gets us plan9.ini settings (*var variables).
 	 */
 	 */
-	bind("#ec", "/env", MREPL|MCREATE);
-	bind("#e", "/env", MAFTER);
+	bind("#ec", "/env", MREPL);
+	bind("#e", "/env", MBEFORE|MCREATE);
 	bind("#s", "/srv", MREPL|MCREATE);
 	bind("#s", "/srv", MREPL|MCREATE);
 #ifdef DEBUG
 #ifdef DEBUG
 	print("argc=%d\n", argc);
 	print("argc=%d\n", argc);

+ 1 - 1
sys/src/9/boot/boot.h

@@ -70,7 +70,7 @@ extern int	connectpaq(void);
 extern void	configembed(Method*);
 extern void	configembed(Method*);
 extern int	connectembed(void);
 extern int	connectembed(void);
 
 
-extern void	configip(void);
+extern void	configip(int, char**, int);
 
 
 /* hack for passing authentication address */
 /* hack for passing authentication address */
 extern char	*authaddr;
 extern char	*authaddr;

+ 2 - 0
sys/src/9/boot/bootcache.c

@@ -39,6 +39,8 @@ cache(int fd)
 				bd[i-4] = 0;
 				bd[i-4] = 0;
 			else if(strcmp("fs", &bd[i-2]) == 0)
 			else if(strcmp("fs", &bd[i-2]) == 0)
 				bd[i-2] = 0;
 				bd[i-2] = 0;
+			else if(strcmp("fossil", &bd[i-6]) == 0)
+				bd[i-6] = 0;
 			sprint(partition, "%scache", bd);
 			sprint(partition, "%scache", bd);
 			if(stat(partition, statbuf, sizeof statbuf) < 0)
 			if(stat(partition, statbuf, sizeof statbuf) < 0)
 				*bd = 0;
 				*bd = 0;

+ 7 - 10
sys/src/9/boot/bootip.c

@@ -12,8 +12,9 @@ static int isvalidip(uchar*);
 static void netndb(char*, uchar*);
 static void netndb(char*, uchar*);
 static void netenv(char*, uchar*);
 static void netenv(char*, uchar*);
 
 
+
 void
 void
-configip(void)
+configip(int bargc, char **bargv, int needfs)
 {
 {
 	int argc, pid;
 	int argc, pid;
 	char **argv, *p;
 	char **argv, *p;
@@ -56,7 +57,6 @@ configip(void)
 	bind("#l3", mpoint, MAFTER);
 	bind("#l3", mpoint, MAFTER);
 	werrstr("");
 	werrstr("");
 
 
-	print("ip...");
 	/* let ipconfig configure the ip interface */
 	/* let ipconfig configure the ip interface */
 	switch(pid = fork()){
 	switch(pid = fork()){
 	case -1:
 	case -1:
@@ -81,6 +81,9 @@ configip(void)
 		free(w);
 		free(w);
 	}
 	}
 
 
+	if(!needfs)
+		return;
+
 	/* if we didn't get a file and auth server, query user */
 	/* if we didn't get a file and auth server, query user */
 	netndb("fs", fsip);
 	netndb("fs", fsip);
 	if(!isvalidip(fsip))
 	if(!isvalidip(fsip))
@@ -113,13 +116,7 @@ setauthaddr(char *proto, int port)
 void
 void
 configtcp(Method*)
 configtcp(Method*)
 {
 {
-	sleep(100);
-	print("t");
-	sleep(100);
-	configip();
-	sleep(100);
-	print(".");
-	sleep(100);
+	configip(bargc, bargv, 1);
 	setauthaddr("tcp", 567);
 	setauthaddr("tcp", 567);
 }
 }
 
 
@@ -135,7 +132,7 @@ connecttcp(void)
 void
 void
 configil(Method*)
 configil(Method*)
 {
 {
-	configip();
+	configip(bargc, bargv, 1);
 	setauthaddr("tcp", 567);
 	setauthaddr("tcp", 567);
 }
 }
 
 

+ 6 - 3
sys/src/9/pc/vgavmware.c

@@ -214,9 +214,12 @@ vmfifowr(Vmware *vm, ulong v)
 		vmwait(vm);
 		vmwait(vm);
 
 
 	mm[mm[FifoNextCmd]/sizeof(ulong)] = v;
 	mm[mm[FifoNextCmd]/sizeof(ulong)] = v;
-	mm[FifoNextCmd] += sizeof(ulong);
-	if(mm[FifoNextCmd]==mm[FifoMax])
-		mm[FifoNextCmd] = mm[FifoMin];
+
+	/* must do this way so mm[FifoNextCmd] is never mm[FifoMax] */
+	v = mm[FifoNextCmd] + sizeof(ulong);
+	if(v == mm[FifoMax])
+		v = mm[FifoMin];
+	mm[FifoNextCmd] = v;
 }
 }
 
 
 static void
 static void

+ 34 - 2
sys/src/ape/lib/bsd/gettimeofday.c

@@ -1,12 +1,44 @@
 #include <sys/types.h>
 #include <sys/types.h>
 #include <time.h>
 #include <time.h>
 #include <sys/time.h>
 #include <sys/time.h>
+#include <string.h>
+#include "sys9.h"
+
+typedef unsigned long long uvlong;
+typedef long long vlong;
+typedef unsigned char uchar;
+
+static uvlong order = 0x0001020304050607ULL;
+
+static void
+be2vlong(vlong *to, uchar *f)
+{
+	uchar *t, *o;
+	int i;
+
+	t = (uchar*)to;
+	o = (uchar*)&order;
+	for(i = 0; i < 8; i++)
+		t[o[i]] = f[i];
+}
 
 
 int
 int
 gettimeofday(struct timeval *tp, struct timezone *tzp)
 gettimeofday(struct timeval *tp, struct timezone *tzp)
 {
 {
-	tp->tv_sec = time(0);
-	tp->tv_usec = 0;
+	int f;
+	uchar b[8];
+	vlong t;
+
+	memset(b, 0, sizeof b);
+	f = _OPEN("/dev/time", 0);
+	if(f >= 0) {
+		_PREAD(f, b, sizeof(b), 0);
+		_CLOSE(f);
+	}
+	be2vlong(&t, b);
+
+	tp->tv_sec = t/1000000000;
+	tp->tv_usec = (t/1000)%1000000;
 
 
 	if(tzp) {
 	if(tzp) {
 		tzp->tz_minuteswest = 240;
 		tzp->tz_minuteswest = 240;

+ 1 - 1
sys/src/cmd/acid/builtin.c

@@ -883,7 +883,7 @@ regexp(Node *r, Node *args)
 	free(rp);
 	free(rp);
 }
 }
 
 
-char vfmt[] = "aBbcCdDfFgGiIoOqQrRsuUVxXYZ";
+char vfmt[] = "aBbcCdDfFgGiIoOqQrRsSuUVxXYZ";
 
 
 void
 void
 fmt(Node *r, Node *args)
 fmt(Node *r, Node *args)

+ 12 - 1
sys/src/cmd/auth/cron.c

@@ -466,6 +466,18 @@ rexec(User *user, Job *j)
 	 * remote call, auth, cmd with no i/o
 	 * remote call, auth, cmd with no i/o
 	 * give it 2 min to complete
 	 * give it 2 min to complete
 	 */
 	 */
+	if(strcmp(j->host, "local") == 0){
+		if(becomeuser(user->name) < 0){
+			syslog(0, CRONLOG, "%s: can't change uid for %s on %s: %r", user->name, j->cmd, j->host);
+			_exits(0);
+		}
+syslog(0, CRONLOG, "%s: ran '%s' on %s", user->name, j->cmd, j->host);
+		execl("/bin/rc", "rc", "-c", buf, nil);
+		syslog(0, CRONLOG, "%s: exec failed for %s on %s: %r",
+			user->name, j->cmd, j->host);
+		_exits(0);
+	}
+
 	alarm(2*60*1000);
 	alarm(2*60*1000);
 	fd = call(j->host);
 	fd = call(j->host);
 	if(fd < 0){
 	if(fd < 0){
@@ -606,7 +618,6 @@ becomeuser(char *new)
 {
 {
 	char *cap;
 	char *cap;
 	int rv;
 	int rv;
-
 	cap = mkcap(getuser(), new);
 	cap = mkcap(getuser(), new);
 	if(cap == nil)
 	if(cap == nil)
 		return -1;
 		return -1;

+ 20 - 10
sys/src/cmd/aux/timesync.c

@@ -41,6 +41,7 @@ vlong avgdelay;
 vlong lastutc;
 vlong lastutc;
 uchar rootid[4];
 uchar rootid[4];
 char *sysid;
 char *sysid;
+int myprec;
 
 
 // list of time samples
 // list of time samples
 typedef struct Sample Sample;
 typedef struct Sample Sample;
@@ -81,7 +82,6 @@ struct NTPserver
 	uchar	precision;
 	uchar	precision;
 	vlong	rootdelay;
 	vlong	rootdelay;
 	vlong	rootdisp;
 	vlong	rootdisp;
-	vlong	disp;
 	vlong	rtt;
 	vlong	rtt;
 	vlong	dt;
 	vlong	dt;
 };
 };
@@ -100,6 +100,7 @@ static void	background(void);
 static int	caperror(vlong dhz, int tsecs, vlong taccuracy);
 static int	caperror(vlong dhz, int tsecs, vlong taccuracy);
 static long	fstime(void);
 static long	fstime(void);
 static int	gettime(vlong *nsec, uvlong *ticks, uvlong *hz); // returns time, ticks, hz
 static int	gettime(vlong *nsec, uvlong *ticks, uvlong *hz); // returns time, ticks, hz
+static int	getclockprecision(vlong);
 static void	hnputts(void *p, vlong nsec);
 static void	hnputts(void *p, vlong nsec);
 static void	hnputts(void *p, vlong nsec);
 static void	hnputts(void *p, vlong nsec);
 static void	inittime(void);
 static void	inittime(void);
@@ -265,6 +266,7 @@ main(int argc, char **argv)
 	gettime(0, 0, &hz);
 	gettime(0, 0, &hz);
 	minhz = hz - (hz>>2);
 	minhz = hz - (hz>>2);
 	maxhz = hz + (hz>>2);
 	maxhz = hz + (hz>>2);
+	myprec = getclockprecision(hz);
 
 
 	// convert the accuracy from nanoseconds to ticks
 	// convert the accuracy from nanoseconds to ticks
 	taccuracy = hz*accuracy/SEC;
 	taccuracy = hz*accuracy/SEC;
@@ -971,12 +973,7 @@ ntpsample(void)
 	for(tns = ntpservers; tns != nil; tns = tns->next){
 	for(tns = ntpservers; tns != nil; tns = tns->next){
 		if(ntptimediff(tns) < 0)
 		if(ntptimediff(tns) < 0)
 			continue;
 			continue;
-		if(tns->stratum == 0)
-			x = 0xff;
-		else
-			x = tns->stratum;
-		x *= SEC;
-		x += (vabs(tns->rootdelay+tns->rtt)>>1) + tns->rootdisp + tns->rtt;
+		x = vabs(tns->rootdisp) + (vabs(tns->rtt+tns->rootdelay)>>1);
 		if(debug)
 		if(debug)
 			fprint(2, "ntp %s rootdelay %lld rootdisp %lld metric %lld\n",
 			fprint(2, "ntp %s rootdelay %lld rootdisp %lld metric %lld\n",
 				tns->name, tns->rootdelay, tns->rootdisp, x);
 				tns->name, tns->rootdelay, tns->rootdisp, x);
@@ -991,10 +988,9 @@ ntpsample(void)
 
 
 	// save data for our server
 	// save data for our server
 	rootdisp = ns->rootdisp;
 	rootdisp = ns->rootdisp;
-	rootdelay = ns->rootdelay+ns->rtt;
+	rootdelay = ns->rootdelay;
 	mydelay = ns->rtt;
 	mydelay = ns->rtt;
-	x = vabs(ns->dt);
-	mydisp = ns->disp+avgerr;
+	mydisp = avgerr;
 	if(ns->stratum == 0)
 	if(ns->stratum == 0)
 		stratum = 0;
 		stratum = 0;
 	else
 	else
@@ -1100,6 +1096,7 @@ ntpserver(char *servenet)
 
 
 		ntp->mode = (vers<<3)|4;
 		ntp->mode = (vers<<3)|4;
 		ntp->stratum = stratum;
 		ntp->stratum = stratum;
+		ntp->precision = myprec;
 		hnputfp(ntp->rootdelay, rootdelay + mydelay);
 		hnputfp(ntp->rootdelay, rootdelay + mydelay);
 		hnputfp(ntp->rootdisp, rootdisp + mydisp);
 		hnputfp(ntp->rootdisp, rootdisp + mydisp);
 		hnputts(ntp->refts, lastutc);
 		hnputts(ntp->refts, lastutc);
@@ -1286,3 +1283,16 @@ background(void)
 	}
 	}
 	inbackground = 1;
 	inbackground = 1;
 }
 }
+
+static int
+getclockprecision(vlong hz)
+{
+	int i;
+
+	i = 8;
+	while(hz > 0){
+		i--;
+		hz >>= 1;
+	}
+	return i;
+}

+ 9 - 1
sys/src/cmd/fossil/cache.c

@@ -2062,8 +2062,16 @@ flushThread(void *a)
 		vtSleep(c->flush);
 		vtSleep(c->flush);
 		vtUnlock(c->lk);
 		vtUnlock(c->lk);
 		for(i=0; i<FlushSize; i++)
 		for(i=0; i<FlushSize; i++)
-			if(!cacheFlushBlock(c))
+			if(!cacheFlushBlock(c)){
+				/*
+				 * If i==0, could be someone is waking us repeatedly
+				 * to flush the cache but there's no work to do.
+				 * Pause a little.
+				 */
+				if(i==0)
+					sleep(250);
 				break;
 				break;
+			}
 		if(i==0 && c->ndirty){
 		if(i==0 && c->ndirty){
 			/*
 			/*
 			 * All the blocks are being written right now -- there's nothing to do.
 			 * All the blocks are being written right now -- there's nothing to do.

+ 1 - 1
sys/src/cmd/ip/dhcpd/mkfile

@@ -14,7 +14,7 @@ IOFILES=\
 	db.$O\
 	db.$O\
 	ping.$O\
 	ping.$O\
 
 
-HFILES=dat.h
+HFILES=dat.h ../dhcp.h
 
 
 BIN=/$objtype/bin/ip
 BIN=/$objtype/bin/ip
 
 

+ 467 - 0
sys/src/cmd/ip/gizzard.c

@@ -0,0 +1,467 @@
+#include <u.h>
+#include <libc.h>
+#include <ctype.h>
+#include <bio.h>
+#include <ndb.h>
+#include <ip.h>
+
+Biobuf in;
+
+void
+usage(void)
+{
+	fprint(2, "usage: %s [-x netroot]\n", argv0);
+	exits("usage");
+}
+
+char *vec[] =
+{
+	"ip",
+	"ipmask",
+	"dns",
+	"dom",
+	"auth",
+	"authdom",
+	"fs",
+	"sys",
+	"ipgw",
+	"ntp",
+};
+
+char *outvec[] =
+{
+	"ipgw",
+	"dns",
+	"auth",
+	"fs",
+	"ntp",
+	0
+};
+
+enum
+{
+	Tnone,
+	Tip,
+	Tdom,
+	Tmask,
+	Tstring,
+};
+
+typedef struct Attribute Attribute;
+typedef void (Helper)(Attribute*);
+
+struct Attribute
+{
+	char *attr;
+	char *desc;
+	int type;
+	int multiple;
+	Helper *helper;
+};
+
+Helper authdomhelper, authhelper, fshelper;
+
+Attribute expl[] =
+{
+	{ "ip", "ip address on this interface", Tip, 0, nil },
+	{ "ipmask", "ip mask on this interface", Tmask, 0, nil },
+	{ "dns", "domain name server", Tdom, 1, nil },
+	{ "dom", "domain name", Tdom, 0, nil },
+	{ "auth", "authentication server", Tdom, 0, authhelper },
+	{ "authdom", "authentication domain", Tstring, 0, authdomhelper },
+	{ "fs", "file server", Tdom, 0, fshelper },
+	{ "sys", "your system name", Tstring, 0, nil },
+	{ "ipgw", "ip gateway on this network", 0, nil },
+	{ "ntp", "network time server", Tdom, 0, nil },
+	{ 0 },
+};
+
+char *authserver;
+
+Ndbtuple*
+find(char *attr, Ndbtuple *t1, Ndbtuple *t2, Ndbtuple *t3)
+{
+	for(; t1; t1 = t1->entry)
+		if(strcmp(attr, t1->attr) == 0)
+			return t1;
+	for(; t2; t2 = t2->entry)
+		if(strcmp(attr, t2->attr) == 0)
+			return t2;
+	for(; t3; t3 = t3->entry)
+		if(strcmp(attr, t3->attr) == 0)
+			return t3;
+	return nil;
+}
+
+Ndbtuple*
+findnext(Ndbtuple *t, char *attr, Ndbtuple *t1, Ndbtuple *t2, Ndbtuple *t3)
+{
+	if(t == nil)
+		return find(attr, t1, t2, t3);
+	for(; t1; t1 = t1->entry)
+		if(t1 == t)
+			return find(attr, t->entry, t2, t3);
+	for(; t2; t2 = t2->entry)
+		if(t2 == t)
+			return find(attr, t->entry, t3, nil);
+	for(; t3; t3 = t3->entry)
+		if(t3 == t)
+			return find(attr, t->entry, nil, nil);
+	return nil;
+}
+
+Ndbtuple*
+newtuple(char *attr, char *val)
+{
+	Ndbtuple *nt;
+
+	nt = malloc(sizeof *nt);
+	nt->entry = nt->line = nil;
+	strncpy(nt->attr, attr, Ndbalen-1);
+	nt->attr[Ndbalen-1] = 0;
+	strncpy(nt->val, val, Ndbvlen-1);
+	nt->attr[Ndbvlen-1] = 0;
+	return nt;
+}
+
+Ndbtuple*
+duptuple(Ndbtuple *t)
+{
+	Ndbtuple *nt;
+
+	nt = malloc(sizeof *nt);
+	nt->entry = nt->line = nil;
+	strcpy(nt->val, t->val);
+	strcpy(nt->attr, t->attr);
+	return nt;
+}
+
+Ndbtuple*
+concat(Ndbtuple *t1, Ndbtuple *t2)
+{
+	Ndbtuple *t;
+
+	if(t1 == nil)
+		return t2;
+	if(t2 == nil)
+		return t1;
+
+	t = t1;
+	for(; t1->entry != nil; t1 = t1->entry)
+		;
+	t1->entry = t1->line = t2;
+	return t;
+}
+
+void
+removetuple(Ndbtuple **l, Ndbtuple *nt)
+{
+	Ndbtuple *t;
+
+	while(*l != nil){
+		t = *l;
+		if(strcmp(t->attr, nt->attr) == 0
+		&& strcmp(t->val, nt->val) == 0){
+			*l = t->entry;
+			free(t);
+		} else
+			l = &t->entry;
+	}
+}
+
+void
+help(Attribute *e)
+{
+	if(e->helper){
+		print("--------------------------------\n");
+		(*e->helper)(e);
+		print("--------------------------------\n");
+	}
+}
+
+Ndbtuple*
+need(int must, char *attr)
+{
+	char *p;
+	uchar ip[IPaddrlen];
+	int i;
+	Attribute *e;
+	Ndbtuple *first, **l, *t;
+
+	e = nil;
+	for(i = 0; expl[i].attr != nil; i++){
+		if(strcmp(expl[i].attr, attr) == 0){
+			e = &expl[i];
+			break;
+		}
+	}
+	if(e == nil)
+		return nil;
+
+	first = nil;
+	l = &first;
+	for(;;){
+		if(first != nil)
+			must = 0;
+		print("Enter%s %s (type ? for help%s)? ", first!=nil ? " another" : "",
+			e->desc, must!=0 ? "" : ", return to skip");
+
+		p = Brdline(&in, '\n');
+		p[Blinelen(&in)-1] = 0;
+		while(*p == ' ' || *p == '\t')
+			p++;
+
+		if(*p == '?'){
+			help(e);
+			continue;
+		}
+
+		if(*p == 0){
+			if(must)
+				continue;
+			else
+				break;
+		}
+		t = nil;
+		switch(e->type){
+		case Tip:
+			parseip(ip, p);
+			if(ipcmp(ip, IPnoaddr) == 0){
+				print("!not an IP address\n");
+				break;
+			}
+			t = newtuple(attr, p);
+			break;
+		case Tdom:
+			if(strchr(p, '.') == nil && strchr(p, ':') == nil){
+				print("!not an IP address or domain name\n");
+				break;
+			}
+			t = newtuple(attr, p);
+			break;
+		case Tmask:
+			parseipmask(ip, p);
+			if(ipcmp(ip, IPnoaddr) == 0){
+				print("!not an IP mask\n");
+				break;
+			}
+			t = newtuple(attr, p);
+			break;
+		case Tstring:
+			if(strchr(p, ' ')){
+				print("!the string cannot contain spaces\n");
+				break;
+			}
+			t = newtuple(attr, p);
+			break;
+		}
+		if(t != nil){
+			*l = t;
+			l = &t->entry;
+		}
+	}
+
+	return first;	
+}
+
+void
+printnet(Ndbtuple *ndb, Ndbtuple *local, Ndbtuple *added)
+{
+	uchar ip[IPaddrlen];
+	uchar mask[IPaddrlen];
+	uchar net[IPaddrlen];
+	Ndbtuple *t;
+	char **l;
+
+	/* some little calculations */
+	t = find("ip", ndb, local, added);
+	if(t == nil)
+		return;
+	parseip(ip, t->val);
+	t = find("ipmask", ndb, local, added);
+	if(t != nil)
+		parseipmask(mask, t->val);
+	else
+		ipmove(mask, defmask(ip));
+	maskip(ip, mask, net);
+
+	/* print out a sample network database */
+	print("ipnet=mynet ip=%I ipmask=%M\n", net, mask);
+	for(l = outvec; *l; l++){
+		t = nil;
+		while((t = findnext(t, *l, added, ndb, local)) != nil)
+			print("	%s=%s\n", t->attr, t->val);
+	}
+}
+
+void
+printauthdom(Ndbtuple *ndb, Ndbtuple *local, Ndbtuple *added)
+{
+	Ndbtuple *t, *nt;
+
+	t = find("authdom", ndb, local, added);
+	if(t == nil)
+		return;
+	nt = nil;
+	print("authdom=%s\n", t->val);
+	while((nt = findnext(nt, "auth", ndb, local, added)) != nil)
+		print("\tauth=%s\n", nt->val);
+}
+
+void
+printhost(Ndbtuple *added)
+{
+	uchar ip[IPaddrlen];
+	Ndbtuple *t;
+	char **l;
+
+	t = find("ip", added, nil, nil);
+	if(t == nil)
+		return;
+	parseip(ip, t->val);
+	print("ip=%I\n", ip);
+	for(l = outvec; *l; l++){
+		t = nil;
+		while((t = findnext(t, *l, added, nil, nil)) != nil)
+			print("	%s=%s\n", t->attr, t->val);
+	}
+}
+
+void
+main(int argc, char **argv)
+{
+	Ndbs s;
+	char *net;
+	char ndbfile[128];
+	char authdomval[Ndbvlen];
+	Ndb *db, *netdb;
+	Ndbtuple *ndb, *local, *added, *nt, *t, *xt;
+
+	fmtinstall('I', eipfmt);
+	fmtinstall('M', eipfmt);
+
+	db = ndbopen("/lib/ndb/local");
+	Binit(&in, 0, OREAD);
+
+	net = "/net";
+	ARGBEGIN {
+	case 'x':
+		net = ARGF();
+		if(net == nil)
+			usage();
+		break;
+	} ARGEND;
+
+	/* see what ipconfig knows */
+	snprint(ndbfile, sizeof ndbfile, "%s/ndb", net);
+	netdb = ndbopen(ndbfile);
+	ndb = ndbparse(netdb);
+	added = nil;
+
+	/* ask user for ip address */
+	t = find("ip", ndb, added, nil);
+	if(t == nil){
+		t = need(1, "ip");
+		added = concat(added, t);
+	}
+	if(t == nil)
+		sysfatal("cannot continue without your ip address");
+
+	/* see what the database knows */
+	local = ndbipinfo(db, "ip", t->val, vec, nelem(vec));
+
+	/* get hostname */
+	t = find("sys", ndb, local, added);
+	if(t == nil){
+		t = need(1, "sys");
+		added = concat(added, t);
+	}
+
+	/* get auth server */
+	t = find("auth", ndb, local, added);
+	if(t == nil){
+		t = need(0, "auth");
+		added = concat(added, t);
+	}
+	if(t != nil){
+		authserver = t->val;
+		xt = ndbgetval(db, &s, "auth", t->val, "authdom", authdomval);
+		for(nt = find("authdom", xt, nil, nil); nt != nil;
+		    nt = find("authdom", nt->entry, nil, nil))
+			local = concat(local, duptuple(nt));
+		ndbfree(xt);
+		if(xt == nil){
+			t = need(1, "authdom");
+			added = concat(added, t);
+		}
+	}
+
+	/* look for things we need */
+	if(find("ipmask", added, ndb, local) == nil){
+		t = need(0, "ipmask");
+		added = concat(added, t);
+	}
+	if(find("dns", added, ndb, local) == nil){
+		t = need(0, "dns");
+		added = concat(added, t);
+	}
+	if(find("ntp", added, ndb, local) == nil){
+		t = need(0, "ntp");
+		added = concat(added, t);
+	}
+	if(find("fs", added, ndb, local) == nil){
+		t = need(0, "fs");
+		added = concat(added, t);
+	}
+
+	/* remove redundancy */
+	for(t = local; t != nil; t = t->entry)
+		removetuple(&ndb, t);
+
+	print("======================================\n");
+	print("recomended additions to /lib/ndb/local\n");
+	print("======================================\n");
+
+	if(added != nil)
+		printnet(ndb, local, added);
+	printauthdom(ndb, local, added);
+	printhost(added);
+
+	exits(0);
+}
+
+void
+authentication(void)
+{
+	print("\tPlan 9 systems that accept connections from other Plan 9\n");
+	print("\tsystems need to authenticate to each other.  A set of secrets\n");
+	print("\tand authentication servers to validate those secrets is\n");
+	print("\tidentified by a string called an 'authentication domain'.\n");
+	print("\tIf you expect anyone to 'cpu' to or 'import' from your machine,\n");
+	print("\tyour machine must know its authentication domain and the\n");
+	print("\tauthentication server(s) that validate keys for it.\n");
+}
+
+void
+authdomhelper(Attribute *)
+{
+	authentication();
+	print("\n\tEnter the authentication domain that is served by the\n");
+	print("\tauthentication server '%s'.\n", authserver);
+}
+
+void
+authhelper(Attribute *)
+{
+	authentication();
+	print("\n\tEnter the name or address of the default authentication server\n");
+	print("\tto be used by this system.\n");
+}
+
+void
+fshelper(Attribute *)
+{
+	print("\tThis is only important if you are going to run diskless from\n");
+	print("\ta remote server, i.e., if you wish to answer 'il' or 'tcp' to the\n");
+	print("\t'root is from:' boot prompt.\n");
+}

+ 0 - 1
sys/src/cmd/ip/imap4d/mkfile

@@ -27,6 +27,5 @@ UPDATE=\
 	mkfile\
 	mkfile\
 	$HFILES\
 	$HFILES\
 	${OFILES:%.$O=%.c}\
 	${OFILES:%.$O=%.c}\
-	${TARG:%=/386/bin/%}\
 
 
 </sys/src/cmd/mkone
 </sys/src/cmd/mkone

+ 2 - 1
sys/src/cmd/ip/mkfile

@@ -2,6 +2,7 @@
 
 
 TARG = 	dhcpclient\
 TARG = 	dhcpclient\
 	ftpd\
 	ftpd\
+	gizzard\
 	gping\
 	gping\
 	hogports\
 	hogports\
 	ipconfig\
 	ipconfig\
@@ -22,13 +23,13 @@ TARG = 	dhcpclient\
 DIRS=ftpfs dhcpd httpd ppp imap4d snoopy
 DIRS=ftpfs dhcpd httpd ppp imap4d snoopy
 
 
 BIN=/$objtype/bin/ip
 BIN=/$objtype/bin/ip
+HFILES=dhcp.h arp.h bootp.h glob.h telnet.h
 
 
 UPDATE=\
 UPDATE=\
 	mkfile\
 	mkfile\
 	$HFILES\
 	$HFILES\
 	${OFILES:%.$O=%.c}\
 	${OFILES:%.$O=%.c}\
 	${TARG:%=%.c}\
 	${TARG:%=%.c}\
-	${TARG:%=/386/bin/ip/%}\
 
 
 </sys/src/cmd/mkmany
 </sys/src/cmd/mkmany
 
 

+ 0 - 1
sys/src/cmd/ip/ppp/mkfile

@@ -17,7 +17,6 @@ UPDATE=\
 	mkfile\
 	mkfile\
 	$HFILES\
 	$HFILES\
 	${OFILES:%.$O=%.c}\
 	${OFILES:%.$O=%.c}\
-	${TARG:%=/386/bin/ip/%}\
 
 
 </sys/src/cmd/mkone
 </sys/src/cmd/mkone
 
 

+ 3 - 2
sys/src/cmd/ip/tftpd.c

@@ -160,8 +160,9 @@ doserve(int fd)
 	}
 	}
 
 
 	if(restricted){
 	if(restricted){
-		if(strncmp(bigbuf+2, "../", 3) == 0 || strstr(bigbuf+2, "/../") ||
-		  (bigbuf[2] == '/' && strncmp(bigbuf+2, dirsl, dirsllen) != 0)){
+		if(bigbuf[2] == '#' ||
+		  strncmp(bigbuf+2, "../", 3)==0 || strstr(bigbuf+2, "/../") ||
+		  (bigbuf[2] == '/' && strncmp(bigbuf+2, dirsl, dirsllen)!=0)){
 			nak(fd, 4, "Permission denied");
 			nak(fd, 4, "Permission denied");
 			close(fd);
 			close(fd);
 			syslog(dbg, flog, "bad request %d from %s file %s", op, raddr, bigbuf+2);
 			syslog(dbg, flog, "bad request %d from %s file %s", op, raddr, bigbuf+2);

+ 1 - 0
sys/src/cmd/ndb/dnsdebug.c

@@ -23,6 +23,7 @@ int	debug;
 int	cachedb;
 int	cachedb;
 ulong	now;
 ulong	now;
 int	testing;
 int	testing;
+int traceactivity;
 char	*trace;
 char	*trace;
 int	needrefresh;
 int	needrefresh;
 int	resolver;
 int	resolver;

+ 1 - 0
sys/src/cmd/ndb/dnstcp.c

@@ -13,6 +13,7 @@ char	*dbfile;
 int	debug;
 int	debug;
 int	cachedb = 1;
 int	cachedb = 1;
 int	testing;
 int	testing;
+int traceactivity;
 int	needrefresh;
 int	needrefresh;
 int 	resolver;
 int 	resolver;
 char	mntpt[Maxpath];
 char	mntpt[Maxpath];

+ 1 - 1
sys/src/cmd/ssh/util.c

@@ -60,7 +60,7 @@ erealloc(void *v, long n)
 }
 }
 
 
 
 
-static int killpid[16];
+static int killpid[32];
 static int nkillpid;
 static int nkillpid;
 void
 void
 atexitkiller(void)
 atexitkiller(void)

+ 9 - 4
sys/src/cmd/tprof.c

@@ -50,14 +50,19 @@ main(int argc, char *argv[])
 	Biobuf outbuf;
 	Biobuf outbuf;
 	Fhdr f;
 	Fhdr f;
 	struct COUNTER *cp;
 	struct COUNTER *cp;
-	char file[128];
+	char filebuf[128], *file;
 
 
-	if(argc != 2)
-		error(0, "usage: tprof pid");
+	if(argc != 2 && argc != 3)
+		error(0, "usage: tprof pid [binary]");
 	/*
 	/*
 	 * Read symbol table
 	 * Read symbol table
 	 */
 	 */
-	sprint(file, "/proc/%s/text", argv[1]);
+	if(argc == 2){
+		file = filebuf;
+		snprint(filebuf, sizeof filebuf, "/proc/%s/text", argv[1]);
+	}else
+		file = argv[2];
+
 	fd = open(file, OREAD);
 	fd = open(file, OREAD);
 	if(fd < 0)
 	if(fd < 0)
 		error(1, file);
 		error(1, file);

+ 1 - 1
sys/src/cmd/upas/fs/fs.c

@@ -1670,7 +1670,7 @@ post(char *name, char *envname, int srvfd)
 
 
 	fd = create(name, OWRITE, 0600);
 	fd = create(name, OWRITE, 0600);
 	if(fd < 0)
 	if(fd < 0)
-		return;
+		error("post failed");
 	sprint(buf, "%d",srvfd);
 	sprint(buf, "%d",srvfd);
 	if(write(fd, buf, strlen(buf)) != strlen(buf))
 	if(write(fd, buf, strlen(buf)) != strlen(buf))
 		error("srv write");
 		error("srv write");

+ 8 - 3
sys/src/cmd/upas/fs/mbox.c

@@ -291,7 +291,12 @@ parseheaders(Message *m, int justmime, Mailbox *mb, int addfrom)
 	// for pop3 messages, the best we can do is 
 	// for pop3 messages, the best we can do is 
 	// use the From: information and the RFC822 date.
 	// use the From: information and the RFC822 date.
 	//
 	//
-	if(m->unixdate == nil){
+	if(m->unixdate == nil || strcmp(s_to_c(m->unixdate), "???") == 0
+	|| strcmp(s_to_c(m->unixdate), "Thu Jan 1 00:00:00 GMT 1970") == 0){
+		if(m->unixdate){
+			s_free(m->unixdate);
+			m->unixdate = nil;
+		}
 		// look for the date in the first Received: line.
 		// look for the date in the first Received: line.
 		// it's likely to be the right time zone (it's
 		// it's likely to be the right time zone (it's
 	 	// the local system) and in a convenient format.
 	 	// the local system) and in a convenient format.
@@ -329,7 +334,7 @@ parseheaders(Message *m, int justmime, Mailbox *mb, int addfrom)
 	}
 	}
 
 
 	m->unixheader = s_copy("From ");
 	m->unixheader = s_copy("From ");
-	if(m->unixfrom)
+	if(m->unixfrom && strcmp(s_to_c(m->unixfrom), "???") != 0)
 		s_append(m->unixheader, s_to_c(m->unixfrom));
 		s_append(m->unixheader, s_to_c(m->unixfrom));
 	else if(m->from822)
 	else if(m->from822)
 		s_append(m->unixheader, s_to_c(m->from822));
 		s_append(m->unixheader, s_to_c(m->from822));
@@ -340,7 +345,7 @@ parseheaders(Message *m, int justmime, Mailbox *mb, int addfrom)
 	if(m->unixdate)
 	if(m->unixdate)
 		s_append(m->unixheader, s_to_c(m->unixdate));
 		s_append(m->unixheader, s_to_c(m->unixdate));
 	else
 	else
-		s_append(m->unixheader, "Thu Jan  1 00:00:00 EST 1970");
+		s_append(m->unixheader, "Thu Jan  1 00:00:00 GMT 1970");
 
 
 	s_append(m->unixheader, "\n");
 	s_append(m->unixheader, "\n");
 }
 }

+ 5 - 1
sys/src/cmd/upas/q/runq.c

@@ -35,6 +35,7 @@ int	npid = 50;
 int	sflag;			/* single thread per directory */
 int	sflag;			/* single thread per directory */
 int	aflag;			/* all directories */
 int	aflag;			/* all directories */
 int	Eflag;			/* ignore E.xxxxxx dates */
 int	Eflag;			/* ignore E.xxxxxx dates */
+int	Rflag;			/* no giving up, ever */
 
 
 void
 void
 usage(void)
 usage(void)
@@ -62,6 +63,9 @@ main(int argc, char **argv)
 	case 'E':
 	case 'E':
 		Eflag++;
 		Eflag++;
 		break;
 		break;
+	case 'R':	/* no giving up -- just leave stuff in the queue */
+		Rflag++;
+		break;
 	case 'a':
 	case 'a':
 		aflag++;
 		aflag++;
 		break;
 		break;
@@ -467,7 +471,7 @@ dofile(Dir *dp)
 		if(wm->msg[0]){
 		if(wm->msg[0]){
 			if(debug)
 			if(debug)
 				fprint(2, "[%d] wm->msg == %s\n", getpid(), wm->msg);
 				fprint(2, "[%d] wm->msg == %s\n", getpid(), wm->msg);
-			if(strstr(wm->msg, "Retry")==0){
+			if(!Rflag && strstr(wm->msg, "Retry")==0){
 				/* return the message and remove it */
 				/* return the message and remove it */
 				if(returnmail(av, dp->name, wm->msg) == 0)
 				if(returnmail(av, dp->name, wm->msg) == 0)
 					remmatch(dp->name);
 					remmatch(dp->name);

+ 5 - 0
sys/src/lib9p/req.c

@@ -66,6 +66,8 @@ if(chatty9p > 1)
 void
 void
 closereq(Req *r)
 closereq(Req *r)
 {
 {
+	int i;
+
 	if(r == nil)
 	if(r == nil)
 		return;
 		return;
 
 
@@ -81,6 +83,9 @@ if(chatty9p > 1)
 			closefid(r->afid);
 			closefid(r->afid);
 		if(r->oldreq)
 		if(r->oldreq)
 			closereq(r->oldreq);
 			closereq(r->oldreq);
+		for(i=0; i<r->nflush; i++)
+			respond(r->flush[i], nil);
+		free(r->flush);
 		switch(r->ifcall.type){
 		switch(r->ifcall.type){
 		case Tstat:
 		case Tstat:
 			free(r->ofcall.stat);
 			free(r->ofcall.stat);

+ 7 - 7
sys/src/libc/fmt/dofmt.c

@@ -239,18 +239,18 @@ _runefmt(Fmt *f)
 int
 int
 fmtstrcpy(Fmt *f, char *s)
 fmtstrcpy(Fmt *f, char *s)
 {
 {
-	int p, i;
+	int i, j;
+	Rune r;
+
 	if(!s)
 	if(!s)
 		return _fmtcpy(f, "<nil>", 5, 5);
 		return _fmtcpy(f, "<nil>", 5, 5);
 	/* if precision is specified, make sure we don't wander off the end */
 	/* if precision is specified, make sure we don't wander off the end */
 	if(f->flags & FmtPrec){
 	if(f->flags & FmtPrec){
-		p = f->prec;
-		for(i = 0; i < p; i++)
-			if(s[i] == 0)
-				break;
-		return _fmtcpy(f, s, utfnlen(s, i), i);	/* BUG?: won't print a partial rune at end */
+		i = 0;
+		for(j=0; j<f->prec && s[i]; j++)
+			i += chartorune(&r, s+i);
+		return _fmtcpy(f, s, j, i);
 	}
 	}
-
 	return _fmtcpy(f, s, utflen(s), strlen(s));
 	return _fmtcpy(f, s, utflen(s), strlen(s));
 }
 }
 
 

+ 6 - 4
sys/src/libc/fmt/fmtquote.c

@@ -33,7 +33,7 @@ _quotesetup(char *s, Rune *r, int nin, int nout, Quoteinfo *q, int sharp, int ru
 		q->nbytesout = 2;
 		q->nbytesout = 2;
 		q->nrunesout = 2;
 		q->nrunesout = 2;
 	}
 	}
-	for(; nin!=0; nin-=w){
+	for(; nin!=0; nin--){
 		if(s)
 		if(s)
 			w = chartorune(&c, s);
 			w = chartorune(&c, s);
 		else{
 		else{
@@ -168,12 +168,14 @@ qstrfmt(char *sin, Rune *rin, Quoteinfo *q, Fmt *f)
 int
 int
 _quotestrfmt(int runesin, Fmt *f)
 _quotestrfmt(int runesin, Fmt *f)
 {
 {
-	int outlen;
+	int nin, outlen;
 	Rune *r;
 	Rune *r;
 	char *s;
 	char *s;
 	Quoteinfo q;
 	Quoteinfo q;
 
 
-	f->flags &= ~FmtPrec;	/* ignored for %q %Q, so disable for %s %S in easy case */
+	nin = -1;
+	if(f->flags&FmtPrec)
+		nin = f->prec;
 	if(runesin){
 	if(runesin){
 		r = va_arg(f->args, Rune *);
 		r = va_arg(f->args, Rune *);
 		s = nil;
 		s = nil;
@@ -191,7 +193,7 @@ _quotestrfmt(int runesin, Fmt *f)
 	else
 	else
 		outlen = (char*)f->stop - (char*)f->to;
 		outlen = (char*)f->stop - (char*)f->to;
 
 
-	_quotesetup(s, r, -1, outlen, &q, f->flags&FmtSharp, f->runes);
+	_quotesetup(s, r, nin, outlen, &q, f->flags&FmtSharp, f->runes);
 //print("bytes in %d bytes out %d runes in %d runesout %d\n", q.nbytesin, q.nbytesout, q.nrunesin, q.nrunesout);
 //print("bytes in %d bytes out %d runes in %d runesout %d\n", q.nbytesin, q.nbytesout, q.nrunesin, q.nrunesout);
 
 
 	if(runesin){
 	if(runesin){