Browse Source

Plan 9 from Bell Labs 2007-10-05

David du Colombier 16 years ago
parent
commit
a9ad16818b

+ 18 - 22
dist/replica/_plan9.db

@@ -1,6 +1,6 @@
 386 - 20000000775 sys sys 1010957353 0
 386 - 20000000775 sys sys 1010957353 0
 386/9load - 775 sys sys 1186619808 326380
 386/9load - 775 sys sys 1186619808 326380
-386/9loaddebug - 775 sys sys 1190923617 435057
+386/9loaddebug - 775 sys sys 1191469884 435027
 386/9loadlite - 775 sys sys 1186619809 149672
 386/9loadlite - 775 sys sys 1186619809 149672
 386/9loadlitedebug - 775 sys sys 1190923620 220555
 386/9loadlitedebug - 775 sys sys 1190923620 220555
 386/9pc - 775 sys sys 1189053434 2038499
 386/9pc - 775 sys sys 1189053434 2038499
@@ -55,7 +55,6 @@
 386/bin/auth/factotum - 775 sys sys 1188446836 321587
 386/bin/auth/factotum - 775 sys sys 1188446836 321587
 386/bin/auth/fgui - 775 sys sys 1184731229 219079
 386/bin/auth/fgui - 775 sys sys 1184731229 219079
 386/bin/auth/guard.srv - 775 sys sys 1188446841 144638
 386/bin/auth/guard.srv - 775 sys sys 1188446841 144638
-386/bin/auth/iam - 775 sys sys 1085076981 50791
 386/bin/auth/keyfs - 775 sys sys 1191035876 116576
 386/bin/auth/keyfs - 775 sys sys 1191035876 116576
 386/bin/auth/login - 775 sys sys 1179372070 104816
 386/bin/auth/login - 775 sys sys 1179372070 104816
 386/bin/auth/newns - 775 sys sys 1179372070 90035
 386/bin/auth/newns - 775 sys sys 1179372070 90035
@@ -147,7 +146,6 @@
 386/bin/aux/timesync - 775 sys sys 1179372078 128466
 386/bin/aux/timesync - 775 sys sys 1179372078 128466
 386/bin/aux/tr2post - 775 sys sys 1104121987 176578
 386/bin/aux/tr2post - 775 sys sys 1104121987 176578
 386/bin/aux/trampoline - 775 sys sys 1178568259 82677
 386/bin/aux/trampoline - 775 sys sys 1178568259 82677
-386/bin/aux/typepasswd - 775 sys sys 1168402288 69738
 386/bin/aux/usage - 775 sys sys 1168402288 59809
 386/bin/aux/usage - 775 sys sys 1168402288 59809
 386/bin/aux/vga - 775 sys sys 1182482483 334774
 386/bin/aux/vga - 775 sys sys 1182482483 334774
 386/bin/aux/vmmousepoll - 775 sys sys 1032480572 41434
 386/bin/aux/vmmousepoll - 775 sys sys 1032480572 41434
@@ -231,7 +229,7 @@
 386/bin/faces - 775 sys sys 1181507266 193265
 386/bin/faces - 775 sys sys 1181507266 193265
 386/bin/factor - 775 sys sys 1168402307 61699
 386/bin/factor - 775 sys sys 1168402307 61699
 386/bin/fcp - 775 sys sys 1168402307 82433
 386/bin/fcp - 775 sys sys 1168402307 82433
-386/bin/file - 775 sys sys 1188530150 128160
+386/bin/file - 775 sys sys 1191528973 128646
 386/bin/fmt - 775 sys sys 1168402307 65567
 386/bin/fmt - 775 sys sys 1168402307 65567
 386/bin/fortune - 775 sys sys 1168402308 67356
 386/bin/fortune - 775 sys sys 1168402308 67356
 386/bin/fossil - 20000000775 sys sys 1042005470 0
 386/bin/fossil - 20000000775 sys sys 1042005470 0
@@ -7432,7 +7430,7 @@ sys/man/1/nm - 664 sys sys 1148106943 1601
 sys/man/1/ns - 664 sys sys 1163208505 895
 sys/man/1/ns - 664 sys sys 1163208505 895
 sys/man/1/p - 664 sys sys 944959673 504
 sys/man/1/p - 664 sys sys 944959673 504
 sys/man/1/page - 664 sys sys 1087829646 5839
 sys/man/1/page - 664 sys sys 1087829646 5839
-sys/man/1/passwd - 664 sys sys 1181277007 1532
+sys/man/1/passwd - 664 sys sys 1191473503 1543
 sys/man/1/patch - 664 sys sys 1190830651 2566
 sys/man/1/patch - 664 sys sys 1190830651 2566
 sys/man/1/pcc - 664 sys sys 1015024740 3478
 sys/man/1/pcc - 664 sys sys 1015024740 3478
 sys/man/1/pic - 664 sys sys 1022625353 8229
 sys/man/1/pic - 664 sys sys 1022625353 8229
@@ -7684,7 +7682,7 @@ sys/man/3/pnp - 664 sys sys 1088560895 4547
 sys/man/3/proc - 664 sys sys 1138458595 12062
 sys/man/3/proc - 664 sys sys 1138458595 12062
 sys/man/3/root - 664 sys sys 1046958450 632
 sys/man/3/root - 664 sys sys 1046958450 632
 sys/man/3/rtc - 664 sys sys 954378857 667
 sys/man/3/rtc - 664 sys sys 954378857 667
-sys/man/3/sd - 664 sys sys 1176502187 5678
+sys/man/3/sd - 664 sys sys 1191480432 5659
 sys/man/3/sdaoe - 664 sys sys 1186965881 1320
 sys/man/3/sdaoe - 664 sys sys 1186965881 1320
 sys/man/3/segment - 664 sys sys 1017423721 2378
 sys/man/3/segment - 664 sys sys 1017423721 2378
 sys/man/3/srv - 664 sys sys 958419690 1470
 sys/man/3/srv - 664 sys sys 958419690 1470
@@ -7808,7 +7806,7 @@ sys/man/8/INDEX.html - 664 sys sys 1183240488 8619
 sys/man/8/aan - 664 sys sys 1045501064 1670
 sys/man/8/aan - 664 sys sys 1045501064 1670
 sys/man/8/aliasmail - 664 sys sys 1170818958 1350
 sys/man/8/aliasmail - 664 sys sys 1170818958 1350
 sys/man/8/apm - 664 sys sys 1017679308 1811
 sys/man/8/apm - 664 sys sys 1017679308 1811
-sys/man/8/auth - 664 sys sys 1183580530 4981
+sys/man/8/auth - 664 sys sys 1191472798 4996
 sys/man/8/boot - 664 sys sys 1188515985 8331
 sys/man/8/boot - 664 sys sys 1188515985 8331
 sys/man/8/booting - 664 sys sys 1015024984 4136
 sys/man/8/booting - 664 sys sys 1015024984 4136
 sys/man/8/cpurc - 664 sys sys 1187227584 1522
 sys/man/8/cpurc - 664 sys sys 1187227584 1522
@@ -7837,7 +7835,7 @@ sys/man/8/mouse - 664 sys sys 971455511 2476
 sys/man/8/na - 664 sys sys 958527089 859
 sys/man/8/na - 664 sys sys 958527089 859
 sys/man/8/ndb - 664 sys sys 1188515390 14031
 sys/man/8/ndb - 664 sys sys 1188515390 14031
 sys/man/8/newuser - 664 sys sys 1116954242 2418
 sys/man/8/newuser - 664 sys sys 1116954242 2418
-sys/man/8/nfsserver - 664 sys sys 1163208425 3587
+sys/man/8/nfsserver - 664 sys sys 1191524525 3576
 sys/man/8/pcmcia - 664 sys sys 944959679 408
 sys/man/8/pcmcia - 664 sys sys 944959679 408
 sys/man/8/pem - 664 sys sys 1060263669 1189
 sys/man/8/pem - 664 sys sys 1060263669 1189
 sys/man/8/ping - 664 sys sys 1169105315 3650
 sys/man/8/ping - 664 sys sys 1169105315 3650
@@ -8048,7 +8046,7 @@ sys/src/9/mtx/trap.c - 664 sys sys 1105030157 15882
 sys/src/9/mtx/uarti8250.c - 664 sys sys 1018721288 11590
 sys/src/9/mtx/uarti8250.c - 664 sys sys 1018721288 11590
 sys/src/9/pc - 20000000775 sys sys 1161233143 0
 sys/src/9/pc - 20000000775 sys sys 1161233143 0
 sys/src/9/pc/a100p.cp - 444 sys sys 1159735144 21984
 sys/src/9/pc/a100p.cp - 444 sys sys 1159735144 21984
-sys/src/9/pc/ahci.h - 664 sys sys 1186366009 6314
+sys/src/9/pc/ahci.h - 664 sys sys 1191538081 6316
 sys/src/9/pc/apbootstrap.s - 664 sys sys 1131293655 3037
 sys/src/9/pc/apbootstrap.s - 664 sys sys 1131293655 3037
 sys/src/9/pc/apic.c - 664 sys sys 1174415344 8991
 sys/src/9/pc/apic.c - 664 sys sys 1174415344 8991
 sys/src/9/pc/apm.c - 664 sys sys 1131290210 3723
 sys/src/9/pc/apm.c - 664 sys sys 1131290210 3723
@@ -8132,7 +8130,7 @@ sys/src/9/pc/pcf - 664 sys sys 1181616886 1582
 sys/src/9/pc/pcfl - 664 sys sys 1188582378 1579
 sys/src/9/pc/pcfl - 664 sys sys 1188582378 1579
 sys/src/9/pc/pcflop - 664 sys sys 1190853787 1540
 sys/src/9/pc/pcflop - 664 sys sys 1190853787 1540
 sys/src/9/pc/pci.c - 664 sys sys 1185452613 29418
 sys/src/9/pc/pci.c - 664 sys sys 1185452613 29418
-sys/src/9/pc/pcmciamodem.c - 664 sys sys 1099761153 1586
+sys/src/9/pc/pcmciamodem.c - 664 sys sys 1191476436 1591
 sys/src/9/pc/pcmkfile - 664 sys sys 1109303822 101
 sys/src/9/pc/pcmkfile - 664 sys sys 1109303822 101
 sys/src/9/pc/piix4smbus.c - 664 sys sys 1184467714 5324
 sys/src/9/pc/piix4smbus.c - 664 sys sys 1184467714 5324
 sys/src/9/pc/plan9l.s - 664 sys sys 1015014521 910
 sys/src/9/pc/plan9l.s - 664 sys sys 1015014521 910
