Browse Source

Plan 9 from Bell Labs 2006-02-12

David du Colombier 15 years ago
parent
commit
b2c2e497c0

+ 37 - 37
dist/replica/_plan9.db

@@ -94,7 +94,7 @@
 386/bin/aux/cropmarks - 775 sys sys 1020319062 1808
 386/bin/aux/data2s - 775 sys sys 1135570782 60518
 386/bin/aux/depend - 775 sys sys 1138500404 145864
-386/bin/aux/disksim - 775 sys sys 1135570783 150431
+386/bin/aux/disksim - 775 sys sys 1139680589 150454
 386/bin/aux/download - 775 sys sys 1087442506 176016
 386/bin/aux/faxreceive - 775 sys sys 1135570783 83923
 386/bin/aux/faxsend - 775 sys sys 1135570783 89435
@@ -231,9 +231,9 @@
 386/bin/fortune - 775 sys sys 1135570810 67113
 386/bin/fossil - 20000000775 sys sys 1042005470 0
 386/bin/fossil/conf - 775 sys sys 1085077052 1506
-386/bin/fossil/flchk - 775 sys sys 1138211975 237734
-386/bin/fossil/flfmt - 775 sys sys 1138211976 245881
-386/bin/fossil/fossil - 775 sys sys 1138500586 362894
+386/bin/fossil/flchk - 775 sys sys 1139680590 238422
+386/bin/fossil/flfmt - 775 sys sys 1139680591 246569
+386/bin/fossil/fossil - 775 sys sys 1139680592 363654
 386/bin/fossil/last - 775 sys sys 1135570812 63280
 386/bin/freq - 775 sys sys 1136397208 61797
 386/bin/fs - 20000000775 sys sys 954380769 0
@@ -290,7 +290,7 @@
 386/bin/ip/httpd - 20000000775 sys sys 1016920846 0
 386/bin/ip/httpd/httpd - 775 sys sys 1135570821 292534
 386/bin/ip/httpd/imagemap - 775 sys sys 1135570822 114780
-386/bin/ip/httpd/man2html - 775 sys sys 1135570822 123081
+386/bin/ip/httpd/man2html - 775 sys sys 1139680592 123361
 386/bin/ip/httpd/netlib_find - 775 sys sys 1135570822 115637
 386/bin/ip/httpd/netlib_history - 775 sys sys 1135570822 114435
 386/bin/ip/httpd/save - 775 sys sys 1135570823 131200
@@ -299,7 +299,7 @@
 386/bin/ip/httpfile - 775 sys sys 1138500622 283922
 386/bin/ip/imap4d - 775 sys sys 1135570825 237651
 386/bin/ip/ipconfig - 775 sys sys 1135570825 137844
-386/bin/ip/ping - 775 sys sys 1138730269 76405
+386/bin/ip/ping - 775 sys sys 1139680592 76498
 386/bin/ip/ppp - 775 sys sys 1135570826 219950
 386/bin/ip/pppoe - 775 sys sys 1135570826 77544
 386/bin/ip/pptp - 775 sys sys 1138500632 127014
@@ -400,7 +400,7 @@
 386/bin/snap - 775 sys sys 1136346852 313627
 386/bin/snapfs - 775 sys sys 1134389876 388292
 386/bin/sniffer - 775 sys sys 1038443185 99028
-386/bin/snoopy - 775 sys sys 1138464443 168213
+386/bin/snoopy - 775 sys sys 1139680593 170343
 386/bin/sort - 775 sys sys 1135570845 82270
 386/bin/spin - 775 sys sys 1134151359 758520
 386/bin/split - 775 sys sys 1135570845 75631
@@ -6496,7 +6496,7 @@ sys/lib/kbmap/ua - 664 sys sys 1130763839 5247
 sys/lib/kbmap/uk - 664 sys sys 1130763839 55
 sys/lib/kbmap/us - 664 sys sys 1130763839 5181
 sys/lib/lex - 20000000775 sys sys 945136651 0
-sys/lib/lex/ncform - 664 sys sys 945136651 4060
+sys/lib/lex/ncform - 664 sys sys 1139667338 4074
 sys/lib/lp - 20000000775 sys sys 954037460 0
 sys/lib/lp/bin - 20000000775 sys sys 959999531 0
 sys/lib/lp/bin/UNLOCK - 775 sys sys 954037458 25
@@ -7238,7 +7238,7 @@ sys/man/1 - 20000000775 sys sys 1018897631 0
 sys/man/1/0intro - 664 sys sys 1101668050 9625
 sys/man/1/2a - 664 sys sys 1101668050 1188
 sys/man/1/2c - 664 sys sys 1109303821 8237
-sys/man/1/2l - 664 sys sys 1101668051 4365
+sys/man/1/2l - 664 sys sys 1139673910 4368
 sys/man/1/INDEX - 664 sys sys 1104811679 3004
 sys/man/1/INDEX.html - 664 sys sys 1104736360 16403
 sys/man/1/acid - 664 sys sys 1134233059 9730
@@ -7292,7 +7292,7 @@ sys/man/1/freq - 664 sys sys 1136378272 735
 sys/man/1/games - 664 sys sys 1137080360 5373
 sys/man/1/grap - 664 sys sys 944959675 6417
 sys/man/1/graph - 664 sys sys 944959673 2858
-sys/man/1/grep - 664 sys sys 1136378273 2257
+sys/man/1/grep - 664 sys sys 1139690020 2257
 sys/man/1/gs - 664 sys sys 1032054727 6906
 sys/man/1/gview - 664 sys sys 1136378273 4361
 sys/man/1/gzip - 664 sys sys 1124839836 3226
@@ -7438,7 +7438,7 @@ sys/man/2/encode - 664 sys sys 1071289168 1572
 sys/man/2/encrypt - 664 sys sys 951229670 1885
 sys/man/2/errstr - 664 sys sys 1080218022 1705
 sys/man/2/event - 664 sys sys 1015091520 7512
-sys/man/2/exec - 664 sys sys 984709630 3453
+sys/man/2/exec - 664 sys sys 1139666960 4191
 sys/man/2/exits - 664 sys sys 944959695 1652
 sys/man/2/exp - 664 sys sys 944959694 935
 sys/man/2/fauth - 664 sys sys 1017251164 1222
@@ -7714,7 +7714,7 @@ sys/man/8/newuser - 664 sys sys 1116954242 2418
 sys/man/8/nfsserver - 664 sys sys 1128483119 3397
 sys/man/8/pcmcia - 664 sys sys 944959679 408
 sys/man/8/pem - 664 sys sys 1060263669 1189
-sys/man/8/ping - 664 sys sys 1084473185 3436
+sys/man/8/ping - 664 sys sys 1139667147 3489
 sys/man/8/plan9.ini - 664 sys sys 1131294569 22077
 sys/man/8/pop3 - 664 sys sys 1063854676 2720
 sys/man/8/ppp - 664 sys sys 1125530075 4414
@@ -7972,7 +7972,7 @@ sys/src/9/pc/etherwavelan.c - 664 sys sys 1131290380 3747
 sys/src/9/pc/floppy.h - 664 sys sys 1055700609 3835
 sys/src/9/pc/fns.h - 664 sys sys 1131290383 4461
 sys/src/9/pc/hcwAMC.h - 664 sys sys 1026860163 166004
-sys/src/9/pc/i8253.c - 664 sys sys 1138460051 6279
+sys/src/9/pc/i8253.c - 664 sys sys 1139681387 6236
 sys/src/9/pc/i8259.c - 664 sys sys 1131290399 4586
 sys/src/9/pc/init9.c - 664 sys sys 1040002518 94
 sys/src/9/pc/initcode.s - 664 sys sys 1015014519 282
@@ -8005,11 +8005,11 @@ sys/src/9/pc/plan9l.s - 664 sys sys 1015014521 910
 sys/src/9/pc/psaux.c - 664 sys sys 1026847650 915
 sys/src/9/pc/ptclbsum386.s - 664 sys sys 1015014521 1493
 sys/src/9/pc/random.c - 664 sys sys 1036812832 2021
-sys/src/9/pc/realmode.c - 664 sys sys 1131294602 2658
+sys/src/9/pc/realmode.c - 664 sys sys 1139667044 2678
 sys/src/9/pc/rebootcode.s - 664 sys sys 1015014522 988
 sys/src/9/pc/screen.c - 664 sys sys 1136336092 13971
 sys/src/9/pc/screen.h - 664 sys sys 1131290516 4156
-sys/src/9/pc/sd53c8xx.c - 664 sys sys 1131538448 55207
+sys/src/9/pc/sd53c8xx.c - 664 sys sys 1139667209 55143
 sys/src/9/pc/sd53c8xx.n - 664 sys sys 1131290556 12657
 sys/src/9/pc/sdata.c - 664 sys sys 1131290578 52168
 sys/src/9/pc/sdmv50xx.c - 664 sys sys 1131290638 25780
@@ -8061,7 +8061,7 @@ sys/src/9/port/dev.c - 664 sys sys 1131289870 8219
 sys/src/9/port/devaudio.c - 664 sys sys 1067722761 21130
 sys/src/9/port/devbridge.c - 664 sys sys 1055688301 24308
 sys/src/9/port/devcap.c - 664 sys sys 1048644215 4113
-sys/src/9/port/devcons.c - 664 sys sys 1138047754 23013
+sys/src/9/port/devcons.c - 664 sys sys 1139667186 23014
 sys/src/9/port/devdraw.c - 664 sys sys 1131289870 43537
 sys/src/9/port/devdup.c - 664 sys sys 1014931172 2332
 sys/src/9/port/devenv.c - 664 sys sys 1048644225 6992
@@ -8120,7 +8120,7 @@ sys/src/9/port/portmkfile - 664 sys sys 1131907975 2062
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/proc.c - 664 sys sys 1138749368 28702
 sys/src/9/port/qio.c - 664 sys sys 1070287837 23562
-sys/src/9/port/qlock.c - 664 sys sys 1067722765 3196
+sys/src/9/port/qlock.c - 664 sys sys 1139666988 3200
 sys/src/9/port/rdb.c - 664 sys sys 1018721202 1698
 sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
 sys/src/9/port/sd.h - 664 sys sys 1134411408 2494
@@ -8794,7 +8794,7 @@ sys/src/ape/lib/ap/stdio/vprintf.c - 664 sys sys 1014921983 134
 sys/src/ape/lib/ap/stdio/vsnprintf.c - 664 sys sys 1134052382 267
 sys/src/ape/lib/ap/stdio/vsprintf.c - 664 sys sys 1134052382 254
 sys/src/ape/lib/ap/syscall - 20000000775 sys sys 1014921991 0
-sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1130424774 2698
+sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1139690286 2667
 sys/src/ape/lib/bsd - 20000000775 sys sys 1014921995 0
 sys/src/ape/lib/bsd/_sock_ingetaddr.c - 664 sys sys 1014921994 836
 sys/src/ape/lib/bsd/_sock_ipattr.c - 664 sys sys 1014921994 577
