Browse Source

Plan 9 from Bell Labs 2005-08-11

David du Colombier 18 years ago
parent
commit
4fb3d58bde

+ 19 - 22
dist/replica/_plan9.db

@@ -331,10 +331,10 @@
 386/bin/ndb - 20000000775 sys sys 985743147 0
 386/bin/ndb - 20000000775 sys sys 985743147 0
 386/bin/ndb/cs - 775 sys sys 1116126321 149237
 386/bin/ndb/cs - 775 sys sys 1116126321 149237
 386/bin/ndb/csquery - 775 sys sys 1115950095 61476
 386/bin/ndb/csquery - 775 sys sys 1115950095 61476
-386/bin/ndb/dns - 775 sys sys 1119496651 219934
-386/bin/ndb/dnsdebug - 775 sys sys 1119496652 194546
+386/bin/ndb/dns - 775 sys sys 1123643766 220090
+386/bin/ndb/dnsdebug - 775 sys sys 1123643767 194702
 386/bin/ndb/dnsquery - 775 sys sys 1120619354 63643
 386/bin/ndb/dnsquery - 775 sys sys 1120619354 63643
-386/bin/ndb/dnstcp - 775 sys sys 1119496652 193187
+386/bin/ndb/dnstcp - 775 sys sys 1123643767 193343
 386/bin/ndb/ipquery - 775 sys sys 1116126323 95480
 386/bin/ndb/ipquery - 775 sys sys 1116126323 95480
 386/bin/ndb/mkdb - 775 sys sys 1115950097 63982
 386/bin/ndb/mkdb - 775 sys sys 1115950097 63982
 386/bin/ndb/mkhash - 775 sys sys 1115950097 83917
 386/bin/ndb/mkhash - 775 sys sys 1115950097 83917
@@ -7189,8 +7189,8 @@ sys/lib/wiki/page.html - 664 sys sys 1018580959 943
 sys/lib/wiki/page.txt - 664 sys sys 1018580959 12
 sys/lib/wiki/page.txt - 664 sys sys 1018580959 12
 sys/lib/wiki/sandbox - 664 sys sys 1018580959 102
 sys/lib/wiki/sandbox - 664 sys sys 1018580959 102
 sys/lib/wiki/werror.html - 664 sys sys 1018580959 1234
 sys/lib/wiki/werror.html - 664 sys sys 1018580959 1234
-sys/lib/yaccpar - 664 sys sys 944956052 4588
-sys/lib/yaccpars - 664 sys sys 1045432683 4596
+sys/lib/yaccpar - 664 sys sys 1123699615 4588
+sys/lib/yaccpars - 664 sys sys 1123699616 4596
 sys/log - 20000000775 sys sys 984760091 0
 sys/log - 20000000775 sys sys 984760091 0
 sys/log/aan - 10000000666 sys sys 1019856844 0
 sys/log/aan - 10000000666 sys sys 1019856844 0
 sys/log/auth - 10000000666 sys sys 959261821 0
 sys/log/auth - 10000000666 sys sys 959261821 0
@@ -7408,7 +7408,7 @@ sys/man/2/chdir - 664 sys sys 944959694 552
 sys/man/2/cleanname - 664 sys sys 950593488 709
 sys/man/2/cleanname - 664 sys sys 950593488 709
 sys/man/2/color - 664 sys sys 944959697 1335
 sys/man/2/color - 664 sys sys 944959697 1335
 sys/man/2/complete - 664 sys sys 1076276513 2396
 sys/man/2/complete - 664 sys sys 1076276513 2396
-sys/man/2/control - 664 sys sys 1037465511 42782
+sys/man/2/control - 664 sys sys 1123676381 42778
 sys/man/2/cputime - 664 sys sys 1015091518 713
 sys/man/2/cputime - 664 sys sys 1015091518 713
 sys/man/2/ctime - 664 sys sys 954378853 2547
 sys/man/2/ctime - 664 sys sys 954378853 2547
 sys/man/2/ctype - 664 sys sys 1079535676 2611
 sys/man/2/ctype - 664 sys sys 1079535676 2611
@@ -7679,6 +7679,7 @@ sys/man/8/drawterm - 664 sys sys 958419689 2458
 sys/man/8/fossilcons - 664 sys sys 1087406046 17788
 sys/man/8/fossilcons - 664 sys sys 1087406046 17788
 sys/man/8/fs - 664 sys sys 1055701170 15029
 sys/man/8/fs - 664 sys sys 1055701170 15029
 sys/man/8/fsconfig - 664 sys sys 1045501600 8142
 sys/man/8/fsconfig - 664 sys sys 1045501600 8142
+sys/man/8/gpsfs - 664 sys sys 1123643451 4924
 sys/man/8/httpd - 664 sys sys 1121198377 6675
 sys/man/8/httpd - 664 sys sys 1121198377 6675
 sys/man/8/init - 664 sys sys 944959679 1430
 sys/man/8/init - 664 sys sys 944959679 1430
 sys/man/8/ipconfig - 664 sys sys 1116383710 6170
 sys/man/8/ipconfig - 664 sys sys 1116383710 6170
@@ -7880,7 +7881,6 @@ sys/src/9/mtx/dat.h - 664 sys sys 1091904417 3874
 sys/src/9/mtx/devarch.c - 664 sys sys 1018721285 6793
 sys/src/9/mtx/devarch.c - 664 sys sys 1018721285 6793
 sys/src/9/mtx/devether.c - 664 sys sys 1116097786 9281
 sys/src/9/mtx/devether.c - 664 sys sys 1116097786 9281
 sys/src/9/mtx/devrtc.c - 664 sys sys 1018721285 6772
 sys/src/9/mtx/devrtc.c - 664 sys sys 1018721285 6772
-sys/src/9/mtx/errstr.h - 664 sys sys 1089390059 2137
 sys/src/9/mtx/ether2114x.c - 664 sys sys 1026848191 37904
 sys/src/9/mtx/ether2114x.c - 664 sys sys 1026848191 37904
 sys/src/9/mtx/etherif.h - 664 sys sys 1045504432 785
 sys/src/9/mtx/etherif.h - 664 sys sys 1045504432 785
 sys/src/9/mtx/fns.h - 664 sys sys 1111851554 2722
 sys/src/9/mtx/fns.h - 664 sys sys 1111851554 2722
@@ -7925,7 +7925,6 @@ sys/src/9/pc/devtv.c - 664 sys sys 1091734484 45725
 sys/src/9/pc/devusb.c - 664 sys sys 1105193103 18364
 sys/src/9/pc/devusb.c - 664 sys sys 1105193103 18364
 sys/src/9/pc/devvga.c - 664 sys sys 1063857412 8714
 sys/src/9/pc/devvga.c - 664 sys sys 1063857412 8714
 sys/src/9/pc/dma.c - 664 sys sys 1015014515 4736
 sys/src/9/pc/dma.c - 664 sys sys 1015014515 4736
