Browse Source

Plan 9 from Bell Labs 2008-03-14

David du Colombier 13 years ago
parent
commit
6618cb981e

+ 17 - 17
dist/replica/_plan9.db

@@ -48,7 +48,7 @@
 386/bin/auth/changeuser - 775 sys sys 1178568246 96020
 386/bin/auth/convkeys - 775 sys sys 1204057806 87642
 386/bin/auth/convkeys2 - 775 sys sys 1203712994 87421
-386/bin/auth/cron - 775 sys sys 1205035791 141213
+386/bin/auth/cron - 775 sys sys 1205438966 141132
 386/bin/auth/debug - 775 sys sys 1204057810 101408
 386/bin/auth/disable - 775 sys sys 1020319057 146
 386/bin/auth/enable - 775 sys sys 1020319057 134
@@ -172,7 +172,7 @@
 386/bin/calendar - 775 sys sys 1200262736 79060
 386/bin/cat - 775 sys sys 1148500611 37482
 386/bin/cb - 775 sys sys 1168402293 77628
-386/bin/cdfs - 775 sys sys 1205293084 169996
+386/bin/cdfs - 775 sys sys 1205465243 171939
 386/bin/cec - 775 sys sys 1193714267 75896
 386/bin/cfs - 775 sys sys 1190863294 130565
 386/bin/chgrp - 775 sys sys 1168402294 59522
@@ -279,7 +279,7 @@
 386/bin/history - 775 sys sys 1178568279 74241
 386/bin/hoc - 775 sys sys 1172808058 100101
 386/bin/html2ms - 775 sys sys 1168402315 66321
-386/bin/htmlfmt - 775 sys sys 1200262758 163423
+386/bin/htmlfmt - 775 sys sys 1205438975 163505
 386/bin/htmlroff - 775 sys sys 1178568280 146978
 386/bin/ico - 775 sys sys 1197732756 162284
 386/bin/iconv - 775 sys sys 1168402316 113629
@@ -571,7 +571,7 @@
 386/lib/libflate.a - 664 sys sys 1168402366 76726
 386/lib/libframe.a - 664 sys sys 1184529910 66398
 386/lib/libgeometry.a - 664 sys sys 1168402366 50470
-386/lib/libhtml.a - 664 sys sys 1186370975 229202
+386/lib/libhtml.a - 664 sys sys 1205438981 229376
 386/lib/libhttpd.a - 664 sys sys 1191273745 100822
 386/lib/libip.a - 664 sys sys 1204292555 38800
 386/lib/libl.a - 664 sys sys 1168402367 5372
@@ -6103,7 +6103,7 @@ sys/include/fcall.h - 664 sys sys 1137461445 3063
 sys/include/flate.h - 664 sys sys 1014929063 1245
 sys/include/frame.h - 664 sys sys 1196212617 2708
 sys/include/geometry.h - 664 sys sys 1014929063 2632
-sys/include/html.h - 664 sys sys 1184472600 15622
+sys/include/html.h - 664 sys sys 1205384795 15653
 sys/include/httpd.h - 664 sys sys 1190835025 5800
 sys/include/ip.h - 664 sys sys 1204230308 4401
 sys/include/keyboard.h - 664 sys sys 1131637696 865
@@ -7363,7 +7363,7 @@ sys/man/1/acme - 664 sys sys 1196638934 18540
 sys/man/1/ap - 664 sys sys 1196638934 364
 sys/man/1/ar - 664 sys sys 1196638934 3153
 sys/man/1/ascii - 664 sys sys 1196638934 2726
-sys/man/1/awk - 664 sys sys 1196638934 10881
+sys/man/1/awk - 664 sys sys 1205384921 11042
 sys/man/1/basename - 664 sys sys 1196638931 535
 sys/man/1/bc - 664 sys sys 1196638934 3784
 sys/man/1/bind - 664 sys sys 1196638931 4009
@@ -7721,7 +7721,7 @@ sys/man/4/INDEX - 664 sys sys 1196638942 1026
 sys/man/4/INDEX.html - 664 sys sys 1196638942 5147
 sys/man/4/acme - 664 sys sys 1196638943 10435
 sys/man/4/archfs - 664 sys sys 1196638943 533
-sys/man/4/cdfs - 664 sys sys 1205253247 4351
+sys/man/4/cdfs - 664 sys sys 1205450230 4352
 sys/man/4/cfs - 664 sys sys 1196638943 2136
 sys/man/4/consolefs - 664 sys sys 1196638943 4389
 sys/man/4/cwfs - 664 sys sys 1196638943 6553
@@ -8187,7 +8187,7 @@ sys/src/9/pc/uarti8250.c - 664 sys sys 1177676872 13957
 sys/src/9/pc/uartisa.c - 664 sys sys 1127126907 1777
 sys/src/9/pc/uartpci.c - 664 sys sys 1190235592 4685
 sys/src/9/pc/usb.h - 664 sys sys 1202865355 4630
-sys/src/9/pc/usbohci.c - 664 sys sys 1205184193 49042
+sys/src/9/pc/usbohci.c - 664 sys sys 1205381809 49041
 sys/src/9/pc/usbuhci.c - 664 sys sys 1202252076 31839
 sys/src/9/pc/vga.c - 664 sys sys 1131290595 5148
 sys/src/9/pc/vga3dfx.c - 664 sys sys 1133218367 3833
