Browse Source

Plan 9 from Bell Labs 2005-03-19

David du Colombier 19 years ago
parent
commit
a51a02420f

+ 33 - 33
dist/replica/_plan9.db

@@ -3,13 +3,13 @@
 386/9loaddebug - 775 sys sys 1109477747 309905
 386/9loadlite - 775 sys sys 1100269949 132260
 386/9loadlitedebug - 775 sys sys 1109477747 198992
-386/9pc - 775 sys sys 1109132016 1833270
+386/9pc - 775 sys sys 1111119465 1833271
 386/9pc.gz - 664 sys sys 1077049336 635727
 386/9pccpu - 775 sys sys 1109132020 1487821
 386/9pccpu.gz - 664 sys sys 1077049387 519909
-386/9pcdisk - 775 sys sys 1109132025 2038972
+386/9pcdisk - 775 sys sys 1111119470 2038973
 386/9pcdisk.gz - 664 sys sys 1040006345 703136
-386/9pcf - 775 sys sys 1109132030 2381804
+386/9pcf - 775 sys sys 1111119476 2381805
 386/9pcf.gz - 664 sys sys 1077049490 872650
 386/9pxeload - 775 sys sys 1109598590 215716
 386/_9pcdisk.gz - 664 sys sys 1039764191 695837
@@ -379,7 +379,7 @@
 386/bin/replica/setupdirs - 775 sys sys 1020319083 44
 386/bin/replica/updatedb - 775 sys sys 1104122050 95895
 386/bin/resample - 775 sys sys 1104122050 120495
-386/bin/rio - 775 sys sys 1108960013 308970
+386/bin/rio - 775 sys sys 1111181619 309212
 386/bin/rm - 775 sys sys 1104122051 61333
 386/bin/rx - 775 sys sys 1104122051 82055
 386/bin/sam - 775 sys sys 1108960013 158001
@@ -4780,7 +4780,7 @@ sys/man/1/pwd - 664 sys sys 1104639653 744
 sys/man/1/rc - 664 sys sys 1100894083 19898
 sys/man/1/replica - 664 sys sys 1101668051 6647
 sys/man/1/resample - 664 sys sys 1015024740 1083
-sys/man/1/rio - 664 sys sys 1072729053 14321
+sys/man/1/rio - 664 sys sys 1111181608 14594
 sys/man/1/rm - 664 sys sys 944959673 515
 sys/man/1/rwd - 664 sys sys 1042469992 2958
 sys/man/1/sam - 664 sys sys 984709628 18107
@@ -6748,7 +6748,7 @@ sys/src/cmd/8l/l.h - 664 sys sys 1107721553 5803
 sys/src/cmd/8l/list.c - 664 sys sys 1045503947 4185
 sys/src/cmd/8l/mkfile - 664 sys sys 1032102046 363
 sys/src/cmd/8l/obj.c - 664 sys sys 1107756104 26053
-sys/src/cmd/8l/optab.c - 664 sys sys 1071778472 16231
+sys/src/cmd/8l/optab.c - 664 sys sys 1111156413 16231
 sys/src/cmd/8l/pass.c - 664 sys sys 1095107668 13675
 sys/src/cmd/8l/span.c - 664 sys sys 1107721554 23294
 sys/src/cmd/9660srv - 20000000775 sys sys 944960735 0
@@ -6806,25 +6806,25 @@ sys/src/cmd/acid/proc.c - 664 sys sys 1014924908 4513
 sys/src/cmd/acid/util.c - 664 sys sys 944960738 4297
 sys/src/cmd/acme - 20000000775 sys sys 969511023 0
 sys/src/cmd/acme/acme.c - 664 sys sys 1104430286 19613
-sys/src/cmd/acme/addr.c - 664 sys sys 1018553456 4787
+sys/src/cmd/acme/addr.c - 664 sys sys 1111171698 4805
 sys/src/cmd/acme/buff.c - 664 sys sys 1014926092 5573
-sys/src/cmd/acme/cols.c - 664 sys sys 1079102914 11126
-sys/src/cmd/acme/dat.h - 664 sys sys 1107154481 11165
+sys/src/cmd/acme/cols.c - 664 sys sys 1111119425 11229
+sys/src/cmd/acme/dat.h - 664 sys sys 1111171698 11124
 sys/src/cmd/acme/disk.c - 664 sys sys 1014926093 2151
 sys/src/cmd/acme/ecmd.c - 664 sys sys 1077376256 24294
 sys/src/cmd/acme/edit.c - 664 sys sys 1101910761 12068
 sys/src/cmd/acme/edit.h - 664 sys sys 969500816 2466
 sys/src/cmd/acme/elog.c - 664 sys sys 1078839859 7236
-sys/src/cmd/acme/exec.c - 664 sys sys 1099329953 28183
+sys/src/cmd/acme/exec.c - 664 sys sys 1111171699 28243
 sys/src/cmd/acme/file.c - 664 sys sys 1044626079 5717
 sys/src/cmd/acme/fns.h - 664 sys sys 1107154481 2916
-sys/src/cmd/acme/fsys.c - 664 sys sys 1107897581 12891
-sys/src/cmd/acme/look.c - 664 sys sys 1077376257 14213
+sys/src/cmd/acme/fsys.c - 664 sys sys 1111171699 13097
+sys/src/cmd/acme/look.c - 664 sys sys 1111171699 14212
 sys/src/cmd/acme/mkfile - 664 sys sys 1058463682 543
 sys/src/cmd/acme/regx.c - 664 sys sys 1014926094 16057
 sys/src/cmd/acme/rows.c - 664 sys sys 1103565437 14702
-sys/src/cmd/acme/scrl.c - 664 sys sys 1014926095 3072
-sys/src/cmd/acme/text.c - 664 sys sys 1103606882 27652
+sys/src/cmd/acme/scrl.c - 664 sys sys 1111119426 2875
+sys/src/cmd/acme/text.c - 664 sys sys 1111171700 27912
 sys/src/cmd/acme/time.c - 664 sys sys 1014926095 1783
 sys/src/cmd/acme/util.c - 664 sys sys 1107154483 7984
 sys/src/cmd/acme/wind.c - 664 sys sys 1104874643 11201
@@ -10269,7 +10269,7 @@ sys/src/cmd/rio/scrl.c - 664 sys sys 1014926357 3245
 sys/src/cmd/rio/time.c - 664 sys sys 1014926357 1829
 sys/src/cmd/rio/util.c - 664 sys sys 1014926357 2061
 sys/src/cmd/rio/wctl.c - 664 sys sys 1023206837 8808
-sys/src/cmd/rio/wind.c - 664 sys sys 1097973839 32996
+sys/src/cmd/rio/wind.c - 664 sys sys 1111181618 33353
 sys/src/cmd/rio/xfid.c - 664 sys sys 1103205531 17446
 sys/src/cmd/rm.c - 664 sys sys 1014926615 1563
 sys/src/cmd/rx.c - 664 sys sys 1099760378 4382
@@ -10281,18 +10281,18 @@ sys/src/cmd/sam/disk.c - 664 sys sys 1014926938 1988
 sys/src/cmd/sam/error.c - 664 sys sys 1108939612 2222
 sys/src/cmd/sam/errors.h - 664 sys sys 944961628 695
 sys/src/cmd/sam/file.c - 664 sys sys 1045505553 11030
