Browse Source

Plan 9 from Bell Labs 2007-04-07

David du Colombier 12 years ago
parent
commit
75784b7c81

+ 31 - 29
dist/replica/_plan9.db

@@ -1,8 +1,8 @@
 386 - 20000000775 sys sys 1010957353 0
 386/9load - 775 sys sys 1171784718 220040
-386/9loaddebug - 775 sys sys 1175311076 402159
+386/9loaddebug - 775 sys sys 1175891903 402216
 386/9loadlite - 775 sys sys 1171784720 137116
-386/9loadlitedebug - 775 sys sys 1175311076 202588
+386/9loadlitedebug - 775 sys sys 1175891904 202645
 386/9pc - 775 sys sys 1161230890 1924142
 386/9pc.gz - 664 sys sys 1161232307 821176
 386/9pccpu - 775 sys sys 1161230955 1636008
@@ -15,7 +15,7 @@
 386/_9pcdisk.gz - 664 sys sys 1039764191 695837
 386/bin - 20000000775 sys sys 1018897690 0
 386/bin/8a - 775 sys sys 1168402260 116604
-386/bin/8c - 775 sys sys 1168719909 365769
+386/bin/8c - 775 sys sys 1175913060 366190
 386/bin/8l - 775 sys sys 1148500567 115711
 386/bin/9660srv - 775 sys sys 1168402261 104975
 386/bin/aan - 775 sys sys 1168402261 131298
@@ -304,7 +304,7 @@
 386/bin/ip/httpfile - 775 sys sys 1168402324 284262
 386/bin/ip/imap4d - 775 sys sys 1169265834 238152
 386/bin/ip/ipconfig - 775 sys sys 1169612025 139550
-386/bin/ip/ping - 775 sys sys 1169151814 84622
+386/bin/ip/ping - 775 sys sys 1175887160 84684
 386/bin/ip/ppp - 775 sys sys 1169612026 220423
 386/bin/ip/pppoe - 775 sys sys 1168402326 77787
 386/bin/ip/pptp - 775 sys sys 1169612026 127215
@@ -341,10 +341,10 @@
 386/bin/ndb - 20000000775 sys sys 985743147 0
 386/bin/ndb/cs - 775 sys sys 1169612028 150911
 386/bin/ndb/csquery - 775 sys sys 1168402337 61702
-386/bin/ndb/dns - 775 sys sys 1175741630 277566
-386/bin/ndb/dnsdebug - 775 sys sys 1175741631 252249
+386/bin/ndb/dns - 775 sys sys 1175913060 277796
+386/bin/ndb/dnsdebug - 775 sys sys 1175913061 252479
 386/bin/ndb/dnsquery - 775 sys sys 1174704818 64417
-386/bin/ndb/dnstcp - 775 sys sys 1175741631 250678
+386/bin/ndb/dnstcp - 775 sys sys 1175913061 250908
 386/bin/ndb/ipquery - 775 sys sys 1169612031 96994
 386/bin/ndb/mkdb - 775 sys sys 1168402340 64211
 386/bin/ndb/mkhash - 775 sys sys 1168402340 84780
@@ -406,7 +406,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 1175741632 186561
+386/bin/snoopy - 775 sys sys 1175913062 186718
 386/bin/sort - 775 sys sys 1168402349 82523
 386/bin/spin - 775 sys sys 1134151359 758520
 386/bin/split - 775 sys sys 1168402349 75886
@@ -520,7 +520,7 @@
 386/bin/xmr - 775 sys sys 1148500703 40192
 386/bin/xms - 775 sys sys 1148500703 40775
 386/bin/yacc - 775 sys sys 1168402359 102743
-386/bin/yuv - 775 sys sys 1168402360 150306
+386/bin/yuv - 775 sys sys 1175887160 153598
 386/bin/zip - 775 sys sys 1168402360 90230
 386/include - 20000000775 sys sys 953243048 0
 386/include/ape - 20000000775 sys sys 1046282351 0
@@ -569,7 +569,7 @@
 386/lib/libndb.a - 664 sys sys 1168402370 64470
 386/lib/libplumb.a - 664 sys sys 1168402370 19408
 386/lib/libregexp.a - 664 sys sys 1168402370 37438
-386/lib/libscribble.a - 664 sys sys 1168402371 107238
+386/lib/libscribble.a - 664 sys sys 1175914132 107650
 386/lib/libsec.a - 664 sys sys 1168402372 646724
 386/lib/libstdio.a - 664 sys sys 1168402373 125926
 386/lib/libsunrpc.a - 664 sys sys 1168402374 353266
@@ -5191,7 +5191,7 @@ lib/glass - 664 sys sys 1113428578 8517
 lib/hiragana - 664 sys sys 944943772 737
 lib/kana - 664 sys sys 944943772 1061
 lib/katakana - 664 sys sys 944943772 982
-lib/keyboard - 664 sys sys 1161442226 26057
+lib/keyboard - 664 sys sys 1175869935 26173
 lib/mammals - 664 sys sys 944943772 27760
 lib/map - 20000000775 sys sys 1161442423 0
 lib/map/README - 664 sys sys 1161442423 105
@@ -5230,6 +5230,7 @@ lib/unicode - 664 sys sys 958440028 223312
 lib/unicode.notice - 664 sys sys 958504386 1398
 lib/units - 664 sys sys 1071415518 9997
 lib/vgadb - 664 sys sys 1173737426 30457
+lib/video.specs - 664 sys sys 1175869533 2942
 lib/volcanoes - 664 sys sys 944944024 119831
 lib/words - 664 sys sys 1014923442 247097
 lp - 20000000775 sys sys 1079376135 0
@@ -5419,7 +5420,7 @@ rc/bin/B - 775 sys sys 945617206 645
 rc/bin/C - 664 sys sys 1169492077 980
 rc/bin/Kill - 775 sys sys 1018637942 115
 rc/bin/a: - 775 sys sys 1063856406 255
-rc/bin/ap - 775 sys sys 1123163734 733
+rc/bin/ap - 775 sys sys 1175869448 645
 rc/bin/ape - 20000000775 sys sys 1155362042 0
 rc/bin/ape/ar89 - 775 sys sys 1139744263 240
 rc/bin/ape/c89 - 775 sys sys 945617285 39
@@ -5445,7 +5446,7 @@ rc/bin/delkey - 775 sys sys 1109429137 643
 rc/bin/dial - 20000000775 sys sys 1059180057 0
 rc/bin/diffy - 775 sys sys 1140694870 277
 rc/bin/dircp - 775 sys sys 1169490692 234
-rc/bin/diskparts - 775 sys sys 1174849973 392
+rc/bin/diskparts - 775 sys sys 1175868412 547
 rc/bin/doc2ps - 775 sys sys 1069793831 244
 rc/bin/doc2txt - 775 sys sys 1025197880 563
 rc/bin/doctype - 775 sys sys 1162921755 1727
@@ -7272,7 +7273,7 @@ sys/man - 20000000775 sys sys 1041446473 0
 sys/man/1 - 20000000775 sys sys 1158800370 0
 sys/man/1/0intro - 664 sys sys 1101668050 9625
 sys/man/1/2a - 664 sys sys 1158281866 1196
-sys/man/1/2c - 664 sys sys 1173026977 9204
+sys/man/1/2c - 664 sys sys 1175892134 9440
 sys/man/1/2l - 664 sys sys 1158281887 4376
 sys/man/1/INDEX - 664 sys sys 1141357442 3040
 sys/man/1/INDEX.html - 664 sys sys 1141352366 16517
@@ -7430,7 +7431,7 @@ sys/man/1/yacc - 664 sys sys 944959676 3273
 sys/man/1/yesterday - 664 sys sys 1148760984 2640
 sys/man/2 - 20000000775 sys sys 1143130045 0
 sys/man/2/0intro - 664 sys sys 1115941566 11660
-sys/man/2/9p - 664 sys sys 1150036738 15887
+sys/man/2/9p - 664 sys sys 1175867369 15852
 sys/man/2/9pcmdbuf - 664 sys sys 1165622380 2076
 sys/man/2/9pfid - 664 sys sys 1106072437 3663
 sys/man/2/9pfile - 664 sys sys 1048637158 4408