@@ -8146,7 +8144,7 @@ sys/src/9/pc/screen.h - 664 sys sys 1147023549 4256
 sys/src/9/pc/sd53c8xx.c - 664 sys sys 1170456695 55276
 sys/src/9/pc/sd53c8xx.c - 664 sys sys 1170456695 55276
 sys/src/9/pc/sd53c8xx.i - 664 sys sys 1128547230 28453
 sys/src/9/pc/sd53c8xx.i - 664 sys sys 1128547230 28453
 sys/src/9/pc/sd53c8xx.n - 664 sys sys 1131290556 12657
 sys/src/9/pc/sd53c8xx.n - 664 sys sys 1131290556 12657
-sys/src/9/pc/sd63xxesb.c - 664 sys sys 1190313935 36207
+sys/src/9/pc/sd63xxesb.c - 664 sys sys 1191481587 36230
 sys/src/9/pc/sdata.c - 664 sys sys 1186361525 52991
 sys/src/9/pc/sdata.c - 664 sys sys 1186361525 52991
 sys/src/9/pc/sdmv50xx.c - 664 sys sys 1184467229 33837
 sys/src/9/pc/sdmv50xx.c - 664 sys sys 1184467229 33837
 sys/src/9/pc/sdmylex.c - 664 sys sys 1189229947 28395
 sys/src/9/pc/sdmylex.c - 664 sys sys 1189229947 28395
@@ -9400,25 +9398,25 @@ sys/src/cmd/9660srv/xfile.c - 664 sys sys 1113742177 2736
 sys/src/cmd/9nfs - 20000000775 sys sys 1071498519 0
 sys/src/cmd/9nfs - 20000000775 sys sys 1071498519 0
 sys/src/cmd/9nfs/9auth.c - 664 sys sys 1017337812 1454
 sys/src/cmd/9nfs/9auth.c - 664 sys sys 1017337812 1454
 sys/src/cmd/9nfs/9p.c - 664 sys sys 1083772192 3365
 sys/src/cmd/9nfs/9p.c - 664 sys sys 1083772192 3365
-sys/src/cmd/9nfs/all.h - 664 sys sys 1017337813 322
+sys/src/cmd/9nfs/all.h - 664 sys sys 1191523800 338
 sys/src/cmd/9nfs/auth.c - 664 sys sys 1017337813 424
 sys/src/cmd/9nfs/auth.c - 664 sys sys 1017337813 424
 sys/src/cmd/9nfs/authhostowner.c - 664 sys sys 1071498519 4190
 sys/src/cmd/9nfs/authhostowner.c - 664 sys sys 1071498519 4190
 sys/src/cmd/9nfs/chat.c - 664 sys sys 1017337813 2096
 sys/src/cmd/9nfs/chat.c - 664 sys sys 1017337813 2096
-sys/src/cmd/9nfs/dat.h - 664 sys sys 1146061147 4432
+sys/src/cmd/9nfs/dat.h - 664 sys sys 1191523808 4510
 sys/src/cmd/9nfs/fns.h - 664 sys sys 1146061148 1927
 sys/src/cmd/9nfs/fns.h - 664 sys sys 1146061148 1927
 sys/src/cmd/9nfs/listalloc.c - 664 sys sys 1131657407 297
 sys/src/cmd/9nfs/listalloc.c - 664 sys sys 1131657407 297
 sys/src/cmd/9nfs/mkfile - 664 sys sys 1071498518 640
 sys/src/cmd/9nfs/mkfile - 664 sys sys 1071498518 640
-sys/src/cmd/9nfs/mport.c - 664 sys sys 1178482676 3749
+sys/src/cmd/9nfs/mport.c - 664 sys sys 1191523814 3720
 sys/src/cmd/9nfs/nametest.c - 664 sys sys 1015090372 1723
 sys/src/cmd/9nfs/nametest.c - 664 sys sys 1015090372 1723
 sys/src/cmd/9nfs/nfs.c - 664 sys sys 1131293679 9526
 sys/src/cmd/9nfs/nfs.c - 664 sys sys 1131293679 9526
 sys/src/cmd/9nfs/nfs.h - 664 sys sys 1015090372 642
 sys/src/cmd/9nfs/nfs.h - 664 sys sys 1015090372 642
-sys/src/cmd/9nfs/nfsmount.c - 664 sys sys 1182190701 6447
+sys/src/cmd/9nfs/nfsmount.c - 664 sys sys 1191523847 6447
 sys/src/cmd/9nfs/nfsserver.c - 664 sys sys 1146061148 15831
 sys/src/cmd/9nfs/nfsserver.c - 664 sys sys 1146061148 15831
 sys/src/cmd/9nfs/pcnfsd.c - 664 sys sys 1146061148 4068
 sys/src/cmd/9nfs/pcnfsd.c - 664 sys sys 1146061148 4068
-sys/src/cmd/9nfs/portmapper.c - 664 sys sys 1146061148 3273
-sys/src/cmd/9nfs/rpc.c - 664 sys sys 1017337815 5293
+sys/src/cmd/9nfs/portmapper.c - 664 sys sys 1191523856 3306
+sys/src/cmd/9nfs/rpc.c - 664 sys sys 1191523822 5647
 sys/src/cmd/9nfs/rpc.h - 664 sys sys 1017337815 1996
 sys/src/cmd/9nfs/rpc.h - 664 sys sys 1017337815 1996
-sys/src/cmd/9nfs/server.c - 664 sys sys 1178482676 11229
+sys/src/cmd/9nfs/server.c - 664 sys sys 1191523839 11320
 sys/src/cmd/9nfs/string.c - 664 sys sys 1017337815 1659
 sys/src/cmd/9nfs/string.c - 664 sys sys 1017337815 1659
 sys/src/cmd/9nfs/strparse.c - 664 sys sys 1015090373 506
 sys/src/cmd/9nfs/strparse.c - 664 sys sys 1015090373 506
 sys/src/cmd/9nfs/system.c - 664 sys sys 1017337815 437
 sys/src/cmd/9nfs/system.c - 664 sys sys 1017337815 437
@@ -9614,7 +9612,6 @@ sys/src/cmd/auth/factotum/sshrsa.c - 664 sys sys 1107633793 3416
 sys/src/cmd/auth/factotum/util.c - 664 sys sys 1182192267 18452
 sys/src/cmd/auth/factotum/util.c - 664 sys sys 1182192267 18452
 sys/src/cmd/auth/factotum/wep.c - 664 sys sys 1107706104 2140
 sys/src/cmd/auth/factotum/wep.c - 664 sys sys 1107706104 2140
 sys/src/cmd/auth/guard.srv.c - 664 sys sys 1172776773 2873
 sys/src/cmd/auth/guard.srv.c - 664 sys sys 1172776773 2873
-sys/src/cmd/auth/iam.c - 664 sys sys 1015008430 841
 sys/src/cmd/auth/keyfs.c - 664 sys sys 1191007186 19129
 sys/src/cmd/auth/keyfs.c - 664 sys sys 1191007186 19129
 sys/src/cmd/auth/lib - 20000000775 sys sys 1045504996 0
 sys/src/cmd/auth/lib - 20000000775 sys sys 1045504996 0
 sys/src/cmd/auth/lib/error.c - 664 sys sys 1155994850 318
 sys/src/cmd/auth/lib/error.c - 664 sys sys 1155994850 318
@@ -9788,7 +9785,7 @@ sys/src/cmd/aux/lines.c - 664 sys sys 1015008782 546
 sys/src/cmd/aux/lis - 775 sys sys 944960794 45
 sys/src/cmd/aux/lis - 775 sys sys 944960794 45
 sys/src/cmd/aux/listen.c - 664 sys sys 1181789265 9292
 sys/src/cmd/aux/listen.c - 664 sys sys 1181789265 9292
 sys/src/cmd/aux/listen1.c - 664 sys sys 1143759349 2005
 sys/src/cmd/aux/listen1.c - 664 sys sys 1143759349 2005
-sys/src/cmd/aux/mkfile - 664 sys sys 1147022848 1021
+sys/src/cmd/aux/mkfile - 664 sys sys 1191473306 1008
 sys/src/cmd/aux/mklatinkbd.c - 664 sys sys 953253425 3813
 sys/src/cmd/aux/mklatinkbd.c - 664 sys sys 953253425 3813
 sys/src/cmd/aux/mnihongo - 20000000775 sys sys 1039727550 0
 sys/src/cmd/aux/mnihongo - 20000000775 sys sys 1039727550 0
 sys/src/cmd/aux/mnihongo/README - 664 sys sys 944960789 475
 sys/src/cmd/aux/mnihongo/README - 664 sys sys 944960789 475
@@ -9814,7 +9811,6 @@ sys/src/cmd/aux/statusbar.c - 664 sys sys 1138460096 6066
 sys/src/cmd/aux/stub.c - 664 sys sys 1098196222 2723
 sys/src/cmd/aux/stub.c - 664 sys sys 1098196222 2723
 sys/src/cmd/aux/timesync.c - 664 sys sys 1178482886 25828
 sys/src/cmd/aux/timesync.c - 664 sys sys 1178482886 25828
 sys/src/cmd/aux/trampoline.c - 664 sys sys 1126104850 3790
 sys/src/cmd/aux/trampoline.c - 664 sys sys 1126104850 3790
-sys/src/cmd/aux/typepasswd.c - 664 sys sys 1143759348 1749
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
 sys/src/cmd/aux/usage.c - 664 sys sys 1139744276 1095
 sys/src/cmd/aux/usage.c - 664 sys sys 1139744276 1095
 sys/src/cmd/aux/vga - 20000000775 sys sys 1115734902 0
 sys/src/cmd/aux/vga - 20000000775 sys sys 1115734902 0
@@ -10350,7 +10346,7 @@ sys/src/cmd/fax/receiverc - 775 sys sys 944960990 581
 sys/src/cmd/fax/send.c - 664 sys sys 944960990 923
 sys/src/cmd/fax/send.c - 664 sys sys 944960990 923
 sys/src/cmd/fax/subr.c - 664 sys sys 1015090401 1245
 sys/src/cmd/fax/subr.c - 664 sys sys 1015090401 1245
 sys/src/cmd/fcp.c - 664 sys sys 1136651872 3799
 sys/src/cmd/fcp.c - 664 sys sys 1136651872 3799
-sys/src/cmd/file.c - 664 sys sys 1172764226 28088
+sys/src/cmd/file.c - 664 sys sys 1191472670 28522
 sys/src/cmd/fmt.c - 664 sys sys 1137603598 4078
 sys/src/cmd/fmt.c - 664 sys sys 1137603598 4078
 sys/src/cmd/fortune.c - 664 sys sys 1072729222 1779
 sys/src/cmd/fortune.c - 664 sys sys 1072729222 1779
 sys/src/cmd/fossil - 20000000775 sys sys 1087005595 0
 sys/src/cmd/fossil - 20000000775 sys sys 1087005595 0

+ 18 - 22
dist/replica/plan9.db