-sys/src/cmd/sam/io.c - 664 sys sys 1017166329 4414
+sys/src/cmd/sam/io.c - 664 sys sys 1111181614 4688
 sys/src/cmd/sam/list.c - 664 sys sys 944961628 858
 sys/src/cmd/sam/mesg.c - 664 sys sys 1063854937 14046
-sys/src/cmd/sam/mesg.h - 664 sys sys 1014926938 3773
-sys/src/cmd/sam/mkfile - 664 sys sys 1108939611 559
+sys/src/cmd/sam/mesg.h - 664 sys sys 1111181613 3785
+sys/src/cmd/sam/mkfile - 664 sys sys 1111181613 429
 sys/src/cmd/sam/moveto.c - 664 sys sys 944961628 2698
 sys/src/cmd/sam/multi.c - 664 sys sys 944961628 1846
 sys/src/cmd/sam/parse.h - 664 sys sys 944961629 1910
 sys/src/cmd/sam/plan9.c - 664 sys sys 1108939612 2860
 sys/src/cmd/sam/rasp.c - 664 sys sys 950104640 5618
 sys/src/cmd/sam/regexp.c - 664 sys sys 944961629 15390
-sys/src/cmd/sam/sam.c - 664 sys sys 1017166330 12190
+sys/src/cmd/sam/sam.c - 664 sys sys 1111181614 12063
 sys/src/cmd/sam/sam.h - 664 sys sys 1108939611 9584
 sys/src/cmd/sam/shell.c - 664 sys sys 1108939613 3149
 sys/src/cmd/sam/string.c - 664 sys sys 944961629 2766
@@ -10300,17 +10300,17 @@ sys/src/cmd/sam/sys.c - 664 sys sys 1014926939 745
 sys/src/cmd/sam/util.c - 664 sys sys 944961629 766
 sys/src/cmd/sam/xec.c - 664 sys sys 960256554 8509
 sys/src/cmd/samterm - 20000000775 sys sys 954038409 0
-sys/src/cmd/samterm/flayer.c - 664 sys sys 1014926592 9863
+sys/src/cmd/samterm/flayer.c - 664 sys sys 1111181617 9869
 sys/src/cmd/samterm/flayer.h - 664 sys sys 956946464 1147
 sys/src/cmd/samterm/icons.c - 664 sys sys 1014926592 1627
-sys/src/cmd/samterm/io.c - 664 sys sys 952627627 4226
-sys/src/cmd/samterm/main.c - 664 sys sys 1066572812 10009
+sys/src/cmd/samterm/io.c - 664 sys sys 1111181617 4227
+sys/src/cmd/samterm/main.c - 664 sys sys 1111181616 11442
 sys/src/cmd/samterm/menu.c - 664 sys sys 1045502822 6528
 sys/src/cmd/samterm/mesg.c - 664 sys sys 1106263089 12586
-sys/src/cmd/samterm/mkfile - 664 sys sys 1066572811 595
-sys/src/cmd/samterm/plan9.c - 664 sys sys 1106263089 4763
+sys/src/cmd/samterm/mkfile - 664 sys sys 1111181616 465
+sys/src/cmd/samterm/plan9.c - 664 sys sys 1111181617 4901
 sys/src/cmd/samterm/rasp.c - 664 sys sys 944961350 4433
-sys/src/cmd/samterm/samterm.h - 664 sys sys 1106263089 3750
+sys/src/cmd/samterm/samterm.h - 664 sys sys 1111181616 3773
 sys/src/cmd/samterm/scroll.c - 664 sys sys 1014926593 3302
 sys/src/cmd/samterm/syms - 664 sys sys 944961351 17698
 sys/src/cmd/scat - 20000000775 sys sys 964307379 0
@@ -11348,7 +11348,7 @@ sys/src/games/music/jukebox/colors.h - 664 sys sys 1103793918 692
 sys/src/games/music/jukebox/mk.dep - 664 sys sys 1103793918 653
 sys/src/games/music/jukebox/mkfile - 664 sys sys 1103793918 234
 sys/src/games/music/jukebox/music.c - 664 sys sys 1111074158 28912
-sys/src/games/music/jukebox/playlist.c - 664 sys sys 1103793919 6456
+sys/src/games/music/jukebox/playlist.c - 664 sys sys 1111156611 6629
 sys/src/games/music/jukebox/playlist.h - 664 sys sys 1103793919 505
 sys/src/games/music/jukefs - 20000000775 sys sys 1103793922 0
 sys/src/games/music/jukefs/catset.c - 664 sys sys 1103793919 3080
@@ -11369,7 +11369,7 @@ sys/src/games/music/mkfile - 664 sys sys 1103793915 723
 sys/src/games/music/mkinc - 664 sys sys 1103793915 92
 sys/src/games/music/playlistfs - 20000000775 sys sys 1103794221 0
 sys/src/games/music/playlistfs/boilerplate.c - 664 sys sys 1105531426 1362
-sys/src/games/music/playlistfs/fs.c - 664 sys sys 1107436434 17485
+sys/src/games/music/playlistfs/fs.c - 664 sys sys 1111156578 17544
 sys/src/games/music/playlistfs/main.c - 664 sys sys 1103793922 1636
 sys/src/games/music/playlistfs/mk.dep - 664 sys sys 1103793923 594
 sys/src/games/music/playlistfs/mkfile - 664 sys sys 1103793923 187
@@ -11789,7 +11789,7 @@ sys/src/libc/port/pool.acid - 664 sys sys 1110989242 12026
 sys/src/libc/port/pool.c - 664 sys sys 1102093118 30853
 sys/src/libc/port/pow.c - 664 sys sys 1014927401 965
 sys/src/libc/port/pow10.c - 664 sys sys 1014927401 1946
-sys/src/libc/port/profile.c - 664 sys sys 1067719045 5495
+sys/src/libc/port/profile.c - 664 sys sys 1111156473 5343
 sys/src/libc/port/qsort.c - 664 sys sys 1014927401 1650
 sys/src/libc/port/quote.c - 664 sys sys 1014927401 2246
 sys/src/libc/port/rand.c - 664 sys sys 1035832918 79
@@ -12482,8 +12482,8 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
-386/9pc - 775 sys sys 1111119465 1833271
-386/9pcdisk - 775 sys sys 1111119470 2038973
-386/9pcf - 775 sys sys 1111119476 2381805
-sys/src/cmd/acme/cols.c - 664 sys sys 1111119425 11229
-sys/src/cmd/acme/scrl.c - 664 sys sys 1111119426 2875
+386/bin/acme - 775 sys sys 1111205297 428543
+386/bin/rio - 775 sys sys 1111205298 309212
+386/bin/sam - 775 sys sys 1111205299 158534
+386/bin/aux/samterm - 775 sys sys 1111205297 249317
+386/lib/libc.a - 664 sys sys 1111205300 502284

+ 27 - 27
dist/replica/plan9.db

@@ -20,7 +20,7 @@
 386/bin/9660srv - 775 sys sys 1108354539 103973
 386/bin/aan - 775 sys sys 1108354539 130710
 386/bin/acid - 775 sys sys 1108960003 355983
-386/bin/acme - 775 sys sys 1108960004 428209
+386/bin/acme - 775 sys sys 1111205297 428543
 386/bin/ape - 20000000775 sys sys 1016944144 0
 386/bin/ape/basename - 775 sys sys 1087442501 132681
 386/bin/ape/cc - 775 sys sys 1104121958 70291
@@ -135,7 +135,7 @@
 386/bin/aux/posttek - 775 sys sys 1087442508 163239
 386/bin/aux/rdwr - 775 sys sys 1104121984 38303
 386/bin/aux/reboot - 775 sys sys 1104121984 60321