@@ -9607,7 +9607,7 @@ sys/src/cmd/aux/consolefs.c - 664 sys sys 1134305455 20200
 sys/src/cmd/aux/conswdir.c - 664 sys sys 1045504955 2077
 sys/src/cmd/aux/data2s.c - 664 sys sys 1032059295 796
 sys/src/cmd/aux/depend.c - 664 sys sys 1134305455 25880
-sys/src/cmd/aux/disksim.c - 664 sys sys 1073852076 10914
+sys/src/cmd/aux/disksim.c - 664 sys sys 1139667305 10919
 sys/src/cmd/aux/flashfs - 20000000775 sys sys 1015009082 0
 sys/src/cmd/aux/flashfs/aux.c - 664 sys sys 1015009080 699
 sys/src/cmd/aux/flashfs/aux.h - 664 sys sys 1015009080 111
@@ -10126,7 +10126,7 @@ sys/src/cmd/fossil/9auth.c - 664 sys sys 1138465942 3863
 sys/src/cmd/fossil/9dir.c - 664 sys sys 1085333382 2219
 sys/src/cmd/fossil/9excl.c - 664 sys sys 1042005502 1887
 sys/src/cmd/fossil/9fid.c - 664 sys sys 1045600016 5521
-sys/src/cmd/fossil/9fsys.c - 664 sys sys 1134305453 33320
+sys/src/cmd/fossil/9fsys.c - 664 sys sys 1139667252 33422
 sys/src/cmd/fossil/9lstn.c - 664 sys sys 1138469518 3024
 sys/src/cmd/fossil/9p.c - 664 sys sys 1138465942 22935
 sys/src/cmd/fossil/9ping.c - 664 sys sys 1042005503 1563
@@ -10141,7 +10141,7 @@ sys/src/cmd/fossil/archive.c - 664 sys sys 1087005594 10230
 sys/src/cmd/fossil/build - 664 sys sys 1042005505 449
 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/cache.c - 664 sys sys 1135487938 42824
+sys/src/cmd/fossil/cache.c - 664 sys sys 1139667233 43883
 sys/src/cmd/fossil/check.c - 664 sys sys 1091904423 17315
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1084333190 1416
 sys/src/cmd/fossil/dat.h - 664 sys sys 1135487938 7582
@@ -10151,21 +10151,21 @@ sys/src/cmd/fossil/dump.c - 664 sys sys 1042005506 1340
 sys/src/cmd/fossil/epoch.c - 664 sys sys 1045600021 997
 sys/src/cmd/fossil/error.c - 664 sys sys 1073851927 1450
 sys/src/cmd/fossil/error.h - 664 sys sys 1073851928 796
-sys/src/cmd/fossil/file.c - 664 sys sys 1087005595 29946
+sys/src/cmd/fossil/file.c - 664 sys sys 1139667293 29983
 sys/src/cmd/fossil/flchk.c - 664 sys sys 1087005592 1771
 sys/src/cmd/fossil/flfmt.c - 664 sys sys 1080586881 10753
 sys/src/cmd/fossil/flfmt9660.c - 664 sys sys 1132451844 12318
 sys/src/cmd/fossil/flfmt9660.h - 664 sys sys 1072830621 134
 sys/src/cmd/fossil/flproto - 664 sys sys 1042005508 210
-sys/src/cmd/fossil/fns.h - 664 sys sys 1087005596 3204
-sys/src/cmd/fossil/fossil-acid - 664 sys sys 1104940044 3991
+sys/src/cmd/fossil/fns.h - 664 sys sys 1139667257 3228
+sys/src/cmd/fossil/fossil-acid - 664 sys sys 1139667278 4365
 sys/src/cmd/fossil/fossil.c - 664 sys sys 1077896345 2435
-sys/src/cmd/fossil/fs.c - 664 sys sys 1101213292 21545
-sys/src/cmd/fossil/fs.h - 664 sys sys 1091904424 1582
+sys/src/cmd/fossil/fs.c - 664 sys sys 1139667263 21572
+sys/src/cmd/fossil/fs.h - 664 sys sys 1139667269 1581
 sys/src/cmd/fossil/history - 664 sys sys 1055703793 1400
 sys/src/cmd/fossil/invariants - 664 sys sys 1042005509 4073
 sys/src/cmd/fossil/last.c - 664 sys sys 1087005593 812
-sys/src/cmd/fossil/mkfile - 664 sys sys 1087005592 2116
+sys/src/cmd/fossil/mkfile - 664 sys sys 1139667242 2640
 sys/src/cmd/fossil/nobwatch.c - 664 sys sys 1042005509 329
 sys/src/cmd/fossil/pack.c - 664 sys sys 1061530726 4682
 sys/src/cmd/fossil/periodic.c - 664 sys sys 1061530726 1087
@@ -12312,7 +12312,7 @@ sys/src/cmd/ip/httpd/httpsrv.h - 664 sys sys 1016466463 1388
 sys/src/cmd/ip/httpd/imagemap.c - 664 sys sys 984773808 5229
 sys/src/cmd/ip/httpd/init.c - 664 sys sys 1015090171 2182
 sys/src/cmd/ip/httpd/log.c - 664 sys sys 1015090171 1391
-sys/src/cmd/ip/httpd/man2html.c - 664 sys sys 1121977160 8793
+sys/src/cmd/ip/httpd/man2html.c - 664 sys sys 1139667314 9069
 sys/src/cmd/ip/httpd/mkfile - 664 sys sys 1123902339 1353
 sys/src/cmd/ip/httpd/netlib_find.c - 664 sys sys 1015090172 6247
 sys/src/cmd/ip/httpd/netlib_history.c - 664 sys sys 1121977160 4748
@@ -12346,7 +12346,7 @@ sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1015013077 2481
 sys/src/cmd/ip/ipconfig.c - 664 sys sys 1126103921 34865
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
 sys/src/cmd/ip/mkfile - 664 sys sys 1131110598 1243
-sys/src/cmd/ip/ping.c - 664 sys sys 1138723947 5589
+sys/src/cmd/ip/ping.c - 664 sys sys 1139667147 5708
 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/compress.c - 664 sys sys 1072729513 11774
@@ -12372,7 +12372,7 @@ sys/src/cmd/ip/rip.c - 664 sys sys 1050760698 12424
 sys/src/cmd/ip/rlogind.c - 664 sys sys 1121977161 757
 sys/src/cmd/ip/snoopy - 20000000775 sys sys 1015090062 0
 sys/src/cmd/ip/snoopy/arp.c - 664 sys sys 1128179536 1914
-sys/src/cmd/ip/snoopy/bootp.c - 664 sys sys 1128179536 3440
+sys/src/cmd/ip/snoopy/bootp.c - 664 sys sys 1139667382 3442
 sys/src/cmd/ip/snoopy/dat.h - 664 sys sys 1128179536 1915
 sys/src/cmd/ip/snoopy/dhcp.c - 664 sys sys 1138463389 8958
 sys/src/cmd/ip/snoopy/dump.c - 664 sys sys 1138463389 1078
@@ -12382,15 +12382,15 @@ sys/src/cmd/ip/snoopy/eapol.c - 664 sys sys 1128179537 1890
 sys/src/cmd/ip/snoopy/eapol_key.c - 664 sys sys 1128179537 2025
 sys/src/cmd/ip/snoopy/ether.c - 664 sys sys 1128179537 2013
 sys/src/cmd/ip/snoopy/filter.y - 664 sys sys 1138463389 1739
-sys/src/cmd/ip/snoopy/gre.c - 664 sys sys 1015090059 1503
+sys/src/cmd/ip/snoopy/gre.c - 664 sys sys 1139667373 3327
 sys/src/cmd/ip/snoopy/hdlc.c - 664 sys sys 1128179537 4285
-sys/src/cmd/ip/snoopy/icmp.c - 664 sys sys 1128179538 2969
+sys/src/cmd/ip/snoopy/icmp.c - 664 sys sys 1139667371 2970
 sys/src/cmd/ip/snoopy/icmp6.c - 664 sys sys 1128179538 7736
-sys/src/cmd/ip/snoopy/il.c - 664 sys sys 1138463390 2261
+sys/src/cmd/ip/snoopy/il.c - 664 sys sys 1139667365 2260
 sys/src/cmd/ip/snoopy/ip.c - 664 sys sys 1128179538 4300
 sys/src/cmd/ip/snoopy/ip6.c - 664 sys sys 1128179538 5371
 sys/src/cmd/ip/snoopy/main.c - 664 sys sys 1138463390 15607
-sys/src/cmd/ip/snoopy/mkfile - 664 sys sys 1138463439 879
+sys/src/cmd/ip/snoopy/mkfile - 664 sys sys 1139667360 885
 sys/src/cmd/ip/snoopy/ninep.c - 664 sys sys 1138463390 555
 sys/src/cmd/ip/snoopy/ospf.c - 664 sys sys 1138463391 7369
 sys/src/cmd/ip/snoopy/ppp.c - 664 sys sys 1128179539 10544
@@ -12405,7 +12405,7 @@ sys/src/cmd/ip/snoopy/rarp.c - 664 sys sys 1015090062 50
 sys/src/cmd/ip/snoopy/rc4keydesc.c - 664 sys sys 1128179539 56
 sys/src/cmd/ip/snoopy/rtcp.c - 664 sys sys 1138463392 1818
 sys/src/cmd/ip/snoopy/rtp.c - 664 sys sys 1138463392 1021
-sys/src/cmd/ip/snoopy/tcp.c - 664 sys sys 1128179540 3602
+sys/src/cmd/ip/snoopy/tcp.c - 664 sys sys 1139667382 3602
 sys/src/cmd/ip/snoopy/ttls.c - 664 sys sys 1128179540 1451
 sys/src/cmd/ip/snoopy/udp.c - 664 sys sys 1128179540 1999
 sys/src/cmd/ip/telnet.c - 664 sys sys 1135487946 8624
@@ -13091,7 +13091,7 @@ sys/src/cmd/read.c - 664 sys sys 1022047660 1278
 sys/src/cmd/replica - 20000000775 sys sys 1018321113 0
 sys/src/cmd/replica/all.h - 664 sys sys 1091904421 1265
 sys/src/cmd/replica/applychanges.c - 664 sys sys 1068497831 6123
-sys/src/cmd/replica/applylog.c - 664 sys sys 1138478558 21811
+sys/src/cmd/replica/applylog.c - 664 sys sys 1139667399 21874
 sys/src/cmd/replica/avl.c - 664 sys sys 1068497830 6242
 sys/src/cmd/replica/compactdb.c - 664 sys sys 1018323475 652
 sys/src/cmd/replica/db.c - 664 sys sys 1019340165 2989