@@ -1,6 +1,6 @@
 386 - 20000000775 sys sys 1010957353 0
 386 - 20000000775 sys sys 1010957353 0
 386/9load - 775 sys sys 1186619808 326380
 386/9load - 775 sys sys 1186619808 326380
-386/9loaddebug - 775 sys sys 1190923617 435057
+386/9loaddebug - 775 sys sys 1191469884 435027
 386/9loadlite - 775 sys sys 1186619809 149672
 386/9loadlite - 775 sys sys 1186619809 149672
 386/9loadlitedebug - 775 sys sys 1190923620 220555
 386/9loadlitedebug - 775 sys sys 1190923620 220555
 386/9pc - 775 sys sys 1189053434 2038499
 386/9pc - 775 sys sys 1189053434 2038499
@@ -55,7 +55,6 @@
 386/bin/auth/factotum - 775 sys sys 1188446836 321587
 386/bin/auth/factotum - 775 sys sys 1188446836 321587
 386/bin/auth/fgui - 775 sys sys 1184731229 219079
 386/bin/auth/fgui - 775 sys sys 1184731229 219079
 386/bin/auth/guard.srv - 775 sys sys 1188446841 144638
 386/bin/auth/guard.srv - 775 sys sys 1188446841 144638
-386/bin/auth/iam - 775 sys sys 1085076981 50791
 386/bin/auth/keyfs - 775 sys sys 1191035876 116576
 386/bin/auth/keyfs - 775 sys sys 1191035876 116576
 386/bin/auth/login - 775 sys sys 1179372070 104816
 386/bin/auth/login - 775 sys sys 1179372070 104816
 386/bin/auth/newns - 775 sys sys 1179372070 90035
 386/bin/auth/newns - 775 sys sys 1179372070 90035
@@ -147,7 +146,6 @@
 386/bin/aux/timesync - 775 sys sys 1179372078 128466
 386/bin/aux/timesync - 775 sys sys 1179372078 128466
 386/bin/aux/tr2post - 775 sys sys 1104121987 176578
 386/bin/aux/tr2post - 775 sys sys 1104121987 176578
 386/bin/aux/trampoline - 775 sys sys 1178568259 82677
 386/bin/aux/trampoline - 775 sys sys 1178568259 82677
-386/bin/aux/typepasswd - 775 sys sys 1168402288 69738
 386/bin/aux/usage - 775 sys sys 1168402288 59809
 386/bin/aux/usage - 775 sys sys 1168402288 59809
 386/bin/aux/vga - 775 sys sys 1182482483 334774
 386/bin/aux/vga - 775 sys sys 1182482483 334774
 386/bin/aux/vmmousepoll - 775 sys sys 1032480572 41434
 386/bin/aux/vmmousepoll - 775 sys sys 1032480572 41434
@@ -231,7 +229,7 @@
 386/bin/faces - 775 sys sys 1181507266 193265
 386/bin/faces - 775 sys sys 1181507266 193265
 386/bin/factor - 775 sys sys 1168402307 61699
 386/bin/factor - 775 sys sys 1168402307 61699
 386/bin/fcp - 775 sys sys 1168402307 82433
 386/bin/fcp - 775 sys sys 1168402307 82433
-386/bin/file - 775 sys sys 1188530150 128160
+386/bin/file - 775 sys sys 1191528973 128646
 386/bin/fmt - 775 sys sys 1168402307 65567
 386/bin/fmt - 775 sys sys 1168402307 65567
 386/bin/fortune - 775 sys sys 1168402308 67356
 386/bin/fortune - 775 sys sys 1168402308 67356
 386/bin/fossil - 20000000775 sys sys 1042005470 0
 386/bin/fossil - 20000000775 sys sys 1042005470 0
@@ -7432,7 +7430,7 @@ sys/man/1/nm - 664 sys sys 1148106943 1601
 sys/man/1/ns - 664 sys sys 1163208505 895
 sys/man/1/ns - 664 sys sys 1163208505 895
 sys/man/1/p - 664 sys sys 944959673 504
 sys/man/1/p - 664 sys sys 944959673 504
 sys/man/1/page - 664 sys sys 1087829646 5839
 sys/man/1/page - 664 sys sys 1087829646 5839
-sys/man/1/passwd - 664 sys sys 1181277007 1532
+sys/man/1/passwd - 664 sys sys 1191473503 1543
 sys/man/1/patch - 664 sys sys 1190830651 2566
 sys/man/1/patch - 664 sys sys 1190830651 2566
 sys/man/1/pcc - 664 sys sys 1015024740 3478
 sys/man/1/pcc - 664 sys sys 1015024740 3478
 sys/man/1/pic - 664 sys sys 1022625353 8229
 sys/man/1/pic - 664 sys sys 1022625353 8229
@@ -7684,7 +7682,7 @@ sys/man/3/pnp - 664 sys sys 1088560895 4547
 sys/man/3/proc - 664 sys sys 1138458595 12062
 sys/man/3/proc - 664 sys sys 1138458595 12062
 sys/man/3/root - 664 sys sys 1046958450 632
 sys/man/3/root - 664 sys sys 1046958450 632
 sys/man/3/rtc - 664 sys sys 954378857 667
 sys/man/3/rtc - 664 sys sys 954378857 667
-sys/man/3/sd - 664 sys sys 1176502187 5678
+sys/man/3/sd - 664 sys sys 1191480432 5659
 sys/man/3/sdaoe - 664 sys sys 1186965881 1320
 sys/man/3/sdaoe - 664 sys sys 1186965881 1320
 sys/man/3/segment - 664 sys sys 1017423721 2378
 sys/man/3/segment - 664 sys sys 1017423721 2378
 sys/man/3/srv - 664 sys sys 958419690 1470
 sys/man/3/srv - 664 sys sys 958419690 1470
@@ -7808,7 +7806,7 @@ sys/man/8/INDEX.html - 664 sys sys 1183240488 8619
 sys/man/8/aan - 664 sys sys 1045501064 1670
 sys/man/8/aan - 664 sys sys 1045501064 1670
 sys/man/8/aliasmail - 664 sys sys 1170818958 1350
 sys/man/8/aliasmail - 664 sys sys 1170818958 1350
 sys/man/8/apm - 664 sys sys 1017679308 1811
 sys/man/8/apm - 664 sys sys 1017679308 1811
-sys/man/8/auth - 664 sys sys 1183580530 4981
+sys/man/8/auth - 664 sys sys 1191472798 4996
 sys/man/8/boot - 664 sys sys 1188515985 8331
 sys/man/8/boot - 664 sys sys 1188515985 8331
 sys/man/8/booting - 664 sys sys 1015024984 4136
 sys/man/8/booting - 664 sys sys 1015024984 4136
 sys/man/8/cpurc - 664 sys sys 1187227584 1522
 sys/man/8/cpurc - 664 sys sys 1187227584 1522
@@ -7837,7 +7835,7 @@ sys/man/8/mouse - 664 sys sys 971455511 2476
 sys/man/8/na - 664 sys sys 958527089 859
 sys/man/8/na - 664 sys sys 958527089 859
 sys/man/8/ndb - 664 sys sys 1188515390 14031
 sys/man/8/ndb - 664 sys sys 1188515390 14031
 sys/man/8/newuser - 664 sys sys 1116954242 2418
 sys/man/8/newuser - 664 sys sys 1116954242 2418
-sys/man/8/nfsserver - 664 sys sys 1163208425 3587
+sys/man/8/nfsserver - 664 sys sys 1191524525 3576
 sys/man/8/pcmcia - 664 sys sys 944959679 408
 sys/man/8/pcmcia - 664 sys sys 944959679 408
 sys/man/8/pem - 664 sys sys 1060263669 1189
 sys/man/8/pem - 664 sys sys 1060263669 1189
 sys/man/8/ping - 664 sys sys 1169105315 3650
 sys/man/8/ping - 664 sys sys 1169105315 3650
@@ -8048,7 +8046,7 @@ sys/src/9/mtx/trap.c - 664 sys sys 1105030157 15882
 sys/src/9/mtx/uarti8250.c - 664 sys sys 1018721288 11590
 sys/src/9/mtx/uarti8250.c - 664 sys sys 1018721288 11590
 sys/src/9/pc - 20000000775 sys sys 1161233143 0
 sys/src/9/pc - 20000000775 sys sys 1161233143 0
 sys/src/9/pc/a100p.cp - 444 sys sys 1159735144 21984
 sys/src/9/pc/a100p.cp - 444 sys sys 1159735144 21984
-sys/src/9/pc/ahci.h - 664 sys sys 1186366009 6314
+sys/src/9/pc/ahci.h - 664 sys sys 1191538081 6316
 sys/src/9/pc/apbootstrap.s - 664 sys sys 1131293655 3037
 sys/src/9/pc/apbootstrap.s - 664 sys sys 1131293655 3037
 sys/src/9/pc/apic.c - 664 sys sys 1174415344 8991
 sys/src/9/pc/apic.c - 664 sys sys 1174415344 8991
 sys/src/9/pc/apm.c - 664 sys sys 1131290210 3723
 sys/src/9/pc/apm.c - 664 sys sys 1131290210 3723
@@ -8132,7 +8130,7 @@ sys/src/9/pc/pcf - 664 sys sys 1181616886 1582
 sys/src/9/pc/pcfl - 664 sys sys 1188582378 1579
 sys/src/9/pc/pcfl - 664 sys sys 1188582378 1579
 sys/src/9/pc/pcflop - 664 sys sys 1190853787 1540
 sys/src/9/pc/pcflop - 664 sys sys 1190853787 1540
 sys/src/9/pc/pci.c - 664 sys sys 1185452613 29418
 sys/src/9/pc/pci.c - 664 sys sys 1185452613 29418
-sys/src/9/pc/pcmciamodem.c - 664 sys sys 1099761153 1586
+sys/src/9/pc/pcmciamodem.c - 664 sys sys 1191476436 1591
 sys/src/9/pc/pcmkfile - 664 sys sys 1109303822 101
 sys/src/9/pc/pcmkfile - 664 sys sys 1109303822 101
 sys/src/9/pc/piix4smbus.c - 664 sys sys 1184467714 5324
 sys/src/9/pc/piix4smbus.c - 664 sys sys 1184467714 5324
 sys/src/9/pc/plan9l.s - 664 sys sys 1015014521 910
 sys/src/9/pc/plan9l.s - 664 sys sys 1015014521 910
@@ -8146,7 +8144,7 @@ sys/src/9/pc/screen.h - 664 sys sys 1147023549 4256
 sys/src/9/pc/sd53c8xx.c - 664 sys sys 1170456695 55276
 sys/src/9/pc/sd53c8xx.c - 664 sys sys 1170456695 55276
 sys/src/9/pc/sd53c8xx.i - 664 sys sys 1128547230 28453
 sys/src/9/pc/sd53c8xx.i - 664 sys sys 1128547230 28453
 sys/src/9/pc/sd53c8xx.n - 664 sys sys 1131290556 12657
 sys/src/9/pc/sd53c8xx.n - 664 sys sys 1131290556 12657