-sys/src/9/pc/errstr.h - 664 sys sys 1119276286 2144
 sys/src/9/pc/ether2000.c - 664 sys sys 1089299187 4819
 sys/src/9/pc/ether2000.c - 664 sys sys 1089299187 4819
 sys/src/9/pc/ether2114x.c - 664 sys sys 1081706476 41545
 sys/src/9/pc/ether2114x.c - 664 sys sys 1081706476 41545
 sys/src/9/pc/ether589.c - 664 sys sys 1015014516 4644
 sys/src/9/pc/ether589.c - 664 sys sys 1015014516 4644
@@ -7966,7 +7965,7 @@ sys/src/9/pc/main.c - 664 sys sys 1121858827 14693
 sys/src/9/pc/mem.h - 664 sys sys 1018553448 4573
 sys/src/9/pc/mem.h - 664 sys sys 1018553448 4573
 sys/src/9/pc/memory.c - 664 sys sys 1071245460 13028
 sys/src/9/pc/memory.c - 664 sys sys 1071245460 13028
 sys/src/9/pc/mkfile - 664 sys sys 1067810339 3219
 sys/src/9/pc/mkfile - 664 sys sys 1067810339 3219
-sys/src/9/pc/mmu.c - 664 sys sys 1123438210 10452
+sys/src/9/pc/mmu.c - 664 sys sys 1123645071 10456
 sys/src/9/pc/mouse.c - 664 sys sys 1098479254 7057
 sys/src/9/pc/mouse.c - 664 sys sys 1098479254 7057
 sys/src/9/pc/mp.c - 664 sys sys 1123637234 17024
 sys/src/9/pc/mp.c - 664 sys sys 1123637234 17024
 sys/src/9/pc/mp.h - 664 sys sys 1015014520 6575
 sys/src/9/pc/mp.h - 664 sys sys 1015014520 6575
@@ -8033,10 +8032,10 @@ sys/src/9/pc/wavelan.h - 664 sys sys 1107448246 6169
 sys/src/9/port - 20000000775 sys sys 1018469625 0
 sys/src/9/port - 20000000775 sys sys 1018469625 0
 sys/src/9/port/alarm.c - 664 sys sys 1067722766 1426
 sys/src/9/port/alarm.c - 664 sys sys 1067722766 1426
 sys/src/9/port/alloc.c - 664 sys sys 1102093389 5645
 sys/src/9/port/alloc.c - 664 sys sys 1102093389 5645
-sys/src/9/port/allocb.c - 664 sys sys 1067722759 3200
-sys/src/9/port/auth.c - 664 sys sys 1055688251 2308
+sys/src/9/port/allocb.c - 664 sys sys 1123676437 3340
+sys/src/9/port/auth.c - 664 sys sys 1123647282 2392
 sys/src/9/port/cache.c - 664 sys sys 1055688274 9241
 sys/src/9/port/cache.c - 664 sys sys 1055688274 9241
-sys/src/9/port/chan.c - 664 sys sys 1072704672 29140
+sys/src/9/port/chan.c - 664 sys sys 1123647283 29928
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 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/debugalloc.c - 664 sys sys 1014931171 10402
 sys/src/9/port/dev.c - 664 sys sys 1077896125 8247
 sys/src/9/port/dev.c - 664 sys sys 1077896125 8247
@@ -8096,7 +8095,7 @@ sys/src/9/port/parse.c - 664 sys sys 1014931177 2026
 sys/src/9/port/pgrp.c - 664 sys sys 1072704671 3940
 sys/src/9/port/pgrp.c - 664 sys sys 1072704671 3940
 sys/src/9/port/portclock.c - 664 sys sys 1102093397 4556
 sys/src/9/port/portclock.c - 664 sys sys 1102093397 4556
 sys/src/9/port/portdat.h - 664 sys sys 1109541435 22233
 sys/src/9/port/portdat.h - 664 sys sys 1109541435 22233
-sys/src/9/port/portfns.h - 664 sys sys 1111851541 10943
+sys/src/9/port/portfns.h - 664 sys sys 1123647283 10976
 sys/src/9/port/portmkfile - 664 sys sys 1109202242 2043
 sys/src/9/port/portmkfile - 664 sys sys 1109202242 2043
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/proc.c - 664 sys sys 1099760501 28207
 sys/src/9/port/proc.c - 664 sys sys 1099760501 28207
@@ -8107,8 +8106,8 @@ sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
 sys/src/9/port/sd.h - 664 sys sys 1098546338 2348
 sys/src/9/port/sd.h - 664 sys sys 1098546338 2348
 sys/src/9/port/segment.c - 664 sys sys 1121259584 13761
 sys/src/9/port/segment.c - 664 sys sys 1121259584 13761
 sys/src/9/port/swap.c - 664 sys sys 1055688551 6980
 sys/src/9/port/swap.c - 664 sys sys 1055688551 6980
-sys/src/9/port/sysfile.c - 664 sys sys 1100363052 22146
-sys/src/9/port/sysproc.c - 664 sys sys 1123438659 15118
+sys/src/9/port/sysfile.c - 664 sys sys 1123647282 22249
+sys/src/9/port/sysproc.c - 664 sys sys 1123645064 15114
 sys/src/9/port/systab.h - 664 sys sys 1062721698 3044
 sys/src/9/port/systab.h - 664 sys sys 1062721698 3044
 sys/src/9/port/taslock.c - 664 sys sys 1084475129 3658
 sys/src/9/port/taslock.c - 664 sys sys 1084475129 3658
 sys/src/9/port/thwack.c - 664 sys sys 1057323394 7253
 sys/src/9/port/thwack.c - 664 sys sys 1057323394 7253
@@ -8125,7 +8124,6 @@ sys/src/9/ppc/devether.c - 664 sys sys 1116097817 9264
 sys/src/9/ppc/devflash.c - 664 sys sys 1059490750 19885
 sys/src/9/ppc/devflash.c - 664 sys sys 1059490750 19885
 sys/src/9/ppc/devirq.c - 664 sys sys 1100701675 6314
 sys/src/9/ppc/devirq.c - 664 sys sys 1100701675 6314
 sys/src/9/ppc/devtls.c - 664 sys sys 1059490751 43721
 sys/src/9/ppc/devtls.c - 664 sys sys 1059490751 43721
-sys/src/9/ppc/errstr.h - 664 sys sys 1059490751 2137
 sys/src/9/ppc/etherfcc.c - 664 sys sys 1100701674 19690
 sys/src/9/ppc/etherfcc.c - 664 sys sys 1100701674 19690
 sys/src/9/ppc/etherif.h - 664 sys sys 1059490751 785
 sys/src/9/ppc/etherif.h - 664 sys sys 1059490751 785
 sys/src/9/ppc/ethersaturn.c - 664 sys sys 1059490751 4321
 sys/src/9/ppc/ethersaturn.c - 664 sys sys 1059490751 4321
@@ -9781,7 +9779,7 @@ sys/src/cmd/cpp/mkfile - 664 sys sys 944960879 178
 sys/src/cmd/cpp/nlist.c - 664 sys sys 1116770041 4645
 sys/src/cmd/cpp/nlist.c - 664 sys sys 1116770041 4645
 sys/src/cmd/cpp/test.c - 664 sys sys 944960879 47
 sys/src/cmd/cpp/test.c - 664 sys sys 944960879 47
 sys/src/cmd/cpp/tokens.c - 664 sys sys 944960879 6755
 sys/src/cmd/cpp/tokens.c - 664 sys sys 944960879 6755