@@ -8226,7 +8226,7 @@ sys/src/9/port/cache.c - 664 sys sys 1170456667 9285
 sys/src/9/port/chan.c - 664 sys sys 1195585806 34962
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 sys/src/9/port/debugalloc.c - 664 sys sys 1014931171 10402
-sys/src/9/port/dev.c - 664 sys sys 1146151714 8177
+sys/src/9/port/dev.c - 664 sys sys 1205381832 8204
 sys/src/9/port/devaoe.c - 664 sys sys 1199910511 42083
 sys/src/9/port/devaudio.c - 664 sys sys 1170456648 21199
 sys/src/9/port/devbridge.c - 664 sys sys 1204227718 24003
@@ -8244,7 +8244,7 @@ sys/src/9/port/devmntstats.c - 664 sys sys 1014931173 4039
 sys/src/9/port/devmouse.c - 664 sys sys 1192564555 13904
 sys/src/9/port/devpipe.c - 664 sys sys 1077055016 5825
 sys/src/9/port/devpnp.c - 664 sys sys 1088560907 13624
-sys/src/9/port/devproc.c - 664 sys sys 1197732969 28473
+sys/src/9/port/devproc.c - 664 sys sys 1205384114 28476
 sys/src/9/port/devroot.c - 664 sys sys 1146151714 4242
 sys/src/9/port/devsd.c - 664 sys sys 1186965855 31275
 sys/src/9/port/devsdp.c - 664 sys sys 1057323393 44800
@@ -9623,7 +9623,7 @@ sys/src/cmd/auth/changeuser.c - 664 sys sys 1155994851 2949
 sys/src/cmd/auth/convbio.c - 664 sys sys 1015008432 2212
 sys/src/cmd/auth/convkeys.c - 664 sys sys 1204007234 2707
 sys/src/cmd/auth/convkeys2.c - 664 sys sys 1155994849 2444
-sys/src/cmd/auth/cron.c - 664 sys sys 1205008495 13189
+sys/src/cmd/auth/cron.c - 664 sys sys 1205426383 13334
 sys/src/cmd/auth/debug.c - 664 sys sys 1204007269 8034
 sys/src/cmd/auth/disable - 775 sys sys 1015008431 146
 sys/src/cmd/auth/enable - 775 sys sys 1015008430 134
@@ -10016,11 +10016,11 @@ sys/src/cmd/cc/sub.c - 664 sys sys 1143759345 34268
 sys/src/cmd/cc/y.tab.h - 664 sys sys 1098501521 1680
 sys/src/cmd/cdfs - 20000000775 sys sys 1039727558 0
 sys/src/cmd/cdfs/buf.c - 664 sys sys 1205271166 1923
-sys/src/cmd/cdfs/dat.h - 664 sys sys 1205281336 4538
+sys/src/cmd/cdfs/dat.h - 664 sys sys 1205446401 4615
 sys/src/cmd/cdfs/fns.h - 664 sys sys 969542122 297
-sys/src/cmd/cdfs/main.c - 664 sys sys 1205281456 11687
+sys/src/cmd/cdfs/main.c - 664 sys sys 1205366951 11578
 sys/src/cmd/cdfs/mkfile - 664 sys sys 1204937991 153
-sys/src/cmd/cdfs/mmc.c - 664 sys sys 1205295078 27297
+sys/src/cmd/cdfs/mmc.c - 664 sys sys 1205450135 30509
 sys/src/cmd/cec - 20000000775 sys sys 1193683647 0
 sys/src/cmd/cec/LICENSE - 664 sys sys 1186248056 1554
 sys/src/cmd/cec/Protocol - 664 sys sys 1186248056 2881
@@ -12823,7 +12823,7 @@ 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 1194216289 7061
+sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1205354106 7059
 sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1194216290 11959
 sys/src/cmd/ndb/cs.c - 664 sys sys 1203747782 33495
 sys/src/cmd/ndb/csquery.c - 664 sys sys 1174626119 1073
@@ -12841,7 +12841,7 @@ sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1202761262 7535
 sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1203748560 5632
 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
+sys/src/cmd/ndb/mkfile - 664 sys sys 1205354106 2000
 sys/src/cmd/ndb/mkhash.c - 664 sys sys 1014926160 2899
 sys/src/cmd/ndb/mkhosts.c - 664 sys sys 957402054 4294
 sys/src/cmd/ndb/query.c - 664 sys sys 1188422202 1793
@@ -15347,7 +15347,7 @@ sys/src/libgeometry/quaternion.c - 664 sys sys 944961726 5707
 sys/src/libgeometry/transform.c - 664 sys sys 944961726 1995
 sys/src/libgeometry/tstack.c - 664 sys sys 944961726 4716
 sys/src/libhtml - 20000000775 sys sys 1039727689 0
-sys/src/libhtml/build.c - 664 sys sys 1166796404 94558
+sys/src/libhtml/build.c - 664 sys sys 1205384802 94657
 sys/src/libhtml/impl.h - 664 sys sys 1166796404 4598
 sys/src/libhtml/lex.c - 664 sys sys 1186360650 28187
 sys/src/libhtml/mkfile - 664 sys sys 1035389778 246