-sys/src/9/pc/sd63xxesb.c - 664 sys sys 1190313935 36207
+sys/src/9/pc/sd63xxesb.c - 664 sys sys 1191481587 36230
 sys/src/9/pc/sdata.c - 664 sys sys 1186361525 52991
 sys/src/9/pc/sdata.c - 664 sys sys 1186361525 52991
 sys/src/9/pc/sdmv50xx.c - 664 sys sys 1184467229 33837
 sys/src/9/pc/sdmv50xx.c - 664 sys sys 1184467229 33837
 sys/src/9/pc/sdmylex.c - 664 sys sys 1189229947 28395
 sys/src/9/pc/sdmylex.c - 664 sys sys 1189229947 28395
@@ -9400,25 +9398,25 @@ sys/src/cmd/9660srv/xfile.c - 664 sys sys 1113742177 2736
 sys/src/cmd/9nfs - 20000000775 sys sys 1071498519 0
 sys/src/cmd/9nfs - 20000000775 sys sys 1071498519 0
 sys/src/cmd/9nfs/9auth.c - 664 sys sys 1017337812 1454
 sys/src/cmd/9nfs/9auth.c - 664 sys sys 1017337812 1454
 sys/src/cmd/9nfs/9p.c - 664 sys sys 1083772192 3365
 sys/src/cmd/9nfs/9p.c - 664 sys sys 1083772192 3365
-sys/src/cmd/9nfs/all.h - 664 sys sys 1017337813 322
+sys/src/cmd/9nfs/all.h - 664 sys sys 1191523800 338
 sys/src/cmd/9nfs/auth.c - 664 sys sys 1017337813 424
 sys/src/cmd/9nfs/auth.c - 664 sys sys 1017337813 424
 sys/src/cmd/9nfs/authhostowner.c - 664 sys sys 1071498519 4190
 sys/src/cmd/9nfs/authhostowner.c - 664 sys sys 1071498519 4190
 sys/src/cmd/9nfs/chat.c - 664 sys sys 1017337813 2096
 sys/src/cmd/9nfs/chat.c - 664 sys sys 1017337813 2096
-sys/src/cmd/9nfs/dat.h - 664 sys sys 1146061147 4432
+sys/src/cmd/9nfs/dat.h - 664 sys sys 1191523808 4510
 sys/src/cmd/9nfs/fns.h - 664 sys sys 1146061148 1927
 sys/src/cmd/9nfs/fns.h - 664 sys sys 1146061148 1927
 sys/src/cmd/9nfs/listalloc.c - 664 sys sys 1131657407 297
 sys/src/cmd/9nfs/listalloc.c - 664 sys sys 1131657407 297
 sys/src/cmd/9nfs/mkfile - 664 sys sys 1071498518 640
 sys/src/cmd/9nfs/mkfile - 664 sys sys 1071498518 640
-sys/src/cmd/9nfs/mport.c - 664 sys sys 1178482676 3749
+sys/src/cmd/9nfs/mport.c - 664 sys sys 1191523814 3720
 sys/src/cmd/9nfs/nametest.c - 664 sys sys 1015090372 1723
 sys/src/cmd/9nfs/nametest.c - 664 sys sys 1015090372 1723
 sys/src/cmd/9nfs/nfs.c - 664 sys sys 1131293679 9526
 sys/src/cmd/9nfs/nfs.c - 664 sys sys 1131293679 9526
 sys/src/cmd/9nfs/nfs.h - 664 sys sys 1015090372 642
 sys/src/cmd/9nfs/nfs.h - 664 sys sys 1015090372 642
-sys/src/cmd/9nfs/nfsmount.c - 664 sys sys 1182190701 6447
+sys/src/cmd/9nfs/nfsmount.c - 664 sys sys 1191523847 6447
 sys/src/cmd/9nfs/nfsserver.c - 664 sys sys 1146061148 15831
 sys/src/cmd/9nfs/nfsserver.c - 664 sys sys 1146061148 15831
 sys/src/cmd/9nfs/pcnfsd.c - 664 sys sys 1146061148 4068
 sys/src/cmd/9nfs/pcnfsd.c - 664 sys sys 1146061148 4068
-sys/src/cmd/9nfs/portmapper.c - 664 sys sys 1146061148 3273
-sys/src/cmd/9nfs/rpc.c - 664 sys sys 1017337815 5293
+sys/src/cmd/9nfs/portmapper.c - 664 sys sys 1191523856 3306
+sys/src/cmd/9nfs/rpc.c - 664 sys sys 1191523822 5647
 sys/src/cmd/9nfs/rpc.h - 664 sys sys 1017337815 1996
 sys/src/cmd/9nfs/rpc.h - 664 sys sys 1017337815 1996
-sys/src/cmd/9nfs/server.c - 664 sys sys 1178482676 11229
+sys/src/cmd/9nfs/server.c - 664 sys sys 1191523839 11320
 sys/src/cmd/9nfs/string.c - 664 sys sys 1017337815 1659
 sys/src/cmd/9nfs/string.c - 664 sys sys 1017337815 1659
 sys/src/cmd/9nfs/strparse.c - 664 sys sys 1015090373 506
 sys/src/cmd/9nfs/strparse.c - 664 sys sys 1015090373 506
 sys/src/cmd/9nfs/system.c - 664 sys sys 1017337815 437
 sys/src/cmd/9nfs/system.c - 664 sys sys 1017337815 437
@@ -9614,7 +9612,6 @@ sys/src/cmd/auth/factotum/sshrsa.c - 664 sys sys 1107633793 3416
 sys/src/cmd/auth/factotum/util.c - 664 sys sys 1182192267 18452
 sys/src/cmd/auth/factotum/util.c - 664 sys sys 1182192267 18452
 sys/src/cmd/auth/factotum/wep.c - 664 sys sys 1107706104 2140
 sys/src/cmd/auth/factotum/wep.c - 664 sys sys 1107706104 2140
 sys/src/cmd/auth/guard.srv.c - 664 sys sys 1172776773 2873
 sys/src/cmd/auth/guard.srv.c - 664 sys sys 1172776773 2873
-sys/src/cmd/auth/iam.c - 664 sys sys 1015008430 841
 sys/src/cmd/auth/keyfs.c - 664 sys sys 1191007186 19129
 sys/src/cmd/auth/keyfs.c - 664 sys sys 1191007186 19129
 sys/src/cmd/auth/lib - 20000000775 sys sys 1045504996 0
 sys/src/cmd/auth/lib - 20000000775 sys sys 1045504996 0
 sys/src/cmd/auth/lib/error.c - 664 sys sys 1155994850 318
 sys/src/cmd/auth/lib/error.c - 664 sys sys 1155994850 318
@@ -9788,7 +9785,7 @@ sys/src/cmd/aux/lines.c - 664 sys sys 1015008782 546
 sys/src/cmd/aux/lis - 775 sys sys 944960794 45
 sys/src/cmd/aux/lis - 775 sys sys 944960794 45
 sys/src/cmd/aux/listen.c - 664 sys sys 1181789265 9292
 sys/src/cmd/aux/listen.c - 664 sys sys 1181789265 9292
 sys/src/cmd/aux/listen1.c - 664 sys sys 1143759349 2005
 sys/src/cmd/aux/listen1.c - 664 sys sys 1143759349 2005
-sys/src/cmd/aux/mkfile - 664 sys sys 1147022848 1021
+sys/src/cmd/aux/mkfile - 664 sys sys 1191473306 1008
 sys/src/cmd/aux/mklatinkbd.c - 664 sys sys 953253425 3813
 sys/src/cmd/aux/mklatinkbd.c - 664 sys sys 953253425 3813
 sys/src/cmd/aux/mnihongo - 20000000775 sys sys 1039727550 0
 sys/src/cmd/aux/mnihongo - 20000000775 sys sys 1039727550 0
 sys/src/cmd/aux/mnihongo/README - 664 sys sys 944960789 475
 sys/src/cmd/aux/mnihongo/README - 664 sys sys 944960789 475
@@ -9814,7 +9811,6 @@ sys/src/cmd/aux/statusbar.c - 664 sys sys 1138460096 6066
 sys/src/cmd/aux/stub.c - 664 sys sys 1098196222 2723
 sys/src/cmd/aux/stub.c - 664 sys sys 1098196222 2723
 sys/src/cmd/aux/timesync.c - 664 sys sys 1178482886 25828
 sys/src/cmd/aux/timesync.c - 664 sys sys 1178482886 25828
 sys/src/cmd/aux/trampoline.c - 664 sys sys 1126104850 3790
 sys/src/cmd/aux/trampoline.c - 664 sys sys 1126104850 3790
-sys/src/cmd/aux/typepasswd.c - 664 sys sys 1143759348 1749
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
 sys/src/cmd/aux/unlock - 664 sys sys 944960793 0
 sys/src/cmd/aux/usage.c - 664 sys sys 1139744276 1095
 sys/src/cmd/aux/usage.c - 664 sys sys 1139744276 1095
 sys/src/cmd/aux/vga - 20000000775 sys sys 1115734902 0
 sys/src/cmd/aux/vga - 20000000775 sys sys 1115734902 0
@@ -10350,7 +10346,7 @@ sys/src/cmd/fax/receiverc - 775 sys sys 944960990 581
 sys/src/cmd/fax/send.c - 664 sys sys 944960990 923
 sys/src/cmd/fax/send.c - 664 sys sys 944960990 923
 sys/src/cmd/fax/subr.c - 664 sys sys 1015090401 1245
 sys/src/cmd/fax/subr.c - 664 sys sys 1015090401 1245
 sys/src/cmd/fcp.c - 664 sys sys 1136651872 3799
 sys/src/cmd/fcp.c - 664 sys sys 1136651872 3799
-sys/src/cmd/file.c - 664 sys sys 1172764226 28088
+sys/src/cmd/file.c - 664 sys sys 1191472670 28522
 sys/src/cmd/fmt.c - 664 sys sys 1137603598 4078
 sys/src/cmd/fmt.c - 664 sys sys 1137603598 4078
 sys/src/cmd/fortune.c - 664 sys sys 1072729222 1779
 sys/src/cmd/fortune.c - 664 sys sys 1072729222 1779
 sys/src/cmd/fossil - 20000000775 sys sys 1087005595 0
 sys/src/cmd/fossil - 20000000775 sys sys 1087005595 0

+ 24 - 0
dist/replica/plan9.log