@@ -14019,7 +14019,7 @@ sys/src/cmd/upas/smtp/smtp.h - 664 sys sys 1108827986 1270
 sys/src/cmd/upas/smtp/smtpd.c - 664 sys sys 1132331205 31097
 sys/src/cmd/upas/smtp/smtpd.h - 664 sys sys 1067722781 1111
 sys/src/cmd/upas/smtp/smtpd.y - 664 sys sys 1061836986 6949
-sys/src/cmd/upas/smtp/spam.c - 664 sys sys 1098803961 10231
+sys/src/cmd/upas/smtp/spam.c - 664 sys sys 1139699502 10238
 sys/src/cmd/upas/unesc - 20000000775 sys sys 1075080255 0
 sys/src/cmd/upas/unesc/mkfile - 664 sys sys 1075080255 164
 sys/src/cmd/upas/unesc/unesc.c - 664 sys sys 1075080255 789

+ 37 - 37
dist/replica/plan9.db

@@ -94,7 +94,7 @@
 386/bin/aux/cropmarks - 775 sys sys 1020319062 1808
 386/bin/aux/data2s - 775 sys sys 1135570782 60518
 386/bin/aux/depend - 775 sys sys 1138500404 145864
-386/bin/aux/disksim - 775 sys sys 1135570783 150431
+386/bin/aux/disksim - 775 sys sys 1139680589 150454
 386/bin/aux/download - 775 sys sys 1087442506 176016
 386/bin/aux/faxreceive - 775 sys sys 1135570783 83923
 386/bin/aux/faxsend - 775 sys sys 1135570783 89435
@@ -231,9 +231,9 @@
 386/bin/fortune - 775 sys sys 1135570810 67113
 386/bin/fossil - 20000000775 sys sys 1042005470 0
 386/bin/fossil/conf - 775 sys sys 1085077052 1506
-386/bin/fossil/flchk - 775 sys sys 1138211975 237734
-386/bin/fossil/flfmt - 775 sys sys 1138211976 245881
-386/bin/fossil/fossil - 775 sys sys 1138500586 362894
+386/bin/fossil/flchk - 775 sys sys 1139680590 238422
+386/bin/fossil/flfmt - 775 sys sys 1139680591 246569
+386/bin/fossil/fossil - 775 sys sys 1139680592 363654
 386/bin/fossil/last - 775 sys sys 1135570812 63280
 386/bin/freq - 775 sys sys 1136397208 61797
 386/bin/fs - 20000000775 sys sys 954380769 0
@@ -290,7 +290,7 @@
 386/bin/ip/httpd - 20000000775 sys sys 1016920846 0
 386/bin/ip/httpd/httpd - 775 sys sys 1135570821 292534
 386/bin/ip/httpd/imagemap - 775 sys sys 1135570822 114780
-386/bin/ip/httpd/man2html - 775 sys sys 1135570822 123081
+386/bin/ip/httpd/man2html - 775 sys sys 1139680592 123361
 386/bin/ip/httpd/netlib_find - 775 sys sys 1135570822 115637
 386/bin/ip/httpd/netlib_history - 775 sys sys 1135570822 114435
 386/bin/ip/httpd/save - 775 sys sys 1135570823 131200
@@ -299,7 +299,7 @@
 386/bin/ip/httpfile - 775 sys sys 1138500622 283922
 386/bin/ip/imap4d - 775 sys sys 1135570825 237651
 386/bin/ip/ipconfig - 775 sys sys 1135570825 137844
-386/bin/ip/ping - 775 sys sys 1138730269 76405
+386/bin/ip/ping - 775 sys sys 1139680592 76498
 386/bin/ip/ppp - 775 sys sys 1135570826 219950
 386/bin/ip/pppoe - 775 sys sys 1135570826 77544
 386/bin/ip/pptp - 775 sys sys 1138500632 127014
@@ -400,7 +400,7 @@
 386/bin/snap - 775 sys sys 1136346852 313627
 386/bin/snapfs - 775 sys sys 1134389876 388292
 386/bin/sniffer - 775 sys sys 1038443185 99028
-386/bin/snoopy - 775 sys sys 1138464443 168213
+386/bin/snoopy - 775 sys sys 1139680593 170343
 386/bin/sort - 775 sys sys 1135570845 82270
 386/bin/spin - 775 sys sys 1134151359 758520
 386/bin/split - 775 sys sys 1135570845 75631
@@ -6496,7 +6496,7 @@ sys/lib/kbmap/ua - 664 sys sys 1130763839 5247
 sys/lib/kbmap/uk - 664 sys sys 1130763839 55
 sys/lib/kbmap/us - 664 sys sys 1130763839 5181
 sys/lib/lex - 20000000775 sys sys 945136651 0
-sys/lib/lex/ncform - 664 sys sys 945136651 4060
+sys/lib/lex/ncform - 664 sys sys 1139667338 4074
 sys/lib/lp - 20000000775 sys sys 954037460 0
 sys/lib/lp/bin - 20000000775 sys sys 959999531 0
 sys/lib/lp/bin/UNLOCK - 775 sys sys 954037458 25
@@ -7238,7 +7238,7 @@ sys/man/1 - 20000000775 sys sys 1018897631 0
 sys/man/1/0intro - 664 sys sys 1101668050 9625
 sys/man/1/2a - 664 sys sys 1101668050 1188
 sys/man/1/2c - 664 sys sys 1109303821 8237
-sys/man/1/2l - 664 sys sys 1101668051 4365
+sys/man/1/2l - 664 sys sys 1139673910 4368
 sys/man/1/INDEX - 664 sys sys 1104811679 3004
 sys/man/1/INDEX.html - 664 sys sys 1104736360 16403
 sys/man/1/acid - 664 sys sys 1134233059 9730
@@ -7292,7 +7292,7 @@ sys/man/1/freq - 664 sys sys 1136378272 735
 sys/man/1/games - 664 sys sys 1137080360 5373
 sys/man/1/grap - 664 sys sys 944959675 6417
 sys/man/1/graph - 664 sys sys 944959673 2858
-sys/man/1/grep - 664 sys sys 1136378273 2257
+sys/man/1/grep - 664 sys sys 1139690020 2257
 sys/man/1/gs - 664 sys sys 1032054727 6906
 sys/man/1/gview - 664 sys sys 1136378273 4361
 sys/man/1/gzip - 664 sys sys 1124839836 3226
@@ -7438,7 +7438,7 @@ sys/man/2/encode - 664 sys sys 1071289168 1572
 sys/man/2/encrypt - 664 sys sys 951229670 1885
 sys/man/2/errstr - 664 sys sys 1080218022 1705
 sys/man/2/event - 664 sys sys 1015091520 7512
-sys/man/2/exec - 664 sys sys 984709630 3453
+sys/man/2/exec - 664 sys sys 1139666960 4191
 sys/man/2/exits - 664 sys sys 944959695 1652
 sys/man/2/exp - 664 sys sys 944959694 935
 sys/man/2/fauth - 664 sys sys 1017251164 1222
@@ -7714,7 +7714,7 @@ sys/man/8/newuser - 664 sys sys 1116954242 2418
 sys/man/8/nfsserver - 664 sys sys 1128483119 3397
 sys/man/8/pcmcia - 664 sys sys 944959679 408
 sys/man/8/pem - 664 sys sys 1060263669 1189
-sys/man/8/ping - 664 sys sys 1084473185 3436
+sys/man/8/ping - 664 sys sys 1139667147 3489
 sys/man/8/plan9.ini - 664 sys sys 1131294569 22077
 sys/man/8/pop3 - 664 sys sys 1063854676 2720
 sys/man/8/ppp - 664 sys sys 1125530075 4414
@@ -7972,7 +7972,7 @@ sys/src/9/pc/etherwavelan.c - 664 sys sys 1131290380 3747
 sys/src/9/pc/floppy.h - 664 sys sys 1055700609 3835
 sys/src/9/pc/fns.h - 664 sys sys 1131290383 4461
 sys/src/9/pc/hcwAMC.h - 664 sys sys 1026860163 166004
-sys/src/9/pc/i8253.c - 664 sys sys 1138460051 6279
+sys/src/9/pc/i8253.c - 664 sys sys 1139681387 6236
 sys/src/9/pc/i8259.c - 664 sys sys 1131290399 4586
 sys/src/9/pc/init9.c - 664 sys sys 1040002518 94
 sys/src/9/pc/initcode.s - 664 sys sys 1015014519 282
@@ -8005,11 +8005,11 @@ sys/src/9/pc/plan9l.s - 664 sys sys 1015014521 910
 sys/src/9/pc/psaux.c - 664 sys sys 1026847650 915
 sys/src/9/pc/ptclbsum386.s - 664 sys sys 1015014521 1493
 sys/src/9/pc/random.c - 664 sys sys 1036812832 2021
-sys/src/9/pc/realmode.c - 664 sys sys 1131294602 2658
+sys/src/9/pc/realmode.c - 664 sys sys 1139667044 2678
 sys/src/9/pc/rebootcode.s - 664 sys sys 1015014522 988
 sys/src/9/pc/screen.c - 664 sys sys 1136336092 13971
 sys/src/9/pc/screen.h - 664 sys sys 1131290516 4156
-sys/src/9/pc/sd53c8xx.c - 664 sys sys 1131538448 55207
+sys/src/9/pc/sd53c8xx.c - 664 sys sys 1139667209 55143
 sys/src/9/pc/sd53c8xx.n - 664 sys sys 1131290556 12657
 sys/src/9/pc/sdata.c - 664 sys sys 1131290578 52168
 sys/src/9/pc/sdmv50xx.c - 664 sys sys 1131290638 25780
@@ -8061,7 +8061,7 @@ sys/src/9/port/dev.c - 664 sys sys 1131289870 8219
 sys/src/9/port/devaudio.c - 664 sys sys 1067722761 21130
 sys/src/9/port/devbridge.c - 664 sys sys 1055688301 24308
 sys/src/9/port/devcap.c - 664 sys sys 1048644215 4113
-sys/src/9/port/devcons.c - 664 sys sys 1138047754 23013
+sys/src/9/port/devcons.c - 664 sys sys 1139667186 23014
 sys/src/9/port/devdraw.c - 664 sys sys 1131289870 43537
 sys/src/9/port/devdup.c - 664 sys sys 1014931172 2332
 sys/src/9/port/devenv.c - 664 sys sys 1048644225 6992
@@ -8120,7 +8120,7 @@ sys/src/9/port/portmkfile - 664 sys sys 1131907975 2062
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/proc.c - 664 sys sys 1138749368 28702
 sys/src/9/port/qio.c - 664 sys sys 1070287837 23562
-sys/src/9/port/qlock.c - 664 sys sys 1067722765 3196
+sys/src/9/port/qlock.c - 664 sys sys 1139666988 3200
 sys/src/9/port/rdb.c - 664 sys sys 1018721202 1698
 sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
 sys/src/9/port/sd.h - 664 sys sys 1134411408 2494