+ 17 - 17
dist/replica/plan9.db

@@ -48,7 +48,7 @@
 386/bin/auth/changeuser - 775 sys sys 1178568246 96020
 386/bin/auth/convkeys - 775 sys sys 1204057806 87642
 386/bin/auth/convkeys2 - 775 sys sys 1203712994 87421
-386/bin/auth/cron - 775 sys sys 1205035791 141213
+386/bin/auth/cron - 775 sys sys 1205438966 141132
 386/bin/auth/debug - 775 sys sys 1204057810 101408
 386/bin/auth/disable - 775 sys sys 1020319057 146
 386/bin/auth/enable - 775 sys sys 1020319057 134
@@ -172,7 +172,7 @@
 386/bin/calendar - 775 sys sys 1200262736 79060
 386/bin/cat - 775 sys sys 1148500611 37482
 386/bin/cb - 775 sys sys 1168402293 77628
-386/bin/cdfs - 775 sys sys 1205293084 169996
+386/bin/cdfs - 775 sys sys 1205465243 171939
 386/bin/cec - 775 sys sys 1193714267 75896
 386/bin/cfs - 775 sys sys 1190863294 130565
 386/bin/chgrp - 775 sys sys 1168402294 59522
@@ -279,7 +279,7 @@
 386/bin/history - 775 sys sys 1178568279 74241
 386/bin/hoc - 775 sys sys 1172808058 100101
 386/bin/html2ms - 775 sys sys 1168402315 66321
-386/bin/htmlfmt - 775 sys sys 1200262758 163423
+386/bin/htmlfmt - 775 sys sys 1205438975 163505
 386/bin/htmlroff - 775 sys sys 1178568280 146978
 386/bin/ico - 775 sys sys 1197732756 162284
 386/bin/iconv - 775 sys sys 1168402316 113629
@@ -571,7 +571,7 @@
 386/lib/libflate.a - 664 sys sys 1168402366 76726
 386/lib/libframe.a - 664 sys sys 1184529910 66398
 386/lib/libgeometry.a - 664 sys sys 1168402366 50470
-386/lib/libhtml.a - 664 sys sys 1186370975 229202
+386/lib/libhtml.a - 664 sys sys 1205438981 229376
 386/lib/libhttpd.a - 664 sys sys 1191273745 100822
 386/lib/libip.a - 664 sys sys 1204292555 38800
 386/lib/libl.a - 664 sys sys 1168402367 5372
@@ -6103,7 +6103,7 @@ sys/include/fcall.h - 664 sys sys 1137461445 3063
 sys/include/flate.h - 664 sys sys 1014929063 1245
 sys/include/frame.h - 664 sys sys 1196212617 2708
 sys/include/geometry.h - 664 sys sys 1014929063 2632
-sys/include/html.h - 664 sys sys 1184472600 15622
+sys/include/html.h - 664 sys sys 1205384795 15653
 sys/include/httpd.h - 664 sys sys 1190835025 5800
 sys/include/ip.h - 664 sys sys 1204230308 4401
 sys/include/keyboard.h - 664 sys sys 1131637696 865
@@ -7363,7 +7363,7 @@ sys/man/1/acme - 664 sys sys 1196638934 18540
 sys/man/1/ap - 664 sys sys 1196638934 364
 sys/man/1/ar - 664 sys sys 1196638934 3153
 sys/man/1/ascii - 664 sys sys 1196638934 2726
-sys/man/1/awk - 664 sys sys 1196638934 10881
+sys/man/1/awk - 664 sys sys 1205384921 11042
 sys/man/1/basename - 664 sys sys 1196638931 535
 sys/man/1/bc - 664 sys sys 1196638934 3784
 sys/man/1/bind - 664 sys sys 1196638931 4009
@@ -7721,7 +7721,7 @@ sys/man/4/INDEX - 664 sys sys 1196638942 1026
 sys/man/4/INDEX.html - 664 sys sys 1196638942 5147
 sys/man/4/acme - 664 sys sys 1196638943 10435
 sys/man/4/archfs - 664 sys sys 1196638943 533
-sys/man/4/cdfs - 664 sys sys 1205253247 4351
+sys/man/4/cdfs - 664 sys sys 1205450230 4352
 sys/man/4/cfs - 664 sys sys 1196638943 2136
 sys/man/4/consolefs - 664 sys sys 1196638943 4389
 sys/man/4/cwfs - 664 sys sys 1196638943 6553
@@ -8187,7 +8187,7 @@ sys/src/9/pc/uarti8250.c - 664 sys sys 1177676872 13957
 sys/src/9/pc/uartisa.c - 664 sys sys 1127126907 1777
 sys/src/9/pc/uartpci.c - 664 sys sys 1190235592 4685
 sys/src/9/pc/usb.h - 664 sys sys 1202865355 4630
-sys/src/9/pc/usbohci.c - 664 sys sys 1205184193 49042
+sys/src/9/pc/usbohci.c - 664 sys sys 1205381809 49041
 sys/src/9/pc/usbuhci.c - 664 sys sys 1202252076 31839
 sys/src/9/pc/vga.c - 664 sys sys 1131290595 5148
 sys/src/9/pc/vga3dfx.c - 664 sys sys 1133218367 3833