@@ -7570,7 +7571,7 @@ sys/man/2/string - 664 sys sys 1055701090 5306
 sys/man/2/stringsize - 664 sys sys 952627482 1409
 sys/man/2/subfont - 664 sys sys 956345937 5140
 sys/man/2/symbol - 664 sys sys 950892874 9423
-sys/man/2/thread - 664 sys sys 1117034202 11640
+sys/man/2/thread - 664 sys sys 1175868879 11642
 sys/man/2/time - 664 sys sys 1015091527 739
 sys/man/2/tmpfile - 664 sys sys 1048637161 1157
 sys/man/2/wait - 664 sys sys 1163004064 2525
@@ -9871,7 +9872,7 @@ sys/src/cmd/cc/com64.c - 664 sys sys 1143240308 10001
 sys/src/cmd/cc/compat - 664 sys sys 1014925177 684
 sys/src/cmd/cc/compat.c - 664 sys sys 1132451523 454
 sys/src/cmd/cc/dcl.c - 664 sys sys 1143759352 27003
-sys/src/cmd/cc/dpchk.c - 664 sys sys 1168307976 7175
+sys/src/cmd/cc/dpchk.c - 664 sys sys 1175892134 7760
 sys/src/cmd/cc/funct.c - 664 sys sys 984718510 6167
 sys/src/cmd/cc/lex.c - 664 sys sys 1162952421 24538
 sys/src/cmd/cc/lexbody - 664 sys sys 1131293457 9188
@@ -12477,7 +12478,7 @@ sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1168894057 2587
 sys/src/cmd/ip/ipconfig.c - 664 sys sys 1166761782 35168
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
 sys/src/cmd/ip/mkfile - 664 sys sys 1169163575 1250
-sys/src/cmd/ip/ping.c - 664 sys sys 1169162049 9673
+sys/src/cmd/ip/ping.c - 664 sys sys 1175868270 9699
 sys/src/cmd/ip/ppp - 20000000775 sys sys 1065963823 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
@@ -12566,7 +12567,7 @@ sys/src/cmd/jpg/readgif.c - 664 sys sys 1143220941 10472
 sys/src/cmd/jpg/readjpg.c - 664 sys sys 1032060302 33009
 sys/src/cmd/jpg/readpng.c - 664 sys sys 1108852825 10117
 sys/src/cmd/jpg/readppm.c - 664 sys sys 1108851603 3645
-sys/src/cmd/jpg/readyuv.c - 664 sys sys 1067742240 3502
+sys/src/cmd/jpg/readyuv.c - 664 sys sys 1175869532 4090
 sys/src/cmd/jpg/rgbrgbv.c - 664 sys sys 984718829 1236
 sys/src/cmd/jpg/rgbycc.c - 664 sys sys 944961292 2486
 sys/src/cmd/jpg/togif.c - 664 sys sys 944961292 2828
@@ -12748,22 +12749,22 @@ sys/src/cmd/mtime.c - 664 sys sys 1036172302 450
 sys/src/cmd/mug.c - 664 sys sys 1157143847 24888
 sys/src/cmd/mv.c - 664 sys sys 1163029439 4682
 sys/src/cmd/ndb - 20000000775 sys sys 1080135004 0
-sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1175642286 6881
-sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1175728897 10892
+sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1175901489 6927
+sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1175901582 11659
 sys/src/cmd/ndb/cs.c - 664 sys sys 1163208159 33080
 sys/src/cmd/ndb/csquery.c - 664 sys sys 1174626119 1073
-sys/src/cmd/ndb/dblookup.c - 664 sys sys 1174792290 20940
+sys/src/cmd/ndb/dblookup.c - 664 sys sys 1175901604 21010
 sys/src/cmd/ndb/dn.c - 664 sys sys 1175642250 32545
 sys/src/cmd/ndb/dnarea.c - 664 sys sys 1175664421 2519
-sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1175728921 3142
+sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1175901450 3147
 sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1175642403 26242
-sys/src/cmd/ndb/dns.c - 664 sys sys 1175642266 15906
-sys/src/cmd/ndb/dns.h - 664 sys sys 1175642258 10561
+sys/src/cmd/ndb/dns.c - 664 sys sys 1175901186 16013
+sys/src/cmd/ndb/dns.h - 664 sys sys 1175901645 10640
 sys/src/cmd/ndb/dnsdebug.c - 664 sys sys 1174690026 8779
-sys/src/cmd/ndb/dnserver.c - 664 sys sys 1174626125 4400
+sys/src/cmd/ndb/dnserver.c - 664 sys sys 1175901160 4392
 sys/src/cmd/ndb/dnsquery.c - 664 sys sys 1174626126 2435
-sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1175728913 7433
-sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1175728907 5204
+sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1175901148 7440
+sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1175901459 5206
 sys/src/cmd/ndb/ipquery.c - 664 sys sys 1124711423 773
 sys/src/cmd/ndb/mkdb.c - 664 sys sys 957402054 2886
 sys/src/cmd/ndb/mkfile - 664 sys sys 1174623575 1984
@@ -15535,7 +15536,7 @@ sys/src/libscribble/hre_internal.h - 664 sys sys 1091904427 5155
 sys/src/libscribble/li_recognizer.c - 664 sys sys 985543526 57500
 sys/src/libscribble/li_recognizer_internal.h - 664 sys sys 985543526 1166
 sys/src/libscribble/mkfile - 664 sys sys 1035389780 514
-sys/src/libscribble/scribbleimpl.h - 664 sys sys 1091904427 13087
+sys/src/libscribble/scribbleimpl.h - 664 sys sys 1175914239 13093
 sys/src/libsec - 20000000775 sys sys 1039727695 0
 sys/src/libsec/386 - 20000000775 sys sys 1039727694 0
 sys/src/libsec/386/md5block.s - 664 sys sys 985124884 5369
@@ -15767,3 +15768,4 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
+sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1175915050 499

+ 31 - 30
dist/replica/plan9.db

@@ -1,8 +1,8 @@
 386 - 20000000775 sys sys 1010957353 0
 386/9load - 775 sys sys 1171784718 220040
-386/9loaddebug - 775 sys sys 1175311076 402159
+386/9loaddebug - 775 sys sys 1175891903 402216
 386/9loadlite - 775 sys sys 1171784720 137116
-386/9loadlitedebug - 775 sys sys 1175311076 202588
+386/9loadlitedebug - 775 sys sys 1175891904 202645
 386/9pc - 775 sys sys 1161230890 1924142
 386/9pc.gz - 664 sys sys 1161232307 821176
 386/9pccpu - 775 sys sys 1161230955 1636008
@@ -15,7 +15,7 @@
 386/_9pcdisk.gz - 664 sys sys 1039764191 695837
 386/bin - 20000000775 sys sys 1018897690 0
 386/bin/8a - 775 sys sys 1168402260 116604
-386/bin/8c - 775 sys sys 1168719909 365769
+386/bin/8c - 775 sys sys 1175913060 366190
 386/bin/8l - 775 sys sys 1148500567 115711
 386/bin/9660srv - 775 sys sys 1168402261 104975
 386/bin/aan - 775 sys sys 1168402261 131298
@@ -304,7 +304,7 @@
 386/bin/ip/httpfile - 775 sys sys 1168402324 284262
 386/bin/ip/imap4d - 775 sys sys 1169265834 238152
 386/bin/ip/ipconfig - 775 sys sys 1169612025 139550
-386/bin/ip/ping - 775 sys sys 1169151814 84622
+386/bin/ip/ping - 775 sys sys 1175887160 84684
 386/bin/ip/ppp - 775 sys sys 1169612026 220423
 386/bin/ip/pppoe - 775 sys sys 1168402326 77787
 386/bin/ip/pptp - 775 sys sys 1169612026 127215
@@ -341,10 +341,10 @@
 386/bin/ndb - 20000000775 sys sys 985743147 0
 386/bin/ndb/cs - 775 sys sys 1169612028 150911
 386/bin/ndb/csquery - 775 sys sys 1168402337 61702
-386/bin/ndb/dns - 775 sys sys 1175741630 277566
-386/bin/ndb/dnsdebug - 775 sys sys 1175741631 252249
+386/bin/ndb/dns - 775 sys sys 1175913060 277796
+386/bin/ndb/dnsdebug - 775 sys sys 1175913061 252479
 386/bin/ndb/dnsquery - 775 sys sys 1174704818 64417