-sys/src/cmd/cpu.c - 664 sys sys 1121977158 21112
+sys/src/cmd/cpu.c - 664 sys sys 1123676384 21128
 sys/src/cmd/crop.c - 664 sys sys 1039753034 4136
 sys/src/cmd/crop.c - 664 sys sys 1039753034 4136
 sys/src/cmd/date.c - 664 sys sys 944961351 449
 sys/src/cmd/date.c - 664 sys sys 944961351 449
 sys/src/cmd/db - 20000000775 sys sys 988249965 0
 sys/src/cmd/db - 20000000775 sys sys 988249965 0
@@ -12203,7 +12201,7 @@ sys/src/cmd/mk/job.c - 664 sys sys 944961025 692
 sys/src/cmd/mk/lex.c - 664 sys sys 944961025 2315
 sys/src/cmd/mk/lex.c - 664 sys sys 944961025 2315
 sys/src/cmd/mk/main.c - 664 sys sys 1123094366 4790
 sys/src/cmd/mk/main.c - 664 sys sys 1123094366 4790
 sys/src/cmd/mk/match.c - 664 sys sys 1014926073 856
 sys/src/cmd/mk/match.c - 664 sys sys 1014926073 856
-sys/src/cmd/mk/mk.c - 664 sys sys 1014926073 5195
+sys/src/cmd/mk/mk.c - 664 sys sys 1123676387 5348
 sys/src/cmd/mk/mk.h - 664 sys sys 1055698812 3735
 sys/src/cmd/mk/mk.h - 664 sys sys 1055698812 3735
 sys/src/cmd/mk/mkconv - 775 sys sys 944961025 555
 sys/src/cmd/mk/mkconv - 775 sys sys 944961025 555
 sys/src/cmd/mk/mkfile - 664 sys sys 1055698812 376
 sys/src/cmd/mk/mkfile - 664 sys sys 1055698812 376
@@ -14956,7 +14954,6 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
-386/bin/ndb/dns - 775 sys sys 1123643766 220090
-386/bin/ndb/dnsdebug - 775 sys sys 1123643767 194702
-386/bin/ndb/dnstcp - 775 sys sys 1123643767 193343
-sys/man/8/gpsfs - 664 sys sys 1123643451 4924
+386/bin/cpu - 775 sys sys 1123729447 138028
+386/bin/mk - 775 sys sys 1123729447 144048
+sys/games/lib/fortunes - 664 sys sys 1123730222 254387

+ 15 - 18
dist/replica/plan9.db

@@ -184,7 +184,7 @@
 386/bin/con - 775 sys sys 1115950058 78211
 386/bin/con - 775 sys sys 1115950058 78211
 386/bin/cp - 775 sys sys 1115950058 63215
 386/bin/cp - 775 sys sys 1115950058 63215
 386/bin/cpp - 775 sys sys 1116903731 149799
 386/bin/cpp - 775 sys sys 1116903731 149799
-386/bin/cpu - 775 sys sys 1121051350 138031
+386/bin/cpu - 775 sys sys 1123729447 138028
 386/bin/crop - 775 sys sys 1115950059 116008
 386/bin/crop - 775 sys sys 1115950059 116008
 386/bin/date - 775 sys sys 1115950059 43261
 386/bin/date - 775 sys sys 1115950059 43261
 386/bin/db - 775 sys sys 1119496644 336326
 386/bin/db - 775 sys sys 1119496644 336326
@@ -320,7 +320,7 @@
 386/bin/ls - 775 sys sys 1119496651 82480
 386/bin/ls - 775 sys sys 1119496651 82480
 386/bin/mc - 775 sys sys 1115950092 133620
 386/bin/mc - 775 sys sys 1115950092 133620
 386/bin/md5sum - 775 sys sys 1115950092 61265
 386/bin/md5sum - 775 sys sys 1115950092 61265
-386/bin/mk - 775 sys sys 1123123798 144048
+386/bin/mk - 775 sys sys 1123729447 144048
 386/bin/mkdir - 775 sys sys 1115950093 60964
 386/bin/mkdir - 775 sys sys 1115950093 60964
 386/bin/mkpaqfs - 775 sys sys 1115950093 94509
 386/bin/mkpaqfs - 775 sys sys 1115950093 94509
 386/bin/mntgen - 775 sys sys 1115950094 139193
 386/bin/mntgen - 775 sys sys 1115950094 139193
@@ -5763,7 +5763,7 @@ sys/games - 20000000775 sys sys 952648872 0
 sys/games/lib - 20000000775 sys sys 952648879 0
 sys/games/lib - 20000000775 sys sys 952648879 0
 sys/games/lib/4scores - 10000000664 sys sys 1118680448 0
 sys/games/lib/4scores - 10000000664 sys sys 1118680448 0
 sys/games/lib/5scores - 10000000664 sys sys 1118680453 0
 sys/games/lib/5scores - 10000000664 sys sys 1118680453 0
-sys/games/lib/fortunes - 664 sys sys 1121303903 254178
+sys/games/lib/fortunes - 664 sys sys 1123730222 254387
 sys/games/lib/mahjongg - 20000000775 sys sys 1095792278 0
 sys/games/lib/mahjongg - 20000000775 sys sys 1095792278 0
 sys/games/lib/mahjongg/backgrounds - 20000000775 sys sys 1095792293 0
 sys/games/lib/mahjongg/backgrounds - 20000000775 sys sys 1095792293 0
 sys/games/lib/mahjongg/backgrounds/default.bit - 664 sys sys 1095792293 346803
 sys/games/lib/mahjongg/backgrounds/default.bit - 664 sys sys 1095792293 346803
@@ -7189,8 +7189,8 @@ sys/lib/wiki/page.html - 664 sys sys 1018580959 943
 sys/lib/wiki/page.txt - 664 sys sys 1018580959 12
 sys/lib/wiki/page.txt - 664 sys sys 1018580959 12
 sys/lib/wiki/sandbox - 664 sys sys 1018580959 102
 sys/lib/wiki/sandbox - 664 sys sys 1018580959 102
 sys/lib/wiki/werror.html - 664 sys sys 1018580959 1234
 sys/lib/wiki/werror.html - 664 sys sys 1018580959 1234
-sys/lib/yaccpar - 664 sys sys 944956052 4588
-sys/lib/yaccpars - 664 sys sys 1045432683 4596
+sys/lib/yaccpar - 664 sys sys 1123699615 4588
+sys/lib/yaccpars - 664 sys sys 1123699616 4596
 sys/log - 20000000775 sys sys 984760091 0
 sys/log - 20000000775 sys sys 984760091 0
 sys/log/aan - 10000000666 sys sys 1019856844 0
 sys/log/aan - 10000000666 sys sys 1019856844 0
 sys/log/auth - 10000000666 sys sys 959261821 0
 sys/log/auth - 10000000666 sys sys 959261821 0