-386/bin/aux/samterm - 775 sys sys 1106799170 247872
+386/bin/aux/samterm - 775 sys sys 1111205297 249317
 386/bin/aux/searchfs - 775 sys sys 1108354548 89556
 386/bin/aux/sprog - 775 sys sys 1104121985 79349
 386/bin/aux/ssh_genkey - 775 sys sys 1045537957 194629
@@ -379,10 +379,10 @@
 386/bin/replica/setupdirs - 775 sys sys 1020319083 44
 386/bin/replica/updatedb - 775 sys sys 1104122050 95895
 386/bin/resample - 775 sys sys 1104122050 120495
-386/bin/rio - 775 sys sys 1108960013 308970
+386/bin/rio - 775 sys sys 1111205298 309212
 386/bin/rm - 775 sys sys 1104122051 61333
 386/bin/rx - 775 sys sys 1104122051 82055
-386/bin/sam - 775 sys sys 1108960013 158001
+386/bin/sam - 775 sys sys 1111205299 158534
 386/bin/scat - 775 sys sys 1106799180 283256
 386/bin/scp - 775 sys sys 1104122053 151911
 386/bin/scuzz - 775 sys sys 1104122053 111613
@@ -537,7 +537,7 @@
 386/lib/libauthsrv.a - 664 sys sys 1108268394 33778
 386/lib/libbin.a - 664 sys sys 1108268394 2534
 386/lib/libbio.a - 664 sys sys 1108268394 26078
-386/lib/libc.a - 664 sys sys 1108960020 502516
+386/lib/libc.a - 664 sys sys 1111205300 502284
 386/lib/libcomplete.a - 664 sys sys 1108268395 6370
 386/lib/libcontrol.a - 664 sys sys 1108699738 274922
 386/lib/libdisk.a - 664 sys sys 1108268396 42234
@@ -4780,7 +4780,7 @@ sys/man/1/pwd - 664 sys sys 1104639653 744
 sys/man/1/rc - 664 sys sys 1100894083 19898
 sys/man/1/replica - 664 sys sys 1101668051 6647
 sys/man/1/resample - 664 sys sys 1015024740 1083
-sys/man/1/rio - 664 sys sys 1072729053 14321
+sys/man/1/rio - 664 sys sys 1111181608 14594
 sys/man/1/rm - 664 sys sys 944959673 515
 sys/man/1/rwd - 664 sys sys 1042469992 2958
 sys/man/1/sam - 664 sys sys 984709628 18107
@@ -6748,7 +6748,7 @@ sys/src/cmd/8l/l.h - 664 sys sys 1107721553 5803
 sys/src/cmd/8l/list.c - 664 sys sys 1045503947 4185
 sys/src/cmd/8l/mkfile - 664 sys sys 1032102046 363
 sys/src/cmd/8l/obj.c - 664 sys sys 1107756104 26053
-sys/src/cmd/8l/optab.c - 664 sys sys 1071778472 16231
+sys/src/cmd/8l/optab.c - 664 sys sys 1111156413 16231
 sys/src/cmd/8l/pass.c - 664 sys sys 1095107668 13675
 sys/src/cmd/8l/span.c - 664 sys sys 1107721554 23294
 sys/src/cmd/9660srv - 20000000775 sys sys 944960735 0
@@ -6806,25 +6806,25 @@ sys/src/cmd/acid/proc.c - 664 sys sys 1014924908 4513
 sys/src/cmd/acid/util.c - 664 sys sys 944960738 4297
 sys/src/cmd/acme - 20000000775 sys sys 969511023 0
 sys/src/cmd/acme/acme.c - 664 sys sys 1104430286 19613
-sys/src/cmd/acme/addr.c - 664 sys sys 1018553456 4787
+sys/src/cmd/acme/addr.c - 664 sys sys 1111171698 4805
 sys/src/cmd/acme/buff.c - 664 sys sys 1014926092 5573
 sys/src/cmd/acme/cols.c - 664 sys sys 1111119425 11229
-sys/src/cmd/acme/dat.h - 664 sys sys 1107154481 11165
+sys/src/cmd/acme/dat.h - 664 sys sys 1111171698 11124
 sys/src/cmd/acme/disk.c - 664 sys sys 1014926093 2151
 sys/src/cmd/acme/ecmd.c - 664 sys sys 1077376256 24294
 sys/src/cmd/acme/edit.c - 664 sys sys 1101910761 12068
 sys/src/cmd/acme/edit.h - 664 sys sys 969500816 2466
 sys/src/cmd/acme/elog.c - 664 sys sys 1078839859 7236
-sys/src/cmd/acme/exec.c - 664 sys sys 1099329953 28183
+sys/src/cmd/acme/exec.c - 664 sys sys 1111171699 28243
 sys/src/cmd/acme/file.c - 664 sys sys 1044626079 5717
 sys/src/cmd/acme/fns.h - 664 sys sys 1107154481 2916
-sys/src/cmd/acme/fsys.c - 664 sys sys 1107897581 12891
-sys/src/cmd/acme/look.c - 664 sys sys 1077376257 14213
+sys/src/cmd/acme/fsys.c - 664 sys sys 1111171699 13097
+sys/src/cmd/acme/look.c - 664 sys sys 1111171699 14212
 sys/src/cmd/acme/mkfile - 664 sys sys 1058463682 543
 sys/src/cmd/acme/regx.c - 664 sys sys 1014926094 16057
 sys/src/cmd/acme/rows.c - 664 sys sys 1103565437 14702
 sys/src/cmd/acme/scrl.c - 664 sys sys 1111119426 2875
-sys/src/cmd/acme/text.c - 664 sys sys 1103606882 27652
+sys/src/cmd/acme/text.c - 664 sys sys 1111171700 27912
 sys/src/cmd/acme/time.c - 664 sys sys 1014926095 1783
 sys/src/cmd/acme/util.c - 664 sys sys 1107154483 7984
 sys/src/cmd/acme/wind.c - 664 sys sys 1104874643 11201
@@ -10269,7 +10269,7 @@ sys/src/cmd/rio/scrl.c - 664 sys sys 1014926357 3245
 sys/src/cmd/rio/time.c - 664 sys sys 1014926357 1829
 sys/src/cmd/rio/util.c - 664 sys sys 1014926357 2061
 sys/src/cmd/rio/wctl.c - 664 sys sys 1023206837 8808
-sys/src/cmd/rio/wind.c - 664 sys sys 1097973839 32996
+sys/src/cmd/rio/wind.c - 664 sys sys 1111181618 33353
 sys/src/cmd/rio/xfid.c - 664 sys sys 1103205531 17446
 sys/src/cmd/rm.c - 664 sys sys 1014926615 1563
 sys/src/cmd/rx.c - 664 sys sys 1099760378 4382
@@ -10281,18 +10281,18 @@ sys/src/cmd/sam/disk.c - 664 sys sys 1014926938 1988
 sys/src/cmd/sam/error.c - 664 sys sys 1108939612 2222
 sys/src/cmd/sam/errors.h - 664 sys sys 944961628 695
 sys/src/cmd/sam/file.c - 664 sys sys 1045505553 11030
-sys/src/cmd/sam/io.c - 664 sys sys 1017166329 4414
+sys/src/cmd/sam/io.c - 664 sys sys 1111181614 4688
 sys/src/cmd/sam/list.c - 664 sys sys 944961628 858
 sys/src/cmd/sam/mesg.c - 664 sys sys 1063854937 14046