@@ -8226,7 +8226,7 @@ sys/src/9/port/cache.c - 664 sys sys 1170456667 9285
 sys/src/9/port/chan.c - 664 sys sys 1195585806 34962
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 sys/src/9/port/debugalloc.c - 664 sys sys 1014931171 10402
-sys/src/9/port/dev.c - 664 sys sys 1146151714 8177
+sys/src/9/port/dev.c - 664 sys sys 1205381832 8204
 sys/src/9/port/devaoe.c - 664 sys sys 1199910511 42083
 sys/src/9/port/devaudio.c - 664 sys sys 1170456648 21199
 sys/src/9/port/devbridge.c - 664 sys sys 1204227718 24003
@@ -8244,7 +8244,7 @@ sys/src/9/port/devmntstats.c - 664 sys sys 1014931173 4039
 sys/src/9/port/devmouse.c - 664 sys sys 1192564555 13904
 sys/src/9/port/devpipe.c - 664 sys sys 1077055016 5825
 sys/src/9/port/devpnp.c - 664 sys sys 1088560907 13624
-sys/src/9/port/devproc.c - 664 sys sys 1197732969 28473
+sys/src/9/port/devproc.c - 664 sys sys 1205384114 28476
 sys/src/9/port/devroot.c - 664 sys sys 1146151714 4242
 sys/src/9/port/devsd.c - 664 sys sys 1186965855 31275
 sys/src/9/port/devsdp.c - 664 sys sys 1057323393 44800
@@ -9623,7 +9623,7 @@ sys/src/cmd/auth/changeuser.c - 664 sys sys 1155994851 2949
 sys/src/cmd/auth/convbio.c - 664 sys sys 1015008432 2212
 sys/src/cmd/auth/convkeys.c - 664 sys sys 1204007234 2707
 sys/src/cmd/auth/convkeys2.c - 664 sys sys 1155994849 2444
-sys/src/cmd/auth/cron.c - 664 sys sys 1205008495 13189
+sys/src/cmd/auth/cron.c - 664 sys sys 1205426383 13334
 sys/src/cmd/auth/debug.c - 664 sys sys 1204007269 8034
 sys/src/cmd/auth/disable - 775 sys sys 1015008431 146
 sys/src/cmd/auth/enable - 775 sys sys 1015008430 134
@@ -10016,11 +10016,11 @@ sys/src/cmd/cc/sub.c - 664 sys sys 1143759345 34268
 sys/src/cmd/cc/y.tab.h - 664 sys sys 1098501521 1680
 sys/src/cmd/cdfs - 20000000775 sys sys 1039727558 0
 sys/src/cmd/cdfs/buf.c - 664 sys sys 1205271166 1923
-sys/src/cmd/cdfs/dat.h - 664 sys sys 1205281336 4538
+sys/src/cmd/cdfs/dat.h - 664 sys sys 1205446401 4615
 sys/src/cmd/cdfs/fns.h - 664 sys sys 969542122 297
-sys/src/cmd/cdfs/main.c - 664 sys sys 1205281456 11687
+sys/src/cmd/cdfs/main.c - 664 sys sys 1205366951 11578
 sys/src/cmd/cdfs/mkfile - 664 sys sys 1204937991 153
-sys/src/cmd/cdfs/mmc.c - 664 sys sys 1205295078 27297
+sys/src/cmd/cdfs/mmc.c - 664 sys sys 1205450135 30509
 sys/src/cmd/cec - 20000000775 sys sys 1193683647 0
 sys/src/cmd/cec/LICENSE - 664 sys sys 1186248056 1554
 sys/src/cmd/cec/Protocol - 664 sys sys 1186248056 2881
@@ -12823,7 +12823,7 @@ 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 1194216289 7061
+sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1205354106 7059
 sys/src/cmd/ndb/convM2DNS.c - 664 sys sys 1194216290 11959
 sys/src/cmd/ndb/cs.c - 664 sys sys 1203747782 33495
 sys/src/cmd/ndb/csquery.c - 664 sys sys 1174626119 1073
@@ -12841,7 +12841,7 @@ sys/src/cmd/ndb/dnstcp.c - 664 sys sys 1202761262 7535
 sys/src/cmd/ndb/dnudpserver.c - 664 sys sys 1203748560 5632
 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
+sys/src/cmd/ndb/mkfile - 664 sys sys 1205354106 2000
 sys/src/cmd/ndb/mkhash.c - 664 sys sys 1014926160 2899
 sys/src/cmd/ndb/mkhosts.c - 664 sys sys 957402054 4294
 sys/src/cmd/ndb/query.c - 664 sys sys 1188422202 1793
@@ -15347,7 +15347,7 @@ sys/src/libgeometry/quaternion.c - 664 sys sys 944961726 5707
 sys/src/libgeometry/transform.c - 664 sys sys 944961726 1995
 sys/src/libgeometry/tstack.c - 664 sys sys 944961726 4716
 sys/src/libhtml - 20000000775 sys sys 1039727689 0
-sys/src/libhtml/build.c - 664 sys sys 1166796404 94558
+sys/src/libhtml/build.c - 664 sys sys 1205384802 94657
 sys/src/libhtml/impl.h - 664 sys sys 1166796404 4598
 sys/src/libhtml/lex.c - 664 sys sys 1186360650 28187
 sys/src/libhtml/mkfile - 664 sys sys 1035389778 246