@@ -8794,7 +8794,7 @@ sys/src/ape/lib/ap/stdio/vprintf.c - 664 sys sys 1014921983 134
 sys/src/ape/lib/ap/stdio/vsnprintf.c - 664 sys sys 1134052382 267
 sys/src/ape/lib/ap/stdio/vsprintf.c - 664 sys sys 1134052382 254
 sys/src/ape/lib/ap/syscall - 20000000775 sys sys 1014921991 0
-sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1130424774 2698
+sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1139690286 2667
 sys/src/ape/lib/bsd - 20000000775 sys sys 1014921995 0
 sys/src/ape/lib/bsd/_sock_ingetaddr.c - 664 sys sys 1014921994 836
 sys/src/ape/lib/bsd/_sock_ipattr.c - 664 sys sys 1014921994 577
@@ -9607,7 +9607,7 @@ sys/src/cmd/aux/consolefs.c - 664 sys sys 1134305455 20200
 sys/src/cmd/aux/conswdir.c - 664 sys sys 1045504955 2077
 sys/src/cmd/aux/data2s.c - 664 sys sys 1032059295 796
 sys/src/cmd/aux/depend.c - 664 sys sys 1134305455 25880
-sys/src/cmd/aux/disksim.c - 664 sys sys 1073852076 10914
+sys/src/cmd/aux/disksim.c - 664 sys sys 1139667305 10919
 sys/src/cmd/aux/flashfs - 20000000775 sys sys 1015009082 0
 sys/src/cmd/aux/flashfs/aux.c - 664 sys sys 1015009080 699
 sys/src/cmd/aux/flashfs/aux.h - 664 sys sys 1015009080 111
@@ -10126,7 +10126,7 @@ sys/src/cmd/fossil/9auth.c - 664 sys sys 1138465942 3863
 sys/src/cmd/fossil/9dir.c - 664 sys sys 1085333382 2219
 sys/src/cmd/fossil/9excl.c - 664 sys sys 1042005502 1887
 sys/src/cmd/fossil/9fid.c - 664 sys sys 1045600016 5521
-sys/src/cmd/fossil/9fsys.c - 664 sys sys 1134305453 33320
+sys/src/cmd/fossil/9fsys.c - 664 sys sys 1139667252 33422
 sys/src/cmd/fossil/9lstn.c - 664 sys sys 1138469518 3024
 sys/src/cmd/fossil/9p.c - 664 sys sys 1138465942 22935
 sys/src/cmd/fossil/9ping.c - 664 sys sys 1042005503 1563
@@ -10141,7 +10141,7 @@ sys/src/cmd/fossil/archive.c - 664 sys sys 1087005594 10230
 sys/src/cmd/fossil/build - 664 sys sys 1042005505 449
 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/cache.c - 664 sys sys 1135487938 42824
+sys/src/cmd/fossil/cache.c - 664 sys sys 1139667233 43883
 sys/src/cmd/fossil/check.c - 664 sys sys 1091904423 17315
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1084333190 1416
 sys/src/cmd/fossil/dat.h - 664 sys sys 1135487938 7582
@@ -10151,21 +10151,21 @@ sys/src/cmd/fossil/dump.c - 664 sys sys 1042005506 1340
 sys/src/cmd/fossil/epoch.c - 664 sys sys 1045600021 997
 sys/src/cmd/fossil/error.c - 664 sys sys 1073851927 1450
 sys/src/cmd/fossil/error.h - 664 sys sys 1073851928 796
-sys/src/cmd/fossil/file.c - 664 sys sys 1087005595 29946
+sys/src/cmd/fossil/file.c - 664 sys sys 1139667293 29983
 sys/src/cmd/fossil/flchk.c - 664 sys sys 1087005592 1771
 sys/src/cmd/fossil/flfmt.c - 664 sys sys 1080586881 10753
 sys/src/cmd/fossil/flfmt9660.c - 664 sys sys 1132451844 12318
 sys/src/cmd/fossil/flfmt9660.h - 664 sys sys 1072830621 134
 sys/src/cmd/fossil/flproto - 664 sys sys 1042005508 210
-sys/src/cmd/fossil/fns.h - 664 sys sys 1087005596 3204
-sys/src/cmd/fossil/fossil-acid - 664 sys sys 1104940044 3991
+sys/src/cmd/fossil/fns.h - 664 sys sys 1139667257 3228
+sys/src/cmd/fossil/fossil-acid - 664 sys sys 1139667278 4365
 sys/src/cmd/fossil/fossil.c - 664 sys sys 1077896345 2435
-sys/src/cmd/fossil/fs.c - 664 sys sys 1101213292 21545
-sys/src/cmd/fossil/fs.h - 664 sys sys 1091904424 1582
+sys/src/cmd/fossil/fs.c - 664 sys sys 1139667263 21572
+sys/src/cmd/fossil/fs.h - 664 sys sys 1139667269 1581
 sys/src/cmd/fossil/history - 664 sys sys 1055703793 1400
 sys/src/cmd/fossil/invariants - 664 sys sys 1042005509 4073
 sys/src/cmd/fossil/last.c - 664 sys sys 1087005593 812
-sys/src/cmd/fossil/mkfile - 664 sys sys 1087005592 2116
+sys/src/cmd/fossil/mkfile - 664 sys sys 1139667242 2640
 sys/src/cmd/fossil/nobwatch.c - 664 sys sys 1042005509 329
 sys/src/cmd/fossil/pack.c - 664 sys sys 1061530726 4682
 sys/src/cmd/fossil/periodic.c - 664 sys sys 1061530726 1087
@@ -12312,7 +12312,7 @@ sys/src/cmd/ip/httpd/httpsrv.h - 664 sys sys 1016466463 1388
 sys/src/cmd/ip/httpd/imagemap.c - 664 sys sys 984773808 5229
 sys/src/cmd/ip/httpd/init.c - 664 sys sys 1015090171 2182
 sys/src/cmd/ip/httpd/log.c - 664 sys sys 1015090171 1391
-sys/src/cmd/ip/httpd/man2html.c - 664 sys sys 1121977160 8793
+sys/src/cmd/ip/httpd/man2html.c - 664 sys sys 1139667314 9069
 sys/src/cmd/ip/httpd/mkfile - 664 sys sys 1123902339 1353
 sys/src/cmd/ip/httpd/netlib_find.c - 664 sys sys 1015090172 6247
 sys/src/cmd/ip/httpd/netlib_history.c - 664 sys sys 1121977160 4748
@@ -12346,7 +12346,7 @@ sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1015013077 2481
 sys/src/cmd/ip/ipconfig.c - 664 sys sys 1126103921 34865
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
 sys/src/cmd/ip/mkfile - 664 sys sys 1131110598 1243
-sys/src/cmd/ip/ping.c - 664 sys sys 1138723947 5589
+sys/src/cmd/ip/ping.c - 664 sys sys 1139667147 5708
 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/compress.c - 664 sys sys 1072729513 11774
@@ -12372,7 +12372,7 @@ sys/src/cmd/ip/rip.c - 664 sys sys 1050760698 12424
 sys/src/cmd/ip/rlogind.c - 664 sys sys 1121977161 757
 sys/src/cmd/ip/snoopy - 20000000775 sys sys 1015090062 0
 sys/src/cmd/ip/snoopy/arp.c - 664 sys sys 1128179536 1914
-sys/src/cmd/ip/snoopy/bootp.c - 664 sys sys 1128179536 3440
+sys/src/cmd/ip/snoopy/bootp.c - 664 sys sys 1139667382 3442
 sys/src/cmd/ip/snoopy/dat.h - 664 sys sys 1128179536 1915
 sys/src/cmd/ip/snoopy/dhcp.c - 664 sys sys 1138463389 8958
 sys/src/cmd/ip/snoopy/dump.c - 664 sys sys 1138463389 1078
@@ -12382,15 +12382,15 @@ sys/src/cmd/ip/snoopy/eapol.c - 664 sys sys 1128179537 1890
 sys/src/cmd/ip/snoopy/eapol_key.c - 664 sys sys 1128179537 2025
 sys/src/cmd/ip/snoopy/ether.c - 664 sys sys 1128179537 2013
 sys/src/cmd/ip/snoopy/filter.y - 664 sys sys 1138463389 1739
-sys/src/cmd/ip/snoopy/gre.c - 664 sys sys 1015090059 1503
+sys/src/cmd/ip/snoopy/gre.c - 664 sys sys 1139667373 3327
 sys/src/cmd/ip/snoopy/hdlc.c - 664 sys sys 1128179537 4285
-sys/src/cmd/ip/snoopy/icmp.c - 664 sys sys 1128179538 2969
+sys/src/cmd/ip/snoopy/icmp.c - 664 sys sys 1139667371 2970
 sys/src/cmd/ip/snoopy/icmp6.c - 664 sys sys 1128179538 7736
-sys/src/cmd/ip/snoopy/il.c - 664 sys sys 1138463390 2261
+sys/src/cmd/ip/snoopy/il.c - 664 sys sys 1139667365 2260
 sys/src/cmd/ip/snoopy/ip.c - 664 sys sys 1128179538 4300
 sys/src/cmd/ip/snoopy/ip6.c - 664 sys sys 1128179538 5371
 sys/src/cmd/ip/snoopy/main.c - 664 sys sys 1138463390 15607
-sys/src/cmd/ip/snoopy/mkfile - 664 sys sys 1138463439 879
+sys/src/cmd/ip/snoopy/mkfile - 664 sys sys 1139667360 885
 sys/src/cmd/ip/snoopy/ninep.c - 664 sys sys 1138463390 555
 sys/src/cmd/ip/snoopy/ospf.c - 664 sys sys 1138463391 7369
 sys/src/cmd/ip/snoopy/ppp.c - 664 sys sys 1128179539 10544
@@ -12405,7 +12405,7 @@ sys/src/cmd/ip/snoopy/rarp.c - 664 sys sys 1015090062 50
 sys/src/cmd/ip/snoopy/rc4keydesc.c - 664 sys sys 1128179539 56
 sys/src/cmd/ip/snoopy/rtcp.c - 664 sys sys 1138463392 1818
 sys/src/cmd/ip/snoopy/rtp.c - 664 sys sys 1138463392 1021
-sys/src/cmd/ip/snoopy/tcp.c - 664 sys sys 1128179540 3602
+sys/src/cmd/ip/snoopy/tcp.c - 664 sys sys 1139667382 3602
 sys/src/cmd/ip/snoopy/ttls.c - 664 sys sys 1128179540 1451
 sys/src/cmd/ip/snoopy/udp.c - 664 sys sys 1128179540 1999
 sys/src/cmd/ip/telnet.c - 664 sys sys 1135487946 8624
@@ -13091,7 +13091,7 @@ sys/src/cmd/read.c - 664 sys sys 1022047660 1278
 sys/src/cmd/replica - 20000000775 sys sys 1018321113 0
 sys/src/cmd/replica/all.h - 664 sys sys 1091904421 1265
 sys/src/cmd/replica/applychanges.c - 664 sys sys 1068497831 6123