-386/bin/ndb/dnstcp - 775 sys sys 1175741631 250678
+386/bin/ndb/dnstcp - 775 sys sys 1175913061 250908
 386/bin/ndb/ipquery - 775 sys sys 1169612031 96994
 386/bin/ndb/mkdb - 775 sys sys 1168402340 64211
 386/bin/ndb/mkhash - 775 sys sys 1168402340 84780
@@ -406,7 +406,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 1175741632 186561
+386/bin/snoopy - 775 sys sys 1175913062 186718
 386/bin/sort - 775 sys sys 1168402349 82523
 386/bin/spin - 775 sys sys 1134151359 758520
 386/bin/split - 775 sys sys 1168402349 75886
@@ -520,7 +520,7 @@
 386/bin/xmr - 775 sys sys 1148500703 40192
 386/bin/xms - 775 sys sys 1148500703 40775
 386/bin/yacc - 775 sys sys 1168402359 102743
-386/bin/yuv - 775 sys sys 1168402360 150306
+386/bin/yuv - 775 sys sys 1175887160 153598
 386/bin/zip - 775 sys sys 1168402360 90230
 386/include - 20000000775 sys sys 953243048 0
 386/include/ape - 20000000775 sys sys 1046282351 0
@@ -569,7 +569,7 @@
 386/lib/libndb.a - 664 sys sys 1168402370 64470
 386/lib/libplumb.a - 664 sys sys 1168402370 19408
 386/lib/libregexp.a - 664 sys sys 1168402370 37438
-386/lib/libscribble.a - 664 sys sys 1168402371 107238
+386/lib/libscribble.a - 664 sys sys 1175914132 107650
 386/lib/libsec.a - 664 sys sys 1168402372 646724
 386/lib/libstdio.a - 664 sys sys 1168402373 125926
 386/lib/libsunrpc.a - 664 sys sys 1168402374 353266
@@ -5191,7 +5191,7 @@ lib/glass - 664 sys sys 1113428578 8517
 lib/hiragana - 664 sys sys 944943772 737
 lib/kana - 664 sys sys 944943772 1061
 lib/katakana - 664 sys sys 944943772 982
-lib/keyboard - 664 sys sys 1161442226 26057
+lib/keyboard - 664 sys sys 1175869935 26173
 lib/mammals - 664 sys sys 944943772 27760
 lib/map - 20000000775 sys sys 1161442423 0
 lib/map/README - 664 sys sys 1161442423 105
@@ -5230,6 +5230,7 @@ lib/unicode - 664 sys sys 958440028 223312
 lib/unicode.notice - 664 sys sys 958504386 1398
 lib/units - 664 sys sys 1071415518 9997
 lib/vgadb - 664 sys sys 1173737426 30457
+lib/video.specs - 664 sys sys 1175869533 2942
 lib/volcanoes - 664 sys sys 944944024 119831
 lib/words - 664 sys sys 1014923442 247097
 lp - 20000000775 sys sys 1079376135 0
@@ -5419,7 +5420,7 @@ rc/bin/B - 775 sys sys 945617206 645
 rc/bin/C - 664 sys sys 1169492077 980
 rc/bin/Kill - 775 sys sys 1018637942 115
 rc/bin/a: - 775 sys sys 1063856406 255
-rc/bin/ap - 775 sys sys 1123163734 733
+rc/bin/ap - 775 sys sys 1175869448 645
 rc/bin/ape - 20000000775 sys sys 1155362042 0
 rc/bin/ape/ar89 - 775 sys sys 1139744263 240
 rc/bin/ape/c89 - 775 sys sys 945617285 39
@@ -5445,7 +5446,7 @@ rc/bin/delkey - 775 sys sys 1109429137 643
 rc/bin/dial - 20000000775 sys sys 1059180057 0
 rc/bin/diffy - 775 sys sys 1140694870 277
 rc/bin/dircp - 775 sys sys 1169490692 234
-rc/bin/diskparts - 775 sys sys 1174849973 392
+rc/bin/diskparts - 775 sys sys 1175868412 547
 rc/bin/doc2ps - 775 sys sys 1069793831 244
 rc/bin/doc2txt - 775 sys sys 1025197880 563
 rc/bin/doctype - 775 sys sys 1162921755 1727
@@ -7272,7 +7273,7 @@ sys/man - 20000000775 sys sys 1041446473 0
 sys/man/1 - 20000000775 sys sys 1158800370 0
 sys/man/1/0intro - 664 sys sys 1101668050 9625
 sys/man/1/2a - 664 sys sys 1158281866 1196
-sys/man/1/2c - 664 sys sys 1173026977 9204
+sys/man/1/2c - 664 sys sys 1175892134 9440
 sys/man/1/2l - 664 sys sys 1158281887 4376
 sys/man/1/INDEX - 664 sys sys 1141357442 3040
 sys/man/1/INDEX.html - 664 sys sys 1141352366 16517
@@ -7430,7 +7431,7 @@ sys/man/1/yacc - 664 sys sys 944959676 3273
 sys/man/1/yesterday - 664 sys sys 1148760984 2640
 sys/man/2 - 20000000775 sys sys 1143130045 0
 sys/man/2/0intro - 664 sys sys 1115941566 11660
-sys/man/2/9p - 664 sys sys 1150036738 15887
+sys/man/2/9p - 664 sys sys 1175867369 15852
 sys/man/2/9pcmdbuf - 664 sys sys 1165622380 2076
 sys/man/2/9pfid - 664 sys sys 1106072437 3663
 sys/man/2/9pfile - 664 sys sys 1048637158 4408
@@ -7570,7 +7571,7 @@ sys/man/2/string - 664 sys sys 1055701090 5306
 sys/man/2/stringsize - 664 sys sys 952627482 1409
 sys/man/2/subfont - 664 sys sys 956345937 5140
 sys/man/2/symbol - 664 sys sys 950892874 9423
-sys/man/2/thread - 664 sys sys 1117034202 11640
+sys/man/2/thread - 664 sys sys 1175868879 11642
 sys/man/2/time - 664 sys sys 1015091527 739
 sys/man/2/tmpfile - 664 sys sys 1048637161 1157
 sys/man/2/wait - 664 sys sys 1163004064 2525
@@ -8842,7 +8843,7 @@ 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 1039727535 0
 sys/src/ape/lib/ap/syscall/genall - 775 sys sys 1173737406 520
-sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1173737407 489
+sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1175915050 499
 sys/src/ape/lib/bsd - 20000000775 sys sys 1063858406 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
@@ -9871,7 +9872,7 @@ sys/src/cmd/cc/com64.c - 664 sys sys 1143240308 10001
 sys/src/cmd/cc/compat - 664 sys sys 1014925177 684
 sys/src/cmd/cc/compat.c - 664 sys sys 1132451523 454
 sys/src/cmd/cc/dcl.c - 664 sys sys 1143759352 27003
-sys/src/cmd/cc/dpchk.c - 664 sys sys 1168307976 7175
+sys/src/cmd/cc/dpchk.c - 664 sys sys 1175892134 7760
 sys/src/cmd/cc/funct.c - 664 sys sys 984718510 6167
 sys/src/cmd/cc/lex.c - 664 sys sys 1162952421 24538
 sys/src/cmd/cc/lexbody - 664 sys sys 1131293457 9188
@@ -12477,7 +12478,7 @@ sys/src/cmd/ip/imap4d/utils.c - 664 sys sys 1168894057 2587
 sys/src/cmd/ip/ipconfig.c - 664 sys sys 1166761782 35168
 sys/src/cmd/ip/measure.c - 664 sys sys 944961011 3733
 sys/src/cmd/ip/mkfile - 664 sys sys 1169163575 1250
-sys/src/cmd/ip/ping.c - 664 sys sys 1169162049 9673
+sys/src/cmd/ip/ping.c - 664 sys sys 1175868270 9699
 sys/src/cmd/ip/ppp - 20000000775 sys sys 1065963823 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
@@ -12566,7 +12567,7 @@ sys/src/cmd/jpg/readgif.c - 664 sys sys 1143220941 10472
 sys/src/cmd/jpg/readjpg.c - 664 sys sys 1032060302 33009
 sys/src/cmd/jpg/readpng.c - 664 sys sys 1108852825 10117
 sys/src/cmd/jpg/readppm.c - 664 sys sys 1108851603 3645