@@ -53001,3 +53001,27 @@
 1191443404 0 c 386/bin/venti/venti - 775 sys sys 1191442426 705674
 1191443404 0 c 386/bin/venti/venti - 775 sys sys 1191442426 705674
 1191447003 0 c sys/src/boot/pc/ether.c - 664 sys sys 1191446356 5411
 1191447003 0 c sys/src/boot/pc/ether.c - 664 sys sys 1191446356 5411
 1191447003 1 c sys/src/boot/pc/etherigbe.c - 664 sys sys 1191446222 41284
 1191447003 1 c sys/src/boot/pc/etherigbe.c - 664 sys sys 1191446222 41284
+1191470404 0 c 386/9loaddebug - 775 sys sys 1191469884 435027
+1191474004 0 c sys/man/1/passwd - 664 sys sys 1191473503 1543
+1191474004 1 c sys/man/8/auth - 664 sys sys 1191472798 4996
+1191474004 2 c sys/src/cmd/aux/mkfile - 664 sys sys 1191473306 1008
+1191474004 3 c sys/src/cmd/file.c - 664 sys sys 1191472670 28522
+1191474004 4 d sys/src/cmd/aux/typepasswd.c - 664 sys sys 1143759348 0
+1191474004 5 d sys/src/cmd/auth/iam.c - 664 sys sys 1015008430 0
+1191474004 6 d 386/bin/aux/typepasswd - 775 sys sys 1168402288 0
+1191474004 7 d 386/bin/auth/iam - 775 sys sys 1085076981 0
+1191477605 0 c sys/src/9/pc/pcmciamodem.c - 664 sys sys 1191476436 1591
+1191477605 1 c sys/src/9/pc/sd63xxesb.c - 664 sys sys 1191476401 36280
+1191481204 0 c sys/man/3/sd - 664 sys sys 1191480432 5659
+1191481204 1 c sys/src/9/pc/sd63xxesb.c - 664 sys sys 1191481276 36244
+1191483004 0 c sys/src/9/pc/sd63xxesb.c - 664 sys sys 1191481587 36230
+1191524403 0 c sys/man/8/nfsserver - 664 sys sys 1191524525 3576
+1191524403 1 c sys/src/cmd/9nfs/all.h - 664 sys sys 1191523800 338
+1191524403 2 c sys/src/cmd/9nfs/dat.h - 664 sys sys 1191523808 4510
+1191524403 3 c sys/src/cmd/9nfs/mport.c - 664 sys sys 1191523814 3720
+1191524403 4 c sys/src/cmd/9nfs/nfsmount.c - 664 sys sys 1191523847 6447
+1191524403 5 c sys/src/cmd/9nfs/portmapper.c - 664 sys sys 1191523856 3306
+1191524403 6 c sys/src/cmd/9nfs/rpc.c - 664 sys sys 1191523822 5647
+1191524403 7 c sys/src/cmd/9nfs/server.c - 664 sys sys 1191523839 11320
+1191529803 0 c 386/bin/file - 775 sys sys 1191528973 128646
+1191538805 0 c sys/src/9/pc/ahci.h - 664 sys sys 1191538081 6316

+ 3 - 2
sys/man/1/passwd

@@ -1,10 +1,10 @@
 .TH PASSWD 1
 .TH PASSWD 1
 .SH NAME
 .SH NAME
-passwd, netkey, iam \- change user password
+passwd, netkey \- change or verify user password
 .SH SYNOPSIS
 .SH SYNOPSIS
 .B passwd
 .B passwd
 [
 [
-.I username\fR[@\fPdomain\fR]\fP
+.IR username [@ domain ]
 ]
 ]
 .PP
 .PP
 .B netkey
 .B netkey
@@ -44,6 +44,7 @@ in
 .IR authsrv (2),
 .IR authsrv (2),
 .IR encrypt (2),
 .IR encrypt (2),
 .IR cons (3),
 .IR cons (3),
+.IR auth (8),
 .IR securenet (8)
 .IR securenet (8)
 .PP
 .PP
 Robert Morris and Ken Thompson,
 Robert Morris and Ken Thompson,

+ 6 - 7
sys/man/3/sd

@@ -1,4 +1,4 @@
-.TH SD 3 
+.TH SD 3
 .SH NAME
 .SH NAME
 sd \- storage device interface
 sd \- storage device interface
 .SH SYNOPSIS
 .SH SYNOPSIS
@@ -12,7 +12,6 @@ sd \- storage device interface
 \&...
 \&...
 .fi
 .fi
 .SH DESCRIPTION
 .SH DESCRIPTION
-.PP
 The storage device interface serves a two-level directory
 The storage device interface serves a two-level directory
 giving access to multiple storage units,
 giving access to multiple storage units,
 typically ATA(PI) or SCSI discs.
 typically ATA(PI) or SCSI discs.
@@ -135,7 +134,7 @@ inquiry KENWOOD CD-ROM UCR-421  208E10/20/99  7.39  2 M0
 config 85C0 capabilities 0F00 dma 00550004 dmactl 00000000
 config 85C0 capabilities 0F00 dma 00550004 dmactl 00000000
 geometry 242725 2352
 geometry 242725 2352
 part data 0 242725
 part data 0 242725
-% 
+%
 .EE
 .EE
 .PP
 .PP
 The use of DMA and multi-sector read/write commands may be
 The use of DMA and multi-sector read/write commands may be
@@ -216,12 +215,14 @@ is a known controller type such as
 .B ata
 .B ata
 or
 or
 .BR scsi .
 .BR scsi .
-Writing `\fIctlletter message\fR' to
+Writing `\c
+.BI sd "ctlletter message\fR'
+to
 .B /dev/sdctl
 .B /dev/sdctl
 passes
 passes
 .I message
 .I message
 to
 to
-.IR ctlletter 's
+.BI sd ctlletter\fR's
 .B wtopctl
 .B wtopctl
 function with an
 function with an
 .B sdev
 .B sdev
@@ -239,8 +240,6 @@ or
 .SH SEE ALSO
 .SH SEE ALSO
 .IR scuzz (8)
 .IR scuzz (8)
 .SH BUGS
 .SH BUGS
-Still in development.
-.PP
 LUNs (logical unit numbers) are not implemented.
 LUNs (logical unit numbers) are not implemented.
 For (S)ATA drives,
 For (S)ATA drives,
 LUNs are not merely ignored but are actively
 LUNs are not merely ignored but are actively

+ 2 - 1
sys/man/8/auth

@@ -246,13 +246,14 @@ RADIUS server id's.
 List of users in the Plan 9 database.
 List of users in the Plan 9 database.
 .TP
 .TP
 .B /adm/netkeys.who
 .B /adm/netkeys.who
-List of users in  the SecureNet database.
+List of users in the SecureNet database.
 .TP
 .TP
 .B /sys/lib/httppasswords
 .B /sys/lib/httppasswords
 List of realms and passwords for HTTP access.
 List of realms and passwords for HTTP access.
 .SH SOURCE
 .SH SOURCE
 .B /sys/src/cmd/auth
 .B /sys/src/cmd/auth
 .SH "SEE ALSO"
 .SH "SEE ALSO"
+.IR passwd (1),
 .I readnvram
 .I readnvram
 in
 in
 .IR authsrv (2),
 .IR authsrv (2),

+ 4 - 4
sys/man/8/nfsserver

@@ -1,6 +1,6 @@
 .TH NFSSERVER 8
 .TH NFSSERVER 8
 .SH NAME
 .SH NAME