-sys/src/cmd/replica/applylog.c - 664 sys sys 1138478558 21811
+sys/src/cmd/replica/applylog.c - 664 sys sys 1139667399 21874
 sys/src/cmd/replica/avl.c - 664 sys sys 1068497830 6242
 sys/src/cmd/replica/compactdb.c - 664 sys sys 1018323475 652
 sys/src/cmd/replica/db.c - 664 sys sys 1019340165 2989
@@ -14019,7 +14019,7 @@ sys/src/cmd/upas/smtp/smtp.h - 664 sys sys 1108827986 1270
 sys/src/cmd/upas/smtp/smtpd.c - 664 sys sys 1132331205 31097
 sys/src/cmd/upas/smtp/smtpd.h - 664 sys sys 1067722781 1111
 sys/src/cmd/upas/smtp/smtpd.y - 664 sys sys 1061836986 6949
-sys/src/cmd/upas/smtp/spam.c - 664 sys sys 1098803961 10231
+sys/src/cmd/upas/smtp/spam.c - 664 sys sys 1139699502 10238
 sys/src/cmd/upas/unesc - 20000000775 sys sys 1075080255 0
 sys/src/cmd/upas/unesc/mkfile - 664 sys sys 1075080255 164
 sys/src/cmd/upas/unesc/unesc.c - 664 sys sys 1075080255 789

+ 39 - 0
dist/replica/plan9.log

@@ -27532,3 +27532,42 @@
 1139500835 2 c sys/src/cmd/awk/run.c - 664 sys sys 1139499813 42772
 1139500835 3 c dist/replica/network - 775 sys sys 1139499513 956
 1139508036 0 c 386/bin/awk - 775 sys sys 1139507857 324417
+1139668284 0 c sys/lib/lex/ncform - 664 sys sys 1139667338 4074
+1139668284 1 c sys/man/2/exec - 664 sys sys 1139666960 4191
+1139668284 2 c sys/man/8/ping - 664 sys sys 1139667147 3489
+1139668284 3 c sys/src/9/pc/sd53c8xx.c - 664 sys sys 1139667209 55143
+1139668284 4 c sys/src/9/pc/realmode.c - 664 sys sys 1139667044 2678
+1139668284 5 c sys/src/9/port/devcons.c - 664 sys sys 1139667186 23014
+1139668284 6 c sys/src/9/port/qlock.c - 664 sys sys 1139666988 3200
+1139668284 7 c sys/src/cmd/aux/disksim.c - 664 sys sys 1139667305 10919
+1139668284 8 c sys/src/cmd/ip/httpd/man2html.c - 664 sys sys 1139667314 9069
+1139668284 9 c sys/src/cmd/ip/ping.c - 664 sys sys 1139667147 5708
+1139668284 10 c sys/src/cmd/ip/snoopy/bootp.c - 664 sys sys 1139667382 3442
+1139668284 11 c sys/src/cmd/ip/snoopy/gre.c - 664 sys sys 1139667373 3327
+1139668284 12 c sys/src/cmd/ip/snoopy/icmp.c - 664 sys sys 1139667371 2970
+1139668284 13 c sys/src/cmd/ip/snoopy/il.c - 664 sys sys 1139667365 2260
+1139668284 14 c sys/src/cmd/ip/snoopy/mkfile - 664 sys sys 1139667360 885
+1139668284 15 c sys/src/cmd/ip/snoopy/tcp.c - 664 sys sys 1139667382 3602
+1139668284 16 c sys/src/cmd/replica/applylog.c - 664 sys sys 1139667399 21874
+1139668284 17 c sys/src/cmd/fossil/9fsys.c - 664 sys sys 1139667252 33422
+1139668284 18 c sys/src/cmd/fossil/cache.c - 664 sys sys 1139667233 43883
+1139668284 19 c sys/src/cmd/fossil/file.c - 664 sys sys 1139667293 29983
+1139668284 20 c sys/src/cmd/fossil/fns.h - 664 sys sys 1139667257 3228
+1139668284 21 c sys/src/cmd/fossil/fossil-acid - 664 sys sys 1139667278 4365
+1139668284 22 c sys/src/cmd/fossil/fs.c - 664 sys sys 1139667263 21572
+1139668284 23 c sys/src/cmd/fossil/fs.h - 664 sys sys 1139667269 1581
+1139668284 24 c sys/src/cmd/fossil/mkfile - 664 sys sys 1139667242 2640
+1139675485 0 c sys/man/1/grep - 664 sys sys 1139675186 2261
+1139675485 1 c sys/man/1/2l - 664 sys sys 1139673910 4368
+1139680886 0 c 386/bin/snoopy - 775 sys sys 1139680593 170343
+1139680886 1 c 386/bin/aux/disksim - 775 sys sys 1139680589 150454
+1139680886 2 c 386/bin/fossil/flchk - 775 sys sys 1139680590 238422
+1139680886 3 c 386/bin/fossil/flfmt - 775 sys sys 1139680591 246569
+1139680886 4 c 386/bin/fossil/fossil - 775 sys sys 1139680592 363654
+1139680886 5 c 386/bin/ip/httpd/man2html - 775 sys sys 1139680592 123361
+1139680886 6 c 386/bin/ip/ping - 775 sys sys 1139680592 76498
+1139682687 0 c sys/src/9/pc/i8253.c - 664 sys sys 1139681387 6236
+1139689889 0 c sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1139689344 2697
+1139691689 0 c sys/man/1/grep - 664 sys sys 1139690020 2257
+1139691689 1 c sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1139690286 2667
+1139700692 0 c sys/src/cmd/upas/smtp/spam.c - 664 sys sys 1139699502 10238

+ 2 - 2
sys/lib/lex/ncform

@@ -9,7 +9,7 @@ int *yyfnd;
 extern struct yysvf *yyestate;
 int yyprevious = YYNEWLINE;
 # ifdef LEXDEBUG
-extern void allprint(char);
+extern void allprint(int);
 # endif
 yylook(void){
 	struct yysvf *yystate, **lsp;
@@ -113,7 +113,7 @@ yylook(void){
 			}
 # ifdef LEXDEBUG
 		if(debug){
-			fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
+			fprintf(yyout,"stopped at %d with ",lsp>yylstate?*(lsp-1)-yysvec-1:0);
 			allprint(yych);
 			putchar('\n');
 			}

+ 3 - 9
sys/man/1/2l

@@ -73,7 +73,7 @@ again, it may be necessary to mention
 explicitly so it will be read a second time.
 .PP
 The loader options are:
-.TP 1i
+.TP 0.75i
 .B -l
 (As a bare option.)
 Suppress the default loading of the startup linkage and libraries
@@ -115,10 +115,7 @@ The entry point for the binary is
 under
 .BR -p ).
 .TP
-.B -x 
-[
-.I file
-]
+.BI -x " [ file ]"
 Produce an export table in the executable.
 The optional
 .I file
@@ -126,10 +123,7 @@ restricts the exported symbols to those listed in the file.
 See
 .IR dynld (2).
 .TP
-.B -u 
-[
-.I file
-]
+.BI -u " [ file ]"
 Produce an export table, import table
 and a dynamic load section in the executable.
 The optional

+ 2 - 2
sys/man/1/grep

@@ -8,11 +8,11 @@ grep \- search a file for a pattern
 ]
 [
 .B -e
+]
 .I pattern
-[
+|
 .B -f
 .I patternfile
-]
 [
 .I file ...
 ]

+ 41 - 13
sys/man/2/exec

@@ -1,6 +1,6 @@
 .TH EXEC 2
 .SH NAME
-exec, execl, _clock, _privates, _nprivates \- execute a file
+exec, execl, _privates, _nprivates, _tps \- execute a file
 .SH SYNOPSIS
 .B #include <u.h>
 .br
@@ -14,13 +14,28 @@ int exec(char *name, char* argv[])
 int execl(char *name, ...)
 .PP
 .B
-long	*_clock;
-.PP
-.B
 void	**_privates;
 .PP
 .B
 int	_nprivates;
+.PP
+.B
+#include <tos.h>
+.PP
+.ft L
+typedef struct Tos Tos;
+struct Tos {
+    struct { ... } prof;    /* profiling data */
+    uvlong  cyclefreq;      /* cycle clock frequency */
+    vlong   kcycles;        /* kernel cycles */
+    vlong   pcycles;        /* process cycles (kernel + user) */
+    ulong   pid;            /* process id */
+    ulong   clock;          /* profiling clock */
+    /* top of stack */
+};
+.PP
+.B
+extern Tos *_tos;
 .fi
 .SH DESCRIPTION
 .I Exec
@@ -114,15 +129,6 @@ process has no notification handler
 (see
 .IR notify (2)).
 .PP
-When the new program begins, the global cell
-.B _clock
-is set to the address of a cell that keeps approximate time
-expended by the process at user level.
-The time is measured in milliseconds but is updated at
-a system-dependent lower rate.
-This clock is typically used by the profiler but is available
-to all programs.
-.PP
 The global cell
 .B _privates
 points to an array of
@@ -130,6 +136,28 @@ points to an array of
 elements of per-process private data.
 This storage is private for each process, even if the processes share data segments.
 .PP
+When the new program begins, the global pointer
+.B _tos
+is set to the address of a structure
+that holds information
+allowing accurate time keeping and clock reading in user space.
+If there is a user-space accessible fast clock (a processor
+cycle counter),
+.B cyclefreq
+will be set to its frequency in Hz.
+.B Kcycles
+.RB ( pcycles )
+counts the number of cycles 
+this process has spent in kernel mode
+(kernel and user mode).
+.B Clock
+is the user-profiling clock (see
+.IR prof (1)).
+Its time is measured in milliseconds but is updated at
+a system-dependent lower rate.
+This clock is typically used by the profiler but is available
+to all programs.
+.PP
 The above conventions apply to C programs; the raw system
 interface to the new image is as follows:
 the word pointed to by the stack pointer is

+ 4 - 1
sys/man/8/ping

@@ -4,7 +4,7 @@ ping, gping, traceroute, hogports \- probe the Internet
 .SH SYNOPSIS
 .B ping
 [
-.B -alq
+.B -aflq
 ] [
 .B -i
 .I interval
@@ -74,6 +74,9 @@ The options are:
 .B a
 adds the IP source and destination addresses to each report.
 .TP
+.B f
+send messages as fast as possible (flood).
+.TP
 .B i
 sets the time between messages
 to be

+ 1 - 1
sys/src/9/pc/i8253.c

@@ -201,7 +201,7 @@ i8253timerset(uvlong next)
 		period = want - now;
 		if(period < MinPeriod)
 			period = MinPeriod;
-		else if(period > (4*MaxPeriod)/5)	/* strong attraction to MaxPeriod */
+		else if(period > MaxPeriod)
 			period = MaxPeriod;
 	}
 