-sys/src/cmd/jpg/readyuv.c - 664 sys sys 1067742240 3502
+sys/src/cmd/jpg/readyuv.c - 664 sys sys 1175869532 4090
 sys/src/cmd/jpg/rgbrgbv.c - 664 sys sys 984718829 1236
 sys/src/cmd/jpg/rgbycc.c - 664 sys sys 944961292 2486
 sys/src/cmd/jpg/togif.c - 664 sys sys 944961292 2828
@@ -12748,22 +12749,22 @@ sys/src/cmd/mtime.c - 664 sys sys 1036172302 450
 sys/src/cmd/mug.c - 664 sys sys 1157143847 24888
 sys/src/cmd/mv.c - 664 sys sys 1163029439 4682
 sys/src/cmd/ndb - 20000000775 sys sys 1080135004 0
-sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1175642286 6881
-sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1175728897 10892
+sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1175901489 6927
+sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1175901582 11659
 sys/src/cmd/ndb/cs.c - 664 sys sys 1163208159 33080
 sys/src/cmd/ndb/csquery.c - 664 sys sys 1174626119 1073
-sys/src/cmd/ndb/dblookup.c - 664 sys sys 1174792290 20940
+sys/src/cmd/ndb/dblookup.c - 664 sys sys 1175901604 21010
 sys/src/cmd/ndb/dn.c - 664 sys sys 1175642250 32545
 sys/src/cmd/ndb/dnarea.c - 664 sys sys 1175664421 2519
-sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1175728921 3142
+sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1175901450 3147
 sys/src/cmd/ndb/dnresolve.c - 664 sys sys 1175642403 26242
-sys/src/cmd/ndb/dns.c - 664 sys sys 1175642266 15906
-sys/src/cmd/ndb/dns.h - 664 sys sys 1175642258 10561
+sys/src/cmd/ndb/dns.c - 664 sys sys 1175901186 16013
+sys/src/cmd/ndb/dns.h - 664 sys sys 1175901645 10640
 sys/src/cmd/ndb/dnsdebug.c - 664 sys sys 1174690026 8779
-sys/src/cmd/ndb/dnserver.c - 664 sys sys 1174626125 4400
+sys/src/cmd/ndb/dnserver.c - 664 sys sys 1175901160 4392
 sys/src/cmd/ndb/dnsquery.c - 664 sys sys 1174626126 2435
-sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1175728913 7433
-sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1175728907 5204
+sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1175901148 7440
+sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1175901459 5206
 sys/src/cmd/ndb/ipquery.c - 664 sys sys 1124711423 773
 sys/src/cmd/ndb/mkdb.c - 664 sys sys 957402054 2886
 sys/src/cmd/ndb/mkfile - 664 sys sys 1174623575 1984
@@ -15535,7 +15536,7 @@ sys/src/libscribble/hre_internal.h - 664 sys sys 1091904427 5155
 sys/src/libscribble/li_recognizer.c - 664 sys sys 985543526 57500
 sys/src/libscribble/li_recognizer_internal.h - 664 sys sys 985543526 1166
 sys/src/libscribble/mkfile - 664 sys sys 1035389780 514
-sys/src/libscribble/scribbleimpl.h - 664 sys sys 1091904427 13087
+sys/src/libscribble/scribbleimpl.h - 664 sys sys 1175914239 13093
 sys/src/libsec - 20000000775 sys sys 1039727695 0
 sys/src/libsec/386 - 20000000775 sys sys 1039727694 0
 sys/src/libsec/386/md5block.s - 664 sys sys 985124884 5369

+ 32 - 0
dist/replica/plan9.log

@@ -48137,3 +48137,35 @@
 1175742006 1 c 386/bin/ndb/dns - 775 sys sys 1175741630 277566
 1175742006 2 c 386/bin/ndb/dnsdebug - 775 sys sys 1175741631 252249
 1175742006 3 c 386/bin/ndb/dnstcp - 775 sys sys 1175741631 250678
+1175868006 0 c sys/man/2/9p - 664 sys sys 1175867369 15852
+1175869806 0 c lib/keyboard - 664 sys sys 1175869818 26170
+1175869806 1 a lib/video.specs - 664 sys sys 1175869533 2942
+1175869806 2 c rc/bin/ap - 775 sys sys 1175869448 645
+1175869806 3 c rc/bin/diskparts - 775 sys sys 1175868412 547
+1175869806 4 c sys/man/2/thread - 664 sys sys 1175868879 11642
+1175869806 5 c sys/src/cmd/ip/ping.c - 664 sys sys 1175868270 9699
+1175869806 6 c sys/src/cmd/jpg/readyuv.c - 664 sys sys 1175869532 4090
+1175871605 0 c lib/keyboard - 664 sys sys 1175869935 26173
+1175887805 0 c 386/bin/ip/ping - 775 sys sys 1175887160 84684
+1175887805 1 c 386/bin/yuv - 775 sys sys 1175887160 153598
+1175893311 0 c 386/9loaddebug - 775 sys sys 1175891903 402216
+1175893311 1 c 386/9loadlitedebug - 775 sys sys 1175891904 202645
+1175893311 2 c sys/man/1/2c - 664 sys sys 1175892134 9440
+1175893311 3 c sys/src/cmd/cc/dpchk.c - 664 sys sys 1175892134 7760
+1175902205 0 c sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1175901489 6927
+1175902205 1 c sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1175901582 11659
+1175902205 2 c sys/src/cmd/ndb/dblookup.c - 664 sys sys 1175901604 21010
+1175902205 3 c sys/src/cmd/ndb/dnnotify.c - 664 sys sys 1175901450 3147
+1175902205 4 c sys/src/cmd/ndb/dns.c - 664 sys sys 1175901186 16013
+1175902205 5 c sys/src/cmd/ndb/dns.h - 664 sys sys 1175901645 10640
+1175902205 6 c sys/src/cmd/ndb/dnserver.c - 664 sys sys 1175901160 4392
+1175902205 7 c sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1175901148 7440
+1175902205 8 c sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1175901459 5206
+1175914806 0 c 386/bin/8c - 775 sys sys 1175913060 366190
+1175914806 1 c 386/bin/snoopy - 775 sys sys 1175913062 186718
+1175914806 2 c 386/bin/ndb/dns - 775 sys sys 1175913060 277796
+1175914806 3 c 386/bin/ndb/dnsdebug - 775 sys sys 1175913061 252479
+1175914806 4 c 386/bin/ndb/dnstcp - 775 sys sys 1175913061 250908
+1175914806 5 c 386/lib/libscribble.a - 664 sys sys 1175914132 107650
+1175914806 6 c sys/src/libscribble/scribbleimpl.h - 664 sys sys 1175914239 13093
+1175916605 0 c sys/src/ape/lib/ap/syscall/mkfile - 664 sys sys 1175915050 499

+ 3 - 0
lib/keyboard

@@ -392,6 +392,9 @@
 2020  dg          †	dagger
 2021  dd          ‡	double dagger
 2022  bu          •	bullet
+2024  1.          ․ one dot leader
+2025  2.          ‥ two dot leader
+2026  3.          … horizontal ellipsis
 203D  !? ?!       ‽	interrobang
 2070  s0          ⁰	superscript digit zero
 2071  s1          ⁱ	superscript digit one

+ 59 - 0
lib/video.specs