-sys/src/cmd/sam/mesg.h - 664 sys sys 1014926938 3773
-sys/src/cmd/sam/mkfile - 664 sys sys 1108939611 559
+sys/src/cmd/sam/mesg.h - 664 sys sys 1111181613 3785
+sys/src/cmd/sam/mkfile - 664 sys sys 1111181613 429
 sys/src/cmd/sam/moveto.c - 664 sys sys 944961628 2698
 sys/src/cmd/sam/multi.c - 664 sys sys 944961628 1846
 sys/src/cmd/sam/parse.h - 664 sys sys 944961629 1910
 sys/src/cmd/sam/plan9.c - 664 sys sys 1108939612 2860
 sys/src/cmd/sam/rasp.c - 664 sys sys 950104640 5618
 sys/src/cmd/sam/regexp.c - 664 sys sys 944961629 15390
-sys/src/cmd/sam/sam.c - 664 sys sys 1017166330 12190
+sys/src/cmd/sam/sam.c - 664 sys sys 1111181614 12063
 sys/src/cmd/sam/sam.h - 664 sys sys 1108939611 9584
 sys/src/cmd/sam/shell.c - 664 sys sys 1108939613 3149
 sys/src/cmd/sam/string.c - 664 sys sys 944961629 2766
@@ -10300,17 +10300,17 @@ sys/src/cmd/sam/sys.c - 664 sys sys 1014926939 745
 sys/src/cmd/sam/util.c - 664 sys sys 944961629 766
 sys/src/cmd/sam/xec.c - 664 sys sys 960256554 8509
 sys/src/cmd/samterm - 20000000775 sys sys 954038409 0
-sys/src/cmd/samterm/flayer.c - 664 sys sys 1014926592 9863
+sys/src/cmd/samterm/flayer.c - 664 sys sys 1111181617 9869
 sys/src/cmd/samterm/flayer.h - 664 sys sys 956946464 1147
 sys/src/cmd/samterm/icons.c - 664 sys sys 1014926592 1627
-sys/src/cmd/samterm/io.c - 664 sys sys 952627627 4226
-sys/src/cmd/samterm/main.c - 664 sys sys 1066572812 10009
+sys/src/cmd/samterm/io.c - 664 sys sys 1111181617 4227
+sys/src/cmd/samterm/main.c - 664 sys sys 1111181616 11442
 sys/src/cmd/samterm/menu.c - 664 sys sys 1045502822 6528
 sys/src/cmd/samterm/mesg.c - 664 sys sys 1106263089 12586
-sys/src/cmd/samterm/mkfile - 664 sys sys 1066572811 595
-sys/src/cmd/samterm/plan9.c - 664 sys sys 1106263089 4763
+sys/src/cmd/samterm/mkfile - 664 sys sys 1111181616 465
+sys/src/cmd/samterm/plan9.c - 664 sys sys 1111181617 4901
 sys/src/cmd/samterm/rasp.c - 664 sys sys 944961350 4433
-sys/src/cmd/samterm/samterm.h - 664 sys sys 1106263089 3750
+sys/src/cmd/samterm/samterm.h - 664 sys sys 1111181616 3773
 sys/src/cmd/samterm/scroll.c - 664 sys sys 1014926593 3302
 sys/src/cmd/samterm/syms - 664 sys sys 944961351 17698
 sys/src/cmd/scat - 20000000775 sys sys 964307379 0
@@ -11348,7 +11348,7 @@ sys/src/games/music/jukebox/colors.h - 664 sys sys 1103793918 692
 sys/src/games/music/jukebox/mk.dep - 664 sys sys 1103793918 653
 sys/src/games/music/jukebox/mkfile - 664 sys sys 1103793918 234
 sys/src/games/music/jukebox/music.c - 664 sys sys 1111074158 28912
-sys/src/games/music/jukebox/playlist.c - 664 sys sys 1103793919 6456
+sys/src/games/music/jukebox/playlist.c - 664 sys sys 1111156611 6629
 sys/src/games/music/jukebox/playlist.h - 664 sys sys 1103793919 505
 sys/src/games/music/jukefs - 20000000775 sys sys 1103793922 0
 sys/src/games/music/jukefs/catset.c - 664 sys sys 1103793919 3080
@@ -11369,7 +11369,7 @@ sys/src/games/music/mkfile - 664 sys sys 1103793915 723
 sys/src/games/music/mkinc - 664 sys sys 1103793915 92
 sys/src/games/music/playlistfs - 20000000775 sys sys 1103794221 0
 sys/src/games/music/playlistfs/boilerplate.c - 664 sys sys 1105531426 1362
-sys/src/games/music/playlistfs/fs.c - 664 sys sys 1107436434 17485
+sys/src/games/music/playlistfs/fs.c - 664 sys sys 1111156578 17544
 sys/src/games/music/playlistfs/main.c - 664 sys sys 1103793922 1636
 sys/src/games/music/playlistfs/mk.dep - 664 sys sys 1103793923 594
 sys/src/games/music/playlistfs/mkfile - 664 sys sys 1103793923 187
@@ -11789,7 +11789,7 @@ sys/src/libc/port/pool.acid - 664 sys sys 1110989242 12026
 sys/src/libc/port/pool.c - 664 sys sys 1102093118 30853
 sys/src/libc/port/pow.c - 664 sys sys 1014927401 965
 sys/src/libc/port/pow10.c - 664 sys sys 1014927401 1946
-sys/src/libc/port/profile.c - 664 sys sys 1067719045 5495
+sys/src/libc/port/profile.c - 664 sys sys 1111156473 5343
 sys/src/libc/port/qsort.c - 664 sys sys 1014927401 1650
 sys/src/libc/port/quote.c - 664 sys sys 1014927401 2246
 sys/src/libc/port/rand.c - 664 sys sys 1035832918 79

+ 28 - 0
dist/replica/plan9.log

@@ -13941,3 +13941,31 @@
 1111120244 2 c 386/9pcf - 775 sys sys 1111119476 2381805
 1111120244 3 c sys/src/cmd/acme/cols.c - 664 sys sys 1111119425 11229
 1111120244 4 c sys/src/cmd/acme/scrl.c - 664 sys sys 1111119426 2875