+ 3 - 1
sys/src/9/pc/realmode.c

@@ -28,6 +28,7 @@ void
 realmode(Ureg *ureg)
 {
 	int s;
+	ulong cr3;
 	extern void realmode0(void);	/* in l.s */
 	extern void i8259off(void), i8259on(void);
 
@@ -42,6 +43,7 @@ realmode(Ureg *ureg)
 
 	s = splhi();
 	m->pdb[PDX(0)] = m->pdb[PDX(KZERO)];	/* identity map low */
+	cr3 = getcr3();
 	putcr3(PADDR(m->pdb));
 	i8259off();
 	realmode0();
@@ -51,9 +53,9 @@ realmode(Ureg *ureg)
 		 * Don't turn interrupts on before the kernel is ready!
 		 */
 		i8259on();
-		putcr3(m->tss->cr3);
 	}
 	m->pdb[PDX(0)] = 0;	/* remove low mapping */
+	putcr3(cr3);
 	splx(s);
 	*ureg = realmoderegs;
 	unlock(&rmlock);

+ 0 - 2
sys/src/9/pc/sd53c8xx.c

@@ -1941,8 +1941,6 @@ docheck:
 	return r->status = status;
 }
 
-#define	vpt ((ulong*)VPT)
-#define	VPTX(va)		(((ulong)(va))>>12)
 static void
 cribbios(Controller *c)
 {

+ 2 - 2
sys/src/9/port/devcons.c

@@ -289,12 +289,12 @@ panic(char *fmt, ...)
 	va_start(arg, fmt);
 	n = vseprint(buf+strlen(buf), buf+sizeof(buf), fmt, arg) - buf;
 	va_end(arg);
-	buf[n] = '\n';
-	uartputs(buf, n+1);
+	iprint("%s\n", buf);
 	if(consdebug)
 		(*consdebug)();
 	spllo();
 	prflush();
+	buf[n] = '\n';
 	putstrn(buf, n+1);
 	dumpstack();
 

+ 2 - 2
sys/src/9/port/qlock.c

@@ -19,9 +19,9 @@ qlock(QLock *q)
 	Proc *p;
 
 	if(m->ilockdepth != 0)
-		print("qlock: %lux: ilockdepth %d", getcallerpc(&q), m->ilockdepth);
+		print("qlock: %lux: ilockdepth %d\n", getcallerpc(&q), m->ilockdepth);
 	if(up != nil && up->nlocks.ref)
-		print("qlock: %lux: nlocks %lud", getcallerpc(&q), up->nlocks.ref);
+		print("qlock: %lux: nlocks %lud\n", getcallerpc(&q), up->nlocks.ref);
 
 	if(q->use.key == 0x55555555)
 		panic("qlock: q %p, key 5*\n", q);

+ 0 - 1
sys/src/ape/lib/ap/syscall/mkfile

@@ -1,6 +1,5 @@
 NPROC=1
 </$objtype/mkfile
-CFLAGS=-I/sys/ninclude $CFLAGS
 SYSH=/sys/src/libc/9syscall/sys.h
 
 all:V: install

+ 1 - 1
sys/src/cmd/aux/disksim.c

@@ -246,7 +246,7 @@ getblock(vlong addr, int alloc)
 	uint i0, i1, i2;
 	vlong oaddr;
 
-	if(fd)
+	if(fd >= 0)
 		alloc = 1;
 
 	addr >>= LOGBLKSZ;

+ 4 - 1
sys/src/cmd/fossil/9fsys.c

@@ -464,7 +464,8 @@ static int
 fsysSync(Fsys* fsys, int argc, char* argv[])
 {
 	char *usage = "usage: [fsys name] sync";
-
+	int n;
+	
 	ARGBEGIN{
 	default:
 		return cliError(usage);
@@ -472,7 +473,9 @@ fsysSync(Fsys* fsys, int argc, char* argv[])
 	if(argc > 0)
 		return cliError(usage);
 
+	n = cacheDirty(fsys->fs->cache);
 	fsSync(fsys->fs);
+	consPrint("\t%s sync: wrote %d blocks\n", fsys->name, n);
 	return 1;
 }
 

+ 49 - 8
sys/src/cmd/fossil/cache.c

@@ -22,6 +22,7 @@ enum {
 struct Cache
 {
 	VtLock	*lk;
+	VtLock	*dirtylk;
 	int 	ref;
 	int	mode;
 
@@ -162,6 +163,7 @@ cacheAlloc(Disk *disk, VtSession *z, ulong nblocks, int mode)
 	nbl = nblocks * 4;
 
 	c->lk = vtLockAlloc();
+	c->dirtylk = vtLockAlloc();	/* allowed to dirty blocks */
 	c->ref = 1;
 	c->disk = disk;
 	c->z = z;
@@ -345,19 +347,25 @@ if(refed > 0)fprint(2, "cacheCheck: in used %d\n", refed);
 static Block *
 cacheBumpBlock(Cache *c)
 {
+	int printed;
 	Block *b;
 
 	/*
 	 * locate the block with the oldest second to last use.
 	 * remove it from the heap, and fix up the heap.
 	 */
+	printed = 0;
 	if(c->nheap == 0){
 		while(c->nheap == 0){
-			fprint(2, "entire cache is busy, %d dirty -- waking flush thread\n", c->ndirty);
 			vtWakeup(c->flush);
 			vtSleep(c->heapwait);
+			if(c->nheap == 0){
+				printed = 1;
+				fprint(2, "entire cache is busy, %d dirty -- waking flush thread\n", c->ndirty);
+			}
 		}
-		fprint(2, "cache is okay again\n");
+		if(printed)
+			fprint(2, "cache is okay again, %d dirty\n", c->ndirty);
 	}
 
 	b = c->heap[0];
@@ -780,6 +788,12 @@ if(0)fprint(2, "fsAlloc %ud type=%d tag = %ux\n", addr, type, tag);
 	return b;
 }
 
+int
+cacheDirty(Cache *c)
+{
+	return c->ndirty;
+}
+
 void
 cacheCountUsed(Cache *c, u32int epochLow, u32int *used, u32int *total, u32int *bsize)
 {
@@ -1074,12 +1088,14 @@ blockDirty(Block *b)
 		return 1;
 	assert(b->iostate == BioClean);
 
+	vtLock(c->dirtylk);
 	vtLock(c->lk);
 	b->iostate = BioDirty;
 	c->ndirty++;
 	if(c->ndirty > (c->maxdirty>>1))
 		vtWakeup(c->flush);
 	vtUnlock(c->lk);
+	vtUnlock(c->dirtylk);
 
 	return 1;
 }
@@ -1471,13 +1487,20 @@ blockRemoveLink(Block *b, u32int addr, int type, u32int tag, int recurse)
 static void
 doRemoveLink(Cache *c, BList *p)
 {
-	int i, n;
+	int i, n, recurse;
 	u32int a;
 	Block *b;
 	Label l;
 	BList bl;
 
-	b = cacheLocalData(c, p->addr, p->type, p->tag, OReadOnly, 0);
+	recurse = (p->recurse && p->type != BtData && p->type != BtDir);
+
+	/*
+	 * We're not really going to overwrite b, but if we're not
+	 * going to look at its contents, there is no point in reading
+	 * them from the disk.
+	 */
+	b = cacheLocalData(c, p->addr, p->type, p->tag, recurse ? OReadOnly : OOverWrite, 0);
 	if(b == nil)
 		return;
 
@@ -1494,7 +1517,7 @@ doRemoveLink(Cache *c, BList *p)
 		return;
 	}
 
-	if(p->recurse && p->type != BtData && p->type != BtDir){
+	if(recurse){
 		n = c->size / VtScoreSize;
 		for(i=0; i<n; i++){
 			a = globalToLocal(b->data + i*VtScoreSize);
@@ -1517,7 +1540,14 @@ doRemoveLink(Cache *c, BList *p)
 			bl.epoch = p->epoch;
 			bl.next = nil;
 			bl.recurse = 1;
+			/* give up the block lock - share with others */
+			blockPut(b);
 			doRemoveLink(c, &bl);
+			b = cacheLocalData(c, p->addr, p->type, p->tag, OReadOnly, 0);
+			if(b == nil){
+				fprint(2, "warning: lost block in doRemoveLink\n");
+				return;
+			}
 		}
 	}
 
@@ -1579,6 +1609,8 @@ blistAlloc(Block *b)
 		while(c->blfree == nil){
 			vtWakeup(c->flush);
 			vtSleep(c->blrend);
+			if(c->blfree == nil)
+				fprint(2, "flushing for blists\n");
 		}
 	}
 
@@ -2001,8 +2033,10 @@ flushThread(void *a)
 				 * to flush the cache but there's no work to do.
 				 * Pause a little.
 				 */
-				if(i==0)
+				if(i==0){
+					fprint(2, "flushthread found nothing to flush - %d dirty\n", c->ndirty);
 					sleep(250);
+				}
 				break;
 			}
 		if(i==0 && c->ndirty){
@@ -2024,11 +2058,17 @@ flushThread(void *a)
 }
 
 /*
- * Keep flushing until everything is clean.
+ * Flush the cache.
  */
 void
 cacheFlush(Cache *c, int wait)
 {
+	/*
+	 * Lock c->dirtylk so that more blocks aren't being dirtied
+	 * while we try to write out what's already here.
+	 * Otherwise we might not ever finish!
+	 */
+	vtLock(c->dirtylk);
 	vtLock(c->lk);
 	if(wait){
 		while(c->ndirty){
@@ -2038,9 +2078,10 @@ cacheFlush(Cache *c, int wait)
 			vtSleep(c->flushwait);
 		}
 	//	consPrint("cacheFlush: done (uhead %p)\n", c->ndirty, c->uhead);
-	}else
+	}else if(c->ndirty)
 		vtWakeup(c->flush);
 	vtUnlock(c->lk);
+	vtUnlock(c->dirtylk);
 }
 
 /*

+ 11 - 10
sys/src/cmd/fossil/file.c

@@ -894,7 +894,7 @@ fileSetQidSpace(File *f, u64int offset, u64int max)
 	f->dir.qidSpace = 1;
 	f->dir.qidOffset = offset;
 	f->dir.qidMax = max;
-	ret = fileMetaFlush2(f, nil);
+	ret = fileMetaFlush2(f, nil)>=0;
 	fileMetaUnlock(f);
 	fileUnlock(f);
 	return ret;
@@ -965,22 +965,22 @@ fileGetSize(File *f, uvlong *size)
 	return 1;
 }
 
-void
+int
 fileMetaFlush(File *f, int rec)
 {
 	File **kids, *p;
 	int nkids;
-	int i;
+	int i, rv;
 
 	fileMetaLock(f);
-	fileMetaFlush2(f, nil);
+	rv = fileMetaFlush2(f, nil);
 	fileMetaUnlock(f);
 
 	if(!rec || !fileIsDir(f))
-		return;
+		return rv;
 
 	if(!fileLock(f))
-		return;
+		return rv;
 	nkids = 0;
 	for(p=f->down; p; p=p->next)
 		nkids++;
@@ -993,10 +993,11 @@ fileMetaFlush(File *f, int rec)
 	fileUnlock(f);
 
 	for(i=0; i<nkids; i++){
-		fileMetaFlush(kids[i], 1);
+		rv |= fileMetaFlush(kids[i], 1);
 		fileDecRef(kids[i]);
 	}
 	vtMemFree(kids);
+	return rv;
 }
 
 /* assumes metaLock is held */
@@ -1011,7 +1012,7 @@ fileMetaFlush2(File *f, char *oelem)
 	u32int boff;
 
 	if(!f->dirty)
-		return 1;
+		return 0;
 
 	if(oelem == nil)
 		oelem = f->dir.elem;
@@ -1021,7 +1022,7 @@ fileMetaFlush2(File *f, char *oelem)
 	fp = f->up;
 
 	if(!sourceLock(fp->msource, -1))
-		return 0;
+		return -1;
 	/* can happen if source is clri'ed out from under us */
 	if(f->boff == NilBlock)
 		goto Err1;
@@ -1090,7 +1091,7 @@ Err:
 	blockPut(b);
 Err1:
 	sourceUnlock(fp->msource);
-	return 0;
+	return -1;
 }
 
 static int

+ 1 - 0
sys/src/cmd/fossil/fns.h

@@ -25,6 +25,7 @@ Block* cacheGlobal(Cache*, uchar[VtScoreSize], int, u32int, int);
 Block* cacheAllocBlock(Cache*, int, u32int, u32int, u32int);
 void cacheFlush(Cache*, int);
 u32int cacheLocalSize(Cache*, int);
+int cacheDirty(Cache*);
 int readLabel(Cache*, Label*, u32int addr);
 
 Block* blockCopy(Block*, u32int, u32int, u32int);

+ 23 - 9
sys/src/cmd/fossil/fossil-acid

@@ -66,12 +66,13 @@ defn vtlock(l)
 
 // try to say something intelligent about why a process is stuck.
 _pauses = {
-	"open",
-	"pread",
-	"pwrite",
-	"sleep",
-	"vtSleep",
-	"vtLock",
+	open,
+	pread,
+	pwrite,
+	sleep,
+	vtSleep,
+	vtLock,
+	vtRLock,
 };
 
 defn deadlocklist(l)
@@ -93,7 +94,9 @@ defn deadlock()
 	stallframe = 0;
 	stallname = "";
 	fossilframe = 0;
+	frame = {0};
 	while stk do {
+		lastframe = frame;
 		frame = head stk;
 		name = fmt(frame[0], 'a');
 		if !stallframe && match(name, _pauses) >= 0 then {
@@ -106,6 +109,13 @@ defn deadlock()
 			pfl(frame[1]);
 		}
 		if !fossilframe && regexp("^/sys/src/cmd/fossil/.*", pcfile(frame[0])) then {
+			if !stallframe then {
+				stallframe = lastframe;
+				stallname = fmt(lastframe[0], 'a');
+				print("\tunexpected stall: ", stallname, "\n");
+				if match(stallname, _pauses) >= 0 then
+					print("\t\t but it matches!\n");
+			}
 			fossilframe = frame;
 			print("\t", fmt(frame[0], 'a'), "(");
 			params(frame[2]);
@@ -117,7 +127,7 @@ defn deadlock()
 				print("\twaiting to lock block b=(Block)", *cacheLocalLookup:b\X, "\n");
 			if name == cacheLocal && stallname == vtSleep then
 				print("\tsleeping on block b=(Block)", *cacheLocal:b\X, "\n");
-			if name == blockFlush && stallname == vtSleep then
+			if name == blockWrite && stallname == vtSleep then
 				print("\tsleeping on block b=(Block)", *blockFlush:b\X, "\n");
 		}
 		stk = tail stk;
@@ -127,8 +137,12 @@ defn deadlock()
 		vtrendez(*vtSleep:q);
 	if stallname == vtLock then
 		vtlock(*vtLock:p);
-	if !stallframe || !fossilframe then 
-		print("\tconfused\n");
+	if !stallframe || !fossilframe then {
+		print("\tconfused:");
+		if !stallframe then print(" stallframe?");
+		if !fossilframe then print(" fossilframe?");
+		print("\n");
+	}
 	print("\n");
 }
 

+ 4 - 2
sys/src/cmd/fossil/fs.c

@@ -782,12 +782,14 @@ fsNextQid(Fs *fs, u64int *qid)
 static void
 fsMetaFlush(void *a)
 {
+	int rv;
 	Fs *fs = a;
 
 	vtRLock(fs->elk);
-	fileMetaFlush(fs->file, 1);
+	rv = fileMetaFlush(fs->file, 1);
 	vtRUnlock(fs->elk);
-	cacheFlush(fs->cache, 0);
+	if(rv > 0)
+		cacheFlush(fs->cache, 0);
 }
 
 static int

+ 1 - 1
sys/src/cmd/fossil/fs.h

@@ -49,7 +49,7 @@ int fileSync(File*);
 File *fileIncRef(File*);
 int fileDecRef(File*);
 int fileIsRoot(File*);
-void fileMetaFlush(File*, int);
+int fileMetaFlush(File*, int);
 int fileSetQidSpace(File*, u64int, u64int);
 int fileTruncate(File*, char*);
 int fileIsRoFs(File*);

+ 32 - 10
sys/src/cmd/fossil/mkfile

@@ -61,20 +61,42 @@ test:V: all
 	slay 8.flfmt | rc
 	slay 8.fossil | rc
 	unmount /n/fossil || status=''
-	{syscall seek 1 64000000 0; echo} >>/tmp/fossil
+	9fs emelieother
+	bind -c /n/emelieother/rsc/tmp /tmp
+	{syscall seek 1 6400000000 0; echo} >>/tmp/fossil
 	8.flfmt -y /tmp/fossil
 	8.conf -w /tmp/fossil flproto
-	8.fossil -f /tmp/fossil && mount -c /srv/test.fossil /n/fossil
+	8.fossil -f /tmp/fossil
+	cat /srv/test.fscons &
+	echo fsys main >>/srv/test.fscons
+	mount /srv/test.fossil /n/fossil
+	cd /n/fossil/tmp
+	dd -bs 1048576 -count 256 -if /dev/zero -of a
+	rm a
+	echo sync >>/srv/test.fscons
+	echo sync >>/srv/test.fscons
+	echo sync >>/srv/test.fscons
+	sleep 1
+	echo sync >>/srv/test.fscons
+	sleep 1
+	echo sync >>/srv/test.fscons
+	sleep 1
+	echo sync >>/srv/test.fscons
+	echo check >>/srv/test.fscons
+	echo check >>/srv/test.fscons
+	echo check >>/srv/test.fscons
+	
+
 #	cp /env/timezone /n/fossil/tmp
 #	cp /lib/words /n/fossil/tmp
-	dircp /sys/src/cmd/aux /n/fossil/tmp
-	chmod +t /n/fossil/tmp/lis
-	echo SHOULD NOT SEE THIS >>/n/fossil/tmp/lis
-	echo snap -a >>/srv/test.fscons
-	sleep 2
-	mount /srv/test.fossil /n/dump main/archive
-	cat /n/dump/*/*/tmp/lis
-
+#	dircp /n/sources/plan9/sys/src/cmd/aux /n/fossil/tmp
+#	>/n/fossil/tmp/lis
+#	chmod +t /n/fossil/tmp/lis
+#	echo SHOULD NOT SEE THIS >>/n/fossil/tmp/lis
+#	echo snap >>/srv/test.fscons
+#	sleep 2
+#	mount /srv/test.fossil /n/dump main/archive
+#	cat /n/dump/*/*/tmp/lis
 #	@{cd /n/fossil/tmp && time tar xTf /sys/src/cmd/fossil/test.tar}
 #	unmount /n/fossil
 #	rm /srv/fossil

+ 18 - 1
sys/src/cmd/ip/httpd/man2html.c

@@ -161,6 +161,14 @@ man(char *o, int sect, int vermaj)
 	hprint(hout, "</body>\n");
 }
 