+ 20 - 0
dist/replica/plan9.log

@@ -18752,3 +18752,23 @@
 1205289005 0 c rc/bin/dmaon - 775 sys sys 1205288448 220
 1205294404 0 c 386/bin/cdfs - 775 sys sys 1205293084 169996
 1205296204 0 c sys/src/cmd/cdfs/mmc.c - 664 sys sys 1205295078 27297
+1205427604 0 c sys/include/html.h - 664 sys sys 1205384795 15653
+1205427604 1 c sys/man/1/awk - 664 sys sys 1205384921 11042
+1205427604 2 c sys/src/9/pc/usbohci.c - 664 sys sys 1205381809 49041
+1205427604 3 c sys/src/9/port/dev.c - 664 sys sys 1205381832 8204
+1205427604 4 c sys/src/9/port/devproc.c - 664 sys sys 1205384114 28476
+1205427604 5 c sys/src/cmd/auth/cron.c - 664 sys sys 1205426383 13334
+1205427604 6 c sys/src/cmd/cdfs/dat.h - 664 sys sys 1205366951 4613
+1205427604 7 c sys/src/cmd/cdfs/main.c - 664 sys sys 1205366951 11578
+1205427604 8 c sys/src/cmd/cdfs/mmc.c - 664 sys sys 1205366952 29073
+1205427604 9 c sys/src/cmd/ndb/convDNS2M.c - 664 sys sys 1205354106 7059
+1205427604 10 c sys/src/cmd/ndb/mkfile - 664 sys sys 1205354106 2000
+1205427604 11 c sys/src/libhtml/build.c - 664 sys sys 1205384802 94657
+1205440204 0 c 386/bin/cdfs - 775 sys sys 1205438970 170789
+1205440204 1 c 386/bin/htmlfmt - 775 sys sys 1205438975 163505
+1205440204 2 c 386/bin/auth/cron - 775 sys sys 1205438966 141132
+1205440204 3 c 386/lib/libhtml.a - 664 sys sys 1205438981 229376
+1205447403 0 c sys/src/cmd/cdfs/dat.h - 664 sys sys 1205446401 4615
+1205451004 0 c sys/man/4/cdfs - 664 sys sys 1205450230 4352
+1205451004 1 c sys/src/cmd/cdfs/mmc.c - 664 sys sys 1205450135 30509
+1205465404 0 c 386/bin/cdfs - 775 sys sys 1205465243 171939

+ 2 - 1
sys/include/html.h

@@ -207,6 +207,7 @@ struct Irule
 	uchar	align;		/* alignment spec */
 	uchar	noshade;	/* if true, don't shade */
 	int	size;		/* size attr (rule height) */
+	int	color;		/* color attr */
 	Dimen	wspec;		/* width spec */
 };
 
@@ -214,7 +215,7 @@ struct Irule
 struct Iimage
 {
 	Item;			/* (with tag ==Iimagetag) */
-	Rune*	imsrc;	/* image src url */
+	Rune*	imsrc;		/* image src url */
 	int	imwidth;	/* spec width (actual, if no spec) */
 	int	imheight;	/* spec height (actual, if no spec) */
 	Rune*	altrep;		/* alternate representation, in absence of image */

+ 8 - 0
sys/man/1/awk

@@ -546,3 +546,11 @@ to force it to be treated as a string concatenate
 .br
 The scope rules for variables in functions are a botch;
 the syntax is worse.
+.br
+UTF is not always dealt with correctly
+(e.g., in the
+.I split
+function with an empty string as final argument),
+though
+.I awk
+does make an attempt to do so.

+ 3 - 3
sys/man/4/cdfs

@@ -220,13 +220,13 @@ optical disc interface standards
 .IR dossrv (4)),
 .IR mk9660 (8)
 .SH BUGS
+Packet (incremental) writing is not yet implemented.
+.PP
 There are too many combinations of optical media, approximately
 the cross-product of these tuples:
 (CD DVD- DVD+ BD),
 (single-layer dual-layer),
-(ROM -R -RW).
-.PP
-Packet (incremental) writing is not yet implemented.
+(-ROM -R -RW).
 .PP
 Only MMC-compliant disc readers and writers
 are supported, but it would be easy to add

+ 9 - 5
sys/src/cmd/auth/cron.c

@@ -169,10 +169,14 @@ main(int argc, char *argv[])
 		exits(0);
 	}
 
-	lock = mklock("/cron/lock");
-	if (lock < 0)
-		fatal("cron already running: %r");
-	initcap();
+	initcap();		/* do this early, before cpurc removes it */
+	/*
+	 * it can take a few minutes before the file server notices that
+	 * we've rebooted.
+	 */
+//	lock = mklock("/cron/lock");
+//	if (lock < 0)
+//		fatal("cron already running: %r");
 
 	switch(fork()){
 	case -1:
@@ -277,7 +281,7 @@ readalljobs(void)
 			    !(d[i].qid.type & QTDIR))
 				continue;
 			if(strcmp(d[i].name, d[i].uid) != 0){
-				syslog(1, CRONLOG, "cron for %s owned by %s\n",
+				syslog(1, CRONLOG, "cron for %s owned by %s",
 					d[i].name, d[i].uid);
 				continue;
 			}

+ 1 - 2
sys/src/cmd/cdfs/dat.h

@@ -121,7 +121,7 @@ struct Track
 	/* initialized by fs */
 	char	name[32];
 	int	mode;
-	int	mtime;
+	ulong	mtime;
 };
 
 struct DTrack