-nfsserver, portmapper, pcnfsd, 9auth \- NFS service
+nfsserver, portmapper, pcnfsd \- NFS service
 .SH SYNOPSIS
 .SH SYNOPSIS
 .B aux/nfsserver
 .B aux/nfsserver
 [
 [
@@ -108,10 +108,10 @@ Listen for incoming TCP calls, rather than UDP calls.
 .PP
 .PP
 NFS clients must be in the Plan 9
 NFS clients must be in the Plan 9
 .B /lib/ndb
 .B /lib/ndb
-database.  
-The machine name is deduced from the IP address via 
+database.
+The machine name is deduced from the IP address via
 .BR ndb/query .
 .BR ndb/query .
-The machine name specified in the NFS Unix credentials 
+The machine name specified in the NFS Unix credentials
 is completely ignored.
 is completely ignored.
 .PP
 .PP
 .I Pcnfsd
 .I Pcnfsd

+ 2 - 2
sys/src/9/pc/ahci.h

@@ -143,8 +143,8 @@ enum {
 /* cmd register bits */
 /* cmd register bits */
 enum {
 enum {
 	Aicc	= 1<<28,	/* interface communcations control. 4 bits */
 	Aicc	= 1<<28,	/* interface communcations control. 4 bits */
-	Aasp	= 1<<27,	/* agressive slumber & partial sleep */
-	Aalpe 	= 1<<26,	/* agressive link pm enable */
+	Aasp	= 1<<27,	/* aggressive slumber & partial sleep */
+	Aalpe 	= 1<<26,	/* aggressive link pm enable */
 	Adlae	= 1<<25,	/* drive led on atapi */
 	Adlae	= 1<<25,	/* drive led on atapi */
 	Aatapi	= 1<<24,	/* device is atapi */
 	Aatapi	= 1<<24,	/* device is atapi */
 	Aesp	= 1<<21,	/* external sata port */
 	Aesp	= 1<<21,	/* external sata port */

+ 2 - 1
sys/src/9/pc/pcmciamodem.c

@@ -67,7 +67,8 @@ pcmciamodemlink(void)
 			if(usingcom2)
 			if(usingcom2)
 				com2used = 1;
 				com2used = 1;
 			if(ioalloc(isa.port, 8, 0, modems[j]) < 0)
 			if(ioalloc(isa.port, 8, 0, modems[j]) < 0)
-				print("%s port %lux already in use\n", modems[j], isa.port);
+				print("%s port %lux already in use\n",
+					modems[j], isa.port);
 			print("%s in pcmcia slot %d port 0x%lux irq %d\n",
 			print("%s in pcmcia slot %d port 0x%lux irq %d\n",
 				modems[j], slot, isa.port, isa.irq);
 				modems[j], slot, isa.port, isa.irq);
 		}
 		}

+ 23 - 26
sys/src/9/pc/sd63xxesb.c

@@ -13,9 +13,9 @@
 #include "../port/sd.h"
 #include "../port/sd.h"
 #include "ahci.h"
 #include "ahci.h"
 
 
-#define	dprint(...)	if(debug == 1)	iprint(__VA_ARGS__); else USED(debug)
-#define	idprint(...)	if(prid == 1)	print(__VA_ARGS__);  else USED(prid)
-#define	aprint(...)	if(datapi == 1)	iprint(__VA_ARGS__); else USED(datapi)
+#define	dprint(...)	if(debug)	iprint(__VA_ARGS__); else USED(debug)
+#define	idprint(...)	if(prid)	print(__VA_ARGS__);  else USED(prid)
+#define	aprint(...)	if(datapi)	iprint(__VA_ARGS__); else USED(datapi)
 
 
 enum {
 enum {
 	NCtlr	= 4,
 	NCtlr	= 4,
@@ -123,9 +123,9 @@ typedef struct {
 	int	driveno;	/* ctlr*NCtlrdrv + unit */
 	int	driveno;	/* ctlr*NCtlrdrv + unit */
 	/* controller port # != driveno when not all ports are enabled */
 	/* controller port # != driveno when not all ports are enabled */
 	int	portno;
 	int	portno;
-}Drive;
+} Drive;
 
 
-struct Ctlr{
+struct Ctlr {
 	Lock;
 	Lock;
 
 
 	int	type;
 	int	type;
@@ -220,7 +220,7 @@ ahciclear(void *v)
 	Asleep *s;
 	Asleep *s;
 
 
 	s = v;
 	s = v;
-	return (s->p->ci&s->i) == 0;
+	return (s->p->ci & s->i) == 0;
 }
 }
 
 
 static void
 static void
@@ -256,7 +256,7 @@ nop(Aportc *pc)
 	Actab *t;
 	Actab *t;
 	Alist *l;
 	Alist *l;
 
 
-	if((pc->m->feat&Dnop) == 0)
+	if((pc->m->feat & Dnop) == 0)
 		return -1;
 		return -1;
 
 
 	t = pc->m->ctab;
 	t = pc->m->ctab;
@@ -816,18 +816,20 @@ countbits(ulong u)
 }
 }
 
 
 static int
 static int
-ahciconf(Ctlr *c)
+ahciconf(Ctlr *ctlr)
 {
 {
 	Ahba *h;
 	Ahba *h;
 	u32int u;
 	u32int u;
 
 
-	h = c->hba = (Ahba*)c->mmio;
+	h = ctlr->hba = (Ahba*)ctlr->mmio;
 	u = h->cap;
 	u = h->cap;
 
 
 	if((u&Hsam) == 0)
 	if((u&Hsam) == 0)
 		h->ghc |= Hae;
 		h->ghc |= Hae;
 
 
-	print("ahci hba sss %d; ncs %d; coal %d; mports %d; led %d; clo %d; ems %d;\n",
+	print("#S/sd%c: ahci: port %#p: hba sss %d; ncs %d; coal %d; "
+		"mports %d; led %d; clo %d; ems %d;\n",
+		ctlr->sdev->idno, h,
 		(u>>27) & 1, (u>>8) & 0x1f, (u>>7) & 1, u & 0x1f, (u>>25) & 1,
 		(u>>27) & 1, (u>>8) & 0x1f, (u>>7) & 1, u & 0x1f, (u>>25) & 1,
 		(u>>24) & 1, (u>>6) & 1);
 		(u>>24) & 1, (u>>6) & 1);
 	return countbits(h->pi);
 	return countbits(h->pi);
@@ -1777,6 +1779,10 @@ loop:
 		c->lmmio = (ulong*)c->mmio;
 		c->lmmio = (ulong*)c->mmio;
 		c->pci = p;
 		c->pci = p;
 		c->type = type;
 		c->type = type;
+		s->ifc = &sd63xxesbifc;
+		s->idno = 'E' + niactlr;
+		s->ctlr = c;
+		c->sdev = s;
 		if(Intel(c->type) && p->did != 0x2681)
 		if(Intel(c->type) && p->did != 0x2681)
 			iasetupahci(c);
 			iasetupahci(c);
 		nunit = ahciconf(c);
 		nunit = ahciconf(c);
@@ -1787,16 +1793,11 @@ loop:
 			vunmap(c->mmio, p->mem[0].size);
 			vunmap(c->mmio, p->mem[0].size);
 			continue;
 			continue;
 		}
 		}
+		s->nunit = nunit;
 
 
 		i = (c->hba->cap >> 21) & 1;
 		i = (c->hba->cap >> 21) & 1;
-		print("%s: sata-%s ports with %d ports\n",
+		print("#S/sd%c: %s: sata-%s with %d ports\n", s->idno,
 			tname[c->type], "I\0II" + i*2, nunit);
 			tname[c->type], "I\0II" + i*2, nunit);
-		s->ifc = &sd63xxesbifc;
-		s->ctlr = c;
-		s->nunit = nunit;
-		s->idno = 'E';
-		c->sdev = s;
-		c->ndrive = nunit;
 
 
 		/* map the drives -- they don't all need to be enabled. */
 		/* map the drives -- they don't all need to be enabled. */
 		memset(c->rawdrive, 0, sizeof c->rawdrive);
 		memset(c->rawdrive, 0, sizeof c->rawdrive);
@@ -1828,6 +1829,7 @@ loop:
 		}
 		}
 
 
 		niadrive += nunit;
 		niadrive += nunit;
+		niactlr++;
 		if(head)
 		if(head)
 			tail->next = s;
 			tail->next = s;
 		else
 		else
@@ -1847,13 +1849,11 @@ static char* smarttab[] = {
 static char *
 static char *
 pflag(char *s, char *e, uchar f)
 pflag(char *s, char *e, uchar f)
 {
 {
-	uchar i, m;
+	uchar i;
 
 
-	for(i = 0; i < 8; i++){
-		m = 1 << i;
-		if(f & m)
+	for(i = 0; i < 8; i++)
+		if(f & (1 << i))
 			s = seprint(s, e, "%s ", flagname[i]);
 			s = seprint(s, e, "%s ", flagname[i]);
-	}
 	return seprint(s, e, "\n");
 	return seprint(s, e, "\n");
 }
 }
 
 
@@ -2113,10 +2113,7 @@ iawtopctl(SDev *, Cmdbuf *cmd)
 		*v ^= 1;
 		*v ^= 1;
 		break;
 		break;
 	case 2:
 	case 2:
-		if(strcmp(f[1], "on") == 0)
-			*v = 1;
-		else
-			*v = 0;
+		*v = (strcmp(f[1], "on") == 0);
 		break;
 		break;
 	}
 	}
 	return 0;
 	return 0;

+ 1 - 0
sys/src/cmd/9nfs/all.h

@@ -1,5 +1,6 @@
 #include <u.h>
 #include <u.h>
 #include <libc.h>
 #include <libc.h>
+#include <ip.h>
 #include <bio.h>
 #include <bio.h>
 #include <auth.h>
 #include <auth.h>
 #include <authsrv.h>
 #include <authsrv.h>

+ 5 - 2
sys/src/cmd/9nfs/dat.h