@@ -7408,7 +7408,7 @@ sys/man/2/chdir - 664 sys sys 944959694 552
 sys/man/2/cleanname - 664 sys sys 950593488 709
 sys/man/2/cleanname - 664 sys sys 950593488 709
 sys/man/2/color - 664 sys sys 944959697 1335
 sys/man/2/color - 664 sys sys 944959697 1335
 sys/man/2/complete - 664 sys sys 1076276513 2396
 sys/man/2/complete - 664 sys sys 1076276513 2396
-sys/man/2/control - 664 sys sys 1037465511 42782
+sys/man/2/control - 664 sys sys 1123676381 42778
 sys/man/2/cputime - 664 sys sys 1015091518 713
 sys/man/2/cputime - 664 sys sys 1015091518 713
 sys/man/2/ctime - 664 sys sys 954378853 2547
 sys/man/2/ctime - 664 sys sys 954378853 2547
 sys/man/2/ctype - 664 sys sys 1079535676 2611
 sys/man/2/ctype - 664 sys sys 1079535676 2611
@@ -7881,7 +7881,6 @@ sys/src/9/mtx/dat.h - 664 sys sys 1091904417 3874
 sys/src/9/mtx/devarch.c - 664 sys sys 1018721285 6793
 sys/src/9/mtx/devarch.c - 664 sys sys 1018721285 6793
 sys/src/9/mtx/devether.c - 664 sys sys 1116097786 9281
 sys/src/9/mtx/devether.c - 664 sys sys 1116097786 9281
 sys/src/9/mtx/devrtc.c - 664 sys sys 1018721285 6772
 sys/src/9/mtx/devrtc.c - 664 sys sys 1018721285 6772
-sys/src/9/mtx/errstr.h - 664 sys sys 1089390059 2137
 sys/src/9/mtx/ether2114x.c - 664 sys sys 1026848191 37904
 sys/src/9/mtx/ether2114x.c - 664 sys sys 1026848191 37904
 sys/src/9/mtx/etherif.h - 664 sys sys 1045504432 785
 sys/src/9/mtx/etherif.h - 664 sys sys 1045504432 785
 sys/src/9/mtx/fns.h - 664 sys sys 1111851554 2722
 sys/src/9/mtx/fns.h - 664 sys sys 1111851554 2722
@@ -7926,7 +7925,6 @@ sys/src/9/pc/devtv.c - 664 sys sys 1091734484 45725
 sys/src/9/pc/devusb.c - 664 sys sys 1105193103 18364
 sys/src/9/pc/devusb.c - 664 sys sys 1105193103 18364
 sys/src/9/pc/devvga.c - 664 sys sys 1063857412 8714
 sys/src/9/pc/devvga.c - 664 sys sys 1063857412 8714
 sys/src/9/pc/dma.c - 664 sys sys 1015014515 4736
 sys/src/9/pc/dma.c - 664 sys sys 1015014515 4736
-sys/src/9/pc/errstr.h - 664 sys sys 1119276286 2144
 sys/src/9/pc/ether2000.c - 664 sys sys 1089299187 4819
 sys/src/9/pc/ether2000.c - 664 sys sys 1089299187 4819
 sys/src/9/pc/ether2114x.c - 664 sys sys 1081706476 41545
 sys/src/9/pc/ether2114x.c - 664 sys sys 1081706476 41545
 sys/src/9/pc/ether589.c - 664 sys sys 1015014516 4644
 sys/src/9/pc/ether589.c - 664 sys sys 1015014516 4644
@@ -7967,7 +7965,7 @@ sys/src/9/pc/main.c - 664 sys sys 1121858827 14693
 sys/src/9/pc/mem.h - 664 sys sys 1018553448 4573
 sys/src/9/pc/mem.h - 664 sys sys 1018553448 4573
 sys/src/9/pc/memory.c - 664 sys sys 1071245460 13028
 sys/src/9/pc/memory.c - 664 sys sys 1071245460 13028
 sys/src/9/pc/mkfile - 664 sys sys 1067810339 3219
 sys/src/9/pc/mkfile - 664 sys sys 1067810339 3219
-sys/src/9/pc/mmu.c - 664 sys sys 1123438210 10452
+sys/src/9/pc/mmu.c - 664 sys sys 1123645071 10456
 sys/src/9/pc/mouse.c - 664 sys sys 1098479254 7057
 sys/src/9/pc/mouse.c - 664 sys sys 1098479254 7057
 sys/src/9/pc/mp.c - 664 sys sys 1123637234 17024
 sys/src/9/pc/mp.c - 664 sys sys 1123637234 17024
 sys/src/9/pc/mp.h - 664 sys sys 1015014520 6575
 sys/src/9/pc/mp.h - 664 sys sys 1015014520 6575
@@ -8034,10 +8032,10 @@ sys/src/9/pc/wavelan.h - 664 sys sys 1107448246 6169
 sys/src/9/port - 20000000775 sys sys 1018469625 0
 sys/src/9/port - 20000000775 sys sys 1018469625 0
 sys/src/9/port/alarm.c - 664 sys sys 1067722766 1426
 sys/src/9/port/alarm.c - 664 sys sys 1067722766 1426
 sys/src/9/port/alloc.c - 664 sys sys 1102093389 5645
 sys/src/9/port/alloc.c - 664 sys sys 1102093389 5645
-sys/src/9/port/allocb.c - 664 sys sys 1067722759 3200
-sys/src/9/port/auth.c - 664 sys sys 1055688251 2308
+sys/src/9/port/allocb.c - 664 sys sys 1123676437 3340
+sys/src/9/port/auth.c - 664 sys sys 1123647282 2392
 sys/src/9/port/cache.c - 664 sys sys 1055688274 9241
 sys/src/9/port/cache.c - 664 sys sys 1055688274 9241
-sys/src/9/port/chan.c - 664 sys sys 1072704672 29140
+sys/src/9/port/chan.c - 664 sys sys 1123647283 29928
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 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/debugalloc.c - 664 sys sys 1014931171 10402
 sys/src/9/port/dev.c - 664 sys sys 1077896125 8247
 sys/src/9/port/dev.c - 664 sys sys 1077896125 8247
@@ -8097,7 +8095,7 @@ sys/src/9/port/parse.c - 664 sys sys 1014931177 2026
 sys/src/9/port/pgrp.c - 664 sys sys 1072704671 3940
 sys/src/9/port/pgrp.c - 664 sys sys 1072704671 3940
 sys/src/9/port/portclock.c - 664 sys sys 1102093397 4556
 sys/src/9/port/portclock.c - 664 sys sys 1102093397 4556
 sys/src/9/port/portdat.h - 664 sys sys 1109541435 22233
 sys/src/9/port/portdat.h - 664 sys sys 1109541435 22233