@@ -166,7 +166,6 @@ struct Drive
 
 	/* disc characteristics */
 	int	mmctype;
-	int	nopen;
 	int	firsttrack;
 	int	ntrack;
 	int	nchange;		/* compare with the members in Scsi */

+ 2 - 2
sys/src/cmd/cdfs/main.c

@@ -19,8 +19,8 @@ static void checktoc(Drive*);
 
 int vflag;
 
-Drive *drive;
-int nchange;
+static Drive *drive;
+static int nchange;
 
 enum {
 	Qdir = 0,

+ 116 - 46
sys/src/cmd/cdfs/mmc.c

@@ -19,18 +19,21 @@ enum
 	Pagwrparams	= 5,	/* (cd|dvd)-r(w) device write parameters */
 	Pagcache	= 8,
 	Pagcapmechsts	= 0x2a,
+
+	Invistrack	= 0xff,	/* the invisible & incomplete track */
 };
 
 static Dev mmcdev;
 
 typedef struct Mmcaux Mmcaux;
 struct Mmcaux {
+	/* drive characteristics */
 	uchar	page05[Pagesz];		/* write parameters */
 	int	page05ok;
-
 	int	pagecmdsz;
-	ulong	mmcnwa;
 
+	/* disc characteristics */
+	ulong	mmcnwa;
 	int	nropen;
 	int	nwopen;
 	vlong	ntotby;
@@ -349,6 +352,16 @@ getdevtype(Drive *drive)
 	return resp[0] & 037;
 }
 
+static int
+start(Drive *drive, int code)
+{
+	uchar cmd[6];
+
+	initcdb(cmd, sizeof cmd, ScmdStart);
+	cmd[4] = code;
+	return scsi(drive, cmd, sizeof(cmd), cmd, 0, Snone);
+}
+
 Drive*
 mmcprobe(Scsi *scsi)
 {
@@ -364,6 +377,7 @@ mmcprobe(Scsi *scsi)
 	drive->Dev = mmcdev;
 	aux = emalloc(sizeof(Mmcaux));
 	drive->aux = aux;
+	scsiready(drive);
 	drive->type = getdevtype(drive);
 	if (drive->type != TypeCD) {
 		werrstr("not an mmc device");
@@ -377,6 +391,7 @@ mmcprobe(Scsi *scsi)
 	 * (as opposed to the disc in it).
 	 */
 
+	start(drive, 1);
 	/* attempt to read CD capabilities page, but it's now legacy */
 	if(mmcgetpage10(drive, Pagcapmechsts, buf) >= 0)
 		aux->pagecmdsz = 10;
@@ -405,7 +420,7 @@ mmcprobe(Scsi *scsi)
 		aux->page05ok = 1;
 		cap |= Cwrite;
 		if (vflag)
-			fprint(2, "mmcprobe: got page 5, assuming writable\n");
+			fprint(2, "mmcprobe: got page 5, assuming drive can write\n");
 	} else
 		cap &= ~Cwrite;
 	drive->cap = cap;
@@ -430,6 +445,16 @@ mmcprobe(Scsi *scsi)
 	return drive;
 }
 
+static char *tracktype[] = {
+	"audio cdda",
+	"2 audio channels",
+	"2",
+	"3",
+	"data, recorded uninterrupted",
+	"data, recorded interrupted",
+};
+
+/* t is a track number on disc, i is an index into drive->track[] for result */
 static int
 mmctrackinfo(Drive *drive, int t, int i)
 {
@@ -463,7 +488,8 @@ mmctrackinfo(Drive *drive, int t, int i)
 //	dmode = resp[6] & 0x0F;
 
 	if(vflag)
-		print("track %d type 0x%x\n", t, tmode);
+		print("track %d type %d (%s)\n", t, tmode,
+			(tmode < nelem(tracktype)? tracktype[tmode]: "**GOK**"));
 	type = TypeNone;
 	bs = BScdda;
 	switch(tmode){
@@ -473,7 +499,8 @@ mmctrackinfo(Drive *drive, int t, int i)
 		break;
 	case 1:		/* 2 audio channels, with pre-emphasis 50/15 μs */
 		if(vflag)
-			print("audio channels with preemphasis on track %d (u%.3d)\n", t, i);
+			print("audio channels with preemphasis on track %d "
+				"(u%.3d)\n", t, i);
 		type = TypeNone;
 		break;
 	case 4:		/* data track, recorded uninterrupted */
@@ -500,7 +527,7 @@ mmctrackinfo(Drive *drive, int t, int i)
 		drive->writeok = 1;
 	}
 
-	if(t == 0xFF)
+	if(t == Invistrack)
 		aux->mmcnwa = bige(&resp[12]);
 	return 0;
 }