@@ -89,12 +89,15 @@ struct Reject
 
 
 struct Rpccall
 struct Rpccall
 {
 {
+	/* corresponds to Udphdr */
 	uchar	prefix0[12];
 	uchar	prefix0[12];
-	ulong	host;		/* prefixed to RPC message */
+	ulong	host;		/* ipv4 subset: prefixed to RPC message */
 	uchar	prefix1[12];
 	uchar	prefix1[12];
-	ulong	lhost;		/* prefixed to RPC message */
+	ulong	lhost;		/* ipv4 subset: prefixed to RPC message */
+	/* ignore ifcaddr */
 	ulong	port;		/* prefixed to RPC message */
 	ulong	port;		/* prefixed to RPC message */
 	ulong	lport;		/* prefixed to RPC message */
 	ulong	lport;		/* prefixed to RPC message */
+
 	ulong	xid;		/* transaction id */
 	ulong	xid;		/* transaction id */
 	ulong	mtype;		/* CALL or REPLY */
 	ulong	mtype;		/* CALL or REPLY */
 	union{
 	union{

+ 5 - 8
sys/src/cmd/9nfs/mport.c

@@ -24,7 +24,7 @@ void
 main(int argc, char **argv)
 main(int argc, char **argv)
 {
 {
 	char addr[64], dir[64], name[128];
 	char addr[64], dir[64], name[128];
-	char buf[32], *p;
+	char buf[33], *p;
 	uchar *dataptr, *argptr;
 	uchar *dataptr, *argptr;
 	int i, fd, n, remport;
 	int i, fd, n, remport;
 
 
@@ -38,6 +38,7 @@ main(int argc, char **argv)
 	}ARGEND
 	}ARGEND
 	if(argc != 1)
 	if(argc != 1)
 		exits("usage");
 		exits("usage");
+
 	snprint(addr, sizeof addr, "udp!%s!111", argv[0]);
 	snprint(addr, sizeof addr, "udp!%s!111", argv[0]);
 	r.data = dial(addr, 0, dir, &r.ctl);
 	r.data = dial(addr, 0, dir, &r.ctl);
 	if(r.data < 0){
 	if(r.data < 0){
@@ -56,7 +57,7 @@ main(int argc, char **argv)
 		fprint(2, "can't open %s: %r\n", name);
 		fprint(2, "can't open %s: %r\n", name);
 		exits("remote");
 		exits("remote");
 	}
 	}
-	n = read(fd, buf, sizeof buf);
+	n = read(fd, buf, sizeof buf-1);
 	if(n < 0){
 	if(n < 0){
 		fprint(2, "can't read %s: %r\n", name);
 		fprint(2, "can't read %s: %r\n", name);
 		exits("remote");
 		exits("remote");
@@ -116,15 +117,11 @@ main(int argc, char **argv)
 	i = rpccall(&r, dataptr-(uchar*)r.cmd.args);
 	i = rpccall(&r, dataptr-(uchar*)r.cmd.args);
 	fprint(2, "export: %d bytes returned\n", i);
 	fprint(2, "export: %d bytes returned\n", i);
 	argptr = r.reply.results;
 	argptr = r.reply.results;
-	for(;;){
-		if(GLONG() == 0)
-			break;
+	while (GLONG() != 0) {
 		n = GLONG();
 		n = GLONG();
 		p = GPTR(n);
 		p = GPTR(n);
 		print("%.*s\n", utfnlen(p, n), p);
 		print("%.*s\n", utfnlen(p, n), p);
-		for(;;){
-			if(GLONG() == 0)
-				break;
+		while (GLONG() != 0) {
 			n = GLONG();
 			n = GLONG();
 			p = GPTR(n);
 			p = GPTR(n);
 			print("\t%.*s\n", utfnlen(p, n), p);
 			print("\t%.*s\n", utfnlen(p, n), p);

+ 1 - 1
sys/src/cmd/9nfs/nfsmount.c

@@ -325,7 +325,7 @@ xfroot(char *name, int n)
 		p = strrchr(s->service, '!');	/* for -a tcp!foo */
 		p = strrchr(s->service, '!');	/* for -a tcp!foo */
 		if(p && strncmp(name, p+1, n) == 0)
 		if(p && strncmp(name, p+1, n) == 0)
 			return s->root;
 			return s->root;
-		p = strrchr(s->service, '/');	/* for -a /srv/foo */
+		p = strrchr(s->service, '/');	/* for -f /srv/foo */
 		if(p && strncmp(name, p+1, n) == 0)
 		if(p && strncmp(name, p+1, n) == 0)
 			return s->root;
 			return s->root;
 	}
 	}

+ 5 - 3
sys/src/cmd/9nfs/portmapper.c

@@ -1,7 +1,9 @@
+/*
+ * sunrpc portmapper
+ */
 #include "all.h"
 #include "all.h"
 
 
 typedef struct Portmap	Portmap;
 typedef struct Portmap	Portmap;
-
 struct Portmap
 struct Portmap
 {
 {
 	int	prog;
 	int	prog;
@@ -11,8 +13,8 @@ struct Portmap
 };
 };
 
 
 Portmap map[] = {
 Portmap map[] = {
-	100003, 2, IPPROTO_UDP, 2049,	/* nfs */
-//	100003, 3, IPPROTO_UDP, 2049,	/* nfs */
+	100003, 2, IPPROTO_UDP, 2049,	/* nfs v2 */
+//	100003, 3, IPPROTO_UDP, 2049,	/* nfs v3 */
 	100005, 1, IPPROTO_UDP, 2049,	/* mount */
 	100005, 1, IPPROTO_UDP, 2049,	/* mount */
 	150001, 2, IPPROTO_UDP, 1111,	/* pcnfsd v2 */
 	150001, 2, IPPROTO_UDP, 1111,	/* pcnfsd v2 */
 	150001, 1, IPPROTO_UDP, 1111,	/* pcnfsd v1 */
 	150001, 1, IPPROTO_UDP, 1111,	/* pcnfsd v1 */

+ 24 - 14
sys/src/cmd/9nfs/rpc.c

@@ -6,24 +6,26 @@
 #define SKIPLONG	p += 4
 #define SKIPLONG	p += 4
 #define	PTR(x, n)	r->x = (void *)(p); p += ROUNDUP(n)
 #define	PTR(x, n)	r->x = (void *)(p); p += ROUNDUP(n)
 
 
-uchar v4prefix[12] = {
-	0, 0, 0, 0,
-	0, 0, 0, 0,
-	0, 0, 0xff, 0xff,
-};
-
 int
 int
 rpcM2S(void *ap, Rpccall *r, int n)
 rpcM2S(void *ap, Rpccall *r, int n)
 {
 {
-	uchar *p = ap;
 	int k;
 	int k;
+	uchar *p;
+	Udphdr *up;
 
 
-	p += 12;
+	/* copy IPv4 header fields from Udphdr */
+	up = ap;
+	p = &up->raddr[IPaddrlen - IPv4addrlen];
 	LONG(host);
 	LONG(host);
-	p += 12;
+	USED(p);
+	p = &up->laddr[IPaddrlen - IPv4addrlen];
 	LONG(lhost);
 	LONG(lhost);
+	USED(p);
+	/* ignore up->ifcaddr */
+	p = up->rport;
 	SHORT(port);
 	SHORT(port);
 	SHORT(lport);
 	SHORT(lport);
+
 	LONG(xid);
 	LONG(xid);
 	LONG(mtype);
 	LONG(mtype);
 	switch(r->mtype){
 	switch(r->mtype){
@@ -143,16 +145,24 @@ string2S(void *arg, String *r)
 int
 int
 rpcS2M(Rpccall *r, int ndata, void *ap)
 rpcS2M(Rpccall *r, int ndata, void *ap)
 {
 {
-	uchar *p = ap;
+	uchar *p;
+	Udphdr *up;
 
 
-	memmove(p, v4prefix, 12);
-	p += 12;
+	/* copy header fields to Udphdr */
+	up = ap;
+	memmove(up->raddr, v4prefix, IPaddrlen);
+	p = &up->raddr[IPaddrlen - IPv4addrlen];
 	LONG(host);
 	LONG(host);
-	memmove(p, v4prefix, 12);
-	p += 12;
+	USED(p);
+	memmove(up->laddr, v4prefix, IPaddrlen);
+	p = &up->laddr[IPaddrlen - IPv4addrlen];
 	LONG(lhost);
 	LONG(lhost);
+	USED(p);
+	memmove(up->ifcaddr, IPnoaddr, sizeof up->ifcaddr);
+	p = up->rport;
 	SHORT(port);
 	SHORT(port);
 	SHORT(lport);
 	SHORT(lport);
+
 	LONG(xid);
 	LONG(xid);
 	LONG(mtype);
 	LONG(mtype);
 	switch(r->mtype){
 	switch(r->mtype){

+ 7 - 6
sys/src/cmd/9nfs/server.c

@@ -1,6 +1,5 @@
 #include "all.h"
 #include "all.h"
 #include <ndb.h>
 #include <ndb.h>
-#include <ip.h>
 
 
 static int	alarmflag;
 static int	alarmflag;
 
 
@@ -144,7 +143,8 @@ tcpserver(int myport, Progmap *progmap)
 		if(actl < 0){
 		if(actl < 0){
 			actl = announce(ds, adir);
 			actl = announce(ds, adir);
 			if(actl < 0){
 			if(actl < 0){
-				clog("%s: listening to tcp port %d\n", argv0, myport);
+				clog("%s: listening to tcp port %d\n",
+					argv0, myport);
 				clog("announcing: %r");
 				clog("announcing: %r");
 				break;
 				break;
 			}
 			}
@@ -169,12 +169,12 @@ tcpserver(int myport, Progmap *progmap)
 			if(data < 0)
 			if(data < 0)
 				exits(0);
 				exits(0);
 
 
+			/* pretend it's udp; fill in Udphdr */
 			getendpoints((Udphdr*)buf, ldir);
 			getendpoints((Udphdr*)buf, ldir);
 
 
-			for(;;){
-				if(servemsg(data, readtcp, writetcp, myport, progmap) < 0)
-					break;
-			}
+			while (servemsg(data, readtcp, writetcp, myport,
+			    progmap) >= 0)
+				continue;
 			close(data);
 			close(data);
 			exits(0);
 			exits(0);
 		}
 		}
@@ -328,6 +328,7 @@ getendpoint(char *dir, char *file, uchar *addr, uchar *port)
 	hnputs(port, n);
 	hnputs(port, n);
 }
 }
 
 
+/* set Udhphdr values from protocol dir local & remote files */
 static void
 static void
 getendpoints(Udphdr *ep, char *dir)
 getendpoints(Udphdr *ep, char *dir)
 {
 {

+ 0 - 49
sys/src/cmd/auth/iam.c

@@ -1,49 +0,0 @@
-#include <u.h>
-#include <libc.h>
-#include <authsrv.h>
-#include <ctype.h>
-#include "authcmdlib.h"
-
-void
-main(int argc, char **argv)
-{
-	char user[ANAMELEN];
-	char p9pass[32];
-	char key[DESKEYLEN];
-	int fd;
-
-	ARGBEGIN{
-	}ARGEND;
-
-	switch(argc){
-	case 2:
-		strncpy(user, argv[0], ANAMELEN);
-		user[ANAMELEN-1] = 0;
-		passtokey(key, argv[1]);
-		break;
-	case 1:
-		strncpy(user, argv[0], ANAMELEN);
-		user[ANAMELEN-1] = 0;
-		getpass(key, p9pass, 0, 0);
-		break;
-	case 0:
-		strcpy(user, getuser());
-		getpass(key, p9pass, 0, 0);
-		break;
-	default:
-		fprint(2, "usage: auth/iam [user [password]]\n");
-		break; 
-	}
-
-	fd = open("/dev/key", OWRITE);
-	if(fd < 0)
-		sysfatal("open key");
-	write(fd, key, DESKEYLEN);
-	close(fd);
-
-	fd = open("/dev/hostowner", OWRITE);
-	if(fd < 0)
-		sysfatal("open hostowner");
-	write(fd, user, strlen(user));
-	close(fd);
-}

+ 0 - 1
sys/src/cmd/aux/mkfile

@@ -33,7 +33,6 @@ TARG=\
 	stub\
 	stub\
 	timesync\
 	timesync\
 	trampoline\
 	trampoline\
-	typepasswd\
 	usage\
 	usage\
 	write\
 	write\
 	zerotrunc\
 	zerotrunc\

+ 0 - 107
sys/src/cmd/aux/typepasswd.c

@@ -1,107 +0,0 @@
-#include <u.h>
-#include <libc.h>
-#include <authsrv.h>
-
-int	readln(char*, char*, int);
-void	error(char*, ...);
-void	passwd(char*);
-
-void
-main(int argc, char *argv[])
-{
-	char np[64];
-
-	argc--;
-	argv0 = *argv;
-	if(argc){
-		fprint(2, "usage: typepasswd\n");
-		exits("usage");
-	}
-	if(access("#i/draw", AEXIST) < 0){
-		fprint(2, "typepasswd: must be run on a terminal\n");
-		exits("run typepasswd on a terminal");
-	}
-	readln("New password:", np, sizeof np);
-	passwd(np);
-	exits(0);
-}
-
-void
-passwd(char *p)
-{
-	char key[DESKEYLEN];
-	int fd;
-
-	if(passtokey(key, p) == 0)
-		error("bad password");
-	fd = open("/dev/key", OWRITE);
-	if(fd < 0)
-		error("can't open /dev/key");
-	if(write(fd, key, DESKEYLEN) != DESKEYLEN)
-		error("can't write key");
-	close(fd);
-	print("password changed\n");
-}
-
-int
-readln(char *prompt, char *line, int len)
-{
-	char *p;
-	int fd, ctl, n, nr;
-
-	fd = open("/dev/cons", ORDWR);
-	if(fd < 0)
-		error("couldn't open cons");
-	ctl = open("/dev/consctl", OWRITE);
-	if(ctl < 0)
-		error("couldn't set raw mode");
-	write(ctl, "rawon", 5);
-	fprint(fd, "%s", prompt);
-	nr = 0;
-	p = line;
-	for(;;){
-		n = read(fd, p, 1);
-		if(n < 0){
-			close(ctl);
-			close(fd);
-			return -1;
-		}
-		if(n == 0 || *p == '\n' || *p == '\r'){
-			*p = '\0';
-			write(fd, "\n", 1);
-			close(ctl);
-			close(fd);
-			return nr;
-		}
-		if(*p == '\b'){
-			if(nr > 0){
-				nr--;
-				p--;
-			}
-		}else{
-			nr++;
-			p++;
-		}
-		if(nr == len){
-			fprint(2, "line too long; try again\n");
-			nr = 0;
-			p = line;
-		}
-	}
-}
-
-void
-error(char *fmt, ...)
-{
-	va_list arg;
-	char buf[8192], *s;
-
-	s = buf;
-	s += sprint(s, "%s: ", argv0);
-	va_start(arg, fmt);
-	s = vseprint(s, buf + sizeof(buf) / sizeof(*buf), fmt, arg);
-	va_end(arg);
-	*s++ = '\n';
-	write(2, buf, s - buf);
-	exits(buf);
-}

+ 44 - 29
sys/src/cmd/file.c

@@ -188,9 +188,9 @@ int	(*call[])(void) =
 	islimbo,	/* limbo source */
 	islimbo,	/* limbo source */
 	isc,		/* c & alef compiler key words */
 	isc,		/* c & alef compiler key words */
 	isas,		/* assembler key words */
 	isas,		/* assembler key words */
-	ismung,		/* entropy compressed/encrypted */
 	isp9font,	/* plan 9 font */
 	isp9font,	/* plan 9 font */
 	isp9bit,	/* plan 9 image (as from /dev/window) */
 	isp9bit,	/* plan 9 image (as from /dev/window) */
+	ismung,		/* entropy compressed/encrypted */
 	isenglish,	/* char frequency English */
 	isenglish,	/* char frequency English */
 	isrtf,		/* rich text format */
 	isrtf,		/* rich text format */
 	ismsdos,	/* msdos exe (virus file attachement) */
 	ismsdos,	/* msdos exe (virus file attachement) */
@@ -278,7 +278,7 @@ int
 fullrune1(char *p, int n)
 fullrune1(char *p, int n)
 {
 {
 	int c;
 	int c;
-	
+
 	if(n >= 1) {
 	if(n >= 1) {
 		c = *(uchar*)p;
 		c = *(uchar*)p;
 		if(c < 0x80)
 		if(c < 0x80)
@@ -298,7 +298,7 @@ chartorune1(Rune1 *rune, char *str)
 {
 {
 	int c, c1, c2, c3, n;
 	int c, c1, c2, c3, n;
 	Rune r;
 	Rune r;
-	
+
 	c = *(uchar*)str;
 	c = *(uchar*)str;
 	if(c < 0xF0){
 	if(c < 0xF0){
 		r = 0;
 		r = 0;
@@ -775,7 +775,6 @@ struct	FILE_STRING
 	"%PDF",			"PDF",				4,	"application/pdf",
 	"%PDF",			"PDF",				4,	"application/pdf",
 	"<html>\n",		"HTML file",			7,	"text/html",
 	"<html>\n",		"HTML file",			7,	"text/html",
 	"<HTML>\n",		"HTML file",			7,	"text/html",
 	"<HTML>\n",		"HTML file",			7,	"text/html",
-	"compressed\n",		"Compressed image or subfont",	11,	"application/octet-stream",
 	"\111\111\052\000",	"tiff",				4,	"image/tiff",
 	"\111\111\052\000",	"tiff",				4,	"image/tiff",
 	"\115\115\000\052",	"tiff",				4,	"image/tiff",
 	"\115\115\000\052",	"tiff",				4,	"image/tiff",
 	"\377\330\377\340",	"jpeg",				4,	"image/jpeg",
 	"\377\330\377\340",	"jpeg",				4,	"image/jpeg",
@@ -839,7 +838,7 @@ struct offstr
 	ulong	off;
 	ulong	off;
 	struct FILE_STRING;
 	struct FILE_STRING;
 } offstrs[] = {
 } offstrs[] = {
-	32*1024, "\001CD001\001",	"ISO9660 CD image",	7,	OCTET,	
+	32*1024, "\001CD001\001",	"ISO9660 CD image",	7,	OCTET,
 	0, 0, 0, 0, 0
 	0, 0, 0, 0, 0
 };
 };
 
 
@@ -1227,75 +1226,85 @@ depthof(char *s, int *newp)
 	*newp = 1;
 	*newp = 1;
 	d = 0;
 	d = 0;
 	while(s<es && *s!=' '){
 	while(s<es && *s!=' '){
-		s++;	/* skip letter */
+		s++;			/* skip letter */
 		d += strtoul(s, &s, 10);
 		d += strtoul(s, &s, 10);
 	}
 	}
 
 
-	switch(d){
-	case 32:
-	case 24:
-	case 16:
-	case 8:
+	if(d % 8 == 0 || 8 % d == 0)
 		return d;
 		return d;
-	}
-	return -1;
+	else
+		return -1;
 }
 }
 
 
 int
 int
 isp9bit(void)
 isp9bit(void)
 {
 {
-	int dep, lox, loy, hix, hiy, px, new;
+	int dep, lox, loy, hix, hiy, px, new, cmpr;
 	ulong t;
 	ulong t;
 	long len;
 	long len;
 	char *newlabel;
 	char *newlabel;
+	uchar *cp;
 
 
+	cp = buf;
+	cmpr = 0;
 	newlabel = "old ";
 	newlabel = "old ";
 
 
-	dep = depthof((char*)buf + 0*P9BITLEN, &new);
+	if(memcmp(cp, "compressed\n", 11) == 0) {
+		cmpr = 1;
+		cp = buf + 11;
+	}
+
+	dep = depthof((char*)cp + 0*P9BITLEN, &new);
 	if(new)
 	if(new)
 		newlabel = "";
 		newlabel = "";
-	lox = p9bitnum(buf + 1*P9BITLEN);
-	loy = p9bitnum(buf + 2*P9BITLEN);
-	hix = p9bitnum(buf + 3*P9BITLEN);
-	hiy = p9bitnum(buf + 4*P9BITLEN);
+	lox = p9bitnum(cp + 1*P9BITLEN);
+	loy = p9bitnum(cp + 2*P9BITLEN);
+	hix = p9bitnum(cp + 3*P9BITLEN);
+	hiy = p9bitnum(cp + 4*P9BITLEN);
 	if(dep < 0 || lox < 0 || loy < 0 || hix < 0 || hiy < 0)
 	if(dep < 0 || lox < 0 || loy < 0 || hix < 0 || hiy < 0)
 		return 0;
 		return 0;
 
 
 	if(dep < 8){
 	if(dep < 8){
-		px = 8/dep;	/* pixels per byte */
+		px = 8/dep;		/* pixels per byte */
 		/* set l to number of bytes of data per scan line */
 		/* set l to number of bytes of data per scan line */
 		if(lox >= 0)
 		if(lox >= 0)
 			len = (hix+px-1)/px - lox/px;
 			len = (hix+px-1)/px - lox/px;
-		else{	/* make positive before divide */
+		else{			/* make positive before divide */
 			t = (-lox)+px-1;
 			t = (-lox)+px-1;
 			t = (t/px)*px;
 			t = (t/px)*px;
 			len = (t+hix+px-1)/px;
 			len = (t+hix+px-1)/px;
 		}
 		}
 	}else
 	}else
 		len = (hix-lox)*dep/8;
 		len = (hix-lox)*dep/8;
-	len *= (hiy-loy);		/* col length */
-	len += 5*P9BITLEN;		/* size of initial ascii */
+	len *= hiy - loy;		/* col length */
+	len += 5 * P9BITLEN;		/* size of initial ascii */
 
 
 	/*
 	/*
+	 * for compressed images, don't look any further. otherwise:
 	 * for image file, length is non-zero and must match calculation above
 	 * for image file, length is non-zero and must match calculation above
 	 * for /dev/window and /dev/screen the length is always zero
 	 * for /dev/window and /dev/screen the length is always zero
 	 * for subfont, the subfont header should follow immediately.
 	 * for subfont, the subfont header should follow immediately.
 	 */
 	 */
+	if (cmpr) {
+		print(mime ? OCTET : "Compressed %splan 9 image or subfont, depth %d\n",
+			newlabel, dep);
+		return 1;
+	}
 	if (len != 0 && mbuf->length == 0) {
 	if (len != 0 && mbuf->length == 0) {
-		print("%splan 9 image\n", newlabel);
+		print(mime ? OCTET : "%splan 9 image, depth %d\n", newlabel, dep);
 		return 1;
 		return 1;
 	}
 	}
 	if (mbuf->length == len) {
 	if (mbuf->length == len) {
-		print("%splan 9 image\n", newlabel);
+		print(mime ? OCTET : "%splan 9 image, depth %d\n", newlabel, dep);
 		return 1;
 		return 1;
 	}
 	}
 	/* Ghostscript sometimes produces a little extra on the end */
 	/* Ghostscript sometimes produces a little extra on the end */
 	if (mbuf->length < len+P9BITLEN) {
 	if (mbuf->length < len+P9BITLEN) {
-		print("%splan 9 image\n", newlabel);
+		print(mime ? OCTET : "%splan 9 image, depth %d\n", newlabel, dep);
 		return 1;
 		return 1;
 	}
 	}
 	if (p9subfont(buf+len)) {
 	if (p9subfont(buf+len)) {
-		print("%ssubfont file\n", newlabel);
+		print(mime ? OCTET : "%ssubfont file, depth %d\n", newlabel, dep);
 		return 1;
 		return 1;
 	}
 	}
 	return 0;
 	return 0;
@@ -1306,7 +1315,7 @@ p9subfont(uchar *p)
 {
 {
 	int n, h, a;
 	int n, h, a;
 
 
-		/* if image too big, assume it's a subfont */
+	/* if image too big, assume it's a subfont */
 	if (p+3*P9BITLEN > buf+sizeof(buf))
 	if (p+3*P9BITLEN > buf+sizeof(buf))
 		return 1;
 		return 1;
 
 
@@ -1442,6 +1451,7 @@ iself(void)
 
 
 	if (memcmp(buf, "\x7fELF", 4) == 0){
 	if (memcmp(buf, "\x7fELF", 4) == 0){
 		if (!mime){
 		if (!mime){
+			int isdifend = 0;
 			int n = (buf[19] << 8) | buf[18];
 			int n = (buf[19] << 8) | buf[18];
 			char *p = "unknown";
 			char *p = "unknown";
 			char *t = "unknown";
 			char *t = "unknown";
@@ -1450,11 +1460,16 @@ iself(void)
 				p = cpu[n];
 				p = cpu[n];
 			else {
 			else {
 				/* try the other byte order */
 				/* try the other byte order */
+				isdifend = 1;
 				n = (buf[18] << 8) | buf[19];
 				n = (buf[18] << 8) | buf[19];
 				if (n > 0 && n < nelem(cpu) && cpu[n])
 				if (n > 0 && n < nelem(cpu) && cpu[n])
 					p = cpu[n];
 					p = cpu[n];
 			}
 			}
-			n = buf[16];
+			if(isdifend)
+				n = (buf[16]<< 8) | buf[17];
+			else
+				n = (buf[17]<< 8) | buf[16];
+
 			if(n>0 && n < nelem(type) && type[n])
 			if(n>0 && n < nelem(type) && type[n])
 				t = type[n];
 				t = type[n];
 			print("%s ELF %s\n", p, t);
 			print("%s ELF %s\n", p, t);