@@ -0,0 +1,59 @@
+#	Video standards
+#	samples per line
+#	lines per frame
+#	sample where active video starts	
+#	number of active video samples
+#	first line of active video (field 1)
+#	number of lines of active video (field 1)
+#	first line of active video (field 2)
+#	number of lines of active video (field 2)
+#	sample clock frequency / 1e6
+#	colourspace
+#	aspect ratio
+#
+# samp	lines	samp1	Nsamp	F1	NF1	F2	NF2	Clock		Colour		Aspect
+858	525	122	720	43	483	0	0	27.0		REC601		4:3	
+858	525	122	720	21	243	283	243	13.5		REC601		4:3	
+864	625	132	720	23	288	336	288	13.5		REC601		4:3	
+864	625	132	720	23	288	336	288	12.96		REC601		16:9	
+864	625	132	720	23	288	336	288	12.9470529470529 REC601		16:9	
+1144	525	162	960	21	243	283	243	18.0		REC601		16:9	
+1152	625	176	960	23	288	336	288	18.0		REC601		16:9	
+1650	750	260	1280	26	720	0	0	74.25		SMPTE274	16:9	
+1650	750	260	1280	26	720	0	0	74.1758241758242 SMPTE274	16:9	
+1650	750	260	720	26	480	0	0	74.25		SMPTE274	4:3	
+1650	750	260	720	26	480	0	0	74.1758241758242 SMPTE274	4:3	
+1980	750	260	1280	26	720	0	0	74.25		SMPTE274	16:9	
+1980	750	260	720	26	576	0	0	74.25		SMPTE274	4:3	
+2200	1125	192	1920	41	517	603	518	74.25		SMPTE240	16:9	
+2200	1125	192	1920	21	540	584	540	74.1758241758242 SMPTE274	16:9	
+2200	1125	192	720	21	480	584	480	74.25		SMPTE274	4:3	
+2200	1125	192	720	21	480	584	480	74.1758241758242 SMPTE274	4:3	
+2200	1125	192	1920	21	540	584	540	74.25		SMPTE274	16:9	
+2200	1125	192	1920	21	540	584	540	74.1758241758242 SMPTE274	16:9	
+2200	1125	192	1920	41	517	603	518	74.1758241758242 SMPTE240	16:9	
+2200	1125	192	1920	42	1080	0	0	148.5		SMPTE274	16:9	
+2200	1125	192	1920	42	1080	0	0	148.351648351648 SMPTE274	16:9	
+2200	1125	192	1920	42	1080	0	0	74.1758241758242 SMPTE274	16:9	
+2200	1125	192	1920	42	1080	0	0	74.25		SMPTE274	16:9	
+2200	1125	192	720	21	288	584	288	74.1758241758242 REC601		4:3	
+2200	1125	192	1920	21	540	584	540	74.25		SMPTE274	16:9	
+2304	1250	256	1920	45	576	670	576	72.0		REC709		16:9	
+2376	1250	309	1920	161	1080	0	0	148.5		SMPTE274	16:9	
+2376	1250	309	1920	81	540	706	540	74.25		SMPTE274	16:9	
+2640	1125	192	1920	21	540	584	540	74.25		SMPTE274	16:9	
+2640	1125	192	1920	42	1080	0	0	148.5		SMPTE274	16:9	
+2640	1125	192	1920	21	540	584	540	74.25		SMPTE274	16:9	
+2640	1125	192	1920	42	1080	0	0	74.25		SMPTE274	16:9	
+2640	1125	192	720	21	288	584	288	74.25		REC601		4:3	
+2750	1125	192	1920	42	1080	0	0	74.1758241758242 SMPTE274	16:9	
+2750	1125	192	1920	21	540	584	540	74.25		SMPTE274	16:9	
+2750	1125	192	1920	42	1080	0	0	74.25		SMPTE274	16:9	
+2750	1125	192	720	21	288	584	288	74.25		REC601		16:9	
+2750	1125	192	1920	21	540	584	540	74.1758241758242 SMPTE274	16:9	
+2750	1125	192	720	21	288	584	288	74.1758241758242 REC601		16:9	
+3300	750	260	1280	26	720	0	0	74.25		SMPTE274	16:9	
+3300	750	260	1280	26	720	0	0	74.1758241758242 SMPTE274	16:9	
+3960	750	260	1280	26	720	0	0	74.25		SMPTE274	16:9	
+4125	750	260	1280	26	720	0	0	74.1758241758242 SMPTE274	16:9	
+4125	750	260	1280	26	720	0	0	74.25		SMPTE274	16:9	

+ 3 - 6
rc/bin/ap