@@ -715,6 +742,7 @@ mmcgettoc(Drive *drive)
 {
 	int i, n, first, last;
 	uchar resp[1024];
+	Mmcaux *aux;
 
 	/*
 	 * if someone has swapped the cd,
@@ -729,8 +757,7 @@ mmcgettoc(Drive *drive)
 	}
 	/*
 	 * if the disc doesn't appear to be have been changed, and there
-	 * has been a disc in this drive, sometime since cdfs started,
-	 * there's nothing to do (the common case).
+	 * is a disc in this drive, there's nothing to do (the common case).
 	 */
 	if(drive->nchange == drive->Scsi.nchange && drive->changetime != 0)
 		return 0;
@@ -746,6 +773,10 @@ mmcgettoc(Drive *drive)
 	drive->changetime = drive->Scsi.changetime;
 	drive->writeok = drive->erasable = drive->recordable = drive->blank = 0;
 	drive->erasableset = drive->recordableset = drive->blankset = 0;
+	aux = drive->aux;
+	aux->mmcnwa = 0;
+	aux->nropen = aux->nwopen = 0;
+	aux->ntotby = aux->ntotbk = 0;
 
 	for(i=0; i<nelem(drive->track); i++){
 		memset(&drive->track[i].mbeg, 0, sizeof(Msf));
@@ -1073,8 +1104,11 @@ mmcxwrite(Otrack *o, void *v, long nblk)
 	Mmcaux *aux;
 
 	assert(o->omode == OWRITE);
-
 	aux = o->drive->aux;
+	if (aux->mmcnwa == 0 && scsiready(o->drive) < 0) {
+		werrstr("device not ready to write");
+		return -1;
+	}
 	aux->ntotby += nblk*o->track->bs;
 	aux->ntotbk += nblk;
 
@@ -1087,7 +1121,8 @@ mmcxwrite(Otrack *o, void *v, long nblk)
 	cmd[7] = nblk>>8;
 	cmd[8] = nblk>>0;
 	if(vflag)
-		print("%lld ns: write %ld at 0x%lux\n", nsec(), nblk, aux->mmcnwa);
+		print("%lld ns: write %ld at 0x%lux\n",
+			nsec(), nblk, aux->mmcnwa);
 	aux->mmcnwa += nblk;
 	return scsi(o->drive, cmd, sizeof(cmd), v, nblk*o->track->bs, Swrite);
 }
@@ -1098,10 +1133,34 @@ mmcwrite(Buf *buf, void *v, long nblk, long)
 	return mmcxwrite(buf->otrack, v, nblk);
 }
 
+static int
+getinvistrack(Drive *drive)
+{
+	int n;
+	uchar cmd[10], resp[Pagesz];
+
+	initcdb(cmd, sizeof(cmd), ScmdRtrackinfo);
+	cmd[1] = 1<<2 | 1;	/* open; address below is logical track # */
+	PUTBELONG(cmd + 2, 1);		/* find first open track */
+	cmd[7] = sizeof(resp)>>8;
+	cmd[8] = sizeof(resp);
+	n = scsi(drive, cmd, sizeof(cmd), resp, sizeof(resp), Sread);
+	if(n < 4) {
+		if(vflag)
+			print("trackinfo for invis track fails n=%d: %r\n", n);
+		return -1;
+	}
+
+	if(vflag)
+		print("getinvistrack: track #%d session #%d\n",
+			resp[2], resp[3]);
+	return resp[2];
+}
+
 static Otrack*
 mmccreate(Drive *drive, int type)
 {
-	int bs;
+	int bs, invis;
 	Mmcaux *aux;
 	Track *t;
 	Otrack *o;
@@ -1125,8 +1184,15 @@ mmccreate(Drive *drive, int type)
 		return nil;
 	}
 
-/* comment out the returns for now; it should be no big deal - geoff */
-	if(mmctrackinfo(drive, 0xFF, Maxtrack)) {	/* the invisible track */
+	invis = getinvistrack(drive);
+	if (invis < 0)
+		invis = Invistrack;
+
+	/* comment out the returns for now; it should be no big deal - geoff */
+	if(mmctrackinfo(drive, invis, Maxtrack)) {
+		if (vflag)
+			fprint(2, "mmccreate: mmctrackinfo for invis track %d"
+				" failed: %r\n", invis);
 		werrstr("CD not writable");
 //		return nil;
 	}
@@ -1134,7 +1200,10 @@ mmccreate(Drive *drive, int type)
 		werrstr("cannot set bs mode");
 //		return nil;
 	}