+1111158052 0 c sys/src/cmd/8l/optab.c - 664 sys sys 1111156413 16231
+1111158052 1 c sys/src/games/music/jukebox/playlist.c - 664 sys sys 1111156611 6629
+1111158052 2 c sys/src/games/music/playlistfs/fs.c - 664 sys sys 1111156578 17544
+1111158052 3 c sys/src/libc/port/profile.c - 664 sys sys 1111156473 5343
+1111172455 0 c sys/src/cmd/acme/addr.c - 664 sys sys 1111171698 4805
+1111172455 1 c sys/src/cmd/acme/dat.h - 664 sys sys 1111171698 11124
+1111172455 2 c sys/src/cmd/acme/exec.c - 664 sys sys 1111171699 28243
+1111172455 3 c sys/src/cmd/acme/fsys.c - 664 sys sys 1111171699 13097
+1111172455 4 c sys/src/cmd/acme/look.c - 664 sys sys 1111171699 14212
+1111172455 5 c sys/src/cmd/acme/text.c - 664 sys sys 1111171700 27912
+1111183258 0 c 386/bin/rio - 775 sys sys 1111181619 309212
+1111183258 1 c sys/man/1/rio - 664 sys sys 1111181608 14594
+1111183258 2 c sys/src/cmd/rio/wind.c - 664 sys sys 1111181618 33353
+1111183258 3 c sys/src/cmd/samterm/flayer.c - 664 sys sys 1111181617 9869
+1111183258 4 c sys/src/cmd/samterm/io.c - 664 sys sys 1111181617 4227
+1111183258 5 c sys/src/cmd/samterm/main.c - 664 sys sys 1111181616 11442
+1111183258 6 c sys/src/cmd/samterm/mkfile - 664 sys sys 1111181616 465
+1111183258 7 c sys/src/cmd/samterm/plan9.c - 664 sys sys 1111181617 4901
+1111183258 8 c sys/src/cmd/samterm/samterm.h - 664 sys sys 1111181616 3773
+1111183258 9 c sys/src/cmd/sam/io.c - 664 sys sys 1111181614 4688
+1111183258 10 c sys/src/cmd/sam/mesg.h - 664 sys sys 1111181613 3785
+1111183258 11 c sys/src/cmd/sam/mkfile - 664 sys sys 1111181613 429
+1111183258 12 c sys/src/cmd/sam/sam.c - 664 sys sys 1111181614 12063
+1111206662 0 c 386/bin/acme - 775 sys sys 1111205297 428543
+1111206662 1 c 386/bin/rio - 775 sys sys 1111205298 309212
+1111206662 2 c 386/bin/sam - 775 sys sys 1111205299 158534
+1111206662 3 c 386/bin/aux/samterm - 775 sys sys 1111205297 249317
+1111206662 4 c 386/lib/libc.a - 664 sys sys 1111205300 502284

+ 8 - 3
sys/man/1/rio

@@ -369,6 +369,10 @@ An ACK character (control-F) or Insert character triggers file name completion
 for the preceding string (see
 .IR complete (2)).
 .PP
+Typing a left or right arrow moves the cursor one character in that direction.
+Typing an SOH character (control-A) moves the cursor to the beginning of the
+current line; an ENQ character (control-F) moves to the end.
+.PP
 Text may be moved vertically within the window.
 A scroll bar on the left of the window shows in its clear portion what fragment of the
 total output text is visible on the screen, and in its gray part what
@@ -383,11 +387,12 @@ button 2, treating the scroll bar as a ruler, jumps to the indicated portion
 of the stored text.
 Holding a button pressed in the scroll bar will cause the text
 to scroll continuously until the button is released.
-Also, a VIEW key (possibly with a different label; see
-.IR keyboard (6))
+Also, a page down
 or down-arrow
 scrolls forward
-half a window, and up-arrow scrolls back.
+half a window, and page up or up-arrow scrolls back.
+Typing the home key scrolls to the top of the window; typing the end key scrolls
+to the bottom.
 .PP
 The DEL character sends an
 .L interrupt

+ 1 - 1
sys/src/cmd/8l/optab.c

@@ -401,7 +401,7 @@ Optab optab[] =
 	{ AJNE,		yjcond,	Px, 0x75,0x85 },
 	{ AJOC,		yjcond,	Px, 0x71,0x81,(00) },
 	{ AJOS,		yjcond,	Px, 0x70,0x80,(00) },
-	{ AJPC,		yjcond,	Px, 0x76,0x86 },
+	{ AJPC,		yjcond,	Px, 0x7b,0x8b },
 	{ AJPL,		yjcond,	Px, 0x79,0x89 },
 	{ AJPS,		yjcond,	Px, 0x7a,0x8a },
 	{ ALAHF,	ynone,	Px, 0x9f },

+ 1 - 1
sys/src/cmd/acme/addr.c

@@ -82,7 +82,7 @@ number(Mntdir *md, Text *t, Range r, int line, int dir, int size, int *evalp)
 		break;
 	case Fore:
 		if(q1 > 0)
-			while(textreadc(t, q1-1) != '\n')
+			while(q1<t->file->nc && textreadc(t, q1-1) != '\n')
 				q1++;
 		q0 = q1;
 		goto Forward;

+ 0 - 1
sys/src/cmd/acme/dat.h

@@ -540,7 +540,6 @@ enum
 	Kscrollonedown	= KF|0x21,
 };
 
-Channel	*ckeyboard;	/* chan(Rune)[10] */
 Channel	*cplumb;		/* chan(Plumbmsg*) */
 Channel	*cwait;		/* chan(Waitmsg) */
 Channel	*ccommand;	/* chan(Command*) */

+ 2 - 2
sys/src/cmd/acme/exec.c

@@ -295,7 +295,7 @@ delcol(Text *et, Text*, Text*, int, int, Rune*, int)
 		return;
 	for(i=0; i<c->nw; i++){
 		w = c->w[i];
-		if(w->nopen[QWevent]+w->nopen[QWaddr]+w->nopen[QWdata] > 0){
+		if(w->nopen[QWevent]+w->nopen[QWaddr]+w->nopen[QWdata]+w->nopen[QWxdata] > 0){
 			warning(nil, "can't delete column; %.*S is running an external command\n", w->body.file->nname, w->body.file->name);
 			return;
 		}
@@ -1162,7 +1162,7 @@ runproc(void *argvp)
 	name[e-t] = 0;
 	e = utfrrune(name, '/');
 	if(e)
-		strcpy(name, e+1);
+		memmove(name, e+1, strlen(e+1)+1);	/* strcpy but overlaps */
 	strcat(name, " ");	/* add blank here for ease in waittask */
 	c->name = bytetorune(name, &c->nname);
 	free(name);

+ 16 - 2
sys/src/cmd/acme/fsys.c

@@ -166,10 +166,24 @@ fsysproc(void *)
 		if(fcall[x->type] == nil)
 			x = respond(x, &t, "bad fcall type");
 		else{
-			if(x->type==Tversion || x->type==Tauth)
+			switch(x->type){
+			case Tversion:
+			case Tauth:
+			case Tflush:
 				f = nil;
-			else
+				break;
+			case Tattach:
+				f = newfid(x->fid);
+				break;
+			default:
 				f = newfid(x->fid);
+				if(!f->busy){
+					x->f = f;
+					x = respond(x, &t, "fid not in use");
+					continue;
+				}
+				break;
+			}
 			x->f = f;
 			x  = (*fcall[x->type])(x, f);
 		}

+ 1 - 1
sys/src/cmd/acme/look.c

@@ -408,7 +408,7 @@ dirname(Text *t, Rune *r, int n)
 	nt = t->w->tag.file->nc;
 	if(nt == 0)
 		goto Rescue;
-	if(n>=1 &&  r[0]=='/')
+	if(n>=1 && r[0]=='/')
 		goto Rescue;
 	b = runemalloc(nt+n+1);
 	bufread(t->w->tag.file, 0, b, nt);

+ 31 - 24
sys/src/cmd/acme/text.c

@@ -383,6 +383,14 @@ textinsert(Text *t, uint q0, Rune *r, uint n, int tofile)
 	}
 }
 
+void
+typecommit(Text *t)
+{
+	if(t->w != nil)
+		wincommit(t->w, t);
+	else
+		textcommit(t, TRUE);
+}
 
 void
 textfill(Text *t)
@@ -392,12 +400,8 @@ textfill(Text *t)
 
 	if(t->lastlinefull || t->nofill)
 		return;