@@ -6,7 +6,7 @@
 wire='http://www.newsday.com/news/nationworld/wire'
 if ( ~ $#* 0 )
 	hget $wire | #tee /tmp/ap.$pid |
-		sed -n '/AP Top News/,/AP News Wire/p' |
+		sed -n '/<h1>AP Top News/,/AP News Wire/p' |
 		htmlfmt -a -w 100 |
 		sed -n '
 			/^• / {
@@ -15,7 +15,7 @@ if ( ~ $#* 0 )
 				s/\n/ /g
 				s/\[\/news\/nationworld\/wire\//|/
 				s/sns-ap-//
-				s/,[0-9]+,[0-9]+\.story.*$//
+				s/\.story.*$//
 				p
 		}' |
 		awk -F '|' '
@@ -30,10 +30,7 @@ if not
 	hget $wire/sns-ap-^$1^.story |
 		htmlfmt |
 		sed '
-			1,/^=======$/d
-			/^Email this story$/d
-			/^Printer friendly format/d
+			1,/^AP Top News$/d
 			/^\* __$/,$d
 			/^Subscribe to Newsday home delivery/,$d
-			/^SPONSORED LINKS$/,$d
 		' 

+ 10 - 3
rc/bin/diskparts

@@ -1,6 +1,10 @@
 #!/bin/rc
-# set up any /dev/sd partitions
+# set up any disk partitions
 rfork e
+if (! test -e /dev/sdctl)
+	bind -a '#S' /dev
+
+# set up any /dev/sd partitions
 for(disk in /dev/sd[0-9A-Zabd-z]*) {
 	if(test -f $disk/data && test -f $disk/ctl)
 		disk/fdisk -p $disk/data >$disk/ctl >[2]/dev/null
@@ -9,6 +13,9 @@ for(disk in /dev/sd[0-9A-Zabd-z]*) {
 			disk/prep -p $part >$disk/ctl >[2]/dev/null
 }
 
+sysname=`{cat /dev/sysname}
+
 # set up any fs(3) partitions
-if (test -r	/cfg/$sysname/fsconfig)
-	read -m /cfg/$sysname/fsconfig >/dev/fs/ctl
+if (test -e /env/sysname)
+	if (test -r /cfg/$sysname/fsconfig && test -w /dev/fs/ctl)
+		read -m /cfg/$sysname/fsconfig >/dev/fs/ctl

+ 12 - 3
sys/man/1/2c

@@ -340,14 +340,23 @@ and other such routines.
 \-
 A
 .B #pragma
-of the form
+with any of the following forms:
 .EX
     #pragma incomplete \fItype\fP
+    #pragma incomplete struct \fItag\fP
+    #pragma incomplete union \fItag\fP
 .EE
-tells the compiler that
+where
 .I type
+is a
+.BR typedef 'd
+name for a structure or union type, and
+.I tag
+is a structure or union tag,
+tells the compiler that
+the corresponding type
 should have its signature calculated as an incomplete type
-even when it is fully defined.
+even if it is subsequently fully defined.
 This allows the type signature mechanism to work in the presence
 of opaque types declared in header files, with their full definitions
 visible only to the code which manipulates them.

+ 4 - 4
sys/man/2/9p

@@ -643,15 +643,15 @@ should take care to enforce permissions
 where appropriate.
 .TP
 .I Flush
-Single-threaded servers, which always call 
+Servers that always call 
 .I respond
-before returning from the service functions,
+before returning from the service functions
 need not provide a 
 .I flush
 implementation:
 .I flush
-is only necessary in multithreaded programs,
-which arrange for 
+is only necessary in programs
+that arrange for 
 .I respond
 to be called asynchronously.
 .I Flush

+ 2 - 2
sys/man/2/thread

@@ -89,8 +89,8 @@ int	threadsetgrp(int group)
 int	threadpid(int id)
 .XX
 int	threadint(int id)
-int	threadintgrp(int group)
-int	threadkill(int id)
+void	threadintgrp(int group)
+void	threadkill(int id)
 int	threadkillgrp(int group)
 .XX
 void	threadsetname(char *name)

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

@@ -1,6 +1,8 @@
 NPROC=1
 </$objtype/mkfile
 
+all:V: install
+
 install:V: genall gencall
 	genall
 
@@ -20,4 +22,4 @@ installall:V:
 	for(objtype in $CPUS) mk install
 
 update:V:
-	update $UPDATEFLAGS mkfile sys.h
+	update $UPDATEFLAGS mkfile

+ 39 - 9
sys/src/cmd/cc/dpchk.c

@@ -445,18 +445,48 @@ void
 pragincomplete(void)
 {
 	Sym *s;
+	Type *t;
+	int istag, w, et;
 
+	istag = 0;
 	s = getsym();
-	if(s){
-		if(strcmp(s->name, "_off_") == 0)
-			debug['T'] = 0;
-		else if(strcmp(s->name, "_on_") == 0)
-			debug['T'] = 1;
-		else if(s->type == T)
-			diag(Z, "unknown type %s in pragma incomplete", s->name);
-		else
-			s->type->garb |= GINCOMPLETE;
+	if(s == nil)
+		goto out;
+	et = 0;
+	w = s->lexical;
+	if(w == LSTRUCT)
+		et = TSTRUCT;
+	else if(w == LUNION)
+		et = TUNION;
+	if(et != 0){
+		s = getsym();
+		if(s == nil){
+			yyerror("missing struct/union tag in pragma incomplete");
+			goto out;
+		}
+		if(s->lexical != LNAME && s->lexical != LTYPE){
+			yyerror("invalid struct/union tag: %s", s->name);
+			goto out;
+		}
+		dotag(s, et, 0);
+		istag = 1;
+	}else if(strcmp(s->name, "_off_") == 0){
+		debug['T'] = 0;
+		goto out;
+	}else if(strcmp(s->name, "_on_") == 0){
+		debug['T'] = 1;
+		goto out;
 	}
+	t = s->type;
+	if(istag)
+		t = s->suetag;
+	if(t == T)
+		yyerror("unknown type %s in pragma incomplete", s->name);
+	else if(!typesu[t->etype])
+		yyerror("not struct/union type in pragma incomplete: %s", s->name);
+	else
+		t->garb |= GINCOMPLETE;
+out:
 	while(getnsc() != '\n')
 		;
 	if(debug['f'])

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

@@ -362,7 +362,7 @@ rcvr(int fd, int msglen, int interval, int nmsg)
 			lostmsgs++;
 	unlock(&listlock);
 
-	if(lostmsgs)
+	if(!quiet && lostmsgs)
 		print("%d out of %d messages lost\n", lostmsgs,
 			lostmsgs+rcvdmsgs);
 }
@@ -568,8 +568,9 @@ main(int argc, char **argv)
 		exits("dialing");
 	}
 
-	print("sending %d %d byte messages %d ms apart to %s\n",
-		nmsg, msglen, interval, ds);
+	if (!quiet)	
+		print("sending %d %d byte messages %d ms apart to %s\n",
+			nmsg, msglen, interval, ds);
 
 	switch(rfork(RFPROC|RFMEM|RFFDG)){
 	case -1:

+ 78 - 43
sys/src/cmd/jpg/readyuv.c

@@ -24,11 +24,54 @@
  */
 
 enum {
-	PAL = 576, NTSC = 486 };
+	pixels = 720,
+	r601pal = 576,
+	r601ntsc = 486
+};
 
 
 static int lsbtab[] = { 6, 4, 2, 0};
 
+int
+looksize(char *file, vlong size, int *pixels, int *lines, int *bits)
+{
+	Biobuf *bp;
+	uvlong l, p;
+	char *s, *a[12];
+
+	/*
+	 * This may not always work, there could be an alias between file
+	 * sizes of different standards stored in 8bits and 10 bits.
+	 */
+	if ((bp = Bopen(file, OREAD)) == nil)
+		return -1;
+	while((s = Brdstr(bp, '\n', 1)) != nil){
+		if (tokenize(s, a, nelem(a)) < 3)
+			continue;
+		if (a[0][0] == '#')
+			continue;
+		p = atoll(a[3]);
+		l = atoll(a[5]);
+		if (l*p*2 == size){
+			*pixels = p;
+			*lines = l;
+			*bits = 8;
+			break;
+		}
+		if ((l*p*20)/8 == size){
+			*pixels = p;
+			*lines = l;
+			*bits = 10;
+			break;
+		}
+	}
+	Bterm(bp);
+	if (s == nil)
+		return -1;
+	return 0;
+}
+
+
 static int 
 clip(int x)
 {
@@ -41,18 +84,20 @@ clip(int x)
 	return x;
 }
 
-
 Rawimage**
 Breadyuv(Biobuf *bp, int colourspace)
 {
-	Dir * d;
-	Rawimage * a, **array;
-	char	*e, ebuf[128];
+	Dir *d;
+	uvlong sz;
+	Rawimage *a, **array;
+	char *e, ebuf[128];
 	ushort * mux, *end, *frm;
-	uchar buf[720 * 2], *r, *g, *b;
-	int	y1, y2, cb, cr, sz, c, l, w, base, bits, lines;
+	uchar *buf, *r, *g, *b;
+	int y1, y2, cb, cr, c, l, w, base;
+	int bits, lines, pixels;
 
-	frm = 0;
+	frm = nil;
+	buf = nil;
 	if (colourspace != CYCbCr) {
 		errstr(ebuf, sizeof ebuf);	/* throw it away */
 		werrstr("ReadYUV: unknown colour space %d", colourspace);
@@ -71,75 +116,63 @@ Breadyuv(Biobuf *bp, int colourspace)
 		sz = d->length;
 		free(d);
 	} else {
-		fprint(2, "cannot stat input, assuming 720x576x10bit\n");
-		sz = 720 * PAL * 2L + (720 * PAL / 2L);
+		fprint(2, "cannot stat input, assuming pixelsx576x10bit\n");
+		sz = pixels * r601pal * 2L + (pixels * r601pal / 2L);
 	}
 
-	switch (sz) {
-	case 720 * PAL * 2:				// 625 x 8bit
-		bits = 8;
-		lines = PAL;
-		break;
-	case 720 * NTSC * 2:				// 525 x 8bit
-		bits = 8;
-		lines = NTSC;
-		break;
-	case 720 * PAL * 2 + (720 * PAL / 2) :		// 625 x 10bit
-			bits = 10;
-		lines = PAL;
-		break;
-	case 720 * NTSC * 2 + (720 * NTSC / 2) :	// 525 x 10bit
-			bits = 10;
-		lines = NTSC;
-		break;
-	default:
-		e = "unknown file size";
+	if (looksize("/lib/video.specs", sz, &pixels, &lines, &bits) == -1){
+		e = "file size not listed in /lib/video.specs";
 		goto Error;
 	}
 
-	//	print("bits=%d pixels=%d lines=%d\n", bits, 720, lines);
-	//
+
 	a->nchans = 3;
 	a->chandesc = CRGB;
-	a->chanlen = 720 * lines;
-	a->r = Rect(0, 0, 720, lines);
+	a->chanlen = pixels * lines;
+	a->r = Rect(0, 0, pixels, lines);
 
 	e = "no memory";
-	if ((frm = malloc(720 * 2 * lines * sizeof(ushort))) == nil)
+	if ((frm = malloc(pixels*2*lines*sizeof(ushort))) == nil)
 		goto Error;
 
 	for (c = 0; c  < 3; c++)
-		if ((a->chans[c] = malloc(720 * lines)) == nil)
+		if ((a->chans[c] = malloc(pixels*lines)) == nil)
 			goto Error;
 
+	if ((buf = malloc(pixels*2)) == nil)
+		goto Error;
+
 	e = "read file";
 	for (l = 0; l < lines; l++) {
-		if (Bread(bp, buf, 720 * 2) == -1)
+		if (Bread(bp, buf, pixels *2) == -1)
 			goto Error;
 
-		base = l * 720 * 2;
-		for (w = 0; w < 720 * 2; w++)
+		base = l*pixels*2;
+		for (w = 0; w < pixels *2; w++)
 			frm[base + w] = ((ushort)buf[w]) << 2;
 	}
 
 
 	if (bits == 10)
 		for (l = 0; l < lines; l++) {
-			if (Bread(bp, buf, 720 / 2) == -1)
+			if (Bread(bp, buf, pixels / 2) == -1)
 				goto Error;
 
 
-			base = l * 720 * 2;
-			for (w = 0; w < 720 * 2; w++)
+			base = l * pixels * 2;
+			for (w = 0; w < pixels * 2; w++)
 				frm[base + w] |= buf[w / 4] >> lsbtab[w % 4];
 		}
 
 	mux = frm;
-	end = frm + 720 * lines * 2;
+	end = frm + pixels * lines * 2;
 	r = a->chans[0];
 	g = a->chans[1];
 	b = a->chans[2];
 
+	/*
+	 * Fixme: fixed colourspace conversion at present
+	 */
 	while (mux < end) {
 		cb = *mux++ - 512;
 		y1 = (*mux++ - 64) * 76310;
@@ -155,12 +188,13 @@ Breadyuv(Biobuf *bp, int colourspace)
 		*b++ = clip((132278 * cb) + y2);
 	}
 	free(frm);
+	free(buf);
 	return array;
 
 Error:
 
 	errstr(ebuf, sizeof ebuf);
-	if (ebuf[0] == 0)
+//	if (ebuf[0] == 0)
 		strcpy(ebuf, e);
 	errstr(ebuf, sizeof ebuf);
 
@@ -170,6 +204,7 @@ Error:
 	free(array[0]);
 	free(array);
 	free(frm);
+	free(buf);
 	return nil;
 }
 

+ 3 - 1
sys/src/cmd/ndb/convDNS2M.c

@@ -19,7 +19,7 @@ struct Dict
 	} x[Ndict];
 	int	n;		/* size of dictionary */
 	uchar	*start;		/* start of packed message */
-	char	buf[4*1024];	/* buffer for unpacked names */
+	char	buf[16*1024];	/* buffer for unpacked names (was 4k) */
 	char	*ep;		/* first free char in buf */
 };
 
@@ -171,6 +171,8 @@ pname(uchar *p, uchar *ep, char *np, Dict *dp)
 		}
 		if(ep-p < i+1)
 			return ep+1;
+		if (i > Labellen)
+			return ep+1;
 		*p++ = i;		/* count of chars in label */
 		memmove(p, np, i);
 		np = cp;

+ 67 - 44
sys/src/cmd/ndb/convM2DNS.c

@@ -13,6 +13,7 @@ struct Scan
 	char	*err;
 	char	errbuf[256];	/* hold a formatted error sometimes */
 	int	rcode;		/* outgoing response codes (reply flags) */
+	int	stop;		/* flag: stop processing */
 };
 
 #define NAME(x)		gname(x, rp, sp)
@@ -35,7 +36,7 @@ errneg(RR *rp, Scan *sp, int actual)
 }
 
 static int
-errtoolong(RR *rp, Scan *sp, int actual, int nominal, char *where)
+errtoolong(RR *rp, Scan *sp, int remain, int need, char *where)
 {
 	char *p, *ep;
 	char ptype[64];
@@ -47,8 +48,7 @@ errtoolong(RR *rp, Scan *sp, int actual, int nominal, char *where)
 	if (rp)
 		p = seprint(p, ep, "type %s RR: ",
 			rrname(rp->type, ptype, sizeof ptype));
-	p = seprint(p, ep, "wrong length (actual %d, nominal %d)",
-		actual, nominal);
+	p = seprint(p, ep, "%d bytes needed; %d remain", need, remain);
 	if (rp)
 		seprint(p, ep, ": %R", rp);
 	sp->err = sp->errbuf;
@@ -226,14 +226,54 @@ gname(char *to, RR *rp, Scan *sp)
 	uchar *p;
 
 	tostart = to;
-	if(sp->err)
+	if(sp->err || sp->stop)
 		goto err;
 	pointer = 0;
 	p = sp->p;
 	toend = to + Domlen;
-	for(len = 0; *p && p < sp->ep; len += pointer ? 0 : (n+1)){
-		if((*p & 0xc0) == 0xc0){
-			/* pointer to other spot in message */
+	for(len = 0; *p && p < sp->ep; len += (pointer? 0: n+1)) {
+		n = 0;
+		switch (*p & 0300) {
+		case 0:			/* normal label */
+			if (p < sp->ep)
+				n = *p++ & 077;		/* pick up length */
+			if(len + n < Domlen - 1){
+				if(n > toend - to){
+					errtoolong(rp, sp, toend - to, n,
+						"name too long");
+					goto err;
+//					/* try to compensate and continue */
+//					n = toend - to - 1;
+//					if (n < 0)
+//						n = 0;
+				}
+				memmove(to, p, n);
+				to += n;
+			}
+			p += n;
+			if(*p){
+				if(to >= toend){
+					errtoolong(rp, sp, toend - to, 2,
+				     "more name components but no bytes left");
+					goto err;
+				}
+				*to++ = '.';
+			}
+			break;
+		case 0100:		/* edns extended label type, rfc 2671 */
+			/*
+			 * treat it like an EOF for now; it seems to be at
+			 * the end of a long tcp reply.
+			 */
+			// sp->err = "edns extended label present";
+			dnslog("edns label first byte 0%o = '%c'", *p, *p);
+			sp->stop = 1;
+			goto err;
+			break;
+		case 0200:		/* reserved */
+			sp->err = "reserved-use label present";
+			goto err;
+		case 0300:		/* pointer to other spot in message */
 			if(pointer++ > 10){
 				sp->err = "pointer loop";
 				goto err;
@@ -245,27 +285,7 @@ gname(char *to, RR *rp, Scan *sp)
 				goto err;
 			}
 			n = 0;
-			continue;
-		}
-		n = 0;
-		if (p < sp->ep)
-			n = *p++;
-		if(len + n < Domlen - 1){
-			if(n > toend - to){
-				errtoolong(rp, sp, toend - to, n, "gname 1");
-				goto err;
-			}
-			memmove(to, p, n);
-			to += n;
-		}
-		p += n;
-		if(*p){
-			if(to >= toend){
-				errtoolong(rp, sp, to-tostart, toend-tostart,
-					"gname 2");
-				goto err;
-			}
-			*to++ = '.';
+			break;
 		}
 	}
 	*to = 0;
@@ -330,12 +350,9 @@ retry:
 	 */
 	if (sp->ep - sp->p < len &&
 	   !(strcmp(what, "hints") == 0 ||
-	     sp->p == sp->ep + 1 && strcmp(what, "answers") == 0)) {
-		dnslog("%s sp: base %#p p %#p ep %#p len %d", what,
-			sp->base, sp->p, sp->ep, len);
+	     sp->p == sp->ep + 1 && strcmp(what, "answers") == 0))
 		errtoolong(rp, sp, sp->ep - sp->p, len, "convM2RR");
-	}
-	if(sp->err || sp->rcode){
+	if(sp->err || sp->rcode || sp->stop){
 		rrfree(rp);
 		return 0;
 	}
@@ -445,15 +462,17 @@ retry:
 		 * 235.9.104.135.in-addr.arpa cname
 		 *	235.9.104.135.in-addr.arpa from 135.104.9.235
 		 */
-		if (type == Tcname && sp->p - data == 2 && len == 0)
+		if (type == Tcname && sp->p - data == 2 && len == 0) {
+			// dnslog("convM2RR: got %R", rp);
 			return rp;
-
-		snprint(sp->errbuf, sizeof sp->errbuf,
-			"bad %s RR len (actual %lud != len %d): %R",
-			rrname(type, ptype, sizeof ptype),
-			sp->p - data, len, rp);
-		sp->err = sp->errbuf;
+		}
+		if (len > sp->p - data)
+			dnslog("bad %s RR len (%d bytes nominal, %lud actual): %R",
+				rrname(type, ptype, sizeof ptype), len,
+				sp->p - data, rp);
+		// sp->p = data + len;
 	}
+	// dnslog("convM2RR: got %R", rp);
 	return rp;
 }
 
@@ -470,7 +489,7 @@ convM2Q(Scan *sp)
 	NAME(dname);
 	USHORT(type);
 	USHORT(class);
-	if(sp->err || sp->rcode)
+	if(sp->err || sp->rcode || sp->stop)
 		return nil;
 
 	mstypehack(sp, type, "convM2Q");
@@ -486,7 +505,7 @@ rrloop(Scan *sp, char *what, int count, int quest)
 	int i;
 	RR *first, *rp, **l;
 
-	if(sp->err || sp->rcode)
+	if(sp->err || sp->rcode || sp->stop)
 		return nil;
 	l = &first;
 	first = nil;
@@ -494,7 +513,7 @@ rrloop(Scan *sp, char *what, int count, int quest)
 		rp = quest? convM2Q(sp): convM2RR(sp, what);
 		if(rp == nil)
 			break;
-		if(sp->err || sp->rcode){
+		if(sp->err || sp->rcode || sp->stop){
 			rrfree(rp);
 			break;
 		}
@@ -521,12 +540,12 @@ convM2DNS(uchar *buf, int len, DNSmsg *m, int *codep)
 	if (codep)
 		*codep = 0;
 	assert(len >= 0);
+	memset(&scan, 0, sizeof scan);
 	scan.base = buf;
 	scan.p = buf;
 	scan.ep = buf + len;
 	scan.err = nil;
 	scan.errbuf[0] = '\0';
-	scan.rcode = 0;
 	sp = &scan;
 
 	memset(m, 0, sizeof *m);
@@ -542,9 +561,13 @@ convM2DNS(uchar *buf, int len, DNSmsg *m, int *codep)
 	m->qd = rrloop(sp, "questions",	m->qdcount, 1);
 	m->an = rrloop(sp, "answers",	m->ancount, 0);
 	m->ns = rrloop(sp, "nameservers",m->nscount, 0);
+	if (scan.stop)
+		scan.err = nil;
 	if (scan.err)
 		err = strdup(scan.err);		/* live with bad ar's */
 	m->ar = rrloop(sp, "hints",	m->arcount, 0);
+	if (scan.stop)
+		scan.rcode = 0;
 	if (codep)
 		*codep = scan.rcode;
 	return err;

+ 2 - 0
sys/src/cmd/ndb/dblookup.c

@@ -575,6 +575,8 @@ dbpair2cache(DN *dp, Ndbtuple *entry, Ndbtuple *pair)
 		addarea(dp, rp, pair);
 	} else if(cistrcmp(pair->attr, "mx") == 0)
 		rp = mxrr(entry, pair);
+	else if(cistrcmp(pair->attr, "srv") == 0)
+		rp = srvrr(entry, pair);
 	else if(cistrcmp(pair->attr, "cname") == 0)
 		rp = cnamerr(entry, pair);
 	else if(cistrcmp(pair->attr, "nullrr") == 0)

+ 2 - 1
sys/src/cmd/ndb/dnnotify.c

@@ -87,7 +87,8 @@ send_notify(char *slave, RR *soa, Request *req)
 	/* send 3 times or until we get anything back */
 	n += OUdphdrsize;
 	for(i = 0; i < 3; i++){
-dnslog("sending %d byte notify to %s/%I.%d about %s", n, slave, up->raddr, nhgets(up->rport), soa->owner->name);
+		dnslog("sending %d byte notify to %s/%I.%d about %s", n, slave,
+			up->raddr, nhgets(up->rport), soa->owner->name);
 		if(write(fd, obuf, n) != n)
 			break;
 		alarm(2*1000);

+ 4 - 2
sys/src/cmd/ndb/dns.c

@@ -11,8 +11,8 @@
 enum
 {
 	Maxrequest=		1024,
-	Maxreply=		512,
-	Maxrrr=			16,
+	Maxreply=		8192,		/* was 512 */
+	Maxrrr=			32,		/* was 16 */
 	Maxfdata=		8192,
 
 	Defmaxage=		3*60*60,	/* tune; was 1 hour */
@@ -163,6 +163,7 @@ main(int argc, char *argv[])
 
 	if(testing)
 		mainmem->flags |= POOL_NOREUSE | POOL_ANTAGONISM;
+	// mainmem->flags |= POOL_ANTAGONISM;
 	rfork(RFREND|RFNOTEG);
 
 	cfg.inside = (*mntpt == '\0' || strcmp(mntpt, "/net") == 0);
@@ -170,6 +171,7 @@ main(int argc, char *argv[])
 	/* start syslog before we fork */
 	fmtinstall('F', fcallfmt);
 	dninit();
+	/* this really shouldn't be fatal */
 	if(myipaddr(ipaddr, mntpt) < 0)
 		sysfatal("can't read my ip address");
 	dnslog("starting %s%sdns %s%son %I's %s",

+ 10 - 5
sys/src/cmd/ndb/dns.h

@@ -115,9 +115,8 @@ enum
 	Fcanrec=	1<<7,	/* server can recurse */
 
 	Domlen=		256,	/* max domain name length (with NULL) */
-	Labellen=	256,	/* max domain label length (with NULL) */
+	Labellen=	64,	/* max domain label length (with NULL) */
 	Strlen=		256,	/* max string length (with NULL) */
-	Iplen=		32,	/* max ascii ip address length (with NULL) */
 
 	/* time to live values (in seconds) */
 	Min=		60,
@@ -266,16 +265,16 @@ struct RR
 		DN	*mb;	/* mailbox - mg, minfo */
 		DN	*ip;	/* ip address - a */
 		DN	*rp;	/* rp arg - rp */
-		ulong	arg0;
+		uintptr	arg0;	/* arg[01] are compared to find dups in dn.c */
 	};
 	union {			/* discriminated how? negative & type? */
-		int	negrcode; /* response code for cached negative response */
+		int	negrcode; /* response code for cached negative resp. */
 		DN	*rmb;	/* responsible maibox - minfo, soa, rp */
 		DN	*ptr;	/* pointer to domain name - ptr */
 		DN	*os;	/* operating system - hinfo */
 		ulong	pref;	/* preference value - mx */
 		ulong	local;	/* ns served from local database - ns */
-		ulong	arg1;
+		uintptr	arg1;	/* arg[01] are compared to find dups in dn.c */
 	};
 	union {			/* discriminated by type */
 		SOA	*soa;	/* soa timers - soa */
@@ -323,6 +322,12 @@ struct Srv
 	DN	*target;
 };
 
+struct Rrlist
+{
+	int	count;
+	RR	*rrs;
+};
+
 /*
  *  domain messages
  */

+ 1 - 2
sys/src/cmd/ndb/dnserver.c

@@ -62,8 +62,7 @@ dnserver(DNSmsg *reqp, DNSmsg *repp, Request *req, uchar *srcip, int rcode)
 	myarea = inmyarea(repp->qd->owner->name);
 	if(myarea != nil) {
 		if(repp->qd->type == Tixfr || repp->qd->type == Taxfr){
-			dnslog(
-			    "server: unsupported xfr request %s for %s from %I",
+			dnslog("server: unsupported xfr request %s for %s from %I",
 				rrname(repp->qd->type, tname, sizeof tname),
 				repp->qd->owner->name, srcip);
 			repp->flags = Runimplimented | Fresp | recursionflag |

+ 2 - 2
sys/src/cmd/ndb/dnstcp.c

@@ -40,7 +40,7 @@ main(int argc, char *argv[])
 	int len, rcode;
 	char tname[32];
 	char *err, *ext = "";
-	uchar buf[512], callip[IPaddrlen];
+	uchar buf[64*1024], callip[IPaddrlen];
 	Request req;
 	DNSmsg reqmsg, repmsg;
 
@@ -173,7 +173,7 @@ reply(int fd, DNSmsg *rep, Request *req)
 {
 	int len, rv;
 	char tname[32];
-	uchar buf[4096];
+	uchar buf[64*1024];
 	RR *rp;
 
 	if(debug){

+ 4 - 2
sys/src/cmd/ndb/dnudpserver.c

@@ -108,6 +108,7 @@ restart:
 	for(;; putactivity(0)){
 		memset(&repmsg, 0, sizeof repmsg);
 		memset(&reqmsg, 0, sizeof reqmsg);
+
 		alarm(60*1000);
 		len = read(fd, buf, sizeof buf);
 		alarm(0);
@@ -115,6 +116,7 @@ restart:
 			goto restart;
 		uh = (OUdphdr*)buf;
 		len -= OUdphdrsize;
+
 		// dnslog("read received UDP from %I to %I",
 		//	((OUdphdr*)buf)->raddr, ((OUdphdr*)buf)->laddr);
 		getactivity(&req, 0);
@@ -139,8 +141,8 @@ restart:
 			}
 		op = reqmsg.flags & Omask;
 		if(op != Oquery && op != Onotify){
-			dnslog("server: op %d from %I",
-				reqmsg.flags & Omask, buf);
+			dnslog("server: op %d from %I", reqmsg.flags & Omask,
+				buf);
 			goto freereq;
 		}
 

+ 1 - 3
sys/src/libscribble/scribbleimpl.h

@@ -22,11 +22,9 @@
  * Opaque type for the recognizer. The toolkit must access through
  * appropriate access functions.
  */
-
+#pragma incomplete struct _Recognizer
 typedef struct _Recognizer* recognizer;
 
-#pragma incomplete recognizer
-
 /*
  * Opaque type for recognizers to implement dictionaries.
  */