-sys/src/9/port/portfns.h - 664 sys sys 1111851541 10943
+sys/src/9/port/portfns.h - 664 sys sys 1123647283 10976
 sys/src/9/port/portmkfile - 664 sys sys 1109202242 2043
 sys/src/9/port/portmkfile - 664 sys sys 1109202242 2043
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/print.c - 664 sys sys 1014931178 227
 sys/src/9/port/proc.c - 664 sys sys 1099760501 28207
 sys/src/9/port/proc.c - 664 sys sys 1099760501 28207
@@ -8108,8 +8106,8 @@ sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
 sys/src/9/port/sd.h - 664 sys sys 1098546338 2348
 sys/src/9/port/sd.h - 664 sys sys 1098546338 2348
 sys/src/9/port/segment.c - 664 sys sys 1121259584 13761
 sys/src/9/port/segment.c - 664 sys sys 1121259584 13761
 sys/src/9/port/swap.c - 664 sys sys 1055688551 6980
 sys/src/9/port/swap.c - 664 sys sys 1055688551 6980
-sys/src/9/port/sysfile.c - 664 sys sys 1100363052 22146
-sys/src/9/port/sysproc.c - 664 sys sys 1123438659 15118
+sys/src/9/port/sysfile.c - 664 sys sys 1123647282 22249
+sys/src/9/port/sysproc.c - 664 sys sys 1123645064 15114
 sys/src/9/port/systab.h - 664 sys sys 1062721698 3044
 sys/src/9/port/systab.h - 664 sys sys 1062721698 3044
 sys/src/9/port/taslock.c - 664 sys sys 1084475129 3658
 sys/src/9/port/taslock.c - 664 sys sys 1084475129 3658
 sys/src/9/port/thwack.c - 664 sys sys 1057323394 7253
 sys/src/9/port/thwack.c - 664 sys sys 1057323394 7253
@@ -8126,7 +8124,6 @@ sys/src/9/ppc/devether.c - 664 sys sys 1116097817 9264
 sys/src/9/ppc/devflash.c - 664 sys sys 1059490750 19885
 sys/src/9/ppc/devflash.c - 664 sys sys 1059490750 19885
 sys/src/9/ppc/devirq.c - 664 sys sys 1100701675 6314
 sys/src/9/ppc/devirq.c - 664 sys sys 1100701675 6314
 sys/src/9/ppc/devtls.c - 664 sys sys 1059490751 43721
 sys/src/9/ppc/devtls.c - 664 sys sys 1059490751 43721
-sys/src/9/ppc/errstr.h - 664 sys sys 1059490751 2137
 sys/src/9/ppc/etherfcc.c - 664 sys sys 1100701674 19690
 sys/src/9/ppc/etherfcc.c - 664 sys sys 1100701674 19690
 sys/src/9/ppc/etherif.h - 664 sys sys 1059490751 785
 sys/src/9/ppc/etherif.h - 664 sys sys 1059490751 785
 sys/src/9/ppc/ethersaturn.c - 664 sys sys 1059490751 4321
 sys/src/9/ppc/ethersaturn.c - 664 sys sys 1059490751 4321
@@ -9782,7 +9779,7 @@ sys/src/cmd/cpp/mkfile - 664 sys sys 944960879 178
 sys/src/cmd/cpp/nlist.c - 664 sys sys 1116770041 4645
 sys/src/cmd/cpp/nlist.c - 664 sys sys 1116770041 4645
 sys/src/cmd/cpp/test.c - 664 sys sys 944960879 47
 sys/src/cmd/cpp/test.c - 664 sys sys 944960879 47
 sys/src/cmd/cpp/tokens.c - 664 sys sys 944960879 6755
 sys/src/cmd/cpp/tokens.c - 664 sys sys 944960879 6755
-sys/src/cmd/cpu.c - 664 sys sys 1121977158 21112
+sys/src/cmd/cpu.c - 664 sys sys 1123676384 21128
 sys/src/cmd/crop.c - 664 sys sys 1039753034 4136
 sys/src/cmd/crop.c - 664 sys sys 1039753034 4136
 sys/src/cmd/date.c - 664 sys sys 944961351 449
 sys/src/cmd/date.c - 664 sys sys 944961351 449
 sys/src/cmd/db - 20000000775 sys sys 988249965 0
 sys/src/cmd/db - 20000000775 sys sys 988249965 0
@@ -12204,7 +12201,7 @@ sys/src/cmd/mk/job.c - 664 sys sys 944961025 692
 sys/src/cmd/mk/lex.c - 664 sys sys 944961025 2315
 sys/src/cmd/mk/lex.c - 664 sys sys 944961025 2315
 sys/src/cmd/mk/main.c - 664 sys sys 1123094366 4790
 sys/src/cmd/mk/main.c - 664 sys sys 1123094366 4790
 sys/src/cmd/mk/match.c - 664 sys sys 1014926073 856
 sys/src/cmd/mk/match.c - 664 sys sys 1014926073 856
-sys/src/cmd/mk/mk.c - 664 sys sys 1014926073 5195
+sys/src/cmd/mk/mk.c - 664 sys sys 1123676387 5348
 sys/src/cmd/mk/mk.h - 664 sys sys 1055698812 3735
 sys/src/cmd/mk/mk.h - 664 sys sys 1055698812 3735
 sys/src/cmd/mk/mkconv - 775 sys sys 944961025 555
 sys/src/cmd/mk/mkconv - 775 sys sys 944961025 555
 sys/src/cmd/mk/mkfile - 664 sys sys 1055698812 376
 sys/src/cmd/mk/mkfile - 664 sys sys 1055698812 376

+ 18 - 0
dist/replica/plan9.log

@@ -20763,3 +20763,21 @@
 1123644725 1 c 386/bin/ndb/dnsdebug - 775 sys sys 1123643767 194702
 1123644725 1 c 386/bin/ndb/dnsdebug - 775 sys sys 1123643767 194702
 1123644725 2 c 386/bin/ndb/dnstcp - 775 sys sys 1123643767 193343
 1123644725 2 c 386/bin/ndb/dnstcp - 775 sys sys 1123643767 193343
 1123644725 3 a sys/man/8/gpsfs - 664 sys sys 1123643451 4924
 1123644725 3 a sys/man/8/gpsfs - 664 sys sys 1123643451 4924
+1123646526 0 c sys/src/9/pc/mmu.c - 664 sys sys 1123645071 10456
+1123646526 1 c sys/src/9/port/sysproc.c - 664 sys sys 1123645064 15114
+1123648324 0 c sys/src/9/port/auth.c - 664 sys sys 1123647282 2392
+1123648324 1 c sys/src/9/port/chan.c - 664 sys sys 1123647283 29928
+1123648324 2 c sys/src/9/port/portfns.h - 664 sys sys 1123647283 10976
+1123648324 3 c sys/src/9/port/sysfile.c - 664 sys sys 1123647282 22249
+1123677133 0 c sys/man/2/control - 664 sys sys 1123676381 42778
+1123677133 1 c sys/src/9/port/allocb.c - 664 sys sys 1123676437 3340
+1123677133 2 c sys/src/cmd/mk/mk.c - 664 sys sys 1123676387 5348
+1123677133 3 c sys/src/cmd/cpu.c - 664 sys sys 1123676384 21128
+1123677133 4 d sys/src/9/ppc/errstr.h - 664 sys sys 1059490751 0
+1123677133 5 d sys/src/9/pc/errstr.h - 664 sys sys 1119276286 0
+1123677133 6 d sys/src/9/mtx/errstr.h - 664 sys sys 1089390059 0
+1123700537 0 c sys/lib/yaccpar - 664 sys sys 1123699615 4588
+1123700537 1 c sys/lib/yaccpars - 664 sys sys 1123699616 4596
+1123731145 0 c 386/bin/cpu - 775 sys sys 1123729447 138028
+1123731145 1 c 386/bin/mk - 775 sys sys 1123729447 144048
+1123731145 2 c sys/games/lib/fortunes - 664 sys sys 1123730222 254387