-	if(mmctrackinfo(drive, 0xFF, Maxtrack)) {	/* the invisible track */
+	if(mmctrackinfo(drive, invis, Maxtrack)) {
+		if (vflag)
+			fprint(2, "mmccreate: mmctrackinfo for invis track %d"
+				" (2) failed: %r\n", invis);
 		werrstr("CD not writable 2");
 //		return nil;
 	}
@@ -1186,6 +1255,7 @@ mmcxclose(Drive *drive, int clf, int trackno)
 void
 mmcsynccache(Drive *drive)
 {
+	int invis;
 	uchar cmd[10];
 	Mmcaux *aux;
 
@@ -1197,14 +1267,23 @@ mmcsynccache(Drive *drive)
 		print("mmcsynccache: bytes = %lld blocks = %ld, mmcnwa 0x%luX\n",
 			aux->ntotby, aux->ntotbk, aux->mmcnwa);
 	}
-	/* rsc: seems not to work on some drives. */
-	/* so ignore return code & don't issue on dvd+rw. */
-	if (drive->mmctype != Mmcdvdplus || !drive->erasable)
-{
-fprint(2, "closing track (not dvd+rw)...\n");
- 		mmcxclose(drive, Closetrack, 0xFF);
-fprint(2, "... done.\n");
-}
+	invis = getinvistrack(drive);
+	if (invis < 0)
+		invis = Invistrack;
+	/*
+	 * rsc: seems not to work on some drives.
+	 * so ignore return code & don't issue on dvd+rw.
+	 * try skipping it on bd too.
+	 */
+	if((drive->mmctype != Mmcdvdplus || !drive->erasable) &&
+	    drive->mmctype != Mmcbd) {
+		if (vflag)
+			fprint(2, "closing invisible track %d (not dvd+rw)...\n",
+				invis);
+ 		mmcxclose(drive, Closetrack, invis);
+		if (vflag)
+			fprint(2, "... done.\n");
+	}
 }
 
 /*
@@ -1252,24 +1331,26 @@ mmcfixate(Drive *drive)
 	/* try to set it but don't freak out if it fails */
 	mmcsetpage(drive, Pagwrparams, p);
 
-	/* rsc: seems not to work on some drives. */
-	/* so ignore return code & don't issue on dvd+rw. */
-//	if (drive->mmctype != Mmcdvdplus || !drive->erasable)
-//		mmcxclose(drive, Closetrack, 0xFF);
-fprint(2, "closing session and maybe finalizing...\n");
-	r = mmcxclose(drive, Closesessfinal, 0);
-fprint(2, "... done.\n");
-	if (r < 0)
-		return r;
+	/* skip explicit close session on bd-r */
+	if (drive->mmctype != Mmcbd || drive->erasable) {
+		if (vflag)
+			fprint(2, "closing session and maybe finalizing...\n");
+		r = mmcxclose(drive, Closesessfinal, 0);
+		if (vflag)
+			fprint(2, "... done.\n");
+		if (r < 0)
+			return r;
+	}
 	/*
 	 * Closesessfinal only closes & doesn't finalize on dvd+r and bd-r.
 	 */
 	if ((drive->mmctype == Mmcdvdplus || drive->mmctype == Mmcbd) &&
-	    !drive->erasable)
-{
-fprint(2, "finalizing dvd+r or bd-r... (won't print `done').\n");
+	    !drive->erasable) {
+		if (vflag)
+			fprint(2, "finalizing dvd+r or bd-r... "
+				"(won't print `done').\n");
 		return mmcxclose(drive, Closedvdrbdfinal, 0);
-}
+	}
 	return 0;
 }
 
@@ -1289,17 +1370,6 @@ mmcblank(Drive *drive, int quick)
 	return scsi(drive, cmd, sizeof(cmd), cmd, 0, Snone);
 }
 
-static int
-start(Drive *drive, int code)
-{
-	uchar cmd[6];
-
-	memset(cmd, 0, sizeof(cmd));
-	cmd[0] = ScmdStart;		/* start/stop unit */
-	cmd[4] = code;
-	return scsi(drive, cmd, sizeof(cmd), cmd, 0, Snone);
-}
-
 static char*
 e(int status)
 {

+ 6 - 3
sys/src/libhtml/build.c

@@ -283,7 +283,7 @@ static Item*		newifloat(Item* it, int side);
 static Item*		newiformfield(Formfield* ff);
 static Item*		newiimage(Rune* src, Rune* altrep, int align, int width, int height,
 					int hspace, int vspace, int border, int ismap, Map* map);
-static Item*		newirule(int align, int size, int noshade, Dimen wspec);
+static Item*		newirule(int align, int size, int noshade, int color, Dimen wspec);
 static Item*		newispacer(int spkind);
 static Item*		newitable(Table* t);
 static ItemSource*	newitemsource(Docinfo* di);
@@ -415,6 +415,7 @@ getitems(ItemSource* is, uchar* data, int datalen)
 	int	bramt;
 	int	sty;
 	int	nosh;
+	int	color;
 	int	oldcuranchor;
 	int	dfltbd;
 	int	v;
@@ -1020,7 +1021,8 @@ getitems(ItemSource* is, uchar* data, int datalen)
 				if(dimenkind(wd) == Dnone)
 					wd = makedimen(Dpercent, 100);
 				nosh = aflagval(tok, Anoshade);
-				additem(ps, newirule(al, sz, nosh, wd), tok);
+				color = acolorval(tok, Acolor, 0);
+				additem(ps, newirule(al, sz, nosh, color, wd), tok);
 				addbrk(ps, 0, 0);
 				break;
 
@@ -3095,7 +3097,7 @@ newitext(Rune* s, int fnt, int fg, int voff, int ul)
 }
 
 static Item*
-newirule(int align, int size, int noshade, Dimen wspec)
+newirule(int align, int size, int noshade, int color, Dimen wspec)
 {
 	Irule* r;
 
@@ -3104,6 +3106,7 @@ newirule(int align, int size, int noshade, Dimen wspec)
 	r->align = align;
 	r->size = size;
 	r->noshade = noshade;
+	r->color = color;
 	r->wspec = wspec;
 	return (Item*)r;
 }