-	if(t->ncache > 0){
-		if(t->w != nil)
-			wincommit(t->w, t);
-		else
-			textcommit(t, TRUE);
-	}
+	if(t->ncache > 0)
+		typecommit(t);
 	rp = fbufalloc();
 	do{
 		n = t->file->nc-(t->org+t->nchars);
@@ -646,19 +650,13 @@ texttype(Text *t, Rune r)
 	switch(r){
 	case Kleft:
 		if(t->q0 > 0){
-			if(t->w)
-				wincommit(t->w, t);
-			else
-				textcommit(t, TRUE);
+			typecommit(t);
 			textshow(t, t->q0-1, t->q0-1, TRUE);
 		}
 		return;
 	case Kright:
 		if(t->q1 < t->file->nc){
-			if(t->w)
-				wincommit(t->w, t);
-			else
-				textcommit(t, TRUE);
+			typecommit(t);
 			textshow(t, t->q1+1, t->q1+1, TRUE);
 		}
 		return;
@@ -689,15 +687,28 @@ texttype(Text *t, Rune r)
 		textsetorigin(t, q0, TRUE);
 		return;
 	case Khome:
+		typecommit(t);
 		textshow(t, 0, 0, FALSE);
 		return;
 	case Kend:
-		if(t->w)
-			wincommit(t->w, t);
-		else
-			textcommit(t, TRUE);
+		typecommit(t);
 		textshow(t, t->file->nc, t->file->nc, FALSE);
 		return;
+	case 0x01:	/* ^A: beginning of line */
+		typecommit(t);
+		/* go to where ^U would erase, if not already at BOL */
+		nnb = 0;
+		if(t->q0>0 && textreadc(t, t->q0-1)!='\n')
+			nnb = textbswidth(t, 0x15);
+		textshow(t, t->q0-nnb, t->q0-nnb, TRUE);
+		return;
+	case 0x05:	/* ^E: end of line */
+		typecommit(t);
+		q0 = t->q0;
+		while(q0<t->file->nc && textreadc(t, q0)!='\n')
+			q0++;
+		textshow(t, q0, q0, TRUE);
+		return;
 	}
 	if(t->what == Body){
 		seq++;
@@ -721,12 +732,8 @@ texttype(Text *t, Rune r)
 	case 0x1B:
 		if(t->eq0 != ~0)
 			textsetselect(t, t->eq0, t->q0);
-		if(t->ncache > 0){
-			if(t->w != nil)
-				wincommit(t->w, t);
-			else
-				textcommit(t, TRUE);
-		}
+		if(t->ncache > 0)
+			typecommit(t);
 		return;
 	case 0x08:	/* ^H: erase character */
 	case 0x15:	/* ^U: erase line */

+ 15 - 2
sys/src/cmd/rio/wind.c

@@ -613,9 +613,22 @@ wkeyctl(Window *w, Rune r)
 			wshow(w, 0);
 			return;
 		case Kend:
-		case 0x05:
 			wshow(w, w->nr);
 			return;
+		case 0x01:	/* ^A: beginning of line */
+			if(w->q0==0 || w->q0==w->qh || w->r[w->q0-1]=='\n')
+				return;
+			nb = wbswidth(w, 0x15 /* ^U */);
+			wsetselect(w, w->q0-nb, w->q0-nb);
+			wshow(w, w->q0);
+			return;
+		case 0x05:	/* ^E: end of line */
+			q0 = w->q0;
+			while(q0 < w->nr && w->r[q0]!='\n')
+				q0++;
+			wsetselect(w, q0, q0);
+			wshow(w, w->q0);
+			return;
 		}
 	if(w->rawing && (w->q0==w->nr || w->mouseopen)){
 		waddraw(w, &r, 1);
@@ -668,7 +681,7 @@ wkeyctl(Window *w, Rune r)
 		if(nb > 0){
 			wdelete(w, q0, q0+nb);
 			wsetselect(w, q0, q0);
-	}
+		}
 		return;
 	}
 	/* otherwise ordinary character; just insert */

+ 26 - 9
sys/src/cmd/sam/io.c

@@ -176,7 +176,7 @@ int	remotefd0 = 0;
 int	remotefd1 = 1;
 
 void
-bootterm(char *machine, char **argv, char **end)
+bootterm(char *machine, char **argv)
 {
 	int ph2t[2], pt2h[2];
 
@@ -186,7 +186,6 @@ bootterm(char *machine, char **argv, char **end)
 		close(remotefd0);
 		close(remotefd1);
 		argv[0] = "samterm";
-		*end = 0;
 		exec(samterm, argv);
 		fprint(2, "can't exec: ");
 		perror(samterm);
@@ -203,7 +202,6 @@ bootterm(char *machine, char **argv, char **end)
 		close(pt2h[0]);
 		close(pt2h[1]);
 		argv[0] = "samterm";
-		*end = 0;
 		exec(samterm, argv);
 		fprint(2, "can't exec: ");
 		perror(samterm);
@@ -220,10 +218,28 @@ bootterm(char *machine, char **argv, char **end)
 }
 
 void
-connectto(char *machine)
+connectto(char *machine, char **argv)
 {
 	int p1[2], p2[2];
-
+	char **av;
+	int ac;
+	
+	// count args
+	for(av = argv; *av; av++)
+		;
+	av = malloc(sizeof(char*)*((av-argv) + 5));
+	if(av == nil){
+		dprint("out of memory\n");
+		exits("fork/exec");
+	}
+	ac = 0;
+	av[ac++] = RX;
+	av[ac++] = machine;
+	av[ac++] = rsamname;
+	av[ac++] = "-R";
+	while(*argv)
+		av[ac++] = *argv++;
+	av[ac] = 0;
 	if(pipe(p1)<0 || pipe(p2)<0){
 		dprint("can't pipe\n");
 		exits("pipe");
@@ -238,7 +254,7 @@ connectto(char *machine)
 		close(p1[1]);
 		close(p2[0]);
 		close(p2[1]);
-		execl(RXPATH, RX, machine, rsamname, "-R", (char*)0);
+		exec(RXPATH, av);
 		dprint("can't exec %s\n", RXPATH);
 		exits("exec");
 
@@ -246,17 +262,18 @@ connectto(char *machine)
 		dprint("can't fork\n");
 		exits("fork");
 	}
+	free(av);
 	close(p1[1]);
 	close(p2[0]);
 }
 
 void
-startup(char *machine, int Rflag, char **argv, char **end)
+startup(char *machine, int Rflag, char **argv, char **files)
 {
 	if(machine)
-		connectto(machine);
+		connectto(machine, files);
 	if(!Rflag)
-		bootterm(machine, argv, end);
+		bootterm(machine, argv);
 	downloaded = 1;
 	outTs(Hversion, VERSION);
 }

+ 1 - 1
sys/src/cmd/sam/mesg.h

@@ -66,7 +66,7 @@ typedef enum Hmesg
 	Hsnarflen,	/* report length of implicit snarf */
 	Hack,		/* request acknowledgement */
 	Hexit,