+void
+strlwr(char *p)
+{
+	for(; *p; p++)
+		if('A' <= *p && *p <= 'Z')
+			*p += 'a'-'A';
+}
+
 void
 redirectto(char *uri)
 {
@@ -313,11 +321,20 @@ doconvert(char *uri, int vermaj)
 	p = strstr(uri, "/intro");
 
 	if(p == nil){
+		while(*uri == '/')
+			uri++;
 		/* redirect section requests */
 		snprint(file, sizeof(file), "/sys/man/%s", uri);
 		d = dirstat(file);
-		if(d == nil)
+		if(d == nil){
+			strlwr(file);
+			if(dirstat(file) != nil){
+				snprint(file, sizeof(file), "/magic/man2html/%s", uri);
+				strlwr(file);
+				redirectto(file);
+			}
 			error(uri, "man page not found");
+		}
 		x = d->qid.type;
 		free(d);
 		if(x & QTDIR){

+ 9 - 3
sys/src/cmd/ip/ping.c

@@ -67,6 +67,7 @@ int rint;
 vlong sum;
 ushort firstseq;
 int addresses;
+int flood;
 
 void usage(void);
 void lost(Req*, Icmp*);
@@ -93,6 +94,7 @@ clean(ushort seq, vlong now, Icmp *ip)
 	Req **l, *r;
 
 	lock(&listlock);
+	last = nil;
 	for(l = &first; *l; ){
 		r = *l;
 
@@ -110,7 +112,7 @@ clean(ushort seq, vlong now, Icmp *ip)
 			if(r->replied == 0)
 				lost(r, ip);
 			free(r);
-		} else {
+		}else{
 			last = r;
 			l = &(r->next);
 		}
@@ -147,6 +149,8 @@ sender(int fd, int msglen, int interval, int n)
 			hnputs(ip->seq, seq);
 			r->seq = seq;
 			r->next = nil;
+			r->replied = 0;
+			r->time = nsec();	/* avoid early free in reply! */
 			lock(&listlock);
 			if(first == nil)
 				first = r;
@@ -154,7 +158,6 @@ sender(int fd, int msglen, int interval, int n)
 				last->next = r;
 			last = r;
 			unlock(&listlock);
-			r->replied = 0;
 			r->time = nsec();
 			if(write(fd, ip, msglen) < msglen){
 				fprint(2, "%s: write failed: %r\n", argv0);
@@ -261,12 +264,15 @@ main(int argc, char **argv)
 	case 'r':
 		rint = 1;
 		break;
+	case 'f':
+		flood = 1;
+		break;
 	} ARGEND;
 	if(msglen < 32)
 		msglen = 64;
 	if(msglen >= 65*1024)
 		msglen = 65*1024-1;
-	if(interval <= 0)
+	if(interval <= 0 && !flood)
 		interval = SLEEPMS;
 
 	if(argc < 1)

+ 1 - 1
sys/src/cmd/ip/snoopy/bootp.c

@@ -79,7 +79,7 @@ p_compile(Filter *f)
 	Mux *m;
 
 	if(f->op == '='){
-		compile_cmp(arp.name, f, p_fields);
+		compile_cmp(bootp.name, f, p_fields);
 		return;
 	}
 	for(m = p_mux; m->name != nil; m++)

+ 183 - 58
sys/src/cmd/ip/snoopy/gre.c

@@ -1,3 +1,15 @@
+#include <u.h>
+#include <libc.h>
+#include <ip.h>
+#include "dat.h"
+#include "protos.h"
+
+/*
+ GRE version 0 is specified in rfc1701.
+ GRE version 0 has been respecified in rfc2784 as a subset of rfc1701.
+ GRE version 1, as used by pptp, has been specified in rfc2637.
+*/
+
 
 /* GRE flag bits */
 enum {
@@ -5,79 +17,192 @@ enum {
 	GRE_routing	= (1<<14),
 	GRE_key		= (1<<13),
 	GRE_seq		= (1<<12),
-	GRE_srcrt	= (1<<11),
+	GRE_srcrt		= (1<<11),
 	GRE_recur	= (7<<8),
 	GRE_ack		= (1<<7),
-	GRE_ver		= 0x7,
+	GRE_version	= 0x7,
 };
 
-/* GRE protocols */
-enum {
-	GRE_sna		= 0x0004,
-	GRE_osi		= 0x00fe,
-	GRE_pup		= 0x0200,
-	GRE_xns		= 0x0600,
-	GRE_ip		= 0x0800,
-	GRE_chaos	= 0x0804,
-	GRE_rfc826	= 0x0806,
-	GRE_frarp	= 0x0808,
-	GRE_vines	= 0x0bad,
-	GRE_vinesecho	= 0x0bae,
-	GRE_vinesloop	= 0x0baf,
-	GRE_decnetIV	= 0x6003,
-	GRE_ppp		= 0x880b,
+
+typedef struct Hdr	Hdr;
+struct Hdr
+{
+	ushort flags;
+	ushort proto;
+	uchar version;
+	ushort chksum;
+	ushort offset;
+	ulong key;
+	ulong seq;
+	ulong route;
+	ulong ack;
+};
+
+enum
+{
+	Oproto,
+};
+
+static Field p_fields[] = 
+{
+	{"proto",		Fnum,	Oproto,	"encapsulated protocol",	} ,
+	{0}
+};
+
+static Mux p_mux[] =
+{
+	{"pup",	0x0200, },
+	{"xns",	0x0600, },
+	{"ip",		0x0800, },
+	{"chaos",	0x0804, },
+	{"arp",	0x0806, },
+	{"frarp",	0x0808, },
+	{"vines",	0x0bad, },
+	{"vinesecho",	0x0bae, },
+	{"vinesloop",	0x0baf, },
+	{"ppp",	0x880b, },
+	{"llc",	0x007a, },
+	{"dot1q",	0x8100, },
+	{"eapol",	0x888e, },
+	{0},
 };
 
 int
-sprintgre(void *a, char *buf, int len)
+parthdrlen(ushort flags)
 {
-	int flag, prot, chksum, offset, key, seq, ack;
-	int n;
-	uchar *p = a;
+	return 4 + 
+		(flags&GRE_chksum || flags&GRE_routing) ? 4 : 0 +
+		flags&GRE_key ? 4 : 0 +
+		flags&GRE_seq ? 4 : 0 +
+		flags&GRE_ack ? 4 : 0;
+}
 
-	chksum = offset = key = seq = ack = 0;
-	
-	flag = NetS(p);
-	prot = NetS(p+2);
-	p += 4; len -= 4;
-	if(flag & (GRE_chksum|GRE_routing)){
-		chksum = NetS(p);
-		offset = NetS(p+2);
-		p += 4; len -= 4;
+int
+parsehdr(Hdr *h, uchar *s, uchar *e)
+{
+	uchar *p;
+	uchar n;
+
+	if(e - s < 4)
+		return -1;
+
+	p = s;
+
+	h->flags = NetS(p);
+	p += 2;
+	h->proto = NetS(p);
+	p += 2;
+	h->version = h->flags&GRE_version;
+
+	if(parthdrlen(h->flags) > e - s)
+		return -1;
+
+	if(h->flags&(GRE_chksum|GRE_routing)){
+		h->chksum = NetS(p);
+		p += 2;
+		h->offset = NetS(p);
+		p += 2;
 	}
-	if(flag&GRE_key){
-		key = NetL(p);
-		p += 4; len -= 4;
+	if(h->flags&GRE_key){
+		h->key = NetL(p);
+		p += 4;
 	}
-	if(flag&GRE_seq){
-		seq = NetL(p);
-		p += 4; len -= 4;
+	if(h->flags&GRE_seq){
+		h->seq = NetL(p);
+		p += 4;
 	}
-	if(flag&GRE_ack){
-		ack = NetL(p);
-		p += 4; len -= 4;
+	if(h->flags&GRE_ack){
+		h->ack = NetL(p);
+		p += 4;
 	}
-	/* skip routing if present */
-	if(flag&GRE_routing) {
-		while(len >= 4 && (n=p[3]) != 0) {
-			len -= n;
+	if(h->flags&GRE_routing){
+		for(;;){
+			if(e - p < 4)
+				return -1;
+			if((n = p[3]) == 0)
+				break;
 			p += n;
 		}
 	}
 
-	USED(offset);
-	USED(chksum);
-
-	n = sprint(buf, "GRE(f %4.4ux p %ux k %ux", flag, prot, key);
-	if(flag&GRE_seq)
-		n += sprint(buf+n, " s %ux", seq);
-	if(flag&GRE_ack)
-		n += sprint(buf+n, " a %ux", ack);
-	n += sprint(buf+n, " len = %d/%d) ", len, key>>16);
-	if(prot == GRE_ppp && len > 0)
-		n += sprintppp(p, buf+n, len);
-	else
-		n += sprintx(p, buf+n, len);
-		
-	return n;
+	return p - s;
 }
+
+static void
+p_compile(Filter *f)
+{
+	Mux *m;
+
+	if(f->op == '='){
+		compile_cmp(gre.name, f, p_fields);
+		return;
+	}
+	for(m = p_mux; m->name != nil; m++)
+		if(strcmp(f->s, m->name) == 0){
+			f->pr = m->pr;
+			f->ulv = m->val;
+			f->subop = Oproto;
+			return;
+		}
+	sysfatal("unknown gre field or protocol: %s", f->s);
+}
+
+static int
+p_filter(Filter *f, Msg *m)
+{
+	Hdr h;
+	int len;
+
+	len = parsehdr(&h, m->ps, m->pe);
+	if(len < 0)
+		return -1;
+	m->ps += len;
+
+	switch(f->subop){
+	case Oproto:
+		return h.proto == f->ulv;
+	}
+	return 0;
+}
+
+static int
+p_seprint(Msg *m)
+{
+	Hdr h;
+	int len;
+
+	len = parsehdr(&h, m->ps, m->pe);
+	if(len < 0)
+		return -1;
+	m->ps += len;
+
+	demux(p_mux, h.proto, h.proto, m, &dump);
+
+	m->p = seprint(m->p, m->e, "version=%d proto=%#ux flags=%#.4ux", h.version, h.proto, h.flags);
+	if(h.flags&GRE_chksum)
+		m->p = seprint(m->p, m->e, " checksum=%#.4ux", h.chksum);
+	if(h.flags&GRE_key)
+		m->p = seprint(m->p, m->e, " key=%#.8ulx", h.key);
+	if(h.flags&GRE_seq)
+		m->p = seprint(m->p, m->e, " seq=%#.8ulx", h.seq);
+	if(h.flags&GRE_ack)
+		m->p = seprint(m->p, m->e, " ack=%#.8ulx", h.ack);
+	if(h.flags&GRE_routing)
+		m->p = seprint(m->p, m->e, " offset=%#ux haverouting", h.offset);
+	if(h.version == 0)
+		m->p = seprint(m->p, m->e, " recursion=%ud", (h.flags&GRE_recur)>>8);
+	
+	return 0;
+}
+
+Proto gre =
+{
+	"gre",
+	p_compile,
+	p_filter,
+	p_seprint,
+	p_mux,
+	"%#.4ux",
+	p_fields,
+	defaultframer,
+};

+ 1 - 1
sys/src/cmd/ip/snoopy/icmp.c

@@ -73,7 +73,7 @@ static void
 p_compile(Filter *f)
 {
 	if(f->op == '='){
-		compile_cmp(udp.name, f, p_fields);
+		compile_cmp(icmp.name, f, p_fields);
 		return;
 	}
 	if(strcmp(f->s, "ip") == 0){

+ 1 - 1
sys/src/cmd/ip/snoopy/il.c

@@ -54,7 +54,7 @@ p_compile(Filter *f)
 	Mux *m;
 
 	if(f->op == '='){
-		compile_cmp(udp.name, f, p_fields);
+		compile_cmp(il.name, f, p_fields);
 		return;
 	}
 	for(m = p_mux; m->name != nil; m++)

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

@@ -11,6 +11,7 @@ PROTOS=\
 	eapol\
 	eapol_key\
 	ether\
+	gre\
 	hdlc\
 	icmp6\
 	icmp\

+ 1 - 1
sys/src/cmd/ip/snoopy/tcp.c

@@ -74,7 +74,7 @@ p_compile(Filter *f)
 	Mux *m;
 
 	if(f->op == '='){
-		compile_cmp(udp.name, f, p_fields);
+		compile_cmp(tcp.name, f, p_fields);
 		return;
 	}
 	for(m = p_mux; m->name != nil; m++)

+ 4 - 0
sys/src/cmd/replica/applylog.c

@@ -68,6 +68,8 @@ resolve(char *name)
 
 	for(i=0; i<nres; i++){
 		len = strlen(res[i].name);
+		if(len == 0)
+			return res[i].c;
 		if(strncmp(name, res[i].name, len) == 0 && (name[len]=='/' || name[len] == 0))
 			return res[i].c;
 	}
@@ -762,6 +764,8 @@ ismatch(char *s)
 		return 1;
 	for(i=0; i<nmatch; i++){
 		len = strlen(match[i]);
+		if(len == 0)
+			return 1;
 		if(strncmp(s, match[i], len) == 0 && (s[len]=='/' || s[len] == 0))
 			return 1;
 	}

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

@@ -62,7 +62,7 @@ findkey(char *val, Keyword *p)
 char*
 actstr(int a)
 {
-	char buf[32];
+	static char buf[32];
 	Keyword *p;
 
 	for(p=actions; p->name; p++)