+ 3 - 0
sys/games/lib/fortunes

@@ -4069,3 +4069,6 @@ i hate all sorts of zealots  - boyd
 /* Watch the brackets - even Ken and Dennis get some language design wrong */
 /* Watch the brackets - even Ken and Dennis get some language design wrong */
 Not related to the portable reciprocating power saw trademark of the Milwaukee Electric Tool Corporation.
 Not related to the portable reciprocating power saw trademark of the Milwaukee Electric Tool Corporation.
 GNU C++ does not support old-style function definitions, so this extension is irrelevant.
 GNU C++ does not support old-style function definitions, so this extension is irrelevant.
+Here we have twenty-eight letters.
+Here we have twenty-six letters.
+Even if you could revive someone who has died, you haven't really done anything that deals with that person's central problem, which is sin.

+ 2 - 2
sys/lib/yaccpar

@@ -21,7 +21,7 @@ extern	int	sprint(char*, char*, ...);
 char*
 char*
 yytokname(int yyc)
 yytokname(int yyc)
 {
 {
-	static char x[10];
+	static char x[16];
 
 
 	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
 	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
 	if(yytoknames[yyc-1])
 	if(yytoknames[yyc-1])
@@ -33,7 +33,7 @@ yytokname(int yyc)
 char*
 char*
 yystatname(int yys)
 yystatname(int yys)
 {
 {
-	static char x[10];
+	static char x[16];
 
 
 	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
 	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
 	if(yystates[yys])
 	if(yystates[yys])

+ 2 - 2
sys/lib/yaccpars

@@ -21,7 +21,7 @@ int	yyerrflag = 0;		/* error recovery flag */
 char*
 char*
 yytokname(int yyc)
 yytokname(int yyc)
 {
 {
-	static char x[10];
+	static char x[16];
 
 
 	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
 	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
 	if(yytoknames[yyc-1])
 	if(yytoknames[yyc-1])
@@ -33,7 +33,7 @@ yytokname(int yyc)
 char*
 char*
 yystatname(int yys)
 yystatname(int yys)
 {
 {
-	static char x[10];
+	static char x[16];
 
 
 	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
 	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
 	if(yystates[yys])
 	if(yystates[yys])

+ 0 - 1
sys/man/2/control

@@ -1159,7 +1159,6 @@ Controls the left-right placement of the text in its rectangle.
 .BI reveal
 .BI reveal
 .TP
 .TP
 .BI size " minx miny maxx maxy
 .BI size " minx miny maxx maxy
-.TP
 Only the origin of the rectangle is significant; menus calculate the appropriate size.
 Only the origin of the rectangle is significant; menus calculate the appropriate size.
 .TP
 .TP
 .BI selectcolor " name
 .BI selectcolor " name

+ 0 - 51
sys/src/9/mtx/errstr.h

@@ -1,51 +0,0 @@
-char Enoerror[] = "no error";
-char Emount[] = "inconsistent mount";
-char Eunmount[] = "not mounted";
-char Eismtpt[] = "is a mount point";
-char Eunion[] = "not in union";
-char Emountrpc[] = "mount rpc error";
-char Eshutdown[] = "device shut down";
-char Enocreate[] = "mounted directory forbids creation";
-char Enonexist[] = "file does not exist";
-char Eexist[] = "file already exists";
-char Ebadsharp[] = "unknown device in # filename";
-char Enotdir[] = "not a directory";
-char Eisdir[] = "file is a directory";
-char Ebadchar[] = "bad character in file name";
-char Efilename[] = "file name syntax";
-char Eperm[] = "permission denied";
-char Ebadusefd[] = "inappropriate use of fd";
-char Ebadarg[] = "bad arg in system call";
-char Einuse[] = "device or object already in use";
-char Eio[] = "i/o error";
-char Etoobig[] = "read or write too large";
-char Etoosmall[] = "read or write too small";
-char Enoport[] = "network port not available";
-char Ehungup[] = "i/o on hungup channel";
-char Ebadctl[] = "bad process or channel control request";
-char Enodev[] = "no free devices";
-char Eprocdied[] = "process exited";
-char Enochild[] = "no living children";
-char Eioload[] = "i/o error in demand load";
-char Enovmem[] = "virtual memory allocation failed";
-char Ebadfd[] = "fd out of range or not open";
-char Enofd[] = "no free file descriptors";
-char Eisstream[] = "seek on a stream";
-char Ebadexec[] = "exec header invalid";
-char Etimedout[] = "connection timed out";
-char Econrefused[] = "connection refused";
-char Econinuse[] = "connection in use";
-char Eintr[] = "interrupted";
-char Enomem[] = "kernel allocate failed";
-char Enoswap[] = "swap space full";
-char Esoverlap[] = "segments overlap";
-char Emouseset[] = "mouse type already set";
-char Eshort[] = "i/o count too small";
-char Egreg[] = "ken has left the building";
-char Ebadspec[] = "bad attach specifier";
-char Enoreg[] = "process has no saved registers";
-char Enoattach[] = "mount/attach disallowed";
-char Eshortstat[] = "stat buffer too small";
-char Ebadstat[] = "malformed stat buffer";
-char Enegoff[] = "negative i/o offset";
-char Ecmdargs[] = "wrong #args in control message";

+ 0 - 51
sys/src/9/pc/errstr.h

@@ -1,51 +0,0 @@
-char Enoerror[] = "no error";
-char Emount[] = "inconsistent mount";
-char Eunmount[] = "not mounted";
-char Eismtpt[] = "is a mount point";
-char Eunion[] = "not in union";
-char Emountrpc[] = "mount rpc error";
-char Eshutdown[] = "device shut down";
-char Enocreate[] = "mounted directory forbids creation";
-char Enonexist[] = "file does not exist";
-char Eexist[] = "file already exists";
-char Ebadsharp[] = "unknown device in # filename";
-char Enotdir[] = "not a directory";
-char Eisdir[] = "file is a directory";
-char Ebadchar[] = "bad character in file name";
-char Efilename[] = "file name syntax";
-char Eperm[] = "permission denied";
-char Ebadusefd[] = "inappropriate use of fd";
-char Ebadarg[] = "bad arg in system call";
-char Einuse[] = "device or object already in use";
-char Eio[] = "i/o error";
-char Etoobig[] = "read or write too large";
-char Etoosmall[] = "read or write too small";
-char Enoport[] = "network port not available";
-char Ehungup[] = "i/o on hungup channel";
-char Ebadctl[] = "bad process or channel control request";
-char Enodev[] = "no free devices";
-char Eprocdied[] = "process exited";
-char Enochild[] = "no living children";
-char Eioload[] = "i/o error in demand load";
-char Enovmem[] = "virtual memory allocation failed";
-char Ebadfd[] = "fd out of range or not open";
-char Enofd[] = "no free file descriptors";
-char Eisstream[] = "seek on a stream";
-char Ebadexec[] = "exec header invalid";
-char Etimedout[] = "connection timed out";
-char Econrefused[] = "connection refused";
-char Econinuse[] = "connection in use";
-char Eintr[] = "interrupted";
-char Enomem[] = "kernel allocate failed";
-char Enoswap[] = "swap space full";
-char Esoverlap[] = "segments overlap";
-char Emouseset[] = "mouse type already set";
-char Eshort[] = "i/o count too small";
-char Egreg[] = "jmk added reentrancy for threads";
-char Ebadspec[] = "bad attach specifier";
-char Enoreg[] = "process has no saved registers";
-char Enoattach[] = "mount/attach disallowed";
-char Eshortstat[] = "stat buffer too small";
-char Ebadstat[] = "malformed stat buffer";
-char Enegoff[] = "negative i/o offset";
-char Ecmdargs[] = "wrong #args in control message";

+ 14 - 4
sys/src/9/port/allocb.c

@@ -76,19 +76,29 @@ Block*
 iallocb(int size)
 iallocb(int size)
 {
 {
 	Block *b;
 	Block *b;
-	static int m1, m2;
+	static int m1, m2, mp;
 
 
 	if(ialloc.bytes > conf.ialloc){
 	if(ialloc.bytes > conf.ialloc){
-		if((m1++%10000)==0)
+		if((m1++%10000)==0){
+			if(mp++ > 1000){
+				active.exiting = 1;
+				exit(0);
+			}
 			iprint("iallocb: limited %lud/%lud\n",
 			iprint("iallocb: limited %lud/%lud\n",
 				ialloc.bytes, conf.ialloc);
 				ialloc.bytes, conf.ialloc);
-		return 0;
+		}
+		return nil;
 	}
 	}
 
 
 	if((b = _allocb(size)) == nil){
 	if((b = _allocb(size)) == nil){
-		if((m2++%10000)==0)
+		if((m2++%10000)==0){
+			if(mp++ > 1000){
+				active.exiting = 1;
+				exit(0);
+			}
 			iprint("iallocb: no memory %lud/%lud\n",
 			iprint("iallocb: no memory %lud/%lud\n",
 				ialloc.bytes, conf.ialloc);
 				ialloc.bytes, conf.ialloc);
+		}
 		return nil;
 		return nil;
 	}
 	}
 	setmalloctag(b, getcallerpc(&size));
 	setmalloctag(b, getcallerpc(&size));

+ 7 - 2
sys/src/9/port/auth.c

@@ -66,8 +66,11 @@ sysfauth(ulong *arg)
 	int fd;
 	int fd;
 
 
 	validaddr(arg[1], 1, 0);
 	validaddr(arg[1], 1, 0);
-	aname = (char*)arg[1];
-	validname(aname, 1);
+	aname = validnamedup((char*)arg[1], 1);
+	if(waserror()){
+		free(aname);
+		nexterror();
+	}
 	c = fdtochan(arg[0], ORDWR, 0, 1);
 	c = fdtochan(arg[0], ORDWR, 0, 1);
 	if(waserror()){
 	if(waserror()){
 		cclose(c);
 		cclose(c);
@@ -78,6 +81,8 @@ sysfauth(ulong *arg)
 	/* at this point ac is responsible for keeping c alive */
 	/* at this point ac is responsible for keeping c alive */
 	cclose(c);
 	cclose(c);
 	poperror();	/* c */
 	poperror();	/* c */
+	free(aname);
+	poperror();	/* aname */
 
 
 	if(waserror()){
 	if(waserror()){
 		cclose(ac);
 		cclose(ac);

+ 43 - 7
sys/src/9/port/chan.c

@@ -1076,7 +1076,11 @@ namec(char *aname, int amode, int omode, ulong perm)
 	name = aname;
 	name = aname;
 	if(name[0] == '\0')
 	if(name[0] == '\0')
 		error("empty file name");
 		error("empty file name");
-	validname(name, 1);
+	name = validnamedup(name, 1);
+	if(waserror()){
+		free(name);
+		nexterror();
+	}
 
 
 	/*
 	/*
 	 * Find the starting off point (the current slash, the root of
 	 * Find the starting off point (the current slash, the root of
@@ -1376,8 +1380,6 @@ if(c->umh != nil){
 		panic("unknown namec access %d\n", amode);
 		panic("unknown namec access %d\n", amode);
 	}
 	}
 
 
-	poperror();
-
 	/* place final element in genbuf for e.g. exec */
 	/* place final element in genbuf for e.g. exec */
 	if(e.nelems > 0)
 	if(e.nelems > 0)
 		kstrcpy(up->genbuf, e.elems[e.nelems-1], sizeof up->genbuf);
 		kstrcpy(up->genbuf, e.elems[e.nelems-1], sizeof up->genbuf);
@@ -1386,6 +1388,9 @@ if(c->umh != nil){
 	free(e.name);
 	free(e.name);
 	free(e.elems);
 	free(e.elems);
 	free(e.off);
 	free(e.off);
+	poperror();	/* e c */
+	free(name);
+	poperror();	/* name */
 
 
 	return c;
 	return c;
 }
 }
@@ -1419,17 +1424,24 @@ char isfrog[256]={
  * routine works for kernel and user memory both.
  * routine works for kernel and user memory both.
  * The parameter slashok flags whether a slash character is an error
  * The parameter slashok flags whether a slash character is an error
  * or a valid character.
  * or a valid character.
+ *
+ * The parameter dup flags whether the string should be copied
+ * out of user space before being scanned the second time.
+ * (Otherwise a malicious thread could remove the NUL, causing us
+ * to access unchecked addresses.) 
  */
  */
-void
-validname(char *aname, int slashok)
+static char*
+validname0(char *aname, int slashok, int dup, ulong pc)
 {
 {
-	char *p, *ename, *name;
+	char *p, *ename, *name, *s;
 	uint t;
 	uint t;
-	int c;
+	int c, n;
 	Rune r;
 	Rune r;
 
 
 	name = aname;
 	name = aname;
 	if(((ulong)name & KZERO) != KZERO) {
 	if(((ulong)name & KZERO) != KZERO) {
+		if(!dup)
+			print("warning: validname called from %lux with user pointer", pc);
 		p = name;
 		p = name;
 		t = BY2PG-((ulong)p&(BY2PG-1));
 		t = BY2PG-((ulong)p&(BY2PG-1));
 		while((ename=vmemchr(p, 0, t)) == nil) {
 		while((ename=vmemchr(p, 0, t)) == nil) {
@@ -1442,6 +1454,16 @@ validname(char *aname, int slashok)
 	if(ename==nil || ename-name>=(1<<16))
 	if(ename==nil || ename-name>=(1<<16))
 		error("name too long");
 		error("name too long");
 
 
+	s = nil;
+	if(dup){
+		n = ename-name;
+		s = smalloc(n+1);
+		memmove(s, name, n);
+		s[n] = 0;
+		aname = s;
+		name = s;
+	}
+	
 	while(*name){
 	while(*name){
 		/* all characters above '~' are ok */
 		/* all characters above '~' are ok */
 		c = *(uchar*)name;
 		c = *(uchar*)name;
@@ -1451,11 +1473,25 @@ validname(char *aname, int slashok)
 			if(isfrog[c])
 			if(isfrog[c])
 				if(!slashok || c!='/'){
 				if(!slashok || c!='/'){
 					snprint(up->genbuf, sizeof(up->genbuf), "%s: %q", Ebadchar, aname);
 					snprint(up->genbuf, sizeof(up->genbuf), "%s: %q", Ebadchar, aname);
+					free(s);
 					error(up->genbuf);
 					error(up->genbuf);
 			}
 			}
 			name++;
 			name++;
 		}
 		}
 	}
 	}
+	return s;
+}
+
+void
+validname(char *aname, int slashok)
+{
+	validname0(aname, slashok, 0, getcallerpc(&aname));
+}
+
+char*
+validnamedup(char *aname, int slashok)
+{
+	return validname0(aname, slashok, 1, 0);
 }
 }
 
 
 void
 void

+ 1 - 0
sys/src/9/port/portfns.h

@@ -353,6 +353,7 @@ ulong		userpc(void);
 long		userwrite(char*, int);
 long		userwrite(char*, int);
 void		validaddr(ulong, ulong, int);
 void		validaddr(ulong, ulong, int);
 void		validname(char*, int);
 void		validname(char*, int);
+char*		validnamedup(char*, int);
 void		validstat(uchar*, int);
 void		validstat(uchar*, int);
 void*		vmemchr(void*, int, int);
 void*		vmemchr(void*, int, int);
 Proc*		wakeup(Rendez*);
 Proc*		wakeup(Rendez*);

+ 8 - 2
sys/src/9/port/sysfile.c

@@ -1029,13 +1029,19 @@ bindmount(int ismount, int fd, int afd, char* arg0, char* arg1, ulong flag, char
 		bogus.spec = spec;
 		bogus.spec = spec;
 		if(waserror())
 		if(waserror())
 			error(Ebadspec);
 			error(Ebadspec);
-		validname(spec, 1);
+		spec = validnamedup(spec, 1);
 		poperror();
 		poperror();
+		
+		if(waserror()){
+			free(spec);
+			nexterror();
+		}
 
 
 		ret = devno('M', 0);
 		ret = devno('M', 0);
 		c0 = devtab[ret]->attach((char*)&bogus);
 		c0 = devtab[ret]->attach((char*)&bogus);
 
 
-		poperror();
+		poperror();	/* spec */
+		poperror();	/* ac bc */
 		if(ac)
 		if(ac)
 			cclose(ac);
 			cclose(ac);
 		cclose(bc);
 		cclose(bc);

+ 0 - 51
sys/src/9/ppc/errstr.h

@@ -1,51 +0,0 @@
-char Enoerror[] = "no error";
-char Emount[] = "inconsistent mount";
-char Eunmount[] = "not mounted";
-char Eismtpt[] = "is a mount point";
-char Eunion[] = "not in union";
-char Emountrpc[] = "mount rpc error";
-char Eshutdown[] = "device shut down";
-char Enocreate[] = "mounted directory forbids creation";
-char Enonexist[] = "file does not exist";
-char Eexist[] = "file already exists";
-char Ebadsharp[] = "unknown device in # filename";
-char Enotdir[] = "not a directory";
-char Eisdir[] = "file is a directory";
-char Ebadchar[] = "bad character in file name";
-char Efilename[] = "file name syntax";
-char Eperm[] = "permission denied";
-char Ebadusefd[] = "inappropriate use of fd";
-char Ebadarg[] = "bad arg in system call";
-char Einuse[] = "device or object already in use";
-char Eio[] = "i/o error";
-char Etoobig[] = "read or write too large";
-char Etoosmall[] = "read or write too small";
-char Enoport[] = "network port not available";
-char Ehungup[] = "i/o on hungup channel";
-char Ebadctl[] = "bad process or channel control request";
-char Enodev[] = "no free devices";
-char Eprocdied[] = "process exited";
-char Enochild[] = "no living children";
-char Eioload[] = "i/o error in demand load";
-char Enovmem[] = "virtual memory allocation failed";
-char Ebadfd[] = "fd out of range or not open";
-char Enofd[] = "no free file descriptors";
-char Eisstream[] = "seek on a stream";
-char Ebadexec[] = "exec header invalid";
-char Etimedout[] = "connection timed out";
-char Econrefused[] = "connection refused";
-char Econinuse[] = "connection in use";
-char Eintr[] = "interrupted";
-char Enomem[] = "kernel allocate failed";
-char Enoswap[] = "swap space full";
-char Esoverlap[] = "segments overlap";
-char Emouseset[] = "mouse type already set";
-char Eshort[] = "i/o count too small";
-char Egreg[] = "ken has left the building";
-char Ebadspec[] = "bad attach specifier";
-char Enoreg[] = "process has no saved registers";
-char Enoattach[] = "mount/attach disallowed";
-char Eshortstat[] = "stat buffer too small";
-char Ebadstat[] = "malformed stat buffer";
-char Enegoff[] = "negative i/o offset";
-char Ecmdargs[] = "wrong #args in control message";

+ 2 - 1
sys/src/cmd/cpu.c

@@ -1148,5 +1148,6 @@ lclnoteproc(int netfd)
 
 
 	if(w == nil)
 	if(w == nil)
 		exits(nil);
 		exits(nil);
-	exits(w->msg);
+	exits(0);
+/*	exits(w->msg); */
 }
 }

+ 7 - 2
sys/src/cmd/mk/mk.c

@@ -221,10 +221,15 @@ outofdate(Node *node, Arc *arc, int eval)
 			else
 			else
 				symlook(str, S_OUTOFDATE, (void *)ret);
 				symlook(str, S_OUTOFDATE, (void *)ret);
 		} else
 		} else
-			ret = (int)sym->value;
+			ret = (int)(uintptr)sym->value;
 		return(ret-1);
 		return(ret-1);
 	} else if(strchr(arc->n->name, '(') && arc->n->time == 0)  /* missing archive member */
 	} else if(strchr(arc->n->name, '(') && arc->n->time == 0)  /* missing archive member */
 		return 1;
 		return 1;
 	else
 	else
-		return node->time < arc->n->time;
+		/*
+		 * Treat equal times as out-of-date.
+		 * It's a race, and the safer option is to do
+		 * extra building rather than not enough.
+	 	 */
+		return node->time <= arc->n->time;
 }
 }