-	Hplumb,		/* return plumb message to terminal */
+	Hplumb,		/* return plumb message to terminal - version 1 */
 	HMAX,
 }Hmesg;
 typedef struct Header{

+ 0 - 7
sys/src/cmd/sam/mkfile

@@ -38,10 +38,3 @@ UPDATE=\
 
 address.$O cmd.$O parse.$O xec.$O unix.$O:	parse.h
 
-safeinstall: $O.out
-	mv $BIN/$TARG $BIN/o$TARG
-	cp $prereq $BIN/$TARG
-
-safeinstallall:V:
-	for (objtype in $CPUS)
-		mk safeinstall

+ 33 - 44
sys/src/cmd/sam/sam.c

@@ -37,47 +37,36 @@ void main(int argc, char *argv[])
 {
 	int i;
 	String *t;
-	char **ap, **arg;
-
-	arg = argv++;
-	ap = argv;
-	while(argc>1 && argv[0] && argv[0][0]=='-'){
-		switch(argv[0][1]){
-		case 'd':
-			dflag++;
-			break;
-
-		case 'r':
-			--argc, argv++;
-			if(argc == 1)
-				usage();
-			machine = *argv;
-			break;
-
-		case 'R':
-			Rflag++;
-			break;
-
-		case 't':
-			--argc, argv++;
-			if(argc == 1)
-				usage();
-			samterm = *argv;
-			break;
-
-		case 's':
-			--argc, argv++;
-			if(argc == 1)
-				usage();
-			rsamname = *argv;
-			break;
-
-		default:
-			dprint("sam: unknown flag %c\n", argv[0][1]);
-			exits("usage");
-		}
-		--argc, argv++;
-	}
+	char *termargs[10], **ap;
+	
+	ap = termargs;
+	*ap++ = "samterm";
+	ARGBEGIN{
+	case 'd':
+		dflag++;
+		break;
+	case 'r':
+		machine = EARGF(usage());
+		break;
+	case 'R':
+		Rflag++;
+		break;
+	case 't':
+		samterm = EARGF(usage());
+		break;
+	case 's':
+		rsamname = EARGF(usage());
+		break;
+	default:
+		dprint("sam: unknown flag %c\n", ARGC());
+		usage();
+	/* options for samterm */
+	case 'a':
+		*ap++ = "-a";
+		break;
+	}ARGEND
+	*ap = nil;
+	
 	Strinit(&cmdstr);
 	Strinit0(&lastpat);
 	Strinit0(&lastregexp);
@@ -91,11 +80,11 @@ void main(int argc, char *argv[])
 	if(home == 0)
 		home = "/";
 	if(!dflag)
-		startup(machine, Rflag, arg, ap);
+		startup(machine, Rflag, termargs, argv);
 	notify(notifyf);
 	getcurwd();
-	if(argc>1){
-		for(i=0; i<argc-1; i++){
+	if(argc>0){
+		for(i=0; i<argc; i++){
 			if(!setjmp(mainloop)){
 				t = tmpcstr(argv[i]);
 				Straddc(t, '\0');

+ 2 - 1
sys/src/cmd/samterm/flayer.c

@@ -252,10 +252,11 @@ fldelete(Flayer *l, long p0, long p1)
 int
 flselect(Flayer *l)
 {
-	int ret = 0;
+	int ret;
 	if(l->visible!=All)
 		flupfront(l);
 	frselect(&l->f, mousectl);
+	ret = 0;
 	if(l->f.p0==l->f.p1){
 		if(mousep->msec-l->click<Clicktime && l->f.p0+l->origin==l->p0){
 			ret = 1;

+ 2 - 1
sys/src/cmd/samterm/io.c

@@ -28,7 +28,8 @@ Keyboardctl *keyboardctl;
 void	panic(char*);
 
 void
-initio(void){
+initio(void)
+{
 	threadsetname("main");
 	mousectl = initmouse(nil, display->image);
 	if(mousectl == nil){

+ 82 - 6
sys/src/cmd/samterm/main.c

@@ -23,6 +23,7 @@ long	modified = 0;		/* strange lookahead for menus */
 char	hostlock = 1;
 char	hasunlocked = 0;
 int	maxtab = 8;
+int	autoindent;
 
 void
 threadmain(int argc, char *argv[])
@@ -109,7 +110,8 @@ threadmain(int argc, char *argv[])
 
 
 void
-resize(void){
+resize(void)
+{
 	int i;
 
 	flresize(screen->clipr);
@@ -417,9 +419,37 @@ flushtyping(int clearesc)
 	typeend = -1;
 }
 
-#define	SCROLLKEY	Kdown
 #define	BACKSCROLLKEY	Kup
+#define	ENDKEY	Kend
 #define	ESC		0x1B
+#define	HOMEKEY	Khome
+#define	LEFTARROW	Kleft
+#define	LINEEND	0x05
+#define	LINESTART	0x01
+#define	PAGEDOWN	Kpgdown
+#define	PAGEUP	Kpgup
+#define	RIGHTARROW	Kright
+#define	SCROLLKEY	Kdown
+
+int
+nontypingkey(int c)
+{
+	switch(c){
+	case BACKSCROLLKEY:
+	case ENDKEY:
+	case HOMEKEY:
+	case LEFTARROW:
+	case LINEEND:
+	case LINESTART:
+	case PAGEDOWN:
+	case PAGEUP:
+	case RIGHTARROW:
+	case SCROLLKEY:
+		return 1;
+	}
+	return 0;
+}
+
 
 void
 type(Flayer *l, int res)	/* what a bloody mess this is */
@@ -433,7 +463,7 @@ type(Flayer *l, int res)	/* what a bloody mess this is */
 
 	scrollkey = 0;
 	if(res == RKeyboard)
-		scrollkey = (qpeekc()==SCROLLKEY || qpeekc()==BACKSCROLLKEY);	/* ICK */
+		scrollkey = nontypingkey(qpeekc());	/* ICK */
 
 	if(hostlock || t->lock){
 		kbdblock();
@@ -448,7 +478,7 @@ type(Flayer *l, int res)	/* what a bloody mess this is */
 	backspacing = 0;
 	while((c = kbdchar())>0){
 		if(res == RKeyboard){
-			if(c==SCROLLKEY || c==BACKSCROLLKEY || c==ESC)
+			if(nontypingkey(c) || c==ESC)
 				break;
 			/* backspace, ctrl-u, ctrl-w, del */
 			if(c=='\b' || c==0x15 || c==0x17 || c==0x7F){
@@ -457,6 +487,19 @@ type(Flayer *l, int res)	/* what a bloody mess this is */
 			}
 		}
 		*p++ = c;
+		if(autoindent)
+		if(c == '\n'){
+			/* autoindent */
+			int cursor, ch;
+			cursor = ctlu(&t->rasp, 0, a+(p-buf)-1);
+			while(p < buf+nelem(buf)){
+				ch = raspc(&t->rasp, cursor++);
+				if(ch == ' ' || ch == '\t')
+					*p++ = ch;
+				else
+					break;
+			}
+		}
 		if(c == '\n' || p >= buf+sizeof(buf)/sizeof(buf[0]))
 			break;
 	}
@@ -476,17 +519,50 @@ type(Flayer *l, int res)	/* what a bloody mess this is */
 			flushtyping(0);
 		onethird(l, a);
 	}
-	if(c == SCROLLKEY){
+	if(c==SCROLLKEY || c==PAGEDOWN){
 		flushtyping(0);
 		center(l, l->origin+l->f.nchars+1);
 		/* backspacing immediately after outcmd(): sorry */
-	}else if(c == BACKSCROLLKEY){
+	}else if(c==BACKSCROLLKEY || c==PAGEUP){
 		flushtyping(0);
 		a0 = l->origin-l->f.nchars;
 		if(a0 < 0)
 			a0 = 0;
 		center(l, a0);
+	}else if(c == RIGHTARROW){
+		flushtyping(0);
+		a0 = l->p0;
+		if(a0 < t->rasp.nrunes)
+			a0++;
+		flsetselect(l, a0, a0);
+		center(l, a0);
+	}else if(c == LEFTARROW){
+		flushtyping(0);
+		a0 = l->p0;
+		if(a0 > 0)
+			a0--;
+		flsetselect(l, a0, a0);
+		center(l, a0);
+	}else if(c == HOMEKEY){
+		flushtyping(0);
+		center(l, 0);
+	}else if(c == ENDKEY){
+		flushtyping(0);
+		center(l, t->rasp.nrunes);
+	}else if(c == LINESTART || c == LINEEND){
+		flushtyping(1);
+		if(c == LINESTART)
+			while(a > 0 && raspc(&t->rasp, a-1)!='\n')
+				a--;
+		else
+			while(a < t->rasp.nrunes && raspc(&t->rasp, a)!='\n')
+				a++;
+		l->p0 = l->p1 = a;
+		for(l=t->l; l<&t->l[NL]; l++)
+			if(l->textfn)
+				flsetselect(l, l->p0, l->p1);
 	}else if(backspacing && !hostlock){
+		/* backspacing immediately after outcmd(): sorry */
 		if(l->f.p0>0 && a>0){
 			switch(c){
 			case '\b':

+ 0 - 7
sys/src/cmd/samterm/mkfile

@@ -35,10 +35,3 @@ syms:V:
 	vc -a $CFLAGS main.c	>syms
 	for(i in *.c) vc -aa $CFLAGS $i >> syms
 
-safeinstall: $O.out
-	mv $BIN/$TARG $BIN/o$TARG
-	cp $prereq $BIN/$TARG
-
-safeinstallall:V:
-	for (objtype in $CPUS)
-		mk safeinstall

+ 16 - 3
sys/src/cmd/samterm/plan9.c

@@ -11,15 +11,28 @@
 
 static char exname[64];
 
+void
+usage(void)
+{
+	fprint(2, "usage: samterm [-a]\n");
+	threadexitsall("usage");
+}
+
 void
 getscreen(int argc, char **argv)
 {
 	char *t;
 
-	USED(argc);
-	USED(argv);
+	ARGBEGIN{
+	case 'a':
+		autoindent = 1;
+		break;
+	default:
+		usage();
+	}ARGEND
+
 	if(initdraw(panic1, nil, "sam") < 0){
-		fprint(2, "samterm: initimage: %r\n");
+		fprint(2, "samterm: initdraw: %r\n");
 		threadexitsall("init");
 	}
 	t = getenv("tabstop");

+ 1 - 0
sys/src/cmd/samterm/samterm.h

@@ -85,6 +85,7 @@ extern Channel *hostc;
 extern int	hversion;
 extern int	plumbfd;
 extern int	exiting;
+extern int	autoindent;
 
 Rune	*gettext(Flayer*, long, ulong*);
 void	*alloc(ulong n);

+ 14 - 6
sys/src/games/music/jukebox/playlist.c

@@ -253,6 +253,7 @@ playvolproc(void*a)
 {
 	int fd, n, nf, volume, nvolume, i;
 	static char buf[256+1];
+	static errors;
 	char *fields[3], *subfields[9];
 	Channel *chan;
 
@@ -265,20 +266,27 @@ playvolproc(void*a)
 		n = read(fd, buf, sizeof buf -1);
 		if(n == 0)
 			continue;
-		if(n < 0)
-			sysfatal("%s: %r", playvolfile);
+		if(n < 0){
+			fprint(2, "%s: %r\n", playvolfile);
+			threadexits("playvolproc");
+		}
 		buf[n] = '\0';
 		if(debug) fprint(2, "volumestring: %s\n", buf);
 		nf = tokenize(buf, fields, nelem(fields));
 		if(nf == 0)
 			continue;
-		if(nf != 2 || strcmp(fields[0], "volume"))
-			sysfatal("playvolproc: [%d]: %s", nf, fields[0]);
-
+		if(nf != 2 || strcmp(fields[0], "volume")){
+			fprint(2, "playvolproc: [%d]: %s\n", nf, fields[0]);
+			if(errors++ > 32)
+				threadexits("playvolproc");
+			continue;
+		}
 		nvolume = tokenize(fields[1], subfields, nelem(subfields));
 		if(nvolume <= 0 || nvolume > 8){
 			fprint(2, "volume format error\n");
-			threadexits(nil);
+			if(errors++ > 32)
+				threadexits("playvolproc");
+			continue;
 		}
 		volume = 0;
 		for(i = 0; i < nvolume; i++)

+ 1 - 1
sys/src/games/music/playlistfs/fs.c

@@ -413,7 +413,7 @@ rread(Worker *w)
 			f->vers = f->file->dir.qid.vers;
 		}
 	}else
-		abort();
+		sysfatal("impossible file: 0x%lux, %ld", f->file, f->file - files);
 	return nil;
 }
 

+ 10 - 12
sys/src/libc/port/profile.c

@@ -4,8 +4,6 @@
 
 extern	long	_callpc(void**);
 extern	long	_savearg(void);
-extern	void	_addv(vlong*,vlong,vlong);
-extern	void	_subv(vlong*,vlong,vlong);
 
 ulong	khz;
 uvlong	cyclefreq;
@@ -61,19 +59,19 @@ out:
 	p->count++;
 	switch(_tos->prof.what){
 	case Profkernel:
-		_subv(&p->time, p->time, _tos->pcycles);
+		p->time = p->time - _tos->pcycles;
 		goto proftime;
 	case Profuser:
 		/* Add kernel cycles on proc entry */
-		_addv(&p->time, p->time, _tos->kcycles);
+		p->time = p->time + _tos->kcycles;
 		/* fall through */
 	case Proftime:	
 	proftime:					/* Subtract cycle counter on proc entry */
 		cycles((uvlong*)&t);
-		_subv(&p->time, p->time, t);
+		p->time = p->time - t;
 		break;
 	case Profsample:
-		_subv(&p->time, p->time, (vlong)_tos->clock);
+		p->time = p->time - _tos->clock;
 		break;
 	}
 	return arg;		/* disgusting linkage */
@@ -92,18 +90,18 @@ _profout(void)
 		return arg;	/* Not our process */
 	switch(_tos->prof.what){
 	case Profkernel:		/* Add proc cycles on proc entry */
-		_addv(&p->time, p->time, _tos->pcycles);
+		p->time = p->time + _tos->pcycles;
 		goto proftime;
 	case Profuser:			/* Subtract kernel cycles on proc entry */
-		_subv(&p->time, p->time, _tos->kcycles);
+		p->time = p->time - _tos->kcycles;
 		/* fall through */
 	case Proftime:	
 	proftime:				/* Add cycle counter on proc entry */
 		cycles((uvlong*)&t);
-		_addv(&p->time, p->time, t);
+		p->time = p->time + t;
 		break;
 	case Profsample:
-		_addv(&p->time, p->time, (vlong)_tos->clock);
+		p->time = p->time + _tos->clock;
 		break;
 	}
 	_tos->prof.pp = p->old;
@@ -137,11 +135,11 @@ _profdump(void)
 	switch(_tos->prof.what){
 	case Profkernel:
 		cycles((uvlong*)&_tos->prof.first->time);
-		_addv(&_tos->prof.first->time, _tos->prof.first->time, _tos->pcycles);
+		_tos->prof.first->time = _tos->prof.first->time + _tos->pcycles;
 		break;
 	case Profuser:
 		cycles((uvlong*)&_tos->prof.first->time);
-		_addv(&_tos->prof.first->time, _tos->prof.first->time, _tos->kcycles);
+		_tos->prof.first->time = _tos->prof.first->time + _tos->kcycles;
 		break;
 	case Proftime:
 		cycles((uvlong*)&_tos->prof.first->time);