diff options
Diffstat (limited to 'man')
| -rw-r--r-- | man/1/0intro | 188 | ||||
| -rw-r--r-- | man/1/9win | 71 | ||||
| -rw-r--r-- | man/1/INDEX | 312 | ||||
| -rw-r--r-- | man/1/acme | 1203 | ||||
| -rw-r--r-- | man/1/alphabet-abc | 141 | ||||
| -rw-r--r-- | man/1/alphabet-fs | 425 | ||||
| -rw-r--r-- | man/1/alphabet-grid | 141 | ||||
| -rw-r--r-- | man/1/alphabet-main | 240 | ||||
| -rw-r--r-- | man/1/asm | 53 | ||||
| -rw-r--r-- | man/1/auplay | 120 | ||||
| -rw-r--r-- | man/1/avr | 47 | ||||
| -rw-r--r-- | man/1/basename | 40 | ||||
| -rw-r--r-- | man/1/bind | 276 | ||||
| -rw-r--r-- | man/1/blur | 74 | ||||
| -rw-r--r-- | man/1/brutus | 120 | ||||
| -rw-r--r-- | man/1/cal | 46 | ||||
| -rw-r--r-- | man/1/calendar | 47 | ||||
| -rw-r--r-- | man/1/cat | 49 | ||||
| -rw-r--r-- | man/1/cd | 32 | ||||
| -rw-r--r-- | man/1/charon | 442 | ||||
| -rw-r--r-- | man/1/chgrp | 44 | ||||
| -rw-r--r-- | man/1/chmod | 105 | ||||
| -rw-r--r-- | man/1/cleanname | 37 | ||||
| -rw-r--r-- | man/1/cmp | 50 | ||||
| -rw-r--r-- | man/1/collab | 84 | ||||
| -rw-r--r-- | man/1/collab-clients | 202 | ||||
| -rw-r--r-- | man/1/comm | 46 | ||||
| -rw-r--r-- | man/1/cook | 97 | ||||
| -rw-r--r-- | man/1/cp | 134 | ||||
| -rw-r--r-- | man/1/cprof | 221 | ||||
| -rw-r--r-- | man/1/cpu | 64 | ||||
| -rw-r--r-- | man/1/crypt | 98 | ||||
| -rw-r--r-- | man/1/date | 55 | ||||
| -rw-r--r-- | man/1/dd | 182 | ||||
| -rw-r--r-- | man/1/deb | 172 | ||||
| -rw-r--r-- | man/1/diff | 136 | ||||
| -rw-r--r-- | man/1/disdep | 68 | ||||
| -rw-r--r-- | man/1/dmview | 41 | ||||
| -rw-r--r-- | man/1/du | 66 | ||||
| -rw-r--r-- | man/1/ebook | 73 | ||||
| -rw-r--r-- | man/1/echo | 32 | ||||
| -rw-r--r-- | man/1/emu | 204 | ||||
| -rw-r--r-- | man/1/env | 27 | ||||
| -rw-r--r-- | man/1/fc | 182 | ||||
| -rw-r--r-- | man/1/filename | 61 | ||||
| -rw-r--r-- | man/1/fmt | 47 | ||||
| -rw-r--r-- | man/1/fortune | 23 | ||||
| -rw-r--r-- | man/1/freq | 40 | ||||
| -rw-r--r-- | man/1/fs | 449 | ||||
| -rw-r--r-- | man/1/ftest | 82 | ||||
| -rw-r--r-- | man/1/ftree | 95 | ||||
| -rw-r--r-- | man/1/gettar | 86 | ||||
| -rw-r--r-- | man/1/grep | 51 | ||||
| -rw-r--r-- | man/1/grid-localreg | 24 | ||||
| -rw-r--r-- | man/1/grid-monitor | 86 | ||||
| -rw-r--r-- | man/1/grid-ns | 67 | ||||
| -rw-r--r-- | man/1/grid-query | 46 | ||||
| -rw-r--r-- | man/1/grid-register | 60 | ||||
| -rw-r--r-- | man/1/gzip | 69 | ||||
| -rw-r--r-- | man/1/idea | 65 | ||||
| -rw-r--r-- | man/1/itest | 124 | ||||
| -rw-r--r-- | man/1/keyboard | 57 | ||||
| -rw-r--r-- | man/1/kill | 64 | ||||
| -rw-r--r-- | man/1/lc | 51 | ||||
| -rw-r--r-- | man/1/limbo | 218 | ||||
| -rw-r--r-- | man/1/listen | 237 | ||||
| -rw-r--r-- | man/1/logon | 77 | ||||
| -rw-r--r-- | man/1/logwindow | 23 | ||||
| -rw-r--r-- | man/1/look | 81 | ||||
| -rw-r--r-- | man/1/ls | 143 | ||||
| -rw-r--r-- | man/1/man | 136 | ||||
| -rw-r--r-- | man/1/mash | 635 | ||||
| -rw-r--r-- | man/1/mash-make | 182 | ||||
| -rw-r--r-- | man/1/mash-tk | 212 | ||||
| -rw-r--r-- | man/1/math-misc | 223 | ||||
| -rw-r--r-- | man/1/mathcalc | 97 | ||||
| -rw-r--r-- | man/1/mc | 272 | ||||
| -rw-r--r-- | man/1/mdb | 208 | ||||
| -rw-r--r-- | man/1/miniterm | 142 | ||||
| -rw-r--r-- | man/1/mk | 586 | ||||
| -rw-r--r-- | man/1/mkdir | 49 | ||||
| -rw-r--r-- | man/1/mprof | 173 | ||||
| -rw-r--r-- | man/1/mux | 149 | ||||
| -rw-r--r-- | man/1/mv | 43 | ||||
| -rw-r--r-- | man/1/netkey | 18 | ||||
| -rw-r--r-- | man/1/netstat | 42 | ||||
| -rw-r--r-- | man/1/ns | 43 | ||||
| -rw-r--r-- | man/1/nsbuild | 49 | ||||
| -rw-r--r-- | man/1/os | 85 | ||||
| -rw-r--r-- | man/1/p | 33 | ||||
| -rw-r--r-- | man/1/passwd | 75 | ||||
| -rw-r--r-- | man/1/plumb | 78 | ||||
| -rw-r--r-- | man/1/prof | 140 | ||||
| -rw-r--r-- | man/1/ps | 45 | ||||
| -rw-r--r-- | man/1/pwd | 18 | ||||
| -rw-r--r-- | man/1/rcmd | 72 | ||||
| -rw-r--r-- | man/1/read | 62 | ||||
| -rw-r--r-- | man/1/rm | 28 | ||||
| -rw-r--r-- | man/1/runas | 23 | ||||
| -rw-r--r-- | man/1/secstore | 141 | ||||
| -rw-r--r-- | man/1/sendmail | 48 | ||||
| -rw-r--r-- | man/1/session | 110 | ||||
| -rw-r--r-- | man/1/sh | 939 | ||||
| -rw-r--r-- | man/1/sh-alphabet | 417 | ||||
| -rw-r--r-- | man/1/sh-arg | 129 | ||||
| -rw-r--r-- | man/1/sh-csv | 66 | ||||
| -rw-r--r-- | man/1/sh-expr | 157 | ||||
| -rw-r--r-- | man/1/sh-file2chan | 261 | ||||
| -rw-r--r-- | man/1/sh-regex | 178 | ||||
| -rw-r--r-- | man/1/sh-sexprs | 131 | ||||
| -rw-r--r-- | man/1/sh-std | 557 | ||||
| -rw-r--r-- | man/1/sh-string | 186 | ||||
| -rw-r--r-- | man/1/sh-test | 46 | ||||
| -rw-r--r-- | man/1/sh-tk | 256 | ||||
| -rw-r--r-- | man/1/sleep | 24 | ||||
| -rw-r--r-- | man/1/sort | 33 | ||||
| -rw-r--r-- | man/1/spree-join | 45 | ||||
| -rw-r--r-- | man/1/stack | 118 | ||||
| -rw-r--r-- | man/1/stream | 54 | ||||
| -rw-r--r-- | man/1/strings | 27 | ||||
| -rw-r--r-- | man/1/sum | 47 | ||||
| -rw-r--r-- | man/1/tail | 79 | ||||
| -rw-r--r-- | man/1/tcs | 67 | ||||
| -rw-r--r-- | man/1/tee | 30 | ||||
| -rw-r--r-- | man/1/telnet | 35 | ||||
| -rw-r--r-- | man/1/time | 34 | ||||
| -rw-r--r-- | man/1/timestamp | 36 | ||||
| -rw-r--r-- | man/1/tiny | 210 | ||||
| -rw-r--r-- | man/1/tkcmd | 53 | ||||
| -rw-r--r-- | man/1/tktester | 154 | ||||
| -rw-r--r-- | man/1/toolbar | 69 | ||||
| -rw-r--r-- | man/1/touch | 27 | ||||
| -rw-r--r-- | man/1/tr | 95 | ||||
| -rw-r--r-- | man/1/tsort | 26 | ||||
| -rw-r--r-- | man/1/unicode | 62 | ||||
| -rw-r--r-- | man/1/uniq | 33 | ||||
| -rw-r--r-- | man/1/units | 110 | ||||
| -rw-r--r-- | man/1/uuencode | 79 | ||||
| -rw-r--r-- | man/1/wc | 29 | ||||
| -rw-r--r-- | man/1/webgrab | 130 | ||||
| -rw-r--r-- | man/1/wish | 86 | ||||
| -rw-r--r-- | man/1/wm | 216 | ||||
| -rw-r--r-- | man/1/wm-misc | 247 | ||||
| -rw-r--r-- | man/1/wm-sh | 274 | ||||
| -rw-r--r-- | man/1/xd | 92 | ||||
| -rw-r--r-- | man/1/yacc | 349 | ||||
| -rw-r--r-- | man/1/zeros | 45 | ||||
| -rw-r--r-- | man/10/0intro | 74 | ||||
| -rw-r--r-- | man/10/2a | 55 | ||||
| -rw-r--r-- | man/10/2c | 437 | ||||
| -rw-r--r-- | man/10/2l | 201 | ||||
| -rw-r--r-- | man/10/5coff | 82 | ||||
| -rw-r--r-- | man/10/5cv | 127 | ||||
| -rw-r--r-- | man/10/9load | 411 | ||||
| -rw-r--r-- | man/10/INDEX | 263 | ||||
| -rw-r--r-- | man/10/a.out | 242 | ||||
| -rw-r--r-- | man/10/acid | 373 | ||||
| -rw-r--r-- | man/10/allocb | 314 | ||||
| -rw-r--r-- | man/10/ar | 98 | ||||
| -rw-r--r-- | man/10/atoi | 127 | ||||
| -rw-r--r-- | man/10/c2l | 231 | ||||
| -rw-r--r-- | man/10/conf | 335 | ||||
| -rw-r--r-- | man/10/delay | 36 | ||||
| -rw-r--r-- | man/10/dev | 435 | ||||
| -rw-r--r-- | man/10/devattach | 701 | ||||
| -rw-r--r-- | man/10/dmainit | 86 | ||||
| -rw-r--r-- | man/10/dynld | 287 | ||||
| -rw-r--r-- | man/10/error | 175 | ||||
| -rw-r--r-- | man/10/eve | 42 | ||||
| -rw-r--r-- | man/10/getfields | 76 | ||||
| -rw-r--r-- | man/10/iar | 183 | ||||
| -rw-r--r-- | man/10/inb | 84 | ||||
| -rw-r--r-- | man/10/inm | 102 | ||||
| -rw-r--r-- | man/10/intrenable | 106 | ||||
| -rw-r--r-- | man/10/kbdputc | 105 | ||||
| -rw-r--r-- | man/10/kproc | 142 | ||||
| -rw-r--r-- | man/10/kprof | 34 | ||||
| -rw-r--r-- | man/10/ksize | 29 | ||||
| -rw-r--r-- | man/10/kstrip | 32 | ||||
| -rw-r--r-- | man/10/lock | 110 | ||||
| -rw-r--r-- | man/10/malloc | 81 | ||||
| -rw-r--r-- | man/10/memory | 117 | ||||
| -rw-r--r-- | man/10/mk | 668 | ||||
| -rw-r--r-- | man/10/ms2 | 58 | ||||
| -rw-r--r-- | man/10/newchan | 227 | ||||
| -rw-r--r-- | man/10/ntsrv | 69 | ||||
| -rw-r--r-- | man/10/odbc | 266 | ||||
| -rw-r--r-- | man/10/panic | 25 | ||||
| -rw-r--r-- | man/10/parsecmd | 68 | ||||
| -rw-r--r-- | man/10/plan9.ini | 789 | ||||
| -rw-r--r-- | man/10/print | 402 | ||||
| -rw-r--r-- | man/10/qio | 482 | ||||
| -rw-r--r-- | man/10/qlock | 106 | ||||
| -rw-r--r-- | man/10/readnum | 60 | ||||
| -rw-r--r-- | man/10/ref | 61 | ||||
| -rw-r--r-- | man/10/rune | 150 | ||||
| -rw-r--r-- | man/10/seconds | 64 | ||||
| -rw-r--r-- | man/10/sleep | 125 | ||||
| -rw-r--r-- | man/10/splhi | 55 | ||||
| -rw-r--r-- | man/10/srclist | 41 | ||||
| -rw-r--r-- | man/10/strcat | 170 | ||||
| -rw-r--r-- | man/10/styx | 364 | ||||
| -rw-r--r-- | man/10/styxserver | 611 | ||||
| -rw-r--r-- | man/10/xalloc | 70 | ||||
| -rw-r--r-- | man/2/0intro | 189 | ||||
| -rw-r--r-- | man/2/INDEX | 493 | ||||
| -rw-r--r-- | man/2/alphabet-intro | 236 | ||||
| -rw-r--r-- | man/2/arg | 168 | ||||
| -rw-r--r-- | man/2/asn1 | 621 | ||||
| -rw-r--r-- | man/2/attrdb | 237 | ||||
| -rw-r--r-- | man/2/bloomfilter | 89 | ||||
| -rw-r--r-- | man/2/bufio | 318 | ||||
| -rw-r--r-- | man/2/bufio-chanfill | 57 | ||||
| -rw-r--r-- | man/2/cfg | 159 | ||||
| -rw-r--r-- | man/2/command | 132 | ||||
| -rw-r--r-- | man/2/convcs | 367 | ||||
| -rw-r--r-- | man/2/crc | 62 | ||||
| -rw-r--r-- | man/2/daytime | 96 | ||||
| -rw-r--r-- | man/2/dbm | 222 | ||||
| -rw-r--r-- | man/2/debug | 382 | ||||
| -rw-r--r-- | man/2/devpointer | 57 | ||||
| -rw-r--r-- | man/2/dhcpclient | 354 | ||||
| -rw-r--r-- | man/2/dialog | 74 | ||||
| -rw-r--r-- | man/2/dict | 57 | ||||
| -rw-r--r-- | man/2/dis | 488 | ||||
| -rw-r--r-- | man/2/diskblocks | 120 | ||||
| -rw-r--r-- | man/2/disks | 317 | ||||
| -rw-r--r-- | man/2/dividers | 68 | ||||
| -rw-r--r-- | man/2/draw-0intro | 268 | ||||
| -rw-r--r-- | man/2/draw-context | 167 | ||||
| -rw-r--r-- | man/2/draw-display | 389 | ||||
| -rw-r--r-- | man/2/draw-example | 116 | ||||
| -rw-r--r-- | man/2/draw-font | 111 | ||||
| -rw-r--r-- | man/2/draw-image | 909 | ||||
| -rw-r--r-- | man/2/draw-point | 66 | ||||
| -rw-r--r-- | man/2/draw-pointer | 38 | ||||
| -rw-r--r-- | man/2/draw-rect | 138 | ||||
| -rw-r--r-- | man/2/draw-screen | 137 | ||||
| -rw-r--r-- | man/2/drawmux | 68 | ||||
| -rw-r--r-- | man/2/encoding | 50 | ||||
| -rw-r--r-- | man/2/env | 52 | ||||
| -rw-r--r-- | man/2/ether | 77 | ||||
| -rw-r--r-- | man/2/exception | 36 | ||||
| -rw-r--r-- | man/2/factotum | 174 | ||||
| -rw-r--r-- | man/2/filepat | 80 | ||||
| -rw-r--r-- | man/2/filter | 112 | ||||
| -rw-r--r-- | man/2/filter-deflate | 89 | ||||
| -rw-r--r-- | man/2/filter-slip | 52 | ||||
| -rw-r--r-- | man/2/format | 249 | ||||
| -rw-r--r-- | man/2/fsproto | 89 | ||||
| -rw-r--r-- | man/2/geodesy | 146 | ||||
| -rw-r--r-- | man/2/hash | 91 | ||||
| -rw-r--r-- | man/2/ida | 151 | ||||
| -rw-r--r-- | man/2/imagefile | 157 | ||||
| -rw-r--r-- | man/2/ip | 334 | ||||
| -rw-r--r-- | man/2/ir | 254 | ||||
| -rw-r--r-- | man/2/itslib | 101 | ||||
| -rw-r--r-- | man/2/keyring-0intro | 296 | ||||
| -rw-r--r-- | man/2/keyring-auth | 101 | ||||
| -rw-r--r-- | man/2/keyring-certtostr | 56 | ||||
| -rw-r--r-- | man/2/keyring-crypt | 120 | ||||
| -rw-r--r-- | man/2/keyring-gensk | 49 | ||||
| -rw-r--r-- | man/2/keyring-getmsg | 68 | ||||
| -rw-r--r-- | man/2/keyring-getstring | 90 | ||||
| -rw-r--r-- | man/2/keyring-ipint | 147 | ||||
| -rw-r--r-- | man/2/keyring-rc4 | 45 | ||||
| -rw-r--r-- | man/2/keyring-sha1 | 142 | ||||
| -rw-r--r-- | man/2/keyset | 79 | ||||
| -rw-r--r-- | man/2/lock | 39 | ||||
| -rw-r--r-- | man/2/math-0intro | 79 | ||||
| -rw-r--r-- | man/2/math-elem | 106 | ||||
| -rw-r--r-- | man/2/math-export | 52 | ||||
| -rw-r--r-- | man/2/math-fp | 205 | ||||
| -rw-r--r-- | man/2/math-linalg | 146 | ||||
| -rw-r--r-- | man/2/mpeg | 74 | ||||
| -rw-r--r-- | man/2/names | 113 | ||||
| -rw-r--r-- | man/2/newns | 40 | ||||
| -rw-r--r-- | man/2/palmfile | 542 | ||||
| -rw-r--r-- | man/2/plumbmsg | 291 | ||||
| -rw-r--r-- | man/2/pop3 | 85 | ||||
| -rw-r--r-- | man/2/popup | 102 | ||||
| -rw-r--r-- | man/2/prefab-0intro | 75 | ||||
| -rw-r--r-- | man/2/prefab-compound | 262 | ||||
| -rw-r--r-- | man/2/prefab-element | 468 | ||||
| -rw-r--r-- | man/2/prefab-environ | 54 | ||||
| -rw-r--r-- | man/2/prefab-style | 95 | ||||
| -rw-r--r-- | man/2/print | 341 | ||||
| -rw-r--r-- | man/2/prof | 225 | ||||
| -rw-r--r-- | man/2/pslib | 46 | ||||
| -rw-r--r-- | man/2/rand | 35 | ||||
| -rw-r--r-- | man/2/readdir | 101 | ||||
| -rw-r--r-- | man/2/regex | 108 | ||||
| -rw-r--r-- | man/2/registries | 318 | ||||
| -rw-r--r-- | man/2/scsiio | 144 | ||||
| -rw-r--r-- | man/2/secstore | 250 | ||||
| -rw-r--r-- | man/2/security-0intro | 162 | ||||
| -rw-r--r-- | man/2/security-auth | 157 | ||||
| -rw-r--r-- | man/2/security-login | 93 | ||||
| -rw-r--r-- | man/2/security-random | 43 | ||||
| -rw-r--r-- | man/2/security-ssl | 76 | ||||
| -rw-r--r-- | man/2/selectfile | 57 | ||||
| -rw-r--r-- | man/2/sets | 226 | ||||
| -rw-r--r-- | man/2/sexprs | 362 | ||||
| -rw-r--r-- | man/2/sh | 561 | ||||
| -rw-r--r-- | man/2/smtp | 58 | ||||
| -rw-r--r-- | man/2/spki | 446 | ||||
| -rw-r--r-- | man/2/spki-verifier | 91 | ||||
| -rw-r--r-- | man/2/spree | 604 | ||||
| -rw-r--r-- | man/2/spree-allow | 129 | ||||
| -rw-r--r-- | man/2/spree-cardlib | 628 | ||||
| -rw-r--r-- | man/2/spree-gather | 105 | ||||
| -rw-r--r-- | man/2/spree-objstore | 63 | ||||
| -rw-r--r-- | man/2/srv | 66 | ||||
| -rw-r--r-- | man/2/string | 177 | ||||
| -rw-r--r-- | man/2/stringinttab | 87 | ||||
| -rw-r--r-- | man/2/styx | 416 | ||||
| -rw-r--r-- | man/2/styxconv | 77 | ||||
| -rw-r--r-- | man/2/styxpersist | 80 | ||||
| -rw-r--r-- | man/2/styxservers | 902 | ||||
| -rw-r--r-- | man/2/styxservers-nametree | 180 | ||||
| -rw-r--r-- | man/2/sys-0intro | 302 | ||||
| -rw-r--r-- | man/2/sys-bind | 201 | ||||
| -rw-r--r-- | man/2/sys-byte2char | 68 | ||||
| -rw-r--r-- | man/2/sys-chdir | 40 | ||||
| -rw-r--r-- | man/2/sys-dial | 247 | ||||
| -rw-r--r-- | man/2/sys-dirread | 59 | ||||
| -rw-r--r-- | man/2/sys-dup | 62 | ||||
| -rw-r--r-- | man/2/sys-export | 116 | ||||
| -rw-r--r-- | man/2/sys-fauth | 61 | ||||
| -rw-r--r-- | man/2/sys-fd2path | 46 | ||||
| -rw-r--r-- | man/2/sys-file2chan | 158 | ||||
| -rw-r--r-- | man/2/sys-fversion | 71 | ||||
| -rw-r--r-- | man/2/sys-iounit | 35 | ||||
| -rw-r--r-- | man/2/sys-millisec | 24 | ||||
| -rw-r--r-- | man/2/sys-open | 135 | ||||
| -rw-r--r-- | man/2/sys-pctl | 142 | ||||
| -rw-r--r-- | man/2/sys-pipe | 45 | ||||
| -rw-r--r-- | man/2/sys-print | 271 | ||||
| -rw-r--r-- | man/2/sys-read | 94 | ||||
| -rw-r--r-- | man/2/sys-remove | 23 | ||||
| -rw-r--r-- | man/2/sys-seek | 48 | ||||
| -rw-r--r-- | man/2/sys-self | 83 | ||||
| -rw-r--r-- | man/2/sys-sleep | 29 | ||||
| -rw-r--r-- | man/2/sys-stat | 283 | ||||
| -rw-r--r-- | man/2/sys-tokenize | 56 | ||||
| -rw-r--r-- | man/2/sys-utfbytes | 28 | ||||
| -rw-r--r-- | man/2/sys-werrstr | 26 | ||||
| -rw-r--r-- | man/2/tabs | 74 | ||||
| -rw-r--r-- | man/2/tftp | 54 | ||||
| -rw-r--r-- | man/2/timers | 89 | ||||
| -rw-r--r-- | man/2/tk | 270 | ||||
| -rw-r--r-- | man/2/tkclient | 229 | ||||
| -rw-r--r-- | man/2/translate | 135 | ||||
| -rw-r--r-- | man/2/ubfa | 273 | ||||
| -rw-r--r-- | man/2/venti | 107 | ||||
| -rw-r--r-- | man/2/virgil | 54 | ||||
| -rw-r--r-- | man/2/volume | 51 | ||||
| -rw-r--r-- | man/2/w3c-css | 349 | ||||
| -rw-r--r-- | man/2/w3c-xpointers | 382 | ||||
| -rw-r--r-- | man/2/wait | 100 | ||||
| -rw-r--r-- | man/2/wmclient | 235 | ||||
| -rw-r--r-- | man/2/wmlib | 90 | ||||
| -rw-r--r-- | man/2/wmsrv | 295 | ||||
| -rw-r--r-- | man/2/workdir | 25 | ||||
| -rw-r--r-- | man/2/xml | 266 | ||||
| -rw-r--r-- | man/3/0intro | 69 | ||||
| -rw-r--r-- | man/3/INDEX | 54 | ||||
| -rw-r--r-- | man/3/arch | 63 | ||||
| -rw-r--r-- | man/3/audio | 169 | ||||
| -rw-r--r-- | man/3/boot | 41 | ||||
| -rw-r--r-- | man/3/cap | 92 | ||||
| -rw-r--r-- | man/3/cmd | 273 | ||||
| -rw-r--r-- | man/3/cons | 312 | ||||
| -rw-r--r-- | man/3/dbg | 384 | ||||
| -rw-r--r-- | man/3/draw | 816 | ||||
| -rw-r--r-- | man/3/ds | 145 | ||||
| -rw-r--r-- | man/3/dup | 60 | ||||
| -rw-r--r-- | man/3/dynld | 75 | ||||
| -rw-r--r-- | man/3/eia | 136 | ||||
| -rw-r--r-- | man/3/env | 48 | ||||
| -rw-r--r-- | man/3/ether | 134 | ||||
| -rw-r--r-- | man/3/flash | 157 | ||||
| -rw-r--r-- | man/3/floppy | 52 | ||||
| -rw-r--r-- | man/3/fpga | 97 | ||||
| -rw-r--r-- | man/3/fs | 114 | ||||
| -rw-r--r-- | man/3/ftl | 185 | ||||
| -rw-r--r-- | man/3/gpio | 94 | ||||
| -rw-r--r-- | man/3/i2c | 87 | ||||
| -rw-r--r-- | man/3/i82365 | 41 | ||||
| -rw-r--r-- | man/3/indir | 81 | ||||
| -rw-r--r-- | man/3/ip | 944 | ||||
| -rw-r--r-- | man/3/kprof | 88 | ||||
| -rw-r--r-- | man/3/logfs | 260 | ||||
| -rw-r--r-- | man/3/lpt | 51 | ||||
| -rw-r--r-- | man/3/mnt | 84 | ||||
| -rw-r--r-- | man/3/mpeg | 102 | ||||
| -rw-r--r-- | man/3/pbus | 60 | ||||
| -rw-r--r-- | man/3/pipe | 69 | ||||
| -rw-r--r-- | man/3/plap | 136 | ||||
| -rw-r--r-- | man/3/pnp | 150 | ||||
| -rw-r--r-- | man/3/pointer | 80 | ||||
| -rw-r--r-- | man/3/prof | 93 | ||||
| -rw-r--r-- | man/3/prog | 311 | ||||
| -rw-r--r-- | man/3/root | 45 | ||||
| -rw-r--r-- | man/3/rtc | 60 | ||||
| -rw-r--r-- | man/3/sd | 194 | ||||
| -rw-r--r-- | man/3/sign | 92 | ||||
| -rw-r--r-- | man/3/snarf | 29 | ||||
| -rw-r--r-- | man/3/srv | 88 | ||||
| -rw-r--r-- | man/3/srv9 | 108 | ||||
| -rw-r--r-- | man/3/ssl | 137 | ||||
| -rw-r--r-- | man/3/switch | 28 | ||||
| -rw-r--r-- | man/3/tinyfs | 45 | ||||
| -rw-r--r-- | man/3/tls | 276 | ||||
| -rw-r--r-- | man/3/touch | 138 | ||||
| -rw-r--r-- | man/3/tv | 179 | ||||
| -rw-r--r-- | man/3/usb | 143 | ||||
| -rw-r--r-- | man/3/vga | 247 | ||||
| -rw-r--r-- | man/3/vid | 64 | ||||
| -rw-r--r-- | man/4/0intro | 16 | ||||
| -rw-r--r-- | man/4/9srvfs | 73 | ||||
| -rw-r--r-- | man/4/INDEX | 30 | ||||
| -rw-r--r-- | man/4/acme | 406 | ||||
| -rw-r--r-- | man/4/archfs | 64 | ||||
| -rw-r--r-- | man/4/cpu | 141 | ||||
| -rw-r--r-- | man/4/dbfs | 127 | ||||
| -rw-r--r-- | man/4/dossrv | 76 | ||||
| -rw-r--r-- | man/4/export | 69 | ||||
| -rw-r--r-- | man/4/factotum | 717 | ||||
| -rw-r--r-- | man/4/ftpfs | 117 | ||||
| -rw-r--r-- | man/4/import | 148 | ||||
| -rw-r--r-- | man/4/iostats | 81 | ||||
| -rw-r--r-- | man/4/keyfs | 116 | ||||
| -rw-r--r-- | man/4/keysrv | 116 | ||||
| -rw-r--r-- | man/4/kfs | 175 | ||||
| -rw-r--r-- | man/4/lockfs | 89 | ||||
| -rw-r--r-- | man/4/logfile | 45 | ||||
| -rw-r--r-- | man/4/memfs | 62 | ||||
| -rw-r--r-- | man/4/mntgen | 30 | ||||
| -rw-r--r-- | man/4/namespace | 332 | ||||
| -rw-r--r-- | man/4/palmsrv | 49 | ||||
| -rw-r--r-- | man/4/ramfile | 63 | ||||
| -rw-r--r-- | man/4/registry | 196 | ||||
| -rw-r--r-- | man/4/spree | 195 | ||||
| -rw-r--r-- | man/4/tarfs | 40 | ||||
| -rw-r--r-- | man/5/0intro | 629 | ||||
| -rw-r--r-- | man/5/INDEX | 15 | ||||
| -rw-r--r-- | man/5/attach | 159 | ||||
| -rw-r--r-- | man/5/clunk | 44 | ||||
| -rw-r--r-- | man/5/error | 25 | ||||
| -rw-r--r-- | man/5/flush | 78 | ||||
| -rw-r--r-- | man/5/open | 250 | ||||
| -rw-r--r-- | man/5/read | 124 | ||||
| -rw-r--r-- | man/5/remove | 39 | ||||
| -rw-r--r-- | man/5/stat | 309 | ||||
| -rw-r--r-- | man/5/version | 103 | ||||
| -rw-r--r-- | man/5/walk | 186 | ||||
| -rw-r--r-- | man/6/0intro | 7 | ||||
| -rw-r--r-- | man/6/INDEX | 29 | ||||
| -rw-r--r-- | man/6/attrdb | 101 | ||||
| -rw-r--r-- | man/6/audio | 79 | ||||
| -rw-r--r-- | man/6/auth | 74 | ||||
| -rw-r--r-- | man/6/colour | 187 | ||||
| -rw-r--r-- | man/6/dis | 487 | ||||
| -rw-r--r-- | man/6/font | 102 | ||||
| -rw-r--r-- | man/6/image | 178 | ||||
| -rw-r--r-- | man/6/keyboard | 170 | ||||
| -rw-r--r-- | man/6/keys | 52 | ||||
| -rw-r--r-- | man/6/keytext | 124 | ||||
| -rw-r--r-- | man/6/login | 109 | ||||
| -rw-r--r-- | man/6/man | 248 | ||||
| -rw-r--r-- | man/6/namespace | 162 | ||||
| -rw-r--r-- | man/6/ndb | 219 | ||||
| -rw-r--r-- | man/6/plumbing | 163 | ||||
| -rw-r--r-- | man/6/proto | 153 | ||||
| -rw-r--r-- | man/6/regexp | 126 | ||||
| -rw-r--r-- | man/6/sbl | 385 | ||||
| -rw-r--r-- | man/6/scancode | 37 | ||||
| -rw-r--r-- | man/6/sexprs | 236 | ||||
| -rw-r--r-- | man/6/translate | 55 | ||||
| -rw-r--r-- | man/6/ubfa | 129 | ||||
| -rw-r--r-- | man/6/users | 73 | ||||
| -rw-r--r-- | man/6/utf | 84 | ||||
| -rw-r--r-- | man/7/0intro | 6 | ||||
| -rw-r--r-- | man/7/INDEX | 3 | ||||
| -rw-r--r-- | man/7/db | 187 | ||||
| -rw-r--r-- | man/7/dbsrv | 67 | ||||
| -rw-r--r-- | man/8/0intro | 13 | ||||
| -rw-r--r-- | man/8/INDEX | 59 | ||||
| -rw-r--r-- | man/8/applylog | 237 | ||||
| -rw-r--r-- | man/8/bootpd | 163 | ||||
| -rw-r--r-- | man/8/changelogin | 113 | ||||
| -rw-r--r-- | man/8/collabsrv | 334 | ||||
| -rw-r--r-- | man/8/create | 204 | ||||
| -rw-r--r-- | man/8/createsignerkey | 67 | ||||
| -rw-r--r-- | man/8/cs | 242 | ||||
| -rw-r--r-- | man/8/dhcp | 117 | ||||
| -rw-r--r-- | man/8/dns | 156 | ||||
| -rw-r--r-- | man/8/fpgaload | 24 | ||||
| -rw-r--r-- | man/8/ftl | 63 | ||||
| -rw-r--r-- | man/8/getauthinfo | 127 | ||||
| -rw-r--r-- | man/8/httpd | 112 | ||||
| -rw-r--r-- | man/8/init | 99 | ||||
| -rw-r--r-- | man/8/kfscmd | 142 | ||||
| -rw-r--r-- | man/8/logind | 52 | ||||
| -rw-r--r-- | man/8/mangaload | 49 | ||||
| -rw-r--r-- | man/8/manufacture | 31 | ||||
| -rw-r--r-- | man/8/mkfs | 181 | ||||
| -rw-r--r-- | man/8/ping | 64 | ||||
| -rw-r--r-- | man/8/plumber | 94 | ||||
| -rw-r--r-- | man/8/prep | 710 | ||||
| -rw-r--r-- | man/8/rdbgsrv | 111 | ||||
| -rw-r--r-- | man/8/register | 85 | ||||
| -rw-r--r-- | man/8/rip | 98 | ||||
| -rw-r--r-- | man/8/rstyxd | 104 | ||||
| -rw-r--r-- | man/8/shutdown | 26 | ||||
| -rw-r--r-- | man/8/signer | 117 | ||||
| -rw-r--r-- | man/8/sntp | 41 | ||||
| -rw-r--r-- | man/8/srv | 112 | ||||
| -rw-r--r-- | man/8/styxchat | 244 | ||||
| -rw-r--r-- | man/8/styxmon | 50 | ||||
| -rw-r--r-- | man/8/svc | 137 | ||||
| -rw-r--r-- | man/8/touchcal | 39 | ||||
| -rw-r--r-- | man/8/virgild | 55 | ||||
| -rw-r--r-- | man/9/0intro | 134 | ||||
| -rw-r--r-- | man/9/1copyright | 55 | ||||
| -rw-r--r-- | man/9/INDEX | 34 | ||||
| -rw-r--r-- | man/9/bind | 194 | ||||
| -rw-r--r-- | man/9/button | 133 | ||||
| -rw-r--r-- | man/9/canvas | 1358 | ||||
| -rw-r--r-- | man/9/checkbutton | 193 | ||||
| -rw-r--r-- | man/9/choicebutton | 148 | ||||
| -rw-r--r-- | man/9/cursor | 47 | ||||
| -rw-r--r-- | man/9/destroy | 24 | ||||
| -rw-r--r-- | man/9/entry | 316 | ||||
| -rw-r--r-- | man/9/focus | 21 | ||||
| -rw-r--r-- | man/9/frame | 79 | ||||
| -rw-r--r-- | man/9/grab | 58 | ||||
| -rw-r--r-- | man/9/grid | 332 | ||||
| -rw-r--r-- | man/9/image | 75 | ||||
| -rw-r--r-- | man/9/label | 79 | ||||
| -rw-r--r-- | man/9/listbox | 304 | ||||
| -rw-r--r-- | man/9/lower | 12 | ||||
| -rw-r--r-- | man/9/menu | 461 | ||||
| -rw-r--r-- | man/9/menubutton | 134 | ||||
| -rw-r--r-- | man/9/options | 244 | ||||
| -rw-r--r-- | man/9/pack | 227 | ||||
| -rw-r--r-- | man/9/panel | 121 | ||||
| -rw-r--r-- | man/9/radiobutton | 192 | ||||
| -rw-r--r-- | man/9/raise | 13 | ||||
| -rw-r--r-- | man/9/scale | 198 | ||||
| -rw-r--r-- | man/9/scrollbar | 252 | ||||
| -rw-r--r-- | man/9/see | 37 | ||||
| -rw-r--r-- | man/9/send | 38 | ||||
| -rw-r--r-- | man/9/text | 1188 | ||||
| -rw-r--r-- | man/9/types | 147 | ||||
| -rw-r--r-- | man/9/update | 24 | ||||
| -rw-r--r-- | man/9/variable | 25 | ||||
| -rw-r--r-- | man/index | 62662 |
559 files changed, 149939 insertions, 0 deletions
diff --git a/man/1/0intro b/man/1/0intro new file mode 100644 index 00000000..0689e614 --- /dev/null +++ b/man/1/0intro @@ -0,0 +1,188 @@ +.TH INTRO 1 +.SH NAME +intro \- introduction to Inferno +.SH DESCRIPTION +Inferno is a virtualised operating system that can +run natively across a wide range of processor architectures +or hosted on a wide range of operating systems. +The principal components of the system are: +.IP • +The Inferno kernel which can run both native and `hosted' on a range of platforms +and which presents the same interface to programs in both cases. +.IP • +The Dis virtual machine. +.IP • +Styx - the tiny broad-spectrum file service protocol. +.IP • +Limbo - a new simple, modular, concurrent programming language. +.IP • +Tk and Prefab - graphical user interface (`GUI') primitives without a lot of goo. +.IP • +The portable cross-development suites that allow any native Inferno platform +to be cross-compiled on any hosted system. +.SS Manual conventions +Throughout this volume, manual entries are cross referenced +by a notation of the form +.IR entry ( n ), +where +.I entry +is the name of the page (in italics) and +.I n +is the manual section holding the page. +The same name may be found in more than one section. +For example, the environment variable inspection command +documented in +.IR env (1), +is quite distinct from the module interface to environment variables +which is documented in +.IR env (2), +which in turn is distinct from the component documented by +.IR env (3), +which describes the underlying device that implements environment variables. +.PP +Pathnames are understood to exist in the file system space visible from +Inferno. The root of this space when viewed from the host operating +system is the Inferno installation directory, sometimes called the +Inferno root directory. Unless otherwise enabled, the result of +changes made by Inferno programs to files in the file system space +is generally restricted to this portion of the host file system. +.SS Name spaces +One of the great strengths of Inferno is the +.I name space +interface to the resources available to a process, +a hierarchical structure +which looks very similar to a conventional file system. +Resources look like files and directories that can be read +and written, created and deleted in a way familiar to +most programmers. +.PP +While this interface +.I is +used to provide programs with access to conventional +disk-based filestore, it is also used to control devices +and user level programs +.I mounted +in a process's name space. +Once a program or a device has been attached to a process's +name space, the program or device interprets any access +to the attachment point; +it can synthesise on demand the names of new files or directories, +create their contents on the fly as the process reads from them, +and interpret written data as commands or data as appropriate +(See +.IR bind (1) +and +.IR sys-bind (2)). +.PP +Each new Inferno process inherits its parent's name space, +but it can divorce its own name space from that of its parent (see +.IR sys-pctl (2)), +giving programs the capability to attach +resources to their own name space without making them globally +visible. This per-process name space is potent +but potentially confusing, so, to help programs that might be +confused, +.IR namespace (4) +gives some conventions that should be adhered to if programs +are to work properly. (That page also gives a general overview +of the Inferno source tree.) +.SS Start up +See ``Installation of the Inferno Software'' in Volume 2 +for details of how to start up Inferno. +.SS Window/development environment +Inferno provides a powerful development environment in which to write, compile, +execute and debug programs written in the Limbo language. +It gives the developer a clean platform from which he can utilise +an operating system which contains +many new and innovative ideas and some, carefully chosen, +older concepts that have survived the test of time and are likely to be +familiar to most Plan 9 or Unix users. +.PP +Superficially, the Inferno shell +.IR sh (1) +looks and behaves much like +its Plan 9 or Unix contemporaries but, at heart, it is quite different. +The shell takes advantage of the dynamic module loading +services that Inferno provides to allow it to be dynamically extended +in appropriate and interesting ways. For example, by loading the +.IR sh-tk (1) +builtin module, a shell script can provide all the programming logic +required to manage a +.I Tk +window with full +.I Tk +functionality in, surprisingly, few lines of code; by loading the +.IR sh-file2chan (1) +builtin module, a shell script can create a file in the name space +whose properties are completely under the control of the script. +.PP +The Inferno window +manager +.IR wm (1) +allows the user to manage the order and position of a dynamic collection of application +windows in which to perform various tasks. +.IR Acme (1) +is targeted at programmers. It is an editor, a shell and window system all rolled +into one, which through thoughtful and consistent application of simple principles +results in a rich and productive programming environment with a user interface +that feels right. +.I Acme +requires a three-button mouse and +attaches distinct functions to the three mouse buttons and, indeed, to chords of buttons to +maximise the productivity of the programmer's mouse. For more details of the +.I Acme +user interface see the paper +"Acme: A User Interface for Programmers" in Volume 2. +.PP +Limbo programs are compiled with +.IR limbo (1). +This compiles Limbo source into a machine-independent format (Dis) for +execution by the Inferno Dis virtual machine. The virtual machine is designed to provide +safe execution of programs even on machines without memory protection. +Debugging is made straightforward by use of either +.IR stack (1) +, to display the execution stack of a process +or, if a finer inspection is required, +.IR deb (1), +a novel window based debugger that allows the user to identify the exact location of +problems, set break points and walk the data structures of any module loaded by the program. See "Program Development in Inferno" in Volume 2 for details on how to use the +development tools that Inferno provides. +.SH SEE ALSO +.nf +Section (1) (this section) for the commonly-used commands. +Section (2) for Limbo modules, including Inferno's system calls. +Section (3) for kernel devices (accessed by `bind'). +Section (4) for file services (accessed by `mount'). +Section (5) for the Styx file service protocol. +Section (6) for file formats and system conventions. +Section (7) for databases and database access modules. +Section (8) for administrative modules and system services. +Section (9) for the reference for Inferno's Tk variant, Limbo/Tk. +Section (10) for the build environment and device driver implementation. +.PP +Volume 2 contains papers and other documentation about Inferno. +.PP +The back of this volume contains a permuted index. +.SH DIAGNOSTICS +Programs (modules) that wish to return error status to +the command interpreters +.IR sh (1) +and +.IR mash (1) +do so by executing a +.IR sys-raise +(see +.IR sys-exception (2)) +with an error string starting with +.RB ` fail: '. +On successful execution, a process can simply exit. +.SH SEE ALSO +.IR intro (2), +.IR intro (3), +.IR intro (4), +.IR intro (5), +.IR intro (6), +.IR intro (7), +.IR intro (8), +.IR intro (9), +.IR intro (10) diff --git a/man/1/9win b/man/1/9win new file mode 100644 index 00000000..c3d7e70e --- /dev/null +++ b/man/1/9win @@ -0,0 +1,71 @@ +.TH 9WIN 1 +.SH NAME +9win \- create a Plan 9 window within Inferno +.SH SYNOPSIS +.B 9win +[ +-s +] +[ +.B -x width +] +[ +.B -y height +] +[ +.IR cmd +[ +.I arg ... +] +] +.SH DESCRIPTION +.I 9win +creates a window for a graphical Plan 9 command (default +.BR rio ) +to run in. If provided, +.I width +and +.I height +give a desired width and height for the new window. +.I Cmd +gives the command to run, +and +.I arg +its arguments. +.PP +The +.B -s +option tells +.I 9win +to run in server mode. Used by +.IR 9cpu (1), +it exports on its standard input +a namespace +suitable for a graphical Plan 9 program to run +within. With this option, no command may be given. +.SH SOURCE +.B /appl/cmd/9win.b +.SH SEE ALSO +.IR 9cpu (1), +.IR import (4) +.SH FILES +.B /dev/winname +.br +.B /dev/mouse +.br +.B /dev/cons +.br +.B /dev/consctl +.br + Files served by +.IR 9win . +.SH BUGS +.I 9win +does not export a full +.I rio +environment, so Plan 9 programs +that wish to create new windows will not work correctly +(unless running inside a +.I rio +started by +.IR 9win ) diff --git a/man/1/INDEX b/man/1/INDEX new file mode 100644 index 00000000..3c7c3d90 --- /dev/null +++ b/man/1/INDEX @@ -0,0 +1,312 @@ +intro 0intro +9win 9win +acme acme +win acme +abc alphabet-abc +alphabet-abc alphabet-abc +alphabet-fs alphabet-fs +fs alphabet-fs +alphabet-grid alphabet-grid +grid alphabet-grid +alphabet-main alphabet-main +main alphabet-main +asm asm +disdump asm +auhdr auplay +auplay auplay +raw2iaf auplay +wav2iaf auplay +avr avr +basename basename +bind bind +mount bind +unmount bind +blur blur +brutus brutus +cal cal +calendar calendar +cat cat +cd cd +charon charon +chgrp chgrp +chmod chmod +cleanname cleanname +cmp cmp +collab collab +connect collab +chat collab-clients +collab collab-clients +collab-clients collab-clients +poll collab-clients +poller collab-clients +whiteboard collab-clients +comm comm +cook cook +cp cp +fcp cp +cprof cprof +cpu cpu +aescbc crypt +crypt crypt +date date +dd dd +deb deb +diff diff +disdep disdep +dmview dmview +dmwm dmview +du du +ebook ebook +echo echo +emu emu +env env +fc fc +filename filename +fmt fmt +fortune fortune +freq freq +fs fs +ftest ftest +newer ftest +ftree ftree +gettar gettar +lstar gettar +puttar gettar +grep grep +grid-localreg grid-localreg +localreg grid-localreg +grid-monitor grid-monitor +monitor grid-monitor +grid-ns grid-ns +ns grid-ns +grid-query grid-query +query grid-query +grid-register grid-register +register grid-register +gunzip gzip +gzip gzip +idea idea +itest itest +itreplay itest +keyboard keyboard +pen keyboard +broke kill +kill kill +lc lc +limbo limbo +dial listen +listen listen +styxlisten listen +logon logon +logwindow logwindow +look look +ls ls +lookman man +man man +man2txt man +wm/man man +mash mash +mash mash-make +mash-make mash-make +mash mash-tk +mash-tk mash-tk +ack math-misc +crackerbarrel math-misc +factor math-misc +fibonacci math-misc +fit math-misc +genprimes math-misc +math-misc math-misc +mersenne math-misc +parts math-misc +perms math-misc +pi math-misc +powers math-misc +primes math-misc +sieve math-misc +mathcalc mathcalc +mc mc +mdb mdb +miniterm miniterm +mk mk +mkdir mkdir +mprof mprof +wm/mprof mprof +mux mux +mv mv +netkey netkey +netstat netstat +ns ns +nsbuild nsbuild +os os +p p +passwd passwd +plumb plumb +prof prof +wm/prof prof +ps ps +pwd pwd +rcmd rcmd +read read +rm rm +runas runas +secstore secstore +sendmail sendmail +session session +builtin sh +exit sh +load sh +loaded sh +local sh +quote sh +run sh +set sh +sh sh +unload sh +unquote sh +whatis sh + sh-alphabet +alphabet sh-alphabet sh-alphabet +autoconvert sh-alphabet +autodeclare +declare sh-alphabet +define sh-alphabet +import sh-alphabet +sh-alphabet sh-alphabet +type sh-alphabet +typeset sh-alphabet +arg sh-arg +sh-arg sh-arg +csv sh-csv +getcsv sh-csv +sh-csv sh-csv +expr sh-expr +ntest sh-expr +sh-expr sh-expr +file2chan sh-file2chan +rblock sh-file2chan +rdata sh-file2chan +rerror sh-file2chan +rget sh-file2chan +rread sh-file2chan +rreadone sh-file2chan +rwrite sh-file2chan +sh-file2chan sh-file2chan +match sh-regex +re sh-regex +sh-regex sh-regex +els sh-sexprs +islist sh-sexprs +mklist sh-sexprs +mktext sh-sexprs +mktextlist sh-sexprs +sexprs sh-sexprs +sh-sexprs sh-sexprs +text sh-sexprs +textels sh-sexprs +! sh-std +and sh-std +apply sh-std +env sh-std +fn sh-std +getlines sh-std +hd sh-std +if sh-std +index sh-std +join sh-std +no sh-std +or sh-std +parse sh-std +pctl sh-std +pid sh-std +raise sh-std +rescue sh-std +sh-std sh-std +split sh-std +status sh-std +std sh-std +tl sh-std +while sh-std +~ sh-std +alen sh-string +drop sh-string +in sh-string +len sh-string +prefix sh-string +sh-string sh-string +slice sh-string +splitl sh-string +splitr sh-string +splitstrl sh-string +splitstrr sh-string +take sh-string +tolower sh-string +toupper sh-string +report sh-test +sh-test sh-test +alt sh-tk +chan sh-tk +recv sh-tk +send sh-tk +sh-tk sh-tk +tk sh-tk +pause sleep +sleep sleep +sort sort +join spree-join +spree-join spree-join +stack stack +stream stream +strings strings +md5sum sum +sha1sum sum +sum sum +tail tail +tcs tcs +tee tee +telnet telnet +time time +timestamp timestamp +rm tiny +sh tiny +tiny tiny +tkcmd tkcmd +tktester tktester +toolbar toolbar +touch touch +tr tr +tsort tsort +unicode unicode +uniq uniq +units units +uudecode uuencode +uuencode uuencode +wc wc +webgrab webgrab +wish wish +wm wm +about wm-misc +clock wm-misc +coffee wm-misc +colors wm-misc +date wm-misc +edit wm-misc +mand wm-misc +memory wm-misc +polyhedra wm-misc +reversi wm-misc +rt wm-misc +stopwatch wm-misc +sweeper wm-misc +task wm-misc +tetris wm-misc +unibrowse wm-misc +view wm-misc +winctl wm-misc +wm-misc wm-misc +mash wm-sh +sh wm-sh +wm-sh wm-sh +xd xd +yacc yacc +zeros zeros diff --git a/man/1/acme b/man/1/acme new file mode 100644 index 00000000..d8779336 --- /dev/null +++ b/man/1/acme @@ -0,0 +1,1203 @@ +.TH ACME 1 +.SH NAME +acme, win \- interactive text windows +.SH SYNOPSIS +.B acme +[ +.B -f +.I varfont +] +[ +.B -F +.I fixfont +] +[ +.B -c +.I ncol +] +[ +.B -b +] +[ +.B -l +.I file +| +.I file +\&... ] +.LP +.B win +[ +.I command +] +.SH DESCRIPTION +.I Acme +manages windows of text that may be edited interactively or by external programs. +The interactive interface uses the keyboard and mouse; external programs +use a set of files served by +.IR acme ; +these are discussed in +.IR acme (4). +.PP +Any named +.I files +are read into +.I acme +windows before +.I acme +accepts input. +With the +.B -l +option, the state of the entire system is loaded +from +.IR file , +which should have been created by a +.B Dump +command (q.v.), +and subsequent +.I file +names are ignored. +Plain files display as text; directories display as columnated lists of the +names of their components with the names of subdirectories having a slash appended. +.PP +The +.B -f +.RB ( -F ) +option sets the default variable-pitch (fixed-pitch) +font; the default is +.B /fonts/lucidasans/euro.8.font +.RB ( \&.../lucm/unicode.9.font ). +Tab intervals are set to the width of 4 numeral zeros in the variable-pitch font. +.PP +.SS Windows +.I Acme +windows are in two parts: a one-line +.I tag +above a multi-line +.IR body . +The body typically contains an image of a file or the output of a program. +The tag contains a number of +blank-separated words, followed by a vertical bar character, followed by anything. +The first word is the name of the window, typically the name of the associated +file or directory, and the other words are commands available in that window. +Any text may be added after the bar; examples are strings to search for or +commands to execute in that window. +Changes to the text left of the bar will be ignored, +unless the result is to change the name of the +window. +.PP +If a window holds a directory, the name (first word of the tag) will end with +a slash. +.SS Scrolling +Each window has a scroll bar to the left of the body. +Scrolling occurs when the button is pressed, rather than released, +and continues +as long as the mouse button is held down in the scroll bar. +For example, to scroll slowly through a file, +hold button 3 down near the top of the scroll bar. Moving the mouse +down the scroll bar speeds up the rate of scrolling. Scrolling backwards is performed +similarly using button 1. Button 2 allows absolute movement within the text; clicking it +at different heights within the scroll bar changes the focused text without intermediate +scrolling. +.SS Layout +.I Acme +windows are arranged in columns. By default, it creates two columns when starting; +this can be overridden with the +.B -c +option. +Placement is automatic but may be adjusted +using the +.I layout box +in the upper left corner of each window and column. +Pressing and holding any mouse button in the box drags +the associated window or column. +For windows, just +clicking in the layout box grows the window in place: button 1 +grows it a little, button 2 grows it as much as it can, still leaving all other +tags in that column visible, and button 3 takes over the column completely, +temporarily hiding other windows in the column. +(They will return +.I en masse +if any of them needs attention.) +The layout box in a window is normally white; when it is black in the center, +it records that the file is `dirty': +.I Acme +believes it is modified from its original +contents. +.PP +Tags exist at the top of each column and across the whole display. +.I Acme +pre-loads them with useful commands. +Also, the tag across the top maintains a list of executing long-running commands. +.SS Typing +The behaviour of typed text is as one would expect +except that the characters are delivered to the tag or body under the mouse; there is no +`click to type'. +(The experimental option +.B -b +causes typing to go to the most recently clicked-at or made window.) +The usual backspacing conventions apply. +The ESC key selects the text typed since the last mouse action, +a feature particularly useful when executing commands. +A side effect is that typing ESC with text already selected is identical +to a +.B Cut +command +.RI ( q.v. ). +.PP +Most text, including the names of windows, may be edited uniformly. +The only exception is that the command names to the +left of the bar in a tag are maintained automatically; changes to them are repaired +by +.IR acme . +.SS "Directory context +Each window's tag names a directory: explicitly if the window +holds a directory; implicitly if it holds a regular file +(e.g. the directory +.B /module +if the window holds +.BR /module/sys.m ). +This directory provides a +.I context +for interpreting file names in that window. +For example, the string +.B sys.m +in a window labelled +.B /module/ +or +.B /module/draw.m +will be interpreted as the file name +.BR /module/sys.m . +The directory is defined purely textually, so it can be a non-existent +directory or a real directory associated with a non-existent file +(e.g. +.BR /module/not-a-file ). +File names beginning with a slash +are assumed to be absolute file names. +.SS Errors +Windows whose names begin with +.B - +or +.B + +conventionally hold diagnostics and other data +not directly associated with files. +A window labelled +.B +Errors +receives all diagnostics produced by +.I acme +itself. +Diagnostics from commands run by +.I acme +appear in a window named +.IB directory /+Errors +where +.I directory +is identified by the context of the command. +These error windows are created when needed. +.SS "Mouse button 1 +Mouse button 1 selects text and double-clicking highlights the text for replacement text to be +typed in. +.PP +Button 1 is also useful for matching symbols. For example to match curly brackets in some limbo +source, +double click button 1 immediately after the open curly bracket. +The whole of the text up to any matching end curly bracket will be highlighted. A similar match +is made if the double click is performed immediately before the end bracket. In all, +.I acme +will match the pairs { and }, [ and ], ( and ), < and >, « and », ' and ', " and ", ` and `. +Also whole lines of text may be highlighted by double clicking at the beginning or end of the line. +.SS "Mouse button 2 +By an +action similar to selecting text with button 1, +button 2 indicates text to execute as a command. +If the indicated text has multiple white-space-separated words, +the first is the command name and the second and subsequent +are its arguments. +If button 2 is `clicked'\(emindicates a null string\(em\c +.I acme +.I expands +the indicated text to find a command to run: +if the click is within button-1-selected text, +.I acme +takes that selection as the command; +otherwise it takes the largest string of valid file name characters containing the click. +Valid file name characters are alphanumerics and +.B _ +.B . +.B - +.B + +.BR / . +This behaviour is similar to double-clicking with button 1 but, +because a null command is meaningless, only a single click is required. +.PP +Some commands, all by convention starting with a capital letter, are +.I built-ins +that are executed directly by +.IR acme : +.TF "Lineno\ \ " +.PD +.TP +.B Cut +Delete most recently selected text and place in snarf buffer. +.TP +.B Del +Delete window. If window is dirty, instead print a warning; a second +.B Del +will succeed. +.TP +.B Delcol +Delete column and all its windows, after checking that windows are not dirty. +.TP +.B Delete +Delete window without checking for dirtiness. +.TP +.B Dump +Write the state of +.I acme +to the file name, if specified, or +.B $home/acme.dump +by default. +.TP +.B Edit +Treat the argument as a text editing command in the style of Plan9's +.IR sam. +The full +.B Sam +language is implemented except for the commands +.BR k , +.BR n , +.BR q , +and +.BR ! . +The +.B = +command is slightly different: it includes the file name and +gives only the line address unless the command is explicitly +.BR =# . +The `current window' for the command is the body of the window in which the +.B Edit +command is executed. +Usually the +.B Edit +command would be typed in a tag; longer commands may be prepared in a +scratch window and executed, with +.B Edit +itself in the current window, using the 2-1 chord described below. See the later +section on editing for a full description of the commands available here. +.TP +.B Exit +Exit +.I acme +after checking that windows are not dirty. +.TP +.B Font +With no arguments, change the font of the associated window from fixed-spaced to +proportional-spaced or +.I vice versa\f1. +Given a file name argument, change the font of the window to that stored in the named file. +If the file name argument is prefixed by +.B var +.RB ( fix ), +also set the default proportional-spaced (fixed-spaced) font for future use to that font. +Other existing windows are unaffected. +.TP +.B Get +Load file into window, replacing previous contents (after checking for dirtiness as in +.BR Del ). +With no argument, use the existing file name of the window. +Given an argument, use that file but do not change the window's file name. +.TP +.B ID +Print window ID number +.RI ( q.v. ). +.TP +.B Incl +When opening `include' files with button 3, +.I acme +searches in the directories +.B /module +and +.B /include . +.B Incl +adds its arguments to a supplementary list of include directories, analogous to +the +.B -I +option to the compilers. +This list is per-window and is inherited when windows are created by actions in that window, so +.I Incl +is most usefully applied to a directory containing relevant source. +With no arguments, +.I Incl +prints the supplementary list. +.TP +.B Kill +Send a +.B kill +note to +.IR acme -initiated +commands named as arguments. +.TP +.B Lineno +Give the line number(s) of the currently selected text. +.TP +.B Load +Restore the state of +.I acme +from a file (default +.BR $home/acme.dump ) +created by the +.B Dump +command. +.TP +.B Local +When prefixed to a command +run the +command in the same file name space and environment variable group as +.IR acme . +The environment of the command +is restricted but is sufficient to run +.IR bind (1), +.IR mount , +etc., +and to set environment variables. +.TP +.B Look +Search in body for occurrence of literal text indicated by the argument or, +if none is given, by the selected text in the body. +.TP +.B New +Make new window. With arguments, load the named files into windows. +.TP +.B Newcol +Make new column. +.TP +.B Paste +Replace most recently selected text with contents of snarf buffer. +.TP +.B Put +Write window to the named file. +With no argument, write to the file named in the tag of the window. +.TP +.B Putall +Write all dirty windows whose names indicate existing regular files. +.TP +.B Redo +Complement of +.BR Undo . +.TP +.B Send +Append selected text or snarf buffer to end of body; used mainly with +.IR win . +.TP +.B Snarf +Place selected text in snarf buffer. +.TP +.B Sort +Arrange the windows in the column from top to bottom in lexicographical +order based on their names. +.TP +.B Undo +Undo last textual change or set of changes. +.TP +.B Zerox +Create a copy of the window containing most recently selected text. +.PP +A common place to store text for commands is in the tag; in fact +.I acme +maintains a set of commands appropriate to the state of the window +to the left of the bar in the tag. +.PP +If the text indicated with button 2 is not a recognized built-in, it is executed as +a shell command. For example, indicating +.B date +with button 2 runs +.IR date (1). +The standard +and error outputs of commands are sent to the error window associated with +the directory from which the command was run, which will be created if +necessary. +For example, in a window +.B /module/sys.m +executing +.B pwd +will produce the output +.B /module +in a (possibly newly-created) window labelled +.BR /adm/+Errors ; +in a window containing +.B /appl/cmd/date.b +executing +.B "limbo date.b" +will run +.IR limbo (1) +in +.BR /appl/cmd , +producing output in a window labelled +.BR /appl/cmd/+Errors . +.SS "Mouse button 3 +Pointing at text with button 3 instructs +.I acme +to locate or acquire the file, string, etc. described by the indicated text and +its context. +This description follows the actions taken when +button 3 is released after sweeping out some text. +In the description, +.I text +refers to the text of the original sweep or, if it was null, the result of +applying the same expansion rules that apply to button 2 actions. +.PP +If the text names an existing window, +.I acme +moves the mouse cursor to the selected text in the body of that window. +If the text names an existing file with no associated window, +.I acme +loads the file into a new window and moves the mouse there. +If the text is a file name contained in double quotes, +.I acme +loads the indicated include file from the directory appropriate to the +suffix of the file name of the window holding the text. +(The +.B Incl +command adds directories to the standard list.) +.PP +If the text begins with a colon, it is taken to be an address +within the body of the window containing the text. +The address is evaluated, the resulting text highlighted, and the mouse moved to it. +Thus, in +.IR acme , +one must type +.B :/regexp +or +.B :127 +not just +.B /regexp +or +.BR 127 . +(There is an easier way to locate literal text; see below.) +.PP +If the text is a file name followed by a colon and an address, +.I acme +loads the file and evaluates the address. For example, clicking button 3 anywhere +in the text +.B file.c:27 +will open +.BR file.c , +select line +27, and put the mouse at the beginning of the line. The rules about Error +files, directories, and so on all combine to make this an efficient way to +investigate errors from compilers, etc. +.PP +If the text is not an address or file, it is taken to +be literal text, which is then searched for in the body of the window +in which button 3 was clicked. If a match is found, it is selected and the mouse is +moved there. Thus, to search for occurrences of a word in a file, +just click button 3 on the word. Because of the rule of using the +selection as the button 3 action, subsequent clicks will find subsequent +occurrences without moving the mouse. +.PP +In all these actions, the mouse motion is not done if the text is a null string +within a non-null selected string in the tag, so that (for example) complex regular expressions +may be selected and applied repeatedly to the +body by just clicking button 3 over them. +.SS "Chords of mouse buttons +Several operations are bound to multiple-button actions. +After selecting text, with button 1 still down, pressing button 2 +executes +.B Cut +and button 3 executes +.BR Paste . +After clicking one button, the other undoes +the first; thus (while holding down button 1) 2 followed by 3 is a +.B Snarf +that leaves the file undirtied; +3 followed by 2 is a no-op. +These actions also apply to text selected by double-clicking because +the double-click expansion is made when the second +click starts, not when it ends. +.PP +Thus to copy a word a number of times, double click on the word with button 1 to highlight it leaving +button 1 down, press and release button 2 to cut it and save it in the snarf buffer, press and +release button 3 to paste it back and then release button 1. Now move the cursor to any selected +place in the text, press button 1 down, then button 3 and the word is copied in. +.PP +Similarly lines may be deleted by double clicking at the beginning or end of the line and then +pressing button 2 with button 1 still down. +.PP +Commands may be given extra arguments by a mouse chord with buttons 2 and 1. +While holding down button 2 on text to be executed as a command, clicking button 1 +appends the text last pointed to by button 1 as a distinct final argument. +For example, to search for literal +.B text +one may execute +.B Look text +with button 2 or instead point at +.B text +with button 1 in any window, release button 1, +then execute +.BR Look , +clicking button 1 while 2 is held down. +.PP +When an external command (e.g. +.IR echo (1)) +is executed this way, the extra argument is passed as expected and an +environment variable +.B $acmeaddr +is created that holds, in the form interpreted by button 3, +the fully-qualified address of the extra argument. +.SS "Support programs +.I win +creates a new +.I acme +window and runs a +.I command +(default +.BR /dis/sh.dis ) +in it, turning the window into a shell window in which commands may be executed. +Executing text in a +.I win +window with button +2 is similar to using +.BR Send . +.PP +Similarly +.I winm +creates a new window but runs the shell +.BR /dis/mash.dis +by default. +.I adiff +behaves as diff in finding the difference between two files but the listing uses +filename:linenumber format to allow the user to simply click on this to be sent to that line +in the file. +.I agrep +does for grep what adiff does for diff above. +.I cd +changes directory but when used in a win window for example, sends information to the +window to display a new heading reflecting the new directory. +.SS "Mail" +In the directory +.B /acme/mail +there are two mail programs that may be used under acme. These +.I Mail +and +.I Mailpop3 +can be run to display the user's current mail, read the mail, reply to mail, save or delete mail, +send mail and write the user's mail box. +.PP +The former expects the user's mail box to be in the directory and file specified as its first argument, +the latter uses the POP3 protocol to connect to a server for the user's mail and will prompt for a +password when first run. Otherwise their behaviour is the same. +.SS "Applications and guide files +In the directory +.B /acme +live several subdirectories, each corresponding to a program or +set of related programs that employ +.I acme's +user interface. +Each subdirectory includes dis files and a +.B readme +file for further information. +It also includes a +.BR guide , +a text file holding sample commands to invoke the programs. +The idea is to find an example in the guide that best matches +the job at hand, edit it to suit, and execute it. +.PP +Whenever a command is executed by +.IR acme , +the default search path includes the directory of the window containing +the command. +Also, +.I acme +binds the directory +.B /acme/dis +in front of +.B /dis +when it starts; this is where +.IR acme -specific +programs such as +.I win +reside. +.SH EDITING +This section explains the commands available when using acme's Edit command. +.PP +.SS Regular expressions +Regular expressions are as in +.IR regexp (6) +with the addition of +.BR \en +to represent newlines. +A regular expression may never contain a literal newline character. +The empty +regular expression stands for the last complete expression encountered. +A regular expression +matches the longest leftmost substring formally +matched by the expression. +Searching in the reverse direction is equivalent +to searching backwards with the catenation operations reversed in +the expression. +.SS Addresses +An address identifies a substring in a file. +In the following, `character +.IR n ' +means the null string +after the +.IR n -th +character in the file, with 1 the +first character in the file. +`Line +.IR n ' +means the +.IR n -th +match, +starting at the beginning of the file, of the regular expression +.LR .*\en? . +All files always have a current substring, called dot, +that is the default address. +.SS Simple Addresses +.PD0 +.TP +.BI # n +The empty string after character +.IR n ; +.B #0 +is the beginning of the file. +.TP +.I n +Line +.IR n ; +.B 0 +is the beginning of the file. +.TP +.BI / regexp / +.PD0 +.TP +.BI ? regexp ? +The substring that matches the regular expression, +found by looking toward the end +.RB ( / ) +or beginning +.RB ( ? ) +of the file, +and if necessary continuing the search from the other end to the +starting point of the search. +The matched substring may straddle +the starting point. +When entering a pattern containing a literal question mark +for a backward search, the question mark should be +specified as a member of a class. +.PD +.TP +.B 0 +The string before the first full line. +This is not necessarily +the null string; see +.B + +and +.B - +below. +.TP +.B $ +The null string at the end of the file. +.TP +.B . +Dot. +.TP +.B \&' +The mark in the file. +.TP +\fL"regexp"\fP +Preceding a simple address (default +.BR . ), +refers to the address evaluated in the unique file whose menu line +matches the regular expression. +.PD +.SS Compound Addresses +In the following, +.I a1 +and +.I a2 +are addresses. +.TF a1+a2 +.TP +.IB a1 + a2 +The address +.I a2 +evaluated starting at the end of +.IR a1 . +.TP +.IB a1 - a2 +The address +.I a2 +evaluated looking in the reverse direction +starting at the beginning of +.IR a1 . +.TP +.IB a1 , a2 +The substring from the beginning of +.I a1 +to the end of +.IR a2 . +If +.I a1 +is missing, +.B 0 +is substituted. +If +.I a2 +is missing, +.B $ +is substituted. +.TP +.IB a1 ; a2 +Like +.IB a1 , a2\f1, +but with +.I a2 +evaluated at the end of, and dot set to, +.IR a1 . +.PD +.PP +The operators +.B + +and +.B - +are high precedence, while +.B , +and +.B ; +are low precedence. +.PP +In both +.B + +and +.B - +forms, if +.I a2 +is a line or character address with a missing +number, the number defaults to 1. +If +.I a1 +is missing, +.L . +is substituted. +If both +.I a1 +and +.I a2 +are present and distinguishable, +.B + +may be elided. +.I a2 +may be a regular +expression; if it is delimited by +.LR ? 's, +the effect of the +.B + +or +.B - +is reversed. +.PP +It is an error for a compound address to represent a malformed substring. +Some useful idioms: +.IB a1 +- +(\f2a1-+\fP) +selects the line containing +the end (beginning) of a1. +.BI 0/ regexp / +locates the first match of the expression in the file. +(The form +.B 0;// +sets dot unnecessarily.) +.BI ./ regexp /// +finds the second following occurrence of the expression, +and +.BI .,/ regexp / +extends dot. +.SS Commands +In the following, text demarcated by slashes represents text delimited +by any printable +character except alphanumerics. +Any number of +trailing delimiters may be elided, with multiple elisions then representing +null strings, but the first delimiter must always +be present. +In any delimited text, +newline may not appear literally; +.B \en +may be typed for newline; and +.B \e/ +quotes the delimiter, here +.LR / . +Backslash is otherwise interpreted literally, except in +.B s +commands. +.PP +Most commands may be prefixed by an address to indicate their range +of operation. +Those that may not are marked with a +.L * +below. +If a command takes +an address and none is supplied, dot is used. +The sole exception is +the +.B w +command, which defaults to +.BR 0,$ . +In the description, `range' is used +to represent whatever address is supplied. +Many commands set the +value of dot as a side effect. +If so, it is always set to the `result' +of the change: the empty string for a deletion, the new text for an +insertion, etc. (but see the +.B s +and +.B e +commands). +.br +.ne 1.2i +.SS Text commands +.PD0 +.TP +.BI a/ text / +.TP +or +.TP +.B a +.TP +.I lines of text +.TP +.B . +Insert the text into the file after the range. +Set dot. +.PD +.TP +.B c\fP +.br +.ns +.TP +.B i\fP +Same as +.BR a , +but +.B c +replaces the text, while +.B i +inserts +.I before +the range. +.TP +.B d +Delete the text in the range. +Set dot. +.TP +.BI s/ regexp / text / +Substitute +.I text +for the first match to the regular expression in the range. +Set dot to the modified range. +In +.I text +the character +.B & +stands for the string +that matched the expression. +Backslash behaves as usual unless followed by +a digit: +.BI \e d +stands for the string that matched the +subexpression begun by the +.IR d -th +left parenthesis. +If +.I s +is followed immediately by a +number +.IR n , +as in +.BR s2/x/y/ , +the +.IR n -th +match in the range is substituted. +If the +command is followed by a +.BR g , +as in +.BR s/x/y/g , +all matches in the range +are substituted. +.TP +.BI m " a1 +.br +.ns +.TP +.BI t " a1 +Move +.RB ( m ) +or copy +.RB ( t ) +the range to after +.IR a1 . +Set dot. +.SS Display commands +.PD 0 +.TP +.B p +Print the text in the range. +Set dot. +.TP +.B = +Print the file name and line address of the range. +.TP +.B =# +Print the file name and character address of the range. +.PD +.SS File commands +.PD0 +.TP +.BI * " b " file-list +Set the current file to the first file named in the list +that +.I acme +has displayed. +The list may be expressed +.BI < "command" +in which case the file names are taken as words (in the shell sense) +generated by the command. +.TP +.BI * " B " file-list +Same as +.BR b , +except that file names not displayed are entered there, +and all file names in the list are examined. +.TP +.BI * " D " file-list +Delete the named files from the menu. +If no files are named, the current file is deleted. +It is an error to +.B D +a modified file, but a subsequent +.B D +will delete such a file. +.PD +.SS I/O Commands +.PD0 +.TP +.BI * " e " filename +Replace the file by the contents of the named external file. +Set dot to the beginning of the file. +.TP +.BI r " filename +Replace the text in the range by the contents of the named external file. +Set dot. +.TP +.BI w " filename +Write the range (default +.BR 0,$ ) +to the named external file. +.TP +.BI * " f " filename +Set the file name and print the resulting menu entry. +.PP +If the file name is absent from any of these, the current file name is used. +.B e +always sets the file name; +.B r +and +.B w +do so if the file has no name. +.TP +.BI < " command +Replace the range by the standard output of the command. +.TP +.BI > " command +Send the range to the standard input of the command. +.TP +.BI | " command +Send the range to the standard input, and replace it by +the standard output, of the command. +.TP +.BI * " cd " directory +Change working directory. +If no directory is specified, +.B $home +is used. +.PD +.PP +In any of +.BR < , +.BR > , +or +.BR | , +if the +.I command +is omitted the last +.I command +(of any type) is substituted. +.SS Loops and Conditionals +.PD0 +.TP +.BI x/ regexp / " command +For each match of the regular expression in the range, run the command +with dot set to the match. +Set dot to the last match. +If the regular +expression and its slashes are omitted, +.L /.*\en/ +is assumed. +Null string matches potentially occur before every character +of the range and at the end of the range. +.TP +.BI y/ regexp / " command +Like +.BR x , +but run the command for each substring that lies before, between, +or after +the matches that would be generated by +.BR x . +There is no default regular expression. +Null substrings potentially occur before every character +in the range. +.TP +.BI * " X/ regexp / " command +For each file whose menu entry matches the regular expression, +make that the current file and +run the command. +If the expression is omitted, the command is run +in every file. +.TP +.BI * " Y/ regexp / " command +Same as +.BR X , +but for files that do not match the regular expression, +and the expression is required. +.TP +.BI g/ regexp / " command +.br +.ns +.TP +.BI v/ regexp / " command +If the range contains +.RB ( g ) +or does not contain +.RB ( v ) +a match for the expression, +set dot to the range and run the command. +.PP +These may be nested arbitrarily deeply, but only one instance of either +.B X +or +.B Y +may appear in a \%single command. +An empty command in an +.B x +or +.B y +defaults to +.BR p ; +an empty command in +.B X +or +.B Y +defaults to +.BR f . +.B g +and +.B v +do not have defaults. +.PD +.SS Miscellany +.TF (empty) +.TP +.BI * " u " n +Undo the last +.I n +(default 1) +top-level commands that changed the contents or name of the +current file, and any other file whose most recent change was simultaneous +with the current file's change. +Successive +.BR u 's +move further back in time. +The only commands for which u is ineffective are +.BR cd , +.BR u , +.B w +and +.BR D . +If +.I n +is negative, +.B u +`redoes,' undoing the undo, going forwards in time again. +.TP +(empty) +If the range is explicit, set dot to the range. +If no address is specified (the +command is a newline) dot is extended in either direction to +line boundaries and printed. +If dot is thereby unchanged, it is set to +.B .+1 +and printed. +.PD +.SS Grouping and multiple changes +Commands may be grouped by enclosing them in braces +.BR {} . +Commands within the braces must appear on separate lines (no backslashes are +required between commands). +Semantically, an opening brace is like a command: +it takes an (optional) address and sets dot for each sub-command. +Commands within the braces are executed sequentially, but changes made +by one command are not visible to other commands (see the next +paragraph). +Braces may be nested arbitrarily. +.PP +When a command makes a number of changes to a file, as in +.BR x/re/c/text/ , +the addresses of all changes to the file are computed in the original file. +If the changes are in sequence, +they are applied to the file. +Successive insertions at the same address are catenated into a single +insertion composed of the several insertions in the order applied. +.SH FILES +.TF /appl/acme/acme/*/src +.TP +.B $home/acme.dump +default file for +.B Dump +and +.BR Load ; +also where state is written if +.I acme +dies unexpectedly. +.TP +.B /acme/*/guide +template files for applications +.TP +.B /acme/*/readme +informal documentation for applications +.TP +.B /appl/acme/acme/*/src +source for applications +.TP +.B /acme/dis +dis files for applications +.SH SOURCE +.B /appl/acme +.br +.B /appl/acme/acme/bin/src/win.b +.SH SEE ALSO +.IR acme (4) +.br +Rob Pike, +.IR "Acme: A User Interface for Programmers" ", Volume 2" +.SH BUGS +With the +.B -l +option or +.B Load +command, +the recreation of windows under control of external programs +such as +.I win +is just to rerun the command; information may be lost. diff --git a/man/1/alphabet-abc b/man/1/alphabet-abc new file mode 100644 index 00000000..9ab9f544 --- /dev/null +++ b/man/1/alphabet-abc @@ -0,0 +1,141 @@ +.TH ALPHABET-ABC 1 +.SH NAME +abc \- alphabet declarations +.SH SYNOPSIS +.EX +load alphabet +typeset /abc +type /abc +.EE +.SH DESCRIPTION +.B Grid +is a typeset for +.I alphabet +(see +.IR sh-alphabet (1)) +which enables +allows direct interconnection of +remote and local processing components. It defines one new type, +.BR endpoint , +which represents +a place in the network to which two parties can +connect and exchange data. +.PP +In the following descriptions, if a type +is not +.B endpoint +or a type defined in the root typeset (see +.IR alphabet-main (1)), +it is assumed to be of type +.BR /string . +.PP +Modules currently provided within +the +.B /grid +typeset include: +.TP 10 +\f5farm [\f5-lnkavA\fP] \fIendpoint\fP \fIaddr\fP \fItasktype\fP [\fIarg\fP...] -> \fIendpoint\fP +.B Farm +connects to a grid labour exchange (see +.IR scheduler (4)) +at +.IR addr , +starts a new job of type +.BR workflow , +and passes all the data read from +.I endpoint +to be processed by the currently available labour. +The data is split into records, each one of which will be +processed on a worker node by +.IR tasktype , +with its associated +.IR arg uments. +Other than +.BR -A , +which specifies unauthenticated access to the +scheduler, +the various options are all passed verbatim to +.IR workflow : +.B -l +causes it to split its input on newline-separated records; +.B -n +specifies that no record separation is necessary on output; +.B -k +specifies that intermediate data for failed tasks should +be kept around; +.B -a +specifies that intermediate data for all tasks should +be kept around, and +.B -v +specifies that +.I workflow +should produce a wordy description of what it is doing. +.TP +\f5local\fP \fIendpoint\fP -> \fI/fd\fP +.B Local +reads everything from +.IR endpoint , +and writes it to +.IR fd . +.TP +\f5remote\fP [-a \fIaddr\fP] \fIfd\fP -> \fIendpoint\fP +.B Remote +is the inverse of +.BR local : +it reads data from +.I fd +and writes it to a newly created endpoint. +If +.B -a +is given, +.I addr +specifies the network address of an endpoint server +on which to create the new endpoint. +.TP +\f5rexec\fP [\f5-A\fP] \fIendpoint\fP \fIaddr\fP \fIcmd\fP -> \fIendpoint\fP +.B Rexec +connects to a remote execution server at +.I addr +(unauthenticated if +.B -A +is specified), and arranges to execute the +.I alphabet +expression +.I cmd +there. The expression should be compatible with usage +.BR "fd -> fd" . +Data from the argument +.I endpoint +will be piped through this expression, and +made available as the resulting +.I endpoint +endpoint. +.SH EXAMPLES +The examples below that a local endpoint is available, and the following +.I alphabet +declarations: +.EX + load alphabet + typeset /grid + type /string /endpoint /fd + import /grid/local /grid/remote + autoconvert fd endpoint remote +.EE +Set up a rendering pipeline: +.EX + -{/read /tmp/somedata | + remote | + rexec tcp!node1!rexec "{(/fd); /filter $1 "{os render_stage1}} | + rexec tcp!node2!rexec "{(/fd); /filter $1 "{os render_stage2}} | + /create /tmp/somedata.result + } +.EE +.SH SOURCE +.BR /appl/alphabet/grid.b , +.BR /appl/alphabet/gridtypes.b +.br +.B /appl/cmd/grid/*.b +.SH SEE ALSO +.IR sh-alphabet (1), +.IR alphabet-main (1), +.IR sh (1) diff --git a/man/1/alphabet-fs b/man/1/alphabet-fs new file mode 100644 index 00000000..c530ef3f --- /dev/null +++ b/man/1/alphabet-fs @@ -0,0 +1,425 @@ +.TH ALPHABET-FS 1 +.SH NAME +fs \- file-hierarchy traversal +.SH SYNOPSIS +.EX +load alphabet +typeset /fs +type /fs/fs +type /fs/entries +type /fs/gate +type /fs/selector +.EE +.SH DESCRIPTION +.B Fs +is a typeset for +.I alphabet +(see +.IR sh-alphabet (1)) +which enables filtering of the contents of hierarchical filesystems. +.I Fs +defines four new types: +.TP 10 +.B fs +The complete contents of a filesystem. +.TP +.B entries +Information about the entries in a filesystem without +their content. +.TP +.B gate +A condition that can be used with conditional verbs. +A gate is open to entries satisfying particular +criteria. +.TP +.B selector +A comparator which compares two entries +and selects one, both or neither of them. +.PP +In the following description of the verbs provided, +an entry such as: +.TP 10 +.B print \fIentries\fP \fR->\fP status +.PP +describes a verb +.BR print , +which takes one argument of type +.IR entries , +and the result of which is of type +.BR status . +If the type is not one of those described above, +it should be taken to be of type +.IR string . +.PP +All types and modules names are taken to be relative to +the typeset root, +.BR /fs . +.PP +Modules defined within +.I fs +include: +.TP 10 +\f5and\fP \fIgate gate\fP [\fIgate\fP...] -> \fIgate\fP +.B And +is a gate that is open to an entry if all its arguments are open. +.TP +\f5bundle\fP \fIfs\fP -> \fIvoid\fP +.B Bundle +converts +.I fs +to an archival format and writes it to the standard output. +.TP +\f5compose\fP [\f5-d\fP] \fIop\fP -> \fIselector\fP +.B Compose +implements ``compositing''-style operators, useful when +merging filesystems. +.I Op +specifies the operator, taking its name from +the graphical Porter-Duff equivalent: +.BR AinB , +.BR AinB , +.BR BinA , +.BR AoutB , +.BR BoutA , +.BR A , +.BR AoverB , +.BR AatopB , +.BR AxorB , +.BR B , +.BR BoverA , +or +.BR BatopA. +For instance, +.B AinB +gives the intersection of A and B; +.B AatopB +gives A whereever both A and B exist, and B otherwise. +When used as a selector for +.BR merge , +operators that exclude +the union of A and B are not very useful, as they will +exclude all common directories at the top level. +Given the +.B -d +option, compose will allow through directories that +would otherwise be excluded in this way, making +operators such as +.B AxorB +(all that A does not hold in common with B) +more useful, although accurate only for regular files. +.TP +\f5depth\fP \fIn\fP -> \fIgate\fP +.B Depth +is a gate open only to entries which are within +.I n +levels of the root of the filesystem. +.TP +\f5entries\fP \fIfs\fP -> \fIentries\fP +.B Entries +produces all the entries contained within +.IR fs . +.TP +\f5filter\fP [\f5-d\fP] \fIfs\fP\fIgate\fP -> \fIfs\fP +The result of +.B filter +is a filesystem from which all entries that will +not pass through +.IR gate , +and their descendents, have been removed. +If the +.B -d +flag is given, only files are filtered \- directories bypass the gate. +.TP +\f5ls\fP [\f5-um\fP] \fIentries\fP -> \fIvoid\fP +Print each entry in the style of +.B ls -l +(see +.IR ls (1)). +If the +.B -u +flag is given, the file access time rather than the file modification time +will be printed. If the +.B -m +flag is given, the name of the user that last modified the file +is printed too. +.TP +\f5exec\fP [\f5-pP\fP] [\f5-t\fP \fIcmd\fP] [\f5-n\fP \fIn\fP] \fIentries cmd\fP -> \fIvoid\fP +Run its argument +.I cmd +for each entry in +.I entries . +If the +.B -n +flag is specified, +.B exec +will try to gather +.I n +entries together before invoking the command (default 1). +The environent variable +.B $file +is set to the names of the entries that have been gathered. +If the +.B -p +flag is given, environment variables are set giving information +about the mode, owner, modification time and size of the entry +(they are named after the equivalent field +names in the +.B Dir +structure; see +.IR sys-stat (2)). +This option is only valid when +.I n +is 1. +The +.B -P +flag causes all the other fields in the Dir structure to be included too. +Note that the command is run in the same shell context each time, +so environment variable set on one execution can +be retrieved on the next. The +.B -t +flag can be used to specify a command which will be executed +just before termination. +.TP +\f5match\fP [\f5-ar\fP] \fIpattern\fP -> \fIgate\fP +.B Match +is a gate that is open if the entry's filename +matches the +.IR pattern . +If the +.B -a +flag is given, the whole path will be used +for the match. +If +.B -r +is specified, the pattern is evaluated as a regular expression, +otherwise it is a shell-style pattern in the style of +.IR filepat (2). +.TP +\f5merge\fP [\f5-1\fP] [\f5-c\fP \fIselector\fP] \fIfs fs\fP [\fIfs\fP...] -> \fIfs\fP +Recursively merge the contents of its argument +filesystems. +.I Selector +is consulted to see which entries are chosen for the result; +if not given, entries are resolved in favour of the first filesystem +(equivalent to +.BR "{compose AoverB}"). +If the +.B -1 +flag is given, merging takes place only in the top-level directory. +.TP +\f5mode\fP \fIspec\fP -> \fIgate\fP +.B Mode +is a gate that lets through entries whose file permissions +satisfy +.IR spec , +which is a string in the style of +.IR chmod (1). +If the +.I op +field is +.BR + , +the specified permissions must be present; if +.BR - , +they must be absent, and if +.BR = , +they must be exactly as given. +The directory and auth modes are specified with +the characters ``\f5d\fP'' and ``\f5A\fP'' +respectively. +.TP +\f5not\fP \fIgate\fP -> \fIgate\fP +.B Not +is a gate open to an entry if its argument is not. +.TP +\f5or\fP \fIgate gate\fP [\fIgate\fP...] -> \fIgate\fP +.B Or +is a gate open to an entry if any argument is open. +.TP +\f5path\fP [\f5-x\fP] \fIpath\fP... -> \fIgate\fP +.B Path +is a gate open to an entry whose full pathname +is an ancestor or a descendent of any +.IR path. +If +.B -x +is specified, the gate is open to any path +.I except +descendents of the paths given. +.TP +\f5pipe\fP [\f5-1pP\fP] \fIfs cmd\fP -> \fIstatus\fP +.B Pipe +is similar to exec, except that the contents of all files +in +.I fs +are piped through +.IR cmd . +Unless the +.B -1 +option is given, +.I cmd +is started once for each file, with +.B $file +set to its name, and other environment variables +set according to the +.B -p +or +.B -P +options, as for +.BR exec . +If the +.B -1 +option is specified, +.I cmd +is started once only \- all file data is piped through that. +.TP +\f5print\fP \fIentries\fP -> \fIfd\fP +Print the path name of each entry to +.IR fd . +.TP +\f5proto\fP [\f5-r\fP \fIroot\fP] \fIprotofile\fP -> \fIfs\fP +Evaluate +.I protofile +as a +.IR mkfs (8) +.I proto +file. If +.I root +is specified, it will be used as the root of the resulting +.IR fs . +.TP +\f5query\fP \fIcmd\fP -> \fIgate\fP +.B Query +is a gate that runs +.I cmd +to determine whether it is open: an empty +exit status from the command yields an open gate. +The environment variable +.B $file +is set for the command to the path name of the entry that is being queried for. +.TP +\f5run\fP \fIcmd\fP -> \fIstring\fP +.B Run +runs +.I cmd +and substitutes the value of the environment variable +.B $s +after its invocation. +.B $s +must have exactly one element. +.TP +\f5select\fP \fIgate entries\fP -> \fIentries\fP +Select only those entries within +.I entries +that will pass through +.IR gate . +Descendents of elided entries are not affected. +.TP +\f5setroot\fP [\f5-c\fP] \fIfs\fP \fIpath\fP -> \fIfs\fP +.B Setroot +sets the name of the root directory of +.IR fs . +If the +.B -c +flag is given, the elements in the root directory +will be made explicit in the hierarchy (i.e. the +name of the top directory will not contain any +.B / +characters). +.TP +\f5size\fP \fIentries\fP -> \fIfd\fP +Print the sum of the size of all entries, in bytes to +.IR fd . +.TP +\f5unbundle\fP \fIfd\fP -> \fIfs\fP +.B Unbundle +reads an archive as produced by +.B bundle +from +.IR fd ; +its result is the contents of the filesystem that was +originally bundled. +.TP +\f5walk\fP \fIpath\fP -> \fIfs\fP +.B Walk +produces a filesystem that is the result of +traversing all the files and directories underneath +.IR path . +.TP +\f5write\fP \fIfs dir\fP -> \fIvoid\fP +Write the contents of +.I fs +to the filesystem rooted at +.I dir . +If +.I dir +is empty, +.I fs +will be written to the root directory originally associated with fs. +.SH EXAMPLES +The examples below assume the following +.I alphabet +declarations: +.EX + load alphabet + typeset /fs + type /string /fd /fs/fs /fs/entries /fs/gate + import /fs/size /fs/walk /fs/select /fs/mode /fs/merge + import /fs/compose /fs/exec /fs/bundle /fs/write /fs/unbundle + import /fs/print /fs/depth /fs/filter /fs/query + autoconvert string fs walk + autoconvert fs entries /fs/entries + autoconvert string gate /fs/match + autoconvert entries fd /fs/print + autoconvert fd /status {(/fd); /print $1 1} +.EE +Print the size of all files below the current directory: +.EX + -{size .} +.EE +Show the names of all files in x that aren't in y: +.EX + -{walk x | merge -c {compose -d AoutB} y | select {mode -d}} +.EE +Remove all files from /appl ending in +.BR .dis : +.EX + -{walk /appl | select '*.dis' | exec "{rm $file}} +.EE +Recursively copy the current directory to +.BR /tmp/foo . +.EX + -{write . /tmp/foo} +.EE +Interactively remove all regular files from one level of the current directory: +.IP +.EX + -{walk . | + filter {depth 1} | + select {mode -d} | + select { + query "{echo -n $file:; ~ `{read} y yes} + } | + exec "{rm $file} + } +.EE +.PP +Create a new archive containing those files from below the current directory +that were held in an old archive: +.EX + -{merge -c {compose AinB} . {unbundle old.bundle} | + bundle | + /create new.bundle + } +.EE +.SH SOURCE +.BR /appl/alphabet/fs.b , +.BR /appl/alphabet/fstypes.b +.BR /appl/alphabet/auxi/fsfilter.b +.br +.B /appl/cmd/fs/*.b +.br +.SH SEE ALSO +.IR sh-alphabet (1), +.IR alphabet-main (1), +.IR alphabet-fs (2), +.IR sh (1) diff --git a/man/1/alphabet-grid b/man/1/alphabet-grid new file mode 100644 index 00000000..4b1aa4ba --- /dev/null +++ b/man/1/alphabet-grid @@ -0,0 +1,141 @@ +.TH ALPHABET-GRID 1 +.SH NAME +grid \- peer-to-peer data distribution +.SH SYNOPSIS +.EX +load alphabet +typeset /grid +type /grid/endpoint +.EE +.SH DESCRIPTION +.B Grid +is a typeset for +.I alphabet +(see +.IR sh-alphabet (1)) +which enables +allows direct interconnection of +remote and local processing components. It defines one new type, +.BR endpoint , +which represents +a place in the network to which two parties can +connect and exchange data. +.PP +In the following descriptions, if a type +is not +.B endpoint +or a type defined in the root typeset (see +.IR alphabet-main (1)), +it is assumed to be of type +.BR /string . +.PP +Modules currently provided within +the +.B /grid +typeset include: +.TP 10 +\f5farm [\f5-lnkavA\fP] \fIendpoint\fP \fIaddr\fP \fItasktype\fP [\fIarg\fP...] -> \fIendpoint\fP +.B Farm +connects to a grid labour exchange (see +.IR scheduler (4)) +at +.IR addr , +starts a new job of type +.BR workflow , +and passes all the data read from +.I endpoint +to be processed by the currently available labour. +The data is split into records, each one of which will be +processed on a worker node by +.IR tasktype , +with its associated +.IR arg uments. +Other than +.BR -A , +which specifies unauthenticated access to the +scheduler, +the various options are all passed verbatim to +.IR workflow : +.B -l +causes it to split its input on newline-separated records; +.B -n +specifies that no record separation is necessary on output; +.B -k +specifies that intermediate data for failed tasks should +be kept around; +.B -a +specifies that intermediate data for all tasks should +be kept around, and +.B -v +specifies that +.I workflow +should produce a wordy description of what it is doing. +.TP +\f5local\fP \fIendpoint\fP -> \fI/fd\fP +.B Local +reads everything from +.IR endpoint , +and writes it to +.IR fd . +.TP +\f5remote\fP [-a \fIaddr\fP] \fIfd\fP -> \fIendpoint\fP +.B Remote +is the inverse of +.BR local : +it reads data from +.I fd +and writes it to a newly created endpoint. +If +.B -a +is given, +.I addr +specifies the network address of an endpoint server +on which to create the new endpoint. +.TP +\f5rexec\fP [\f5-A\fP] \fIendpoint\fP \fIaddr\fP \fIcmd\fP -> \fIendpoint\fP +.B Rexec +connects to a remote execution server at +.I addr +(unauthenticated if +.B -A +is specified), and arranges to execute the +.I alphabet +expression +.I cmd +there. The expression should be compatible with usage +.BR "fd -> fd" . +Data from the argument +.I endpoint +will be piped through this expression, and +made available as the resulting +.I endpoint +endpoint. +.SH EXAMPLES +The examples below that a local endpoint is available, and the following +.I alphabet +declarations: +.EX + load alphabet + typeset /grid + type /string /endpoint /fd + import /grid/local /grid/remote + autoconvert fd endpoint remote +.EE +Set up a rendering pipeline: +.EX + -{/read /tmp/somedata | + remote | + rexec tcp!node1!rexec "{(/fd); /filter $1 "{os render_stage1}} | + rexec tcp!node2!rexec "{(/fd); /filter $1 "{os render_stage2}} | + /create /tmp/somedata.result + } +.EE +.SH SOURCE +.BR /appl/alphabet/grid.b , +.BR /appl/alphabet/gridtypes.b +.br +.B /appl/cmd/grid/*.b +.SH SEE ALSO +.IR sh-alphabet (1), +.IR alphabet-main (1), +.IR sh (1) diff --git a/man/1/alphabet-main b/man/1/alphabet-main new file mode 100644 index 00000000..1d53323b --- /dev/null +++ b/man/1/alphabet-main @@ -0,0 +1,240 @@ +.TH ALPHABET-MAIN 1 +.SH NAME +main \- operators on the basic Alphabet types +.SH SYNOPSIS +.EX +load alphabet +type /string +type /fd +type /wfd +type /status +type /cmd +.br +.SH DESCRIPTION +.I Main +refers to operators defined +.IR Alphabet 's +(see +.IR sh-alphabet (1)) +root typeset +.RB ( / ). +.PP +In the following description of the modules provided, +an entry such as: +.TP 10 +.B echo \fIstring\fP \fR->\fP fd +.PP +describes a verb +.BR echo , +which takes one argument of type +.IR string , +and the result of which is of type +.BR fd . +If the type is not one of those described above, +it should be taken to be of type +.IR string . +.PP +All types and modules names are taken to be relative to +the typeset root, +.BR / . +.PP +Modules defined within +.I main +include: +.TP 10 +\f5auth\fP [\f5-v\fP] [\f5-k\fP \fIkeyfile\fP] [\f5-C\fP \fIalg\fP] \fIwfd\fP -> \fIwfd\fP +.B Auth +authenticates to a server connected to its argument +.IR wfd , +and optionally adds encryption to the stream. +If +.I keyfile +is given, it gives the filename of a key file (by default +.BI /usr/ user /keyring/default +is used). +If +.I alg +is given, it specifies the encryption/hash algorithm to +push (e.g. +.BR rc4_256/md5 ). +If the +.B -v +flag is given, +.B auth +will print the name of the authenticated user to its diagnostic stream. +.TP +\f5cat\fP [\fIfd\fP...] -> \fIfd\fP +.B Cat +reads all the data from each +.I fd +in sequence +and writes it to its resulting +.IR fd . +.TP +\f5create\fP \fIfd\fP \fIf\fP -> \fIstatus\fP +.B Create +creates a file named +.I f +and writes to it all the data from +.IR fd . +.I Status +will be empty if the writing has completed successfully. +.TP +\f5dial\fP \fIaddr\fP -> \fIwfd\fP +.B Dial +makes a connection to network address +.IR addr +(see +.IR dial (2) +for the address format), +and returns the resulting connection. +.TP +\f5echo\fP [-\fIn\fP] \fIstring\fP -> \fIfd\fP +.B Echo +writes its argument +.I string +to its resulting +.IR fd . +If the +.B -n +option is given, no newline will be appended. +.TP +\f5export\fP \fIdir\fP -> \fIwfd\fP +.B Export +exports the namespace rooted at +.I dir +and serves it as a styx service on +.IR wfd . +.TP +\f5fd\fP \fIn\fP -> \fIwfd\fP +.B Fd +takes file descriptor +.IR n , +and makes it available for reading and/or writing +as +.IR wfd . +.TP +\f5filter\fP \fIfd\fP \fIcmd\fP \fIarg\fP... -> \fIfd\fP +.B Filter +starts the shell command +.IR cmd , +and pipes through this all the data from its +argument +.I fd +to its resulting +.IR fd . +The provided +.IR arg uments +are accessible in the shell command as +.BR $* . +.TP +\f5mount\fP [\f5-abc\fP] [\f5-x\fP \fIaname\fP] \fIwfd\fP \fIdir\fP -> \fIstatus\fP +.B Mount +mounts a connection to a styx server (\fIwfd\fP) +onto +.IR dir . +The meaning of the +.BR -a , +.BR -b , +and +.B -c +flags is the same as for +.IR mount (1). +.IR Aname , +if given, gives the attach name that will be passed with the mount request. +'\".TP +'\"\f5par\fP \fIstatus\fP... -> \fIstatus\fP +'\".B Par +'\"allows all its arguments to run in parallel. +'\"Its exit status is that of the last argument that +'\"returned a non-clean status. +.TP +\f5parse\fP \fIstring\fP -> \fIcmd\fP +.B Parse +parses +.I string +as a shell command or alphabet expression, +and returns the result. +.TP +\f5print\fP \fIfd\fP \fIn\fP -> \fIstatus\fP +.B Print +writes all the data from +.I fd +to file descriptor +.IR n . +.TP +\f5pretty\fP \fIcmd\fP -> \fIstring\fP +.B Pretty +returns a string representation of the alphabet expression +.IR cmd +which is intended to be easier to read. +.TP +\f5read\fP \fIf\fP -> \fIfd\fP +.B Read +reads the data from file +.I f +and writes it to its resulting +.IR fd . +.TP +\f5rewrite\fP [\f5-d\fP \fIdsttype\fP] \fIcmd\fP \fIcmd\fP -> \fIcmd\fP +.B Rewrite +rewrites an alphabet expression to its canonical form, +applying all auto-conversions, expanding all definitions, +expanding pipe notation and checking that all types are compatible. +The first +.I cmd +argument +gives the +.I alphabet +expression to be rewritten; +the second +.I cmd +should contain shell commands acceptable to +.IR sh-alphabet (1), +declaring all the modules used in the expression. +If +.I dsttype +is given, it specifies the return type of the final expression; +auto-conversions will be applied to attain this type, if possible. +'\".TP +'\"\f5seq\fP [\f5-ao\fP] \fIstatus\fP... -> \fIstatus\fP +'\".B Seq +'\"allows each of its arguments to run in sequence. +'\"If the +'\".B -a +'\"flag is given, the first non-clean status it encounters +'\"will cause it to terminate all subsequent arguments. +'\"If the +'\".B -o +'\"flag is given, the first +'\".I clean +'\"status does the same. +'\"Note that some commands (e.g. +'\".BR create ) +'\"do some work regardless of sequence. +'\"The resulting status is that of the last command +'\"that was not terminated. +.TP +\f5unparse\fP \fIcmd\fP -> \fIstring\fP +.B Unparse +is the inverse operation to +.BR parse : +it converts +.I cmd +to a string, and returns the result. +.TP +\f52fd\fP \fIwfd\fP -> \fIfd\fP +.B 2fd +converts the read-write file +.I wfd +to the +read-only +.IR fd . +.SH SOURCE +.BR /appl/alphabet/alphabet.b +.br +.B /appl/alphabet/main/*.b +.SH SEE ALSO +.IR sh-alphabet (1), +.IR alphabet-main (2), +.IR sh (1) diff --git a/man/1/asm b/man/1/asm new file mode 100644 index 00000000..9dbd4c67 --- /dev/null +++ b/man/1/asm @@ -0,0 +1,53 @@ +.TH ASM 1E +.SH NAME +asm, disdump \- Dis assembler, Dis disassembler +.SH SYNOPSIS +.B asm +.RB [ -l ] +.I file +.br +.B disdump +.IR file ... +.SH DESCRIPTION +.I Asm +reads one Dis assembly language +.I file +and translates it +into instructions for the Dis virtual machine. +The output is written to a file whose name is created +by taking the last element +of the input file, stripping any extension, and appending +.B \&.dis +For example, the output file for +.B abc +would be +.BR abc.dis ; +the output file for +.BR dir/def.s , +would be +.BR def.dis . +.PP +The assembler has one option: +.TP +.B -l +Generate a listing, showing the generated object code. +.PP +.I Disdump +prints to the standard output the Dis virtual machine +instructions in each of its Dis +.I file +arguments. +.SH SOURCE +.B /asm +.br +.B /appl/cmd/disdump.b +.SH "SEE ALSO" +.IR emu (1), +.IR limbo (1) +.PP +``The Dis Virtual Machine'' in Volume 2. +.SH BUGS +There isn't a Limbo version of +.IR asm , +which is therefore available only as a host command; +but then again it is hardly used. diff --git a/man/1/auplay b/man/1/auplay new file mode 100644 index 00000000..bb3a2259 --- /dev/null +++ b/man/1/auplay @@ -0,0 +1,120 @@ +.TH AUPLAY 1 +.SH NAME +auplay, auhdr, raw2iaf, wav2iaf \- basic audio output and conversion +.SH SYNOPSIS +.B auplay +.I file +\&... +.PP +.B auhdr +.I file +\&... +.PP +.B raw2iaf +[ +.I option +\&... +] [ +.B -o +.I output +] +.I input +.PP +.B wav2iaf +[ +.I input +] +.PP +.B wav2iaf +.SH DESCRIPTION +.I Auplay +plays each +.I file +in turn on the audio device +.B /dev/audio +(see +.IR audio (3)), +setting the device's characteristics in +.B /dev/audioctl +to match those of the +.IR file . +It uses +.I stream +(see +.IR sys-read (2)) +to stream the data to the device at high priority. +All files played must be in `Inferno audio format', +as defined by +.IR audio (6). +.PP +.I Auhdr +writes the header of each Inferno audio +.I input +file to the standard output. +The header describes the data in a form that can be written directly to +.BR /dev/audioctl +to set the device's characteristics. +.PP +.I Raw2iaf +converts the +.I input +file, adds an appropriate header to describe the data +in the Inferno format, and writes the result to the +.I output +file. +The options tell how the bytes in the input file should be interpreted: +.TP +.B -8 +rate is 8000 Hz +.TP +.B -1 +rate is 11025 Hz +.TP +.B -2 +rate is 22050 Hz +.TP +.B -4 +rate is 44100 Hz +.TP +.B -m +mono (one channel) +.TP +.B -s +stereo (two channels) +.TP +.B -b +each sample in each channel is one byte (unsigned) +.TP +.B -w +each sample in each channel is 16-bits (little-endian) +.TP +.B -a +input is a-law encoded +.TP +.B -u +input is \(*m-law encoded +.TP +.B -p +input is PCM encoded +.PP +.I Wav2iaf +reads the +.I input +file, which must be in Windows WAV format and encoded using PCM, +and converts the data to Inferno format +on the standard output. +.SH SOURCE +.B /appl/cmd/auplay.b +.br +.B /appl/cmd/raw2iaf.b +.br +.B /appl/cmd/wav2iaf.b +.SH SEE ALSO +.IR sys-read (2), +.IR audio (3), +.IR audio (6) +\" sets rate, chans, bits, enc +.\" raw2iaf: -8 8000 -1 11025 -2 22050 -4 44100 -m [chan=1] -s [chan=2] -b [byte] -w [16-bit] -a [alaw] -u [ulaw] -p [pcm] [-o output|-] [input|-] +.\" %s -8124 -ms -bw -aup -o out in +.\" wav2iaf [infile] + diff --git a/man/1/avr b/man/1/avr new file mode 100644 index 00000000..13f83747 --- /dev/null +++ b/man/1/avr @@ -0,0 +1,47 @@ +.TH AVR 1 +.SH NAME +avr \- Atmel AVR support +.SH SYNOPSIS +.B avr/burn +.RB [ -e ] +.RB [ -r ] +[ +.BI "-d " device +] +.I file.srec +.SH DESCRIPTION +Currently there is just one Inferno application to support Atmel AVRs +but others should appear. +.PP +.I Burn +initialises or verifies the contents of an Atmel ATmega128 AVR. +The programming board must be connected to a serial port (see +.IR eia (3)), +.B /dev/eia0 +by default. +.I File.srec +is a file containing the desired flash contents in Motorola S-record format, +as produced by +.IR ms2 (10.1). +By default, +.I burn +erases the AVR chip (both flash and EEPROM), then loads the flash with the contents of +.IR file.srec . +The +.B -e +option stops +.I burn +from erasing first, allowing additional code or data to be loaded (but only into an already-erased region). +If the +.B -r +option is given, +.I burn +instead compares the contents of the AVR with the data in +.IR file.srec . +.I Burn +supports the MIB510 programming board from Crossbow Technology Inc. +.SH SOURCE +.B /appl/cmd/avr/burn.b +.SH "SEE ALSO" +.IR eia (3), +.IR ms2 (10.1) diff --git a/man/1/basename b/man/1/basename new file mode 100644 index 00000000..914f799b --- /dev/null +++ b/man/1/basename @@ -0,0 +1,40 @@ +.TH BASENAME 1 +.SH NAME +basename \- strip file name affixes +.SH SYNOPSIS +.B basename +[ +.B -d +] +.I string +[ +.I suffix +] +.SH DESCRIPTION +.I Basename +deletes any prefix ending in slash +.RB ( / ) +and the +.IR suffix , +if present in +.IR string , +from +.IR string , +and prints the result on the standard output. +.PP +The +.B -d +option instead prints the directory component, +that is, +.I string +up to but not including the final slash. +If the string contains no slash, +the current directory name +.L . +is printed. +.SH SOURCE +.B /appl/cmd/basename.b +.SH SEE ALSO +.IR cleanname (1), +.IR pwd (1), +.IR names (2) diff --git a/man/1/bind b/man/1/bind new file mode 100644 index 00000000..b0cf3eb4 --- /dev/null +++ b/man/1/bind @@ -0,0 +1,276 @@ +.TH BIND 1 +.SH NAME +bind, mount, unmount \- change name space +.SH SYNOPSIS +.B bind +[ +.I option ... +] +.I source target +.PP +.B mount +[ +.I option ... +] +.I source target +[ +.I spec +] +.PP +.B unmount +[ +.I source +] +.I target +.SH DESCRIPTION +The +.IR bind +and +.IR mount +commands modify the file name space of the current process +and other processes in the same name space group +(see +.IR sys-pctl (2)). +For both calls, +.I target +is the name of an existing file or directory in the +current name space where the modification is to be made. +.PP +For +.IR bind , +.I source +is the name of an existing file or directory in the current name space. +After a successful +.IR bind , +the file name +.I target +is an alias for the object originally named by +.IR source ; +if the modification doesn't hide it, +.I source +will also still refer to its original file. +The evaluation of +.I source +(see +.IR sys-intro (2)) +happens at the time of the +.IR bind , +not when the binding is later used. +.PP +Both +.I source +and +.I target +files must be of the same type: either both directories or both files. +.PP +For +.IR mount, +.I source +can be a +shell command, +a network address, +or a file name. +If +.I source +is surrounded by brace characters +.RB ( { +and +.BR } ), +it is invoked as a +.IR sh (1) +command and its standard input is mounted (no +authentication takes place in this case). +If +.I source +contains an exclamation mark +.RB ( ! ), +or there is no file of that name, +it is assumed to be a network address for a machine acting +as a file server. +This argument should then conform to the conventions +described in +.IR sys-dial (2). +Otherwise +.I source +should be the name of a file that when opened gives a connection +to a file server, something serving the Styx protocol +described in +.IR intro (5). +The optional +.I spec +argument to +.I mount +is passed in the +.IR attach (5) +message and selects amongst different file trees offered by the server. +.PP +The effects of +.I bind +and +.I mount +can be undone by +.IR unmount . +If two arguments are given to +.IR unmount , +the effect is to undo a +.I bind +or +.I mount +with the same arguments. If only one argument is given, everything bound to or mounted on +.I target +is unmounted. +.PP +By default, +.I bind +and +.IR mount +replace the +.I target +file by the new one, +.IR source . +Henceforth, an evaluation of the pathname +.I target +will be translated to the new file. +If they are directories (for +.IR mount , +this condition is true by definition), +.I target +becomes a +.I "union directory" +consisting of one directory (the +.IR source +directory). +.PP +A union directory unites the contents of the source and target directories. +If the same name appears in both directories, the name used is the one in the +directory that is bound before the other. +In particular, if the directories have subdirectories of the same name, only +the contents of the subdirectory in the top directory will be seen. +If the subdirectory contents are themselves to be united, that must be done +first in a separate +.I bind +or +.IR mount . +.PP +Note that the +.B # +character in the name of a kernel device +must be quoted when used in a +.I bind +or +.I unmount +command, or the shell will take it as the start of a comment. +.PP +Options control aspects of the modification to the name space: +.TP +.B -b +Both files must be directories. +Add the +.IR source +directory to the beginning +of the union directory represented by the +.IR target +directory. +.TP +.B -a +Both files must be directories. +Add the +.IR +source +directory to the end +of the union directory represented by the +.IR target +directory. +.TP +.B -c +This can be used in addition to any of the above to permit +creation in a union directory. +When a new file is created in a union directory, +it is placed in the first element of the union that has been +bound or mounted with the +.B -c +option. +If that directory has not got write permission, +the create fails. +.TP +.B -q +Exit quietly without printing a diagnostic if the bind or mount fails. +.TP +.B -A +For +.I mount +only. Do not authenticate the connection to the server before proceeding with +.IR mount . +Otherwise the connection is authenticated by +.IR security-auth (2). +.TP +.BI -C " alg" +For +.I mount +only, +specify the algorithm, +.IR alg , +to be used following authentication for digesting or encryption. See +.IR ssl (3) +for the supported algorithms. +The default is +.BR none : +.IR ssl (3) +is not used after authentication. +.TP +.BI -k " kfile " +For mount only, specify the keyfile to be used when authenticating. +The default is +.BI /usr/ user /keyring/default . +See +.IR keyring-auth (2) +for more details. +.TP +.B -9 +For +.I mount +only, and only when hosted on Plan 9. +.I Source +is a Plan 9 file server; use Plan 9's +.I factotum +as authentication agent to authenticate the mount. +(Note that a Plan 9 file service that is known not to authenticate can be mounted from +any Inferno host, by using the +.B -A +option to suppress Inferno authentication.) +The existing Plan 9 file servers do not encrypt connections, so the +.B -C +and +.B -k +options are ignored. +.TP +.B -P +When +.I source +is a network address, use +.IR styxpersist (2) +to try to simulate a permanent connection, even should the server reboot. +Note the caveats on that page. +.TP +.B -o +For +.I mount +only, +the file server serves the original version of the Styx protocol, and +.I mount +inserts a process that translates to the current version. +.SH SOURCE +.B /appl/cmd/bind.b +.br +.B /appl/cmd/mount.b +.br +.B /appl/cmd/unmount.b +.SH SEE ALSO +.IR sh (1), +.IR keyring-auth (2), +.IR security-auth (2), +.IR sys-intro (2), +.IR sys-bind (2), +.IR sys-dial (2), +.IR intro (3), +.IR getauthinfo (8) diff --git a/man/1/blur b/man/1/blur new file mode 100644 index 00000000..3275c215 --- /dev/null +++ b/man/1/blur @@ -0,0 +1,74 @@ +.TH BLUR 1 +.SH NAME +blur \- an example program to demonstrate splitting a task over several machines. +.SH SYNOPSIS +.TP 40 +.B grid/demo/blur [imagefile] +- master process +.TP +.B grid/demo/blur +- slave process +.SH DESCRIPTION +.I Blur +is a small program that works in two parts to manipulate an +.IR image (6). +The master process takes an image file as an argument and displays the image in a window on screen whilst waiting for and displaying results from the slave processes. Each slave process takes a block of the image at a time and blurs it, reduces the contrast and overlays the result of a simple edge detection analysis. +.PP +The only requirement for a master and slave process to work together is that they both have a common +.B /tmp +directory. Within this a +.B /blur +directory is created and used by both processes. All communication and synchronisation is done through files in this directory. There can be many slave processes running concurrently in order to improve performance. + +.SH COMMUNICATION +All the communication takes place through files in the +.B /tmp/blur +directory which is common to all the processses. Once the master process has started, it creates: +.TP 17 +.B image.bit +the image being processed +.TP +.B data.dat +processing parameters e.g. block size, blur radius etc +.TP +.B working +tells slave processes to continue reading +.B todo/ +directory +.TP +.B todo/ +contains files showing which blocks still need processing +.PP +Within the +.B todo/ +directory, the master process creates a file for each block to be processed. Starting at +.BR block.0.a , +the name of each file denotes the block number and the version id. The version id is used to indicate the current version of a block being worked on. This is to allow the master process to ask another slave process to work on a block if it believes the current one has crashed or is taking too long. Once a block has been processed, the master removes the file from +.BR todo/ . +.PP +Each slave process reads the list of files in +.B todo/ +and for each block in turn, attempts to create a directory with the same name e.g. +.B block.1.a/ +in +.BR /tmp/blur . +It is not possible to create a directory if it already exists and as the slave will only process blocks for which it +.I has +been able to create a directory, no two slave processes can be simultaneously working on the same block. Once a slave has managed to create a directory, it processes the relevant block of the image and writes the result to +.B img.bit +in the directory. Having completed a block, the slave creates a file called +.B done +in order to let the master process know that it can read the completed result. +.PP +The master process keeps track of all the blocks being processed and if any of them have not been completed after a certain time, it creates a new file for that block in +.B todo/ +with a new version id. This guarantees that all blocks will be processed as long as at least one working slave process remains. Once all the blocks have been processed, the master process removes all the files created in +.BR /tmp/blur . +Each slave, upon seeing that the +.B working +file has gone, will then exit. + +.SH SOURCE +.B /appl/grid/demo/blur.b +.br +.B /appl/grid/demo/block.b diff --git a/man/1/brutus b/man/1/brutus new file mode 100644 index 00000000..a2221dca --- /dev/null +++ b/man/1/brutus @@ -0,0 +1,120 @@ +.TH BRUTUS 1 +.SH NAME +brutus \- screen editor with support for SGML +.SH SYNOPSIS +.B wm/brutus +[ +.I file +] +.SH DESCRIPTION +.I Brutus +is a multi-file editor for UTF format text files. +.PP +When editing multiple files, each file appears in its own window. +Button 1 can be used to make a window current. Within the current +window, button 1 selects text. +Double clicking selects text up to the boundaries of words, lines, +quoted text or bracketed text depending upon the text at the point of the +double click. Double clicking at the start of a line +selects the entire line. Double clicking just inside various forms of +brace selects text up to the matching brace, correctly handling nested braces. +Button 2 displays a menu of editing commands: +.TF snarf +.TP +.B cut +Delete the selected text and save it in the snarf buffer. +.TP +.B paste +Replace the selected text by the contents of the snarf buffer. +.TP +.B snarf +Save the selected text in the snarf buffer. +.TP +.B look +Search forwards and select the next occurrence of the selected text. +.PD +.PP +Mouse chording is implemented, as in +.IR acme (1). +Dragging a selection with button-1 held down and then also clicking +button-2 cuts the selected text into the Snarf buffer. +Clicking button-3 instead of button-2 replaces the selected text with the contents +of the Snarf buffer. +.PP +Clicking button 3 extracts the whitespace-bounded string around the point of the +click and plumbs it to the appropriate application (see +.IR plumber (8)). +.PP +A +.I brutus +console window is always displayed from which new files may be opened +or from which existing open files may be selected. +Typing +.IP +.EX +.BI / word +.EE +.PP +in the console window will search for the character sequence +.I word +in the file associated with the current window. Typing +.IP +.EX +.BI ? word +.EE +.PP +in the console window will search backwards for the character sequence +.IR word . +If text has been selected in the current window the search begins from the +end of the selection if searching forwards and the beginning of the selection if +searching backwards. +If no text has been selected the search begins from the current insertion point. +Typing +.IP +.EX +.I linenumber +.EE +.PP +in the console window selects all the text on line +.I linenumber +and moves the window to show the selected text. +.SS SGML +If the first line of a file is exactly: +.IP +.EX +<SGML> +.EE +.PP +it is assumed to be in SGML format and the contents are displayed according +to some predefined formatting rules. Tags of the form +.BI < font . size > +are recognised and used to control the visual appearance +of text. The +.I font +may be one of: +.BR Roman , +.BR Italic , +.BR Bold , +and +.B Type +giving normal, italicised, emboldened, and constant width text. +The +.I size +may be one of +.BR 6 , +.BR 8 , +.BR 10 , +.BR 12 , +or +.BR 16 , +and determines the point size of the displayed text. +.SH PLUMBING +.B wm/brutus +listens for +.B edit +messages and plumbs text selected by button 3 +.SH SOURCE +.B /appl/wm/brutus.b +.SH SEE ALSO +.IR acme (1), +.IR cook (1) diff --git a/man/1/cal b/man/1/cal new file mode 100644 index 00000000..11626284 --- /dev/null +++ b/man/1/cal @@ -0,0 +1,46 @@ +.TH CAL 1 +.SH NAME +cal \- print calendar +.SH SYNOPSIS +.B cal +[ +.I month +] +[ +.I year +] +.SH DESCRIPTION +.I Cal +prints a calendar. +.I Month +is either a number from 1 to 12, +a lower case month name, +or a lower case three-letter prefix of a month name. +.I Year +can be between 1 +and 9999. +If either +.I month +or +.I year +is omitted, the current month or year is used. +If only one argument is given, and it is a number larger than 12, +a calendar for all twelve months of the given year is produced; +otherwise a calendar for just one month is printed. +The calendar +produced is that for England and her colonies. +.PP +Try +.EX + cal sep 1752 +.EE +.SH SOURCE +.B /appl/cmd/cal.b +.SH BUGS +The year is always considered to start in January even though this +is historically naive. +.br +Beware that +.L "cal 90" +refers to the early Christian era, +not the 20th century. diff --git a/man/1/calendar b/man/1/calendar new file mode 100644 index 00000000..59ee0ea2 --- /dev/null +++ b/man/1/calendar @@ -0,0 +1,47 @@ +.TH CALENDAR 1 +.SH NAME +calendar \- calendar and diary +.SH SYNOPSIS +.B wm/calendar +[ +.IR mntdir | datafile +] +.br +.SH DESCRIPTION +.B Calendar +is a simple calendar and diary program. +Its optional argument specifies either a directory +on which has been mounted a +.I rawdbfs +(see +.IR dbfs (4)) +filesystem, or a file in which to store schedule entries +(which must already exist). In the latter case, +.I calendar +starts up an instance of +.I rawdbfs +to serve the file. The default argument to +.I calendar +is +.BR /mnt/schedule . +If two instances of calendar +are using the same datafile, care should be taken to run +.I rawdbfs +.I before +running the +.I calendar +programs, otherwise the data file will be corrupted. +.SH EXAMPLE +Start +.I calendar +using +.B $home/cal +for the data entries: +.EX + rawdbfs $home/cal /mnt/schedule + wm/calendar +.EE +.SH SOURCE +.B /appl/wm/calendar.b +.SH SEE ALSO +.IR dbfs (4) diff --git a/man/1/cat b/man/1/cat new file mode 100644 index 00000000..dbd0c90d --- /dev/null +++ b/man/1/cat @@ -0,0 +1,49 @@ +.TH CAT 1 +.SH NAME +cat \- concatenate files +.SH SYNOPSIS +.B cat +[ +.B - +] +[ +.I file ... +] +.SH DESCRIPTION +.I Cat +reads each +.I file +in turn and writes it on the standard output. +Thus +.IP +.EX +cat file +.EE +.PP +prints the file to standard output, and the following +.IP +.EX +cat file1 file2 >file3 +.EE +.PP +concatenates two files onto a third. +.PP +If no +.I file +is given, or where +.B \- +is given as an argument, +.I cat +reads from the standard input. +Output is buffered in blocks matching the input. +.SH SOURCE +.B /appl/cmd/cat.b +.SH "SEE ALSO" +.IR cp (1), +.IR stream (1) +.SH BUGS +Beware of +.B "cat a b >a" +and +.B "cat a b >b" +which destroy input files before reading them. diff --git a/man/1/cd b/man/1/cd new file mode 100644 index 00000000..3bd1e489 --- /dev/null +++ b/man/1/cd @@ -0,0 +1,32 @@ +.TH CD 1 +.SH NAME +cd \- change working directory +.SH SYNOPSIS +.B cd +[ +.I directory +] +.SH DESCRIPTION +.I Cd +changes the working directory for the shell and all processes in its +name space group (see +.IR sys-pctl (2)) +to +.IR directory . +If no argument is given, +.I cd +attempts to change to +.BI /usr/ user +where +.I user +is the name read from +.BR /dev/user . +.SH FILES +.B /dev/user +.SH SOURCE +.B /appl/cmd/cd.b +.SH "SEE ALSO" +.IR pwd (1), +.IR sys-chdir (2), +.IR sys-pctl (2), +.IR cons (3) diff --git a/man/1/charon b/man/1/charon new file mode 100644 index 00000000..abfdede6 --- /dev/null +++ b/man/1/charon @@ -0,0 +1,442 @@ +.TH CHARON 1 +.SH NAME +charon \- web browser +.SH SYNOPSIS +.B charon +[ +.BI - option +.RI [ value ] +] +.RI [ url ] +.SH DESCRIPTION +.I Charon +is the Inferno graphical web browser, supporting a variety of web standards for +the download, viewing, automation and navigation of web based information and images. +.PP +The browser runs under the +.IR wm (1) +window manager, or directly on the +.IR draw (3) +and +.IR cons (3) +devices. +When +.I charon +starts, it checks to see if +.I wm +is running; if it is then +.I charon +creates a new +.I wm +window for its display, otherwise it uses the whole area of the display device. +.PP +.I Charon +implements an image cache to help reduce the overhead of revisiting pages. +The image cache resides in memory for the duration of a session. +The cache is managed by discarding least recently used images once the cache bounds +have been reached. +Currently, +.I charon +does not provide a general purpose web cache; all other resources have to be reloaded +when needed. +.SS Navigation +.I Charon +provides navigation controls familiar to any web-surfer: +back, forward, reload, home, stop and URL entry. +Navigation of web-based information is by means of following HTML +.IR links, +this is done by clicking on them using mouse button-1, or the touch-screen. +Clicking mouse button-2 on a link causes its address to be displayed in the +.I status +line of +.IR charon 's +display. +Navigation to other information is achieved by clicking on the URL entry +field and typing the address of the resource, followed by the Enter key. +.PP +The retrieval and processing of the current page +is immediately terminated by clicking the Stop button. +.PP +As resources are browsed, a history of their web addresses (URLs) is built up. +At any time you can navigate forwards and backwards through this list using +the Forward and Back buttons. +Additionally, clicking the History button, displays the entire history list as a set of +.I links +enabling the user to quickly jump to any position in the list. +.PP +Sometimes, it is not possible to retrieve all of the components of a web document at the time +that it is requested. +Often this is because the remote server is very busy or not available. +This can result in the presentation of the document being incomplete or even corrupted. +Clicking the Reload button causes +.I charon +to attempt to retrieve the current document and all of its components again. +.PP +.I Charon +displays a progress panel to indicate the download status of each of the components of the +current document. +The progress panel is displayed at the bottom of the +.I charon +window. +Each component of the current document is represented by a rectangular block in the +progress panel. +As the download of a component progresses, its corresponding block is gradually filled in. +If an error occurs while downloading or processing the component, its block is coloured red. +The component address and amount downloaded, or reason for failure, can +be obtained by clicking mouse button-1 on its progress block. +.SS "Web Standards" +Standards are the life-blood of the World-Wide-Web; +without them, the web could not exist. +Web standards are under constant review with revised editions and complete new standards +being published all of the time. +This section lists the standards supported by +.I charon +at the time of writing this manual entry. +The version of the standard is given, if appropriate, alongside any comments on its +implementation. +.PP +.TP 15 +Protocols +HTTP versions 1.0 and 1.1 +.IP +HTTPS: SSL Protocol versions 2.0 and 3.0. +X.509.v3 server certificates. +.IP +FTP: +.I charon +supports retrieval of plain text files only, directory listings are not generated. +.IP +FILE: +.I Charon +attempts to determine the file type by a combination of the filename extension and +examination of the first few bytes of the file. Directory listings are not generated. +.TP +HTML +It is intended that +.I charon +supports HTML version 3.2, but in reality there is +no single standard! +.I Charon +attempts to be as close as possible to Netscape Navigator Version 3 in terms of its +markup support. +Obvious bugs in Navigator 3 and +the Netscape security model have not been adopted. +.TP +JavaScript +.I Charon +implements ECMAscript-262 2nd Edition, which is roughly equivalent to JavaScript1.1. +The ECMA-262 standard does not define the +.I host +objects and classes that should implemented by the browser. +.I Charon +implements the set of host objects and classes of Netscape Navigator version 3. +.TP +Encodings +US_Ascii, ISO_8859_1, UTF_8, Unicode (big-endian) +.TP +Images +GIF87a and GIF89a - animated GIFs always loop. +.br +JPEG, XBitmap, +Inferno BIT +.IR image (6) +format. +.SS Configuration +While using +.IR charon , +a sub-set of the configuration options can be modified. +Clicking the Configuration button displays a config popup window, enabling the user +to modify the current values of the available options. +.PP +The full set of configuration options can be modified on the command line or in +a configuration file. +Comand line options are processed after the configuration file. +The configuration file is loaded from +.BI /usr/ user /charon/config +where +.I user +is obtained by reading the file +.BR /dev/user . +If this file does not exist, the file +.B /services/config/charon.cfg +is read instead. +Options are processed in order; some options override settings affected +by others and so the order in which they are used is important. +.PP +Options are specified using a +.IR key , +.I value +pair. +On the command line this takes the form: +.IP +.BI - key +.I value +.PP +Where +.BI - key +and +.I value +are individual items in the argument list to +.IR charon . +.PP +In the config file options take the form: +.IP +.IB key = value +.PP +Where +.I value +is the remainder of the input line after the +.BR ` = ' +character. +Any text lines in the config file that start with a +.RB ` # ' +character are ignored as comment lines. +.SH OPTIONS +.TF 10 +.TP +.B userdir +The directory where +.I charon +expects to find its configuration files such as, bookmark and cookie files. +The default value is +.BI /usr/ user /charon/ +where +.I user +is obtained by reading the file +.BR /dev/user . +.TP +.B starturl +Specifies the URL of the first document to be displayed by +.I charon +at startup. +The default value is +.B file://localhost/services/webget/start.html +.TP +.B homeurl +Specifies the URL of the document to retrieve when the Home button is clicked. +The homeurl can only be changed if the +.B change_homeurl +option is enabled. +Setting +.B homeurl +also set the value of the +.B starturl +option. +The default value is +.B file://localhost/services/webget/start.html +.TP +.B change_homeurl +Enables editing of the Home URL in the configuration popup window. +A non-zero integer value enables this option, all other values disable it +This option also enables the +.B homeurl option. +The default value is 1. +.TP +.B helpurl +Specifies the URL of the document to retrieve when the Help button is clicked. +The default value is +.B file://localhost/services/webget/help.html +.TP +.B httpproxy +Specifies the host name and port of a web proxy server. +The address is given in the form of a URL, where the optional port number +can be specified after the server name by separating them by a colon +.RB ` : '. +The default value is the empty string, specifying that no web proxy server should be used. +.TP +.BI noproxy " or " noproxydoms +Specifies a list of network domains for which a web proxy should not be used. +The domains in the list can be separated by semicolon, comma, space or tab characters. +The default value is the empty list. +.TP +.B usessl +Extends SSL support. +Accepted values are +.RB `` v2 '' +and +.RB `` v3 ''. +Initially SSL support is configured off. +Enabling version 1 or version 2 support restricts SSL support to that specific version. +Specifying the option twice, once with each of the options, enables dual version +SSL support whereby the remote server is probed to determine which version it supports. +Some servers only support one of the versions and may not tolerate the special +version2/3 probe. +.TP +.B buttons +Specifies the set of buttons that appear on the window manager title-bar. +The buttons are given as a list of button names separated by comma, space or tab characters. +Valid button names are +.BR help , +.B resize +and +.BR hide . +The default value is for all buttons to be displayed. +.TP +.BI defaultwidth " or " width +Set the initial window width. +This option is only meaningful when running under the window manager. +If the specified width exceeds the screen width then the screen width is used. +The default value is 630. +.TP +.BI defaultheight " or " height +Set the initial height of the main display panel, this does not include the height +of the control and progress panels. +This option is only meaningful when running under the window manager. +If the total height of the +.I charon +window exceeds the screen height, the main display panel height will be reduced to fit. +The default value is 450. +.TP +.BI x " and/or " y +Set the initial window position. +These options are only meaningful when running under the window manager. +The default value for both options is 0. +.TP +.B imagelvl +Specify how to handle image components of a document. +This option takes a numeric argument. +A value of 0 prevents images from being downloaded or displayed. +A value of 1 will download and display images but not animate GIFS - only the first +frame of an animated GIF will be displayed. +A value of 2 or more enables full image processing. +The default value enables full image processing. +.TP +.B imagecachenum +Specify the maximum number of images that can remain resident in the image cache. +The default value is 60. +.TP +.B imagecachemem +Specify the maximum amount of image memory available to the image cache in bytes. +The cache is managed such that neither the +.B imagecachenum +nor +.B imagecachemem +limits are exceeded. +The image cache tries to ensure that no more than 80% of available system image memory +is taken by the cache, irrespective of the value of this option. +The default value is 80% of the system image memory that was available +.I when charon was started. +.TP +.B docookies +Enable cookie handling. +A non-zero numeric value enables cookie handling, all other values disable it. +The cookie cache is maintained in the +.B cookies +file in the +.I userdir +directory. +The default value is 0, cookie handling disabled. +.TP +.B doscripts +Enable JavaScript support. +A non-zero numeric value enables JavaScript, all other values disable it. +The default value is 0, JavaScript processing disabled. +.TP +.B showprogress +A non-zero numeric value results in the progress panel being displayed. +All other values hide the progress panel, leaving more vertical space for the main +display area. +The default value is 1, causing the progress panel to be displayed +.TP +.B http +Set the version of HTTP to use when communicating with web servers. +Supported versions are 1.0 and 1.1. +Any value other than 1.1 results in HTTP1.0 being used. +The default value is 1.0. +.TP +.B nthreads +Specifies the maximum number of concurrent downloads of document components. +Generally, if this number is higher, pages will complete faster as +.I charon +will not have to wait for the download of one component to complete before another +can be started. +The downside is that a higher number of concurrent downloads will use more memory +during the download process. +The default value is 4. +.SH FILES +.TF /services/config/charon.cfg +.TP +.B /services/config/charon.cfg +The default configuration file. +.TP +.IB userdir /config +The +.I user +specific configuration file. +.I userdir +is given by the value of the +.B userdir +option. +.TP +.IB userdir /cookies +The cookie cache. +.I userdir +is given by the value of the +.B userdir +option. +.TP +.B /services/webget/start.html +The default start page. +.TP +.B /services/webget/help.html +The default help page. +.SH SOURCE +.TF /appl/lib/ecmascript/ +.TP +.B /appl/charon/ +The main +.I charon +source files. +.TP +.B /appl/lib/ecmascript/ +Javascript (ECMA-262) implementation. +.SH BUGS +.I Charon +has more than its fair share of real bugs. +The following list documents the problems that are most likely to be +encountered. +.PP +.I Charon +implements its table layout as per the algorithm described in rfc1942. +This sometimes results in table-based documents being laid out differently to other +browsers. +.PP +JavaScript is a source of many problems. +Many scripts do not specify the language version they employ. +Additionally different language versions and browsers imply +a different set of +.I host +objects and classes. +Such differences often give rise to syntax or null reference errors. +This whole situation places a great burden on the script author to write +safe and compliant scripts; unfortunately authors +are rarely aware of this burden! +.PP +The following elements of JavaScript1.1 are not fully implemented: +.PP +.BR Document.applets , +.B Document.embeds +.I and +.BR Document.plugins : +Java Applets are not supported, the arrays are always empty. +.PP +.BR Document.onunload : +The property exists and can be assigned to, but the event is never raised. +.PP +.BR Window.open() : +A new window is never opened. If a URL is specified for the new window, the +current document will be replaced with that of the new URL. +.PP +Other annoyances include: +.PP +Window resize forces a complete document reload. +.PP +Frames in a frameset are processed one at a time, not concurrently. +.PP +It is not possible to save downloaded data to file. This is particularly annoying +for MIME types that +.I charon +does not support. +.PP +The history list can get confused, especially when following links in framesets +before the complete frameset has been downloaded. diff --git a/man/1/chgrp b/man/1/chgrp new file mode 100644 index 00000000..e6e894cb --- /dev/null +++ b/man/1/chgrp @@ -0,0 +1,44 @@ +.TH CHGRP 1 +.SH NAME +chgrp \- change file's group or owner +.SH SYNOPSIS +.B chgrp +[ +.B -uo +] +.I id +.I file ... +.SH DESCRIPTION +.I Chgrp +changes the group ownership of each +.I file +to the given +.IR id , +if the file's server +permits it. +The +.B -u +and +.B -o +options are equivalent +and cause +.I chgrp +to change file ownership instead, +if the file's server permits it. +.PP +Normally, a file's group can be changed by the file's owner, if the +owner is a member of the new group, or by the leader of both +the file's current group and the new group, +but various underlying devices, file servers and host operating systems +might not permit the operation at all. +Group and ownership changes allowed by a given device are documented by +the device's manual page. +See +.IR sys-stat (2) +for the variations amongst host operating systems. +.SH SOURCE +.B /appl/cmd/chgrp.b +.SH SEE ALSO +.IR chmod (1), +.IR ls (1) +.IR sys-stat (2) diff --git a/man/1/chmod b/man/1/chmod new file mode 100644 index 00000000..6fde1eb1 --- /dev/null +++ b/man/1/chmod @@ -0,0 +1,105 @@ +.TH CHMOD 1 +.SH NAME +chmod \- change file mode (permissions) +.SH SYNOPSIS +.B chmod +.I mode +.I file ... +.SH DESCRIPTION +.I Chmod +changes the mode (permissions) of each +.I file +according to +.IR mode , +which may be an octal number or a symbolic change to the existing mode. +.PP +A +.I mode +can be numerically formed as the +.SM OR +of the following octal values (a leading +.B 8r +is ignored): +.TF 0000 +.TP +0400 +read by owner +.TP +0200 +write by owner +.TP +0100 +execute (search in directory) by owner +.TP +0070 +read, write, execute (search) by group +.TP +0007 +read, write, execute (search) by others +.PD +.PP +A symbolic +.I mode +has the form: +.IP +.RI [ who ] +.I op permission +.PP +The +.I who +part is a combination of the letters +.B u +(for user's permissions), +.B g +(group) and +.B o +(other). +The letter +.B a +stands for +.BR ugo . +If +.I who +is omitted, the default is +.BR a . +.PP +The +.I op +field can be: +.B + +to add +.I permission +to the file's mode, +.B - +to take away +.IR permission , +.B = +to assign +.I permission +absolutely (all other bits being reset). +.PP +The +.I permission +field is any combination of the letters +.B r +(read), +.B w +(write), +.B x +(execute), +.B a +(append only), +.B l +(exclusive access), and +.B t +(temporary, not archived). +.SH SOURCE +.B /appl/cmd/chmod.b +.PP +.SH "SEE ALSO" +.IR chgrp (1), +.IR ls (1), +.IR sys-stat (2) +.SH BUGS +The interpretation of the modes is limited on some host operating systems, +particularly variants of Windows. diff --git a/man/1/cleanname b/man/1/cleanname new file mode 100644 index 00000000..6c772fb9 --- /dev/null +++ b/man/1/cleanname @@ -0,0 +1,37 @@ +.TH CLEANNAME +.SH NAME +cleanname \- clean a path name +.SH SYNOPSIS +.B cleanname +[ +.BI -d " dir" +] +.I name +\&... +.SH DESCRIPTION +.I Cleanname +tidies up each file +.I name +it is given and prints the result on standard output. +It removes redundant slashes and interprets +.L . +and +.L .. +directory names lexically. +If the +.B -d +option is given, each +.I name +that does not not start with +.B / +or +.B # +will be prefixed by +.IB dir / +before processing. +.SH SOURCE +.B /appl/cmd/cleanname.b +.SH SEE ALSO +.IR basename (1), +.IR pwd (1), +.IR names (2) diff --git a/man/1/cmp b/man/1/cmp new file mode 100644 index 00000000..9615c0b7 --- /dev/null +++ b/man/1/cmp @@ -0,0 +1,50 @@ +.TH CMP 1 +.SH NAME +cmp \- compare two files +.SH SYNOPSIS +.B cmp +[ +.B \-lsL +] +.I file1 file2 +[ +.I offset1 +[ +.I offset2 +] +] +.SH DESCRIPTION +The two files are +compared. +A diagnostic results if the contents differ, otherwise +there is no output. +By default, +.B cmp +prints the byte number of the first differing byte. +.PP +The options are: +.TP +.B -l +Print the byte number (decimal) and the +differing bytes (hexadecimal) for each difference. +.TP +.B -s +Print nothing for differing files, +but set the exit status. +.TP +.B -L +Print the line number of the first differing byte. +.PP +If offsets are given, +comparison starts at the designated byte position +of the corresponding file. +Offsets that begin with +.B 0x +are hexadecimal; +with +.BR 0 , +octal; with anything else, decimal. +.SH SOURCE +.B /appl/cmd/cmp.b +.SH "SEE ALSO" +.IR diff (1) diff --git a/man/1/collab b/man/1/collab new file mode 100644 index 00000000..1173a70d --- /dev/null +++ b/man/1/collab @@ -0,0 +1,84 @@ +.TH COLLAB 1 +.SH NAME +collab: connect \- connect to collaborative files and services +.SH SYNOPSIS +.B collab/connect +[ +.BI -C " alg" +] [ +.BI -k " keyfile" +] [ +.B -v +] [ +.I netaddress +[ +.I localdir +] ] +.SH DESCRIPTION +.I Connect +dials network address +.I netaddr +(default: +.BR "net!$collab!9999" ), +which should be served by an instance of +.IR collabsrv (8), +and mounts the resulting connection on +.BR /n/remote ; +it then binds +.BR /n/remote/collab +on +.I localdir +(default: +.BR /n/ftree/collab ). +.PP +The resulting hierarchy under +.B /n/remote +is determined by the site configuration, but usually includes the +directory +.BR /n/remote/services , +which gives access to the server side of collaborative activities, as described in +.IR collabsrv (8), +and the directory +.BR /n/remote/collab , +which contains the file hierarchy that contains all collaborative resources offered to a client device. +.PP +If an instance of +.IR wm-ftree (1) +is running in the same name space, then +after mounting the connection and adjusting the name space, +.IR connect +tells it that the name space has changed, +so any displayed view of it can be updated. +.PP +.I Connect +accepts the following options: +.TP +.BI -C " alg" +Specify the algorithm, +.IR alg , +to be used following authentication for digesting or encryption. See +.IR ssl (3) +for the supported algorithms. +The default is +.BR none : +.IR ssl (3) +is not used after authentication. +.TP +.BI -k " kfile " +Specify the keyfile to be used when authenticating. +The default is +.BI /usr/ user /keyring/ netaddr , +if that exists, and otherwise +.BI /usr/ user /keyring/default . +See +.IR keyring-auth (2) +for more details. +.TP +.B -v +Causes +.I connect +to chat about its actions on standard output. +.SH SOURCE +.B /appl/collab/connect.b +.SH SEE ALSO +.IR collabsrv (8) diff --git a/man/1/collab-clients b/man/1/collab-clients new file mode 100644 index 00000000..9a652fda --- /dev/null +++ b/man/1/collab-clients @@ -0,0 +1,202 @@ +.TH COLLAB-CLIENTS 1 +.SH NAME +collab: chat, poll, poller, whiteboard \- collaborative activities +.SH SYNOPSIS +.B collab/clients/chat +[ +.I servicedir +] +.I chatroom +.PP +.B collab/clients/poll +[ +.B -d +] +[ +.I servicedir +] +.I station +.PP +.B collab/clients/poller +[ +.B -d +] +[ +.I servicedir +] +.I station +.PP +.B collab/clients/whiteboard +[ +.I servicedir +] +.I id +.SH DESCRIPTION +These commands are +.IR wm (1) +programs that are clients of the services of +.IR collabsrv (8). +It must therefore be running in the network for any of them +to be usable. +Furthermore, +.IR collabsrv 's +service directory must appear somewhere in the client's name space, +for instance by using +.IR connect (1), +although plain +.I mount +(see +.IR bind (1)) +can also be used. +In all cases, +the optional parameter +.I servicedir +names the service directory +(default: +.BR /n/remote/services ). +Finally, +.I collabsrv +must be configured to provide the service. +.PP +.I Chat +is a simple multi-user chat program. +Each user that wishes to chat starts +.I chat +naming the desired +.IR chatroom , +which is an identifying string agreed amongst the clients. +(It is often convenient to use the path name of a shared file.) +.I Chat +attempts to enter the given +.IR chatroom . +It announces the results of the connection, and if successful, +displays subsequent chat room messages. +Its window provides a scrollable text area that forms a transcript +of the current conversation, and a single line of editable text at the bottom +of the window for sending messages. +Messages sent by others appear in the transcript tagged with the sender's name. +When the user types a new line (return, enter) in the text entry area, +.I chat +sends the text to all the members of the chat room, +and it subsequently appears in the user's own transcript, +tagged with +.B <you> +in place of the user's name. +.I Chat +also notes in the transcript the arrival and departure of other users. +.PP +.I Poll +and +.I poller +together enable simple real-time polls. +One user runs +.IR poller , +which activates the given polling +.IR station . +The other users can subsequently join using +.IR poll , +naming the same +.IR station , +and can come and go as they please as long +as the +.I poller +remains. +The polling station closes when the +.I poller +leaves. +.PP +.I Poller +drives the interaction for a sequence of one or more real-time polls. +It is assumed that the poller is in the same room as those polled, allowing the +questions and answers to be read out each time, as in quiz shows and exit polls. +Alternatively, something like +.I chat +could be used to pose questions to a distant audience. +For each poll, the polling user selects, in +.IR poller 's +window, the number of possible answers (2, 3, or 4) using radio buttons, +and hits the +.B Start +button. +A bar chart shows results as they come in: each bar shows the percentage of those polled +(thus far) that have selected the corresponding alternative. +Once the polling user hits +.BR Stop , +no further results are accepted, and the bar chart represents the final result. +The +.B \-d +option causes +.I poller +to display a debugging transcript of the messages it receives. +.PP +Each user being polled runs +.IR poll , +and initially +sees an array of radio buttons with labels +.BR A , +.BR B , +.BR C +and +.BR D . +They remain disabled until the +.I poller +hits +.BR Start , +at which point +.I poll +enables as many radio buttons as allowed by the poller for this round. +If the user selects a button, +.I poll +immediately send the selection to the polling station +(and thus to the +.IR poller ), +and disables all the buttons, although the user's selection remains marked. +All buttons are also disabled when the +.I poller +says to stop, +whether or not a choice has been made. +Buttons are enabled again at the start of the next question. +The +.B \-d +option causes +.I poll +to display a debugging transcript. +.PP +.I Whiteboard +allows several users to draw on the shared canvas with the given +.IR id , +which is an identifying string agreed amongst the clients. +The whiteboard window +contains a canvas to be drawn on with stylus, or mouse button 1. +Strokes drawn in a given +.I whiteboard +appear in all others with the +same board +.IR id . +There are two controls at the bottom of the window: +the lower left-hand corner has a small pop-up menu of brush shapes, +including one for erasing; and a long coloured button showing the current drawing colour that +pops up a choice of drawing colour from a palette. +Artists can come and go as they please, but +the drawing vanishes for ever when the last artist leaves the whiteboard. +.SH FILES +.TF /n/remote/services +.TP +.B /n/remote +default mount point of collaborative resources +.br +.TP +.B /n/remote/services +.IR collabsrv (8) +collaborative activity services directory +.SH SOURCE +.B /appl/collab/clients/chat.b +.br +.B /appl/collab/clients/poll.b +.br +.B /appl/collab/clients/poller.b +.br +.B /appl/collab/clients/whiteboard.b +.SH SEE ALSO +.IR connect (1), +.IR collabsrv (8) diff --git a/man/1/comm b/man/1/comm new file mode 100644 index 00000000..1aca9f07 --- /dev/null +++ b/man/1/comm @@ -0,0 +1,46 @@ +.TH COMM 1 +.SH NAME +comm \- select or reject lines common to two sorted files +.SH SYNOPSIS +.B comm +[ +.B -123 +] +.I file1 file2 +.SH DESCRIPTION +.I Comm +reads lines from +.I file1 +and +.IR file2 , +which are in lexicographical order, +and produces a three column output: lines only in +.IR file1 ; +lines only in +.IR file2 ; +and lines in both files. +The file name +.L - +means the standard input. +.PP +Each option digit +.LR 1 , +.LR 2 , +or +.LR 3 +suppresses printing of the corresponding +column. +.SH EXAMPLE +.TP +.EX +comm -12 file1 file2 +.EE +.IP +Print lines common to two sorted files. +.SH SOURCE +.B /appl/cmd/comm.b +.SH "SEE ALSO" +.IR sort (1), +.IR cmp (1), +.IR diff (1), +.IR uniq (1) diff --git a/man/1/cook b/man/1/cook new file mode 100644 index 00000000..55eddfa9 --- /dev/null +++ b/man/1/cook @@ -0,0 +1,97 @@ +.TH COOK 1 +.SH NAME +cook \- SGML converter +.SH SYNOPSIS +.B cook +[ +.B -f +.I format +] [ +.B -o +.I outfile +] [ +.I infile +] +.SH DESCRIPTION +.B Cook +reads a file in SGML format and produces an interpretation of the file in +either LaTex or HTML format on standard output. +.PP +If no +.I infile +argument is present, the standard input is read. +If an +.I outfile +argument is present, the results are written to that file instead +of standard output. +The +.I format +argument must be either +.B html +to produce HTML format output or one of: +.BR latex , +.BR latexbook , +.BR latexpart , +.BR latexproc , +or +.B latexslides +to produce LaTex output. +.PP +The +.B latexpart +format assumes that the resulting output is to be included in +the body of a controlling LaTex document. The other LaTex +format options result in the generation of various LaTex +wrapping commands. +.PP +.B Cook +was designed to operate on the output of the +.B Brutus +editor (See +.IR brutus (1) +) and so its mapping of SGML tags is closely linked to those +generated by +.IR brutus . +.PP +The following tags are recognised: +.BR Author , +.BR Bold. "\fIn\fR," +.BR Caption , +.BR Example , +.BR Exercise , +.BR Extension , +.BR Float , +.BR Heading , +.BR Index , +.BR Index-topic , +.BR Italic. "\fIn\fR," +.BR Label , +.BR Label-ref , +.BR List , +.BR List-elem , +.BR No-fill , +.BR Par , +.BR Roman. "\fIn\fR," +.BR SGML , +.BR Title , +and +.BR Type. "\fIn\fR," +where +.I n +is a character point size and must be one of: +.BR 6 , +.BR 8 , +.BR 10 , +.BR 12 " or" +.BR 16 . +.SH FILES +.B /dis/wm/brutus/ +.SH SOURCE +.B /appl/cmd/cook.b +.SH SEE ALSO +.IR brutus (1) +.SH DIAGNOSTICS +.BR "Not an SGML file" : +The first line of the input file must contain the SGML tag +.B <SGML> +and nothing else. diff --git a/man/1/cp b/man/1/cp new file mode 100644 index 00000000..6e7f3445 --- /dev/null +++ b/man/1/cp @@ -0,0 +1,134 @@ +.TH CP 1 +.SH NAME +cp, fcp \- copy files +.SH SYNOPSIS +.B cp +[ +.B -gux +] +.I fromfile tofile +.br +.B cp +[ +.B -gux +] +.I fromfile +\&... +.I todir +.br +.B cp -r +[ +.B -gux +] +.I fromdir +\&... +.I todir +.PP +.B +fcp +[ +.BI -R " nr" +] [ +.BI -W " nw" +] +.I fromfile tofile +.br +.B fcp +[ +.BI -R " nr" +] [ +.BI -W " nw" +] +.I fromfile +\&... +.I todir +.br +.B fcp -r +[ +.BI -R " nr" +] [ +.BI -W " nw" +] +.I fromdir +\&... +.I todir +.SH DESCRIPTION +In the first form, +.I fromfile +is any name and +.I tofile +is any name except an existing directory. +In the second form, the commands copy one or more +.I fromfiles +into +.I dir +under their original file names, as if by a sequence of commands in the first form. For example: +.IP +.B "cp f1 f2 dir" +.PP +is equivalent to: +.IP +.B "cp f1 dir/f1; cp f2 dir/f2" +.PP +.I Cp +copies the contents of plain (non-directory) file +.I fromfile +to +.IR tofile . +The mode and owner of +.I tofile +are preserved if it already exists; the permissions of +.I fromfile +is used otherwise. +The +.B -x +option sets the full mode and modified time of +.I file2 +from +.IR file1 ; +.B -g +sets the group id; and +.B -u +sets the group id and user id (which is usually only possible if the file server is in an administrative mode). +.PP +The +.B -r +option directs +.I cp +to copy recursively the named directories +.I "fromdir ..." +to the target directory +.IR todir . +.PP +.I Fcp +behaves like +.IR cp , +but copies many blocks in parallel. +It works only with files that respect read and write offsets (see +.B pread +and +.B pwrite +in +.IR sys-read (2)), +which usually excludes files representing devices or services. +When it applies, however, it is often +much faster than +.IR cp . +The +.B -R +and +.B -W +options set the number of readers and writers (default for each: 8). +.SH SOURCE +.B /appl/cmd/cp.b +.br +.B /appl/cmd/fcp.b +.SH "SEE ALSO" +.IR cat (1), +.IR mv (1), +.IR sys-stat (2) +.SH DIAGNOSTICS +.I Cp +and +.I fcp +refuse to copy a file onto itself. diff --git a/man/1/cprof b/man/1/cprof new file mode 100644 index 00000000..fe52805f --- /dev/null +++ b/man/1/cprof @@ -0,0 +1,221 @@ +.TH CPROF 1 +.SH NAME +cprof \- coverage profiling of limbo programs +.SH SYNOPSIS +.B cprof +[ +.B -nfer +] [ +.BI -m " modname" +] ... [ +.I "cmd arg ..." +] +.PP +.B wm/cprof +[ +.B -efr +] [ +.BI -m " modname" +] ... [ +.I "cmd arg ..." +] +.SH DESCRIPTION +.I Cprof +is a coverage profiling tool which shows whether lines of limbo source have been +executed or not. It can also show the number of times a line of code has been +executed and can accumulate results over a series of runs if so desired. The source in +question should be compiled with the +.B -g +flag so that the relevant symbol table files exist. +.PP +The +.B -n +option lists the name of the file along with the line number. +.PP +The +.B -f +option shows the number of times source code is executed rather than simply +indicating coverage. +.PP +The +.B -r +options indicates that the profiling results should be recorded. Any profiled dis file +of the form <name>.dis will have the raw profiling results stored in a file named +<name>.prf. If this file already existed before the run, the results will be added to +this file. The profiling results are not shown when this option is given. +.PP +The +.B -m +option lists the module names which are to be profiled. If none are given, all the +modules loaded by the kernel will be profiled. The name may be the actual name of +the module or its path name. +.PP +The +.B -e +option profiles the module that is loaded first in any following command. In this case +there is no need to give a +.B -m +option as this is added automatically. +.PP +Any remaining arguments are assumed to +specify a command and set of arguments to the command. If this is the case, +.B cprof +will automatically start profiling, run the command to completion and then +stop profiling before either recording the results or showing the profile statistics. +.PP +If no command is given to profile, then +.B cprof +will show the profile statistics from any existing recorded results in .prf files instead. +.PP +.B Cprof +discriminates between different sections of code on the same line. A limbo +for statement, for example, consisting of initialization, condition and step all on the same line +of source code will be dealt with as three separate sections. +.PP +.B Cprof +displays the profile statistics as a list of the limbo source preceded by a line +number and an indication of whether the line was executed or not. For each section +of code on each line, a plus sign indicates that it was executed, a minus sign that +it was not and a question mark indicates that some of the dis instructions associated +with the section of code were executed but some were not. Lines with no +associated dis code do not have an indication. Of course, given the +.B -f +option, the number of times each section is executed is shown instead. +.PP +.I Wm/cprof +is a graphical coverage profiling tool which shows which lines of limbo source have not been +executed. It can accumulate results over a series of runs if so desired. +.PP +The +.B -r +options indicates that the profiling results should be recorded. Any profiled dis file +of the form <name>.dis will have the raw profiling results stored in a file named +<name>.prf. If this file already existed before the run, the results will be added to +this file. +.PP +The +.B -m +option lists the module names which are to be profiled. If none are given, all the +modules loaded by the kernel will be profiled. The name may be the actual name of +the module or its path name. +.PP +The +.B -e +option profiles the module that is loaded first in any following command. In this case +there is no need to give a +.B -m +option as this is added automatically. +.PP +The +.B -f +option allows a view of the execution profile rather than coverage profile. Each source +line is preceded by the number of times it was executed and the text is coloured according +to this: the darker the colour the more times the section of code was executed. +.PP +Any remaining arguments are assumed to +specify a command and set of arguments to the command. If this is the case, +.B wm/cprof +will automatically start profiling, run the command to completion and then +stop profiling before optionally recording the results and showing the profile statistics. +.PP +If no command is given to profile, then +.B wm/cprof +will show the profile statistics from any existing recorded results in .prf files instead. +.PP +.B Wm/cprof +displays the profile statistics graphically. When the +.B -f +option is not present, code that has not been executed is shown +in white against a red background. Code whose corresponding dis instructions have +not been wholly executed are shown in red against a white background. Typically a +line of code such as +.EX + x = !x; +.EE +might show only partial execution if x has changed value from 1 to 0 but not +vice-verse. +.PP +The top of the text window names the module along with any modules before and +after it in the list. If a module has 100% coverage this is stated as well. To help find +unexecuted code, use the find icon in the menu bar. To move to the next or go back to +any other profiled modules, use the arrow icons in the menu bar. The last icon, the reload +icon, pops up a menu of profiled modules to choose from. +.PP +.B wm/cprof +calls +.I cprof +to do the actual work. +.SH EXAMPLE +To profile a particular command +.IP +.EX +cprof /dis/math/sieve 100 +.EE +.PP +To profile the same command but restrict attention to its own module (Sieve). +.IP +.EX +cprof -m Sieve /dis/math/sieve 100 +.EE +.PP +A shorter version of the above: +.IP +.EX +cprof -e /dis/math/sieve 100 +.EE +.PP +Make 3 runs recording results as we go: +.IP +.EX +cprof -e -r /dis/math/sieve 100 +cprof -e -r /dis/math/sieve 1000 +cprof -e -r /dis/math/sieve 10000 +.EE +.PP +Now look at the cumulative results: +.IP +.EX +cprof -m /dis/math/sieve.dis +.EE +.PP +To profile a particular command: +.IP +.EX +wm/cprof /dis/math/sieve 100 +.EE +.PP +To profile the same command but restrict attention to its own module (Partitions). +.IP +.EX +wm/cprof -m Sieve /dis/math/sieve 100 +.EE +.PP +A shorter version of the above: +.IP +.EX +wm/cprof -e /dis/math/sieve 100 +.EE +.PP +Make 3 runs recording results as we go using cprof for simplicity: +.IP +.EX +cprof -e -r /dis/math/sieve 100 +cprof -e -r /dis/math/sieve 1000 +cprof -e -r /dis/math/sieve 10000 +.EE +.PP +Now look at the cumulative results graphically: +.IP +.EX +wm/cprof -m /dis/math/sieve.dis +.EE +.SH SOURCE +.B /appl/cmd/cprof.b +.br +.B /appl/wm/cprof.b +.SH SEE ALSO +.IR prof (1), +.IR prof (2), +.IR prof (3) +.SH BUGS +Neither command can profile compiled limbo programs. diff --git a/man/1/cpu b/man/1/cpu new file mode 100644 index 00000000..3f6f0226 --- /dev/null +++ b/man/1/cpu @@ -0,0 +1,64 @@ +.TH CPU 1 +.SH NAME +cpu \- execute a remote command +.SH SYNOPSIS +.B cpu +[ +.B -C +.I alg +] +.RI [ net\fB!\fP ] host +[ +.I command +[ +.IR arg ... +] +] +.SH DESCRIPTION +.B Cpu +dials +.I host +(using network +.B tcp +if +.I net +is not given), exports the local namespace and executes the given +.I command +on that machine. The local namespace is visible to the +command in +.BR /n/client ; +local device files are bound into the remote device directory. +If +.I command +is not given, then +.B /dis/sh +is run. +.PP +The +.B -C +option sets the algorithm +to be used following authentication for digesting or encryption, to +.IR alg . +See +.IR ssl (3) +for the supported algorithms. +The default is +.BR none : +.IR ssl (3) +is not used after authentication. +.SH SOURCE +.B /appl/cmd/cpu.b +.SH SEE ALSO +.IR sys-dial (2), +.IR keyring-auth (2), +.IR security-auth (2) +.SH BUGS +Although the draw device files are visible +to the remote command, the original implementation +of Tk meant that windowing applications could not +receive events when +run remotely. +That has been fixed in this release, but +.I cpu +has not yet been updated to take advantage. +A later update will do that. diff --git a/man/1/crypt b/man/1/crypt new file mode 100644 index 00000000..6ec1e2ef --- /dev/null +++ b/man/1/crypt @@ -0,0 +1,98 @@ +.TH CRYPT 1 +.SH NAME +crypt, aescbc \- data encryption +.SH SYNOPSIS +.B crypt +[ +.B -d +] [ +.BI -a " alg\fP\fR[\f5/\fP\fIalg\fP\fR]\fP" +] [ +.BI -f " keyfile" +] [ +.BI -k " key" +] [ +.B -? +] +.PP +.B auth/aescbc +[ +.B -d +] [ +.B -e +] [ +.BI -f " keyfile" +] [ +.BI -k " key" +] +.SH DESCRIPTION +.I Crypt +reads a data stream from its standard input and writes it encrypted to standard output, +preceded by a header that gives details of the algorithm used. +If the +.B -d +option is given, +.I crypt +decrypts the standard input instead, writing the clear text on standard output. +The options are: +.TP +.BI -a " alg..." +Specifies one or two algorithms, for encryption and/or digests. +The algorithms are those supported by +.IR ssl (3). +If two algorithms are given, they should be separated by a slash +.RB ( / ) +or space, following the conventions of +.IR ssl (3). +.TP +.BI -f " keyfile" +Read the encryption key from the given file, which obviously should be carefully protected. +Trailing newlines are ignored. +.TP +.BI -k " key" +Use +.I key +as the encryption key. +.TP +.B -? +Print a list of the available encryption and digest algorithms. +.PP +If the secret +.I key +is not otherwise supplied, +.I crypt +prompts for it on +.BR /dev/cons . +There is no need to give algorithms when decrypting, because they are taken from the header. +The default algorithm is +.BR md5/ideacbc . +It might be necessary to change that when using +.I crypt +for commercial purposes, as noted in +.IR keyring-crypt (2). +.PP +.I Aescbc +encrypts and decrypts using AES (Rijndael) in cypher +block chaining (CBC) mode. +It uses input and output formats compatible with Plan 9's +.I aescbc +command; it also +accepts input in the format used by +.IR keyfs (4) +and Plan 9's +.IR secstore . +The +.B -e +option causes it to encrypt; the +.B -d +option to decrypt. +The other options are just as for +.IR crypt . +.SH SOURCE +.B /appl/cmd/crypt.b +.br +.B /appl/cmd/auth/aescbc.b +.SH SEE ALSO +.IR ssl (3), +.IR keyfs (4) + diff --git a/man/1/date b/man/1/date new file mode 100644 index 00000000..c2dc870c --- /dev/null +++ b/man/1/date @@ -0,0 +1,55 @@ +.TH DATE 1 +.SH NAME +date \- print the date +.SH SYNOPSIS +.B date +[ +.B -u +] [ +.B -n +] [ +.I seconds +] +.SH DESCRIPTION +Prints the date to standard output, in the format: +.IP +.EX +Wed Jan 12 11:54:06 GMT 2002 +.EE +.PP +The options are +.TP +.B -u +Report Greenwich Mean Time (GMT) rather than local time. +.TP +.B -n +Report the date as the number of seconds since the +epoch, 00:00:00 GMT, January 1, 1970. +.PP +Current time is obtained +by reading +.BR /dev/time . +The conversion from Greenwich Mean Time to local time depends on the contents of +.BR /locale/timezone . +.PP +If the optional argument +.I seconds +is present, it is used as the time to convert rather than +the real time. +.SH FILES +.TF "/locale/timezone " +.TP +.B /locale/timezone +Current time zone name and adjustments +.TP +.B /locale +A directory containing time zone tables +.TP +.B /dev/time +microseconds since the epoch, 00:00:00 GMT, 1 January 1970 +.SH SOURCE +.B /appl/cmd/date.b +.SH "SEE ALSO" +.IR time (1), +.IR daytime (2), +.IR cons (3) diff --git a/man/1/dd b/man/1/dd new file mode 100644 index 00000000..17dd66d3 --- /dev/null +++ b/man/1/dd @@ -0,0 +1,182 @@ +.TH DD 1 +.SH NAME +dd \- convert and copy a file +.SH SYNOPSIS +.B dd +[ +.I option value +] +\&... +.SH DESCRIPTION +.I Dd\^ +copies the specified input file +to the specified output with +possible conversions. +The standard input and output are used by default. +The input and output block size may be +specified to take advantage of raw physical I/O. +The options are +.TF "oseek\ \ " +.PD +.TP +.BI -if\ f +Open file +.I f +for input. +.TP +.BI -of\ f +Open file +.I f +for output. +.TP +.BI -ibs\ n\^ +Set input block size to +.I n\^ +bytes (default 512). +.TP +.BI -obs\ n\^ +Set output block size (default 512). +.TP +.BI -bs\ n\^ +Set both input and output block size, +superseding +.I ibs\^ +and +.IR obs . +If no conversion is specified, +preserve the input block size instead of packing short blocks +into the output buffer. +This is particularly efficient since no in-core copy need be done. +.TP +.BI -cbs\ n\^ +Set conversion buffer size. +.TP +.BI -skip\ n\^ +Skip +.I n +input records before copying. +.TP +.BI -iseek\ n\^ +Seek +.I n +records forward on input file +before copying. +.TP +.BI -files\ n\^ +Catenate +.I n +input files (useful only for magnetic tape or similar input device). +.TP +.BI -oseek\ n\^ +Seek +.I n\^ +records from beginning of output file before copying. +.TP +.BI -count\ n\^ +Copy only +.I n +input records. +.HP +\fL-conv\ ascii\ \ \ \ \fRConvert +.SM EBCDIC +to +.SM ASCII. +.PD0 +.RS "\w'\fL-conv\ \fP'u" +.TP "\w'\fLunblock\ \ \fP'u" +.B ebcdic +Convert +.SM ASCII +to +.SM EBCDIC. +.TP +.B ibm +Like +.B ebcdic +but with a slightly different character map. +.TP +.B block +Convert variable length +.SM ASCII +records to fixed length. +.TP +.B unblock +Convert fixed length +.SM ASCII +records to variable length. +.TP +.B lcase +Map alphabetics to lower case. +.TP +.B ucase +Map alphabetics to upper case. +.TP +.B swab +Swap every pair of bytes. +.TP +.B noerror +Do not stop processing on an error. +.TP +.B sync +Pad every input record to +.I ibs\^ +bytes. +.RE +.PD +.PP +.fi +Where sizes are specified, +a number of bytes is expected. +A number may end with +.L k +or +.LR b +to specify multiplication by +1024 or 512 respectively; +a pair of numbers may be separated by +.L x +to indicate a product. +Multiple conversions may be specified in the style: +.LR "-conv ebcdic,ucase" . +.PP +.L Cbs\^ +is used only if +.LR ascii\^ , +.LR unblock\^ , +.LR ebcdic\^ , +.LR ibm\^ , +or +.L block\^ +conversion is specified. +In the first two cases, +.I n +characters are copied into the conversion buffer, any specified +character mapping is done, +trailing blanks are trimmed and new-line is added +before sending the line to the output. +In the latter three cases, characters are read into the +conversion buffer and blanks are added to make up an +output record of size +.IR n . +If +.L cbs\^ +is unspecified or zero, the +.LR ascii\^ , +.LR ebcdic\^ , +and +.L ibm\^ +options convert the character set without changing the block +structure of the input file; the +.L unblock\^ +and +.L block\^ +options become a simple file copy. +.SH SOURCE +.B /appl/cmd/dd.b +.SH DIAGNOSTICS +.I Dd +reports the number of full + partial input and output +blocks handled. +.SH "SEE ALSO" +.IR cat (1), +.IR cp (1) diff --git a/man/1/deb b/man/1/deb new file mode 100644 index 00000000..3f8f8923 --- /dev/null +++ b/man/1/deb @@ -0,0 +1,172 @@ +.TH DEB 1 +.SH NAME +deb \- graphical Limbo debugger +.SH SYNOPSIS +.B wm/deb +.RB [ -f +.IR file ] +.RB [ -p +.IR pid ] +.SH DESCRIPTION +.B Wm/deb +displays two windows, the main debugging window and +a stack window for browsing the data values of the thread +currently being debugged. +.PP +Debugging is performed using the facilities of the +.B prog +device bound to the local +.B /prog +directory (see +.IR prog (3)). +Debugging of code running on a remote machine can be performed by +binding the remote +.B /prog +directory in place of the local one. (See +.IR bind (1)). +.PP +In order to display source code and set breakpoints accurately, an up to date +symbol file +.RB ( .sbl ) +must be available as well as the limbo source file +.RB ( .b ). +.SS "Main window" +The main window is comprised of a menu bar, an icon bar and three text panels. +One panel, labelled +.IR Threads , +lists the process IDs (PIDs) of the threads being debugged. +Another panel, labelled +.IR Break , +lists the set of breakpoints, each given a unique number. +The third and largest panel displays the source code of the thread being debugged. +.PP +Breakpoint positions are shown by red text in the source code display. +Clicking on a breakpoint number in the +.I Break +panel results in the source code panel being scrolled or updated to show +the breakpoint. +Breakpoints are toggled by clicking on the statement or sub-expression in the source +code window and clicking the breakpoint +button on the icon bar. +A breakpoint can be hit by any of the threads being debugged - +breakpoints are set on source code, not on individual threads. +.PP +Clicking on a PID in the +.I Threads +panel results in the source code panel being scrolled or updated to highlight +where in the code the thread is blocked, broken or halted on a breakpoint. +.PP +A running thread can be halted by clicking the stop button on the icon bar. +A thread will also halt when it hits a breakpoint. +Once a thread is halted (not blocked or broken) its execution can be advanced +a step at a time by means of the +buttons on the icon bar. +The thread can be stepped one operation at a time or a statement at a time. +Normally when single stepping, function calls are stepped into. +Stepping commands allow for stepping over function calls, whereby the function is still +called but its whole execution is treated as a single step. +Stepping out of a function is also provided, whereby execution continues unabated +until returning from the function. +Execution of the halted thread can be continued, running until it terminates, breaks +or hits another breakpoint. +.PP +Any of the threads being debugged can be killed or detached from the debugger +using buttons on the icon bar. +Detaching a halted thread resumes its execution. +.PP +The main window provides a set of menus for viewing source files, attaching to +other threads, setting debugger options and searching for text in the source code window. +.SS "Stack Window" +The stack window is used to inspect the values of local and global variables and function +arguments. +Items are displayed in a hierarchical manner. +Any item that contains other items, such as a variable of an ADT type, can be expanded +to show the values of the sub-items. +The sub-items are displayed by clicking on the expand button on the left of the +containing item, they can be hidden by pressing the button again. +The sub-item list is displayed indented from its container as a visual cue to their +association. +.PP +The stack window shows the full stack trace of the current thread. +The stack trace is displayed as a list of frames, the current frame displayed +at the top of the window. +Each frame is given by the function name and source location of the code being +executed in the frame. +Each frame has the following sub-items: +.TP 10 +.B locals +Local variables declared in the function of the frame. +.TP +.B args +The arguments passed to the frame function. +.TP +.B module +The module global variables in the implementation module +of the frame function. +.PP +Clicking on the name of a variable or function argument highlights the declaration of +that name in the source panel of the main debug window. +Clicking on the function name of a stack frame causes the main window source panel to +display the current statement of the frame. +.PP +The debugger has a stack button which simply brings +that window to the front of the display. +.PP +The options menu has a layout configuration which +allows the user to have a horizontal scroll bar or to wrap long +lines (the default); and an option to strip carriage return characters that precede newlines (for the benefit of those using Windows' editors). +The state of the options is saved in the file +.BI /usr/ username /lib/deb +if that file can be created. The debugger attempts to read +this file on startup to set the user's preferred options. +.SH OPTIONS +.TP 10 +.BI -f " file" +Specifies a source file +.RB ( .b ) +to load. +The associated executable file +.RB ( .dis ) +is not launched until the continue +.RI ( "run to breakpoint" ) +button is pressed. +This option takes precedence over the +.B -p +option. +.TP +.BI -p " pid" +Attach to the already running thread given by +.IR pid . +.SH PLUMBING +.B wm/deb +plumbs the address of text selected using +button 3 in the source display panel, as +.B text +of the form +.IP +.IB "file-name" : "line-number" +.SH FILES +.BI /prog/ n /* +.br +.BI /usr/ username /lib/deb +.SH SOURCE +.B /appl/wm/deb.b +.br +.B /appl/wm/debdata.b +.br +.B /appl/wm/debsrc.b +.SH "SEE ALSO" +.IR limbo (1), +.IR prog (3) +.SH BUGS +Displaying large arrays in the Stack window can use excessive amounts of +memory. +.PP +When setting breakpoints there is no visual cue for the selected statement or operation until +the breakpoint is actually set. +.PP +It is only possible to debug modules executed by the interpreter. +Code that has been JITed, the compilation execution method, yields +stack information that does not correspond to information in the symbol +.RB ( .sbl ) +file. diff --git a/man/1/diff b/man/1/diff new file mode 100644 index 00000000..494dacfb --- /dev/null +++ b/man/1/diff @@ -0,0 +1,136 @@ +.TH DIFF 1 +.SH NAME +diff \- differential file comparator +.SH SYNOPSIS +.B diff +[ +.B -efbwr +] file1 ... file2 +.SH DESCRIPTION +.I Diff +tells what lines must be changed in two files to bring them +into agreement. +If one file +is a directory, +then a file in that directory with basename the same as that of +the other file is used. +If both files are directories, similarly named files in the +two directories are compared by the method of +.I diff +for text +files and +.IR cmp (1) +otherwise. +If more than two file names are given, then each argument is compared +to the last argument as above. +The +.B -r +option causes +.I diff +to process similarly named subdirectories recursively. +The normal output contains lines of these forms: +.IP "" 5 +.I n1 +.B a +.I n3,n4 +.br +.I n1,n2 +.B d +.I n3 +.br +.I n1,n2 +.B c +.I n3,n4 +.PP +These lines resemble Plan 9 or Unix +.I ed +commands to convert +.I file1 +into +.IR file2 . +The numbers after the letters pertain to +.IR file2 . +In fact, by exchanging `a' for `d' and reading backward +one may ascertain equally how to convert +.I file2 +into +.IR file1 . +As in +.IR ed , +identical pairs where +.I n1 += +.I n2 +or +.I n3 += +.I n4 +are abbreviated as a single number. +.PP +Following each of these lines come all the lines that are +affected in the first file flagged by `<', +then all the lines that are affected in the second file +flagged by `>'. +.PP +The +.B -b +option causes +trailing blanks (spaces and tabs) to be ignored +and other strings of blanks to compare equal. +The +.B -w +option causes all white-space to be removed from input lines +before applying the difference algorithm. +.PP +The +.B -e +option produces a script of +.I "a, c" +and +.I d +commands for the Plan 9 or Unix editor +.IR ed , +which will recreate +.I file2 +from +.IR file1 . +The +.B -f +option produces a similar script, +not useful with +.IR ed , +in the opposite order. It may, however, be +useful as input to a stream-oriented post-processor. +.PP +Except in rare circumstances, +.I diff +finds a smallest sufficient set of file +differences. +.SH FILES +.B /tmp/diff[12] +.SH SOURCE +.B /appl/cmd/diff.b +.SH DIAGNOSTICS +Exit status is the empty string +for no differences, +.L some +for some, +and +.L error +for trouble. +.SH "SEE ALSO" +.IR cmp (1) +.SH BUGS +Editing scripts produced under the +.BR -e " or" +.BR -f " option are naive about" +creating lines consisting of a single `\fB.\fR'. +.br +When running +.I diff +on directories, the notion of what is a text +file is open to debate. +.br +Nothing directly interprets the +.I ed +scripts within the Inferno environment. diff --git a/man/1/disdep b/man/1/disdep new file mode 100644 index 00000000..1107cd98 --- /dev/null +++ b/man/1/disdep @@ -0,0 +1,68 @@ +.TH DISDEP 1 +.SH NAME +disdep \- print load dependencies for Dis file +.SH SYNOPSIS +.B disdep +[ +.B -a +] +[ +.B -d +] +[ +.B -o +] +[ +.B -p +] +[ +.B -s +] +.I file +\&... +.SH DESCRIPTION +.B Disdep +reads each +.IR file , +which must be a Dis object file, +and finds all unique strings in it that end in +.BR .dis . +It takes each such string as the name of a Dis file, and +if the file exists, it does the same for it, and so on, recursively. +It writes each unique name to the standard output. +The result is a list of all statically-named Dis files that might be referenced by +an application, typically as the operand of a Limbo +.B load +operator. +Several options change or extend the output: +.TP +.B -a +Print all names as they are encountered in the search, including duplicates. +.TP +.B -d +Indent to show the dependency structure. +.TP +.B -o +Show only the immediate (outermost) dependencies of each +.IR file . +.TP +.B -p +Print the dependency relation as pairs: +a file, a space, and the name of a file on which it depends. +Only the the first name is printed when a file depends on no other. +This format is useful as input to +.IR mk (10.1) +dependency generators, or dependency graphing programs. +.TP +.B -s +Include strings of the form +.B +\&"$[A-Z].*" +on the assumption +they are the names of system modules loaded by the application. +.SH SOURCE +.B /appl/cmd/disdep.b +.SH "SEE ALSO" +.IR limbo (1) +.SH BUGS +It cannot see file names that the program calculates. diff --git a/man/1/dmview b/man/1/dmview new file mode 100644 index 00000000..01405695 --- /dev/null +++ b/man/1/dmview @@ -0,0 +1,41 @@ +.TH DMVIEW 1 +.SH NAME +dmview, dmwm \- view remote displays +.SH SYNOPSIS +.B wm/dmview +.I address +.PP +.B wm/dmwm +[ +.BI -p " port" +] +.SH DESCRIPTION +.I Dmwm +is run in place of the usual Inferno window manager +.IR wm (1), +to allow the display's contents to be viewed elsewhere. +.I Dmwm +waits for incoming viewing requests on the given TCP/IP +.I port +(default: 9998). +On each connection attempt, +.I dmwm +prompts the user to accept or reject the request for a remote view. +.PP +.I Dmview +opens a connection to an instance of +.I dmwm +at the given network +.I address +and, if the remote user accepts the connection, +opens a new window on +.IR dmview 's +own display that contains a replica of the remote display. +.SH SOURCE +.B /appl/wm/drawmux/dmview.b +.br +.B /appl/wm/drawmux/dmwm.b +.br +.B /appl/wm/drawmux/drawmux.b +.SH SEE ALSO +.IR drawmux (2) diff --git a/man/1/du b/man/1/du new file mode 100644 index 00000000..6129dde4 --- /dev/null +++ b/man/1/du @@ -0,0 +1,66 @@ +.TH DU 1 +.SH NAME +du \- disk usage +.SH SYNOPSIS +.RB du " [ \-anstu ] +[ +.BI -b " blocksize" +] +.RI [ "file ..." ] +.SH DESCRIPTION +.I Du +writes to standard output the total size of files specified as arguments. +Directories are recursively tallied. +A summary line is produced for each argument +.I file +and subdirectory. +If no filenames are provided, +the command operates on the current directory. +.PP +Output sums are rounded up to the nearest 1k unit (1024 bytes). +By default, storage is assumed to be quantised in units of 1024 bytes. +The +.B -b +option sets a different +.I blocksize +for quantisation, +optionally suffixed by +.B k +for units of kilobytes; +output is still in 1k units. +.PP +.I Du +accepts the following options: +.TP +.B \-a +Output usage information for all subordinate files, +not just directories. +.TP +.B \-n +Output just the filenames (but see the +.B -t +option below); implies +.BR -a . +.TP +.B \-s +Print only the summary line for each +.IR file . +.TP +.B \-t +Display the last-modified time for each file, not its size; +when used with the +.B \-n +option, +outputs the filename, +modification time (seconds since the epoch), +size (in bytes), +and checksum. +The checksum field is always 0; it is a place-holder for a value computed by another command in a pipeline. +.TP +.B \-u +Display the last-accessed time for each file, not its size. +.SH SOURCE +.B /appl/cmd/du.b +.SH SEE ALSO +.IR sh (1), +.IR sys-stat (2) diff --git a/man/1/ebook b/man/1/ebook new file mode 100644 index 00000000..8c8c85c1 --- /dev/null +++ b/man/1/ebook @@ -0,0 +1,73 @@ +.TH EBOOK 1 +.SH NAME +ebook \- Open Ebook browser +.SH SYNOPSIS +.B ebook/ebook +[ +.B -m +] +.I file +.SH DESCRIPTION +.I Ebook +provides a graphical browser for a set of files in Open eBook (OEB) version 1.0.1 +format. It takes some care to try to ensure that memory usage does +not grow proportionally to the size of the book that is being viewed. +.I File +names either an OEB package file (conventional suffix +.BR .opf ) +or an OEB document (conventional suffix +.B .html +or +.BR .xml ). +The +.B -m +option causes the window to be created in ``mini'' size +as suitable for display on a 240x320 pixel device. +.SS "GUI controls" +Controls at the top of the window enable the user to move +forward and backwards by pages through the document. +A ``Guide'' menu provides access to the guide as found in +the ebook package (if there is one). If the links in this are +followed, or if the reader follows links embedded within +the document, the up and down arrows enable moving +backwards and forwards in the ``link history''. +Arrows on the keyboard mimic the actions of the buttons +at the top of the window. +.PP +Clicking in the text allows an annotation to made on the +text; a text window is popped up and any text typed in +it will appear in a label attached to that text. +Annotations are stored in persistent storage and will +last from view to view of the document. +.SH FILES +.TF /lib/ebook/default.css +.TP +.B /lib/ebook/default.css +Initial stylesheet settings. +.TP +.B \fIdocument\fP.index +Index file for the OEB +.IR document , +one display size only. +.TP +.B \fIdocument\fP.annot +Annotations for the OEB +.IR document . +.TP +.B /lib/ebooks +Standard place to keep ebooks. +.SH SOURCE +.B /appl/ebook +.SH SEE ALSO +.IR xml (2), +``The Open eBook Publication Structure 1.0.1'' +.SH BUGS +Does not do floats. +.br +Does not do borders & backgrounds properly. +.br +Large top-level constructs are not bounded in memory usage. +.br +Does not do links to external documents. +.br +Does not do fallbacks. diff --git a/man/1/echo b/man/1/echo new file mode 100644 index 00000000..e7c96413 --- /dev/null +++ b/man/1/echo @@ -0,0 +1,32 @@ +.TH ECHO 1 +.SH NAME +echo \- print arguments +.SH SYNOPSIS +.B echo +.RB [ \-n ] +.RI [ "arg ..." ] +.PP +.B load echo +.br +.B echo +.RB [ \-n ] +.RI [ "arg ..." ] +.SH DESCRIPTION +.I Echo +writes its arguments separated by blanks +and terminated by a newline on the standard output. +Option +.B \-n +suppresses the newline. +.PP +A version of +.I echo +can optionally be loaded into the Shell +.IR sh (1) +if need be, to make shell scripts a little faster. +.SH SOURCE +.B /appl/cmd/echo.b +.br +.B /appl/cmd/sh/echo.b +.SH SEE ALSO +.IR sh (1) diff --git a/man/1/emu b/man/1/emu new file mode 100644 index 00000000..8f0e794d --- /dev/null +++ b/man/1/emu @@ -0,0 +1,204 @@ +.TH EMU 1E +.SH NAME +emu \- Inferno emulator +.SH SYNOPSIS +.B emu +[ +.BI \-g Xsize x Ysize +] +[ +.BR \-c [0-9] +] +[ +.BI -d " daemon" +] +[ +.BR \-m [0-9] +] +.RB [ \-s ] +[ +.BI \-p pool = maxsize +] +[ +.BI \-f font +] +[ +.BI \-r rootpath +] +.RB [ \-7 ] +[ +.RB \-C channel +] +[ +.RB \-S +] +[ +.B -v +] +[ +.I cmd +.RI [ " arg ... " ] +] +.SH DESCRIPTION +.I Emu +provides the Inferno emulation environment. +The emulator runs as an application under the +machine's native operating system, and +provides system services and a Dis virtual machine for Inferno applications. +.PP +.I Emu +starts an Inferno initialisation program +.BR /dis/emuinit.dis , +whose path name is interpreted in the +Inferno file name space, +not in +the native operating system's name space. +It in turn invokes the shell +.BR /dis/sh.dis +by default or the optional +.I cmd +and its arguments. +If the +.B \-d +option is specified, +.I emu +instead invokes +.BR daemon , +turning the +.I emu +instance into an Inferno service process on the network, +running the given +.I daemon +service or services. +.PP +The emulator supports the following options: +.TP +.BI \-c n +Unless specified otherwise by the module (see +.B wm/rt +in +.IR wm-misc (1)), +.I emu +uses an interpreter to execute Dis instructions. +Setting +.I n +to 1 (the default value is 0) +makes the default behaviour +to compile Dis +into native instructions when a module is loaded, +resulting in faster execution but larger run-time size. +Setting +.I n +to values larger than 1 enables increasingly detailed traces of the compiler. +.TP +.BI \-d +Run +.I emu +as a server. +.TP +.BI \-g Xsize x Ysize +Define screen width and height in pixels. +The default values are 640x480 and the minimum values are 64x48. +Values smaller than the minimum or greater than the +available display size are ignored. +.TP +.BI \-f font +Specify the default font for the +.B tk +module. +The path is interpreted in the Inferno name space. +If unspecified, the +.B font +variable has value +.BR /fonts/lucm/unicode.9.font . +.TP +.BI \-r rootpath +Specify the host system directory that +.I emu +will serve as its root. +The default value is +.B /usr/inferno +on most systems, but +.BR \eusers\einferno +on Windows. +.TP +.B \-s +Specify how the emulator deals with traps reported by the operating system. +By default, they suspend execution of the offending thread within the virtual machine +abstraction. +The +.B \-s +option causes +.I emu +itself to trap, permitting debugging of the +broken host operating system process that results when a trap occurs. +(This is intended to allow debugging of +.IR emu , +not Inferno applications.) +.TP +.BI \-p pool = maxsize +Specify the maximum size in bytes of the named memory allocation pool. +The pools +are: +.RS +.TP \w'imagexxx'u +.B main +the general malloc arena +.TP +.B heap +the Dis virtual machine heap +.TP +.B image +image storage for the display +.RE +.TP +.B \-7 +When host graphics is provided by X11, request a 7-bit colour map; +use this option only if X11 refused to allow +.I emu +to configure the normal (default) 8-bit Inferno colour map. +.TP +.B \-C channel +Use the given channel for the display if possible. For example, k8 gives +8 bit greyscale. See +.IR image (6) +for the full range of channel descriptors. +.TP +.B \-S +Force stylus input behaviour for Tk mouse events: +motion events are received only when a button is down +(just as a stylus produces no events until it touches the screen). +This option only affects the behaviour of Tk mouse events, it does not +affect the behaviour of +.B /dev/pointer +as described in +.IR cons (3). +.TP +.B \-v +Print version data: edition and revision date. +.PP +Options may also be set in the host operating system's environment variable +.BR EMU ; +they are overridden by options supplied on the command line. +.SH EXAMPLE +To start +.B wm/logon +directly: +.IP +.EX +EMU='-g800x600 -c1' +emu /dis/wm/wm.dis wm/logon -u inferno +.EE +.SH FILES +.TF /dis/emuinit.dis +.TP +.B /dis/emuinit.dis +The default initialisation program. +.TP +.B /dis/sh.dis +The default Inferno shell. +.SH SOURCE +.B /emu +.SH "SEE ALSO" +.IR limbo (1), +.IR wm-misc (1) diff --git a/man/1/env b/man/1/env new file mode 100644 index 00000000..c933084b --- /dev/null +++ b/man/1/env @@ -0,0 +1,27 @@ +.TH ENV 1 +.SH NAME +env \- display environment variables +.SH SYNOPSIS +.B env +.SH DESCRIPTION +.I Env +prints on standard output the current process's environment +(see +.IR sh (1) +and +.IR env (3)) +listing each variable and its current value. +.PP +Individual variable values can be set by assignment in +.IR sh (1). +.SH SOURCE +.B /appl/cmd/env.b +.SH SEE ALSO +.IR acme (1), +.IR sh (1), +.IR env (2) +.SH BUGS +.I Env +does not understand that environment variables as stored by +.IR sh (1) +are lists. diff --git a/man/1/fc b/man/1/fc new file mode 100644 index 00000000..8846f649 --- /dev/null +++ b/man/1/fc @@ -0,0 +1,182 @@ +.TH FC 1 +.SH NAME +fc \- command-line floating point calculator +.SH SYNOPSIS +.B fc +[ +.I base +] +.I expression +.br +.SH DESCRIPTION +.B Fc +calculates the result of its argument +.I expression +and prints the result in the format indicated by +the optional base argument. +.I Base +can be one of: +.TP +.B -d +Decimal, as produced by the +.B %g +format of +.IR sys-print (2). +.br +.TP +.B -x +Hexadecimal, prefixed with +.BR 0x . +.TP +.B -o +Octal, prefixed with +.BR 0 . +.TP +.B -b +Binary, prefixed with +.BR 0b . +.TP +.B -B +As +.BR -b , +but with extra lines to help bit-counting. +.TP +.BI -r\ radix +In base +.IR radix , +prefixed with +.IB \fR``\fPradix r\fR'',\fP +as understood by Limbo (e.g. +.BR 16r3fff ). +.TP +.B -c +As a unicode character, prefixed with +.BR @ . +.RE +.PP +.I Expression +is in reverse polish notation: +each command line argument is either an operand (number) or an operator. +Operands are pushed on a stack; operators pop items from +the stack (the number of items depends on the operator) +and push their result. All operands are converted to double precision +floating point numbers before being pushed. +Integer operations convert their operands to big (64-bit) integers. +When all arguments are exhausted, all the values currently +on the stack are printed, first-pushed first, in the specified +output format. +.PP +Operands can be given in any of the formats that +.I fc +can print, as detailed above. +.PP +When an operation is not commutative, the argument values +will be taken from the stack first-pushed first. +Most functions from from +.IR math-elem (2), +.IR math-fp(2) +are provided. +In addition, other provided operators include: +.TP +.B + - / x +Representing the four rules. Note the use of +.B x +rather than +.BR * , +to avoid clashes with shell metacharacters. +.br +.TP +.B xx +To the power. (equivelant to 'pow') +.br +.TP +.B rad deg +Convert value to or from radians. +.br +.TP +! +Factorial. +.br +.TP +.B _ +Unary minus. +.br +.TP +.B and or xor not +Bitwise operations. +.br +.TP +.B shl shr +Bitwise shift left/right. +.TP +.B p +Print the current top value on the stack. +.br +.TP +.B sum +Sum all the values currently pushed on the stack. +.br +.TP +.B swap +Swap the top two stack items. +.br +.TP +.B dup +Duplicate the top item on the stack. +.br +.TP +.B rep +Repeatedly execute the last operator until +there is only only one item left on the stack. +This is only valid for operators that take exactly two +arguments. +.RE +.PP +A few symbolic names for operands are recognised, including +.B pi +(or +.BR π ), +.BR e , +and +.BR macheps . +.SH EXAMPLES +.PP +fc 22 7 / +.PP +.nf + gives 3.1428571429 +.fi +.PP +fc -b 1 2 3 4 sum +.PP +.nf + gives 0b00001010 +.fi +.PP +fc 10 0b10 010 0x10 x rep 0xa00 swap - +.PP +.nf + gives 0 +.fi +.PP +fc -help +.PP +.nf + gives a usage summary, including a list of + the names of all the operators. +.fi +.ne 5 +.SH SEE ALSO +.IR math-fp (2), +.IR math-elem (2), +.IR sh-expr (1) +.SH DIAGNOSTICS +An error message is displayed if +an operator is called on a stack with +too few elements. This also causes +.I fc +to yield a non-null exit status. +.SH BUGS +The +.B -B +option will only work for fixed-width fonts. diff --git a/man/1/filename b/man/1/filename new file mode 100644 index 00000000..b5be9908 --- /dev/null +++ b/man/1/filename @@ -0,0 +1,61 @@ +.TH FILENAME 1 +.SH NAME +filename \- interactively select a file +.SH SYNOPSIS +.B wm/filename +[ +.B -d +.I startdir +] +[ +.B -g +.I geom +] +[ +.B -t +.I title +] +[ +.IR pattern ... +] +.SH DESCRIPTION +.B Filename +pops up a file browser window, allows the user to select +a file and prints the name of that file to the standard output. +The optional list of patterns gives a list of wildcard patterns +as understood by +.IR filepat (2); +the file browser will initially show only files matching one +or more of the patterns. (N.B. patterns must be quoted to +prevent the shell from interpreting them). The following options +are recognised: +.TP 10 +.B -d +.I Startdir +gives the initial directory shown by the file browser. +.TP +.B -g +.I Geom +is given as a tk argument to the file browser window. +.TP +.B -t +.I Title +specifies the title of the file browser window. +.SH EXAMPLE +The following +.IR sh (1) +command compiles an interactively chosen Limbo source file, +placing the file browser window at a particular spot on the screen +and starting at joe's home directory. +.EX +limbo `{wm/filename -t 'Select a source file' -g '-x 50 -y 50' + -d/usr/joe '*.b' '*.m'} +.EE +.SH SOURCE +.B /appl/wm/filename.b +.SH SEE ALSO +.IR wmlib (2), +.IR sh (1) +.SH BUGS +The file browser window actually appears 20 pixels below and to the right +of the position specified. diff --git a/man/1/fmt b/man/1/fmt new file mode 100644 index 00000000..d3def7c2 --- /dev/null +++ b/man/1/fmt @@ -0,0 +1,47 @@ +.TH FMT 1 +.SH NAME +fmt \- simple text formatter +.SH SYNOPSIS +.B fmt +[ +.BI -l " n" +] [ +.BI -i " n" +] [ +.B -j +] +[ +.I file ... +] +.SH DESCRIPTION +.I Fmt +copies the given +.I files +(standard input by default) +to its standard output, filling and indenting lines. +The options are +.TP +.BI -l " n +Output line length is +.IR n , +including indent (default 70). +.TP +.BI -w " n +A synonym for +.BR -l . +.TP +.BI -i " n +Indent +.I n +spaces (default 0). +.TP +.BI -j +Do not join short lines: only fold long lines. +.PP +Empty lines and initial white space in input lines are preserved. +Empty lines are inserted between input files. +.PP +.I Fmt +is idempotent: it leaves already formatted text unchanged. +.SH SOURCE +.B /appl/cmd/fmt.b diff --git a/man/1/fortune b/man/1/fortune new file mode 100644 index 00000000..6b612925 --- /dev/null +++ b/man/1/fortune @@ -0,0 +1,23 @@ +.TH FORTUNE 1 +.SH NAME +fortune \- sample lines from a file +.SH SYNOPSIS +.B fortune +[ +.I file +] +.SH DESCRIPTION +.I Fortune +prints a one-line aphorism chosen at random. +If a +.I file +is specified, the saying is taken from that file; +otherwise it is selected from +.BR /lib/games/fortunes . +.SH FILES +.B /lib/games/fortunes +.br +.B /lib/games/fortunes.index +\ \ fast lookup table, maintained automatically +.SH SOURCE +.B /appl/cmd/fortune.b diff --git a/man/1/freq b/man/1/freq new file mode 100644 index 00000000..9071a67e --- /dev/null +++ b/man/1/freq @@ -0,0 +1,40 @@ +.TH FREQ 1 +.SH NAME +freq \- print histogram of character frequencies +.SH SYNOPSIS +.B freq +[ +.B -dxocr +] +[ +.I file ... +] +.SH DESCRIPTION +.I Freq +reads the given files (default standard input) +and prints histograms of the character frequencies. +By default, +.I freq +counts the value of each byte; +under the +.B -r +option it instead counts +.SM UTF +byte sequences, that is, runes. +.PP +Each non-zero entry of the table is printed preceded by the byte value, +in decimal, octal, hex, and +Unicode +character (if printable). +If any options are given, the +.BR -d , +.BR -x , +.BR -o , +.B -c +flags specify a subset of value formats: decimal, hex, octal, and +character, respectively. +.SH SOURCE +.B /appl/cmd/freq.b +.SH SEE ALSO +.IR utf (6), +.IR wc (1) diff --git a/man/1/fs b/man/1/fs new file mode 100644 index 00000000..aaf1cc35 --- /dev/null +++ b/man/1/fs @@ -0,0 +1,449 @@ +.TH FS 1 +.SH NAME +fs \- file-hierarchy traversal +.SH SYNOPSIS +.B fs +.I verb arg +... +.br +.SH DESCRIPTION +.B Fs +evaluates an expression whose values represent +the contents of a hierarchical filesystem. +There are six types of value: +.TP 10 +.B fs +The complete contents of a filesystem. +.TP +.B entries +Information about the entries in a filesystem without +their content. +.TP +.B gate +A condition that can be used with conditional verbs. +A gate is open to entries satisfying particular +criteria. +.TP +.B selector +A comparator which compares two entries +and selects one, both or neither of them. +.TP +.B string +A simple string literal, represented by itself, +or quoted according to the usual shell quoting rules. +.TP +.B command +A shell command, represented by an +.RB `` @ '' +character followed by a braced block +containing the shell commands. +.TP +.B void +No value. An expression of this type +cannot be used as an argument to any verb. +.PP +A value is represented either by a literal (a string or shell command), +or by a braced block, +.BI { verb +.RI [ arg ...]\f5}\fP, +whose value is the result of evaluating +.I verb +with the given arguments. +.PP +In the following description of the verbs provided, +an entry such as: +.TP 10 +.B print \fIentries\fP \fR->\fP void +.PP +describes a verb +.BR print , +which takes one argument of type +.IR entries , +and the result of which is of type +.BR void . +If the type is not one of those described above, +it should be taken to be of type +.IR string . +.PP +With no arguments, +.I fs +prints a summary of the available verbs. +Verbs understood by +.I fs +include: +.TP 10 +\f5and\fP \fIgate gate\fP [\fIgate\fP...] -> \fIgate\fP +.B And +is a gate that is open to an entry if all its arguments are open. +.TP +\f5bundle\fP \fIfs\fP -> \fIvoid\fP +.B Bundle +converts +.I fs +to an archival format and writes it to the standard output. +.TP +\f5compose\fP [\f5-d\fP] \fIop\fP -> \fIselector\fP +.B Compose +implements ``compositing''-style operators, useful when +merging filesystems. +.I Op +specifies the operator, taking its name from +the graphical Porter-Duff equivalent: +.BR AinB , +.BR AinB , +.BR BinA , +.BR AoutB , +.BR BoutA , +.BR A , +.BR AoverB , +.BR AatopB , +.BR AxorB , +.BR B , +.BR BoverA , +or +.BR BatopA. +For instance, +.B AinB +gives the intersection of A and B; +.B AatopB +gives A whereever both A and B exist, and B otherwise. +When used as a selector for +.BR merge , +operators that exclude +the union of A and B are not very useful, as they will +exclude all common directories at the top level. +Given the +.B -d +option, compose will allow through directories that +would otherwise be excluded in this way, making +operators such as +.B AxorB +(all that A does not hold in common with B) +more useful, although accurate only for regular files. +.TP +\f5depth\fP \fIn\fP -> \fIgate\fP +.B Depth +is a gate open only to entries which are within +.I n +levels of the root of the filesystem. +.TP +\f5entries\fP \fIfs\fP -> \fIentries\fP +.B Entries +produces all the entries contained within +.IR fs . +.TP +\f5eval\fP \fIexpr\fP -> \fIany\fP +.B Eval +evaluates an +.I fs +expression and yields its result. +.TP +\f5filter\fP [\f5-d\fP]\fIgate fs\fP -> \fIfs\fP +The result of +.B filter +is a filesystem from which all entries that will +not pass through +.IR gate , +and their descendents, have been removed. +If the +.B -d +flag is given, only files are filtered \- directories bypass the gate. +.TP +\f5ls\fP [\f5-um\fP] \fIentries\fP -> \fIvoid\fP +Print each entry in the style of +.B ls -l +(see +.IR ls (1)). +If the +.B -u +flag is given, the file access time rather than the file modification time +will be printed. If the +.B -m +flag is given, the name of the user that last modified the file +is printed too. +.TP +\f5exec\fP [\f5-pP\fP] [\f5-t\fP \fIcommand\fP] [\f5-n\fP \fIn\fP] \fIcommand entries\fP -> \fIvoid\fP +Run its argument +.I command +for each entry in +.I entries . +If the +.B -n +flag is specified, +.B exec +will try to gather +.I n +entries together before invoking the command (default 1). +The environent variable +.B $file +is set to the names of the entries that have been gathered. +If the +.B -p +flag is given, environment variables are set giving information +about the mode, owner, modification time and size of the entry +(they are named after the equivalent field +names in the +.B Dir +structure; see +.IR sys-stat (2)). +This option is only valid when +.I n +is 1. +The +.B -P +flag causes all the other fields in the Dir structure to be included too. +Note that the command is run in the same shell context each time, +so environment variable set on one execution can +be retrieved on the next. The +.B -t +flag can be used to specify a command which will be executed +just before termination. +.TP +\f5match\fP [\f5-ar\fP] \fIpattern\fP -> \fIgate\fP +.B Match +is a gate that is open if the entry's filename +matches the +.IR pattern . +If the +.B -a +flag is given, the whole path will be used +for the match. +If +.B -r +is specified, the pattern is evaluated as a regular expression, +otherwise it is a shell-style pattern in the style of +.IR filepat (2). +.TP +\f5merge\fP [\f5-1\fP] [\f5-c\fP \fIselector\fP] \fIfs fs\fP [\fIfs\fP...] -> \fIfs\fP +Recursively merge the contents of its argument +filesystems. +.I Selector +is consulted to see which entries are chosen for the result; +if not given, entries are resolved in favour of the first filesystem +(equivalent to +.BR "{compose AoverB}"). +If the +.B -1 +flag is given, merging takes place only in the top-level directory. +.TP +\f5mode\fP \fIspec\fP -> \fIgate\fP +.B Mode +is a gate that lets through entries whose file permissions +satisfy +.IR spec , +which is a string in the style of +.IR chmod (1). +If the +.I op +field is +.BR + , +the specified permissions must be present; if +.BR - , +they must be absent, and if +.BR = , +they must be exactly as given. +The directory and auth modes are specified with +the characters ``\f5d\fP'' and ``\f5A\fP'' +respectively. +.TP +\f5not\fP \fIgate\fP -> \fIgate\fP +.B Not +is a gate open to an entry if its argument is not. +.TP +\f5or\fP \fIgate gate\fP [\fIgate\fP...] -> \fIgate\fP +.B Or +is a gate open to an entry if any argument is open. +.TP +\f5path\fP [\f5-x\fP] \fIpath\fP... -> \fIgate\fP +.B Path +is a gate open to an entry whose full pathname +is an ancestor or a descendent of any +.IR path. +If +.B -x +is specified, the gate is open to any path +.I except +descendents of the paths given. +.TP +\f5pipe\fP [\f5-1pP\fP] \fIcommand fs\fP -> \fIvoid\fP +.B Pipe +is similar to exec, except that the contents of all files +in +.I fs +are piped through +.IR command . +Unless the +.B -1 +option is given, +.I command +is started once for each file, with +.B $file +set to its name, and other environment variables +set according to the +.B -p +or +.B -P +options, as for +.BR exec . +If the +.B -1 +option is specified, +.I command +is started once only \- all file data is piped through that. +.TP +\f5print\fP \fIentries\fP -> \fIvoid\fP +Print the path name of each entry. +.TP +\f5proto\fP [\f5-r\fP \fIroot\fP] \fIprotofile\fP -> \fIfs\fP +Evaluate +.I protofile +as a +.IR mkfs (8) +.I proto +file. If +.I root +is specified, it will be used as the root of the resulting +.IR fs . +.TP +\f5query\fP \fIcommand\fP -> \fIgate\fP +.B Query +is a gate that runs +.I command +to determine whether it is open: an empty +exit status from the command yields an open gate. +The environment variable +.B $file +is set for the command to the path name of the entry that is being queried for. +.TP +\f5run\fP \fIcommand\fP -> \fIstring\fP +.B Run +runs +.I command +and substitutes the value of the environment variable +.B $s +after its invocation. +.B $s +must have exactly one element. +.TP +\f5select\fP \fIgate entries\fP -> \fIentries\fP +Select only those entries within +.I entries +that will pass through +.IR gate . +Descendents of elided entries are not affected. +.TP +\f5setroot\fP [\f5-c\fP] \fIpath\fP \fIfs\fP -> \fIfs\fP +.B Setroot +sets the name of the root directory of +.IR fs . +If the +.B -c +flag is given, the elements in the root directory +will be made explicit in the hierarchy (i.e. the +name of the top directory will not contain any +.B / +characters). +.TP +\f5size\fP \fIentries\fP -> \fIvoid\fP +Print the sum of the size of all entries, in bytes. +.TP +\f5unbundle\fP \fIfile\fP -> \fIfs\fP +.B Unbundle +reads an archive as produced by +.B bundle +from +.IR file ; +its result is the contents of the filesystem that was +originally bundled. +If +.I file +is +.IB `` - '', +the standard input is read. +.TP +\f5walk\fP \fIpath\fP -> \fIfs\fP +.B Walk +produces a filesystem that's the result of +traversing all the files and directories underneath +.IR path . +.TP +\f5write\fP \fIdir fs\fP -> \fIvoid\fP +Write the contents of +.I fs +to the filesystem rooted at +.I dir . +If +.I dir +is empty, +.I fs +will be written to the root directory originally associated with fs. +.PP +As a convenience, +.I fs +carries out some automatic type conversions +(conversions are applied recursively, so for instance, +an +.BR fs -valued +expression at the top level will converted +to void by applying +.B {print {entries +.IB fs }}\fR. +.TP +.BR string -> fs +The result is \f5{walk\fP \fIstring\f5}\fP. +.TP +.BR fs -> entries +The result is \f5{entries\fP \fIfs\f5}\fP. +.TP +.BR string -> gate +The result is \f5{match\fP \fIstring\f5}\fP. +.TP +.BR entries -> void +The result is \f5{print\fP \fIentries\f5}\fP. +.TP +.BR command -> string +The result is \f5{run\fP \fIcommand\f5}\fP. +.SH EXAMPLES +Print the size of all files below the current directory: +.EX + fs size . +.EE +Show the names of all files in x that aren't in y: +.EX + fs select {mode -d} {merge -c {compose -d AoutB} x y} +.EE +Remove all files from /appl ending in +.BR .dis : +.EX + fs exec @{rm $file} {select *.dis /appl} +.EE +Recursively copy the current directory to +.BR /tmp/foo . +.EX + fs bundle . | fs write /tmp/foo {unbundle -} +.EE +A simpler method of the above: +.EX + fs write /tmp/foo . +.EE +Interactively remove all regular files from one level of the current directory: +.IP +.EX +fs exec @{rm $file} {select {query + @{echo -n $file:; ~ `{read} y yes}} + {select {mode -d} {filter {depth 1} .}}} +.EE +.PP +Create a new archive containing those files from below the current directory +that were held in an old archive: +.EX + fs bundle {merge -c {compose AinB} . {unbundle old.bundle}} > new.bundle +.EE +.SH SOURCE +.B /appl/cmd/fs.b +.br +.B /appl/cmd/fs/*.b +.br +.B /appl/lib/fslib.b +.SH SEE ALSO +.IR sh (1) diff --git a/man/1/ftest b/man/1/ftest new file mode 100644 index 00000000..f46b6121 --- /dev/null +++ b/man/1/ftest @@ -0,0 +1,82 @@ +.TH FTEST 1 +.SH NAME +ftest, newer \- test file attributes +.SH SYNOPSIS +.B ftest +.I test +.I arg +.PP +.B newer +.I file1 +.I file2 +.SH DESCRIPTION +.I Ftest +checks the specified attribute of +.I arg +according to +.I test +and yields an exit status signifying the result. +For all +.IR test s +apart from +.BR -t , +.I arg +is the name of the file to be tested; +for +.BR -t , +it is the number of a file descriptor. +Available tests are: +.TP +.B -d +True if the file exists and is a directory. +.TP +.B -e +True if the file exists. +.TP +.B -f +True if the file exists and is a regular file. +.TP +.B -r +True if the file exists and is readable. +.TP +.B -s +True if the file exists and has non-zero size. +.TP +.B -t +True if the open file represented by +the number +.I arg +represents the same file as +.BR /dev/cons . +.TP +.B -w +True if the file exists and is writable. +.TP +.B -x +True if the file exists and is executable. +.LP +.I Newer +checks whether +.I file1 +exists and is no older than +.IR file2 , +which must also exist; +if so, it yields a true exit status. +Otherwise, it yields an error status. +Neither file may be a directory. +.SH SOURCE +.B /appl/cmd/ftest.b +.br +.B /appl/cmd/newer.b +.SH SEE ALSO +.IR sys-stat (2) +.SH BUGS +These commands +work only with +.IR sh (1) +as none of the other Inferno shells +can check the exit status of a command. +.PP +Checking for read, write and execute capabilities +is speculative - the file server has the last say. +Group permissions are ignored. diff --git a/man/1/ftree b/man/1/ftree new file mode 100644 index 00000000..6d16c828 --- /dev/null +++ b/man/1/ftree @@ -0,0 +1,95 @@ +.TH FTREE 1 +.SH NAME +ftree \- file tree browser +.SH SYNOPSIS +.B wm/ftree +[ +.B [-e +] [ +.B -E +] [ +.B -p +] [ +.B -d +] [ +.I root +] +.SH DESCRIPTION +.I Ftree +displays the given +.I root +directory +(default: +.BR / ) +in a graphical form as a tree. +Files and subdirectories are listed +beneath the directory that contains them. +Initially, the contents of a subdirectory are not displayed, but selecting the +.B ⊕ +symbol next to its name with button 1 causes its contents to be displayed there, and +the +.B ⊕ +symbol changes to +.BR ⊖ ; +clicking that collapses the subdirectory display back to its name. +(If the directory is empty, the circle will be empty.) +Selecting a file or directory name with button 1 pops up a menu of +operations: +.BR Open , +.BR Copy , +.BR "Paste into" , +and +.BR Remove . +.B Open +plumbs the full path name of the file or directory; it is up to the +.IR plumber (8) +to act appropriately based on the structure of the file name, +as controlled by the user's +.IR plumbing (6) +file. +Typically images will be displayed in a separate window, source files will be opened in an editor, +and so on. +Directory structure can be copied by invoking +.B Copy +on the source, then +.B "Paste into" +on the destination directory. +The +.B -d +option disallows all operations except +.BR Open . +.PP +Normally, +.I ftree +displays the usual +.IR wm (1) +controls, and interprets them as usual. +The other options change that behaviour: +.TP +.B -e +Ignore `exit' but offer move or resize. +.TP +.B -E +Ignore exit, and do not offer move or resize. +.TP +.B -p +Do exit, but do not offer move or resize. +.PP +The different options are used to program a user interface for handheld touch screen devices. +For instance, a start panel can be created by invoking +.I ftree +with the +.B -E +option, ensuring that the +.I ftree +screen is always there, and all subsequent interaction can be controlled +by the construction of the +.I root +namespace and suitable choice of plumbing rules. +.SH SOURCE +.B /appl/wm/ftree +.SH SEE ALSO +.IR filename (1), +.IR wm (1), +.IR plumbing (6), +.IR plumber (8) diff --git a/man/1/gettar b/man/1/gettar new file mode 100644 index 00000000..3b71ce08 --- /dev/null +++ b/man/1/gettar @@ -0,0 +1,86 @@ +.TH GETTAR 1 +.SH NAME +gettar, lstar, puttar \- tar archive utilities +.SH SYNOPSIS +.B gettar +[ +.B -k +] [ +.B -v +] [ +.B -R +] +[ +.IR name " ..." +] +.br +.B lstar +.br +.B puttar +[ +.I file ... +] +.SH DESCRIPTION +These commands manage POSIX.1 tar archives in Inferno. +.PP +.I Gettar +reads a tar file from standard input and unpacks the contents into the current directory tree. +By default, +.I gettar +converts absolute path names, including names starting with +.LR # , +into names relative to the current directory; the +.B -R +option extracts such names as-is. +The +.B -k +option tells +.I gettar +to keep existing files rather than overwriting them with files from the archive. +The +.B -v +option causes +.I gettar +to print on standard error the names of files extracted. +Finally, listing one or more +.I names +as arguments will extract only those files. +.PP +.I Lstar +reads a tar file from standard input and lists the files contained therein, +one per line, with four space-separated fields giving the file name, modification time (in seconds since the epoch), +size (in bytes), and a constant 0 (the place holder for a checksum). +The format is the same as that produced by +.BR "du -n -t" . +.PP +.I Puttar +writes a tar file to standard output that contains each +.IR file , +and its substructure if it is a directory. +Given no arguments, +.I puttar +instead reads a list of file names from standard input and includes +each file or directory named; it does not copy directory substructure. +.SH EXAMPLE +The following commands create a tar file with two files +.B test.b +and +.BR srv.b : +.IP +.EX +$ cat tarlist +test.b +srv.b +$ puttar <tarlist >test.tar +$ lstar <test.tar +test.b 867178082 1104 0 +srv.b 866042662 3865 0 +.EE +.SH SOURCE +.B /appl/cmd/gettar.b +.br +.B /appl/cmd/lstar.b +.br +.B /appl/cmd/puttar.b +.SH SEE ALSO +.IR tarfs (4) diff --git a/man/1/grep b/man/1/grep new file mode 100644 index 00000000..fbc83057 --- /dev/null +++ b/man/1/grep @@ -0,0 +1,51 @@ +.TH GREP 1 +.SH NAME +grep \- pattern matching +.SH SYNOPSIS +.B grep +[ +.B -lnviLs +] +.I pattern +[ +.IR file ... +] +.SH DESCRIPTION +.B Grep +prints lines from each +.I file +that match the +.IR pattern , +a regular expression as defined in +.IR regex (2). +If no files are given, standard input is used. +If more than one file is given, each line of output +is preceded by the name of the file it was found in. +The options are: +.TP 10 +.B -l +Print only the name of each file that contains a match. +.TP +.B -L +Print the name of each file that does not contain a match. +.TP +.B -n +Precede each line of output with its line number. +.TP +.B -v +Print only lines that do not match +.IR pattern . +.TP +.B -i +Pattern matching is case insensitive (roman letters only). +.TP +.B -s +Do not print anything; yield only the exit status. +.SH SOURCE +.B /appl/cmd/grep.b +.SH SEE ALSO +.IR regex (2) +.SH DIAGNOSTICS +.I Grep +returns a non-nil exit status if no matches have been made, +or if an error has occurred. diff --git a/man/1/grid-localreg b/man/1/grid-localreg new file mode 100644 index 00000000..e72d8e09 --- /dev/null +++ b/man/1/grid-localreg @@ -0,0 +1,24 @@ +.TH GRID-LOCALREG 1 +.SH NAME +localreg \- starts a +.IR registry (4) +on the local machine +.SH SYNOPSIS +.B grid/localreg +.SH DESCRIPTION +.I Localreg +starts up a +.IR registry (4), +on the local machine and handles incoming connections to it. The registry is announced on tcp port +.I registry +(as defined in +.B /lib/ndb/services +). +.SH SOURCE +.B /appl/grid/localreg.b +.br +.B /appl/cmd/ndb/registry.b + +.SH "SEE ALSO" +.IR registries (2), +.IR registry (4) diff --git a/man/1/grid-monitor b/man/1/grid-monitor new file mode 100644 index 00000000..91e61b02 --- /dev/null +++ b/man/1/grid-monitor @@ -0,0 +1,86 @@ +.TH GRID-MONITOR 1 +.SH NAME +monitor \- graphical display for viewing resource use. +.SH SYNOPSIS +.I command +.B | grid/srv/monitor +.I interface +.B [ +.I wintitle +.B ] +.SH DESCRIPTION +.I Monitor +is designed to work with resources that deal with incoming connections (such as +.IR register (1)) +to visually display the connections to a specific resource. +.I Interface +sets the style of interface, this can be 1 or 2. Interface 1 is the simplest, displaying only a list of connections to the resource. Interface 2 is slightly more complex, allowing extra data to be displayed for each connection. While interface 1 shows all the connections at any one time, interface 2 displays a selection of 'slots' which have buttons that light up to signify a connection. Clicking on a lit button will display any data given about that connection in the main window. +.I Wintitle +optionally sets the title of the +.I monitor +window. +.I Command +must write status messages to +.I stdout +which are then read and displayed (if appropriate) by +.IR monitor . +.I Monitor +reads on +.I stdin +and accepts the following input: +.PP +.SS Interface 1 +.TP 30 +.BI add " addr" +display a connection from address +.I addr +.TP +.BI del " addr" +remove a connection from address +.I addr +.PP +.SS Interface 2 +.TP 30 +.BI "data set" " id" " {" " data" " }" +set and display the string +.I data +in slot +.IR id . +.TP +.BI "data set" " id" " finished" +clear slot +.I id +.PP +.SS Common +.TP 30 +.BI "setup maxusers" " n" +set display to fit a maximum of +.I n +connections. -1 signifies unlimited connections. +.TP +.BI starting " pid" +add +.I pid +to a list of pids whose process group is to be killed if the user closes +.I monitor. +.TP +.BI error " errstr" +print out the error string +.I errstr +to the console. +.TP +.B exit +close down +.I monitor +and kill all processes in the current group. +.PP +.PP +Input messages of any other form will simply be ignored. +.SH SOURCE +.B /appl/grid/srv/monitor.b +.br + +.SH "SEE ALSO" +.IR register (1), +.IR ns (1), +.IR cpu (4) diff --git a/man/1/grid-ns b/man/1/grid-ns new file mode 100644 index 00000000..7cc57252 --- /dev/null +++ b/man/1/grid-ns @@ -0,0 +1,67 @@ +.TH GRID-NS 1 +.SH NAME +ns \- exports a selected namespace and serves it on +.I stdin. +.SH SYNOPSIS +.BI "grid/srv/ns [ -r " "relpath " "]" " path1 path2...path n" +.br +.BI "grid/runns [ -r " "relpath " "]" " path1 path2...path n" +.SH DESCRIPTION +.I Ns +exports a selected subsection of the local namespace and serves it on +.I stdin. +The path arguments specify which directories are to be exported. If subdirectories are exported without their parents, +.I ns +attempts to maintain the namespace structure by creating the parents but populating them only with the selected subdirectories. For example, exporting +.B /appl/lib +would mean that the exported +.B /appl +directory contained nothing apart from the +.B lib +subdirectory. If +.I relpath +is specified, all paths will be viewed relative to this path. For instance, if +.I relpath +is +.BR /usr/inferno , +then +.B /usr/inferno/bin/dis +would be listed as +.B /bin/dis +and +.B /tmp +would not be listed at all. + +.IR Register (1) +may be used in conjunction with +.I ns +to register it with a +.IR registry (4) +and to export and serve its namespace across +.IR dial (2) +network connections. Incoming connections may also be displayed visually using +.IR monitor (1). +For example: +.PP +.BI "grid/register [" " options ..." " ] { grid/srv/ns " "paths..." " } | grid/srv/monitor 1 'NS resource' +.PP +This set of commands is encapsulated within the shell script +.I runns +which will automatically register +.I ns +with a +.IR registry (4) +if possible and start up the graphical display to show connections to the resource. There is no need for the user to execute +.I ns +outside of +.I runns +unless the namespace it provides is required to be accessible in a different way to that provided by +.IR register (1). +.SH SOURCE +.B /appl/grid/srv/ns.b + +.SH "SEE ALSO" +.IR cpu (4), +.IR grid-monitor (1), +.IR grid-register (1), +.IR session (1) diff --git a/man/1/grid-query b/man/1/grid-query new file mode 100644 index 00000000..036e250e --- /dev/null +++ b/man/1/grid-query @@ -0,0 +1,46 @@ +.TH GRID-QUERY 1 +.SH NAME +query \- graphical interface to view resources registered with a known +.IR registry (4) +.SH SYNOPSIS +.B grid/query +.SH DESCRIPTION +.I Query +displays the resources currently registered with a given +.IR registry (4) +and allows the user to mount and browse through the namespaces they provide. +.PP +Resource categories are displayed in the main window, opening any of these (by clicking on the '+' next to the name) will reveal the names of the individual resources within that category. Each resource has a set of attributes which may be viewed at the lowest level of the displayed tree. Clicking on a specific resource and clicking the +.B Mount +button that appears will mount that resource (if possible) and display the imported namespace in a new window. From this window, the user can then browse this namespace as well as opening and running files. A shell window may also be opened to allow more complicated tasks to be performed. +.PP +Clicking +.B Search +brings up a search window. Here, the current +.IR registry (4) +may be searched for a resource containing the specified attribute names and values. +.B Refresh +updates the list of resources in the main window in case any have been added or removed. +.PP + +.SH SOURCE +.B /appl/grid/query.b +.br +.B /appl/grid/lib/browse.b +.br +.B /appl/grid/lib/srvbrowse.b + +.SH BUGS +Currently, searching for a resource on a +.IR registry (4) +is only implemented in a very simple way. Given the attribute +.I (name, value) +pairs, the search will return all resources whose attributes exactly match the specified values. +.B * +may be used to match any attribute value but not name. + +.SH "SEE ALSO" +.IR grid-query (2), +.IR registries (2), +.IR registry (4), +.IR grid-localreg (1) diff --git a/man/1/grid-register b/man/1/grid-register new file mode 100644 index 00000000..70e32eeb --- /dev/null +++ b/man/1/grid-register @@ -0,0 +1,60 @@ +.TH GRID-REGISTER 1 +.SH NAME +register \- registers a resource with a known +.IR registry (4) +.SH SYNOPSIS +.B grid/register [ +.I option ... +.B ] { +.I command ... +.B } + +.SH DESCRIPTION +.I Register +takes a program which serves a Styx (see +.IR intro (5)) +namespace on +.I stdin +and registers it with a known +.IR registry (4). +It then marshals the service by listening for incoming connections and exporting the namespace across them. +.I Register +prints out various status messages to +.I stdout +in the form which may be read by +.IR monitor (1). +.SH OPTIONS +.TP 17 +.BI -u " maxusers" +Specifies the maximum number of connections to the resource at any one time. If not given, any number of connections are allowed. +.TP +.BI -e " n" +Tells +.I register +to exit after the last connection has gone away. +.I N +is a threshold value, so that +.I register +will not exit upon the last connection going away until the number of incoming connections has reached at least +.I n. +.TP +.BI -a " 'name=value'" +Specifies the name and value of an attribute to be listed as belonging to the resource when registered with the +.IR registry (4). +.TP +.BI -A " address" +Allows the user to specify the address for the service to announce on. +.I Address +takes the form +.BI tcp! machine ! port +.TP +.B -m +Includes the amount of free main memory as part of the attributes list. + +.SH SOURCE +.B /appl/grid/register.b + +.SH "SEE ALSO" +.IR registries (2), +.IR registry (4), +.IR grid-localreg (1) diff --git a/man/1/gzip b/man/1/gzip new file mode 100644 index 00000000..1ba9e4a2 --- /dev/null +++ b/man/1/gzip @@ -0,0 +1,69 @@ +.TH GZIP 1 +.SH NAME +gzip, gunzip \- compression and decompression utilities +.SH SYNOPSIS +.B gzip +[ +.B \-v +] [ +.BI \- level +] [ +.IR file ... +] +.br +.B gunzip +[ +.IR file ... +] +.SH DESCRIPTION +.B Gzip +and +.B gunzip +perform data compression and decompression +compatible with the Unix +.I gzip +file format, +which uses a hybrid Lempel-Ziv 1977 and Huffman compression algorithm +called `deflate'. +If no arguments are given +.B gzip +compresses each +.I file +replacing it by a file of the same +name with the a +.B .gz +suffix appended. +If no files are given, standard input +and standard output are used. +.I Level +is a single decimal digit between 1 and 9; +higher numbers give better compression. +The default +.I level +is 6. +The +.B \-v +option causes +.B gzip +to report the compression ratio of each file that +it compresses. +.PP +.B Gunzip +performs the opposite operation to +.BR gzip ; +each +.I file +(which must have a +.B .gz +suffix) is uncompressed, and replaced +by a file of the same name with the +.B .gz +suffix removed. If no files are given, +standard input and standard output are used. +.SH SOURCE +.B /appl/cmd/gzip.b +.br +.B /appl/cmd/gunzip.b +.SH SEE ALSO +.IR filter (2), +.IR filter-deflate (2) diff --git a/man/1/idea b/man/1/idea new file mode 100644 index 00000000..f874c90a --- /dev/null +++ b/man/1/idea @@ -0,0 +1,65 @@ +.TH IDEA 1 +.SH NAME +idea \- encrypt/decrypt a file with the IDEA cipher +.SH SYNOPSIS +.B idea +[ +.B -e +] +[ +.B -d +] +.I key +[ +.I datafile +] +.SH DESCRIPTION +.I Idea +encrypts or decrypts data using the IDEA (International Data Encryption Algorithm) cipher +first proposed by Xuejia Lai and James Massey in 1990. +.PP +The +.B -e +option encrypts the data +and the +.B -d +option decrypts the data. Exactly one of these must be specified on the command line. +.PP +The +.I key +is any 16 character string which is used as the key for both encryption and decryption. +.PP +The data to be encrypted/decrypted is either in +.I datafile +or is read from standard input. If no input file is given, the output from +.I idea +is always sent to standard output. For encryption, if an input file is specified the output +is sent to a file with the name +.I datafile.id. +For decryption, if an input file is specified it +should have a .id extension and the output is sent to a file whose name is that of +.I datafile +without the .id extension. +.SH EXAMPLES +.PP +Encrypt the data in the file A10076795.gz: +.IP +.EX +idea -e 'abcd2345 $+*LMNO' A10076795.gz +.EE +.PP +The encrypted data is put in the file A10076795.gz.id. Once this file is transmitted, +the receiver can then decrypt it, as long as he has the key, with: +.IP +.EX +idea -d 'abcd2345 $+*LMNO' A10076795.gz.id +.EE +.PP +The decryped data is put in the file A10076795.gz. +.PP +Note that the quotes around the key are interpreted by the shell and simply delimit +the key string. +.SH SOURCE +.B /appl/cmd/idea.b +.br +.B /utils/idea/idea.c diff --git a/man/1/itest b/man/1/itest new file mode 100644 index 00000000..28eb7c15 --- /dev/null +++ b/man/1/itest @@ -0,0 +1,124 @@ +.TH ITEST 1 +.SH NAME +itest, itreplay \- run tests and replay results +.SH SYNOPSIS +.B itest +[ +.I -eo +] +[ +.I -c cflag +] +[ +.I -r count +] +[ +.I -v vlevel +] +[ +.I -C configfile +] +[ +.I -R recordroot +] +[ +.I testdir ... +] +.PP +.B itreplay +[ +.I -eo +] +[ +.I -v verbosity +] +[ +.I recorddir ... +] +.SH DESCRIPTION +.I Itest +runs a sequence of tests, optionally recording all the results in +a directory tree. The +.IR itreplay +command replays the results of one or more recorded tests. +Some options are common to both commands: +.TP +.B -e +Display the standard error produced by the tests. +.TP +.B -o +Display the standard output produced by the tests. +.TP +.BI -v " vlevel" +Set the verbosity level to +.I vlevel +(0-9). The higher the value, the more detail is displayed; the default level is 3. +.PP +The tests run by +.IR itest +are specified as one or more directories either on the command line or in a configuration file. Options: +.TP +.BI -c " cflag" +Set the value in /dev/jit (usually 0 or 1; 0 for interpreted mode, 1 for compiled mode) to +.I cflag +.TP +.BI -r " count" +Run the set of tests +.I count +times; a value of 0 means repeat indefinitely. +.TP +.BI -v " vlevel" +Set the verbosity level to +.I vlevel +(0-9). The higher the value, the more detail is displayed; the default level is 3. +.TP +.BI -C " cfile" +Use the configuration file +.I cfile. +The file should contain a list of test directories, one per line. +.TP +.BI -R " recroot" +Store the test results in a tree rooted at +.I recroot. +Record directories are named as integers starting at 1. Each test run creates a new +directory numbered one greater than the highest existing directory. +.PP +The test results to be replayed by +.IR itreplay +are specified on the command line as one or more record directories. +.SS TEST FORMAT +A test directory must contain either a t.dis file or a t.sh file, depending +on whether the test is written as a Limbo program or as a +.IR sh (1) +script. Limbo programs should use +.IR itslib (2); +sh scripts should use +.IR sh-test (2). +A test directory should also contain a README file (which is displayed by +.I itest +if the verbosity level is greater than 8), and any other files required +for the test. +.PP +Tests are run with their working directory set to their own test directory. +.SS RECORD DIRECTORY FORMAT +Each record directory contains a number of files: +.TP +.BI msgs +All the messages generated by the test. +.TP +.BI stderr +Standard error from the test. +.TP +.BI stdout +Standard output from the test. +.TP +.BI summary +a one-line file containing the start time in seconds, elapsed time in ms, cflag +and the name of the test directory. +.SH SOURCE +.B /appl/cmd/itest.b +.br +.B /appl/cmd/itreplay.b +.SH SEE ALSO +.IR itslib (2), +.IR sh-test (2) diff --git a/man/1/keyboard b/man/1/keyboard new file mode 100644 index 00000000..616003cf --- /dev/null +++ b/man/1/keyboard @@ -0,0 +1,57 @@ +.TH KEYBOARD 1 +.SH NAME +keyboard, pen \- character input for touch screen devices +.SH SYNOPSIS +.B wm/keyboard +[ +.B -e +] [ +.B -t +] +.br +.PP +.B wm/pen +[ +.B -e +] [ +.B -r +] [ +.B -t +] +.SH DESCRIPTION +.B Wm/keyboard +provides a soft keyboard for touch-screen devices. +Characters selected on the on-screen keyboard using a stylus (or mouse button 1) are passed to Tk via +.B Tk->keyboard +in +.IR tk (2). +The +.B -t +option causes it to put itself on the +.IR wm (1) +task bar from the start. +The +.B -e +option causes it to treat the `exit' button on the title bar as +a request to put itself back on the task bar. +.PP +.B Wm/pen +provides character input using single-stroke gestures with the stylus +(or mouse button 1). +The +.B -r +option allows the pen window to be reshaped. +Options are otherwise the same as for +.BR wm/keyboard . +.SH FILES +.TF "/lib/strokes/*.clx" +.TP +.B /lib/strokes/*.cl +Raw sample data for different stroke sets (eg, letters, digits) +.TP +.B /lib/strokes/*.clx +Compact canonical versions of the stroke sets +.SH SOURCE +.B /appl/wm/keyboard.b +.br +.B /appl/wm/pen.b diff --git a/man/1/kill b/man/1/kill new file mode 100644 index 00000000..27b39a6a --- /dev/null +++ b/man/1/kill @@ -0,0 +1,64 @@ +.TH KILL 1 +.SH NAME +kill, broke \- terminate process(es) +.SH SYNOPSIS +.B kill +[ +.B -g +] +[ +.I pid ... +] +[ +.I module ... +] +.PP +.B broke +.SH DESCRIPTION +.I Kill +terminates each process (for a numeric +process ID +.IR pid ) +or +process running a given +.I module +(for a non-numeric module name), +by writing a +.L kill +message to the corresponding process's control file +in +.IR prog (3). +The +.B -g +option causes +.I kill +to write a +.L killgrp +message instead, killing all processes in the given process's process group +(see +.IR sys-pctl (2)). +Processes running a +.I module +are identified by their +.L status +file, and the process ID of each such process is printed on standard output. +.PP +A process that incurs an exception (eg, array bounds check) +is normally suspended in the `broken' state to allow debugging. +.I Broke +kills all such processes owned by the current user, releasing any resources +they hold back to the system; +it prints their process IDs. +.SH FILES +.TF "/prog/pid/status " +.TP +.BI /prog/ pid /ctl +.TP +.BI /prog/ pid /status +.SH SOURCE +.B /appl/cmd/kill.b +.br +.B /appl/cmd/broke.b +.SH "SEE ALSO" +.IR ps (1), +.IR prog (3) diff --git a/man/1/lc b/man/1/lc new file mode 100644 index 00000000..005e6968 --- /dev/null +++ b/man/1/lc @@ -0,0 +1,51 @@ +.TH LC 1 +.SH NAME +lc \- list files in columns +.SH SYNOPSIS +.B lc +[ +.B -df +] [ +.B -c +.I columns +] [ +.IR file ... +] +.SH DESCRIPTION +.I Lc +lists in columns the contents of each +.I file +that is a directory. If there is more than +.I file +and neither the +.B -d +or +.B -f +options are given, then the output for each +directory will be indented, and preceded by the +directory's name. After the listings for each directory, +the rest of the +.IR file s +are listed. If either the +.B -d +or +.B -f +options are given, directory headings are omitted and +each file is shown in full (with its containing directory); +.B -d +causes directories to be listed; +.B -f +causes files to be listed. +.I Columns +is an integer specifying the number of character widths +into which +.IR lc 's +output is formatted (default 65). +.SH SOURCE +.B /appl/cmd/lc.b +.SH SEE ALSO +.IR ls (1), +.IR readdir (2) +.SH BUGS +.I Lc +assumes a fixed-width font. diff --git a/man/1/limbo b/man/1/limbo new file mode 100644 index 00000000..63b7e945 --- /dev/null +++ b/man/1/limbo @@ -0,0 +1,218 @@ +.TH LIMBO 1E +.SH NAME +limbo \- Limbo compiler +.SH SYNOPSIS +.EX +limbo [ \f2option ...\fP ] [ \f2file ...\fP ] +.EE +.SH DESCRIPTION +.B Limbo +compiles the named Limbo +.I files +into machine-independent object files for the Dis virtual machine. +Depending on the options, the compiler may create output +files or write information to its standard output. +Conventional files and their extensions include the following. +.TP 10 +.IB file .b +Limbo source file. +.TP +.IB file .dis +Object code for the Dis virtual machine. +.TP +.IB file .m +Limbo source file for +.B module +declarations. +.TP +.IB file .s +Assembly code. +.TP +.IB file .sbl +Symbolic debugging information. +.PP +With no options, +.B limbo +produces a +.B \&.dis +file for each +source file. +.PP +The compiler options are: +.TP 1i +.B -a +Print on standard output +type definitions and call frames +useful for writing C language implementations of Limbo modules. +Suppresses normal output file generation. +.TP +.B -C +Mark the Dis object file to prevent run-time compilation. +.TP +.B -c +Mark the Dis object file to guarantee run-time compilation. +.TP +.BI -D " flags" +Turn on debugging +.IR flags . +Flags include +.B A +for arrays, +.B a +for +.B alt +statements, +.B b +for booleans, +.B C +for +.B case +body statements, +.B c +for +.B case +statements, +.B D +for use descriptors, +.B d +for declarations, +.B e +for expressions, +.B E +for extended expressions, +.B F +for function information, +.B f +for constant folding, +.B m +for modules, +.B n +for +.B nil +references, +.B P +for program counter manipulations, +.B r +for reference types, +.B S +for type signatures, +.B s +for a code generation summary, +.B T +for tuples, +.B t +for type checking, +and +.B v +for variable initialization. +.TP +.B -e +Increase the number of errors the compiler will report before exiting. +.TP +.B -G +Annotate assembly language output with debugging information. +A no-op unless +.B -S +is set. +.TP +.B -g +Generate debugging information for the input files and place it in a file +named by stripping any trailing +.B \&.b +from the input file name and appending +.BR .sbl . +.TP +.B -i +Disable inlining of functions. Currently functions containing a +single return statement or two return statements and an if clause are candidates for inlining. +.TP +.BI \-I " dir" +An +.B include +file whose name does not begin with slash +is sought first relative to the working directory, +regardless of the source +.I file +argument. +If this fails, +.B limbo +sequences through directories named in +.B \-I +options, +then searches in +.BR /module . +An +.B include +file contains Limbo source code, normally holding one or more +.B module +declarations. +.TP +.BI \-o " obj" +Place output in file +.I obj +(allowed only if there is a single input +.IR file ). +The output file will hold either object or assembly code, +depending on +.BR \-S . +Default is to take the last element of the input file name, +strip any trailing +.BR .b , +and append +.B .dis +for object code and +.B .s +for assembly code. +Thus, the default output file for +.B dir/mod.b +would be +.BR mod.dis . +.TP +.B \-S +Create assembly language output instead of object code. +.TP +\f5\-T\fP\ \f2module +Print on standard output C stub functions, +useful for implementing Limbo modules in the C language for linkage +with the interpreter. +.TP +\f5\-t\fP\ \f2module +Print on standard output +a table of runtime functions, +to link C language implementations of modules with the Limbo interpreter. +Suppresses normal output file generation. +.TP +.B \-w +Print warning messages about unused variables, etc. +More \f5w\fP's (e.g., \f5\-ww\fP) increase the pedantry of the checking. +.PP +.SH FILES +.TF /module +.TP +.B /module +directory for Limbo +.B include +modules +.SH SOURCE +.TF /appl/limbo +.TP +.B /appl/limbo +compiler source in Limbo +.TP +.B /limbo +compiler source in C for host +.SH "SEE ALSO" +.IR asm (1), +.IR emu (1), +.IR mk (10.1), +.IR intro (2), +.IR sys-intro (2), +.IR tk (2) +.PP +``The Limbo Programming Language'' +.br +``Program Development in Inferno'' +.br +``A Descent into Limbo'' +.br +in Volume 2. diff --git a/man/1/listen b/man/1/listen new file mode 100644 index 00000000..4234ad49 --- /dev/null +++ b/man/1/listen @@ -0,0 +1,237 @@ +.TH LISTEN 1 +.SH NAME +listen, styxlisten, dial \- network connections +.SH SYNOPSIS +.B listen +[ +.B -Ats +] [ +.B -a +.I alg +]... [ +.B -k +.I keyfile +] [ +.B -i +.BI { initscript } +] +.I addr +.I command +[ +.IR arg ... +] +.br +.B styxlisten +[ +.B -Ats +] [ +.B -a +.I alg +]... [ +.B -k +.I keyfile +] +.I addr +.I command +[ +.IR arg ... +] +.br +.B dial +[ +.B -A +] [ +.B -a +.I alg +] [ +.B -k +.I keyfile +] +.I addr +.I command +[ +.IR arg ... +] +.SH DESCRIPTION +.I Listen +waits for an incoming network connection on +.IR addr , +(as accepted by +.B announce +in +.IR sys-dial (2)) +and then invokes +.IR sh (1) +to run the associated +.IR command . +If the +.B -A +option is specified, no authentication or encryption will +take place on the connection; otherwise +.I listen +will attempt to authenticate the party at the other +end of the connection, allowing any given +.I alg +to be used to encrypt and/or digest the +connection's data. If neither +.B -A +or any +.B -a +option is given, then +.I listen +will allow any algorithm allowed by the local +.IR ssl (3) +device. +If +.I keyfile +is specified, then that will be used as the server's certificate; +otherwise +.BI /usr/ user /keyring/default +will be used. +.PP +If an +.I initscript +is provided, it is executed by each listener +after announcing its network connection, +with the shell variable +.B net +set to the name of the corresponding network directory +(see +.IR sys-dial (2)), +before listening for incoming calls. +This can be used to change, or find out the characteristics +of an announced port (for instance to find out +the actual port number that has been announced). +.PP +By default, +.I listen +backgrounds itself (after checking that the port +announcement proceeded ok); giving it the +.B -s +option causes it to run synchronously. +.PP +.I Listen +currently makes available the whole of its current name space visible to the command, +which might be undesirable, and perhaps should be optional, with a new name space +constructed for an incoming call. +The +.B -t +option declares the command to be `trusted' giving it access to +elements of the current name space such as +.B /mnt/keys +on an authentication server. +By default it has not got that access. +.PP +.I Styxlisten +is similar to +.IR listen , +except that it multiplexes a single +.I styx +(see +.IR intro (5)) +server between multiple clients. +.I Styxlisten +starts its +.I cmd +only once; it assumes it will serve styx messages +through file descriptor 0 when started. For each client that attaches to +.IR address , +the command will see a new +.IR attach (5) +message indicating the new connection. +Unless the +.B -A +option has been given, the +.B uname +field in the attach message will be the name of the +authenticated user. +When the command exits, the process listening +on +.I address +is stopped. +.PP +.I Dial +is the complement of +.IR listen . +It tries to make a connection to +.IR addr . +If the +.B -A +option is given, no authentication or encryption will +take place; otherwise Inferno authentication and encryption +will be performed as usual, using +.I alg +if given, or a default algorithm otherwise. +.I Keyfile +is used for the certificate if given, otherwise +.BI /usr/ user /keyring/ addr\fR,\fP +if it exists, and failing that, +.BI /usr/ user /keyring/default\fR.\fP +.I Alg +is used for the encryption/digest algorithm +on the connection. +When the connection is made, +.I command +is run in the context of that connection, as described below. +.PP +For both +.I dial +and +.IR listen , +when the command is run, +.B $user +is set to the name of the authenticated user at the other +end of the connection (if authentication +is being used), and +.B $net +is set to the +.B /net +directory corresponding to the connection. +The standard input and output of the command +is redirected to the network connection (standard +error is unaffected). +.SH EXAMPLES +Run a custom login daemon and an echo server that +logs incoming connections: +.IP +.EX +listen 'tcp!*!echo' { + echo connection from `{cat $net/remote} >[1=2] + echo user is $user >[1=2] + cat & +} +.EE +.PP +Dial up the above echo server: +.IP +.EX +dial tcp!somehost!echo { + echo made connection >[1=2]; echo hello; cat >[1=2] +} +.EE +.PP +Make the current name-space available to all: +.IP +.EX +styxlisten 'tcp!*!styx' export / +.EE +.SH SOURCE +.B /appl/cmd/dial.b +.br +.B /appl/cmd/listen.b +.SH BUGS +The way that +.I styxlisten +is implemented means that the +.B aname +from the remote +.IR mount (2) +request cannot be passed through to the +attach message seen by the command that +has been started by +.IR styxlisten . +.SH "SEE ALSO" +.IR svc (8), +.IR sys-dial (2), +.IR auth (6), +.IR ssl (3) diff --git a/man/1/logon b/man/1/logon new file mode 100644 index 00000000..f95e0850 --- /dev/null +++ b/man/1/logon @@ -0,0 +1,77 @@ +.TH LOGON 1 +.SH NAME +logon \- log on to Inferno +.SH SYNOPSIS +[ +.B wm/wm +] +.B wm/logon +[ +.B -l +] [ +.BI "-n nsfile" +] [ +.BI "-u user" +] +.SH DESCRIPTION +.I Logon +logs a user in to the Inferno environment. +It requires +.I wm (1) +to be started first. +If no +.I user +name is specified by the +.B -u +option, +.I logon +displays a login panel to prompt for one. +The user name must have a directory +.BI /usr/ user, +which will become the current directory. +(Otherwise, +.I logon +will display a diagnostic panel and prompt again.) +The user name is written to +.B /dev/user +(see +.IR cons (3)), +which is the name presented on subsequent attaches to file servers. +.PP +Normally, +.I logon +expects keyboard input to provide a name, +but if the +.B -l +option is given, +.I logon +displays a list of the names in +.BR /usr , +allowing one to be selected using a mouse or touch screen. +.PP +Once the current directory has been set, +.I logon +creates a new name space for the user using the contents of +.I nsfile +(default: +.BR namespace ), +as described in +.IR namespace (6). +It then starts +.IR toolbar (1) +to provide the initial application environment. +.SH FILES +.TF /dev/userxx +.TP +.B /dev/user +Inferno user name +.TP +.BI /usr/ user +.IR user 's +home directory +.SH SOURCE +.B /appl/wm/logon.b +.SH SEE ALSO +.IR toolbar (1), +.IR wm (1), +.IR namespace (6) diff --git a/man/1/logwindow b/man/1/logwindow new file mode 100644 index 00000000..1cc17a54 --- /dev/null +++ b/man/1/logwindow @@ -0,0 +1,23 @@ +.TH LOGWINDOW 1 +.SH NAME +logwindow \- window that pops up when data becomes available. +.SH SYNOPSIS +.B wm/logwindow +.RI [ title ] +.BI < logfile +.SH DESCRIPTION +.I Logwindow +reads data from its standard input (often a file served by +.IR logfile (4)) +and shows it in a text widget. +If the window is hidden (it is hidden initially), +it will reappear when +data appears on its standard input. If +.I title +is given, it will be used as the title of the window. +.SH SOURCE +.B /appl/wm/logwindow.b +.SH SEE ALSO +.IR logfile (4) +.SH BUGS +The text buffer grows without bound. diff --git a/man/1/look b/man/1/look new file mode 100644 index 00000000..c42158c5 --- /dev/null +++ b/man/1/look @@ -0,0 +1,81 @@ +.TH LOOK 1 +.SH NAME +look \- find lines in a sorted list +.SH SYNOPSIS +.B look +[ +.BI -dfnixt c +] +[ +.I string +] +[ +.I file +] +.SH DESCRIPTION +.I Look +consults a sorted +.I file +and prints all lines that begin with +.IR string . +It uses binary search. +.PP +The following options are recognised: +.TP +.B -i +Interactive. +There is no +.I string +argument; instead +.I look +takes lines from the standard input as strings to be looked up. +.TP +.B -x +Exact. +Print only lines of the file whose key matches +.I string +exactly. +.TP +.B -d +`Directory' order: +only letters, digits, +tabs and blanks participate in comparisons. +.TP +.B -f +Fold. +Upper case letters compare equal to lower case. +.TP +.B -n +Numeric comparison with initial string of digits, optional minus sign, +and optional decimal point. +.TP +.BR -t [ \f2c\f1 ] +Character +.I c +terminates the sort key in the +.IR file . +By default, tab terminates the key. If +.I c +is missing the entire line comprises the key. +.PP +If no +.I file +is specified, +.B /lib/words +is assumed, with collating sequence +.BR df . +.SH FILES +.B /lib/words +.SH SOURCE +.B /appl/cmd/look.b +.SH "SEE ALSO" +.IR sort (1), +.IR grep (1) +.SH DIAGNOSTICS +The exit status is +.B \&"not found" +if no match is found, and +.B \&"no dictionary" +if +.I file +or the default dictionary cannot be opened. diff --git a/man/1/ls b/man/1/ls new file mode 100644 index 00000000..31ea443a --- /dev/null +++ b/man/1/ls @@ -0,0 +1,143 @@ +.TH LS 1 +.SH NAME +ls \- list files +.SH SYNOPSIS +.B ls +[ +.B -lpmnqduntscr +] [ +.IR file ... +] +.SH DESCRIPTION +.B Ls +lists the named +.IR file s +in an order and format determined by its options. +The options determining the output format are: +.TP 10 +.B -l +Produce output in long format. The information given in +each column is as follows: +.RS +.IP 1. +The permission mode of the file. This is formatted as 11 characters; +the first is +.RB ` d ' +if the file is a directory, +.RB ` a ' +if the file is append-only, +.RB ` A ' +if it is an authentication file, +or +.RB ` - ' +otherwise. +The next character is +.RB ` l ' +if the file is exclusive-use, +or +.RB ` - ' +otherwise. +The remaining characters are in three groups +of three, each representing one permission bit. Each character +is either +.RB ` r ' +(read permission), +.RB ` w ' +(write permission), +.RB ` x ' +(execute permission) +or +.RB ` - ' +(no permission). +The three groups represent permissions granted for that file +to the file's owner, members of the file's group and anybody else +respectively. +.IP 2. +The device type (this is the `#' device letter for local devices +or `M' for files mounted over a Styx connection). +.IP 3. +The device instance number (this distinguishes between +separately mounted instances of the same device). +.IP 4. +The file's owner. +.IP 5. +The file's group. +.IP 7. +The size of the file in bytes. +.IP 8. +The date and time the file was last modified (see also the +.B -u +and the +.B -e +options). +.IP 9. +The name of the file. +.RE +.TP +.B -m +Print the name of the user who most recently modified +the file. +.TP +.B -q +Print the file's +.I qid +(see +.IR sys-stat (2)) +at the beginning of each line; +the printed fields are in the order +path, version, and type. +.TP +.B -u +Applicable only to the +.B -l +and +.B -t +options: causes time-sorted listings to be listed by +time of last access, and the access time to be printed +in long-format listings instead of the modification time. +.TP +.B -e +Applicable only to the +.B -l +and +.B -u +options: causes the time to be displayed as seconds since the epoch. +.TP +.B -p +Print each filename as a bare name, without the name +of the containing directory. +.PP +The other options relate to the order in which the listed files +are printed, and which files are selected. Usually, each +.I file +that is a directory has its contents printed. The +.B -d +option causes the directory itself to be listed. +In a union directory, it is possible for there to be +two or more instances of a file with the same name. +The +.B -c +option causes only the first one occurring to be +listed. The options relating to ordering are: +.TP 10 +.B -n +Do not sort the files at all. +.TP +.B -t +Sort by modification time (most recent first) +or access time if the +.B -u +option is also specified. +.TP +.B -s +Sort by size (smallest first). +.TP +.B -r +Reverse the sort order. +.SH SOURCE +.B /appl/cmd/ls.b +.SH SEE ALSO +.IR readdir (2), +.IR lc (1) + + diff --git a/man/1/man b/man/1/man new file mode 100644 index 00000000..abf4d50e --- /dev/null +++ b/man/1/man @@ -0,0 +1,136 @@ +.TH MAN 1 +.SH NAME +man, wm/man, man2txt, lookman \- +print or find manual pages +.SH SYNOPSIS +.B man +[ +.I section ... +] +.I title ... +.br +.B man -f +.I file ... +.br +.B wm/man +[ +.I section ... +] +.I title ... +.br +.B wm/man -f +.I file ... +.br +.B man2txt +[ +.B -p +.I width +] +[ +.I file ... +] +.br +.B lookman +.I keyword ... +.SH DESCRIPTION +Both +.I man +and +.BI wm/ man +locate entries in this manual and display them. +The pages for entries named +.I title +within each specified +.IR section +are displayed. +If no sections are specified, matching pages +from all sections are printed. +Sections are given by number. +.PP +The +.B -f +option to +.I man +and +.I wm/man +prevent lookup in the manual index. +Instead, the remaining arguments are treated as +filenames. +.I Man +processes each file in turn. +.I Wm/man +adds each file to its page history and displays the first document in the list. +.PP +The +.I man +command prints the manual pages as formatted plain text to standard output. +Manual pages are written using Plan9 +.I "troff -man" +macros for their markup and so +some detail is lost in conversion to plain text. +.BI Wm/ man +displays the pages in a graphical Wm window, providing a more faithful +reproduction of the intended layout. +.PP +.I Man2txt +converts +.I "troff -man" +macro markup +to plain text. +Each file is processed separately. +If no arguments are given, text from standard input is processed. +The converted text is written to standard output. +The +.B -p +option to +.I man2txt +specifies the page width in characters. +.PP +.I Lookman +prints the file names of manual pages, from any section, that +contain all of the +.I keywords +given as arguments. +.SH FILES +.TF /man/1/INDEX +.TP +.B /man/?/* +Source files of manual pages. +.TP +.B /man/1/man +The source file for this manual page. +.TP +.B /man/?/INDEX +Used by +.I man +and +.BI wm/ man +to locate the source file containing a particular title. +.TP +.B /man/index +The +.I lookman +index. +.SH SOURCE +.B /appl/wm/man.b +.br +.B /appl/cmd/man.b +.br +.B /appl/cmd/man2txt.b +.br +.B /appl/cmd/lookman.b +.br +.B /appl/lib/parseman.b +.SH "SEE ALSO" +.IR wm (1) +.SH BUGS +.I Man2txt +only knows about +.I "troff -man" +macros. +Other troff macro packages or output from preprocessors +such as +.I pic +or +.I tbl +will not be presented correctly. diff --git a/man/1/mash b/man/1/mash new file mode 100644 index 00000000..ed305553 --- /dev/null +++ b/man/1/mash @@ -0,0 +1,635 @@ +.TH MASH 1 +.SH NAME +mash \- programmable shell +.SH SYNOPSIS +.B mash +[ +.B -denx +][ +.BI -c command +] [ +.I file +[ +.I arg ... +]] +.SH DESCRIPTION +.I Mash +is an older alternative to the original Inferno shell +(now +.IR tiny (1)). +.I Mash +is a programmable shell that also allows the definition of simple dependency +rules, resembling those of Unix +.IR make . +It executes commands read from standard input +or a file or, with the +.B -c +flag, from +.IR mash 's +argument list. Its syntax and +semantics are similar to that of Plan 9's +.IR rc . + +.SS Invocation +If +.I mash +is started with no arguments it reads commands from standard +input. Otherwise its first non-flag argument is the name of a file from +which to read commands (but see +.B -c +below). Subsequent arguments +become the initial value of +.BR $args . +Mash accepts the following +command-line flags. +.PD 0 +.TF "-c string" +.TP +.BI -c " string" +Commands are read from string. +.TP +.B -d +Dump parsed commands before execution. +.TP +.B -e +Fail if a top level command does. +.TP +.B -n +Parse but do not execute. +.TP +.B -x +Print each simple command before executing it. +.PD +.PP +If invoked without arguments +.I mash +first runs the commands found in +.BR /lib/mashinit . + +.SS "Command Lines" +Each command is terminated with an ampersand or a semicolon (& or ;). +When reading from +.B /dev/cons +a newline +not escaped with a backslash (\\) is treated as a semicolon. +.I Mash +does not +wait for a command followed by +.B & +to finish executing before starting the +following command. +.PP +A number-sign (#) and any following characters up to (but not including) the next newline are +ignored, except in quotation marks. + +.SS "Simple Commands" +A simple command is a sequence of words interspersed with I/O +redirections. If the first word is the name of a +.I mash +function or of one of +.IR mash 's +built-in commands, it is executed by +.IR mash . +Otherwise, if the name +starts with a slash +.RB ( / ), +it must be the path name of a Dis +file to be loaded +and executed. Names containing no initial slash are searched for in the +current directory and then in +.BR /dis . +The +.B .dis +extension need not be +supplied. +.PP +The keywords are +.EX + case else fn for hd if in len rescue tl while +.EE + +.SS Words and Variables +A number of constructions may be used where +.IR mash 's +syntax requires a +word to appear. In many cases a construction's value will be a list of +strings rather than a single string. +.PP +The simplest kind of word is the unquoted word: a sequence of one or +more characters none of which is a blank, tab, newline, or any of the +following: +.EX + # : ; ! ~ @ & | ^ $ = " ` ' { } ( ) < > +.EE +An unquoted word that contains any of the characters +.BR * ,\ ? +or +.B [ +is a pattern +for matching against file names. The character +.B * +matches any sequence of +characters, +.B ? +matches any single character, and +.B [ +.I class +.B ] +matches any +character in the class. The class may also contain pairs of characters +separated by +.BR \- , +standing for all characters lexically between the two. The +character +.B / +must appear explicitly in a pattern. A pattern is replaced by a +list of words, one for each path name matched, except that a pattern +matching no names is not replaced by the empty list, but rather stands for +itself. Pattern matching is done after all other operations. Thus, +.EX + x=/tmp; echo $x^/*.c; +.EE +matches +.BR /tmp/*.c , +rather than matching +.B /*.c +and then prefixing +.BR /tmp . +.PP +A quoted word is a sequence of characters surrounded by single quotes +.RB ( ' ). +A single quote is escaped with a backslash. +.PP +Each of the following is a word. +.PD 0 +.HP +.BI $ identifier +.br +The identifier after the +.B $ +is the name of a variable whose value is +substituted. Variable values are lists of strings. It is an error if the +named variable has never been assigned a value. +.HP +.BI $ number +.br +See the description of rules for the +.IR mash-make (1) +builtin. +.HP +.B $"\c +.I identifier +.br +The value is a single string containing the components of the named +variable separated by spaces. +.HP +.BI `{ commands } +.br +.I mash +executes the commands and reads the standard output, splitting +it into a list of words, using the whitespace characters (space, tab, +newline and carriage return) as separators. +.HP +.B +"{\c +.IB commands } +.br +.I mash +executes the commands and reads the standard output, splitting +it into a list of words, using the whitespace characters (space, tab, +newline and carriage return) as separators. +.HP +.BI <{ commands } +.HP +.BI >{ commands } +.br +The commands are executed asynchronously with their standard +output or standard input connected to a pipe. The value of the word +is the name of a file referring to the other end of the pipe. This +allows the construction of non-linear pipelines. For example, the +following runs two commands +.B old +and +.B new +and uses +.B cmp +to compare their outputs +.EX + cmp <{old} <{new}; +.EE +.TP +.BI ( expr ) +.I mash +evaluates +.I expr +as an expression. The value is a (possibly null) list of words. +Expressions are described in detail below. +.HP +.IB word ^ word +.br +The +.B ^ +operator concatenates its two operands. If either operand is a +singleton, the concatenation is distributive. Otherwise the lists are +concatenated pairwise. + +.PD +.SS Free Carets +In most circumstances, +.I mash +will insert the +.B ^ +operator automatically +between words that are not separated by white space. Whenever one of +.B $ +.BR ' or +.B ` +(dollar, single quote or back quote) +follows a quoted or unquoted word or an unquoted word follows a +quoted word with no intervening blanks or tabs, a +.B ^ +is inserted between +the two. If an unquoted word immediately follows a +.B $ +and contains a +character other than an alphanumeric, or underscore, a +.B ^ +is inserted before +the first such character. Thus +.IP +.B limbo -$flags $stem.b +.LP +is equivalent to +.IP +.B limbo -^$flags $stem^.b + +.SS I/O Redirections +The sequence +.BI > file +redirects the standard output file (file descriptor 1, +normally +.BR /dev/cons ) +to the named +.IR file ; +.BI >> file +appends standard +output to the file. The standard input file (file descriptor 0, also normally +.BR /dev/cons ) +may be redirected from a file by the sequence +.BR <file . +The +sequence +.B <>file +opens the file for read/write and associates both file +descriptor 0 and 1 with it. + +.SH Compound Commands +A pair of commands separated by a pipe operator +.RB ( | ) +is a command. The +standard output of the left command is sent through a pipe to the +standard input of the right command. +.PP +Each of the following is a command. +.PD 0 +.HP +.B if ( +.I expr +.B ) +.I command1 +.HP +.B if ( +.I expr +.B ) +.I command1 +.B else +.I command2 +.br +The +.I expr + is evaluated and if the result is not null, then +.I command1 +is executed. In the second form +.I command2 +is executed if +the result is null. +.HP +.B for ( +.I name +.B in +.I list +.BI ) command +.br +The +.I command +is executed once for each word in +.I list +with that +word assigned to +.IR name . +.HP +.B while ( +.I expr +.B ) +.I command +.br +The +.I expr +is evaluated repeatedly until its value is null. Each time it +evaluates to non-null, the command is executed. +.HP +.B case +.I expr +.B { +.I pattern-list +.B => +.I command ... +.B } +.br +.HP +.B case +.I expr-list +.B { +.I pattern +.B => +.I command ... +.B } +.br +In the first form of the command the +.I expr +is matched against a series of lists of regular expressions (See +.IR regex (2)). +The command associated with the matching expression is executed. +In the second form the +.I command +associated with the first pattern to match one of the words in +.I expr-list +is executed. An +.I expr-list +will never match a +.IR pattern-list . +.HP +.BI { commands } +.HP +.BI @{ commands } +.br +Braces serve to alter the grouping of commands implied by operator +priorities. The body is a sequence of commands separated by +.B & +or +.BR ; . +The second form is executed with a new scope. Either form can be +followed by redirections. +.HP +.BI fn name { list } +.HP +.BI fn name +.br +The first form defines a function with the given +.IR name . +Subsequently, +whenever a command whose first word is +.I name +is encountered, the +current value of the remainder of the command's word list will be +assigned to the local variable +.BR args , +in a new scope, and +.I mash +will execute the list. The second form removes +.IR name 's +function definition. +.HP +.IB name = list +.HP +.IB name := list +.br +The first form is an assignment to a variable. If the name is currently +defined as a local variable its value will be updated. Otherwise a +global variable with the given name will be defined or updated. The +second form is an explicit definition or update of a local variable. +.HP +.IB list : list +.HP +.IB list : list { commands } +.HP +.IB word :~ word { commands } +.br +These forms define dependencies and rules for the +.I make +loadable +builtin. The first form defines a simple dependency, the second a +dependency with an explicit rule. The third form defines an implicit +rule where the left-hand word is a file pattern, the right-hand word is +the prerequisite. The right-hand word and the commands can +contain references to the characters matched by the +.B * +meta-character +in the pattern +.RB ( $1 +evaluates to the characters matched by the first +.BR * , +.B $2 +the second and so on; +.B $0 +is the entire match). +.PD + +.SS Expressions +Expressions evaluate to possibly null lists of strings. A word is an +expression. An expression may take one of the following forms +.PD 0 +.HP +.BI ( " expr " ) +.br +Parentheses are used for grouping. +.HP +.BI hd " expr" +.HP +.BI tl " expr" +.HP +.BI len " expr" +.HP +.BI ! " expr" +.br +.I hd +is the first element of a list, +.I tl +the remainder. +.I len +is the length of +a list. Both evaluate to the null list if their operand is a null list. +.B ! +is the not operator and evaluates to true for a null list or to a null list +otherwise. +.HP +.IB expr " ^ " expr +.HP +.IB expr " :: " expr +.HP +.IB expr " == " expr +.HP +.IB expr " != " expr +.HP +.IB expr " ~ " expr +.br +.B ^ +is concatenation (as defined above), +.B :: +is list concatenation, +.B == +and +.B != +are the equality operators evaluating to true or the null list, +depending on the equality or inequality of the two operands. +.B ~ +is the match operator, true if a singleton string matches one of a list of +regular expressions, or one of a list of strings matches a regular +expression. (If neither operand is a singleton it evaluates to the null +list.) +.B ^ +has the highest precedence, followed by +.B :: +followed by the +other three. All associate to the left except +.BR :: . + +.SS Built-in Commands + +.I Mash +supports loadable modules of builtins. The +.I Mashbuiltin +module definition and description is in +.BR mash.m . +One such module, +.IR builtins , +is loaded before +.I mash +begins parsing. This module defines the following commands +.PD 0 +.HP +.B env +.br +Print global and local variables. Global variables are displayed using a +.IB name = value +format, and local variables using a +.IB name := value +format. +.HP +.B eval +.br +Concatenate arguments and use as mash input. +.HP +.B exit +.br +Cause +.I mash +to raise an +.B "exit" +exception. +.HP +.B load +.I file +.br +Load a builtin module. The +.I file +must be a module with type +.BR Mashbuiltin . +The argument +.I file +is assumed to contain a path to the loadable module. If no such module +is found then the string +.B /dis/lib/mash/ +is prepended to +.I file +and the load is retried. +.HP +.B prompt +.HP +.BI prompt text +.HP +.BI prompt "text contin" +.br +When called with no arguments causes the current value of the +.I mash +prompt to be printed to standard output. The default value is +.BR mash% . +The second form sets a new prompt. The final form sets a new prompt +and additionally a continuation string. Initially the continuation +string is set to a single tab character. +.I Mash +uses the continuation string in place of the prompt string to indicate that +the preceding line has been continued by escaping with a final backslash +.RB ( \e ) +character. +.HP +.BI quote args... +.br +Print arguments quoted as input for +.IR mash . +.HP +.BI "run -" [ denx "] file [arg...]" +.br +Interpret a file as input to +.IR mash . +.HP +.BI time "cmd [arg...]" +.br +Time the execution of a command. The total execution time is reported +in seconds and on standard error when the command completes. +.HP +.BI whatis name +.br +Print variable, function or builtin. The object given by +.I name +is described on standard output in a format that reflects its type. +.PP +The +.I make +loadable builtin provides `make` functionality. +The +.I tk +loadable builtin provides control over some of the visual elements of a +.I mash +window. + +.SS Adding Builtins +New builtins can be added to +.I mash +by creating a +.I Dis +module that can be loaded with a +.B Mashbuiltin +module interface (defined in mash.m). +The new module is loaded with the builtin +.B load +command which calls its +.B mashinit +function to initialise it with an argument containing the +.B load +command line. The function should use this call to register the set of builtins +that the module will provide using the +.B Env.defbuiltin +function. Thereafter, each time one of the registered builtins is invoked +the module's +.B mashcmd +function is called passing as an argument a list containing the invoked +builtin name and its arguments. See the examples in +.BR mash/builtins.b , +.BR mash/make.b ", and" +.BR mash/tk.b . +.SH FILES +.B /lib/mashinit +.br +.B /dis/lib/mash +.SH SOURCE +.B /appl/cmd/mash +.SH SEE ALSO +.IR mash-tk (1), +.IR mash-make (1), +.IR regex (2) +.PP +Tom Duff, +``Rc \- The Plan 9 Shell'', in the +.I "Plan 9 Programmer's Manual", Second Edition, +Volume 2. diff --git a/man/1/mash-make b/man/1/mash-make new file mode 100644 index 00000000..f2e95033 --- /dev/null +++ b/man/1/mash-make @@ -0,0 +1,182 @@ +.TH MASH-MAKE 1 +.SH NAME +mash-make \- builtin `make' functionality +.SH SYNOPSIS +.B load make + +.B make +[ +.I -clear +] +.br +.B depends +[ +.I target +] +.br +.B match +.I pattern +.br +.B rules +[ +.I pattern +] +.br +.SH DESCRIPTION +.I Make +is a loadable builtin for +.IR mash . +It can be taught about dependencies that exist between components of a program and +rules for reconstructing the components of a program. +.PP +.I Make +will examine file modification times to determine which components need +to be updated and will +issue commands to reconstruct them in the correct sequence. +It will update a target if any of its prerequisites are more up to date than the target +or if the target does not exist. +.PP +Typically, dependencies and rules are kept in a file called +.BR mashfile . +The sequence +.PP +.EX + load make + run mashfile +.EE +.PP +is used to load the +.I make +builtin and read the rules from +.BR mashfile . +Thereafter, the command +.IP +.B make +.I target +.PP +will perform the correct sequence of operations to reconstruct +.I target +and its dependents. +.PP +A dependency is specified in +.I mash +with a line of the form: +.IP +.IB target-list " : " dependent-list " ; " +.PP +or +.IP +.IB target-list " : " dependent-list " { " rules " } ;" +.PP +Each of the targets in +.I target-list +depends upon each of the dependents in +.IR dependent-list . +The optional +.I rules +specify how to build the targets. For example +.EX + lflags = -Cg; + rotta.dis : rotta.b rotta.m { limbo $lflags rotta.b }; +.EE +If the rules are omitted +.I make +must be able to infer them from implicit rules. +.PP +An implicit rule is defined with a line of the form: +.IP +.I pattern +.B :~ +.I dependency +.B { +.I rules +.B } +.PP +If +.I pattern +matches a target that +.I make +needs to build then +.I make +will build the target by first making the +.I dependency +and then applying the +.IR rules . +The wildcard components of the matched target are available in +the +.I dependency +and the +.I rules +as variables +.BR $1 , +.BR $2 , +.BR $3 ... +with +.B $1 +containing the text matched by the first wildcard, +.B $2 +the second wildcard +and so on. The whole of the target is available in the variable +.BR $0 . +For example, +.PP +.EX + /*/*.m :~ $2.m { cp $2.m /$1/$2.m }; + /module/rotta.m: rotta.m; + /altmodule/frame.m: frame.m; +.EE +.PP +More commonly, implicit rules are defined to provide +.I make +with knowledge of how to compile +.I limbo +source to produce +.I Dis +format binaries. +Typically, +.PP +.EX + *.dis :~ $1.b { limbo $lflags $1.b}; + /dis/*.dis :~ $1.dis { cp $1.dis /dis}; +.EE +.PP +A target is built with the command +.IP +.B make +.I target +.PP +The list of rules can be reset with +.IP +.B make -clear +.PP +The list of dependencies for a target or for all targets can be +displayed with the command +.IP +.B depends +[ +.I target +] +.PP +The rules that match a pattern and the components of the pattern +can be displayed with +.IP +.B match +.BI ' pattern ' +.PP +Taking care to hide the pattern from +.I mash +file name pattern matching with quotes. +The command +.IP +.B rules +[ +.I pattern +] +.PP +will display all the rules or the rules that apply to pattern +.I pattern +(if given). +.SH SOURCE +.B /appl/cmd/mash/make.b +.SH "SEE ALSO" +.IR mash (1) diff --git a/man/1/mash-tk b/man/1/mash-tk new file mode 100644 index 00000000..c2047813 --- /dev/null +++ b/man/1/mash-tk @@ -0,0 +1,212 @@ +.TH MASH-TK 1 +.SH NAME +mash-tk \- control visual elements of mash window +.SH SYNOPSIS +.B load tk +.br +.B tk clear +.br +.B tk def button +.I name value +.br +.B tk def ibutton +.I name value image +.br +.B tk def menu +.I name +.br +.B tk def item +.I menu name value +.br +.B tk dialog +.I title mesg default label ... +.br +.B tk dump [ +.I name ... +.B ] +.br +.B tk env +.br +.B tk file +.I title dir pattern ... +.br +.B tk geom +.br +.B tk layout [ +.I name ... +.B ] +.br +.B tk notice +.I message +.br +.B tk sel +.br +.B tk sget +.br +.B tk sput +.I string +.br +.B tk string +.I mesg +.br +.B tk taskbar +.I string +.br +.B tk text +.br +.SH DESCRIPTION +.I Tk +is a loadable builtin for +.IR mash. +It provides a set of primitives for customizing a +.I mash +window and building fairly sophisticated graphical functions. It is currently implemented as a single command with a variety of subcommands. For the +.I tk +command to work, +.I mash +must have been started using +.BR wm/wmmash . +In the following descriptions, references to return values indicate strings put on a command's standard output. +.SS Creating a Menu Bar +The +.B def +subcommand is used to define graphical pushbuttons and menus. The +.B def button +and +.B def ibutton +commands are used to define pushbuttons labelled with text or graphical icons, respectively. +The +.I name +parameter is used to label buttons, and to layout both buttons and ibuttons. +.I Value +is a command to be executed when the button is clicked, and must be quoted if it contains white space. +.I Image +is the name of a bitmap file; it is looked for in +.BR /icon/tk , +unless the name begins with +.BR@ , +which suppresses prepending +.BR /icon/tk . +.br +.B Def menu +is used to name and label menu buttons, and +.B def item +specifies items within the corresponding pulldown menus. In +.BR "def item" , +.I menu +is a name supplied on a +.B def menu +subcommand, +.I name +is the label for this menu item, and +.I value +is a command to execute when this menu item is selected. +All the items in a menu are simple command buttons; +there is no provision for any other kind of control, or for cascading menus. +.br +The +.B layout +subcommand creates and makes visible a menu bar, using menus and buttons defined with +.B def +subcommands. The current components, if any, are removed first, +so layout with no parameters just removes all the current buttons and menus from the +.I mash +window. The components are laid out from left to right, in the order presented in the +.B layout +subcommand. A copy of the current +.I mash +environment is made, and commands executed as a result of clicking buttons +or selecting menu items are executed in that environment. +For example, variables will have the values they had when the layout was done. +.br +The +.B env +subcommand can be used to make a new copy of the environment for use by button +or menu actions. +.SS Displaying Popup Widgets +The +.B notice +subcommand pops up a window containing +.I message +and a single button to dismiss the window. The icon displayed in the window is +.BR /icons/tk/error . +No value is returned by +.BR notice . +.br +The +.B dialog +subcommand is more complex; +.I title +is used to name the window, and multiple buttons labelled according to the +.B label +parameter(s) are provided. +.I Default +is the number of the button which is the default choice. The leftmost button is numbered 0. +When the user selects one of the buttons, the dialog box is popped down and the +number of the button selected is returned. +.br +The +.B file +subcommand pops up a standard Inferno file selection box. +.I Dir +specifies the initial directory to display, and pattern specifies which non-directory files to include in the list of files. If the Cancel button in the file dialog is clicked, no value is returned. If a file is selected and the Exit button is clicked, the full pathname of the file is returned, complete with final +.B / +if the file is a directory. Double clicking on a non-directory file in the list will likewise return that file's path. Double clicking on a directory in the list will display the contents of that directory. +.br +The +.B string +subcommand pops up a small window with +.I mesg +as the label of a text field. Characters typed into the text field, up to but not including ENTER, are returned. +.SS Dealing With the Selection +.br +The +.B sel +subcommand returns whatever is currently selected. When typing into the shell's window, nothing is selected, so nothing is returned. However, if invoked via a pushbutton and there is a selection, it is returned. +.br +The +.B sput +subcommand puts +.I string +into the snarf buffer maintained by the window manager, and the +.B sget +subcommand retrieves and returns the current contents of the snarf buffer. This provides a way to pass text between the shell and other applications. The Snarf and Paste buttons on the popup menu associated with mouse button two can also be used to do this. + +.SS Miscellaneous Tk Subcommands +The +.B taskbar +subcommand lets you put +.I string +in the title bar of the +.I mash +window. The old value is returned. +.br +The +.B text +subcommand returns the contents of the +.I mash +window. +.br +The +.B clear +subcommand removes all text from the window. +.br +The +.B dump +subcommand returns the +.I mash-tk +commands needed to define the buttons and menus currently defined, +and to recreate the currently visible set of buttons and menus, or, if +.B dump +has parameters, the commands needed to define the buttons and menus named by the parameters. +.br +The +.B geom +subcommand returns the position of the upper left corner of the +.I mash +window relative to the upper left corner of the Inferno screen. + +.SH SOURCE +.B /appl/cmd/mash/tk.b +.SH "SEE ALSO" +.IR mash (1) diff --git a/man/1/math-misc b/man/1/math-misc new file mode 100644 index 00000000..42003f64 --- /dev/null +++ b/man/1/math-misc @@ -0,0 +1,223 @@ +.TH MATH-MISC 1 +.SH NAME +ack, crackerbarrel, factor, fibonacci, fit, genprimes, mersenne, parts, perms, pi, powers, primes, sieve \- miscellaneous mathematical applications +.SH SYNOPSIS +.B math/ack +[ +.IR m +] +[ +.IR n +] +.br +.B math/crackerbarrel +[ +.IR n +] +.br +.B math/factor +[ +.IR n +] +.br +.B math/fibonacci +.br +.B math/fit +[ +.BI -d deg +] +[ +.B -v +] +[ +.IR file +] +.br +.B math/genprimes +[ +.IR lim +] +.br +.B math/mersenne +[ +.IR num +] +.br +.B math/parts +[ +.B -a +] +[ +.IR num ... +] +.br +.B math/perms +[ +.IR n +] +.br +.B math/pi +[ +.IR dp +] +.br +.B math/powers +[ +.B -p num +] +[ +.B -n num +] +[ +.B -f num +] +[ +.B -l num +] +[ +.B -m num +] +[ +.B -v +] +.br +.B math/primes +[ +.IR m +] +[ +.IR n +] +.br +.B math/sieve +[ +.B -a alg +] +[ +.IR lim +] +.SH DESCRIPTION +A collection of simple mathematical utilities. +.PP +.TP +.B math/ack +Calculates and times Ackermann's function A(m, n). +.TP +.B math/crackerbarrel +Solves the crackerbarrel puzzle +.B n +times and outputs the time taken. See the source for details of the puzzle. +.TP +.B math/factor +Factors the number n. +.TP +.B math/fibonacci +Generates the first few terms of the Fibonacci series using recursion +and user defined exceptions. +.TP +.B math/fit +Fits a polynomial of degree +.I deg +to a set of points (x, y) where x is the independent variable, y the dependent one. +All x and y values should be seperated by white space +and can be real or integer. The values are read from +.IR file +or standard input if none is given. The +.B -v +option prints a table of actual and expected y values. +.TP +.B math/genprimes +Generates primes numbers up to and including +.B lim +using spawned processes and buffered channels. +.TP +.B math/mersenne +Tests the primality of the Mersenne numbers ie numbers of the form 2^n-1. +The argument +.IR num +is the power of 2 in the above. +.TP +.B math/parts +Calculates the number of partitions of the given number(s). The +.B -a +option will print out a table of the number of partitions of all numbers up to the +given number(s). +.TP +.B math/perms +Prints out all permutations of +.B n +elements. +.TP +.B math/pi +Calculates the value of pi to +.B dp +decimal places. +.TP +.B math/powers +Investigates the number of representations of an integer as a sum of +powers. +The +.B -p +option denotes the power of use (default 2). The +.B -n +option denotes the number of powers to sum (default 2). The +.B -f +option denotes the minimum number of such representations found before +reporting them (default 2). The +.B -l +and +.B -m +options denote the smallest and largest numbers to consider respectively (defaults 0 and 8192). Finally the +.B -v +option prints various statistics during the search. +.TP +.B math/primes +Prints out all primes between +.B m +and +.B n . +.TP +.B math/sieve +Prints out prime numbers up to +.B lim +using a sieve algorithm. The +.B -a +option indicates the level of sophistication of the algorithm (0-4). +.PP +.SH EXAMPLE +.EX + + math/powers -p 3 -m 30000 +gives + [2] 1729 = 1**3 + 12**3 = 9**3 + 10**3 + [2] 4104 = 2**3 + 16**3 = 9**3 + 15**3 + [2] 20683 = 10**3 + 27**3 = 19**3 + 24**3 +The number of representations found for each integer is indicated in +square brackets. +.EE +.SH SOURCE +.B /appl/math/ack.b +.br +.B /appl/math/crackerbarrel.b +.br +.B /appl/math/factor.b +.br +.B /appl/math/fibonacci.b +.br +.B /appl/math/fit.b +.br +.B /appl/math/genprimes.b +.br +.B /appl/math/mersenne.b +.br +.B /appl/math/parts.b +.br +.B /appl/math/perms.b +.br +.B /appl/math/pi.b +.br +.B /appl/math/powers.b +.br +.B /appl/math/primes.b +.br +.B /appl/math/sieve.b diff --git a/man/1/mathcalc b/man/1/mathcalc new file mode 100644 index 00000000..913ec71e --- /dev/null +++ b/man/1/mathcalc @@ -0,0 +1,97 @@ +.TH MATHCALC 1 +.SH NAME +mathcalc \- interface to a TclLib calculator module +.SH SYNOPSIS +.B mathcalc +.SH DESCRIPTION +.I Mathcalc +reads simple expressions from the standard input, evaluates them, +and prints the results on the standard output. +It is a command line interface to a +.L TclLib +calculator module. +It prompts the user +.RL ( calc% ) +for each line, and +exits on end-of-file or on reading a line containing +.RB ` quit '. +.PP +Values are either integer or floating-point constants. +A floating-point constant has a decimal point, an exponent, or both. +Integer constants are taken as hexadecimal if they start +.BR 0x , +octal if they start with +.BR 0 , +and otherwise decimal. +.PP +Expressions are formed using the following C-like operators +and predefined functions, shown in order of decreasing priority: +.TP +.B - + ! ~ +unary: negate, plus (no-op); logical not and one's complement (integers only) +.TP +.B * / % +multiply and divide, integer remainder +.TP +.B + - +add, subtract +.TP +.B << >> +left shift, right shift (integers only) +.TP +.B < <= >= > +relational operators +.TP +.B == != +equality, inequality +.TP +.B & +bit-wise and (integer only) +.TP +.B ^ +bit-wise exclusive-OR (integer only) +.TP +.B | +bit-wise or (integer only) +.TP +.B && +logical and +.TP +.B || +logical or +.TP +.IB a ? b : c +conditional: if +.I a +is non-zero, the result is +.IR b , +otherwise +.I c +.PP +.I Mathcalc +provides the following mathematical functions: +.IP +.EX +.ta +\w'hypot\ \ 'u +abs ceil fmod sin +acos cos hypot sinh +asin cosh log sqrt +atan exp log10 tan +atan2 floor pow tanh +.EE +.PP +See +.IR math-elem (2) +for the usual definitions. +.SH SOURCE +.B /appl/cmd/mathcalc.b +.br +.B /appl/lib/tcl_calc.b +.SH DIAGNOSTICS +.TF ARGXXX +.TP +.B ARRG! +bad constant syntax +.TP +.B Error! +bad expression syntax, or any other error diff --git a/man/1/mc b/man/1/mc new file mode 100644 index 00000000..3218b323 --- /dev/null +++ b/man/1/mc @@ -0,0 +1,272 @@ +.TH MC 1 +.SH NAME +mc \- interactive floating point mathematics calculator +.SH SYNOPSIS +.B mc +[ +.B -s +] [ +.I file +] +.PP +.B mc +[ +.B -s +] [ +.I expression +] +.SH DESCRIPTION +.I Mc +interprets a simple language for floating point arithmetic +with limbo-like syntax and +functions. +.PP +If no +.I file +or +.I expression +is given +.I mc +interprets the standard input. +.PP +.I Mc +input consists of +.I expressions +and +.IR statements . +Expressions are evaluated and their results printed. +Statements, typically assignments and function +definitions, produce no output unless they explicitly call +.IR print . +.PP +Comments begin with # and extend to the end of the line as in limbo. +.PP +Numbers may have a base specified using C or limbo syntax. +.PP +Variable names have the usual syntax, including +.LR _ . +They may be introduced without a declaration and have an initial default value +of 0.0. +.PP +The predefined variable +.B degrees +can be set to specify angles in degrees rather than radians in the trigonometric functions below. It is initially 0 (angles in radians by default). +.PP +The predefined variable +.B printbase +can be set to any integer between 2 and 36 inclusive to specify +the base of all values output. +.PP +The constants +.BR e , +.BR Pi (π) , +.BR Phi (φ) , +.BR Gamma (γ) , +.BR Infinity (∞) , +and +.BR Nan (NaN) +are predefined. +.PP +Expressions are formed with these limbo-like operators, listed by +decreasing precedence. +.TP +.B ! ~ + - ++ -- +.TP +.B ** +.TP +.B * / % // +.TP +.B + - +.TP +.B << >> +.TP +.B > >= < <= <-> +.TP +.B == != -> <- +.TP +.BR & " " " " ↑ +.TP +.B ^ +.TP +.BR | " " " " ↓ +.TP +.B && +.TP +.B || +.TP +.B ? : +.TP +.B = := += -= *= /= %= //= &= ^= |= <<= >>= +.TP +.B , +.PP +If the +.B -s +flag is given, a strict interpretation of the declaration rules are enforced - all variables must be declared and initialized first using the +.B := +operator. Otherwise undeclared variables are declared and initialized to 0.0 in the +current scope. In either case, +.B := +always forces a new declaration. +.PP +The extra non-limbo operators are factorial (! when postfix), integer division (//), +conditional (? and :) comma (,), logical equivalence (<->), implication (->), reverse implication (<-), nand (↑) and nor (↓). +.PP +Unary operators, assignment operators, **, ? and : are right associative as usual. +.PP +The comma operator may be replaced by white space in expressions. +.PP +Built in functions are +.BR abs , +.BR acos , +.BR acosh , +.BR asin , +.BR asinh , +.BR atan , +.BR atanh , +.BR atan2 , +.BR cbrt , +.BR ceiling , +.BR cos , +.BR cosh , +.BR erf , +.BR exp , +.BR floor , +.BR frac , +.BR gamma (Γ) , +.BR int , +.BR log , +.BR log10 , +.BR max , +.BR min , +.BR pow , +.BR rand , +.BR round , +.BR sign , +.BR sin , +.BR sinh , +.BR sqrt , +.BR tan , +and +.BR tanh . +.PP +Functions of one argument may be written without brackets: +.sp +.EX + sin 45 + sqrt 2 +.EE +.sp +These behave as unary operators with the highest precedence. +.PP +Sum and product operators are available using sigma (Σ) and pi (Π). +For example +.sp +.EX + sigma(i = 0, 100, 1/i!) +.EE +.sp +gives the value 2.7182818284590455 . +.PP +Simple definite integration can be done :- +.sp +.EX + integral(x = -1.96, 1.96, exp(-0.5*x*x)/sqrt(2*Pi)) +.EE +.sp +outputs 0.9500042096998785 . +∫ may be used in place of integral. +.PP +For the sake of completeness, the derivative of a function at a given +point can be calculated :- +.sp +.EX + differential(x=1, x*x+5*x+6) +.EE +.sp +gives 7. +Δ may be used in place of differential. +.PP +There is limited support for the solution of equations. +For example +.sp +.EX + solve(x**2-5*x+6==0) +.EE +.sp +outputs the values 2 and 3. The value returned by +.B solve +is the largest of the roots. To specify the variable to solve for, if +ambiguous, simply add it as a second parameter as in, for example, +.sp +.EX + solve(x**2-5*x+6==y**3+z, x) +.EE +.sp +This will substitute the current values of +.B y +and +.B z +and solve for +.B x. +To tune the solution process, the predefined variables +.B solvelimit +(default value 100) and +.B solvestep +(default value 1) are available. +The former specifies the maximum absolute solution +to search for. The latter +specifies the interval increment to apply when searching +for sign changes. +.PP +.B Print +prints a list of expressions that may include +string constants such as +\fL"hello\en"\f1.\fP +.PP +.B Read +reads in a list of values interactively. The list of variables to assign +these values should follow. +.PP +Other files may be read in using the limbo include statement. +.PP +Control flow statements are +.BR break , +.BR continue , +.BR exit , +.BR return , +.BR if - else , +.BR while , +.BR do - while , +and +.BR for , +with braces for grouping. +.PP +The use of semi-colon and newline is optional. +.PP +Functions are introduced by the keyword +.BR fn . +.SH EXAMPLE +.EX +fn ack(a, b) +{ + n = n+1 + if(a == 0) + return b+1; + if(b == 0) + return ack(a-1, 1); + return ack(a-1, ack(a, b-1)); +} + +for(i = 0; i < 4; i++) + for(j = 0; j < 4; j++){ + n = 0 + print "ack(", i, ",", j, ")=", ack(i, j), "\n" + print n, " calls", "\n" + } +.EE +.SH SOURCE +.B /appl/cmd/mc.b +.SH "SEE ALSO" +.IR fc (1), +.IR math (2) diff --git a/man/1/mdb b/man/1/mdb new file mode 100644 index 00000000..c25c78c1 --- /dev/null +++ b/man/1/mdb @@ -0,0 +1,208 @@ +.TH MDB 1 +.SH NAME +mdb - binary file editor +.SH SYNOPSIS +.B mdb +[ +.B -w +] +.I file +[ +.I command +] +.SH DESCRIPTION +.I Mdb +allows inspection of the contents +of +.IR file . +If the +.B -w +option is given, then modification of the contents is also +allowed. +.I Mdb +accepts commands of the form +.IP +.RI [ address ] +.RB [ , +.IR count ] +.RI [ command ] +.PP +If a +.I command +is given as an argument, then +.I mdb +will execute that command, otherwise +it will read and execute commands from the standard input. +If +.I address +is present then the current position, called `dot', is +set to +.IR address. +Initially dot is set to 0. +.I Command +is repeated +.I count +times with dot advancing between repetitions. The default +count is 1. +.I Address +and +.I count +are expressions. +.SS Expressions +Expressions take one of the following forms: +.TP 10 +\&. +The value of dot. +.TP ++ +The value of dot. +.TP +^ +The value of dot. +.TP +" +The value of the last address typed. +.TP +.I integer +A number, decimal by default. A +.RB ` 0 ' +prefix causes +it to be interpreted as octal; a +.RB ` 0x ' +prefix causes it to be interpreted as hexadecimal. +.TP +.BI ( expr ) +The value of the expression +.IR expr . +.PP +.I Operators +.RS +.TP +.IB e1 + e2 +Integer addition. +.TP +.IB e1 - e2 +Integer subtraction. +.TP +.IB e1 * e2 +Integer multiplication. +.TP +.IB e1 % e2 +Integer division. (N.B. +.I not +modulus). +.TP +.IB e1 | e2 +Bitwise disjunction. +.TP +.IB e1 & e2 +Bitwise conjunction. +.RE +.SS Commands +Commands have the following syntax: +.TP +.BI / f +Locations starting at +.I address +in +.I file +are printed according to the format +.IR f . +.TP +.BI ? f +Same as +.RB ` / '. +.TP +.BI = f +The value of +.I address +itself is printed according to the format +.IR f . +.PP +A +.I format +consists of one or more characters that specify +a style of printing. Each +.I format +fetches some data, prints it, and if the +.I command +is not +.RB ` = ', +advances dot by the amount of data fetched. +All data is assumed to be held in little-endian +form (least significant byte first). +.RS +.TP +.PD 0 +.B o +Print a two-byte integer in octal. +.TP +.B O +Print a four-byte integer in octal. +.TP +.B d +Print a two-byte integer in decimal. +.TP +.B D +Print a four-byte integer in decimal. +.TP +.B u +Print a two-byte integer in unsigned decimal. +.TP +.B U +Print a four-byte integer in unsigned decimal. +.TP +.B b +Print a single byte in hexadecimal. +.TP +.B x +Print a two-byte integer in hexadecimal. +.TP +.B X +Print a four-byte integer in hexadecimal. +.TP +.B n +Prints a newline. No data is fetched. +.TP +.B + +Increments dot by 1. No data is printed. +.TP +.B - +Decrements dot by 1. No data is printed. +.TP +.B ^ +Increments dot by the size of the last format encountered. +.TP +.B c +Prints a single byte as a character. +.TP +.B C +Prints a single byte as a printable character, converting +it to backslash escaped hex if necessary. +.RE +.PD +There are two other commands: +.TP 10 +.RB [ ?/ ] w\ \fIvalue\fP +Write the two-byte +.I value +to the addressed location. +.TP +.RB [ ?/ ] W\ \fIvalue\fP +Write the four-byte +.I value +to the addressed location. +.SH SOURCE +.B /appl/cmd/mdb.b +.SH BUGS +Most of the more useful features of +.IR mdb 's +antecedent +.I db +are unimplemented. +.PP +It is not possible to print strings or UTF-8 characters. +.PP +As there is no ``native'' word format in Inferno, +the assumption that all words are little-endian is hard +to justify. diff --git a/man/1/miniterm b/man/1/miniterm new file mode 100644 index 00000000..1a1b0381 --- /dev/null +++ b/man/1/miniterm @@ -0,0 +1,142 @@ +.TH MINITERM 1 +.SH NAME +miniterm \- Minitel® emulator +.SH SYNOPSIS +.B wm/minitel/miniterm +[ +.I address +] +.SH DESCRIPTION +.I Miniterm +connects to the Minitel® service at the given +.IR address , +by default the France Telecom Internet gateway +to its Minitel® service, +.BR tcp!pdc.minitelfr.com!513 . +The +.I address +can be any form acceptable to +.IR dial (2). +.I Miniterm +opens a new window that mimics a Minitel display. +An array of buttons on the right hand side (in 40 character mode) +or bottom (in 80 character mode) offer the special Minitel functions, +with French abbreviations. +Characters typed on the keyboard are sent to the server; +typing the return key acts as +.B Suite +or +.B Envoi +as required. +Clicking on a word with the mouse sends it to the server. +.PP +The France Telecom gateway offers a demonstration service +using ID +.B ZXNET1 +with password +.BR DEMFTD . +Once connected, the services +.B PAGESM +(a directory of all Minitel services) and +.B FT +(France Telecom's information service) +are available without charge. +See +.B www.minitelfr.com +for further information. +.PP +On certain native Inferno hardware, +.I miniterm +can also connect directly via a modem connection, using +an address of the form +.BI modem! modeminit ! number, +which sends the string +.I modeminit +to the modem to initialise it, +then dials the given +.IR number . +For example: +.IP +.EX +wm/minitel/miniterm modem!F3!00133836431414 +.EE +.PP +Here, the +.L F3 +is a code that tells the modem to enable V.23, which must be used when +connecting to the France Telecom servers. +To use pulse dialing instead of tone dialing the phone number +can be prefixed with a +.LR P , +as in: +.IP +.EX +wm/minitel/miniterm modem!F3!P3614 +.EE +.PP +If the parameter specifies a network connection or a direct connection +with a phone number the software will attempt to connect immediately. +If the on-screen button +.B Cx/Fin +is used to disconnect and then re-connect, +.I miniterm +will use the +same address if it is a network connection but prompt for a new +phone number for a direct connection. When prompting +for a new number the top row of the screen is used to allow the user +to edit the last used number. Simple editing is available, and the minitel +keys do the obvious things. +.PP +The Minitel function keys are displayed on the right hand side of the screen +in 40 column mode on a network connection +and can be swapped to the left hand side by hitting the +.L <- +key. +In direct dial mode and 80 column network mode the keys are +displayed at the bottom of the screen. +In network mode they are redisplayed as appropriate on 40 to 80 +column mode changes. +.PP +.I Miniterm +provides a software keyboard, activated by the +.B Clavier +button, which understands some of +the Minitel keyboard mappings. For example, hitting +.RB ` A ' +results +in a capital +.L A +on the screen in spite of the Videotex case mapping. +.SH FILES +.TF /fonts/minitel +.TP +.B /dev/modem +soft modem (no longer supported) +.TP +.B /dev/modemctl +.TP +.B /fonts/minitel +text and semigraphic characters +.SH SOURCE +.B /appl/wm/miniterm +.SH SEE ALSO +.IR charon (1), +.IR telnet (1) +.SH BUGS +There is no button to control use of error correction in direct dial mode; +it will be enabled only if the server requests it, but not all do. +Without it direct dial screens are occasionally corrupted. +.PP +The software keyboard is not AZERTY. +Worse, it does not always come to the top on a mode change. +.PP +Some screens look wrong in 80 column +mode. +.PP +On a network connection, choosing +.B USA +displays +.LR iC +at the bottom left hand +corner of the screen. The server really is sending this sequence. +Both the FT emulator and their explorer plug-in suffer from it too. diff --git a/man/1/mk b/man/1/mk new file mode 100644 index 00000000..eae9cccb --- /dev/null +++ b/man/1/mk @@ -0,0 +1,586 @@ +.TH MK 1 +.SH NAME +mk \- maintain (make) related files +.SH SYNOPSIS +.B mk +[ +.B -f +.I mkfile +] ... +[ +.I option ... +] +[ +.I target ... +] +.SH DESCRIPTION +.I Mk +uses the dependency rules specified in +.I mkfile +to control the update (usually by compilation) of +.I targets +(usually files) +from the source files upon which they depend. +The +.I mkfile +(default +.LR mkfile ) +contains a +.I rule +for each target that identifies the files and other +targets upon which it depends and a +.IR sh (1) +script, a +.IR recipe , +to update the target. +The script is run if the target does not exist +or if it is older than any of the files it depends on. +.I Mkfile +may also contain +.I meta-rules +that define actions for updating implicit targets. +If no +.I target +is specified, the target of the first rule (not meta-rule) in +.I mkfile +is updated. +.PP +The environment variable +.B $NPROC +determines how many targets may be updated simultaneously; + the default value is 1. +.PP +Options are: +.TP \w'\fL-d[egp]\ 'u +.B -a +Assume all targets to be out of date. +Thus, everything is updated. +.PD 0 +.TP +.BR -d [ egp ] +Produce debugging output +.RB ( p +is for parsing, +.B g +for graph building, +.B e +for execution). +.TP +.B -e +Explain why each target is made. +.TP +.B -i +Force any missing intermediate targets to be made. +.TP +.B -k +Do as much work as possible in the face of errors. +.TP +.B -n +Print, but do not execute, the commands +needed to update the targets. +.TP +.B -s +Make the command line arguments sequentially rather than in parallel. +.TP +.B -t +Touch (update the modified date of) file targets, without +executing any recipes. +.TP +.BI -w target1 , target2,... +Pretend the modify time for each +.I target +is the current time; useful in conjunction with +.B -n +to learn what updates would be triggered by +modifying the +.IR targets . +.PD +.SS The mkfile +A +.I mkfile +consists of +.I assignments +(described under `Environment') and +.IR rules . +A rule contains +.I targets +and a +.IR tail . +A target is a literal string +and is normally a file name. +The tail contains zero or more +.I prerequisites +and an optional +.IR recipe , +which is a +.B sh +script. +Each line of the recipe must begin with white space. +A rule takes the form +.IP +.EX +target: prereq1 prereq2 + sh \f2recipe using\fP prereq1, prereq2 \f2to build\fP target +.EE +.PP +When the recipe is executed, +the first character on every line is elided. +.PP +After the colon on the target line, a rule may specify +.IR attributes , +described below. +.PP +A +.I meta-rule +has a target of the form +.IB A % B +where +.I A +and +.I B +are (possibly empty) strings. +A meta-rule acts as a rule for any potential target whose +name matches +.IB A % B +with +.B % +replaced by an arbitrary string, called the +.IR stem . +In interpreting a meta-rule, +the stem is substituted for all occurrences of +.B % +in the prerequisite names. +In the recipe of a meta-rule, the environment variable +.B $stem +contains the string matched by the +.BR % . +For example, a meta-rule to compile a limbo program anmd install it +might be: +.IP +.EX +%.dis: %.b + limbo $stem.b + cp $stem.dis /dis +.EE +.PP +Meta-rules may contain an ampersand +.B & +rather than a percent sign +.BR % . +A +.B % +matches a maximal length string of any characters; +an +.B & +matches a maximal length string of any characters except period +or slash. +.PP +The text of the +.I mkfile +is processed as follows. +Lines beginning with +.B < +followed by a file name are replaced by the contents of the named +file. +Blank lines and comments, which run from unquoted +.B # +characters to the following newline, are deleted. +The character sequence backslash-newline is deleted, +so long lines in +.I mkfile +may be folded. +Non-recipe lines are processed by substituting for +.BI `{ command } +the output of the +.I command +when run by +.IR sh . +References to variables are replaced by the variables' values. +Special characters may be quoted using single quotes +.BR \&'' +as in +.IR sh (1). +.PP +Assignments and rules are distinguished by +the first unquoted occurrence of +.B : +(rule) +or +.B = +(assignment). +.PP +A later rule may modify or override an existing rule under the +following conditions: +.TP +\- +If the targets of the rules exactly match and one rule +contains only a prerequisite clause and no recipe, the +clause is added to the prerequisites of the other rule. +If either or both targets are virtual, the recipe is +always executed. +.TP +\- +If the targets of the rules match exactly and the +prerequisites do not match and both rules +contain recipes, +.I mk +reports an ``ambiguous recipe'' error. +.TP +\- +If the target and prerequisites of both rules match exactly, +the second rule overrides the first. +.SS Environment +Rules may make use of +.B sh +environment variables. +A legal reference of the form +.B $OBJ +or +.B ${name} +is expanded as in +.IR sh (1). +A reference of the form +.BI ${name: A % B = C\fL%\fID\fL}\fR, +where +.I A, B, C, D +are (possibly empty) strings, +has the value formed by expanding +.B $name +and substituting +.I C +for +.I A +and +.I D +for +.I B +in each word in +.B $name +that matches pattern +.IB A % B\f1. +.PP +Variables can be set by +assignments of the form +.I + var\fL=\fR[\fIattr\fL=\fR]\fIvalue\fR +.br +Blanks in the +.I value +break it into words, as in +.I sh +but without the surrounding parentheses. +Such variables are exported +to the environment of +recipes as they are executed, unless +.BR U , +the only legal attribute +.IR attr , +is present. +The initial value of a variable is +taken from (in increasing order of precedence) +the default values below, +.I mk's +environment, the +.IR mkfiles , +and any command line assignment as an argument to +.IR mk . +A variable assignment argument overrides the first (but not any subsequent) +assignment to that variable. +The variable +.B MKFLAGS +contains all the option arguments (arguments starting with +.L - +or containing +.LR = ) +and +.B MKARGS +contains all the targets in the call to +.IR mk . +.PP +Dynamic information may be included in the mkfile by using a line of the form +.I + \fR<| \fIcommand\fR \fIargs\fR +.br +This runs the command +.I command +with the given arguments +.I args +and pipes its standard output to +.I mk +to be included as part of the mkfile. For instance, the file +.B /os/sa1100/mkfile +uses this technique +to run a shell command with an awk script and a configuration file as arguments in order for +the +.I awk +script to process the file and output a set of variables and their values. +.SS Execution +.PP +During execution, +.I mk +determines which targets must be updated, and in what order, +to build the +.I names +specified on the command line. +It then runs the associated recipes. +.PP +A target is considered up to date if it has no prerequisites or +if all its prerequisites are up to date and it is newer +than all its prerequisites. +Once the recipe for a target has executed, the target is +considered up to date. +.PP +The date stamp +used to determine if a target is up to date is computed +differently for different types of targets. +If a target is +.I virtual +(the target of a rule with the +.B V +attribute), +its date stamp is initially zero; when the target is +updated the date stamp is set to +the most recent date stamp of its prerequisites. +Otherwise, if a target does not exist as a file, +its date stamp is set to the most recent date stamp of its prerequisites, +or zero if it has no prerequisites. +Otherwise, the target is the name of a file and +the target's date stamp is always that file's modification date. +The date stamp is computed when the target is needed in +the execution of a rule; it is not a static value. +.PP +Nonexistent targets that have prerequisites +and are themselves prerequisites are treated specially. +Such a target +.I t +is given the date stamp of its most recent prerequisite +and if this causes all the targets which have +.I t +as a prerequisite to be up to date, +.I t +is considered up to date. +Otherwise, +.I t +is made in the normal fashion. +The +.B -i +flag overrides this special treatment. +.PP +Files may be made in any order that respects +the preceding restrictions. +.PP +A recipe is executed by supplying the recipe as standard input to +the command +.B + $SHELL -e -I +.br +where the +.I SHELL +variable is the appropriate shell on the current platform - typically +.B /dis/sh +. +The appropriate value is automatically supplied in the Inferno build environment. +The +.B -e +is omitted if the +.B E +attribute is set. +The environment is augmented by the following variables: +.TP 14 +.B $alltarget +all the targets of this rule. +.TP +.B $newprereq +the prerequisites that caused this rule to execute. +.TP +.B $nproc +the process slot for this recipe. +It satisfies +.RB 0≤ $nproc < $NPROC . +.TP +.B $pid +the process id for the +.I mk +executing the recipe. +.TP +.B $prereq +all the prerequisites for this rule. +.TP +.B $stem +if this is a meta-rule, +.B $stem +is the string that matched +.B % +or +.BR & . +Otherwise, it is empty. +For regular expression meta-rules (see below), the variables +.LR stem0 ", ...," +.L stem9 +are set to the corresponding subexpressions. +.TP +.B $target +the targets for this rule that need to be remade. +.PP +These variables are available only during the execution of a recipe, +not while evaluating the +.IR mkfile . +.PP +Unless the rule has the +.B Q +attribute, +the recipe is printed prior to execution +with recognizable environment variables expanded. +Commands returning error status +cause +.I mk +to terminate. +.PP +Recipes and backquoted +.B sh +commands in places such as assignments +execute in a copy of +.I mk's +environment; changes they make to +environment variables are not visible from +.IR mk . +.PP +Variable substitution in a rule is done when +the rule is read; variable substitution in the recipe is done +when the recipe is executed. For example: +.IP +.EX +bar=a.b +foo: $bar + limbo -o foo $bar +bar=b.b +.EE +.PP +will compile +.B b.b +into +.BR foo , +if +.B a.b +is newer than +.BR foo . +.SS Aggregates +Names of the form +.IR a ( b ) +refer to member +.I b +of the aggregate +.IR a . +Currently, there are no aggregates supported under Inferno. +.SS Attributes +The colon separating the target from the prerequisites +may be +immediately followed by +.I attributes +and another colon. +The attributes are: +.TP +.B < +The standard output of the recipe is read by +.I mk +as an additional +.IR mkfile . +.PD 0 +.TP +.B D +If the recipe exits with a non-null status, the target is deleted. +.TP +.B E +Continue execution if the recipe draws errors. +.TP +.B N +If there is no recipe, the target has its time updated. +.TP +.B n +The rule is a meta-rule that cannot be a target of a virtual rule. +Only files match the pattern in the target. +.TP +.B P +The characters after the +.B P +until the terminating +.B : +are taken as a program name. +It will be invoked as +.B "sh -c prog 'arg1' 'arg2'" +and should return a null exit status +if and only if arg1 is not out of date with respect to arg2. +Date stamps are still propagated in the normal way. +.TP +.B Q +The recipe is not printed prior to execution. +.TP +.B R +The rule is a meta-rule using regular expressions. +In the rule, +.B % +has no special meaning. +The target is interpreted as a regular expression as defined in +.IR regexp (6). +The prerequisites may contain references +to subexpressions in form +.BI \e n\f1, +as in the substitute command of +.IR sed (1). +.TP +.B U +The targets are considered to have been updated +even if the recipe did not do so. +.TP +.B V +The targets of this rule are marked as virtual. +They are distinct from files of the same name. +.PD +.SH EXAMPLES +A simple mkfile to compile and install limbo programs: +.IP +.EX +O=dis +prog: a.$O b.$O c.$O + cp $prereq /dis + +%.$O: %.b + limbo $stem.b +.EE +.PP +String expression variables to derive names from a master list: +.IP +.EX +NAMES=alloc arc bquote builtins expand main match mk var word +OBJ=${NAMES:%=%.$O} +.EE +.PP +Regular expression meta-rules: +.IP +.EX +([^/]*)/(.*)\e.dis:R: \e1/\e2.b + cd $stem1; limbo $stem2.b +.EE +.SH SOURCE +.B /appl/cmd/mk +.SH SEE ALSO +.IR sh (1), +.IR regexp (6) +.br +A. Hume, +``Mk: a Successor to Make''. +.br +Bob Flandrena, +``Plan 9 Mkfiles''. +.SH BUGS +Identical recipes for regular expression meta-rules only have one target. +.br +The recipes printed by +.I mk +before being passed to +.I sh +for execution are sometimes erroneously expanded +for printing. Don't trust what's printed; rely +on what +.I sh +does. diff --git a/man/1/mkdir b/man/1/mkdir new file mode 100644 index 00000000..77641845 --- /dev/null +++ b/man/1/mkdir @@ -0,0 +1,49 @@ +.TH MKDIR 1 +.SH NAME +mkdir \- make a directory +.SH SYNOPSIS +.B mkdir +[ +.B -p +] +[ +.I dirname ... +] +.SH DESCRIPTION +.I Mkdir +creates the specified directories. It requires write permission in the parent directory. +.PP +The +.B -p +option causes +.I mkdir +to create the whole path +.IR dirname , +including any missing parent directories; it also will not +complain if +.I dirname +already exists and is a directory. +.PP +The new directories are created with permissions starting with +.B 8r777 +but masked with the permissions of the parent directory according to the +procedure followed by +.IR sys-open (2). +For example, if the parent directory lacks write permission for group +and has no permissions for others, +so will the newly created directory. +.SH SOURCE +.B /appl/cmd/mkdir.b +.SH "SEE ALSO" +.IR chmod (1), +.IR cd (1), +.IR rm (1), +.IR sys-open (2) +.SH DIAGNOSTICS +If any directory cannot be created successfully, +.I mkdir +prints a warning, and continues with any remaining directories, +but returns +.B +\&"error" +exit status at the end. diff --git a/man/1/mprof b/man/1/mprof new file mode 100644 index 00000000..a56e209b --- /dev/null +++ b/man/1/mprof @@ -0,0 +1,173 @@ +.TH MPROF 1 +.SH NAME +mprof, wm/mprof \- memory profiling limbo programs +.SH SYNOPSIS +.B mprof +[ +.B -bcMflnve123 +] [ +.BI -m " modname" +] ... +[ +.BI "cmd arg ..." +] +.PP +.B wm/mprof +[ +.B -e12 +] [ +.BI -m " modname" +] ... +[ +.BI "cmd arg ..." +] +.PP +.SH DESCRIPTION +.I Mprof +is a simple memory profiling tool which calculates the amount of main, heap and image memory +used on a +particular line of limbo source or in a particular limbo function or module. The main memory +in question covers the space taken by dis code, jit code, runtime stacks and dynamic C module text, data and relocation areas. The heap memory covers all other limbo data structures. The source in +question should be compiled with the +.B -g +flag so that the relevant symbol table files exist. In its simplest form, the memory +profiler shows a line number, the current memory in bytes allocated +when executing this line, the high water memory in bytes allocated when executing +this line and the limbo source. This information is also available at the function and +module level. +.PP +The tk version of the profiler +.I wm/mprof +shows this information in a text widget and colours the lines of source according +to the amount of memory allocated by the line. The darker the colour, the +more memory used. +.PP +The +.B -b +option starts profiling. +.PP +The +.B -c +option clears all profiling statistics and state in the memory profiling device. If any commands are specified to +.B mprof +, this is done automatically. It's specific +use is to end the accumulation of statistics when profiling interactively. See the +example below. +.PP +The +.B -M +option shows the memory statistics for each module +The +.B -f +option shows the memory statistics for each function. +.PP +The +.B -l +option shows the memory statistics for each line. If neither this option nor the +.B -M +and +.B -f +options are given, +.B -M +and +.B -l +are assumed. +.PP +The +.B -n +option lists the name of the file along with the line number. +.PP +The +.B -v +option outputs all functions and/or lines even when they do not involve memory +allocating or freeing operations. +.PP +The +.B -m +option lists the module names which are to be profiled. If none are given, all the +modules loaded by the kernel will be profiled. The name may be the actual name of +the module or its path name. +.PP +The +.B -e +option profiles the module that is loaded first in any following command. In this case +there is no need to give a +.B -m +option as this is added automatically. +.PP +The +.B -1 +option profiles only main memory (pool number 1 in the kernel). The default is +to profile main, heap and image memory. +.PP +The +.B -2 +option profiles only heap memory (pool number 2 in the kernel). The default is +to profile main, heap and image memory. +.PP +The +.B -3 +option profiles only image memory (pool number 3 in the kernel). The default is +to profile main, heap and image memory. +.PP +Any remaining arguments are assumed to +specify a command and set of arguments to the command. If this is the case, +.B mprof +will automatically start profiling, run the command to completion and then +stop profiling before showing the profile statistics. +.PP +.B Mprof +displays the profile statistics (unless the +.B -b +option is being used) according to the output format required. +.PP +.SH EXAMPLE +.EX +To profile a particular command + mprof /dis/math/parts 10000 + wm/mprof /dis/math/parts 10000 +To profile the same command but restrict attention to its own module (Partitions). + mprof -m Partitions /dis/math/parts 10000 + wm/mprof -m Partitions /dis/math/parts 10000 +A shorter version of the above + mprof -e /dis/math/parts 10000 + wm/mprof -e /dis/math/parts 10000 +To profile interactively + mprof -b -m Polyhedra + wm/polyhedra & + mprof -M -f -l -n + <interact with wm/polyhedra ...> + mprof -M -f -l -n + wm/mprof + mprof -c +.EE +.PP +Note that the output format options ( +.B -M +, +.B -f +, +.B -l +, +.B -n +, +.B -v +) are ignored when +.B -b +is present. +.SH SOURCE +.B /appl/cmd/mprof.b +.PP +.B /appl/wm/mprof.b +.SH BUGS +Can take quite a time to present statistics when profiling all modules in the +system. +.SH SEE ALSO +.IR cprof (1), +.IR wm-cprof (1), +.IR prof (2), +.IR prof (3) + + + + diff --git a/man/1/mux b/man/1/mux new file mode 100644 index 00000000..4fc8c85f --- /dev/null +++ b/man/1/mux @@ -0,0 +1,149 @@ +.TH MUX 1 +.SH NAME +mux \- interactive television demo +.SH SYNOPSIS +.B mux/mux +.SH DESCRIPTION +.I Mux +is a standalone application environment run from the Inferno console +in +.IR emu (1) +or started +automatically by +.IR init (8) +in a native environment. +It directly uses the +.IR draw (3) +device and either keyboard or Infrared, +and cannot be run under +.IR wm (1). +It is included in this release only as an example of the use of the Prefab graphics +module described by +.IR prefab-intro (2). +The simpler style of graphics and interaction provided by Prefab and +demonstrated by +.I mux +might be more appropriate than Tk +on devices that use infrared remote control +for interaction, such as televisions, +or devices with limited screen space, such as pocket devices or portable telephones. +.SS Configuration +.I Mux +produces a menu derived from the configuration file +.BR /services/basic . +Each line in the file has three fields, separated by +.BR : , +of the following form: +.IP +.IB icon : app : label +.PP +The +.I icon +is the name of a bitmap file to displayed in the menu alongside the textual +.I label +(which is the rest of the line). +When the item is selected, as described below, +.I mux +runs the Dis file +.IP +.BI /dis/mux/ app .dis +.SS Applications +The following applications are available: +.TF audioctl +.TP +.B fnn +Financial reports: +a scrolling `ticker tape' along the bottom of the screen. +.TP +.B movie +Movies: select a film from a menu of categories +.TP +.B news +Today's Newspaper: on-screen newspapers +.TP +.B tv +Television +.TP +.B tvlist +TV Timetable +.TP +.B pizza +Order Pizza +.TP +.B email +Internet mail +.TP +.B web +Internet Web Browser: simplistic web browser +.TP +.B register +Register with a service provider +.TP +.B ovid +Presentations +.TP +.B audioctl +Audio Control +.PD +.PP +.SS Interaction +.I Mux +can be controlled using an infrared device, but for demonstration purposes +under +.IR emu (1) +the infrared is emulated using the keyboard (see +.IR ir (2)). +The following are the common controls: +.TF newline +.TP +.B r +channel up +.TP +.B c +channel down +.TP +.B t +volume up +.TP +.B v +volume down +.TP +.B i +cursor up +.TP +.B m +cursor down +.TP +.B j +cursor left; rewind +.TP +.B k +cursor right; fast forward +.TP +.B x +return to main menu leaving application running; recall +.TP +.B newline +select item +.TP +.B space +exit and return to the previous screen or menu +.SH FILES +.B /services/basic +.br +.B /icons/*.bit +.SH SOURCE +.B /appl/mux +.SH SEE ALSO +.IR wm (1), +.IR ir (2), +.IR prefab-intro (2), +.IR virgil (2), +.IR manufacture (8), +.IR register (8), +.IR signer (8), +.IR virgild (8) +.SH BUGS +The video demonstrations currently work only on native machines with specific hardware. +.br +For copyright reasons, some databases are not distributed, or have randomly-generated content. diff --git a/man/1/mv b/man/1/mv new file mode 100644 index 00000000..1c3309f3 --- /dev/null +++ b/man/1/mv @@ -0,0 +1,43 @@ +.TH MV 1 +.SH NAME +mv \- move files +.SH SYNOPSIS +.B mv +.I fromfile +.I tofile +.br +.B mv +.I fromfile ... +.I todir +.SH DESCRIPTION +.I Mv +moves +.I fromfile +to +.IR tofile . +If the files are in the same directory, +.I fromfile +is simply renamed; +a previously existing file named +.I tofile +will be (silently) removed. +Otherwise, +.I mv +copies +.I fromfile +to +.IR tofile , +then removes +.IR fromfile . +This requires write permission for the parent directories involved. +.PP +If the last argument is a directory, the earlier arguments (all files) will be moved into that directory. Any previously existing files of the same name will be overwritten. +Directories can only be renamed: +.I mv +refuses to move one into another. +.SH SOURCE +.B /appl/cmd/mv.b +.SH "SEE ALSO" +.IR cp (1), +.IR rm (1), +.IR sys-stat (2) diff --git a/man/1/netkey b/man/1/netkey new file mode 100644 index 00000000..f9986abf --- /dev/null +++ b/man/1/netkey @@ -0,0 +1,18 @@ +.TH NETKEY 1 +.SH NAME +netkey \- calculate response to authentication challenge +.SH SYNOPSIS +.B netkey +.SH DESCRIPTION +.I Netkey +calculates a response to a challenge made by a system to authenticate a user, +based on a shared secret (password), using +the same algorithm as a SecureNet device. +It reads and writes +.BR /dev/cons . +It prompts once for the secret (echo is turned off). +It then repeatedly prompts for a remote system's challenge, +and once given it, calculates and prints the corresponding response. +It exits on an empty challenge or end of file. +.SH SOURCE +.B /appl/cmd/netkey.b diff --git a/man/1/netstat b/man/1/netstat new file mode 100644 index 00000000..239cb323 --- /dev/null +++ b/man/1/netstat @@ -0,0 +1,42 @@ +.TH NETSTAT 1 +.SH NAME +netstat \- summarize network connections +.SH SYNOPSIS +.B netstat +.SH DESCRIPTION +.I Netstat +prints information about network connections. +The following is presented for each connection: +.IP +connection name: the protocol and conversation directory in +.B /net +(eg. +.BR tcp/8 ) +.br +user name +.br +status of the connection +.br +address of each end of the connection (eg host and port if IP) +.PP +The information is obtained from the +.B status +file of each entry under the network directories +.BR /net/tcp , +.BR /net/udp +and +.BR /net/il . +.PP +.I Netstat +relies on a populated +.B /net +directory; the +.B #I +device must therefore +have previously been bound there. +.SH FILES +.B /net/*/status +.SH SOURCE +.B /appl/cmd/netstat.b +.SH "SEE ALSO" +.IR ip (3) diff --git a/man/1/ns b/man/1/ns new file mode 100644 index 00000000..e4a19d31 --- /dev/null +++ b/man/1/ns @@ -0,0 +1,43 @@ +.TH NS 1 +.SH NAME +ns \- display current namespace +.SH SYNOPSIS +.B ns +[ +.B -r +] [ +.I pid +] +.SH DESCRIPTION +.I Ns +displays the construction of the namespace of the given +.IR pid , +or its own (as inherited) by default. +Based on the contents of +.BI /prog/ pid /ns , +it prints on standard output a sequence of bind and mount commands +(see +.IR bind (1)) +that might reconstruct the same name space if executed. +In practice, mounts of services such as +.IR ftpfs (4) +often refer to the names of pipe ends that are now inaccessible. +Furthermore, if any file involved has been renamed since the +mount or bind, the original name of the file is shown. +.PP +Mounts of file services on a network show the network address as +given to +.IR sys-dial (2) +instead of the name of the data file for the connection; the +.B -r +option causes +.I ns +to show the raw file name instead. +.SH SOURCE +.B /appl/cmd/ns.b +.SH "SEE ALSO" +.IR bind (1), +.IR prog (3), +.IR namespace (4), +.IR namespace (6) + diff --git a/man/1/nsbuild b/man/1/nsbuild new file mode 100644 index 00000000..f2acf7d2 --- /dev/null +++ b/man/1/nsbuild @@ -0,0 +1,49 @@ +.TH NSBUILD 1 +.SH NAME +nsbuild \- build Inferno namespace +.SH SYNOPSIS +.B nsbuild +[ +.B file +] +.SH DESCRIPTION +.B Nsbuild +builds a file name space for Inferno. +It reads a +.I file +(by default, a file called +.B namespace +in the current directory) +and interprets the +name space commands found in that file. +.PP +The commands executed by +.B nsbuild +include +.B bind +and +.BR mount . +See +.IR namespace (6) +for details on the format of the file. +.SH FILES +.TP 1.5i +.B namespace +The default namespace file. +.SH SOURCE +.B /appl/cmd/nsbuild.b +.SH "SEE ALSO" +.IR bind (1), +.IR cd (1), +.IR newns (2), +.IR namespace (6) +.SH BUGS +The +.BR new +and +.BR fork +operations of +.IR namespace (6) +are ineffective because +.I nsbuild +runs as a separate process. diff --git a/man/1/os b/man/1/os new file mode 100644 index 00000000..7b7f8996 --- /dev/null +++ b/man/1/os @@ -0,0 +1,85 @@ +.TH OS 1 hosted +.SH NAME +os \- interface to host OS commands (hosted Inferno only) +.SH SYNOPSIS +.B bind -a '#C' / +.br +.B os +[ +.B -m +.I mountpoint +] [ +.BI -d " dir" +] [ +.B -n +] [ +.BI -N " level" +] +.I cmd +[ +.IR arg ... +] +.SH DESCRIPTION +.I Os +uses a +.IR cmd (3) +device to execute a command, +.IR cmd , +on a host system. +If the +.B -m +option is given, +.I os +uses the device at +.IR mountpoint , +otherwise it is asssumed to be at +.BR /cmd , +and is bound into the local namespace if necessary. +.PP +The +.B -d +option causes the command to run in directory +.IR dir ; +an error results and the command will not run if +.I dir +does not exist or is inaccessible. +The standard output and standard error of the command are merged on the standard output. +.I Os +copies the standard input to the remote command's standard input; redirect +.IR os 's +input to +.B /dev/null +if there is no input to the command. +.I Os +terminates when +.I cmd +does, and its exit status reflects the status of +.I cmd +(if available). +The +.B -n +option causes +.I cmd +to run with less than normal priority (`nice'). +The +.B -N +option sets low priority to a particular +.I level +from 1 to 3. +.SH FILES +.B /cmd/clone +.SH SOURCE +.B /appl/cmd/os.b +.SH "SEE ALSO" +.IR cpu (1), +.IR rcmd (1), +.IR cmd (3) +.SH DIAGNOSTICS +The exit status of +.I os +reflects any error that occurs when starting +.I cmd +and, if it starts successfully, the status of +.I os +is the exit status of +.IR cmd . diff --git a/man/1/p b/man/1/p new file mode 100644 index 00000000..dfbf4c8d --- /dev/null +++ b/man/1/p @@ -0,0 +1,33 @@ +.TH P 1 +.SH NAME +p \- paginate +.SH SYNOPSIS +.B p +[ +.BI - number +] +[ +.I file ... +] +.SH DESCRIPTION +.I P +copies its standard input, or the named files if given, +to its standard output, +stopping at the end of every page, +to wait for a newline from the user. +The option sets the +.I number +of lines on a page (default: 22). +.PP +While waiting for a newline, +.I p +interprets the commands: +.TP +.B ! +Pass the rest of the line to the shell as a command. +.TP +.B q +Quit. +.PP +.SH SOURCE +.B /appl/cmd/p.b diff --git a/man/1/passwd b/man/1/passwd new file mode 100644 index 00000000..759397e0 --- /dev/null +++ b/man/1/passwd @@ -0,0 +1,75 @@ +.TH PASSWD 1 +.SH NAME +passwd \- change user password +.SH SYNOPSIS +.B auth/passwd +[ +.BI -u " user" +] [ +.BI -s " signer" +] [ +.I keyfile +] +.SH DESCRIPTION +.I Passwd +changes the secret shared between the invoker +and the authentication server +.I signer +(default: +.BR $SIGNER ). +The +.I signer +must offer the +.IR keysrv (4) +service. +.PP +The secret is associated with a remote user name that need not be +the same as the name of the invoking user on the local system. +That remote user name is specified by a certificate signed by +.IR signer , +and obtained from +.IR keyfile . +.I Keyfile +identifies a file containing a certificate (default: +.LR default ). +If +.I keyfile +is not an absolute pathname, +the file used will be +.BI /usr/ user /keyring/ keyfile. +.I User +by default is the invoking user's name (read from +.BR /dev/user ), +but the +.B -u +option can name another. +.PP +.I Passwd +connects to the +.IR signer , +authenticating using the certificate in +.IR keyfile , +and checks that the user in the certificate +is registered there with an existing secret. +.I Passwd +then prompts for the (remote) user's old secret, to double-check identity, then prompts for a new one, which must be confirmed. +.PP +Secrets must be at least eight characters long. +Try to make them hard to guess. +.SH FILES +.TF /mnt/keysrv +.TP +.B /dev/user +current user name +.TP +.B /mnt/keysrv +local mount point for connection to +remote +.IR keysrv (4) +.SH SOURCE +.B /appl/cmd/auth/passwd.b +.SH SEE ALSO +.IR keyfs (4), +.IR keysrv (4), +.IR changelogin (8), +.IR logind (8) diff --git a/man/1/plumb b/man/1/plumb new file mode 100644 index 00000000..350c472c --- /dev/null +++ b/man/1/plumb @@ -0,0 +1,78 @@ +.TH PLUMB 1 +.SH NAME +plumb \- send message to plumber +.SH SYNOPSIS +.B plumb +[ +.BI -s " src" +] [ +.BI -d " dest" +] [ +.BI -D " dir" +] [ +.BI -k " kind" +] [ +.BI -a " name value" +] +.I data +\&... +.SH DESCRIPTION +.I Plumb +sends a message to the plumber, +.IR plumber (8), +which is normally started by +.IR wm (1)'s +start up script. +.PP +The options and arguments are used as components of the message. +See +.IR plumbing (6) +for their interpretation. +The options are: +.TP +.BI -s " src" +Set the source to +.I src +(default: unspecified). +.TP +.BI -d " dest" +Set the destination to +.I dest +(default: unspecified). +.TP +.BI -D " dir" +Set the directory to +.I dir +(default: current directory as reported by +.IR pwd (1) +or +.IR workdir (2)). +.TP +.BI -k " kind" +Set the kind of data to +.I kind +(default: +.BR text ) +.TP +.BI -a " name value" +Include an attribute +.RI ` name = value '; +there can be more than one. +.PP +The remaining arguments are sent, separated by spaces, as the +.I data +of the message. +The plumber +will apply its rules to the resulting message to decide how to route it. +.SH FILES +.TF /chan/plumb.input +.TP +.B /chan/plumb.input +.IR plumber (8) +input channel +.SH SOURCE +.B /appl/cmd/plumb.b +.SH SEE ALSO +.IR plumbmsg (2), +.IR plumbing (6), +.IR plumber (8) diff --git a/man/1/prof b/man/1/prof new file mode 100644 index 00000000..ac6c23b7 --- /dev/null +++ b/man/1/prof @@ -0,0 +1,140 @@ +.TH PROF 1 +.SH NAME +prof, wm/prof \- profiling limbo programs +.SH SYNOPSIS +.B prof +[ +.B -bflnve +] [ +.BI -m " modname" +] ... [ +.BI -s " rate" +] [ +.BI "cmd arg ..." +] +.PP +.B wm/prof +[ +.B -e +] [ +.BI -m " modname" +] ... [ +.BI -s " rate" +] [ +.BI "cmd arg ..." +] +.SH DESCRIPTION +.I Prof +is a simple profiling tool which calculates the percentage of time spent on a +particular line of limbo source or spent in a particular limbo function. It can +determine where a module or set of modules is spending its time. The source in +question should be compiled with the +.B -g +flag so that the relevant symbol table files exist. +.PP +The tk version of the profiler +.I wm/prof +shows this information in a text widget and colours the lines of source according +to the amount of time spent on each line. The darker the colour, the longer +spent. +.PP +The +.B -b +option starts profiling. +.PP +The +.B -f +option shows the function profile. +.PP +The +.B -l +option shows the line profile. If neither this option nor the +.B -f +option are given, +.B -l +is assumed. +.PP +The +.B -n +option lists the name of the file along with the line number. +.PP +The +.B -v +option outputs all functions and/or lines even when the percentage +of time spent in them is zero. +.PP +The +.B -m +option lists the module names which are to be profiled. If none are given, all the +modules loaded by the kernel will be profiled. The name may be the actual name of +the module or its path name. +.PP +The +.B -e +option profiles the module that is loaded first in any following command. In this case +there is no need to give a +.B -m +option as this is added automatically. +.PP +The +.B -s +option sets the sample interval +.I rate +and is expressed in ms. The default is 100 ms. +.PP +Any remaining arguments are assumed to +specify a command and set of arguments to the command. If this is the case, +.B prof +will automatically start profiling, run the command to completion and then +stop profiling before showing the profile statistics. +.PP +.B Prof +displays the profile statistics (unless the +.B -b +option is being used) according to the output format required. +.PP +.SH EXAMPLE +.EX +To profile a particular command + prof /dis/math/parts 10000 + wm/prof /dis/math/parts 10000 +To profile the same command but restrict attention to its own module (Partitions). + prof -m Partitions /dis/math/parts 10000 + wm/prof -m Partitions /dis/math/parts 10000 +A shorter version of the above + prof -e /dis/math/parts 10000 + wm/prof -e /dis/math/parts 10000 +To profile interactively + prof -b -m Partitions -s 10 + /dis/math/parts 10000 + prof -f -l -n +.EE +.PP +Note that the output format options ( +.B -f +, +.B -l +, +.B -n +, +.B -v +) are ignored when +.B -b +is present. +.SH SOURCE +.B /appl/cmd/prof.b +.PP +.B /appl/wm/prof.b +.SH SEE ALSO +.IR cprof (1), +.IR mprof (1), +.IR wm-cprof (1), +.IR wm-mprof (1), +.IR prof (2), +.IR prof (3) +.SH BUGS +.I Prof +cannot profile compiled limbo programs. + + + diff --git a/man/1/ps b/man/1/ps new file mode 100644 index 00000000..13e298d2 --- /dev/null +++ b/man/1/ps @@ -0,0 +1,45 @@ +.TH PS 1 +.SH NAME +ps \- process (thread) status +.SH SYNOPSIS +.B bind '#p' /prog +.PP +.B ps +.SH DESCRIPTION +.I Ps +prints to the standard output information about all current Inferno processes. +It looks in +.B /prog +for process status files; +normally that requires that the +.IR prog (3) +device has previously been bound there (as shown above), +but it is also possible to import +.B /prog +from a remote machine. +.PP +Each line of information printed consists of seven columns: +the process id, the process group id, the owner of the +process, cpu time used by the process, the run state of the process, the amount of memory used +by the process, and the name of the module containing the +currently running function. +.SH FILES +.B /prog/*/status +.SH SOURCE +.B /appl/cmd/ps.b +.SH "SEE ALSO" +.IR deb (1), +.IR kill (1), +.IR stack (1), +.I wm/task +and +.I wm/memory +in +.IR wm-misc (1), +.IR prog (3) +.SH BUGS +The amount reported as ``memory used'' does not accurately +reflect the amount of memory referred to by the process, +because the heap is shared. +.br +The cpu time used is currently shown as zero in most hosted implementations. diff --git a/man/1/pwd b/man/1/pwd new file mode 100644 index 00000000..34f087bf --- /dev/null +++ b/man/1/pwd @@ -0,0 +1,18 @@ +.TH PWD 1 +.SH NAME +pwd \- print working directory +.SH SYNOPSIS +pwd +.SH DESCRIPTION +.I Pwd +prints the path name of the working (current) directory. +It is guaranteed to return the same path that was used to enter the directory. +Note that if meanwhile the name space has changed, or directories in the path have been renamed, +the path name may no longer be valid. +.SH SOURCE +.B /appl/cmd/pwd.b +.SH "SEE ALSO" +.IR cd (1), +.IR bind (1), +.IR sys-fd2path (2), +.IR workdir (2) diff --git a/man/1/rcmd b/man/1/rcmd new file mode 100644 index 00000000..2368a37a --- /dev/null +++ b/man/1/rcmd @@ -0,0 +1,72 @@ +.TH RCMD 1 +.SH NAME +rcmd \- remote command execution +.SH SYNOPSIS +.B rcmd +[ +.B -C +.I cryptoalg +] [ +.B -e +.I exportpath +] +.I host +[ +.I cmd +.I arg ... +] +.SH DESCRIPTION +.I Rcmd +executes +.I cmd +on the given +.IR host . +If no +.I cmd +is given, +.IR sh (1) +is assumed. +The +.I host +must have enabled the +.L rstyx +service (typically started via +.IR svc (8)). +.PP +For authentication, +.I rcmd +will use the certificate in the file +.IP +.BI /usr/ username /keyring/ net ! machine +.PP +if it exists, and otherwise it will use the certificate in +.IP +.BI /usr/ username /keyring/default . +.PP +The +.B -C +option sets the algorithm +.I cryptoalg +to be used following authentication for digesting or encryption. +See +.IR ssl (3) +for the supported algorithms. +The default is +.BR none : +.IR ssl (3) +is not used after authentication. +.PP +The +.B -e +option sets the path to be exported as root from the local machine (defaults to +.B / +if not specified). +.SH SOURCE +.B /appl/cmd/rcmd.b +.SH "SEE ALSO" +.IR security-intro (2), +.IR security-auth (2), +.IR security-login (2), +.IR getauthinfo (8), +.IR rstyxd (8), +.IR svc (8) diff --git a/man/1/read b/man/1/read new file mode 100644 index 00000000..e9caab60 --- /dev/null +++ b/man/1/read @@ -0,0 +1,62 @@ +.TH READ 1 +.SH NAME +read \- read from standard input with optional seek +.SH SYNOPSIS +.B read +[ +.BR - [ eor ] +.I offset +] [ +.I count +] +.SH DESCRIPTION +.I Read +does a single read of +.I count +bytes (default: +8192 bytes) +from the standard input and writes +the result to the standard output. +If the optional +.I offset +argument is given, +.I read +will first apply +.IR sys-seek (2): +.TP +.BI -o " offset" +seek +.I offset +bytes from the start of the file +.TP +.BI -e " offset" +seek +.I offset +bytes from the end of the file +.TP +.BI -r " offset" +seek +.I offset +bytes from the standard input's current file offset +.PP +In all cases the file offset changes to +reflect the result of the seek, and the number of bytes +read. +.SH SOURCE +.B /appl/cmd/read.b +.SH DIAGNOSTICS +.I Read +prints a diagnostic and returns a non-empty exit +status +.CW fail:error +on an I/O error; +it quietly returns status +.CW fail:eof +if the read returns zero bytes (conventionally, end of file). +.SH SEE ALSO +.IR cat (1), +.I getline +in +.IR sh-std (1), +.IR stream (1), +.IR sys-read (2) diff --git a/man/1/rm b/man/1/rm new file mode 100644 index 00000000..47b34d07 --- /dev/null +++ b/man/1/rm @@ -0,0 +1,28 @@ +.TH RM 1 +.SH NAME +rm \- remove file(s) +.SH SYNOPSIS +.B rm +[ +.B -fr +] +.I file ... +.SH DESCRIPTION +.I Rm +removes the specified files or directories. +A directory is removed only if it is empty (but +see the +.B -r +option). +Removal of a file requires write permission in its directory, but requires neither read nor write permission on the file itself. The options are: +.TP +.B -f +Suppress diagnostics +.TP +.B -r +Recursively remove a directory's substructure before removing the directory. +.SH SOURCE +.B /appl/cmd/rm.b +.SH "SEE ALSO" +.IR tiny (1), +.IR sys-remove (2) diff --git a/man/1/runas b/man/1/runas new file mode 100644 index 00000000..9fa6c4f6 --- /dev/null +++ b/man/1/runas @@ -0,0 +1,23 @@ +.TH RUNAS 1 +.SH NAME +runas \- run command as another user +.SH SYNOPSIS +.B runas +.I user +.I cmd +[ +.IR arg ... +] +.SH DESCRIPTION +.I Runas +writes +.I user +to /dev/user and invokes +.I cmd +with the given arguments. +The command is only invoked if setting of the user name succeeds. +.SH SOURCE +.B /appl/cmd/runas.b +.SH "SEE ALSO" +.IR cons (3), +.
\ No newline at end of file diff --git a/man/1/secstore b/man/1/secstore new file mode 100644 index 00000000..bab02a1e --- /dev/null +++ b/man/1/secstore @@ -0,0 +1,141 @@ +.TH SECSTORE 1 +.SH NAME +secstore \- retrieve files from secure store +.SH SYNOPSIS +.B auth/secstore +[ +.B -iv +] [ +.BI -k " key" +] [ +.BI -p " pin" +] [ +.BI -s " address" +] [ +.BI -u " user" +] [ +.I op +[ +.I file +] ... ] +.SH DESCRIPTION +.I Secstore +manages files on the eponymous Plan 9 secure storage service. +It holds a set of files for each of its users. +The service is most often used to store a file +.B factotum +containing user credentials in a form ready to be loaded into +.IR factotum (4). +.I Op +is one of the following operations: +.TP +.B d +Delete the given files on the server. +.TP +.B p +Print the contents of each file on standard output. +Each line is written separately, so that files of keys will be received correctly when written to +.IR factotum (4). +.TP +.B r +Replace the contents of files on the server by the contents of the named files, +after encrypting them. +In each case, the file name on the server is the last component of the local file name +(ie, everything after the final +.RB ` / '). +.TP +.B t +List a table of contents of +.IR user 's +collection on the the server. +By default, only the names are listed, one per line, but +given the +.B -v +option, each line displays name, file size in bytes, date last stored, and SHA-1 hash of the file's contents. +.TP +.B x +Extract the named files into files of the same name in the current directory. +By default, they are decrypted (ie, in clear text). +.PP +If no +.I op +is specified, +.I secstore +connects to the server (thus checking the connection and the validity +of both +.I key +and +.IR user ), +but does nothing with it. +.PP +By default, +.I secstore +prompts for a secret key to authenticate the user and the +.B secstore +service. +The service might be configured to demand an extra authentication code, such as a `pin', in which case +.I secstore +will then prompt for that as well. +The options are: +.TP +.B -i +Read one or two lines from the standard input: +the first line contains the secret; the optional second line contains the extra authentication code. +.TP +.BI -k " key" +Use +.I key +as the secret to authenticate with the +.B secstore +service. +.TP +.BI -p " pin" +Supply +.I pin +as the extra authentication code if the server demands it. +.TP +.BI -s " address" +Connect to the server at the given network +.IR address , +as defined by +.IR sys-dial (2), +and translated by +.IR cs (8). +The default is +.BR net!$auth!secstore . +.TP +.BI -u " user" +Authenticate as +.I user +(default: the Inferno user name contained in +.BR /dev/user ) +.TP +.B -v +Make the output more verbose: +display the name announced by the remote server; and use the long form of the table of contents. +.SH EXAMPLE +Retrieve the +.B factotum +file and feed the keys therein to +.IR factotum (4): +.IP +.EX +auth/secstore p factotum >/mnt/factotum/ctl +.EE +.SH SOURCE +.B /appl/cmd/auth/secstore.b +.SH SEE ALSO +.IR crypt (1), +.IR secstore (2), +.IR factotum (4), +.br +``Plan 9 Security'', +.IR "Plan 9 Programmer's Manual" , +Fourth Edition, +Volume 2, 2003. +.SH BUGS +Perhaps +.I secstore +should allow several +.B -s +options as a simple way to replicate the same files on different servers. diff --git a/man/1/sendmail b/man/1/sendmail new file mode 100644 index 00000000..cc6758c5 --- /dev/null +++ b/man/1/sendmail @@ -0,0 +1,48 @@ +.TH SENDMAIL 1 +.SH NAME +sendmail \- send mail messages +.SH SYNOPSIS +.B sendmail +[ +.I recipient ... +] +.SH DESCRIPTION +.B Sendmail +sends mail to each +.I recipient +named as an argument. It reads its standard input to +get the text of the message. +If no +.I recipient +is named, the recipient(s) will be taken from the message header. +.PP +The mail message is scanned for lines beginning +.RL ` From: ', +.RL ` To: ' +and +.RL ` Cc: '. +.br +If no `from' +line is found, the sender is assumed to be the current user. The recipient(s) of the message +can be mentioned as arguments or in a list of names in a +.RL ` To: ' +line but not as both. +If the sender's name is unqualified (is just a user name), +.I sendmail +appends the value of the environment variable +.LR DOMAIN . +.PP +.B Sendmail +delivers the mail using the module +.IR smtp (2), +which +connects to a mail server running the Simple Mail Transport Protocol (SMTP), +using the symbolic host name +.B $MAILSERVER +(see +.IR db (6)). +.SH SOURCE +.B /appl/cmd/sendmail.b +.SH SEE ALSO +.IR smtp (2), +.IR db (6) diff --git a/man/1/session b/man/1/session new file mode 100644 index 00000000..92f8bc42 --- /dev/null +++ b/man/1/session @@ -0,0 +1,110 @@ +.TH SESSION 1 +.SH NAME +session \- graphical interface for configuring tasks using +.IR cpu (4) +and +.IR ns (1) +resources +.SH SYNOPSIS +.B grid/session +.SH DESCRIPTION +.I Session +allows the user to build up a single namespace from various different namespace resources and configure a set of commands to be executed within this namespace. The execution then takes place on one or more selected +.IR cpu (4) +resources. +.PP +Once started, +.IR session +presents a heirarchical view of currently registered resources (such as +.IR ns (1)) +which export a Styx (see +.IR intro (5)) +namespace. The top level displays the type of resource e.g. +.BR 'CPU resource' , +whilst the second level shows the name of each individual resource. Descending futher down the tree will reveal the attributes of the selected resource. To mount a resource and see the namespace it exports, click mouse button 3 on the resource name. The view will switch to a split pane view displaying the resource namespace with directories listed on the left and all files in the current directory displayed on the right. +.PP +Clicking mouse button 3 on a file or directory will cause it to be added to the +.I command +or +.I namespace +list at the bottom of the window. Mouse button 3 is again used on items in either of these lists to display a menu containing the name of the resource on which they are located as well as the option to remove them. The +.B Cmd +and +.B Ns +buttons located at the top of the window toggle the view between the selected commands and the selected namespace. The +.B Resources +button returns to the initial view containing the currently registered resources and +.B Refresh +updates the list in case any resources have been added or removed. + +.SS The Command List +This contains a list of all commands to be executed. Any arguments may be entered by clicking on the gap after +.IR args : +and typing into the box. Commands will be executed in order from top (first) to bottom (last). + +.SS The Namespace List +This contains a list of all the directories to be imported in order to create the local namespace of the selected +.IR cpu (4) +resource(s). By default, several directories will be imported from the local machine. To select these, click button 3 on +.B import local namespace +and (un)check the directories as required. To toggle this option on and off, click button 1 on +.B import local namespace. +These default directories are required by many commands for normal execution so it is recommended that they are not disabled unless they are definitely not needed. Importing a directory of the same name as one of the default directories will automatically overwrite the default. Therefore, it is not necessary to disable a default directory if the same name is to be imported from elsewhere. +.PP +A given directory can only be imported once so it is not possible, for example, to import +.B /usr/inferno +from two different machines. +.I Session +will automatically import the directories containing each of the selected commands but any others required must be explicitly imported. For example: If one of the commands is: +.PP +.EX + /usr/inferno/runme.dis -f /appl/lib +.EE +.PP +.I Session +will import +.B /usr/inferno/ +but +.B /appl/lib +would have to be specified in the namespace list. +.SS Execution +Once the command and namespace lists have been configured, click +.B Ok +on the +.I Session +window. This will bring up the +.IR query (1) +window containing a list of the available +.IR cpu (4) +resources. To select one or more of these for execution, click on the name with button 3 and it will be added to the list. If a specific +.IR cpu (4) +resource is not required, click button 3 on +.B CPU resource +and select the number you require by clicking on the number following the list entry and dragging the mouse up or down. +.PP +Once the required +.IR cpu (4) +resources have been selected, click +.B Ok +and execution will commence. + + +.SH SOURCE +.B /appl/grid/session.b +.br +.B /appl/grid/ns.b +.br +.B /appl/grid/monitor.b +.br +.B /appl/grid/query.b +.br +.B /appl/grid/lib/browse.b +.br +.B /appl/grid/lib/srvbrowse.b + +.SH "SEE ALSO" +.IR query (1), +.IR registries (2) +.IR ns (1), +.IR cpu (4), +.IR registry (4) diff --git a/man/1/sh b/man/1/sh new file mode 100644 index 00000000..951f168a --- /dev/null +++ b/man/1/sh @@ -0,0 +1,939 @@ +.TH SH 1 +.SH NAME +sh, builtin, exit, load, loaded, local, whatis, quote, run, set, unload, unquote \- command language +.SH SYNOPSIS +.B sh +[ +.B -ilxvn +] +[ +.B -c command +] +[ +.I file +[ +.I arg ... +] +.SH DESCRIPTION +.I Sh +is a programmable user level interface (a shell) for Inferno. +It executes command lines read from a terminal or a file or, with the +.B -c +flag, from +.IR sh 's +argument list. It can also be used to give programmable functionality +to Limbo modules (see +.IR sh "" "" (2)). +.SS Command Lines +A command line is a sequence of commands, separated by ampersands or semicolons +.RB ( & +or +.BR ; ), +terminated by a newline. +The commands are executed in sequence +from left to right. +.I Sh +does not wait for a command followed by +.B & +to finish executing before starting +the following command. +Whenever a command followed by +.B & +is executed, its process id is assigned to the +.I sh +variable +.BR $apid . +Whenever a command +.I not +followed by +.B & +exits or is terminated, the +.I sh +variable +.B $status +gets the process's wait message (see +.IR prog (3)); +it will be the null string if the command was successful. +.PP +A number-sign +.RB ( # ) +and any following characters up to (but not including) the next newline +are ignored, except in quotation marks. +.SS Simple Commands +A simple command is a sequence of arguments interspersed with I/O redirections. +If the first argument is the name of a +.I sh +builtin or it is a braced command block (see +.IR "Compound Commands", +below), it is executed by +.IR sh . +If the first character of the name is a brace +.RB ( { ), +the shell tries to parse it and execute it as a braced command block; +if the parsing fails, an exception is raised. +Otherwise +.I sh +looks for an external program to execute. +.PP +If the name ends in +.BR .dis , +.I sh +looks for a Dis module of that name; otherwise +it tries first to find a Dis module of +that name with +.B .dis +appended and failing that, it looks for +an executable file of the same name, which should +be a readable, executable script file. +If the name does not start with a slash +.RB ( / ) +or dot-slash +.RB ( ./ ), +then the name is first looked for relative to +.BR /dis , +and then relative to the current directory. +A Dis module will be executed only if it +implements the +.B Command +interface (see +.IR sh (1)); +a script file will be executed only if it +starts with the characters +.RB `` #! '' +followed by the name of a file executable +under the rules above. In this case the +command will be executed with any following arguments mentioned +in the +.B #! +header, followed by the path of the script file, +followed by any arguments originally given to the command. +.PP +For example, to execute the simple command +.BR "ls" , +.I sh +will look for one of the following things, in order, +stopping the search when one is found: +.RS +.IP 1) +a built-in command named +.RB `` ls ''. +.IP 2) +a Dis module named +.RB `` /dis/ls.dis '', +.IP 3) +an executable script file named +.RB `` /dis/ls '', +.IP 4) +a Dis module named +.RB `` ./ls.dis '', +.IP 5) +an executable script file named +.RB `` ./ls ''. +.RE +.SS Arguments and Variables +A number of constructions may be used where +.I sh's +syntax requires an argument to appear. +In many cases a construction's +value will be a list of arguments rather than a single string. +.PP +The simplest kind of argument is the unquoted word: +a sequence of one or more characters none of which is a blank, tab, +newline, or any of the following: +.EX + # ; & | ^ $ ` ' { } ( ) < > " = +.EE +An unquoted word that contains any of the characters +.B * +.B ? +.B [ +is a pattern for matching against file names. +The character +.B * +matches any sequence of characters, +.B ? +matches any single character, and +.BI [ class ] +matches any character in the +.IR class . +If the first character of +.I class +is +.BR ^ , +the class is complemented. (As this character +is special to the shell, it may only be included in a pattern +if this character is quoted, as long as the leading +.B [ +is not quoted). +The +.I class +may also contain pairs of characters separated by +.BR - , +standing for all characters lexically between the two. +The character +.B / +must appear explicitly in a pattern. +A pattern is replaced by a list of arguments, one for each path name matched, +except that a pattern matching no names is not replaced by the empty list, +but rather stands for itself. +Pattern matching is done after all other +operations. +Thus, +.EX + x=/tmp; echo $x^/*.b +.EE +matches +.BR /tmp/*.b , +rather than matching +.B "/*.b +and then prefixing +.BR /tmp . +.PP +A quoted word is a sequence of characters surrounded by single quotes +.RB ( ' ). +A single quote is represented in a quoted word by a pair of quotes +.RB ( '' ). +.PP +.ne 3 +Each of the following is an argument. +.PD 0 +.HP +.BI ( arguments ) +.br +The value of a sequence of arguments enclosed in parentheses is +a list comprising the members of each element of the sequence. +Argument lists have no recursive structure, although their syntax may +suggest it. +The following are entirely equivalent: +.EX + echo hi there everybody + ((echo) (hi there) everybody) + echo (hi + there + everybody + ) +.EE +Newlines within parentheses count as simple white space; +they do not terminate the command. This can be useful to give +some more freedom of layout to commands that take several +commands as arguments, for instance several of the commands +defined in +.IR sh-std (1). +.HP +.BI $ argument +.br +The +.I argument +after the +.B $ +is the name of a variable whose value is substituted. +Multiple levels +of indirection are possible. +Variable values +are lists of strings. +If +.I argument +is a number +.IR n , +the value is the +.IR n th +element of +.BR $* , +unless +.B $* +doesn't have +.I n +elements, in which case the value is empty. +Assignments to variables are described under +.I "Assignment" , +below. +.HP +.BI $# argument +.br +The value is the number of elements in the named variable. +A variable +never assigned a value has zero elements. +.HP +\f5$"\fP\fIargument\fP +.br +The value is a single string containing the components of the named variable +separated by spaces. A variable with zero elements yields the empty string. +.HP +.BI `{ command } +.HP +.I +\f5"{\fPcommand\f5}\fP +.br +.I Sh +executes the +.I command +and reads its standard output. If backquote +.RB ( ` ) +is used, it is split into a list of arguments, +using characters in +.B $ifs +as separators. +If +.B $ifs +is not otherwise set, its value is +.BR "'\ \et\en'" . +If doublequote (\f5"\fP) +is used, no tokenization takes place. +.HP +.IB argument ^ argument +.br +The +.B ^ +operator concatenates its two operands. +If the two operands +have the same number of components, they are concatenated pairwise. +If not, +then one operand must have one component, and the other must be non-empty, +and concatenation is distributive. +.HP +.BI ${ command } +.br +.I Command +must be a simple command with no redirections; +its first word +must be the name of a builtin substitution operator. +The operator is invoked and its value substituted. +See +.IR "Built-in Commands" , +below, for more information on builtins. +.PD +.SS Free Carets +In most circumstances, +.I sh +will insert the +.B ^ +operator automatically between words that are not separated by white space. +Whenever one of +.B $ +.B ' +.B ` +follows a quoted or unquoted word or an unquoted word follows a quoted word +with no intervening blanks or tabs, +a +.B ^ +is inserted between the two. +If an unquoted word immediately follows a +.BR $ +and contains a character other than an alphanumeric, underscore, +or +.BR * , +a +.B ^ +is inserted before the first such character. +Thus +.IP +.B limbo -$flags $stem.b +.LP +is equivalent to +.IP +.B limbo -^$flags $stem^.b +.SS Assignment +A command of the form +.IB name = value +or +.IB name := value +assigns +.I value +to the environment variable named +.IR name . +.I Value +is either a list of arguments or an assignment statement. In +the latter case +.I value +is taken from the value assigned in the assignment statement. +If +.B := +is used, the value is stored in the innermost local scope. +A local scope is created every time a braced block is entered, +and destroyed when the block is left. If +.B = +is used, the value is stored in the innermost scope +that contains any definition of +.IR name . +.PP +A list of names can also be used in place of +.IR name , +which causes each element of +.I value +in turn to be assigned the respective variable name in +the list. The last variable in the list is assigned any elements +that are left over. If there are more variable names than +elements in +.IR value , +the remaining elements are assigned the null list. +For instance, after the assignment: +.EX + (a b c) = one two three four five +.EE +.B $a +is +.BR one , +.B $b +is +.BR two , +and +.B $c +contains the remaining three elements +.BR "(three four five)" . +.SS I/O Redirections +The sequence +.BI > file +redirects the standard output file (file descriptor 1, normally the +terminal) to the named +.IR file ; +.BI >> file +appends standard output to the file. +The standard input file (file descriptor 0, also normally the terminal) +may be redirected from a file by the sequence +.BI < file \f1, +or by the sequence +.BI <> file \f1, +which opens the file for writing as well as reading. +.PP +Redirections may be applied to a file-descriptor other than standard input +or output by qualifying the redirection operator +with a number in square brackets. +For example, the diagnostic output (file descriptor 2) +may be redirected by writing +.BR "limbo junk.b >[2] junk" . +.PP +A file descriptor may be redirected to an already open descriptor by writing +.BI >[ fd0 = fd1 ] +or +.BI <[ fd0 = fd1 ]\f1. +.I Fd1 +is a previously opened file descriptor and +.I fd0 +becomes a new copy (in the sense of +.IR sys-dup (2)) +of it. +.PP +Redirections are executed from left to right. +Therefore, +.B limbo junk.b >/dev/null >[2=1] +and +.B limbo junk.b >[2=1] >/dev/null +have different effects: the first puts standard output in +.BR /dev/null +and then puts diagnostic output in the same place, where the second +directs diagnostic output to the terminal and sends standard output to +.BR /dev/null . +.SS Compound Commands +A pair of commands separated by a pipe operator +.RB ( | ) +is a command. +The standard output of the left command is sent through a pipe +to the standard input of the right command. +The pipe operator may be decorated +to use different file descriptors. +.BI |[ fd ] +connects the output end of the pipe to file descriptor +.I fd +rather than 1. +.BI |[ fd0 = fd1 ] +connects output to +.I fd1 +of the left command and input to +.I fd0 +of the right command. +.PP +A sequence of commands separated by +.BR & , +.BR ; , +or newline +may be grouped by surrounding +them with braces +.RB ( {} ), +elsewhere referred to as a +.IR "braced block" . +A braced block may be used anywhere that a simple word +is expected. If a simple command is found with +a braced block as its first word, the +variable +.B $* +is set to any following arguments, +.B $0 +is set to the block itself, and the commands +are executed in sequence. If a braced block +is passed as an argument, no execution takes place: +the block is converted to a functionally equivalent +string, suitable for later re-interpretation by the shell. +The null command +.RB ( {} ) +has no effect and always gives a nil status. For instance +the following commands all produce the same result: +.EX + echo hello world + {echo hello world} + '{echo hello world}' + {echo $*} hello world + sh -c {echo hello world} + {$*} {echo hello world} + {$*} {{$*} {echo hello world}} + "{echo {echo hello world}} + '{echo hello' ^ ' world}' + x := {echo hello world}; $x +.EE +It is important to note that the value of +.B $* +is lost every time a braced block is entered, so +for instance, the following command prints an empty string: +.EX + {{echo $*}} hello world +.EE +.PD +.SS Built-in Commands +The term ``built-in command'', or just ``builtin'', is used somewhat loosely +in this document to refer to any command that is executed +directly by the shell; most built-in commands are defined +by externally loaded modules; there are a few that are not, +known as ``internal'' builtins, listed below. +.PP +Given +.IR sh 's +ability to pass compound commands (braced blocks) as +arguments to other commands, most control-flow +functionality that is traditionally hard-wired into a shell +is in +.I sh +implemented by loadable modules. See +.IR sh-std (1), +.IR sh-expr (1), +and +.IR sh-tk (1) +for more details. +.PP +There are two classes of built-in commands; +the first class, known simply as ``builtins'', are used in +the same way as normal commands, the only difference +being that builtins can raise exceptions, while external +commands cannot, as they are run in a separate process. +The second class, known as +``builtin substitutions'' can only be used as the first +word of the command in the +.B ${} +operator. The two classes exist in different name-spaces: +a builtin may do something quite different from a +builtin substitution of the same name. +.PP +In general, normal builtins perform some action +or test some condition; +the return status of a normal builtin usually +indicates error status or conditional success. The +rôle of a substitution builtin is to yield a value, +(possibly a list) +which is substituted directly into place as part +of the argument list of a command. +.PP +.PD 0 +.HP +.BI @ " command ..." +.br +Execute +.I command +in a subshell, allowing (for instance) the name-space to be +forked independently of main shell. +.HP +.BI run " file ..." +.br +Execute commands from +.IR file . +.B $* +is set for the duration to the remainder of the argument list following +.IR file . +.HP +.BI builtin " command ..." +.br +Execute +.I command +as usual except that any command defined by an external +module is ignored in favour of the original meaning. +This command cannot be redefined by an external module. +.HP +.B exit +.br +Terminate the current process. +.HP +.BI load " path..." +.br +.B Load +tries to load each of its arguments as a builtin module +into +.IR sh . +If a module load succeeds, each builtin +command defined by that module is +added to the list of builtin commands. +If there was a previous definition of the command, +it is replaced, with the exception of internal +.I sh +builtins, which are covered up and reappear when +the module is unloaded. If a module with +the same +.I path +has already been loaded, +.I sh +does not try to load it again. +Unless the path begins with +.B / +or +.BR ./ , +the shell looks in the standard builtins directory +.B /dis/sh +for the module. +If a load fails, a +.B bad module +exception is raised. +.HP +.BI unload " path..." +.br +.B Unload +undoes previous load commands. To succeed, +.I path +must be the same as that given to a previous +invocation of +.BR load . +.HP +.B loaded +.br +.B Loaded +prints all the builtin commands currently +defined, along with the name of the module that defined them. +Internally defined commands are tagged with +module +.BR builtin . +.HP +.BI whatis " name ..." +.br +Print the value of each +.I name +in a form suitable for input to +.IR sh . +The forms are: +.RS 10 +.TP +.I varname = "value..." +.I Varname +is a non-nil environment variable. +.TP +.BI load\ module ;\ name +.I Name +has been defined as a builtin by the externally loaded +.IR module . +.TP +.BI load\ module ;\ ${ name } +.I Name +has been defined as a builtin substitution by the externally loaded +.IR module . +.TP +.BI builtin\ name +.I Name +is defined as a builtin internally by +.IR sh . +.TP +.BI ${ name } +.I Name +is defined as a builtin substitution +internally by the shell. +.TP +.I pathname +The completed pathname of an external file. +.RE +.HP +.B ${builtin +.I command +... +.B } +.br +Does for substitution builtin commands +what +.B builtin +does for normal commands. +.HP +.B ${loaded} +.br +The +.B loaded +builtin substitution yields a list of the names of all +the modules currently loaded, as passed to +.BR load . +.HP +.BI ${quote \ list } +.br +.B Quote +yields a single element +list which if reparsed by the shell +will recreate +.IR list . +.HP +.BI ${bquote \ list } +.br +Same as +.B quote +except that items in +.I list +that are known to be +well-formed command blocks are not quoted. +.HP +.BI ${unquote \ arg} +.br +.B Unquote +reverses the operation of +.BR quote , +yielding the original list of values. For example, +.BI "${unquote ${quote " list }} +yields +.IR list . +A list quoted with +.B bquote +can only be unquoted by parsing. +.PD +.SS Environment +The +.I environment +is a list of strings made available to externally executing commands by the +.B env +module +(see +.IR env (2)). +If the +.B env +module does not exist or cannot be loaded, no error will be +reported, but no variables can be exported to external commands. +.I Sh +creates an environment entry for each variable whose value is non-empty. +This is formatted as if it had been run through +.BR ${quote} . +Note that in order for a variable to be exported, its +name must conform to the restrictions imposed +by +.IR env (3); +names that do not will not be exported. +.PP +When +.I sh +starts executing it reads variable definitions from its +environment. +.PP +Internally, the shell holds a +.IR context , +which holds a stack of environment variables, the +current execution flags and the list of built-in modules. +A copy is made whereever parallel access to the context might +occur. This happens for processes executing +in a pipeline, +processes run asynchronously with +.BR & , +and in any builtin command that runs a shell command +asynchronously. +.SS Exceptions +When +.I sh +encounters an error processing its input, an exception is raised, +and if the +.B -v +flag is set, an error message is printed to +standard error. +An exception causes processing of the current command to terminate +and control to be transferred back up the invocation stack. +In an interactive shell, the central command processing loop +catches all exceptions and sets +.B $status +to the name of the exception. +Exceptions are not propagated between processes. Any +command that requires I/O redirection is run in a separate +process, namely pipes +.RB ( | ), +redirections +.RB ( > , +.BR < , +.BR >> , +and +.BR <> ), +backquote substitution +(\f5`\fP, \f5"\fP) +and background processes +.RB ( & ). +Exceptions can be raised and rescued using +the +.B raise +and +.B rescue +functions in the standard builtins module, +.BR std . +(See +.IR sh-std (1)). +Names of exceptions raised by +.I sh +include: +.TP 10 +.B parse error +An error has occurred trying to parse a command. +.TP +.B usage +A builtin has been passed an invalid set of arguments; +.TP +.B bad redir +An error was encountered trying to open files prior +to running a process. +.TP +.B bad $ arg +An invalid name was given to the $ or ${} operator. +.TP +.B no pipe +.I Sh +failed to make a pipe. +.TP +.B bad wait read +An error occurred while waiting for a process to exit. +.TP +.B builtin not found +A substitution builtin was named but not found. +.SS Special Variables +The following variables are set or used by +.IR sh . +.PD 0 +.TP \w'\fL$promptXX'u +.B $* +Set to +.IR sh 's +argument list during initialization. +Whenever a +braced block +is executed, the current value is saved and +.B $* +receives the new argument list. +The saved value is restored on completion of the +.BR block . +.TP +.B $apid +Whenever a process is started asynchronously with +.BR & , +.B $apid +is set to its process id. +.TP +.B $ifs +The input field separators used in backquote substitutions. +If +.B $ifs +is not set in +.IR sh 's +environment, it is initialized to blank, tab and newline. +.TP +.B $prompt +When +.I sh +is run interactively, the first component of +.B $prompt +is printed before reading each command. +The second component is printed whenever a newline is typed and more lines +are required to complete the command. +If not set in the environment, it is initialized by +.BR "prompt=('%\ '\ '')" . +.TP +.B $status +Set to the wait message of the last-executed program, +the return status of the last-executed builtin +(unless started with +.BR &), +or the name of the last-raised exception, whichever +is most recent. +When +.I sh +exits at end-of-file of its input, +.B $status +is its exit status. +.PD +.SS Invocation +If +.I sh +is started with no arguments it reads commands from standard input. +Otherwise its first non-flag argument is the name of a file from which +to read commands (but see +.B -c +below). +Subsequent arguments become the initial value of +.BR $* . +.I Sh +accepts the following command-line flags. +.PD 0 +.TP \w'\fL-c\ \fIstring\fLXX'u +.BI -c " string" +Commands are read from +.IR string . +.TP +.B -i +If +.B -i +is present, or +.I sh +is given no arguments and its standard input is a terminal, +it runs interactively. +Commands are prompted for using +.BR $prompt . +This option implies +.BR -v . +.TP +.B -l +If +.B -l +is given or the first character of argument zero is +.BR - , +.I sh +reads commands from +.BR /lib/sh/profile , +if it exists, and then +.BR ./lib/profile , +if it exists, before reading its normal input. +.TP +.B -n +Normally, +.I sh +forks its namespace on startup; if +.B -n +is given, this behaviour is suppressed. +.TP +.B -v +Within a non-interactive shell, informational messages +printed to standard error are usually disabled; +giving the +.B -v +flag enables them. +.TP +.B -x +Print each simple command to stderr before executing it. +.PD +.SH SOURCE +.B /appl/cmd/sh/sh.y +.SH "SEE ALSO" +.IR sh (1), +.IR sh-std (1), +.IR sh-expr (1), +.IR sh-file2chan (1), +.IR sh-tk (1), +.IR sh-arg (1), +.IR sh-regex (1), +.IR sh-string (1), +.IR sh-csv (1), +.IR sh (2), +.IR env (2) +.SH BUGS +Due to lack of system support, appending to +a file with +.B >> +will not work correctly when there are +multiple concurrent writers (but see the +examples section of +.IR sh-file2chan (1) +for one solution to this). +.PP +While it +.I is +possible to use the shell as a general +purpose programming language, it is a very slow one! +Intensive tasks are best done in Limbo, which is a much +safer language to boot. diff --git a/man/1/sh-alphabet b/man/1/sh-alphabet new file mode 100644 index 00000000..fd73e20f --- /dev/null +++ b/man/1/sh-alphabet @@ -0,0 +1,417 @@ +.TH SH-ALPHABET 1 +.SH NAME +alphabet, typeset, declare, import, type, define, autodeclare, +autoconvert, -, rewrite, modules, types, usage, info, clear \- typed shell interface +.SH SYNOPSIS +.B load alphabet + +.B type +.IR qname ... +.br +.B declare +.I name +[ +.I usage +] +.br +.B undeclare +.IR name ... +.br +.B define +.I name +.I expr +.br +.B import +.IR qname ... +.br +.B typeset +.I qname +.br +.B autoconvert +.I srctype dsttype expr +.br +.B autodeclare +.BR "" 0 | 1 +.br +.B - +.BI { expression } +.br +.B ${rewrite {\fIexpression\fP} +[ +.I dsttype +] +.B } +.br +.B ${modules} +.br +.B ${types +.I typeset +.B } +.br +.B ${usage +.I qname +.B } +.br +.B info +.br +.B clear +.SH DESCRIPTION +.I Alphabet +is a loadable +.IR sh (1) +module providing an interface to a simple, experimental, typed shell. +It initially provides a small set of basic types, which can be added +to by loading new +.IR typeset s. +Types are atomic; +.I alphabet +provides no support for higher-order +types. +The +.IR "root typeset" , +named +.BR / , +consists of the following kinds of value: +.TP 10 +.B string +A simple string literal, represented by itself, +or quoted according to the usual shell quoting rules. +.TP +.B cmd +A shell command or uninterpreted +.I alphabet +expression, represented by the syntax \f5"{\fIblock\f5}\fR. +.TP +.B fd +A file open for reading. +.TP +.B wfd +A file open for reading and writing. +.TP +.B status +The status of a completed command. +.PP +Each typeset implements a set of +types, and has an associated set of +.IR module s. +Initially, types may only be referred to by their +.IR "qualified name" s, +consisting of the name of the type prefixed with +the name of its typeset; for instance +.B /string +for the string type, +or +.B /grid/data +for a type named +.B data +in the typeset +.BR /grid . +An +.I "unqualified name" +is the qualified name without the typeset prefix; +for instance +.B string +or +.BR data . +.PP +To make a type available as its unqualified name, +use the +.B type +command, which imports the type named +by the qualified name +.I qname +from its parent typeset. +This is a no-op if the type has previously been imported +from the same typeset; an error is raised if the type +has previously been imported from a different typeset. +.PP +.B Declare +declares the module +.IR name +with type +.IR usage . +If +.I name +is a qualified name, the module must exist in the +specified typeset and be compatible with the specified usage. +If +.I usage +is not given, the module itself will be loaded and queried +to find it out. +If +.I name +is not qualified, the declaration is +.IR virtual : +the module cannot actually be used, but is available +for typechecking and expression rewriting. +.B Declare +is a no-op if the module has already been declared +with a compatible usage, otherwise an error is raised. +The syntax of +.I usage +is similar to the usage messages printed by normal +shell commands, and defines the argument types expected +by a module. For example: +.IP +.EX +declare /foo/bar '[-a] [-x string] fd string [string...] -> fd' +.EE +.PP +The above declares the module +.B bar +from typeset +.BR /foo , +which takes +two possible options (one of which requires a single +associated argument of type +.BR string ), +two mandatory arguments, +of type +.B fd +and +.B string +respectively, +and any number of additional arguments of +type +.BR string . +The module returns a value of type +.BR fd . +.PP +When first loaded, +.I alphabet +is lax about declaration requirements: +if a module is referred to by its qualified name, +and is not currently declared, the module will automatically +be declared and used as appropriate (as long as the module +actually exists). +Use +.B autodeclare +to change this behaviour. +.B "Autodeclare 0" +turns off all automatic declaration: all modules used in an +expression must have previously been declared; +.B "autodeclare 1" +reverts to the original behaviour. +.PP +Once a module is declared, it may be referred to +by its qualified name. +.B Import +makes the module available under its unqualified name. +It is an error if a module of the same name has +already been imported from a different typeset. +For instance: +.IP +.EX +declare /read 'string -> fd' +import /read +.EE +.PP +This would declare a module named +.B read +from the root typeset (checking that it +accepts a single string argument and returns a file), +and make it available under the name +.BR read . +.PP +.B Undeclare +removes the previously declared +.IR name . +Note that an imported module has two names: +its qualified name and its unqualified name. +.PP +.B Typeset +loads the new typeset +.IR qname . +Typesets are hierarchical in the same +way that types and modules are: a typeset adds some +types to its parent typeset, and has an associated set of +modules that provide transformations between those types +and between those of its parent. +.PP +.B Autoconvert +specifies an automatic conversion between +.I srctype +and +.IR dsttype , +i.e. whereever a module expects an argument +of type +.IR dsttype , +and the argument is actually of type +.IR srctype , +the module block (see below for definition) +.I expr +(which must be compatible with type +.IB srctype -> dsttype\fR), +will be invoked to convert between the two. +Several conversions will be applied +atop one another if necessary. +It is an error if adding the auto-conversion +creates an ambiguous conversion path +between two types. +As a convenience, +.I expr +may simply be the name of a module, +in which case the expression will be rewritten as +its identity module block: \f5{(\fIsrctype\fP); \fIexpr\fP}\fR. +.PP +The +.B - +command evaluates the +.I alphabet +.IR expression , +of the form: +.IP +.EX +{\fIcommand arg\fR...\f5} +.EE +.PP +Usually, +.I command +is the name of a previously declared module, +which must also have been imported if it is not a qualified name. +The arguments must conform to those expected by +the module. Each argument is either a literal string or shell-command, +as described earlier, or a subexpression of the same form as above. +All subexpressions are evaluated fully before +.I command +is invoked. +The result of the outermost expression must be convertible to the type +.BR /status ; +the shell status of the +.B - +command will reflect this when the command has completed. +.PP +As a convenience, +.I alphabet +provides a pipe-like syntax. It will rewrite any expression of the +form \fIm1 m1args\f5|\fIm2 m2args\fR +as \fIm2 \f5{\fIm1 m1args\f5}\fIm2args\fR. +This occurs before any auto-conversions have been applied. +.PP +.I Command +may also be a +.IR "module block" , +of the form: +.IP +.EX +{(\fIargtype\fR...\f5); \fIcommand arg\fR...\f5} +.EE +.PP +The +.I argtype +values given in the brackets +specify the types of the arguments expected by the module block; +these can be referred to in the arguments to +.I command +(and subexpressions thereof) with values of the form +.BR $1 , +.BR $2 , +etc. +For instance, +.IP +.EX +{(/string); echo $1} hello} +.EE +.PP +is exactly equivalent to: +.IP +.EX +{echo hello} +.EE +.PP +In a module block with no arguments, the argument declaration +section may be omitted. +.PP +.B Define +defines a new module in terms of previously declared +modules. +.I Name +(which must be an unqualified name) +gives the name of the +module to define, and +.I expr +is a module block giving the expression to evaluate when +.I name +is used. The usage of the module is taken from the types declared +in the module block; its return type is inferred from the return type +of +.IR expr . +All modules used in the evaluation of +.I expr +are evaluated when the definition takes place, so evaluation of +.I name +is unaffected if any modules it uses are later undeclared. +.PP +To show the complete form of an expression, after pipe +transformations and auto-conversions have been applied, and +module definitions expanded, use +.BR ${rewrite} , +which returns the expression's canonical form +without actually executing it. +If +.I dsttype +is given, auto-conversions will be applied to try to +convert the result of +.I expression +to +.IR dsttype . +.B Rewrite +raises an error if it finds any declarations incompatible with +.IR expression +or if the final type cannot be converted successfully. +.PP +.I Alphabet +also provides some shell operations that give information +on its current state: +.B ${modules} +yields a list of all the currently declared module names +(including entries for both qualified and unqualified names); +.B ${types} +yields a list of all currently available types +(giving only the types in +.I typeset +if specified); +and +.B ${usage} +provides usage information on module +.IR qname , +which need not be declared. +Additionally, +.B info +searches the module directories on all currently loaded typesets, +and prints usage information for everything it can find there, +along with information on all currently installed auto-conversions. +.PP +Finally, +.B clear +clears all existing declarations and definitions, and starts again +with a clean slate. +.SH EXAMPLE +.EX +load alphabet +type /string +type /fd +type /status +import /cat /filter +autoconvert string fd /read +autoconvert fd status {(fd); /print $1 1} +define wc {(fd); /filter $1 "{wc}} +- {cat /lib/polyhedra /dis/sh.dis | wc} +echo ${rewrite {cat /lib/polyhedra /dis/sh.dis | wc} status} +.EE +.SH SOURCE +.B /appl/alphabet/*.b +.br +.B /appl/alphabet/*/*.b +.SH BUGS +.I Alphabet +expressions involving external typesets and file descriptors cannot have +their I/O +redirected at the shell level. Unfortunately it is not possible +to provide a diagnostic when this occurs. +.SH SEE ALSO +.IR sh (1), +.IR alphabet (2), +.IR alphabet-main (1), +.IR alphabet-fs (1), +.IR alphabet-grid (1) diff --git a/man/1/sh-arg b/man/1/sh-arg new file mode 100644 index 00000000..17f3d505 --- /dev/null +++ b/man/1/sh-arg @@ -0,0 +1,129 @@ +.TH SH-ARG 1 +.SH NAME +arg \- shell command-line argument parsing +.SH SYNOPSIS +.B load arg +.br +.B arg +[ +.I opts command +]... +.B - +.I args +.SH DESCRIPTION +.I Arg +is a loadable module for +.IR sh (1) +that parses command-line arguments in the same +form as +.IR arg (2). +It accepts a list of +.RI ( opts ,\ command ) +pairs, where +each character in +.I opts +is an acceptable option, and +.I command +is a shell command to be run if any character +in +.I opts +is found. +Any trailing plus +.RB ( + ) +characters in +.I opts +cause +.I arg +to extract the same number of arguments associated +with the option before running +.IR command . + +For the duration of +.IR command , +the environment variable +.B $opt +will be set to the option that has been found, +and +.B $arg +will be set to the option's arguments (if the correct number +of arguments have been extracted; +otherwise a message will be printed, and a +.B usage +exception raised). +The option character asterisk +.RB ( * ) +matches any option letter (this must +be quoted, to avoid the usual special interpretation +by the shell). +Only one command will be run for any option found; +if there is no matching option letter, then +a default error message will be printed, and a +.B usage +exception raised. +.PP +The list of option specifications is terminated with a single +minus +.RB ( - ); +the arguments to be parsed follow this. +When the argument parsing has finished +the environment variable +.B $* +is set to the remaining list of arguments. +.SH EXAMPLE +The following shell script, +.BR script , +takes options +.BR b , +.B c +and +.BR f , +where +.B f +takes a file name argument. +.EX +#!/dis/sh +load arg +bflag := cflag := 0 +file := () +args := $* +(arg + bc {$opt^flag = 1} + f+ {file=$arg} + r++++ {rect=$arg} + '*' {echo unknown option $opt} + - $args +) +echo $0 $bflag $cflag $file +echo rect $rect +echo arguments are $* +.EE +.PP +When invoked as follows: +.IP +.B "script -bc -r 0 10 50 100 -ffile a b c" +.PP +the output is: +.IP +.EX +\&./script 1 1 file +rect 0 10 50 100 +arguments are a b c +.EE +.PP +and when invoked by: +.IP +.B "script -b -f file -z -- -bc" +.PP +the output is: +.IP +.EX +unknown option z +\&./script 1 0 file +arguments are -bc +.EE +.SH SOURCE +.B /appl/cmd/sh/arg.b +.SH SEE ALSO +.IR sh (1), +.IR arg (2), +.IR sh-std (1) diff --git a/man/1/sh-csv b/man/1/sh-csv new file mode 100644 index 00000000..56ba9fc2 --- /dev/null +++ b/man/1/sh-csv @@ -0,0 +1,66 @@ +.TH SH-CSV 1 +.SH NAME +csv, getcsv \- parse ``comma-separated values'' +.SH SYNOPSIS +.B load csv + +.B getcsv +.I command +.br +.B ${csv +.IB list } +.br + +.SH DESCRIPTION +.B Csv +is a loadable module for +.IR sh (1) +that provides the facility to parse and generate +``comma-separated value'' lists, a widely used +data exchange format. +Data in this format is usually in the form of a table, +each row of which contains one or more items, +each separated by a comma +.RB ( , ). +Items that contain +a comma or a newline are surrounded with double-quotes +(\f5"\fP). +A double-quote within an item is represented by a pair +of double-quotes. +Two primitives are provided: +.TP 10 +.B getcsv +.B Getcsv +works similiarly to +.B getlines +in +.IR sh-std (1). +It reads from the standard input, and for every line read, +invokes +.I command +with +.B $line +set to the items found on that line (one element per item). +.B Getcsv +recognises the usual loop +.B break +and +.B continue +exceptions. +.TP +.B ${csv} +.B Csv +yields a single element containing all the items in +.IR list , +comma-separated and quoted as necessary. +.SH SOURCE +.B /appl/cmd/sh/csv.b +.SH SEE ALSO +.IR sh (1), +.IR sh-std (1) +.SH BUGS +Empty lines are ambiguous: +.B csv +treats an empty line as containing a single, +empty element; there is thus no way of +representing an line containing no elements at all. diff --git a/man/1/sh-expr b/man/1/sh-expr new file mode 100644 index 00000000..b640e339 --- /dev/null +++ b/man/1/sh-expr @@ -0,0 +1,157 @@ +.TH SH-EXPR 1 +.SH NAME +expr, ntest \- shell module for simple arithmetic. +.SH SYNOPSIS +.B load expr + +.B ${expr +[ +-r +.I radix +] +[ +.I arg... +] +.B } +.br +.B ntest +.I num +.br +.SH DESCRIPTION +.B Expr +is a loadable module for +.IR sh (1) +that provides support for simple integer arithmetic. +It provides one command, +.BR ntest , +which performs a simple boolean test +on its integer argument, and the +substitution operator +.BR expr , +which takes an expression in Reverse Polish +notation, and yields its result. +.B Ntest +returns true if its argument +.I num +is non-zero. +.B Expr +evaluates each +.I arg +in turn; if it is an integer it gets pushed onto +the stack; otherwise it should name +one of the operators below, whereupon +the appropriate number of operands are +popped off the stack, evaluated as arguments +to the operator, and the result pushed back onto +the stack. Arguments are passed to the operator +first-pushed first, so, for instance, +.B ${expr 2 1 -} +yields 1, not -1. +Alternative names are given for some operators; +this is to avoid the necessity of quoting operators +that contain +.I sh +metacharacters. All operations use 64-bit signed +integers; integers are given in the same form acceptable +to Limbo. The relational operators yield either +1 (true) or 0 (false). If the +.B -r +option is given, +.I radix +specifies an output base for numbers yielded by +.BR expr . +Numbers are printed in a form suitable for re-interpretation +by +.BR expr . +.PP +When all its arguments have been evaluated, +.B expr +yields all the values remaining on its stack, first pushed +first. The operators supported by expr are as follows (the number +of operands required in is given parentheses): +.TP 15 +.BR + \ (2) +Addition +.TP +.BR - \ (2) +Subtraction +.TP +.BR x ,\ * \ (2) +Multiplication +.TP +.BR / \ (2) +Division. Division by zero raises a +.B divide by zero +exception. +.TP +.BR % \ (2) +Modulus. A zero modulus will cause a +.B divide by zero +exception to be raised. +.TP +.BR and \ (2) +Bitwise-and. +.TP +.BR or \ (2) +Bitwise-or. +.TP +.BR xor \ (2) +Bitwise-xor. +.TP +.BR ~ \ (1) +Bitwise-complement.. +.TP +.BR _ \ (1) +Unary minus. +.TP +.BR << ,\ shl \ (2) +Shift left. +.TP +.BR >> ,\ shr \ (2) +Shift right. +.TP +.BR = ", " == ", " eq " (2)" +Equality. +.TP +.BR != ", " neq " (2)" +Inequality. +.TP +.BR > ", " gt " (2)" +Greater than. +.TP +.BR < ", " lt " (2)" +Less than. +.TP +.BR <= ", " le " (2)" +Less than or equal to. +.TP +.BR >= ", " ge " (2)" +Greater than or equal to. +.TP +.BR ! ", " not " (1)" +Logical negation. +.TP +.BI rep \ \f1(\fPn\f1)\fP +.B Rep +repeats the last operation (which must +have been a two-operand operation other +than +.BR seq ) +until the values in the stack are exhausted. +.TP +.BR seq \ (2) +.B Seq +pushes on the stack a sequence of numbers ranging +numerically from its first argument up to and including +its second argument. If its second argument is +less than its first, the sequence will descend. +.SH SOURCE +.B /appl/cmd/sh/expr.b +.SH SEE ALSO +.IR sh (1), +.IR sh-std (1), +.IR sh-tk (1) +.SH BUGS +Postfix notation can be confusing. +Any operators that contain shell metacharacters (e.g. ``*'', ``>'') +must be quoted to avoid interpretation by the shell. diff --git a/man/1/sh-file2chan b/man/1/sh-file2chan new file mode 100644 index 00000000..d9a57304 --- /dev/null +++ b/man/1/sh-file2chan @@ -0,0 +1,261 @@ +.TH SH-FILE2CHAN 1 +.SH NAME +file2chan, rblock, rdata, rerror, rget, rread, rreadone, rwrite \- shell interface to file2chan +.SH SYNOPSIS +.B load file2chan + +.B file2chan +.I filename +.I readcmd writecmd +[ +.I closecmd +] +.br +.B rblock +[ +.I tag +] +.br +.B fetchwdata +[ +.I tag +] +.br +.B putrdata +[ +.I tag +] +.br +.B rerror +[ +.I tag +] +.I errmsg +.br +.B rread +[ +.I tag +] +.I readdata +.br +.B rreadone +[ +.I tag +] +.I readdata +.br +.B rwrite +[ +.I tag +[ +.I count +] ] +.br +.B ${rget +.RB ( data\fP|\fPcount\fP|\fPoffset\fP|\fPfid ) +[ +.I tag +] +.B } +.br +.SH DESCRIPTION +.I File2chan +is a loadable module for +.IR sh (1) +that provides facilities to create a file in the namespace +with properties determined by a shell script. +.B File2chan +creates +.I filename +in the namespace and spawns a new thread to serve the file. +If the creation succeeds and the thread is spawned successfully, +then the environment variable +.B $apid +is set to the process id of the new thread; otherwise an error (non-nil) +status is returned. +.IR Readcmd , +.IR writecmd +and +.I closecmd +should be +executable +.IR sh (1) +command blocks. +Subsequently, whenever a process reads from +.IR filename , +.I readcmd +will be invoked; whenever a process writes +to +.IR filename , +.I writecmd +will be invoked; whenever an open file on +.I filename +is closed, then +.I closecmd +will be invoked, if present. +.PP +When a read or write request arrives, +it is added to a list of currently outstanding +.I tags +maintained by +.IR file2chan . +If the request is not replied to or acknowledged by the time +the invoked command has finished, then a reply +will be made automatically (the default is to accept +all writes and to give an error on all reads). +Each tag is assigned a unique +.I tag id +which is stored in the environment variable +.B $tag +for the duration of the invoked command. +Most commands take an optional +.I tag +argument which should be the +.I tag id +of a currently outstanding request; if omitted, +the value of +.B $tag +will be used. +The following commands are provided to reply to requests +and obtain information about requests: +.TP 10 +.B rblock +.B Rblock +marks +.I tag +as a blocking request - no automatic reply will be made when +the currently invoked command has terminated; the +process making the request will block until a reply is made. +.TP +.B fetchwdata +.B Fetchwdata +writes the data associated with +.I tag +(which must be a write request) to its standard output. +It is useful if an uncorrupted version of binary data is +wanted, as it avoids the data being interpreted as a utf-8 +string. +.TP +.B putrdata +.B Putrdata +is the converse of +.BR fetchwdata : +it reads data from its standard input and replies to +.I tag +(which must be a read request) with the data read. +Any data in excess of that requested will be lost. +.TP +.B rerror +.B Rerror +replies to +.I tag +with an error code; the remote read +or write request will return an +error, with the description +.IR errmsg . +.TP +.B rread +.B Rread +replies to the read request +.I tag +with the data in +.IR readdata . +If +.I readdata +is longer than the number of bytes requested, +then only the requested number of bytes of +.I readdata +will +be sent. The offset of the read request is ignored. +.TP +.B rreadone +.B Rreadone +is similar to +.B rread +except that it honours the offset of the client's +read request, so the client can use consecutive +reads to retrieve all of +.IR readdata . +.TP +.B rwrite +.B Rwrite +replies to the write request +.IR tag . +If +.I count +is given, then the client's write request will return +that number (it is usually considered an error if the return +from +.I write +(see +.IR sys-read (2)) +is not the same as the number of bytes written). +If +.I count +is omitted, all the bytes are assumed to have been written. +.TP +.B ${rget} +.B Rget +retrieves information associated with +.IR tag . +The information it yields depends on its first argument, +which must be one of: +.RS +.TP +.B data +The data associated with write request +.IR tag . +.TP +.B count +The number of bytes requested by read request +.IR tag . +.TP +.B fid +The client's file identifier associated with +.IR tag . +A unique +.I fid +is associated with all client requests emanating from +the same open file. This is the only +.B rget +request valid with the +.I tag +associated with a close operation. +.TP +.B offset +The file offset associated with the request +.IR tag . +.RE +.SH EXAMPLES +The following code creates a very simple +memory-based file called +.BR /tmp/memfile . +.EX + file2chan /tmp/memfile {rreadone $data} {data = ${rget data}} +.EE +It is, however, very limited, as binary data stored in the file +will be corrupted, and the size of the file is limited to the amount +of data that can be transmitted in a single Styx message (8192 bytes). +.PP +The following code implements a single-threaded logfile +which can support multiple concurrent writers: +.EX + {file2chan /chan/log {} {fetchwdata}} >> /tmp/logfile +.EE +.PP +The following code makes the command +.B cmd +available to external programs, and defines a shell function +to use it. Note that there's an approximate 8K limit on the size of the argument +list that can be passed in this way. +.EX + load std + file2chan /chan/cmdchan {} {cmd ${unquote ${rget data}}} + fn runcmd {echo -n ${quote $*} > /chan/cmdchan} +.EE +.SH SOURCE +.B /appl/cmd/sh/file2chan.b +.SH SEE ALSO +.IR sys-file2chan (2), +.IR sh (1), +.IR intro (5), diff --git a/man/1/sh-regex b/man/1/sh-regex new file mode 100644 index 00000000..9fe4f820 --- /dev/null +++ b/man/1/sh-regex @@ -0,0 +1,178 @@ +.TH SH-REGEX 1 +.SH NAME +re, match \- shell script regular expression handling +.SH SYNOPSIS +.B load regex + +.B match +.I regex +[ +.IR arg ... +] +.br +.B ${re +.I op +.IR arg... +.B } +.br +.SH DESCRIPTION +.I Regex +is a loadable module for +.IR sh (1) +that provides access to regular-expression +pattern matching and substitution. +For details of regular expression syntax in Inferno, +see +.IR regexp (6). +.I Regex +defines one builtin command, +.BR match , +and one builtin substitution operator, +.BR re . +.B Match +gives a false exit status if its argument +.I regex +fails to match any +.IR arg . +.B Re +provides several operations, detailed below: +.TP 10 +\f5${re g\fP \fIregexp\fP \fR[\fP \fIarg\fP\fR...\fP\fR]\fP\f5}\fP +Yields a list of each +.I arg +that matches +.IR regexp . +.TP +\f5${re v\fP \fIregexp\fP \fR[\fP \fIarg\fP\fR...\fP\fR]\fP\f5}\fP +Yields a list of each +.I arg +that does not match +.IR regexp . +.TP +\f5${re m\fP \fIregexp\fP \fIarg\fP\f5}\fP +Yields the portion of +.I arg +that matches +.IR regexp , +or an empty list if there was no match. +.TP +\f5${re M\fP \fIregexp\fP \fIarg\fP\f5}\fP +Yields a list consisting of the portion +of +.I arg +that matches +.IR regexp , +followed by list elements giving the portion +of +.I arg +that matched each parenthesized subexpression +in turn. +.TP +\f5${re mg\fP \fIregexp\fP \fIarg\fP\f5}\fP +Similar to +.B re m +except that it applies the match consecutively +through +.IR arg , +yielding a list of all the portions of +.I arg +that match +.IR regexp . +If a match is made to the null string, +no subsequent substitutions will take place. +.TP +\f5${re s\fP \fIregexp\fP \fIsubs\fP [ \fIarg\fP... ]\f5}\fP +For each +.IR arg , +.B re s +substitutes the first occurrence of +.I regexp +(if any) by +.IR subs . +If +.I subs +contains a sequence of the form +.BI \e d +where +.I d +is a single decimal digit, +the +.IR d th +parenthesised subexpression in +.I regexp +will be substituted in its place. +.B \e0 +is substituted by the entire match. +If any other character follows a +backslash +.RB ( \e ), +that character will be substituted. +Arguments which contain no match to +.I regexp +will be left unchanged. +.TP +\f5${re sg\fP \fIregexp\fP \fIsubs\fP [ \fIarg\fP... ]\f5}\fP +Similar to +.B re s +except that all matches of +.I regexp +within each +.I arg +will be substituted for, rather than just the +first match. Only one occurrence of the null string is +substituted. +.PP +.SH EXAMPLES +List all files in the current directory that +end in +.B .dis +or +.BR .sbl : +.EX + ls -l ${re g '\e.(sbl|dis)$' *} +.EE +.PP +Break +.I string +up into its constituent characters, +putting the result in shell variable +.BR x : +.EX + x = ${re mg '.|\en' \fIstring\fP} +.EE +.PP +Quote a string +.B s +so that it can be used as +a literal regular expression without worrying +about metacharacters: +.EX + s = ${re sg '[*|[\e\e+.^$()?]' '\e\e\e0' $s} +.EE +.PP +Define a substitution function +.B pat2regexp +to convert shell-style +patterns into equivalent regular expressions +(e.g. +.RB `` ?.sbl* '' +would become +.RB `` ^.\e.sbl.*$ ''): +.EX + load std + subfn pat2regexp { + result = '^' ^ ${re sg '\e*' '.*' + ${re sg '\?' '.' + ${re sg '[()+\e\e.^$|]' '\e\e\e0' $*} + } + } ^ '$' + } +.EE +.SH SOURCE +.B /appl/cmd/sh/regex.b +.SH SEE ALSO +.IR regexp (6), +.IR regex (2), +.IR sh (1), +.IR string (2), +.IR sh-std (1) diff --git a/man/1/sh-sexprs b/man/1/sh-sexprs new file mode 100644 index 00000000..b73f08bd --- /dev/null +++ b/man/1/sh-sexprs @@ -0,0 +1,131 @@ +.TH SH-SEXPRS 1 +.SH NAME +sexprs, islist, els, text, textels, mktext, mklist, mktextlist \- parse and generate S-expressions +.SH SYNOPSIS +.B load sexprs + +.B getsexprs +.I command +.br +.B islist +.I sexpr +.br +.B ${els +.IB sexpr } +.br +.B ${text +.IB sexpr } +.br +.B ${textels +.IB sexpr } +.br +.B ${mktext +.IB val } +.br +.B ${mklist +[ +.IR val ... +.BR "" ] } +.br +.B ${mktextlist +[ +.IR val ... +.BR "" ] } +.br +.SH DESCRIPTION +.B Sexprs +is a loadable module for +.IR sh (1) +that provides the facility to parse and generate +S-expressions (see +.IR sexprs (2)). +The following primitives are provided: +.TP 10 +.B getsexprs +.B Getsexprs +works similiarly to +.B getlines +in +.IR sh-std (1). +It reads S-expressions from the standard input, and for expression read, it +invokes +.I command +with +.B $sexp +set to the text representation of that expression. +.B Getsexprs +recognises the usual loop +.B break +and +.B continue +exceptions. +.TP +.BI islist\ sexp +.B Islist +yields a nil (true) status if +.IR sexp , +which must be a well-formed S-expression, +is a list element. +.TP +.BI ${els\ sexp } +If +.I sexp +is an S-expression containing a list, +then +.B els +returns a list of the S-expressions it contains. +It is an error if +.I sexp +is not a valid S-expression. +.TP +.BI ${text\ sexp } +If +.I sexp +is an S-expression containing a simple element, +then +.B text +returns the value of that element. If +.I sexp +is a list, the return value will be an empty string. +Note that elements +containing binary data will likely be corrupted +by conversion to utf-8. +It is an error if +.I sexp +is not a valid S-expression. +.TP +.BR ${textels\ sexp } +If +.I sexp +is an S-expression containing a list, then +.B textels +returns a list of the text values in that S-expression, +converted as with +.BR ${text} . +It is an error if +.I sexp +is not a valid S-expression. +.TP +.BR ${mktext\ val } +.B Mktext +returns a text representation of the S-expression +containing the simple value +.IR val . +.TP +.BR ${mklist\ \fR[\fPsexp\fR...]\fP } +.B Mklist +returns a text representation of the S-expression list +containing its arguments, which must be well-format +S-expressions. +.TP +.BR ${mktextlist\ \fR[\fPval\fR...]\fP } +.B Mktextlist +returns a text representation of the S-expression list +containing one simple element for each +.IR val . +.SH SOURCE +.B /appl/cmd/sh/sexprs.b +.SH SEE ALSO +.IR sh (1), +.IR sh-std (1), +.IR sexprs (2) diff --git a/man/1/sh-std b/man/1/sh-std new file mode 100644 index 00000000..efb650cc --- /dev/null +++ b/man/1/sh-std @@ -0,0 +1,557 @@ +.TH SH-STD 1 +.SH NAME +std, if, while, ~, no, !, apply, getlines, status, pctl, fn, and, or, raise, rescue, hd, tl, index, split, join, pid, parse, pctl, env \- standard shell builtins module. +.SH SYNOPSIS +.B load std + +.B ! +.I command +.br +.B ~ +.I value +[ +.IR pattern ... +] +.br +.B no +[ +.IR arg ... +] +.br +.B and +.IR command ... +.br +.B apply +.I command +[ +.IR arg ... +] +.br +.B getlines +[ +.I separators +] +.I command +.br +.B flag +.I f +[ +.B +- +] +.br +.B for +.I var +.B in +[ +.IR arg ... +] +.I command +.br +.B fn +.I name command +.br +.B if +.I condition action +[ +.I condition action +]... [ +.I elseaction +] +.br +.B or +.IR command ... +.br +.B pctl +.IR flag... +.br +.B raise +.I name +.br +.B rescue +.I pattern rescueblock command +.br +.B status +.I value +.br +.B subfn +.I name command +.br +.B if +[ +.I condition action +]... [ +.I elseaction +] +.br +.B while +.I condition command +.br +.B ${hd +.IB list } +.br +.B ${index +.I number +.IB list } +.br +.B ${pid} +.br +.B ${split +[ +.I separators +] +.IB arg } +.br +.B ${join +.I separator +.IB list } +.br +.B ${tl +.IB list } +.br +.B ${parse +.IB arg ] +.br +.B ${pipe +( +.B from +| +.B to +| +.I fdnum +) +.IB command } +.br +.B ${env} +.SH DESCRIPTION +.B Std +is a loadable module for +.IR sh (1) +that provides the equivalent of a +``standard library'' for the shell, including +a set of control-flow constructs and some +other miscellaneous commands. +In the following descriptions, if an argument is +executed, then it should be a braced block +suitable for executing by +.IR sh . +A true exit status is defined to be nil; +any non-nil exit status is false. +Unless otherwise stated, the return value +of a command is that of the last command that +it executed. +If invalid arguments are passed to any command, +a +.B usage +exception is raised, and a message printed to stderr. +.PP +Each of the looping commands +.BR for , +.BR apply , +.BR while , +and +.B getlines +installs an exception handler for the duration of the +loop to catch the exceptions +.B break +and +.BR continue . +If a +.B break +exception is caught, the loop is terminated; if a +.B continue +exception is caught, the loop will continue executing as +usual. +The commands are as follows: +.TP 10 +.B ! +.B ! +inverts the exit status of a command (non-null is changed to null, +null is changed to non-null). +.TP +.B ~ +.B ~ +matches +.I value +against each +.I pattern +in turn, returning true if any of them match and false otherwise. +The patterns are of the same form as those accepted by +the shell for filename pattern matching except that / is +not treated specially. (see +.IR filepat (2)). +Patterns +must be quoted to stop the shell from interpreting them. +.TP +.B no +True if there are no arguments. Useful for testing if there are any items in a list +without counting the items with +.BR $# . +.TP +.BI and +.B And +evaluates each +.I command +in turn until one returns false. +.TP +.B apply +.B Apply +evaluates +.I command +once for each +.IR arg , +passing it in the variable +.BR $1 . +.TP +.B getlines +.B Getlines +reads lines from the standard input, +executing +.I command +for each line, setting the environment variable +.B $line +to the line read, with any terminating character +removed. If +.I separators +is given, a line is terminated when any character +in +.I separators +is found; the default separator string +is a single newline character. +.TP +.B flag +Either set +.RB ( + ), +clear +.RB ( - ), +or test (neither +.B + +or +.BR - ) +the flag +.IR f , +where +.I f +is a single character, one of the +command line flags to +.I sh +(see +.IR sh (1)). +.TP +.B fn +.B Fn +defines a new builtin command named +.IR name ; +when run, this command evaluates +.IR command . +The command is stored in the environment +variable +.BI fn- name\f1;\fP +any variables of this form found when +when +.B std +is loaded will be defined in this way. +If +.I command +is not given, then the builtin will be removed. +.TP +.B subfn +.B Subfn +is similar to +.B fn +except that it defines a new substitution builtin +.IR name . +When +.I name +is invoked, it creates a new local variable +.B result +and executes +.IR command . +The value of +.B $result +when +.I command +has terminated is the value yielded by the substitution builtin +.IR name . +.I Command +is stored in and restored from the environment in a similar +way to +.BR fn , +except that +.BI sfn- name +is used as the name of the environment variable. +.TP +.B if +.B If +executes +.IR condition ; +if it returns true, then +.I action +is executed, otherwise each of the next +.IR condition - action +pairs is evaluated in the same way; if no +.I condition +is satisfied, then +.I elseaction +will be executed, if present. +.TP +.B for +.B For +is similar to +.BR apply ; +it runs +.I command +once for each +.IR arg , +but it performs a local assignment of +.I arg +to +.I var +each time. +.TP +.B or +.B Or +evaluates each +.I command +in turn until one returns true. +.TP +.B pctl +.B Pctl +is an interface to the Inferno system call +.IR sys-pctl (2); +each argument specifies one bit in the bitmask +passed to that function. The possible flags are +.BR newfd , +.BR forkfd , +.BR newns , +.BR forkns , +.BR newpgrp +and +.BR nodevs . +See +.IR sys-pctl (2) +for details of the meaning of these flags. +.B Pctl +returns true. +.TP +.B raise +.B Raise +raises the exception +.IR name ; +.I name +will be truncated if it is longer than +that allowed by +.I raise +(see +.IR sys-exception (2)). +Control will be transferred to the innermost +rescue block in the same process that +matches +.IR name . +If there is no rescue block in place, +the current process will exit, yielding +.I name +as its exit status. +If no +.I name +is given, the exception named in +.B $exception +is raised; if this is null, a +.B bad raise context +exception is raised. +The default command prompt catches all +exceptions. +.TP +.B rescue +.B Rescue +executes +.I command +with an exception handler installed for the duration +of the call. It will catch all exceptions with a name +matching +.IR pattern , +where +.I pattern +is of the same form accepted by +.I rescue +(see +.IR sys-exception (2)); +i.e. an exact match, or a prefix +followed by an asterisk +.RB ( * ) +which will match an exception starting with the prefix. +If an exception is caught, +.B rescue +executes +.IR rescueblock , +setting +.B $exception +to the name of the exception raised. +.TP +.B status +returns its first argument word as its exit status, +or nil if none is given. +.TP +.B while +.B While +repeatedly executes +.I condition +and then +.I action +until +.I condition +does not return true. +.TP +.B ${env} +.B Env +yields a list of the names of all +currently set non-nil environment variables. +.TP +.B ${hd} +.B Hd +yields the first of its arguments, or nil if there +are no arguments. +.TP +.B ${index} +.B Index +yields the +.IR n 'th +element in its argument list, indexed from 1. +.I N +must be a decimal integer. +.TP +.B ${join} +.B Join +yields a single element which is the concatenation of all +the elements in +.I list +separated by +.IR separator . +If there are no elements in +.IR list , +it yields an empty string. +The shell operator +\f5$"\f2var\f1 +is exactly equivalent to +.BI "${join ' ' $" var }\f1.\fP +.TP +.B ${parse} +.B Parse +parses +.I arg +according to the usual syntax rules, raising a +.B parse error +exception if it fails. +.I Arg +must be a well-formed command block +surrounded by braces. +.B Parse +yields a functionally equivalent version +of +.IR arg . +.TP +.B ${pid} +.B Pid +yields the process id of the current process. +.TP +.B ${pipe} +.B Pipe +runs +.I command +asynchronously, with one of its file descriptors connected +to a bidirectional pipe. The first argument to +.B pipe +determines which file descriptor is connected: if +the argument is +.BR from , +its standard output is connected; if the argument is +.BR to , +its standard input is connected; otherwise file descriptor +.I fdnum +is connected. +.B Pipe +yields the name of a file that can be opened to access +the other end of the pipe. This allows the construction +of non-linear pipelines. For example, the following runs two commands +.B old +and +.B new +and uses +.B cmp +to compare their outputs +.EX + cmp ${pipe from {old}} ${pipe from {new}} +.EE +.TP +.B ${split} +.B Split +splits +.I arg +into list elements at every point where one or +more characters in +.I separators +appear. If +.I separators +is not given, the value of +.B $ifs +is used. +.TP +.B ${tl} +.B Tl +yields all but the first of its arguments, +or nil if there are no arguments. +.SS Syntactic considerations +It is worth being aware of a few pitfalls that await the user of +some of these commands. Unlike other shells, the syntax of +.I sh +does not include the syntax of the control flow commands, +so it is important to be aware of the rules that govern +the gathering of the arguments for a command. +In particular, the following code, written to print a message +a filename ends in +.B .b +will not work: it will always print ``file is Limbo source''. +.EX + and + {~ $filename '*.b'} + {echo file is Limbo source} +.EE +This is because newlines separate shell commands, so +the above code first invokes +.B and +with no arguments, and then each of the braced block +commands on each subsequent line. +It is usual to use round brackets in order to group together arguments +on separate lines, e.g. +.EX + and ( + {~ $filename '*.b'} + {echo file is Limbo source} + ) +.EE +This has the originally intended meaning. +.SH FILES +.TF /tmp/pipes/* +.TP +.B /tmp/pipe.*d +Temporary placeholder directory for named pipes. +.TP +.B /tmp/pipes/* +Mount point for named pipes. +.SH SOURCE +.B /appl/cmd/sh/std.b +.SH SEE ALSO +.IR sh (1), +.IR sh-expr (1), +.IR sh-tk (1) +.SH BUGS +As the shell does not know about functions, +the +.B whatis +command cannot return information about +their value. Use +.BI "whatis fn-" name +to find out the current definition of a function, +or +.BI "whatis sfn-" name +to find out the current definition of a substitution function. + diff --git a/man/1/sh-string b/man/1/sh-string new file mode 100644 index 00000000..4b0c0860 --- /dev/null +++ b/man/1/sh-string @@ -0,0 +1,186 @@ +.TH SH-STRING 1 +.SH NAME +prefix, in, splitl, splitr, drop, take, splitstrl, splitstrr, tolower, toupper, len, alen, slice \- shell script string manipulation +.SH SYNOPSIS +.B load string + +.B prefix +.I pre s +.br +.B in +.I c cl +.br +.B ${splitl +.IB "s cl" } +.br +.B ${splitr +.IB "s cl" } +.br +.B ${splitstrl +.IB "s t" } +.br +.B ${splitstrr +.IB "s t" } +.br +.B ${take +.IB "s cl" } +.br +.B ${tolower +.IB s } +.br +.B ${toupper +.IB s } +.br +.B ${len +.IB s } +.br +.B ${alen +.IB s } +.br +.B ${slice +.IB "start end s" } +.br +.B ${fields +.IB "cl s" } +.br +.B ${padl +.I n +[ +.IR s ... +.RB ] } +.br +.B ${padr +.I n +[ +.IR s ... +.RB ] } +.br +.SH DESCRIPTION +.I String +is a loadable module for +.IR sh (1) +that provides a shell-script interface to the string +manipulation commands found in +.IR string (2), +with a couple of other facilities thrown in for good +measure. Each of the substitution builtins +.BR splitl , +.BR splitr , +.BR drop , +.BR take , +.BR splitstrl , +.BR splitstrr , +.BR tolower , +and +.BR toupper +implements the same functionality as that provided by +the function of the same name in +.IR string (2). +Where a function in the +.IR string (2) +module returns a tuple, the equivalent builtin yields +a two-element list; the others yield a list with a single +element. +.PP +In all +.I string +commands, the number of arguments provided must +be exactly that required by the command so, for instance, +giving an undefined variable (a zero element list) as +an argument will cause a +.B usage +exception to be generated. +.PP +The two builtins +.B prefix +and +.B in +are again similar to their +.IR string (2) +counterparts - their return value is true (an empty string) +if the equivalent +.IR string (2) +function would be non-zero. +.PP +.B Len +returns the length of its argument +.IR s . +.B Alen +returns the length of its argument +.IR s +when converted to a byte-array. (This will be +different from the result of +.B len +when +.I s +contains non-ASCII characters). +.B Slice +is similar to the string-slicing operator in Limbo; +it returns the section of +.I s +starting at index +.I start +and ending just before index +.IR end . +.I End +may be the literal string +.BR end , +in which +.BI "${slice " start " end}" +is the same as +.BI "${slice " start " ${len " s "}}"\fR.\fP +Unlike in Limbo, nothing untoward happens if +an out-of-range slice is taken: any out of +range indices are trimmed to within the bounds +of +.IR s . +.PP +.B Fields +is similar to +.B ${split} +in +.IR sh (1), +but does not merge field separator characters. +It splits +.I s +into fields separated by characters in class +.IR cl ; +if there are +.I n +characters matching +.I cl +inside +.IR s , +.B fields +will yield +.IR n +1 +items in its result. +.PP +.B Padl +and +.B padr +widen the string +.I s +to +.I n +characters, padding it with spaces on the +right (for +.BR padl ) +or the left (for +.BR padr ) +as necessary. +If +.I s +is already at least +.I n +characters wide, it is left unchanged. +If several arguments are given, they +are concatenated, separated with spaces, before +padding takes place. +.SH SOURCE +.B /appl/cmd/sh/string.b +.SH SEE ALSO +.IR string (2), +.IR sh (1), +.IR sh-std (1), +.IR sh-expr (1) diff --git a/man/1/sh-test b/man/1/sh-test new file mode 100644 index 00000000..fb4ed49d --- /dev/null +++ b/man/1/sh-test @@ -0,0 +1,46 @@ +.TH SH-TEST 1 +.SH NAME +report \- shell module for test reporting. +.SH SYNOPSIS +.B load test + +.br +.B report +.I severity verbosity message[...] +.br +.SH DESCRIPTION +.B Its +is a loadable module for +.IR sh (1) +that provides a simple error reporting facility for tests which can be run +by +.IR itest (1) . +It provides one command, +.BR report , +which is used by a test to report a message with specified severity and verbosity. +.I Severity +must be one of INF, WRN, ERR or FTL for Information, warnings, errors and fatal errors +respectively. +.I Verbosity +is an integer between 0 and 9. +For informatory messages (severity INF), the message will only be +displayed if the current +verbosity level is greater than or equal to +.I verbosity. +.SH EXAMPLE +.EX +#!/dis/sh + +load std test + +echo 1 > /tmp/a +echo 2 >/tmp/b +report INF 5 testing cmp command +if {cmp /tmp/a /tmp/b} { + report ERR 0 'cmp failed - reported different files as the same' +}{ + report INF 6 'cmp ok - reported different files as different' +} +.EE +.SH SEE ALSO +.IR itest (1) diff --git a/man/1/sh-tk b/man/1/sh-tk new file mode 100644 index 00000000..8777dac7 --- /dev/null +++ b/man/1/sh-tk @@ -0,0 +1,256 @@ +.TH SH-TK 1 +.SH NAME +tk, chan, send, recv, alt \- loadable tk module for sh. +.SH SYNOPSIS +.B load tk + +.B chan +.IR name ... +.br +.B send +.I chan value +.br +.B tk window +.I title +[ +.I args... +] +.br +.B tk winctl +.I winid cmd +.br +.B tk wintitle +.I winid title +.br +.B tk namechan +.I chan +[ +.I name +] +.br +.B tk del +.I name +.br +.B tk +.I winid tkcmd +.br +.B ${tk window +.I title +[ +.I args... +] +.B } +.br +.B ${tk +.I winid tkcmd +.B } +.br +.B ${recv +.I chan +.B } +.br +.B ${alt +.I chan +\& ... +.B } +.br +.SH DESCRIPTION +.B Tk +is a loadable module for +.IR sh (1) +that provides access to Inferno Tk graphics +and string channels. +Most of the builtin commands that it defines map +closely to primitives within +.IR wmlib (2) +and +.IR tk (2). +Unless otherwise stated, if a command requires +a +.I winid +argument, if no window with that id is found, a +.B bad win +exception is raised. Similarly, a reference to +an unknown channel name will raise a +.B bad chan +exception. +There is no requirement that this module be used in +a windowing context: although window creation will +fail if there is no context, the channel communication +primitives will work regardless. +.TP 10 +.B chan +For each +.I name +in turn, +.B chan +creates a new channel called +.I name +within the tk module. +.I Name +henceforth represents a Limbo +.B chan +.B of +.B string +and can be used to send string values between +.I sh +processes running in parallel. A +.I chan +is also used to receive events arriving from the window +manager. It is illegal to create a channel whose name +consists entirely of numeric digits. +.TP +.B send +.B Send +sends its argument +.I value +down the channel +.IR chan , +blocking until a corresponding receive operation +takes place on the channel. +.TP +.B tk window +.B Tk window +creates a new top-level window with the text of +.I title +in the titlebar at the top. Each window created by the +tk module is assigned a unique numeric id. This id +is printed by this command; to get access to the value +of the +.I winid +in a script, use +.BR "${tk window}" . +All the remaining arguments are joined together +by spaces and passed as the tk options for the window. +When a window is created, a corresponding +channel of the same name is created. Events from +the window manager arrive on this channel, and +should be responded to appropriately using +.BR "tk winctl" . +.TP +.B tk winctl +.B Tk winctl +is used to communicate requests to the window manager. +(see +.B winctl() +in +.IR wmlib (2)). +If an event arriving on a window's channel is passed +to +.BR "tk winctl" , +a suitable default action will take place. +The set of possible actions include: +.RS +.TP +.B exit +A request to close the window. +.TP +.B size +A request to resize the window. +.TP +.B task +A request to miniaturise the window. +.TP +.B move +A request to move the window. +.RE +.TP +.B tk wintitle +.B Tk wintitle +changes the title of the window +.I winid +to +.IR title . +.TP +.B tk del +.B Tk del +deletes a channel or a window. If +.I name +is the +.I winid +of an existing window, then both the +window and its associated channel are destroyed. +A +.B del +of a non-existent channel or window is ignored. +.TP +.B tk namechan +.B Tk namechan +invokes the Tk module's +.B namechan() +function to give a tk name to a +channel within the tk module. +If +.I name +is omitted, then the tk name given will be +the same as +.IR chan . +.TP +.BI tk \ winid +If +.I winid +is the id of an existing window, the rest of the +arguments joined together by spaces +and sent as a tk command to be interpreted +in that window. If the shell is in interactive mode, +then the string returned by tk will be printed. +The exit status of +.B tk +is false if the string returned by tk begins with +a bang +.RB ( ! ) +character. +.TP +.B ${tk window} +.B Tk window +is the same as its command counterpart, except +that it yields the +.I winid +of the newly created window rather than printing +it. +.TP +.BI ${tk \ winid } +This command is the same as its command counterpart, +except that it yields the return value from the +Tk command as its result. +.TP +.B ${recv} +.B Recv +receives a string value from +.I chan +and yields that value. It will block until a corresponding +send operation takes place on the channel. +.TP +.B ${alt} +.B Alt +waits until a value is available on any of the +named +.IR chan s. +It yields a list containing two elements, +the name of the channel from which the value was +received, and the actual value received. +.SH EXAMPLE +The following code creates a window and allows +normal window manager operations on it. Another +shell in a new process group is created in order to prevent +the shell window from +disappearing when the tk window is deleted. +.IP +.EX +sh +load std tk +pctl newpgrp +wid=${tk window 'My window'} +tk $wid update +while {} {tk winctl $wid ${recv $wid}} & +.EE +.SH SOURCE +.B /appl/cmd/sh/tk.b +.SH SEE ALSO +.IR sh (1), +.IR sh-std (1), +.IR sh-expr (1), +.IR tkcmd (1), +.IR tk (2), +.IR wmlib (2), +``The Tk Reference Manual'' diff --git a/man/1/sleep b/man/1/sleep new file mode 100644 index 00000000..047220f5 --- /dev/null +++ b/man/1/sleep @@ -0,0 +1,24 @@ +.TH SLEEP 1 +.SH NAME +sleep, pause \- suspend execution for an interval +.SH SYNOPSIS +.B sleep +.I n +.PP +.B pause +.SH DESCRIPTION +.I Sleep +suspends its own execution for +.I n +seconds before returning. +.PP +.I Pause +never returns, +and is typically used to stop a command +interpreter reading any more from the standard input. +.SH SOURCE +.B /appl/cmd/sleep.b +.br +.B /appl/cmd/pause.b +.SH "SEE ALSO" +.IR sys-sleep (2) diff --git a/man/1/sort b/man/1/sort new file mode 100644 index 00000000..a203d66e --- /dev/null +++ b/man/1/sort @@ -0,0 +1,33 @@ +.TH SORT 1 +.TH NAME +sort \- sort file +.SH SYNOPSIS +.B sort +[ +.B -nr +] [ +.I file +] +.SH DESCRIPTION +.I Sort +sorts the lines of +.I file +(default: standard input) +and writes the sorted output to +standard output. +.PP +Whole lines are sorted into increasing order, using lexicographic ordering of Unicode characters +by default. +The sort is stable, so that lines that compare equal will appear in the output +in the same order as in the original file. +The sort order is affected by the following options: +.TP +.B -n +Each line is assumed to have an initial numeric string representing an integer, +with optional plus or minus sign, and the lines +are sorted by those numeric values into increasing order. +.TP +.B -r +Reverses the sense of comparisons. +.SH BUGS +The entire file is read into memory to be sorted. diff --git a/man/1/spree-join b/man/1/spree-join new file mode 100644 index 00000000..9d71b6c3 --- /dev/null +++ b/man/1/spree-join @@ -0,0 +1,45 @@ +.TH SPREE-JOIN 1 +.SH NAME +join \- join a spree clique. +.SH SYNOPSIS +.B spree/join +[ +.B -d +.I mntdir +] [ +.B -j +.I joinrequest +] +.I name +.SH DESCRIPTION +When a +.IR spree (4) +instance has been mounted from somewhere on the +network, +.B join +can be used to join a clique and fire up the appropriate +module to perform the client-side display. +.I Mntdir +gives the directory where the spree +instance is mounted (default +.BR /n/remote ); +.I joinrequest +gives the initial join request to be passed to the clique +(default +.IR join ). +.I Name +is the name of the clique's directory within the spree +directory. +.SH EXAMPLE +When spree is started, it creates a ``lobby'' engine +that keeps a record of what cliques have been started, who +is a member of which, etc. +.EX + spree/join 0 +.EE +will connect to this session. +.SH SOURCE +.B /appl/spree/join.b +.SH "SEE ALSO" +.IR spree (4), +.IR spree (2) diff --git a/man/1/stack b/man/1/stack new file mode 100644 index 00000000..c4764535 --- /dev/null +++ b/man/1/stack @@ -0,0 +1,118 @@ +.TH STACK 1 +.SH NAME +stack \- examine call stack +.SH SYNOPSIS +.B "bind '#p' /prog" +.br +.B stack +[ +.B -v +] +[ +.B -p +.I dispath +.I sblpath +]... +.I pid +.SH DESCRIPTION +.I Stack +writes to the standard output a stack trace for process +.IR pid , +by +decoding the stack traceback data contained in the file +.BI /prog/ pid /stack . +The +.B -v +option causes +.I stack +to print values of arguments and variables. +The output is most useful when the Limbo program +was compiled with the +.B -g +option to produce a +.B .sbl +symbol file. +.PP +.I Stack +has a built-in list of associations between +.B dis +directories and their associated source directories +(e.g. it can automatically map from +.B /dis/ls.dis +to +.BR /appl/cmd/ls.sbl ). +Giving the +.B -p +option adds a new association to the head of this list: +if a module path prefix matches +.IR dispath , +.I stack +will search for a symbol file in +.IR sblpath . +If the environment variable +.B $sblpath +is set, pairs of items from it are added to the +association list, as given as +.B -p +options. +The +.B -p +options take precedence over +.BR $sblpath . +.SH EXAMPLE +Run +.I stack +on process with ID 1: +.IP +.EX +$ stack 1 +unknown fn() Module $Sys PC 742103 +waitfor() shnew.b:105.7, 38 +runpipeline() shnew.b:483.2, 14 +runit() shnew.b:552.3, 29 +init() shnew.b:83.3, 28 +.EE +.PP +The process is executing in the +.B Sys +module, a call to +.B sys->read +that originated at line 105 (characters 7 to 38) of the +.B waitfor +function in +.BR shnew.b . +.PP +Once again, with the +.B -v +option to reveal more: +.IP +.EX +$ stack -v 1 +unknown fn() Module $Sys PC 742103 +waitfor(pid=18) shnew.b:105.7, 38 + status=[0] "" + buf=[64] @b419a4 + n=-1 + who=-1 +runpipeline(ctx=nil, pipeline=@b41454) shnew.b:483.2, 14 + pid=18 +runit(ctx=nil, pipes=nil) shnew.b:552.3, 29 + pipeline=@b41454 +init(ctxt=nil, argv=nil) shnew.b:83.3, 28 + buf=[1024] @b40f04 + n=4 + arg=@b41634 + prompt=[21] "$ " +$ +.EE +.SH FILES +.BI /prog/ pid /stack +.br +.BI /prog/ pid /status +.SH SOURCE +.B /appl/cmd/stack.b +.SH "SEE ALSO" +.IR deb (1), +.IR ps (1), +.IR prog (3), +.IR debug (2) diff --git a/man/1/stream b/man/1/stream new file mode 100644 index 00000000..8c8ca875 --- /dev/null +++ b/man/1/stream @@ -0,0 +1,54 @@ +.TH STREAM 1 +.SH NAME +stream \- stream data between source and sink +.SH SYNOPSIS +.B stream +.RB [ \-a ] +.RB [ \-b +.IR bufsize ] +.I file1 +[ +.I file2 +] +.SH DESCRIPTION +.I Stream +creates a process that uses +.I stream +(see +.IR sys-read (2)) +to stream data in chunks of at most +.I bufsize +bytes (default: +.LR Sys->ATOMICIO , +or 8192 bytes) from +.I file1 +to the standard output. +If +.I file2 +is provided, +the two files are instead cross-connected by two streaming processes: +one process streams data from +.I file1 +to +.IR file2 , +and the other streams data from +.I file2 +to +.IR file1 . +In all cases, +.I stream +writes data to the destination file in full buffers of +.I bufsize +bytes. +.PP +.I Stream +waits for all streaming processes to stop before returning, +unless the +.B -a +(asynchronous) option is given, which causes it to +return after spawning the streamers. +.SH SOURCE +.B /appl/cmd/stream.b +.SH SEE ALSO +.IR cat (1), +.IR sys-read (2) diff --git a/man/1/strings b/man/1/strings new file mode 100644 index 00000000..af1eb29f --- /dev/null +++ b/man/1/strings @@ -0,0 +1,27 @@ +.TH STRINGS 1 +.SH NAME +strings \- extract printable strings +.SH SYNOPSIS +.B strings +[ +.I file ... +] +.SH DESCRIPTION +.I Strings +finds and prints strings containing 6 or more +consecutive printable UTF-encoded characters +in a (typically) binary file, default +standard input. +Printable characters are taken to be +.SM ASCII +characters from blank through tilde (hexadecimal 20 through 7E), inclusive, +and +all other characters from value 00A0 to FFFF. +Strings reports +the decimal offset within the file at which the string starts and the text +of the string. If the string is longer than 70 runes the line is +terminated by three dots and the printing is resumed on the next +line with the offset of the continuation line. +.SH SOURCE +.B /appl/cmd/strings.b + diff --git a/man/1/sum b/man/1/sum new file mode 100644 index 00000000..37922d6a --- /dev/null +++ b/man/1/sum @@ -0,0 +1,47 @@ +.TH SUM 1 +.SH NAME +sum, md5sum, sha1sum \- calculate file's checksum +.SH SYNOPSIS +.B sum +.IR file " ..." +.PP +.B md5sum +[ +.I file " ..." +] +.SH DESCRIPTION +.I Sum +prints the 32-bit checksum (actually a CRC), length in bytes, and name of each +.IR file , +one per line. +It ignores directories. +.PP +.I Md5sum +prints the MD5 message digest (as 32 hexadecimal digits) and the name of each +.IR file , +separated by a tab, +one per line. +If no files are given, the standard input is read. +.PP +.I Sha1sum +is similar, but uses the US National Institute of Standards and Technology's secure +hash algorithm SHA1 instead of MD5. +For each +.IR file , +it prints its SHA1 secure hash (as 40 hexadecimal digits) and the file's name, +separated by a tab, +one per line. +If no files are given, +.I sha1sum +reads the standard input. +.SH SOURCE +.B /appl/cmd/sum.b +.br +.B /appl/cmd/md5sum.b +.br +.B /appl/cmd/sha1sum.b +.SH SEE ALSO +.IR cmp (1), +.IR wc (1), +.IR crc (2), +.IR keyring-sha (2) diff --git a/man/1/tail b/man/1/tail new file mode 100644 index 00000000..0ae2ca74 --- /dev/null +++ b/man/1/tail @@ -0,0 +1,79 @@ +.TH TAIL 1 +.SH NAME +tail \- deliver the last part of a file +.SH SYNOPSIS +.B tail +[ +.RB [\f5+-\fP] \fInumber\fP [\f5lbc\fP][ rf ] +] +[ +.I file +] +.PP +.B tail +[ +.B -fr +] +[ +.B -n +.I nlines +] +[ +.B -c +.I ncharacters +] +[ +.I file +] +.SH DESCRIPTION +.I Tail +copies the named file to the standard output beginning +at a designated place. +If no file is named, the standard input is copied. +.PP +Copying begins at position +.BI + number +measured from the beginning, or +.BI - number +from the end of the input. +.I Number +is counted in lines, 1K blocks or characters, +according to the appended flag +.LR l , +.LR b , +or +.LR c . +Default is +.B -10l +(ten ell). +.PP +The further flag +.L r +causes tail to print lines from the end of the file in reverse order; +.L f +(follow) causes +.I tail, +after printing to the end, to keep watch and +print further data as it appears. +.PP +The second syntax is that promulgated by POSIX, where the +numbers of lines (-n) or characters (-c) are specified separately as signed +integers. Note than an unsigned value is treated as negative, +ie '-n 2' is equivalent to '-n -2'. +.PP +.SH EXAMPLES +.TP +.B tail file +Print the last 10 lines of a file. +.TP +.B tail +0f file +Print a file, and continue to watch +data accumulate as it grows. +.br +According to custom, option +.BI + number +counts lines from 1, and counts +blocks and characters from 0. +.TP +.B tail -nlines +3 file +Print a file starting at line number 3 diff --git a/man/1/tcs b/man/1/tcs new file mode 100644 index 00000000..c5abf95b --- /dev/null +++ b/man/1/tcs @@ -0,0 +1,67 @@ +.TH TCS 1 +.SH NAME +tcs \- translate character sets +.SH SYNOPSIS +.B tcs +.B -l +.RB [ -v ] +[ +.I csname +] +.PP +.B tcs +[ +.B -f +.I ics +] [ +.B -t +.I ocs +] [ +.I file ... +] +.SH DESCRIPTION +.I Tcs +converts its input from the +.I ics +character set encoding into Unicode runes and then outputs the data in the +encoding of the +.I ocs +character set. +The default values of +.I ics +and +.I ocs +are both +.BR utf8 . +This is the standard Inferno Unicode text encoding as described by +.IR utf (6). +If no files are specified +.I tcs +reads from its standard input. +.PP +The +.B -l +option causes +.I tcs +to output the list of character sets that it understands. +The +.B -v +option causes a more detailed listing to be given. +Giving a +.I csname +argument to the +.B -l +option causes +.I tcs +to list the known aliases for that name. +The first name in the list is the standard (or preferred) name. +.SH FILES +.TF /lib/convcs/charsets +.TP +.B /lib/convcs/charsets +Specifies the supported character set names, their aliases and the implementation +of their converters. +.SH SOURCE +/appl/cmd/tcs.b +.SH SEE ALSO +.IR convcs (2) diff --git a/man/1/tee b/man/1/tee new file mode 100644 index 00000000..1655cbd2 --- /dev/null +++ b/man/1/tee @@ -0,0 +1,30 @@ +.TH TEE 1 +.SH NAME +tee \- pipe fitting +.SH SYNOPSIS +.B tee +[ +.B \-a +] +[ +.I file +\&... +] +.SH DESCRIPTION +.I Tee +reads the standard input and writes a copy of each block read +to each +.I file +in turn, and then to the standard output. +Normally +.I tee +rewrites each +.IR file ; +the +.B \-a +option causes data to be appended instead. +.SH SOURCE +.B /appl/cmd/tee.b +.SH SEE ALSO +.IR cat (1), +.IR tail (1) diff --git a/man/1/telnet b/man/1/telnet new file mode 100644 index 00000000..10cdfe22 --- /dev/null +++ b/man/1/telnet @@ -0,0 +1,35 @@ +.TH TELNET 1 +.SH NAME +telnet \- make a remote telnet connection +.SH SYNOPSIS +.B telnet +.I machine +.SH DESCRIPTION +.B Telnet +uses the Telnet protocol to talk to a remote +.IR machine , +addressed using any form acceptable to +.IR sys-dial (2): +.IB net ! host ! port +in general. +The default +.I net +is +.BR tcp , +and the default +.I port +is 23, the standard Telnet login port. +.PP +.I Telnet +connects to the given +.I machine +and interprets the Telnet protocol. +It reads data from its standard input +and sends it to the remote machine, and +copies to the standard output the data it receives from the remote machine. +.SH SOURCE +.B /appl/cmd/telnet.b +.SH SEE ALSO +.IR cpu (1) +.br +``Telnet protocol specification'', RFC854 (1 May 1983) and related RFCs. diff --git a/man/1/time b/man/1/time new file mode 100644 index 00000000..5c1f3099 --- /dev/null +++ b/man/1/time @@ -0,0 +1,34 @@ +.TH TIME 1 +.SH NAME +time \- time command execution +.SH SYNOPSIS +.B time +.I command +[ +.I arg ... +] +.SH DESCRIPTION +.I Time +executes the +.I command +with the given arguments, and reports on standard error the command's +load time, real time for execution, and the total, in seconds. +The load time +is just the time for +.I time +itself to load +.IR command ; +loads done later by the command are included in the real time. +To time a pipeline, use the +.B -c +option to +.IR sh (1): +.IP +.B "time sh -c 'ps | grep Sh'" +.SH SOURCE +.B /appl/cmd/time.b +.SH "SEE ALSO" +.IR sh (1), +.IR sys-millisec (2) +.SH BUGS +There is no way to measure CPU time (real or virtual) used by a command. diff --git a/man/1/timestamp b/man/1/timestamp new file mode 100644 index 00000000..ab3900dc --- /dev/null +++ b/man/1/timestamp @@ -0,0 +1,36 @@ +.TH TIMESTAMP 1 +.SH NAME +timestamp \- log event times +.SH SYNOPSIS +.B timestamp +[ +.I tag +] +.SH DESCRIPTION +.I Timestamp +reads lines from its standard input and writes them to its +standard output, prefixing each line with the time that +it was written, in decimal milliseconds since +.I timestamp +was started. If +.I tag +is given, it is written along with the time stamp on each line, +to enable tagging if several writers are each writing +to the same log file. +.PP +The first line written gives the time that +.I timestamp +was started, in milliseconds since the epoch. +Note that logging events can cause timings to change, +and that the timestamps are only as accurate as the +times reported by +.BR /dev/time . +.SH SOURCE +.B /appl/cmd/timestamp.b +.SH EXAMPLE +.EX +% {echo hello; sleep 1; echo goodbye} | timestamp eg +0000000000 eg start 1080156139468 +0000000007 eg hello +0000000988 eg goodbye +.EE diff --git a/man/1/tiny b/man/1/tiny new file mode 100644 index 00000000..29072dfd --- /dev/null +++ b/man/1/tiny @@ -0,0 +1,210 @@ +.TH TINY 1 +.SH NAME +tiny: sh, rm \- reduced command line interface to the Inferno system +.SH SYNOPSIS +.B tiny/sh +[ +.B -n +] [ +.BI -c command +] [ +.I file +] +.PP +.B tiny/rm +[ +.I file +\&... +] +.SH DESCRIPTION +The +.I tiny +commands are smaller, simpler versions of more capable but larger Inferno commands. +They are provided for use on devices where a certain level of functionality +might be useful for configuration or maintenance (or development), but +device constraints are such as to make the use of the normal, fleshier versions +of the commands unattractive. +For example, the Dis object files are typically 5 times smaller (or better) than the +mainstream alternatives. +They live in the directory +.BR /dis/tiny , +but could be placed in the +.B /dis +of a small device +(eg, via +.IR root (3))· +.PP +.I Rm +removes files and empty directories, subject to the permission rules given in +.IR rm (1). +There are no options. +.PP +.I Sh +provides a simple user level interface (a shell) to the Inferno system. +(It was once the only Inferno shell.) +It reads input lines, identifies a command and arguments for that command, and arranges for execution of the corresponding Inferno module. +There are features that allow input/output redirection, creating pipelines, and performing tasks in background. +It is nevertheless a rudimentary shell designed for starting +and debugging applications. +It is not intended to serve as a general-purpose programmable shell. +.PP +If a file is named as a command line argument, that file is the source of input; otherwise, standard input is read. +.PP +Options are: +.TP +.B -n +Don't fork the namespace. By default, +.I sh +forks the namespace, making subsequent namespace changes invisible to the previous namespace group. +.TP +.BI -c command +Execute the single +.I command +rather than prompting to read commands from the standard input. +.SS "Command line syntax" +Each line consists of one or more command pipelines each separated by either an ampersand (&) which indicates that the pipeline should be run in background or a semi-colon (;). The semi-colon need not be provided for the last command pipeline on a line. +.PP +Command pipelines are not allowed to span lines. +.PP +Each command pipeline consists of one or more commands separated by a vertical bar +.RB ( | ) +character. The standard output of one command is made the standard input of the next command to the right. +.PP +Redirection of input/output to pipes takes precedence over redirection from/to files. +.PP +In the limit case, a command pipeline consists of a single command with no pipes. +.PP +A command consists of one or more fields. The first (leftmost) field is the command field. It is used to determined the executable file to be loaded and run; see below. The remaining fields are parsed and become command line arguments that are passed to the module's init function as a list of strings. +.PP +Any input following a +.B # +on a line is discarded as comment. +.SS "Finding the module" +The command field is converted to the pathname of the Dis file of some module. That field can be either an absolute pathname, starting from +.BR / , +or a relative pathname from the current directory. +.PP +As a convenience, the user need not specify the +.B .dis +suffix to the filename. If missing, it will be added by the shell. +.PP +If the load fails there is, in general, a second attempt to load the module by resolving the pathname relative to the +.B /dis +directory (or any directory bound to the +.B /dis +directory in the current namespace). +.PP +There are two exceptions to this second attempt. The second load attempt is not performed if the command field provides an absolute pathname or a relative pathname starting with dot-slash +.RB ( ./ ). +Such explicit naming is taken to mean that the user will accept no substitutions. +.PP +The shell requires that the Dis file implement a module with an interface equivalent to the +.L Command +module as specified in +.B /module/sh.m +(see +.IR command (2)). +Otherwise, the named file will not load. +.PP +In lieu of a path mechanism, a process can create a union directory at +.BR /dis . +.SS "File name expansion" +Command line arguments (including the command field itself) are expanded by the shell according to the regular expression rules described in +.IR filepat (2). +.PP +This expansion is not applied to the filenames used for input/output redirection. +.SS "Quoting" +The shell special characters can be stripped of their meaning and treated as literals by enclosing them in single quotes. Inside a quoted string, the special meaning of the single quote can be removed by immediately following it with another single quote. Command lines with un-terminated quoted strings are rejected and cause an error message. +.PP +For example: +.IP +.EX +$ echo '''' +\&' +$ echo 'don''t' +don't +$ echo 'hello' 'world +sh: unmatched quote +$ echo 'a'b +ab +$ echo a'b' +ab +$ +.EE +.SS "Shell special characters" +The following characters are treated specially by +.I sh +and must be quoted to be taken literally: +.TP +blank +white space, except in a quoted string +.TP +tab +white space, except in a quoted string +.TP +newline +command line terminator +.TP +.B # +Start of comment +.TP +.B ' +Start of/end of quoted string (single quote) +.TP +.B | +Interface between commands in a command pipeline. +.TP +.B & +Terminator for command pipelines to be run in background. +.TP +.B ; +Terminator for command pipelines to be run synchronously by the shell. +.TP +.B > +Output re-direction: create file if it does not exist; truncate file if it exists +.TP +.B >> +Output re-direction: create file if it does not exist; append to file if it exists +.TP +.B < +Input re-direction. +.SS "Prompt" +The shell uses a prompt consisting of the system name as provided by +.B /dev/sysname +suffixed by +.BR $ . +.PP +.SS "Input/output re-directions" +By default, standard input is the console keyboard and standard output the console display. Each command can specify that standard input be taken from a file and standard output be written to a file. +.PP +Attempts to redirect standard input to a non-existing file will fail. Redirecting standard output to a non-existing file will cause that file to be created. If the destination file already exists, it will be overwritten. Any previous contents are lost. +.PP +In cases of competing re-direction mechanisms (re-direct to a file and to a pipe), the pipe has precedence. +.PP +.SS "Background tasks" +In general, the shell waits for the termination of a command pipeline before continuing execution, for example, prompting the user for the next command. However, if the command pipeline is terminated by an ampersand +.RB ( & ) +character, the wait stage is skipped and the shell continues execution immediately, in this case the command pipeline executes as a background task. +.PP +.SS "Name space concerns" +When started, the shell creates an independent file name space that is a copy of the file name space of the shell's creator. +.PP +Command pipelines started by the shell are executed by threads that share the shell's name space. If those commands modify the file name space (and they have not mimicked the shell in creating their own independent name space), those modifications will be perceived by the shell when it continues execution. See +.IR bind (1) +and +.IR sys-pctl (2). +.SH FILES +.BI /prog/ n /wait +.SH SOURCE +.B /appl/tiny/sh.b +.br +.B /appl/tiny/rm.b +.SH "SEE ALSO" +.IR bind (1), +.IR sh (1), +.IR filepat (2), +.IR command (2), +.IR sys-pctl (2), +.IR cons (3), +.IR pipe (3), +.IR prog (3) diff --git a/man/1/tkcmd b/man/1/tkcmd new file mode 100644 index 00000000..9d1e76e8 --- /dev/null +++ b/man/1/tkcmd @@ -0,0 +1,53 @@ +.TH TKCMD 1 +.SH NAME +tkcmd \- enter Tk commands interactively +.SH SYNOPSIS +.B tkcmd +[ +.B -iu +] [ +.I tkarg +] +.SH DESCRIPTION +.B Tkcmd +allows interactive entry of Tk commands; it is useful for +testing out features of Tk prior to incorporating them in +a Limbo program. It accepts two arguments: +.TP +.B -i +Force interactive mode. In interactive mode (the default if the +standard input is directed at +.BR /dev/cons ), +a prompt is printed before every tk command entered. +.TP +.B -u +Suppress the automatic tk update command after +every entered command. +.PP +When +.I tkcmd +is started, a new top level window is created; +.I tkcmd +creates a titlebar and handles all the normal +window window manager interactions. +When the window is closed, +.I tkcmd +terminates. +Each line typed to +.I tkcmd +is passed directly to the function +.B Tk->cmd +(see +.IR tk (2)) +and executed in the context of the top level window; +a Tk ``update'' command is then issued. +Any return value from the command is printed. +There is one predefined Tk channel, +named ``stdout''; anything sent down this channel will +be printed to the standard output. +.SH SOURCE +.B /appl/cmd/tkcmd.b +.SH SEE ALSO +.IR tk (2), +.IR intro (9), +.IR sh-tk (1) diff --git a/man/1/tktester b/man/1/tktester new file mode 100644 index 00000000..dfa9525a --- /dev/null +++ b/man/1/tktester @@ -0,0 +1,154 @@ +.TH TKTESTER 1 +.SH NAME +tktester \- test Tk widgets and help design Tk layouts +.SH SYNOPSIS +.B wm/tktester +[ +.B -import +] +.SH DESCRIPTION +.I Tktester +not only tests the +.IR tk (2) +widget implementation but can help when designing Tk application layouts. +Its main window contains the design area where widgets are placed and edited. Most of the commands for creating and moving widgets are located on the control bar just below the design area although a few commands may be found in the menus at the top of the window. Output is sent to the text box below the control bar. +.PP +Widget properties may be modified using the config window and widget commands called from the command window. +.SH Main Window +This is split into four areas: +.PP +.SS Menu Bar +This contains various file operations as well as a few commands +.TP 10 +.B File +New: Starts a new file +.br +Open: Opens a saved file +.br +Snarf: Sends the current file to snarf +.br +Save: Saves the current file +.br +Save as: Asks for a new filename and then saves the file +.br +Exit: Close \f1tktester\fR +.TP +.PP +Files are saved in the form of a list of tk commands. This means that they can easily be imported into programs as part of an array. Files to be loaded must have .f as the top frame with no widgets outside it. +.TP 10 +.B Row/Column +The current row/column is the one in which the currently selected widget/empty cell is located +Insert - inserts a new row/column either before or after the currently selected row/column +Delete - deletes currently selected row/column +Format - sets the properties for the current row/column +.TP +.B Hidden +Forget - removes the current widget from the display area but does not delete it. The widget name is then added to the 'Hidden' menu and can still be selected by clicking on its name there. This can be useful for operations which require widgets that are not currently packed e.g. placing a frame as a window within a canvas. Forgotten items will still be saved. +.TP +.B Disabled +This menu only appears when a widget has been disabled. In this state, button bindings are ignored so it becomes impossible to select the widget. When a widget is disabled, its name is automatically added to the 'Disabled' menu and can be selected from there. +.PP +.SS Design Area +This is the main area of the main window where the widgets are displayed. To select a widget, click on it with mouse button 3, the control bar shows the name and other information about the currently selected widget. Frames themselves can only be selected by clicking on their label, clicking elsewhere on the frame (if there is no widget there) will select the empty cell, any new widget created will be placed here. Once a widget has been selected, you can move it by clicking on the empty destination cell with mouse button 2. Individual widgets can be moved from one frame to another but frames themselves can currently only be moved within the same parent frame. Clicking mouse button 2 on a widget will delete that widget if the \f1Free Delete\fR button on the control bar is on. +.SS Control Bar +This is split into three different menus. To select the different submenus, click on the >> at the end of the menu title. +.PP +\fIData Menu\fR +.TP 10 +.B Widget +shows information about the current widget +.br +clicking on the \f1Destroy\fR button will delete the currently selected widget. +The \f1Free Delete\fR button to the right of the \f1Destroy\fR button can be toggled on and off by clicking on it. When turned on (red background) , clicking mouse button 2 on a widget in the design area will delete it. +.TP +.B Grid +shows information about the current grid +.br +Clicking the \f1Hide Labels\fR button will hide the frame labels so that you can see what the screen will look like normally. +.PP +\f1Position and Formatting Menu\fR +.TP 10 +.B Move +Move the widget within its current frame +.TP +.B Spanning +Change row and column spanning properties +.TP +.B Padding +Set cell padding, checkbox selects internal or external padding +.TP +.B Position +Adjust widget position, widget can be stretched if opposite positions are selected e.g. to flill horizontaly, select < and > +.PP +\f1New Menu\fR +.PP +Clicking on 'New' will bring up the pack menu, here you can set packing to down or right. This is used when a new widget is created. If the user has not selected an empty cell, the new widget will be placed either below or to the right of the currently selected widget. Clicking on '>>' will scroll the buttons within the menu to the left to allow access to those that might be off screen. +.PP +.SS Output Box +Output and errors are reported here. This box may be hidden by clicking on the grey button located at the bottom of the main window. +.PP +.SH POPUP WINDOWS +.B +.PP +.SS Config Window +This window is opened by clicking on the red button located at the bottom of the main window. To configure a widget's options, the widget must be selected. To modify an option, type the new value required into the relevant entry box and click the 'set' button. Any output (including error messages) returned will be sent to the output box. +.PP +There are two template buttons at the bottom of the config window, set as default and save as default. Set will cause each new widget of the same type to be created with the same options as the currently selected widget. This default will not be remembered once \f1tktester\fR has been closed. Save does the same as set except the default is saved so it will be not be lost if \f1tktester\fR is closed. +.PP +Default Template Options +.PP A few special characters can be used when setting default widget options. +.TP 5 +.B %n +the name of the widget e.g. .f.f1.b2 +.TP +.B %t +the widget type e.g. button +.TP +.B %i +the number of the widget +.PP +By default, each widget with a -text option is set to {%t %i} e.g. button 2. Note: These options only work with default templates, setting the -text option of a specific button to {%t %i} will just cause '%t %i' to be displayed. +.PP +.SS Command Window +This window is opened by clicking on the green button located at the bottom of the main window. To call the commands for a particular widget, the widget must be selected. +.PP +The command window is split into two listboxes and one entry box. The first listbox contains all the main commands available for the current widget type. Selecting a command will bring up a list of subcommands (if they exist) in the second listbox as well as displaying any arguments required above the entrybox. To run a command, first select the command (and any subcommand), then enter the required arguments into the entry box and click run. The command, as well as any output, is sent to the output box on the main window. If no output is returned, the output box will display 'ok'. +.PP +.SH OPTIONS +.TP 10 +.B -import +Tells +.I tktester +to import valid widget commands from the man pages. This data is saved in the +.B tkwargs/ +directory, which must already exist. +.SH FILES +The file +.B tkwargs/widgets +must contain a list of widgets, one per line as follows: +.IP +.RI [ name ] +.RB [ abv ] +.PP +with the fields separated by tabs or spaces. +For example: +.IP +.B "menubutton mb" +.br +.B "listbox lb" +.PP +.SH SOURCE +.B /appl/wm/tktester +.SH BUGS +The command window sometimes lists a command more than once. It does not matter which one is used. +.PP +In a saved file, any grid commands must put -row and -column options \f1before\fR -rowspan or -columnspan. +.PP +Tktester can crash when loading a file if it is not in the correct format. +.PP +.SH PROPOSED ADDITIONS +.SS Allow renaming of widgets +At the moment, \f1tktester\fR can only load, save and use tk commands where the widget names adhere to the format .abv[n] where abv is the abreviation for the widget type e.g. b for buttons, sb for scrollbars etc and n is an optional number. It would be better to allow users to have more meaningful names such as .f.fmenu. Implementing this would also make it possible to load in commands written outside of \f1tktester\fR for testing or modification purposes. +.PP +.SS Column and Row indicators +This would more clearly show which rows and columns widgets were in (especially when widgets are spanning more than one). Also could be used to select individual rows and columns more explicity and maybe for multiple selections. diff --git a/man/1/toolbar b/man/1/toolbar new file mode 100644 index 00000000..674b4c31 --- /dev/null +++ b/man/1/toolbar @@ -0,0 +1,69 @@ +.TH TOOLBAR 1 +.SH NAME +toolbar \- window manager toolbar +.SH SYNOPSIS +.B wm/toolbar +[ +.B -s +] +.SH DESCRIPTION +.I Toolbar +is designed to be run as the controlling application under +an instance of +.IR wm (1). +It runs an initialisation shell script, +provides a menu allowing the user to start new programs. +and shows icons representing windows that have been hidden. +.PP +When +.I toolbar +is started, it configures itself by means of the +.B /lib/wmsetup +shell script. +.I Toolbar +loads the shell +.IR sh (1), +and defines the following +shell built-in +commands before executing the script: +.HP +.B menu +.I title1 +.RI [ title2] +.I command +.br +Insert an item at the top of the start menu. +.I Title1 +is the text of the item on the main menu. +If +.I title2 +is given then +.I title1 +is a sub-menu with +.I title2 +as the menu item. +.I Command +is executed by the shell whenever the item is selected. +An item with an empty command is displayed as a separator. +.HP +.B delmenu +.br +Forget all menu items. +.PP +The standard +.B /lib/wmsetup +script executes the script +.BI /usr/ username /lib/wmsetup , +enabling each user to have their own window manager configuration. +.SH FILES +.TP +.B /lib/wmsetup +Initialisation shell-script. +.SH SOURCE +.B /appl/wm/toolbar.b +.SH "SEE ALSO" +.IR wm(1), +.IR tkclient (2), +.IR wmclient (2), +.IR toolbar (1), +.IR logon (1). diff --git a/man/1/touch b/man/1/touch new file mode 100644 index 00000000..89b469aa --- /dev/null +++ b/man/1/touch @@ -0,0 +1,27 @@ +.TH TOUCH 1 +.SH NAME +touch \- update the modification time of one or more files +.SH SYNOPSIS +.B touch +.RB [ -c ] +[ +.BI -t " time" +] +.I files +.SH DESCRIPTION +.B Touch +attempts to set the modification time of the specified files to +.I time +(by default, the current system time). +If a file does not exist, +.B touch +will attempt to create it, unless the +.B -c +option is given. +.SH SOURCE +.B /appl/cmd/touch.b +.SH SEE ALSO +.IR ls (1), +.IR chmod (1), +.IR sys-stat (2), +.IR stat (5) diff --git a/man/1/tr b/man/1/tr new file mode 100644 index 00000000..70105d03 --- /dev/null +++ b/man/1/tr @@ -0,0 +1,95 @@ +.TH TR 1 +.SH NAME +tr \- translate characters +.SH SYNOPSIS +.B tr +[ +.B -cds +] +[ +.I string1 +[ +.I string2 +] +] +.SH DESCRIPTION +.I Tr +copies the standard input to the standard output with +substitution or deletion of selected characters (runes). +Input characters found in +.I string1 +are mapped into the corresponding characters of +.IR string2 . +When +.I string2 +is short it is padded to the length of +.I string1 +by duplicating its last character. +Any combination of the options +.B -cds +may be used: +.TP +.B -c +Complement +.IR string1 : +replace it with a lexicographically ordered +list of all other characters. +.TP +.B -d +Delete from input all characters in +.IR string1 . +.TP +.B -s +Squeeze repeated output characters that occur in +.I string2 +to single characters. +.PP +In either string a noninitial sequence +.BI - x\f1, +where +.I x +is any character (possibly quoted), stands for +a range of characters: +a possibly empty sequence of codes running from +the successor of the previous code up through +the code for +.IR x . +The character +.L \e +followed by 1, 2 or 3 octal digits stands for the +character whose +16-bit +value is given by those digits. +The character sequence +.L \ex +followed by 1, 2, 3, or 4 hexadecimal digits stands +for the character whose +16-bit value is given by those digits. +A +.L \e +followed by any other character stands +for that character. +.SH EXAMPLES +Replace all upper-case +.SM ASCII +letters by lower-case. +.IP +.EX +tr A-Z a-z <mixed >lower +.EE +.PP +Create a list of all +the words in +.L file1 +one per line in +.LR file2 , +where a word is taken to be a maximal string of alphabetics. +.I String2 +is given as a quoted newline. +.IP +.EX +tr -cs A-Za-z ' +\&' <file1 >file2 +.EE +.SH SOURCE +.B /appl/cmd/tr.b diff --git a/man/1/tsort b/man/1/tsort new file mode 100644 index 00000000..05558bc6 --- /dev/null +++ b/man/1/tsort @@ -0,0 +1,26 @@ +.TH TSORT 1 +.SH NAME +tsort \- topological sort +.SH SYNOPSIS +.B tsort +.SH DESCRIPTION +.I Tsort +reads a set of partial order relations between labels (sequences of non-space characters) +from its standard input, +and lists the labels on its standard output one per line following a topological sort. +Each input line represents a set of inequalities: the first label on the line is less than +all the others on the same line, and should appear earlier +in sorted order. +(The relation might for instance represent arcs in a directed graph, from +the first label on a line to the others, or dependency relationships.) +Labels on a line are separated by space or tab. +.SH DIAGNOSTICS +If the input contains cycles, +.I tsort +prints a diagnostic on standard error for each cycle, listing its members. +The members of each cycle will also appear on the standard output, in any order, +but after any predecessors outside the cycle. +.SH SOURCE +.B /appl/cmd/tsort.b +.SH SEE ALSO +.IR sort (1) diff --git a/man/1/unicode b/man/1/unicode new file mode 100644 index 00000000..e945fe1d --- /dev/null +++ b/man/1/unicode @@ -0,0 +1,62 @@ +.TH UNICODE 1 +.SH NAME +unicode \- interpret Unicode characters +.SH SYNOPSIS +.B unicode +[ +.B -nt +] +.IB hexmin - hexmax +.PP +.B unicode +[ +.B -t +] +.I hex ... +.PP +.B unicode +[ +.B -n +] +.I char ... +.SH DESCRIPTION +.I Unicode +converts between UTF and character values from the Unicode Standard (see +.IR utf (6)). +.PP +If given a range of hexadecimal numbers, +.I unicode +prints a table of the specified Unicode characters including their values and UTF representations. +Otherwise, it translates from UTF to numeric value or numeric value to UTF, depending on the appearance of the supplied text. +If converting to UTF, the characters are printed one per line. +.PP +The options are: +.TP +.B -n +Forces numeric output to avoid ambiguity with numeric characters. +.TP +.B -t +Output a single string containing the specified characters, rather than one per line. +.PP +The output of +.I unicode +might not be helpful if the characters printed are not available in the current font. +.SH EXAMPLES +.TP +.B "unicode p" +Print the hex value of +.BR p . +.TP +.B "unicode 2200-22f1" +Print a table of miscellaneous mathematical symbols. +.SH FILES +.TF /lib/unicode +.TP +.B /lib/unicode +Table of characters and descriptions. +.SH SOURCE +.B /appl/cmd/unicode.b +.SH "SEE ALSO" +.IR tr (1), +.IR utf (6), +.IR font (6) diff --git a/man/1/uniq b/man/1/uniq new file mode 100644 index 00000000..408e9600 --- /dev/null +++ b/man/1/uniq @@ -0,0 +1,33 @@ +.TH UNIQ 1 +.SH NAME +uniq \- report repeated lines in a file +.SH SYNOPSIS +.B uniq +[ +.B -ud +] +[ +.I file +] +.SH DESCRIPTION +.I Uniq +copies the input +.IR file , +or the standard input, to the +standard output, comparing adjacent lines. +In the normal case, the second and succeeding copies +of repeated lines are +removed. +Repeated lines must be adjacent +in order to be found. +.TP +.B -u +Print unique lines. +.TP +.B -d +Print (one copy of) duplicated lines. +.SH SOURCE +.B /appl/cmd/uniq.b +.SH "SEE ALSO" +.IR comm (1), +.IR sort (1) diff --git a/man/1/units b/man/1/units new file mode 100644 index 00000000..61cba702 --- /dev/null +++ b/man/1/units @@ -0,0 +1,110 @@ +.TH UNITS 1 +.if n .ds / / +.SH NAME +units \- conversion program +.SH SYNOPSIS +.B units +[ +.B -v +] +[ +.I file +] +.SH DESCRIPTION +.I Units +converts quantities expressed +in various standard scales to +their equivalents in other scales. +It works interactively in this fashion: +.IP +.EX +you have: inch +you want: cm + * 2.54 + / 0.3937008 +.EE +.PP +A quantity is specified as a multiplicative combination +of units and floating point numbers. +Operators have the following precedence: +.IP +.EX +.ta \w'\fLXXXXXXXXXXXXXXX'u +\fL+\fP \fL-\fP \f1add and subtract +\fL*\fP \fL/\fP \fL×\fP \fL÷\fP \f1multiply and divide +catenation multiply +\fL²\fP \fL³\fP \fL^\fP \f1exponentiation +\fL|\fP \f1divide +\fL(\fP ... \fL)\fP \f1grouping +.EE +.PP +Most familiar units, +abbreviations, and metric prefixes are recognized, +together with a generous leavening of exotica +and a few constants of nature including: +.IP +.de fq +\fL\\$1\\fP \\$2 \\$3 \\$4 \\$5 \\$6 +.. +.ta \w'\fLwaterXXX'u +.nf +.fq pi,\f1π\fP ratio of circumference to diameter +.fq c speed of light +.fq e charge on an electron +.fq g acceleration of gravity +.fq force same as \fLg\fP +.fq mole Avogadro's number +.fq water "pressure head per unit height of water" +.fq au astronomical unit +.fi +.PP +The +.L pound +is a unit of +mass. +Compound names are run together, e.g. +.LR lightyear . +British units that differ from their US counterparts +are prefixed thus: +.LR brgallon . +Currency is denoted +.LR belgiumfranc , +.LR britainpound , +etc. +.PP +The complete list of units can be found in +.BR /lib/units . +A +.I file +argument to +.I units +specifies a file to be used instead of +.BR /lib/units. +The +.B -v +flag causes +.I units +to print its entire database. +.SH EXAMPLE +.EX +you have: 15 pounds force/in² +you want: atm + * 1.020689 + / 0.9797299 +.EE +.SH FILES +.B /lib/units +.SH SOURCE +.B /appl/cmd/units.y +.br +.B /appl/cmd/units.b +.SH BUGS +Since +.I units +does only multiplicative scale changes, +it can convert Kelvin to Rankine but not Centigrade to +Fahrenheit, except that the latter is handled as a special case. +.br +Currency conversions are only as accurate as the last time someone +updated +.BR /lib/units . diff --git a/man/1/uuencode b/man/1/uuencode new file mode 100644 index 00000000..89d6a366 --- /dev/null +++ b/man/1/uuencode @@ -0,0 +1,79 @@ +.TH UUENCODE 1 +.SH NAME +uuencode, uudecode \- encode/decode a file +.SH SYNOPSIS +.B uuencode +[ +.I sourcefile +] +.I remotefile +.PP +.B uudecode +[ +.B -p +] +[ +.I encodedfile ... +] +.SH DESCRIPTION +.I Uuencode +and +.I Uudecode +are used to transmit files over transmission mediums that do not support other than simple +ASCII data. +.PP +.I Uuencode +converts a file to a purely ASCII based representation. It encodes the contents of +.I sourcefile +or the standard input if no source file is given. The +.I remotefile +is included in the encoded file's header as the name of the file into which +.I uudecode +should place the decoded data. The header also includes the permission modes of the +source file so that these can be preserved on decoding. The encoded output of +.I uuencode +is sent to the standard output. +.PP +.I Uudecode +reads a file, ignoring any leading and trailing lines that are not part of the encoding, and +recreates the original file with the filename and mode specified in it's header. The file +to decode is +.I encodedfile +or standard input if none is given. The +.B -p +flag can be used to send the decoded data to standard output rather than saving it in +the file whose name is specified in the header. +.SH EXAMPLES +.PP +Encode a dis file limbo.dis so that it can be included in a mail message: +.IP +.EX +uuencode limbo.dis limbo.dis > tmp +<place in mail message and send to recipient> +.EE +.PP +Decode the mail message(msg say): +.IP +.EX +cat msg | uudecode +.EE +.PP +This creates the file limbo.dis. +.PP +Decode the mail message into a file of your choosing(tmp.dis say): +.IP +.EX +cat msg | uudecode -p > tmp.dis +.EE +.SH SOURCE +.B /appl/cmd/uuencode.b +.br +.B /appl/cmd/uudecode.b +.SH BUGS +The encoded file is expanded by at least a third. +.br +Decoding a file may overwrite an existing file. +.br +Uuencode should take the remote file name to be the same as the source file if one +is not given. + diff --git a/man/1/wc b/man/1/wc new file mode 100644 index 00000000..9df4bca7 --- /dev/null +++ b/man/1/wc @@ -0,0 +1,29 @@ +.TH WC 1 +.SH NAME +wc \- count lines, words, and characters +.SH SYNOPSIS +.B wc +[ +.B -lwceb +] +[ +.I file ... +] +.SH DESCRIPTION +.I Wc +writes to standard output a tally of lines, words, and characters found in each +.IR file , +assumed to be text in UTF format. +If no files are named, standard input is read. One line is output per file. If several files are specified, an additional line is written giving totals. +.PP +`Words' are maximal sequences of characters separated by blanks, tabs and newlines. +.PP +Counts are output in the same order as the listing of the option letters +.BR lwceb ; +select lines, words, UTF characters, erroneously-encoded characters, and bytes, respectively. +If no options are given, lines, words and characters are counted. +.SH SOURCE +.B /appl/cmd/wc.b +.SH "SEE ALSO" +.IR tr (1), +.IR utf (6) diff --git a/man/1/webgrab b/man/1/webgrab new file mode 100644 index 00000000..a50d9d6e --- /dev/null +++ b/man/1/webgrab @@ -0,0 +1,130 @@ +.TH WEBGRAB 1 +.SH NAME +webgrab \- fetch web page content as files +.SH SYNOPSIS +.B webgrab +[ +.B -r +] [ +.B -v +] [ +.BI -o " stem" +] +.I url +.SH DESCRIPTION +.I Webgrab +connects to the web server named in the +.IR url . +It fetches the content of the web page also determined by the +.IR url , +and stores it locally in a file. +If the page is written in HTML, +.I webgrab +reads it to build a list of sub-component pages (eg, frames) and images. +It fetches those, saving the content in separate files. +It adds a comment to the end of each HTML file giving the time, and the file's origin. +It automatically follows redirections offered by the server. +.PP +The +.I stem +of the names of the output files is normally derived from a component of the +.IR url . +If the +.I url +contains a path name, the +.I stem +is the component of that path, less any dot-separated suffix and prefix. +For example, given +.IP +.BR http://www.vitanuova.com/inferno/old.index.html +.PP +the stem would be +.BR index . +If there is no path name, but the +.I url +contains a domain name, the +.I stem +is the penultimate component of the domain name (eg, excluding +trailing +.BR .com , +and initial +.BR www , +etc). +For example, given +.IP +.B www.innerhost.vitanuova.com +.PP +the stem would be +.BR vitanuova . +If all else fails, +.I webgrab +uses the +.I stem +.BR webgrab . +.PP +Given a +.IR stem , +the initial page is stored in +.IB stem . suffix +where +.I suffix +is the suffix (eg, +.BR .html ) +of the name of the original page. +Subordinate pages are saved in a similar way in files named +.IB stem _1. suffix1, +.IB stem _2. suffix2, +\&... . +.PP +The options are: +.TP +.B -r +do not fetch subcomponents (just the `raw' source of +.I url +itself) +.TP +.B -v +print a progress report +.TP +.B -vv +print a chatty progress report +.TP +.BI -o " stem" +use the +.I stem +as given +.PP +.I Webgrab +reads the +configuration file +.B /services/webget/config +(if it exists), +to look for the address of an optional HTTP proxy +(in the +.L httpproxy +entry), and list of domains for which a proxy should not be used +(in the +.B noproxy +or +.B noproxydoms +entry). If symbolic network and service names might be involved, the +connection server +.B lib/cs +needs to be already running. +.SH FILES +.B /services/webget/config +.SH SOURCE +.B /appl/cmd/webgrab.b +.SH BUGS +It should read the proxy name from the +.IR charon (1) +configuration file and not the +.I webget +configuration file. +.br +It cannot do `secure' transfers +.RB ( https ). +.br +Its HTML parsing is naive, but on the other hand, it is less likely to trip over HTML novelties. +.SH "SEE ALSO" +.IR cs (8) diff --git a/man/1/wish b/man/1/wish new file mode 100644 index 00000000..930c25d3 --- /dev/null +++ b/man/1/wish @@ -0,0 +1,86 @@ +.TH WISH 1 +.SH NAME +wish \- interface to the Tk graphics toolkit +.SH SYNOPSIS +.B wish +[ +.I file ... +] +.PP +.B wm/wish +[ +.B -k +] +[ +.BI -f " file" +] +.SH DESCRIPTION +.I Wish +provides a Tcl +command line interface to the Limbo/Tk graphics toolkit. +The input should be in the format of Tcl or Tk commands +(see +.IR intro (9)). +There are two variants. +.PP +Plain +.B wish +must be run from the Inferno console instead of +.IR mux (1) +or +.IR wm (1). +It takes input from each +.I file +in turn, then prompts for further commands from the standard input. +Its commands operate on a Tk toplevel covering the whole screen. +.PP +.BR Wm/wish +runs instead in a shell window under +.IR wm (1). +It reads initial input from the optional +.IR file , +then prompts for further commands on its standard input unless +the +.B -k +option is given. +Its commands operate on the Tk toplevel of a new window +created by +.B Wmlib->titlebar +(see +.IR wmlib (2)), +initially titled +.BR WishPad . +.PP +The following special input sequences are recognised: +.TP +.B \en +newline +.TP +.B \et +tab +.TP +.B \eb +backspace +.TP +.B \e\e +backslash +.SH FILES +.B /dev/pointer +.br +.B /dev/keyboard +.SH SOURCE +.B /appl/cmd/wish.b +.br +.B /appl/wm/wish.b +.SH "SEE ALSO" +.IR sh-tk (1), +.IR tkcmd (1), +.IR tk (2), +.IR intro (9) +.SH BUGS +Arguably this has been superseded by +.IR sh-tk (1) +for scripting Tk applications, +and +.IR tkcmd (1) +for development and testing of Tk configurations for use by Limbo programs. diff --git a/man/1/wm b/man/1/wm new file mode 100644 index 00000000..06b70145 --- /dev/null +++ b/man/1/wm @@ -0,0 +1,216 @@ +.TH WM 1 +.SH NAME +wm \- window manager +.SH SYNOPSIS +.B wm/wm +[ +.I command +[ +.IR arg ... +] +] +.SH DESCRIPTION +.I Wm +is an inferno window manager, providing the control mechanism for +the user to manage to order and position of a dynamic collection +of application windows. +When started, it runs +.IR command , +(by default +.BR wm/toolbar , +see +.IR toolbar (1)) +By itself, +.I wm +does not provide any means for starting new applications; +that facility must be provided by an auxilliary program, +.B wm/toolbar +being one such example. +.SS Control Inferface +.I Wm +provides a control interface to programs running inside it +through the +.B Wmcontext +adt that can be obtained from via the +.B Draw->Context +that it passes to applications that it starts +(see +.IR draw-context (2)). +Control messages it understands include: +.TP +.B start \fIwhat\fP +Start input on +.IR what . +.I What +can be +.BR ptr +(pointer events), +.BR kbd +(keyboard events) +and +.BR control +(window manager control events, see below). +.TP +.B key \fIcharval\fP +Simulate a key event. +.I Charval +is the decimal value of the character that has been +pressed. The character will be sent exactly as if it +had been typed on the keyboard. This facility +is used by +.IR keyboard (2). +.TP +.B !reshape \fItag\fP \fIreqid\fP \fIminx miny maxx maxy\fI \fR[\fIhow\fR] +Reshape or create the window named +.IR tag . +.I Reqid +is ignored; +.I minx..maxy +give the desired bounding rectangle of the +new window. +If +.I how +is not given, or is +.BR exact , +then +.I wm +will attempt to satisfy the request exactly. +Otherwise, +.I how +tells +.I wm +how to determine the rectangle of the resulting image; +it can be one of +.B place +(choose some appropriate position and size on screen), +.B onscreen +(modify the requested rectangle only so as to bring +it on screen), or +.B max +(request the maximum available rectangle). +.TP +.B delete \fItag\fP +Delete the window named by \fItag\fP. +.TP +.B raise +Raise all windows for the current context above the others. +.TP +.B lower +Send all windows for the current context to the bottom. +.TP +.B !move \fItag\fP \fIreqid\fP \fIstartx\fP \fIstarty\fP +Drag window +.I tag +interactively. +.I Reqid +is ignored. +.I Startx +and +.I starty +give the location of the pointer when the drag was initiated. +.TP +.B !size \fItag\fP \fIreqid\fP +Interactively resize window \fItag\fP. +.TP +.B fixedorigin +By default, if a window changes position but not size, +.I wm +changes the origin of the window without creating a new image. +Sending +.B fixedorigin +caused +.I wm +always to create a new image in that case. +.TP +.B kbdfocus \fR[\fIin\fR] +If the decimal integer +.I in +is non-zero, request the keyboard focus, +otherwise lose the keyboard focus. +.PP +.I Wm +generates control messages to inform applications of +things that have happened. These include: +.TP +.B rect \fIminx miny maxx maxy\fP +The screen rectangle has changed. +.I "minx..maxy" +gives the new bounding box of the screen. +.TP +.B haskbdfocus \fIin\fP +Informs an application of its current keyboard focus state. +This message is generated in response to pointer events, +and due to +.B kbdfocus +requests. +.TP +.B exit +The window manager is closing down. +.SS Controlling Application +The first application that starts under +.I wm +is given the privilege of being able to control +other applications running under the same +.IR wm . +If it sends a +.B start control +message, then it will also see any control requests +sent by applications that +.I wm +itself does not understand and information about applications +starting and leaving. +.I Wm +accepts several other control messages from its +controlling application: +.TP +.B ctl \fIid\fP \fImsg\fP +Send message +.I msg +to application +.IR id . +.TP +.B endcontrol +Relinquish controller status. +The next application that starts will get control status. +This is used, for instance, to segue smoothly between +.IR logon (1) +and +.IR toolbar (1). +.PP +If the controlling application has started control messages, +.I wm +sends it the following messages: +.TP +.B newclient \fIid\fP +A new client has connected, identified by +.IR id . +.TP +.B delclient \fIid\fP +Client +.I id +has left. +.TP +.B request \fIid\fP \fImsg\fP +Client +.I id +sent the request +.I msg +to the window manager, which it did not understand. +This facility is used, for instance, by +.IR toolbar (1) +to implement the +.B task +and +.B untask +requests. +.SH FILES +.TP +.B /chan/wmrect +File holding current screen rectangle. +.SH SOURCE +.B /appl/wm/wm.b +.SH "SEE ALSO" +.IR toolbar (1), +.IR logon (1), +.IR tkclient (2), +.IR wmclient (2) diff --git a/man/1/wm-misc b/man/1/wm-misc new file mode 100644 index 00000000..d6e9ff11 --- /dev/null +++ b/man/1/wm-misc @@ -0,0 +1,247 @@ +.TH WM-MISC 1 +.SH NAME +about, clock, coffee, colors, date, edit, mand, memory, polyhedra, reversi, rt, stopwatch, sweeper, task, tetris, unibrowse, view, winctl \- miscellaneous graphical applications +.SH SYNOPSIS +.B wm/about +.br +.B wm/clock +.br +.B wm/coffee +.br +.B wm/colors +.br +.B wm/date +.br +.B wm/edit +.RI [ file ] +.br +.B wm/mand +.br +.B wm/memory +.br +.B wm/polyhedra +.br +.B wm/reversi +.br +.B wm/rt +.br +.B wm/stopwatch +.br +.B wm/sweeper +.br +.B wm/task +.br +.B wm/tetris +[ +.B -b +.I blocksize +] +.br +.B wm/unibrowse +.br +.B wm/view +[ +.B -i +] +.RI [ file... ] +.br +.B wm/winctl +.SH DESCRIPTION +A collection of simple applications and utilities that operate under the +Wm window manager. +Other Wm applications exist, see their respective manual pages for +more information. +.PP +.TP +.B wm/about +Display system version and copyright information. +.TP +.B wm/clock +Display an analogue clock. +.TP +.B wm/coffee +A whimsical plaything. +.TP +.B wm/colors +Displays the Inferno palette. +Clicking on a particular colour displays its RGB values. +.TP +.B wm/date +Displays the current date and time in a window. +.TP +.B wm/edit +A simple cut-and-paste text editor. +Several menus provide the usual editing commands. +Text selections are dragged out using mouse button 1. +Mouse button-2 displays a pop-up menu of the Cut, Copy and Paste commands. +.TP +.B wm/mand +A fractal browser to explore the Mandelbrot and Julia sets. +Button 1 drags a rectangle to zoom into, button 2 shows the Julia set at the chosen point, button 3 zooms out. +To produce more accurate pictures, the iteration depth may be increased by altering +the depth scale factor. The default number of iterations per point is 253. The sets are +plotted by filling regions of (apparently) the same colour. Deselecting the fill option +will plot the points in the usual fashion. +.TP +.B wm/memory +Displays memory usage. +Three usage bars are displayed, one for each of the Inferno memory +pools: main, heap and image. The current usage (in bytes) is displayed +to the left of each bar, and the number of blocks in use appears in red. +The maximum permitted size of each pool is given (in megabytes) to the right of its +usage bar. +Each bar also sports a highwater mark. +The usage data is re-read and displayed once every second. +.TP +.B wm/polyhedra +A program to display convex regular polyhedra. The menu options allow the user +to alter the speed of rotation and the axis of rotation. To display a different +solid, move forward or back with the prev and next boxes. Selecting the dual +box will show the dual of a solid rather than the original solid. Finally the +edges, clear and faces boxes determine whether edges are shown, whether the +screen is cleared before the next plot and whether faces are shown respectively. +.TP +.B wm/reversi +An implementation of the popular game. The default set up is for black to be the +machine and white the human player. Use the Black and White menu options to +change this. The level of any machine player may be set using the Black level +and White level boxes. This determines the amount of lookahead performed +by the tree search algorithm. +.TP +.B wm/rt +A Dis module inspector: it can show the Dis instructions, strings, +types and other attributes of a module; it also allows the user +to set some attributes stored in a module's header. +.TP +.B wm/stopwatch +A simple-minded stopwatch. +Only useful for coarse-grained timings. +.TP +.B wm/sweeper +Mine sweeping game. +.TP +.B wm/task +Task manager: it lists the processes running when it starts, +and offers buttons to kill a selected process, kill its process group, +show its open files, or debug it using +.IR deb (1). +A process is selected from the list using mouse button 1. +.I Task +does not automatically refresh the list; there is a +.B Refresh +button to prompt it to do so. +.TP +.B wm/tetris +The ubiquitous and annoyingly addictive tile dropping game. +The game keys are: +.RB ` 7 ' +move left; +.RB ` 8 ' +rotate (anti-clockwise); +.RB ` 9 ' +move right; +.RB ` p ' +pause; +.RI ` space ' +drop and +.RB ` q ' +quit. +A mouse or stylus can also be used to guide the pieces (eg, by tapping the screen in the desired direction). +Scores are stored in the file +.BR /lib/scores/tetris . +Score file updates are not interlocked \- it's only a game! +.TP +.B wm/unibrowse +A handy utility for browsing the unicode character set, finding out what +particular characters look like in different fonts, finding out exactly which +characters a font provides, and finding the name of a character +that you have managed to grab into the snarf buffer. +.TP +.B wm/view +Image viewer. +Displays GIF, Inferno +.IR image (6), +JPEG, +PNG +and X bitmap image files. +The viewer creates a new window to display the contents of each +.IR file . +If no arguments are given, the file browser panel +.IR filename (1) +is displayed to prompt the user to select an image file to view. +If the +.B -i +option is given, +.I view +continues to listen for requests from the +.IR plumber (8); +the +.B -i +option will normally appear only in rules in +.IR plumbing (6) +files. +.TP +.B wm/winctl +Window management tool. +Displays a set of buttons that provide for: +raising a window to the top or lowering it to the bottom of the +screen window stack; moving a window to a new position; iconising a window; +deleting a window. +.IP +Click on the button for the required action then click on the window to apply it to. +When moving a window, click and drag the target. +Deleting a window is error-prone. Currently using this tool on a charon or acme +window has strange effects. +.SH PLUMBING +.B wm/view +receives +.B view +messages +.SH FILES +.TP +.B /lib/polyhedra +Polyhedra data base. +.TP +.B /lib/scores/tetris +Tetris high score table. +.TP +.B /lib/unidata +Directory holding Unicode character set information, used by +.BR unibrowse . +.TP +.B /dev/memory +Provides +.B memory +with memory usage statistics. +.SH SOURCE +.B /appl/wm/about.b +.br +.B /appl/wm/coffee.b +.br +.B /appl/wm/colors.b +.br +.B /appl/wm/date.b +.br +.B /appl/wm/edit.b +.br +.B /appl/wm/mand.b +.br +.B /appl/wm/memory.b +.br +.B /appl/wm/polyhedra.b +.br +.B /appl/wm/reversi.b +.br +.B /appl/wm/rt.b +.br +.B /appl/wm/stopwatch.b +.br +.B /appl/wm/task.b +.br +.B /appl/wm/tetris.b +.br +.B /appl/wm/unibrowse.b +.br +.B /appl/wm/view.b +.br +.B /appl/wm/winctl.b diff --git a/man/1/wm-sh b/man/1/wm-sh new file mode 100644 index 00000000..0db61f04 --- /dev/null +++ b/man/1/wm-sh @@ -0,0 +1,274 @@ +.TH WM-SH 1 +.SH NAME +sh, mash \- Window frames for the Inferno shells +.SH SYNOPSIS +.B wm/sh +[ +.B -w +.I width +] [ +.B -h +.I height +] [ +.B -f +.I font +] +.I sh-args +.br +.B wm/mash +.I mash-args +.br +.SH DESCRIPTION +Both +.B wm/sh +and +.B wm/mash +provide a graphical framework to their respective shells. +Both wrappers manage the input and output of the shell. +They provide facilities for scrolling and editing the output buffer +and for constructing input to be sent to the shell. +.PP +.B Wm/sh +invokes the shell +.IR sh (1) +with the arguments +.B -n +.IR sh-args ; +.B wm/mash +invokes +.IR mash (1) +with the arguments +.IR mash-args . +.B Wm/sh +accepts the following additional options, which are +not passed through to +.IR sh : +.HP +.B -w +.I width +.br +The window should be at least +.I width +pixels wide. +.HP +.B -h +.I height +.br +The window should be at least +.I height +pixels high. +.HP +.B -f +.I font +.br +Specify the font to use in the window. +.I Font +should be the name of a valid +.IR font (6) +file. +.PP +.B Wm/sh +and +.B wm/mash +both provide their own versions of +.B /dev/cons +and +.B /dev/consctl +files in the namespace of the invoked shell +(see +.IR cons (3) +for the originals) and attach the standard input +of the invoked shell to the virtualised +.B /dev/cons +file. +Output from the shell, or of any commands run by the shell, is displayed in +a scrollable text window, appearing at the +.IR "output position" , +which is at the end of any previously output text, before +any as-yet-unread user input text. +.PP +Any text displayed on the console can be edited. +Typed text is always inserted at the position of the input cursor. +The input cursor can be moved to any point in the text by +clicking mouse button-1 at the desired position. +Selections can be made by dragging the mouse with button-1 held down. +Typing into a selection copies its text to the Snarf buffer, the +selected text is deleted and the typed character inserted. +.PP +Text typed beyond the output point will be made available +to commands reading from +.BR /dev/cons . +Normally this text is made available when newline is typed, +but typing ESC turns on +.I hold +mode (the text turns blue), deferring the availability of the text until ESC is +typed again, turning hold mode off. This allows simple +multi-line editing of the standard input to a command. +.PP +Writing +.B rawon +to +.B /dev/consctl +changes the above behaviour, making each character typed beyond +the output point available to commands as soon as it is typed; +the character is not automatically echoed. Writing +.B rawoff +to +.B /dev/consctl +reverses this behaviour. +.PP +In addition to dragging out selections, they can be made by double clicking +mouse button-1. +Double clicking over a word selects the whole word. +Double clicking next to a brace or bracket selects the text between it and its matching +brace or bracket. +If there is no match then no selection is made. +.PP +Clicking mouse button-2 displays a pop-up menu of editing commands: +.TP +.B Cut +Copy the current selection to the Snarf buffer and then delete +the selected text. +This command has no effect if there is no selected text, the Snarf buffer +is not cleared. +.TP +.B Paste +When there is no text selected, the contents of the Snarf buffer are +inserted at the current input cursor. +If a selection exits, its text is replaced by that of the Snarf buffer. +The new text is then selected. +The contents of the Snarf buffer remain unaltered. +.TP +.B Snarf +Copy the selected text to the Snarf buffer. +This command has no effect if there is no selected text. +.TP +.B Send +If there is any text selected it is copied to the Snarf buffer. +The contents of the Snarf buffer is then +appended to the end of the current shell input line, forwarding +any NewLine completed lines to the shell's input stream. +.PP +Mouse chording is implemented as in +.IR acme (1). +Dragging a selection with button-1 held down and then also clicking +button-2 cuts the selected text into the Snarf buffer. +Clicking button-3 instead of button-2 replaces the selected text with the contents +of the Snarf buffer. +.PP +Clicking mouse button-3 plumbs the word or selection under the click point. +See +.IR plumber (8) +for more information on plumbing. +.PP +.I Wm/sh +also serves the file +.BR /chan/shctl . +The following commands may be written to this file: +.HP +.B cwd +.I dir +.br +Causes any plumbing request generated by +.I wm/sh +to be created with +.I dir +as its ``current directory''. This is shown in the +title bar of the window. +Note that it is up to the command running inside +.I wm/sh +to keep this up to date (for instance, see EXAMPLES, +below). +.HP +.B button +.I "title sendtext" +.br +A Tk button is created at the top of the shell window, labeled +with +.IR title . +When activated, +.I sendtext +will be sent to the shell window as if it had been typed. +.HP +.B action +.I "title sendtext" +.br +A button is created as for the +.B button +command, except that activation of the button causes +.I sendtext +to be sent to any process reading from +.BR /chan/shctl . +.HP +.B clear +.br +Delete any buttons that have been created. +.PP +Arguments to commands sent to +.B /chan/shctl +follow +.IR sh (1) +quoting rules (the same as implemented by +.I quoted +and +.I unquoted +in +.IR string (2)). +A process reading from +.B /chan/shctl +will block until an +.B action +button is activated, whereupon it will yield the +.I sendtext +associated with the button. +.SH PLUMBING +Both +.B wm/sh +and +.B wm/mash +plumb text selected by button 3; +an empty selection plumbs the white-space bounded text +surrounding the selection. +.SH EXAMPLES +Define a +.IR sh (1) +function to update the current directory automatically: +.PP +.EX + fn cd {builtin cd $*; echo cwd `{pwd} >/chan/shctl} +.EE +.PP +Note that this will not work in all cases, as it is possible to +change the current directory without using the +.I cd +command. +.PP +Create a button to automate a +.I mount +command (note the newline in the argument string): +.PP +.EX + echo ${quote button mount 'mount kremvax /n/remote + '} > /chan/shctl +.EE +.PP +Create a new +.I wm/sh +window with the above button already created: +.PP +.EX + wm/sh -ic { + echo ${quote button mount 'mount kremvax /n/remote + '} > /chan/shctl + } +.EE +.SH SOURCE +.B /appl/wm/sh.b +.br +.B /appl/wm/mash.b +.br +.SH "SEE ALSO" +.IR sh (1), +.IR mash (1), +.IR wm (1), +.IR plumber (8) diff --git a/man/1/xd b/man/1/xd new file mode 100644 index 00000000..22b3965c --- /dev/null +++ b/man/1/xd @@ -0,0 +1,92 @@ +.TH XD 1 +.SH NAME +xd \- dump file contents in multiple formats +.SH SYNOPSIS +.B xd +[ +.I option +\&... ] [ +.BI - format +\&... ] [ +.IR file ... +] +.SH DESCRIPTION +.B Xd +dumps the contents of each +.I file +in one or more formats. +If no file is specified, standard input is read. +Input is processed in 16 byte chunks. +Each chunk is output in each of the specified +.IR format s, +one format per line. +Each line of output is prefixed its file offset. +This is zero padded for the first format; subsequent formats are blank padded. +If more than one +.I file +is specified, the name of each file is output at the start of its dump. +.PP +Output formats are specified by a two character name, +.B 4x +by default. +The first character defines the byte width of the format; the second character +defines the style of output. +.PP +The available width specifiers are: +.TF "1 or b" +.TP +.BR 1 " or " b +1 byte units. +.TP +.BR 2 " or " w +2 byte big-endian units. +.TP +.BR 4 " or " l +4 byte big-endian units. +.TP +.BR 8 " or " v +8 byte big-endian units. +.PD +.PP +The available styles are: +.TP 0 +.B o +Octal +.PD 0 +.TP +.B d +Decimal +.TP +.B x +Hexadecimal +.PD +.PP +In addition to the above format specifiers, +.B -c +can be used to denote ASCII format. +This is the same as +.B 1x +except that codes are printed as printable ASCII characters or Limbo escape sequences +where possible. +.SH OPTIONS +.TP 10 +.B -u +Unbuffered output. The output buffer is flushed after the dump of each 16 byte input chunk +has been generated. +.TP +.B -r +Mark repeated 16 byte input chunks. +The first chunk is output as per the format specifiers, followed by an asterisk representing +1 or more occurrences of identical data. +.TP +.B -s +Reverse the order of input bytes in chunks of 4 before processing for output. +.TP +.BI -a style +Print file addresses in the given +.IR style . +.SH SOURCE +.TP +.B /appl/cmd/xd.b +.SH BUGS +There is no means of dumping 2 or 8 byte wide values in little-endian form. diff --git a/man/1/yacc b/man/1/yacc new file mode 100644 index 00000000..c3ec5868 --- /dev/null +++ b/man/1/yacc @@ -0,0 +1,349 @@ +.TH YACC 1 +.SH NAME +yacc \- yet another compiler-compiler (Limbo version) +.SH SYNOPSIS +.B yacc +[ +.I option ... +] +.I grammar +.SH DESCRIPTION +.I Yacc +converts a context-free grammar and translation code +into a set of +tables for an LR(1) parser and translator. +The grammar may be ambiguous; +specified precedence rules are used to break ambiguities. +.PP +The output from +.I yacc +is a Limbo module +.B y.tab.b +containing the parse function +.B yyparse +which must be provided with a +.B YYLEX +adt providing the parser access to a lexical analyser +routine +.BR lex() , +an error routine +.BR error() , +and any other context required. +.PP +The options are +.TP "\w'\fL-o \fIoutput\fLXX'u" +.BI -o " output +Direct output to the specified file instead of +.BR y.tab.b . +.TP +.BI -D n +Create file +.BR y.debug , +containing diagnostic messages. +To incorporate them in the parser, give an +.I n +greater than zero. +The amount of +diagnostic output from the parser is regulated by +value +.IR n : +.RS +.TP +1 +Report errors. +.TP +2 +Also report reductions. +.TP +3 +Also report the name of each token returned by +.LR yylex . +.RE +.TP +.B -v +Create file +.BR y.output , +containing a description of the parsing tables and of +conflicts arising from ambiguities in the grammar. +.TP +.B -d +Create file +.BR y.tab.m , +containing the module +declaration for the parser, along with +definitions of the constants +that associate +.IR yacc -assigned +`token codes' with user-declared `token names'. +Include it in source files other than +.B y.tab.b +to give access to the token codes and the parser module. +.TP +.BI -s " stem +Change the prefix +.L y +of the file names +.BR y.tab.b , +.BR y.tab.m , +.BR y.debug , +and +.B y.output +to +.IR stem . +.TP +.B -m +Normally +.I yacc +defines the type of the +.B y.tab.b +module within the text of the module according +to the contents of the +.B %module +directive. +Giving the +.B -m +option suppresses this behaviour, leaving the implementation +free to define the module's type from an external +.B .m +file. The module's type name is still taken from the +.B %module +directive. +.TP +.BI -n " size +Specify the initial +.I size +of the token stack created for the +parser (default: 200). +.SS Differences from C yacc +The Limbo +.I yacc +is in many respects identical to the C +.IR yacc . +The differences are summarised below: +.PP +Comments follow the Limbo convention (a +.B # +symbol gives a comment until the end of the line). +.PP +A +.B %module +directive is required, which replaces the +.B %union +directive. It is of the form: +.RS +.IP +.B %module +.I modname +.B { +.br +.I module types, functions and constants +.br +.B } +.RE +.B Modname +will be the module's implementation type; +the body of the directive, augmented with +.B con +definitions for the +.IR yacc -assigned +token codes, gives the type of the module, +unless the +.B -m +option is given, in which case no module +definition is emitted. +.PP +A type +.B YYSTYPE +must be defined, giving the type +associated with +.I yacc +tokens. If +the angle bracket construction is used after +any of the +.BR %token , +.BR %left , +.BR %right , +.BR %nonassoc +or +.B %type +directives in order to associate a type with a token or production, +the word inside the angle brackets +refers to a member of +an instance of +.BR YYSTYPE , +which should be an adt. +.PP +An adt +.B YYLEX +must be defined, providing context to the parser. +The definition must consist of at least the following: +.EX + YYLEX: adt { + lval: YYSTYPE; + lex: fn(l: self ref YYLEX): int; + error: fn(l: self ref YYLEX, msg: string); + } +.EE +.B Lex +should invoke a lexical analyser to return the +next token for +.I yacc +to analyse. The value of the token should +be left in +.BR lval . +.B Error +will be called when a parse error occurs. +.B Msg +is a string describing the error. +.PP +.B Yyparse +takes one argument, a reference to the +.B YYLEX +adt that will be used to provide it with tokens. +.PP +The parser is fully re-entrant; +.I i.e. +it does not +hold any parse state in any global variables +within the module. +.SH EXAMPLE +The following is a small but complete example of the +use of Limbo +.I yacc +to build a simple calculator. +.EX +%{ + include "sys.m"; + sys: Sys; + + include "bufio.m"; + bufio: Bufio; + Iobuf: import bufio; + + include "draw.m"; + + YYSTYPE: adt { v: real; }; + YYLEX: adt { + lval: YYSTYPE; + lex: fn(l: self ref YYLEX): int; + error: fn(l: self ref YYLEX, msg: string); + }; +%} + +%module Calc{ + init: fn(ctxt: ref Draw->Context, args: list of string); +} + +%left '+' '-' +%left '*' '/' + +%type <v> exp uexp term +%token <v> REAL + +%% +top : + | top '\en' + | top exp '\en' + { + sys->print("%g\en", $2); + } + | top error '\en' + ; + +exp : uexp + | exp '*' exp { $$ = $1 * $3; } + | exp '/' exp { $$ = $1 / $3; } + | exp '+' exp { $$ = $1 + $3; } + | exp '-' exp { $$ = $1 - $3; } + ; + +uexp : term + | '+' uexp { $$ = $2; } + | '-' uexp { $$ = -$2; } + ; + +term : REAL + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +in: ref Iobuf; +stderr: ref Sys->FD; + +init(nil: ref Draw->Context, nil: list of string) +{ + sys = load Sys Sys->PATH; + bufio = load Bufio Bufio->PATH; + in = bufio->fopen(sys->fildes(0), Bufio->OREAD); + stderr = sys->fildes(2); + lex := ref YYLEX; + yyparse(lex); +} + +YYLEX.error(nil: self ref YYLEX, err: string) +{ + sys->fprint(stderr, "%s\en", err); +} + +YYLEX.lex(lex: self ref YYLEX): int +{ + for(;;){ + c := in.getc(); + case c{ + ' ' or '\et' => + ; + '-' or '+' or '*' or '/' or '\en' or '(' or ')' => + return c; + '0' to '9' or '.' => + s := ""; + i := 0; + s[i++] = c; + while((c = in.getc()) >= '0' && c <= '9' || + c == '.' || + c == 'e' || c == 'E') + s[i++] = c; + in.ungetc(); + lex.lval.v = real s; + return REAL; + * => + return -1; + } + } +} +.EE +.SH FILES +.TF /lib/yaccpar +.TP +.B y.output +.TP +.B y.tab.b +.TP +.B y.tab.m +.TP +.B y.debug +.TP +.B /lib/yaccpar +parser prototype +.SH SOURCE +.B /appl/cmd/yacc.b +.SH "SEE ALSO" +S. C. Johnson and R. Sethi, +``Yacc: A parser generator'', +.I +Unix Research System Programmer's Manual, +Tenth Edition, Volume 2 +.br +B. W. Kernighan and Rob Pike, +.I +The UNIX Programming Environment, +Prentice Hall, 1984 +.SH BUGS +The parser may not have full information when it writes to +.B y.debug +so that the names of the tokens returned by +.L yylex +may be missing. diff --git a/man/1/zeros b/man/1/zeros new file mode 100644 index 00000000..d3dd0009 --- /dev/null +++ b/man/1/zeros @@ -0,0 +1,45 @@ +.TH ZEROS 1 +.SH NAME +zeros \- write sequence of bytes +.SH SYNOPSIS +.B zeros +[ +.IR -r +] +[ +.IR -v value +] +[ [ +.IR blocksize ... +[ +.IR numblocks +] ] +.SH DESCRIPTION +.B Zeros +writes a sequence of bytes to standard output. The arguments +specify the nature of the bytes, +block size in bytes, and the number of blocks to output. +The +.I -r +option requests that each block be the same, but randomly +generated. The +.IR -v value +option sets the value of each byte (default 0). +Typically +.IR zeros +has a specialised use: +ensuring a file has the desired number of blocks in it to hold a file system image, +before reaming it. +.SH EXAMPLE +To create and initialize a file system containing 2880 1024 byte +blocks +.IP +.EX +zeros 1024 2880 > kfs +echo 'ream fs kfs' > '#Kcons/kfsctl' +echo halt > '#Kcons/kfscons' +.EE +.SH SOURCE +.B /appl/cmd/zeros.b +.SH SEE ALSO +.IR kfs (3) diff --git a/man/10/0intro b/man/10/0intro new file mode 100644 index 00000000..dded3a06 --- /dev/null +++ b/man/10/0intro @@ -0,0 +1,74 @@ +.TH INTRO 10 +.SH NAME +intro \- introduction to hosted and native implementation +.SH DESCRIPTION +Inferno provides a collection of compiler suites, libraries and two closely-related +kernels to span a range of host and native platforms. +Section 10 of this manual is divided into subsections numbered +in the same way as the main manual: 10.1 for commands, 10.2 +for library and kernel routines, and 10.6 for file formats. +.PP +Section 10.1 describes the various compiler and utility commands +provided to support compilation and cross-compilation of native +kernels. +These are derived from similarly named programs of the system Plan 9 from Bell Labs, +converted to ANSI C to +provide a consistent, portable environment for cross-compiling +any native kernel on any host platform. +.PP +Section 10.2 describes the functions publicly available to the authors of +kernel code, particularly device drivers (real and virtual). +This section will eventually be much expanded, but this makes a start. +See the description of the conventional header files below. +.PP +Section 10.6 describes include the native object file formats, +the Inferno (Plan 9) object library (archive) format, +and system configuration files. +.PP +Section 10.8 describes bootstrap programs and procedures for +native Inferno systems. +.SS Native kernel declarations +The +.SM SYNOPSIS +subsections in section 10.2 do not show the header files needed for +the standard kernel declarations. +The primary combinations summarised below: +.IP +.RS +.ta \w'\fL#include 'u +.nf +.B +#include "u.h" +.B +#include "../port/lib.h" +.B +#include "mem.h" +.B +#include "dat.h" +.B +#include "fns.h" +.B +#include "../port/error.h" +.PP +.I "furthermore, added in IP code:" +.br +.B +#include "../ip/ip.h" +.PP +.I "furthermore, in hardware device drivers:" +.br +.B +#include "io.h" +.br +.B +#include "ureg.h" +.PP +.I "furthermore, in network interfaces or ether drivers:" +.B +#include "../port/netif.h" +.fi +.RE +.PP +There might also be specific include files needed by +drivers on particular platforms or to use specialised kernel interfaces. +The easiest method is to check the source of likely-looking drivers nearby. diff --git a/man/10/2a b/man/10/2a new file mode 100644 index 00000000..bd9e3357 --- /dev/null +++ b/man/10/2a @@ -0,0 +1,55 @@ +.TH 2A 10.1 +.SH NAME +0a, 1a, 2a, 5a, 6a, 7a, 8a, ka, qa, va \- assemblers +.SH SYNOPSIS +.B 2a +[ +.I option ... +] +[ +.I name ... +] +.br +etc. +.SH DESCRIPTION +These programs +assemble the named files into object files +for the corresponding architectures; see +.IR 2c (10.1) +for the correspondence between an architecture and the character +.RB ( 1 , +.RB 2 , +etc.) that specifies it. +The assemblers handle the most common C preprocessor directives and the associated +command-line options +.BR -D +and +.BR -I . +Other options are: +.TP +.BI -o " obj" +Place output in file +.I obj +(allowed only if there is just one input file). +Default is to take the last element of the input path name, +strip any trailing +.BR .s , +and append +.RI . O , +where +.I O +is first letter of the assembler's name. +.SH FILES +The directory +.B /sys/include +is searched for include files after +machine-dependent files in +.BR /$objtype/include . +.SH SOURCE +.BR /utils/2a , +etc. +.SH SEE ALSO +.IR 2c (10.1), +.IR 2l (10.1). +.PP +Rob Pike, ``A manual for the Plan 9/Inferno assembler'', Volume 2 diff --git a/man/10/2c b/man/10/2c new file mode 100644 index 00000000..1e4d9f0a --- /dev/null +++ b/man/10/2c @@ -0,0 +1,437 @@ +.TH 2C 10.1 +.SH NAME +0c, 1c, 2c, 5c, 6c, 7c, 8c, kc, qc, vc \- C compilers +.SH SYNOPSIS +.B 2c +[ +.I option ... +] +[ +.I file ... +] +.br +etc. +.SH DESCRIPTION +These commands compile the named C +.I files +into object files for the corresponding architecture. +Associated with each compiler is a string +.IR objtype , +for example +.TP 1.5i +.B "0c spim +Little-endian MIPS +.TP +.B "1c 68000 +Motorola MC68000 +.TP +.B "2c 68020 +Motorola MC68020 +.TP +.B "5c arm +ARM 7500 +.TP +.B "6c amd64 +AMD64 extension to x86 +.TP +.B "7c alpha +Digital Alpha APX +.TP +.B "8c 386 +Intel i386, i486, Pentium, etc. +.TP +.B "kc sparc +Sun SPARC +.TP +.B "qc power +Power PC, +.TP +.B "vc mips +big-endian MIPS 3000 family +.PP +Let the first letter of the compiler name be +.IR O = +.BR 0 , +.BR 1 , +.BR 2 , +.BR 5 , +.BR 6 , +.BR 7 , +.BR 8 , +.BR k , +.BR q , +or +.BR v . +The output object files end in +.RI . O . +The letter is also the prefix of related programs: +.IB O a +is the assembler, +.IB O l +is the loader. +.PP +Plan 9 conventionally sets the +.B $objtype +environment variable to the +.I objtype +string appropriate to the current machine's type. +Plan 9 also conventionally has +.RI / objtype +directories, which contain among other things: +.BR include , +for machine-dependent include files; +.BR lib , +for public object code libraries; +.BR bin , +for public programs; +and +.BR mkfile , +for preconditioning +.IR mk (10.1). +.PP +For Inferno cross-compilation on all platforms, not just Plan 9, both +.B $objtype +and +.B $OBJTYPE +are set by every native kernel +.B mkfile +to correspond to the target processor type. +The Inferno +.B mkfiles +also set the +.B -I +option appropriately to search the Inferno include directories, +since the Plan 9 defaults are inappropriate. +.PP +The compiler options are: +.TP 1i +.BI -o " obj" +Place output in file +.I obj +(allowed only if there is just one input file). +Default is to take the last element of the input file name, +strip any trailing +.BR .c , +and append +.RI . O . +.TP +.B -w +Print warning messages about unused variables, etc. +.TP +.B -B +Accept functions without a new-style +ANSI C function prototype. +By default, the compilers reject functions +used without a defined prototype, +although ANSI C permits them. +.TP +.BI -D\*S name=def +.br +.ns +.TP +.BI -D \*Sname +Define the +.I name +to the preprocessor, +as if by +.LR #define . +If no definition is given, the name is defined as +.LR 1 . +.TP +.B -F +Warn when the elements of a format +(eg, those used by +.IR print ) +disagree with in type or size with the corresponding parameter, +or there is a mismatch in number. +See the discussion of extensions, below. +.TP +.BI -I \*Sdir +An +.L #include +file whose name does not begin with +slash +or is enclosed in double quotes +is always +sought first in the directory +of the +.I file +argument. If this fails, +the +.I -. +flag is given or the name is enclosed in +.BR <> , +it is then sought +in directories named in +.B -I +options, +then in +.BR /sys/include , +and finally in +.BR /$objtype/include . +.TP +.B -. +Suppress the automatic searching for include files in +the directory of the file argument. +.TP +.B -N +Suppress automatic registerization and optimization. +.TP +.B -S +Print an assembly language version of the object code +on standard output as well as generating the +.RI . O +file. +.TP +.B -T +Pass type signatures on all external and global entities. +The signature is based on the C +.B signof +operator, +an extension in this compiler. +See +.IR dynld (10.2). +.TP +.B -V +By default, the compilers are non-standardly lax about type equality between +.B void* +values and other pointers; this flag requires ANSI C conformance. +.TP +.B -a +Instead of compiling, print on standard output acid functions (see +.IR acid (10.1)) +for examining structures declared in the source files. +.TP +.B -aa +Like +.B -a +except suppress information about structures +declared in included header files. +.PP +The compilers handle most preprocessing directives themselves, but support +excludes the +.B #if +and +.B #elif +directives, and the +.B ## +preprocessor operation. +.PP +The compilers support several extensions to ANSI C: +.TP +\- +A structure or union may contain unnamed substructures and subunions. +The fields of the substructures or +subunions can then be used as if they were members of the parent +structure or union (the resolution of a name conflict is unspecified). +When a pointer to the outer structure or union is used in a context +that is only legal for the unnamed substructure, the compiler promotes +the type and adjusts the pointer value to point at the substructure. +If the unnamed structure or union is of a type with a tag name specified by a +.B typedef +statement, +the unnamed structure or union can be explicitly referenced +by <struct variable>.<tagname>. +.TP +\- +A structure value can be formed with an expression such as +.EX + (struct S){v1, v2, v3} +.EE +where the list elements are values for the fields of struct +.BR S . +.TP +\- +Array initializers can specify the indices of the array in square +brackets, as +.EX + int a[] = { [3] 1, [10] 5 }; +.EE +which initializes the third and tenth elements of the eleven-element array +.BR a . +.TP +\- +Structure initializers can specify the structure element by using the name +following a period, as +.EX + struct { int x; int y; } s = { .y 1, .x 5 }; +.EE +which initializes elements +.B y +and then +.B x +of the structure +.BR s . +These forms also accept the new ANSI C notation, which includes an equal sign: +.EX + int a[] = { [3] = 1, [10] = 5 }; + struct { int x; int y; } s = { .y = 1, .x = 5 }; +.EE +.TP +\- +A global variable can be dedicated to a register +by declaring it +.B "extern register" +in +.I all +modules and libraries. +.TP +\- +A +.B #pragma +of the form +.EX + #pragma lib "libbio.a" +.EE +records that the program needs to be loaded with file +.BR /$objtype/lib/libbio.a ; +such lines, typically placed in library header files, obviate the +.B -l +option of the loaders. To help identify files in non-standard directories, +within the file names in the +.B #pragmas +the string +.B $M +represents the name of the architecture +(e.g., +.BR mips ) +and +.B $O +represents its identifying character +(e.g., +.BR v ). +.TP +\- +Two +.B #pragma +requests to define rules for checking +.IR print -like +formats (see the +.B -F +option above). +One +.B #pragma +tells for a given routine which argument is the format. +For example: +.EX + #pragma varargck argpos print 1 + #pragma varargck argpos sprint 2 +.EE +say that +.I print +has a format as its first argument, +and +.I sprint +has one as its second. +Another +.B #pragma +associates format character sequences and types: +.EX + #pragma varargck type "lld" vlong + #pragma varargck type "lx" void* + #pragma varargck type "S" Rune* +.EE +where the format characters are those following the +.B % +in the format (ignoring any preceding formatting flags). +Note the assumption that all formats arguments are compatible. +The system include files have appropriate +.B #pragma +lines for the standard format elements and formatting functions. +.TP +\- +A +.B #pragma +of the form +.EX + #pragma incomplete \fItype\fP +.EE +tells the compiler that +.I type +should have its signature calculated as an incomplete type +even when it is fully defined. +This allows the type signature mechanism to work in the presence +of opaque types declared in header files, with their full definitions +visible only to the code which manipulates them. +With some imported software it might be necessary to turn off the +signature generation completely for a large body of code (typically +at the start and end of a particular include file). +If +.I type +is the word +.BR _off_ , +signature generation is turned off; if +.I type +is the word +.BR _on_ , +the compiler will generate signatures. +.TP +\- +The C++ comment +.RB ( // +to end of line) +is accepted as well as the normal +convention of +.B /* +.BR */ . +.TP +\- +The compilers accept +.B long +.B long +variables as a 64-bit type. +The standard header typedefs this to +.BR vlong . +Arithmetic on +.B vlong +values is usually emulated by a run-time library. +.SH EXAMPLE +For the 68020, produce a program +.B prog +from C files +.BR main.c +and +.BR sub.c : +.IP +.EX +2c -FVw main.c sub.c +2l -o prog main.2 sub.2 +.EE +.SH FILES +.TF /$objtype/include +.TP +.B /sys/include +host system area for machine-independent +.B #include +directives. +.TP +.B /$objtype/include +host system area for machine-dependent +.B #include +directives. +.SH SOURCE +.TF /utils/2c,\ etc. +.TP +.B /utils/cc +machine-independent part +.TP +.BR /utils/2c ,\ etc. +machine-dependent part +.SH "SEE ALSO" +.IR 2a (10.1), +.IR 2l (10.1), +.IR mk (10.1), +.IR inm (10.1), +.IR acid (10.1), +.PP +Rob Pike, +``How to Use the Plan 9 C Compiler'' +.SH BUGS +The preprocessor only handles +.LR #define , +.LR #include , +.LR #undef , +.LR #ifdef , +.LR #line , +and +.LR #ifndef . diff --git a/man/10/2l b/man/10/2l new file mode 100644 index 00000000..c2bf1998 --- /dev/null +++ b/man/10/2l @@ -0,0 +1,201 @@ +.TH 2L 10.1 +.SH NAME +0l, 1l, 2l, 5l, 6l, 7l, 8l, kl, ql, vl \- loaders +.SH SYNOPSIS +.B 2l +[ +.I option ... +] +[ +.I file ... +] +.br +etc. +.SH DESCRIPTION +These commands load the named +.I files +into executable files for the corresponding architectures; see +.IR 2c (10.1) +for the correspondence between an architecture and the character +.RB ( 1 , +.BR 2 , +etc.) +that specifies it. +The files should be object files or libraries (archives of object files) +for the appropriate architecture. +Also, a name like +.BI -l ext +represents the library +.BI lib ext .a +in +.BR /$objtype/lib , +where +.I objtype +is one of +.BR 68000 , +etc. as listed in +.IR 2c (10.1). +The libraries must have tables of contents +(see +.IR iar (10.1)). +.PP +In practice, +.B -l +options are rarely necessary as the header files for +the libraries cause their archives to be included automatically in the load +(see +.IR 2c (10.1)). +For example, any program that includes header file +.B libc.h +causes the loader +to search the C library +.BR /$objtype/lib/libc.a . +Also, the loader creates an undefined symbol +.B _main +(or +.B _mainp +if profiling is enabled) to force loading of the +startup linkage from the C library. +.PP +The order of search to resolve undefined symbols is to load all files and libraries +mentioned explicitly on the command line, and then to resolve remaining symbols +by searching in topological order +libraries mentioned in header files included by files already loaded. +When scanning such libraries, the algorithm is to scan each library repeatedly until +no new undefined symbols are picked up, then to start on the next library. Thus if library +.I A +needs +.I B +which needs +.I A +again, it may be necessary to mention +.I A +explicitly so it will be read a second time. +.PP +The loader options are: +.TP 1i +.B -l +(As a bare option.) +Suppress the default loading of the startup linkage and libraries +specified by header files. +.TP +.BI -o " out" +Place output in file +.IR out . +Default is +.IB O .out\f1, +where +.I O +is the first letter of the loader name. +.TP +.B -p +Insert profiling code into the executable output; no special action is needed +during compilation or assembly. +.TP +.B -s +Strip the symbol tables from the output file. +.TP +.B -a +Print the object code in assembly language, with addresses. +.TP +.B -v +Print debugging output that annotates the activities of the load. +.TP +.BI -M +.RI ( kl +only) Generate instructions rather than calls to emulation routines +for multiply and divide. +.TP +.BI -E symbol +The entry point for the binary is +.I symbol +(default +.BR _main ; +.B _mainp +under +.BR -p ). +.TP +.B -x +[ +.I file +] +Produce an export table in the executable. +The optional +.I file +restricts the exported symbols to those listed in the file. +See +.IR dynld (10.2). +.TP +.B -u +[ +.I file +] +Produce an export table, import table +and a dynamic load section in the executable. +The optional +.I file +restricts the imported symbols to those listed in the file. +See +.IR dynld (10.2). +.TP +.BI -H n +Executable header is type +.IR n . +The meaning of the types is architecture-dependent; typically +type 1 is Plan 9 boot format and type 2 is the +regular Plan 9 format, the default. These are reversed on the MIPS. +The Next boot format is 3. Type 4 in +.I vl +creates a MIPS executable for an SGI Unix system. +.TP +.BI -T t +The text segment starts at address +.IR t . +.TP +.BI -D d +The data segment starts at address +.IR d . +.TP +.BI -R r +The text segment is rounded to a multiple of +.I r +(if +.I r +is nonzero). +.PP +The numbers in the above options can begin with +.L 0x +or +.L 0 +to change the default base from decimal to hexadecimal or octal. +The defaults for the values depend on the compiler and the +header type. +.PP +The loaded image has several symbols inserted by the loader: +.B etext +is the address of the end of the text segment; +.B bdata +is the address of the beginning of the data segment; +.B edata +is the address of the end of the data segment; +and +.B end +is the address of the end of the bss segment, and of the program. +.SH FILES +.TF /$objtype/lib +.TP +.B /$objtype/lib +for +.BI -l lib +arguments. +.SH SOURCE +.B /utils/2l +etc. +.SH "SEE ALSO" +.IR 2c (10.1), +.IR 2a (10.1), +.IR iar (10.1), +.IR inm (10.1) +.PP +Rob Pike, +``How to Use the Plan 9 C Compiler'' diff --git a/man/10/5coff b/man/10/5coff new file mode 100644 index 00000000..f32443f1 --- /dev/null +++ b/man/10/5coff @@ -0,0 +1,82 @@ +.TH 5COFF 10.1 +.SH NAME +5coff \- converter to coff format +.SH SYNOPSIS +.B 5coff +[ +.B -T +.I t +] +[ +.B -D +.I d +] +[ +.B -R +.I r +] +[ +.B -E +.I e +] +[ +.B -d +] +.I ifile ofile +.SH DESCRIPTION +.I 5coff +converts an executable file +.I ifile +in +.IR a.out (10.6) +format as +produced by +.I 5l +(see +.IR 2l (10.1)) +to one in +.SM COFF +format, which it writes to +.IR ofile . +The options to +.I 5coff +are as follows: +.TP +.BI -T t +The text segment starts at address +.I t. +.TP +.BI -D d +The data segment starts at address +.I d. +.TP +.BI -R r +The text segment is rounded up to a multiple of +.I r +if non-zero. +.TP +.BI -E e +The entry point is at address +.I e. +.TP +.B -d +Print debugging information. +.PP +.SH EXAMPLE +An executable built with the command +.IP +.EX +5l -T0x04010000 -R4 -o abc ... +.EE +.PP +can be converted to coff format by +.IP +.EX +5coff -T0x04010000 -R4 abc abc.coff +.EE +.SH SOURCE +.B /utils/5coff +.SH SEE ALSO +.IR 2l (10.1), +.IR 5cv (10.1), +.IR a.out (10.6) diff --git a/man/10/5cv b/man/10/5cv new file mode 100644 index 00000000..25469ce5 --- /dev/null +++ b/man/10/5cv @@ -0,0 +1,127 @@ +.TH 5CV 10.1 +.SH NAME +5cv, mkppcimage, sqz \- convert kernel executable to boot format +.SH SYNOPSIS +.B 5cv +[ +.BI -D n +] [ +.BI -H n +] [ +.B -s +] +.I "executable outfile" +.PP +.B mkppcimage +[ +.BI -l " loadaddr" +] +.I "executable outfile" +.PP +.B sqz +[ +.B -w +] [ +.B -t +] +.I executable +.SH DESCRIPTION +These commands convert a kernel executable in Inferno/Plan 9 +.IR a.out (10.5) +format into another +format used by a third party's boot loader. +Most convert the input +.I executable +and write the new format to +.IR outfile . +.PP +.IR 5cv +converts an ARM executable into one of several alternative formats. +The output format is controlled by the +.B -H +option: +.TP 8n +.BI -H1 +AIF for RISCOS. +.TP +.BI -H2 +Plan 9. +.TP +.BI -H3 +Boot for NetBSD. +.TP +.BI -H4 +Headerless, stripped, and padded to 2K in length. Used for the ROM resident serial +bootstrap +loader in a Cirrus EP72xx. +.TP +.BI -H5 +Headerless, and stripped, for general use. +.TP +.BI -H6 +EPOC IMG format. Not a complete conversion, currently sufficient for use with some +NT based downloaders which autosense the file type by the "EP" signature, and then +ignore the contents of the header. +.PP +The other options are: +.TP +.BI -s +Strip symbol table. +.TP +.BI -D n +Enables debug output. +.PP +.I Mkppcimage +converts a PowerPC or ARM +.I executable +to a boot image format used by +.SM PPCBOOT +and +.SM UBOOT\c +\&. +The output file has a +.SM PPCBOOT +image with one component labelled as an `OS kernel' for the appropriate architecture, +containing the +.IR a.out (10.6) +header, text and initialised data, all uncompressed. +Symbols are not included. +By default the load address is deduced from the executable's entry point; +the +.B -l +option allows +.I loadaddr +to be set explicitly, with the number in C syntax (decimal by default). +Other attributes are deduced from the executable. +.PP +.I Sqz +squeezes (compresses) the given +ARM or PowerPC +.I executable +using a method that achieves respectable compression for executables but is much faster to decompress than +(say) +.BR gzip 's. +By default, both the program text and initialised data are compressed; the +.B -t +option causes +.I sqz +to compress only the program text, leaving the data as-is. +By default, +.I sqz +prints compression statistics on its standard error output; +the +.B -w +option causes it also to write the compressed file on its standard output. +Either the bootstrap that loads it must decompress the result, or a small uncompressed +stub must also be loaded that decompresses the remainder. +.SH SOURCE +.B /utils/5cv +.br +.B /utils/mkppcimage +.br +.B /utils/sqz +.SH "SEE ALSO" +.IR 2l (10.1), +.IR 5cv (10.1), +.IR ms2 (10.1), +.IR a.out (10.5) diff --git a/man/10/9load b/man/10/9load new file mode 100644 index 00000000..b1c696c3 --- /dev/null +++ b/man/10/9load @@ -0,0 +1,411 @@ +.TH 9LOAD 10.8 +.SH NAME +9load, ld, 9pxeload \- PC bootstrap program +.SH SYNOPSIS +.I "(Under MS-DOS) +.br +[ +.I drive +:][ +.I path +.RB ] ld +[ +.I 9load +] +.SH DESCRIPTION +On the PC, bootstrap programs from Plan 9 are used to boot Inferno as well +(hence the naming convention). +.I 9load +and +.I ld +are programs that reside in a FAT file system and bootstrap Inferno. +.I 9load +loads the kernel, but it cannot be run from DOS; use +.I ld +to bootstrap (by starting +.IR 9load ) +if DOS is running. +.I 9load +is run automatically by the boot procedures described below; +it cannot be run directly by hand. +There are three bootstrap sequences: +.IP \- +BIOS, MBR, disk partition PBS, +.IR 9load , +kernel +.IP \- +BIOS, floppy PBS, +.IR 9load , +kernel +.IP \- +BIOS, MBR, DOS, +.IR ld , +.IR 9load , +kernel. +.PP +Details follow. +.PP +.I 9load +is a bootstrap program that loads and starts a program, +typically the kernel, on a PC. +It is run by the PC partition boot sector program (PBS), +which usually resides in the first +sector of the active partition. +A copy of the Plan 9 PBS is kept in +.BR /Inferno/386/pbs , +but due to the ``cylinder-head-sector'' (CHS) addressing mode of old BIOSes, it can only +operate up to 8.5GB into the disk. +Plan 9 partitions further into the disk +can only be booted using +.BR /Inferno/386/pbslba , +and then only if the machine's BIOS supports +linear block addressing (LBA) mode for disk transfers. +.PP +When booting from floppy or hard disk, the BIOS loads the +first sector of the medium at location 0x7C00. In the +case of a floppy, this is the PBS. In the case of a hard +disk it it the master boot record (MBR). +The MBR copies itself to address +.BR 0x600 , +finds the active partition and loads its PBS at address +.BR 0x7C00 . +A copy of the Plan 9 MBR is kept in +.BR /Inferno/386/mbr ; +some commercial MBRs cannot read sectors +past 2GB. +The Plan 9 MBR can read sectors up to 8.5GB into +the disk, and further if the BIOS supports LBA. +The single file +.B /Inferno/386/mbr +detects whether the BIOS supports LBA and +acts appropriately, defaulting to CHS mode +when LBA is not present. +The PBSs cannot do this due to code size considerations. +The Plan 9 MBR is suitable for booting non-Plan 9 +operating systems, +and (modulo the large disk constraints just described) +non-Plan 9 MBRs are suitable for booting Plan 9. +.PP +Thus the default sequence is: BIOS, MBR, PBS, +.IR 9load , +kernel. +.PP +Because it contains many device drivers for different +disks and networks, +.I 9load +is larger than 64K and cannot be run as a DOS +.RB `` .com '' +executable. +A stripped-down version that knows about disks but not networks, +called +.I ld +(really +.BR ld.com ), +fits in 64K and can be used under DOS to load and start a program (default +.IR 9load ) +from the FAT16 partition. +Its command line argument is of the same format as the +.I bootfile +specifiers described below. +This profusion of loaders is unfortunate, but at least +.I ld +and +.I 9load +are compiled from the same source. +.PP +.I 9load +begins execution at address +.B 0x80010000 +(64K) and +loads the +.I bootfile +at the entry address specified by the header, +usually +.BR 0x80100020 . +After loading, control is passed to the entry location. +.PP +Finally, +.I 9pxeload +is a version of +.I 9load +that can be booted using the PXE download +found on some ethernet card BIOSs. +.PP +In summary, +Inferno and Plan 9 can be booted on a PC three different ways: +either by booting MS-DOS and using +.I ld +to start +.I 9load +in the appropriate directory, +by booting directly from an Inferno/Plan 9 boot floppy or disk +partition +prepared using +.B format +to install the appropriate files and bootstrap sectors +(see +.IR prep (8)), +or by using a PXE capable BIOS to boot +.I 9pxeload +directly over the ethernet. +.PP +The +.IR bootfile , +which may be compressed with +.IR gzip (1), +can be specified to +.I 9load +as a +.B bootfile= +entry in +.IR plan9.ini , +or if booting from the ethernet, by a BOOTP server. +If the +.B plan9.ini +file contains multiple +.B bootfile= +entries, +.I 9load +will present a numerical menu of the choices; type +the corresponding number to select an entry. +.PP +The format of the +.I bootfile +name is +.IB device ! file +or +.IB device ! partition ! file\f1. +If +.BI ! file +is omitted, the default for the particular +.I device +is used. +Supported +.I devices +are +.TF \fLethern +.TP +.BI fd n +An MS-DOS floppy disk. +.I N +specifies the floppy drive, either +0 or 1. +The +.I bootfile +is the contents of the MS-DOS +.IR file . +There is no default file. +For compatibility with hard disks, a +.I partition +may be given, but only +.B dos +is recognized: +.BI fd0!dos! file\f1. +.TP +.BI ether n +Ethernet. +.I N +specifies the Ethernet device number. +If a +.I partition +is specified, it is taken to be the name of a host machine +from which to load the kernel. +.I file +is determined by the +.B /lib/ndb +(see +.IR ndb (6)) +entry for this PC. +.TP +.BI sd Cn +Non-floppy disk. +The device name format is described in +.IR sd (3). +A +.I partition +must be given and must +name a partition containing a FAT file system. +The name +.B dos +refers to the first DOS partition on a given device. +It is common for Inferno/Plan 9 partitions to contain a small +FAT file system for configuration. +By convention, this partition is called +.BR 9fat . +There is no default partition or pathname. +.PD +.PP +When +.I 9load +starts running at physical address 0x10000, +it switches to 32-bit mode. +It then double maps the first 16Mb of physical memory to +virtual addresses 0 and 0x80000000. +Physical memory from 0x300000 upwards is used as data +space. +Next, in order to find configuration information, +.I 9load +searches all units on devices +.BR fd +and +.BI sd Cn \fR, +in that order, for a file called +.B plan9\eplan9.ini +or +.B plan9.ini +(see +.IR plan9.ini (10.6)) +on a partition named +.B dos +or +.BR 9fat . +If one is found, searching stops and the file is read into memory +at physical address 0x1200 +where it can be found later by any loaded +.IR bootfile . +Some options in +.B plan9.ini +are used by +.IR 9load : +.TF bootfile=manual +.TP +.B console +.TP +.B baud +Specifies the console device and baud rate if not a display. +.TP +.BI ether n +Ethernet interfaces. These can be used to load the +.I bootfile +over a network. +Probing for Ethernet interfaces is too prone to error. +.TP +.BI bootfile= bootfile +Specifies the +.IR bootfile . +This option is overridden by a command-line argument. +.TP +.B bootfile=auto +Default. +.TP +.B bootfile=local +Like +.IR auto , +but do not attempt to load over the network. +.TP +.B bootfile=manual +After determining which devices are available for loading from, +enter prompt mode. +.PD +.PP +When the search for +.B plan9.ini +is done, +.I 9load +proceeds to determine which bootfile to load. +If there was no +.I bootfile +option, +.I 9load +chooses a default +from the following prioritized device list: +.EX + fd sd ether +.EE +.I 9load +then attempts to load the +.I bootfile +unless +the +.B bootfile=manual +option was given, in which case prompt mode is entered immediately. +If the default device is +.BR fd , +.I 9load +will prompt the user for input before proceeding with the +default bootfile load after 5 seconds; +this prompt is omitted if +a command-line argument or +.I bootfile +option +was given. +.PP +.I 9load +prints the list of available +.IR device s +and +enters prompt mode on encountering any error +or if directed to do so by a +.B bootfile=manual +option. +In prompt mode, the user is required to type +a +.IB bootfile +in response to the +.L "Boot from: +prompt. +.PP +.I 9load +parses the master boot record and Plan 9 partition tables +(see +.IR prep (8)), +leaving partitioning information appended to the +in-memory contents of +.I plan9.ini +for the +.IR bootfile . +This is used by +.IR sd (3) +to initialize partitions so that a +file system in a partition can be found and mounted as the root file system. +A more extensive partitioning is typically done by system initialisation in +.B osinit.dis +(see +.IR root (3)). +.PP +A +control-P +character typed at any time on the console causes +.B 9load +to perform a hardware reset +(Ctrl-Alt-Del can also be used on a PC keyboard). +.PP +When loaded from a PBS (rather than from +.IR ld.com ), +.I 9load +must be contiguously allocated on +the disk. +See +.IR dossrv (4) +for information on ensuring this. +.SH FILES +.RI [ drive :] +[ +.I path +.RB ] 9load +.br +.RI [ drive :] +[ +.I path +.RB ] ld +.br +.IB "FAT filesystem" :\eplan9\eplan9.ini +.br +.IB "FAT filesystem" :\eplan9.ini +.SH SOURCE +.B /os/boot/pc +.SH "SEE ALSO" +.IR plan9.ini (10.6), +.IR prep (8) +.SH BUGS +Much of the work done by +.B 9load +is duplicated by the loaded kernel. +.PP +If +.I ld +detects an installed MS-DOS Extended Memory Manager, +it attempts to de-install it, but the technique +used may not always work. +It is safer not to install the Extended Memory Manager before running +.IR ld . diff --git a/man/10/INDEX b/man/10/INDEX new file mode 100644 index 00000000..fedbc2c9 --- /dev/null +++ b/man/10/INDEX @@ -0,0 +1,263 @@ +intro 0intro +0a 2a +1a 2a +2a 2a +5a 2a +6a 2a +7a 2a +8a 2a +ka 2a +qa 2a +va 2a +0c 2c +1c 2c +2c 2c +5c 2c +6c 2c +7c 2c +8c 2c +kc 2c +qc 2c +vc 2c +0l 2l +1l 2l +2l 2l +5l 2l +6l 2l +7l 2l +8l 2l +kl 2l +ql 2l +vl 2l +5coff 5coff +5cv 5cv +mkppcimage 5cv +sqz 5cv +9load 9load +9pxeload 9load +ld 9load +a.out a.out +acid acid +adjustblock allocb +allocb allocb +blen allocb +blocklen allocb +checkb allocb +concatblock allocb +copyblock allocb +freeb allocb +freeblist allocb +iallocb allocb +packblock allocb +padblock allocb +pullblock allocb +pullupblock allocb +trimblock allocb +ar ar +atoi atoi +atol atoi +charstod atoi +strtod atoi +strtol atoi +strtoll atoi +strtoul atoi +c2l c2l +conf conf +addclock0link delay +delay delay +microdelay delay +dev dev +devattach devattach +devbread devattach +devbwrite devattach +devclone devattach +devcreate devattach +devdir devattach +devdirread devattach +devgen devattach +devinit devattach +devopen devattach +devremove devattach +devreset devattach +devshutdown devattach +devstat devattach +devwalk devattach +devwstat devattach +openmode devattach +dmacount dmainit +dmadone dmainit +dmaend dmainit +dmainit dmainit +dmasetup dmainit +dynfindsym dynld +dynfreeimport dynld +dynld dynld +dynloadfd dynld +dynloadgen dynld +dynobjfree dynld +dyntabsize dynld +error error +nexterror error +poperror error +waserror error +eve eve +iseve eve +getfields getfields +tokenize getfields +iar iar +inb inb +inl inb +ins inb +insb inb +insl inb +inss inb +outb inb +outl inb +outs inb +outsb inb +outsl inb +outss inb +inm inm +intrdisable intrenable +intrenable intrenable +kbdclock kbdputc +kbdputc kbdputc +kbdq kbdputc +kbdrepeat kbdputc +kproc kproc +pexit kproc +setpri kproc +swiproc kproc +kprof kprof +ksize ksize +kstrip kstrip +canlock lock +ilock lock +iunlock lock +lock lock +unlock lock +calloc malloc +free malloc +malloc malloc +mallocz malloc +realloc malloc +smalloc malloc +memccpy memory +memchr memory +memcmp memory +memcpy memory +memmove memory +memory memory +memset memory +mk mk +ms2 ms2 +cclose newchan +chanfree newchan +eqchan newchan +eqqid newchan +fdtochan newchan +isdir newchan +namec newchan +newchan newchan +ntsrv ntsrv +odbc odbc +panic panic +parsecmd parsecmd +plan9.ini plan9.ini +fprint print +print print +seprint print +smprint print +snprint print +sprint print +vfprint print +vseprint print +vsmprint print +vsnprint print +qbread qio +qbwrite qio +qcanread qio +qclose qio +qconsume qio +qcopy qio +qdiscard qio +qflush qio +qfree qio +qfull qio +qget qio +qhangup qio +qio qio +qiwrite qio +qlen qio +qnoblock qio +qopen qio +qpass qio +qproduce qio +qread qio +qreopen qio +qsetlimit qio +qwindow qio +qwrite qio +canqlock qlock +qlock qlock +qunlock qlock +rlock qlock +runlock qlock +wlock qlock +wunlock qlock +readnum readnum +readstr readnum +decref ref +incref ref +ref ref +chartorune rune +fullrune rune +rune rune +runelen rune +runetochar rune +utflen rune +utfrrune rune +utfrune rune +utfutf rune +hz seconds +ms2hz seconds +ms2tk seconds +seconds seconds +ticks seconds +tk2ms seconds +tk2sec seconds +return0 sleep +sleep sleep +tsleep sleep +wakeup sleep +islo splhi +splhi splhi +spllo splhi +splx splhi +srclist srclist +strcat strcat +strchr strcat +strcmp strcat +strcpy strcat +strdup strcat +strlen strcat +strncmp strcat +strncpy strcat +strrchr strcat +strstr strcat +convd2m styx +convm2d styx +convm2s styx +convs2m styx +dirfmt styx +dirmodefmt styx +fcall styx +fcallfmt styx +sized2m styx +sizes2m styx +statcheck styx +styx styx +styxserver styxserver +xalloc xalloc +xfree xalloc +xspanalloc xalloc diff --git a/man/10/a.out b/man/10/a.out new file mode 100644 index 00000000..6e5841d0 --- /dev/null +++ b/man/10/a.out @@ -0,0 +1,242 @@ +.TH A.OUT 10.6 +.SH NAME +a.out \- native kernel object file format +.SH SYNOPSIS +.B #include <a.out.h> +.SH DESCRIPTION +An executable native binary file has up to six sections: +a header, the program text, the data, +a symbol table, a PC/SP offset table (MC680x0 only), +and finally a PC/line number table. +The header, given by a structure in +.BR <a.out.h> , +contains 4-byte integers in big-endian order: +.PP +.EX +typedef struct Exec { + long magic; /* magic number */ + long text; /* size of text segment */ + long data; /* size of initialized data */ + long bss; /* size of uninitialized data */ + long syms; /* size of symbol table */ + long entry; /* entry point */ + long spsz; /* size of pc/sp offset table */ + long pcsz; /* size of pc/line number table */ +} Exec; +#define _MAGIC(b) ((((4*b)+0)*b)+7) +#define A_MAGIC _MAGIC(8) /* 68020 */ +#define I_MAGIC _MAGIC(11) /* intel 386 */ +#define J_MAGIC _MAGIC(12) /* intel 960 */ +#define K_MAGIC _MAGIC(13) /* sparc */ +#define V_MAGIC _MAGIC(16) /* mips 3000 */ +#define X_MAGIC _MAGIC(17) /* att dsp 3210 */ +#define M_MAGIC _MAGIC(18) /* mips 4000 */ +#define D_MAGIC _MAGIC(19) /* amd 29000 */ +#define E_MAGIC _MAGIC(20) /* arm 7-something */ +#define Q_MAGIC _MAGIC(21) /* powerpc */ +#define N_MAGIC _MAGIC(22) /* mips 4000-le */ +#define L_MAGIC _MAGIC(23) /* dec alpha */ +.EE +.DT +.PP +Sizes are expressed in bytes. +The size of the header is not included in any of the other sizes. +.PP +When a Plan 9 binary file is executed, +a memory image of three segments is +set up: the text segment, the data segment, and the stack. +The text segment begins at a virtual address which is +a multiple of the machine-dependent page size. +The text segment consists of the header and the first +.B text +bytes of the binary file. +The +.B entry +field gives the virtual address of the entry point of the program. +The data segment starts at the first page-rounded virtual address +after the text segment. +It consists of the next +.B data +bytes of the binary file, followed by +.B bss +bytes initialized to zero. +The stack occupies the highest possible locations +in the core image, automatically growing downwards. +.PP +The next +.B syms +(possibly zero) +bytes of the file contain symbol table +entries, each laid out as: +.IP +.EX +uchar value[4]; +char type; +char name[\f2n\fP]; /* NUL-terminated */ +.EE +.PP +The +.B value +is in big-endian order and +the size of the +.B name +field is not pre-defined: it is a zero-terminated array of +variable length. +.PP +The +.B type +field is one of the following characters: +.RS +.TP +.B T +text segment symbol +.PD0 +.TP +.B t +static text segment symbol +.TP +.B L +leaf function text segment symbol +.TP +.B l +static leaf function text segment symbol +.TP +.B D +data segment symbol +.TP +.B d +static data segment symbol +.TP +.B B +bss segment symbol +.TP +.B b +static bss segment symbol +.TP +.B a +automatic (local) variable symbol +.TP +.B p +function parameter symbol +.RE +.PD +.PP +A few others are described below. +The symbols in the symbol table appear in the same order +as the program components they describe. +.PP +The Plan 9 compilers implement a virtual stack frame pointer rather +than dedicating a register; +moreover, on the MC680x0 +there is a variable offset between the stack pointer and the +frame pointer. +Following the symbol table, +MC680x0 executable files contain a +.BR spsz -byte +table encoding the offset +of the stack frame pointer as a function of program location; +this section is not present for other architectures. +The PC/SP table is encoded as a byte stream. +By setting the PC to the base of the text segment +and the offset to zero and interpreting the stream, +the offset can be computed for any PC. +A byte value of 0 is followed by four bytes that hold, in big-endian order, +a constant to be added to the offset. +A byte value of 1 to 64 is multiplied by four and added, without sign +extension, to the offset. +A byte value of 65 to 128 is reduced by 64, multiplied by four, and +subtracted from the offset. +A byte value of 129 to 255 is reduced by 129, multiplied by the quantum +of instruction size +(e.g. two on the MC680x0), +and added to the current PC without changing the offset. +After any of these operations, the instruction quantum is added to the PC. +.PP +A similar table, occupying +.BR pcsz -bytes, +is the next section in an executable; it is present for all architectures. +The same algorithm may be run using this table to +recover the absolute source line number from a given program location. +The absolute line number (starting from zero) counts the newlines +in the C-preprocessed source seen by the compiler. +Three symbol types in the main symbol table facilitate conversion of the absolute +number to source file and line number: +.RS +.TP +.B f +source file name components +.TP +.B z +source file name +.TP +.B Z +source file line offset +.RE +.PP +The +.B f +symbol associates an integer (the +.B value +field of the `symbol') with +a unique file path name component (the +.B name +of the `symbol'). +These path components are used by the +.B z +symbol to represent a file name: the +first byte of the name field is always 0; the remaining +bytes hold a zero-terminated array of 16-bit values (in big-endian order) +that represent file name components from +.B f +symbols. +These components, when separated by slashes, form a file name. +The initial slash of a file name is recorded in the symbol table by an +.B f +symbol; when forming file names from +.B z +symbols an initial slash is not to be assumed. +The +.B z +symbols are clustered, one set for each object file in the program, +before any text symbols from that object file. +The set of +.B z +symbols for an object file form a +.I history stack +of the included source files from which the object file was compiled. +The value associated with each +.B z +symbol is the absolute line number at which that file was included in the source; +if the name associated with the +.B z +symbol is null, the symbol represents the end of an included file, that is, +a pop of the history stack. +If the value of the +.B z +symbol is 1 (one), +it represents the start of a new history stack. +To recover the source file and line number for a program location, +find the text symbol containing the location +and then the first history stack preceding the text symbol in the symbol table. +Next, interpret the PC/line offset table to discover the absolute line number +for the program location. +Using the line number, scan the history stack to find the set of source +files open at that location. +The line number within the file can be found using the line numbers +in the history stack. +The +.B Z +symbols correspond to +.B #line +directives in the source; they specify an adjustment to the line number +to be printed by the above algorithm. The offset is associated with the +first previous +.B z +symbol in the symbol table. +.SH "SEE ALSO" +.IR acid (10.1), +.IR 2a (10.1), +.IR 2l (10.1), +.IR inm (10.1) +.SH BUGS +There is no type information in the symbol table. diff --git a/man/10/acid b/man/10/acid new file mode 100644 index 00000000..ea816187 --- /dev/null +++ b/man/10/acid @@ -0,0 +1,373 @@ +.TH ACID 10.1 +.SH NAME +acid \- debugger +.SH SYNOPSIS +.B acid +[ +.BI -l " libfile +] +[ +.B -wq +] [ +.B -m +.I machine +] [ +.I pid +] +[ +.I textfile +] +.SH DESCRIPTION +.I Acid +is a programmable symbolic debugger. +It can inspect one or more processes that share an address space. +A program to be debugged may be specified by the process id of +a running or defunct process, +or by the name of the program's text file +.RB ( v.out +by default). +At the prompt, +.I acid +will store function definitions or print the value of expressions. +Options are +.TP .9i +.B -w +Allow the textfile to be modified. +.TP +.B -q +Don't print variable renamings at startup. +.TP +.BI -l " library +Load from +.I library +at startup; see below. +.TP +.BI -m " machine +Assume instructions are for the given CPU type +(one of +.BR 386 , +.BR 86 , +.BR 68020 , +.BR 960 , +.BR power , +.BR arm , +.BR mips , +.BR mipsco , +.BR sparc , +or +.BR sunsparc ) +instead of using the magic number to select +the CPU type. +.PP +At startup, +.I acid +obtains standard function definitions from the library file +.BR /lib/acid/port , +architecture-dependent functions from +.BR /lib/acid/$objtype , +user-specified functions from +.BR $home/lib/acid , +and further functions from +.B -l +files. +Definitions in any file may override previously defined functions. +If the function +.IR acidinit () +is defined, it will be invoked after all modules have been loaded. +See +.IR 2c (10.1) +for information about creating +.I acid +functions for examining data structures. +.SS Language +Symbols of the program being debugged become integer +variables whose values are addresses. +Contents of addresses are obtained by indirection. +Local variables are qualified by +function name, for example +.BR main:argv . +When program symbols conflict with +.I acid +words, distinguishing +.B $ +signs are prefixed. +Such renamings are reported at startup; option +.B -q +suppresses them. +.PP +Variable types +.RI ( "integer, float, list, string" ) +and formats are inferred from assignments. +Truth values false/true are attributed to zero/nonzero +integers or floats and to empty/nonempty lists or strings. +Lists are sequences of expressions surrounded by +.BR {\^} +and separated by commas. +.PP +Expressions are much as in C or Alef, +but yield both a value and a format. +Alef-style casts to complex types are allowed. +Lists admit the following operators, with +subscripts counted from 0. +.IP +.BI head " list +.br +.BI tail " list +.br +.BI append " list", " element +.br +.BI delete " list", " subscript +.PP +Format codes are the same as in +.IR db (10.1). +Formats may be attached to (unary) expressions with +.BR \e , +e.g. +.BR (32*7)\eD . +There are two indirection operators, +.B * +to address a core image, +.B @ +to address a text file. +The type and format of the result are determined by the format of the operand, +whose type must be integer. +.PP +Statements are +.IP +.BI if " expr " then " statement " "\fR[ \fPelse\fI statement \fR] +.br +.BI while " expr " do " statement +.br +.BI loop " expr" , " expr " do " statement +.br +.BI defn " name" ( args ") {" " statement \fP} +.br +.BI local " name +.br +.BI return " expr +.br +.BR whatis " [ \fI name \fP] +.PP +Here is a partial list of functions; see the manual for a complete list. +.TF asm(address) +.TP +.B stk() +Print a stack trace for current process. +.TP +.B lstk() +Print a stack trace with values of local variables. +.TP +.B gpr() +Print general registers. +Registers can also be accessed by name, for example +.BR *R0 . +.TP +.B spr() +Print special registers such as program counter and stack pointer. +.TP +.B fpr() +Print floating-point registers. +.TP +.B regs() +Same as +.BR spr();gpr() . +.TP +.BI fmt( expr , format ) +Expression +.I expr +with format given by the character value of expression +.IR format . +.TP +.BI src( address ) +Print 10 lines of source around the program address. +.TP +.BI Bsrc( address ) +Get the source line for the program address +into a window of a running +.IR sam (10.1) +and select it. +.TP +.BI line( address ) +Print source line nearest to the program address. +.TP +.B source() +List current source directories. +.TP +.BI addsrcdir( string ) +Add a source directory to the list. +.TP +.BI filepc( where ) +Convert a string of the form +.IB sourcefile : linenumber +to a machine address. +.TP +.BI pcfile( address ) +Convert a machine address to a source file name. +.TP +.BI pcline( address ) +Convert a machine address to a source line number. +.TP +.BI bptab() +List breakpoints set in the current process. +.TP +.BI bpset( address ) +Set a breakpoint in the current process at the given address. +.TP +.BI bpdel( address ) +Delete a breakpoint from the current process. +.TP +.B cont() +Continue execution of current process and wait for it to stop. +.TP +.B step() +Execute a single machine instruction in the current process. +.TP +.B func() +Step repeatedly until after a function return. +.TP +.BI stopped( pid ) +This replaceable function is called automatically when the given process +stops. +It normally prints the program counter and returns to the prompt. +.TP +.BI asm( address ) +Disassemble 30 machine instructions beginning at the given address. +.TP +.BI mem( address , string ) +Print a block of memory +interpreted according to a string of format codes. +.TP +.BI dump( address , n , string\fP) +Like +.BR mem (), +repeated for +.I n +consecutive blocks. +.TP +.BI print( expr , ... ) +Print the values of the expressions. +.TP +.BI newproc( arguments ) +Start a new process with arguments given as a string +and halt at the first instruction. +.TP +.B new() +Like +.IR newproc (), +but take arguments (except +.BR argv[0] ) +from string variable +.BR progargs . +.TP +.B win() +Like +.IR new (), +but run the process in a separate window. +.TP +.BI start( pid ) +Start a stopped process. +.TP +.BI kill( pid ) +Kill the given process. +.TP +.BI setproc( pid ) +Make the given process current. +.TP +.BI rc( string ) +Escape to the shell, +.IR rc (10.1), +to execute the command string. +.SH EXAMPLES +Start to debug +.BR /bin/ls ; +set some breakpoints; run up to the first one: +.IP +.EX +% acid /bin/ls +/bin/ls: mips plan 9 executable +/lib/acid/port +/lib/acid/mips +acid: new() +70094: system call _main ADD $-0x14,R29 +70094: breakpoint main+0x4 MOVW R31,0x0(R29) +acid: pid +70094 +acid: argv0 = **main:argv\es +acid: whatis argv0 +integer variable format s +acid: *argv0 +/bin/ls +acid: bpset(ls) +acid: cont() +70094: breakpoint ls ADD $-0x16c8,R29 +acid: +.EE +.PP +Display elements of a linked list of structures: +.IP +.EX +complex Str { 'D' 0 val; 'X' 4 next; }; +complex Str s; +s = *headstr; +while s != 0 do{ + print(s.val, "\en"); + s = s.next; +} +.EE +.PP +Note the use of the +.B . +operator instead of +.BR -> . +.PP +Display an array of bytes declared in C as +.BR "char array[]" . +.IP +.EX +*(array\es) +.EE +.PP +This example gives +.B array +string format, then prints the string beginning at the address (in +.I acid +notation) +.BR *array . +.SH FILES +.B /proc/*/text +.br +.B /proc/*/mem +.br +.B /proc/*/ctl +.br +.B /proc/*/note +.br +.B /lib/acid/$objtype +.br +.B /lib/acid/port +.br +.B $home/lib/acid +.SH SOURCE +.B /utils/acid +.SH "SEE ALSO" +.IR 2a (10.1), +.IR 2c (10.1), +.IR 2l (10.1), +.IR alef (10.1), +.IR mk (10.1), +.IR db (10.1) +.br +Phil Winterbottom, +``Acid Manual''. +.SH DIAGNOSTICS +At termination, kill commands are proposed +for processes that are still active. +.SH BUGS +There is no way to redirect the standard input and standard output +of a new process. +.br +Source line selection near the beginning of a file may pick +an adjacent file. +.br +With the extant stepping commands, one cannot step through instructions +outside the text segment and it is hard to debug across process forks. diff --git a/man/10/allocb b/man/10/allocb new file mode 100644 index 00000000..4690ab35 --- /dev/null +++ b/man/10/allocb @@ -0,0 +1,314 @@ +.TH ALLOCB 10.2 +.SH NAME +allocb, iallocb, freeb, freeblist, BLEN, blocklen, concatblock, copyblock, trimblock, packblock, padblock, pullblock, pullupblock, adjustblock, checkb \- data block management +.SH SYNOPSIS +.ta \w'\fLBlock* 'u +.B +Block* allocb(int size) +.PP +.B +Block* iallocb(int size) +.PP +.B +void freeb(Block *b) +.PP +.B +void freeblist(Block *b) +.PP +.B +long BLEN(Block *b) +.PP +.B +int blocklen(Block *b) +.PP +.B +Block* concatblock(Block *b) +.PP +.B +Block* copyblock(Block *b, int n) +.PP +.B +Block* trimblock(Block *b, int offset, int n) +.PP +.B +Block* packblock(Block *b) +.PP +.B +Block* padblock(Block *b, int n) +.PP +.B +int pullblock(Block **bph, int n) +.PP +.B +Block* pullupblock(Block *b, int n) +.PP +.B +Block* adjustblock(Block *b, int n) +.PP +.B +void checkb(Block *b, char *msg) +.SH DESCRIPTION +A +.B Block +provides a receptacle for data: +.IP +.EX +.DT +typedef +struct Block +{ + Block* next; + Block* list; + uchar* rp; /* first unconsumed byte */ + uchar* wp; /* first empty byte */ + uchar* lim; /* 1 past the end of the buffer */ + uchar* base; /* start of the buffer */ + void (*free)(Block*); + ulong flag; +} Block; +.EE +.PP +Each +.B Block +has an associated buffer, located at +.BR base , +and accessed via +.B wp +when filling the buffer, or +.B rp +when fetching data from it. +Each pointer should be incremented to reflect the amount of data written or read. +A +.B Block +is empty when +.B rp +reaches +.BR wp . +The pointer +.B lim +bounds the allocated space. +Some operations described below accept lists of +.BR Block s, +which are +chained via their +.B next +pointers, with a null pointer ending the list. +.B Blocks +are usually intended for a +.B Queue +(see +.IR qio (10.2)), +but can be used independently. +.PP +A +.B Block +and its buffer are normally allocated by one call to +.IR malloc (10.2) +and aligned on an 8 byte (\fLBY2V\fP) boundary. +Some devices with particular allocation constraints +(eg, requiring certain addresses for DMA) might allocate their own +.B Block +and buffer; +.B free +must then point to a function that can deallocate the specially allocated +.BR Block . +.PP +Many +.B Block +operations cannot be used in interrupt handlers +because they either +.IR sleep (10.2) +or raise an +.IR error (10.2). +Of operations that allocate blocks, only +.IR iallocb +is usable. +.PP +.I Allocb +allocates a +.B Block +of at least +.IR size +bytes. +The block +is initially empty: +.B rp +and +.B wp +point to the start of the data. +If it cannot allocate memory, +.I allocb +raises an +.IR error (10.2); +it cannot be used by an interrupt handler. +.PP +.IR Iallocb +is similar to +.IR allocb +but is intended for use by interrupt handlers, +and returns a null pointer if no memory is available. +It also limits its allocation to a quota allocated at system initialisation to interrupt-time buffering. +.PP +.I Freeb +frees a single +.B Block +(and its buffer). +.PP +.I Freeblist +frees the whole +list of blocks headed by +.IR b . +.PP +.I BLEN +returns the number of unread bytes in a single block +.IR b ; +it is implemented as a macro. +.PP +.I Blocklen +returns the number of bytes of unread data in the whole list of blocks headed by +.IR b . +.PP +.I Concatblock +returns +.I b +if it is not a list, and otherwise +returns a single +.B Block +containing all the data in the list of blocks +.IR b , +which it frees. +.PP +.I Copyblock +by contrast returns a single +.B Block +containing a copy of the first +.I n +bytes of data in the block list +.IR b , +padding with zeroes if the list contained less than +.I n +bytes. +The list +.I b +is unchanged. +.PP +.I Padblock +can pad a single +.B Block +at either end, to reserve space for protocol headers or trailers. +If +.IR n ≥ 0 , +it inserts +.I n +bytes at the start of the block, +setting the read pointer +.B rp +to point to the new space. +If +.IR n < 0 , +it adds +.I n +bytes at the end of the block, +leaving the write pointer +.B wp +pointing at the new space. +In both cases, it allocates a new +.B Block +if necessary, freeing the old, and +it always returns a pointer to the resulting +.BR Block . +.PP +.I Trimblock +trims the list +.I b +to contain no more than +.I n +bytes starting at +.I offset +bytes into the data of the original list. +It returns a new list, freeing unneeded parts of the old. +If no data remains, it returns a null pointer. +.PP +.I Packblock +examines each +.B Block +in the list +.IR b , +reallocating any block in the list that has four times more available space than actual data. +It returns a pointer to the revised list. +.PP +.I Pullblock +discards up to +.I n +bytes from the start of the list headed by +.BI * bph \f1.\f0 +Unneeded blocks are freed. +.I Pullblock +sets +.BI * bph +to point to the new list head +and returns the number of bytes discarded (which might be less than +.IR n ). +It is used by transport protocols to discard ack'd data at +the head of a retransmission queue. +.PP +.I Pullupblock +rearranges the data in the list of blocks +.I b +to ensure that there are at least +.I n +bytes of contiguous data in the first block, +and returns a pointer to the new list head. +It frees any blocks that it empties. +It returns a null pointer if there is not enough data in the list. +.PP +.I Adjustblock +ensures that the block +.I b +has at least +.I n +bytes of data, reallocating or padding with zero if necessary. +It returns a pointer to the new +.BR Block . +(If +.I n +is negative, it frees the block and returns a null pointer.) +.PP +.I Checkb +does some consistency checking of +the state of +.IR b ; +a +.IR panic (10.2) +results if things look grim. +It is intended for internal use by the queue I/O routines (see +.IR qio (10.2)) +but could be used elsewhere. +.PP +The only functions that can be called at interrupt level are +.IR iallocb , +.IR freeb , +.IR freeblist , +.IR BLEN , +.IR blocklen , +.IR trimblock +and +.IR pullupblock . +The others allocate memory and can potentially block. +.SH DIAGNOSTICS +Many functions directly or indirectly can raise an +.IR error (10.2), +and callers must therefore provide for proper error recovery +as described therein to prevent memory leaks and other bugs. +Except for +.IR iallocb , +any functions that allocate new blocks or lists +are unsuitable for use by interrupt handlers. +.IR Iallocb +returns a null pointer when it runs out of memory. +.SH SOURCE +.B /os/port/qio.c +.br +.B /emu/port/qio.c +.SH SEE ALSO +.IR qio (10.2) diff --git a/man/10/ar b/man/10/ar new file mode 100644 index 00000000..2c28f550 --- /dev/null +++ b/man/10/ar @@ -0,0 +1,98 @@ +.TH AR 10.6 +.SH NAME +ar \- archive (library) file format +.SH SYNOPSIS +.B #include <ar.h> +.SH DESCRIPTION +The archive command +.IR iar (10.1) +is used to combine several files into +one. +Archives are used mainly as libraries to be searched +by the loaders +.IR 2l (10.1) +.I et al. +.PP +A file produced by +.I ar +has a magic string at the start, +followed by the constituent files, each preceded by a file header. +The magic number and header layout as described in the +include file are: +.IP +.EX +.ec % +#define ARMAG "!<arch>\n" +#define SARMAG 8 + +#define ARFMAG "`\n" + +struct ar_hdr { + char name[16]; + char date[12]; + char uid[6]; + char gid[6]; + char mode[8]; + char size[10]; + char fmag[2]; +}; +#define SAR_HDR 60 +.ec \ +.EE +.LP +The +.B name +is a blank-padded string. +The +.L fmag +field contains +.L ARFMAG +to help verify the presence of a header. +The other fields are left-adjusted, blank-padded numbers. +They are decimal except for +.LR mode , +which is octal. +The date is the modification date of the file (see +.IR sys-stat (2)) +at the time of its insertion into the archive. +The mode is the low 9 bits of the file permission mode. +The length of the header is +.LR SAR_HDR . +Because the +.L ar_hdr +structure is padded in an architecture-dependent manner, +the structure should never be read or written as a unit; +instead, each field should be read or written independently. +.PP +Each file begins on an even (0 mod 2) boundary; +a newline is inserted between files if necessary. +Nevertheless +.B size +reflects the +actual size of the file exclusive of padding. +.PP +When all members of an archive are object files of +the same architecture, +.B ar +automatically adds an extra file, named +.BR __.SYMDEF , +as the first member of the archive. This file +contains an index used by the loaders to locate all +externally defined text and data symbols in the archive. +.PP +There is no provision for empty areas in an archive +file. +.SH "SEE ALSO" +.IR iar (10.1), +.IR 2l (10.1), +.IR inm (10.1), +.IR sys-stat (2) +.SH BUGS +The +.B uid +and +.B gid +fields are unused. +They provide compatibility with Unix +.I ar +format. diff --git a/man/10/atoi b/man/10/atoi new file mode 100644 index 00000000..6281ac2e --- /dev/null +++ b/man/10/atoi @@ -0,0 +1,127 @@ +.TH ATOI 10.2 +.SH NAME +atoi, atol, charstod, strtod, strtol, strtoul, strtoll \- convert text to numbers +.SH SYNOPSIS +.nf +.ta \w'\fLdouble 'u +.B +int atoi(char *nptr) +.PP +.B +long atol(char *nptr) +.PP +.B +double charstod(int (*f)(void *), void *a) +.PP +.B +double strtod(char *nptr, char **rptr) +.PP +.B +long strtol(char *nptr, char **rptr, int base) +.PP +.B +ulong strtoul(char *nptr, char **rptr, int base) +.PP +.B +vlong strtoll(char *nptr, char **rptr, int base) +.fi +.SH DESCRIPTION +.IR Atoi +and +.I atol +convert a string pointed to by +.I nptr +to integer, and long integer +representation respectively. +The first unrecognized character ends the string. +Leading C escapes are understood, as in +.I strtol +with +.I base +zero. +.PP +.I Atoi +and +.I atol +recognize an optional string of tabs and spaces, +then an optional sign, then a string of +decimal digits. +.PP +.IR Strtod , +.IR strtol , +.IR strtoul , +and +.I strtoll +behave similarly to +.I atol +and, if +.I rptr +is not zero, set +.I *rptr +to point to the input character +immediately after the string converted. +.PP +.I Strtod +recognizes an optional string of tabs and spaces, +then an optional sign, then +a string of digits optionally containing a decimal +point, then an optional +.L e +or +.L E +followed +by an optionally signed integer. +.PP +.IR Strtol , +.I strtoul +and +.I strtoll +interpret the digit string in the specified +.IR base , +from 2 to 36, +each digit being less than the base. +Digits with value over 9 are represented by letters, +a-z or A-Z. +If +.I base +is 0, the input is interpreted as an integral constant in +the style of C (with no suffixed type indicators): +numbers are octal if they begin with +.LR 0 , +hexadecimal if they begin with +.L 0x +or +.LR 0X , +otherwise decimal. +.I Strtoul +does not recognize signs. +.PP +.I Charstod +interprets floating point numbers in the same syntax as +.IR strtod , +but it gets successive characters by calling +.BR (*\fIf\fP)(\f2a\f5) . +The last call to +.I f +terminates the scan, so it must have returned a character that +is not a legal continuation of a number. +Therefore, it may be necessary to back up the input stream one character +after calling +.IR charstod . +.SH SOURCE +.B /libkern/atol.c +.br +.B /libkern/charstod.c +.br +.B /libkern/strtod.c +.br +.B /libkern/strtol.c +.br +.B /libkern/strtoul.c +.br +.B /libkern/utils.c +.SH DIAGNOSTICS +Zero is returned if the beginning of the input string is not +interpretable as a number; even in this case, +.I rptr +will be updated. diff --git a/man/10/c2l b/man/10/c2l new file mode 100644 index 00000000..63f134d2 --- /dev/null +++ b/man/10/c2l @@ -0,0 +1,231 @@ +.TH C2L 10.1 +.SH NAME +c2l \- C to Limbo translator +.SH SYNOPSIS +.B c2l +[ +.I option ... +] +.I file +.SH DESCRIPTION +.I C2l +translates the named C +.I file +into Limbo. The translated code should be almost always syntactically correct +but will certainly never be semantically correct as certain constructs in C +(strings for example) are almost impossible to convert automatically into Limbo. +Otherwise it tries to do a good job of translating the C constructs that have some +sort of equivalence in Limbo. The C ternary +.B ?: +operator is replaced where possible. +C library calls are mapped to calls to the Limbo system module, maths module or +the provided Limbo libc modules. Some library calls, such as malloc, are instead +mapped directly into Limbo wherever possible. +.PP +Once a translation has been made, running the +.IR limbo (1) +compiler on the resulting output should pick out the areas where hand +editing is required. +.PP +.I C2l +normally puts all mapped C code (plus that from included files) into a +single .b file. +.PP +The options to +.I c2l +are: +.TP +.B -p +Use an ANSI preprocessor in place of the internal one. +.TP +.BI -D name=def +.br +.ns +.TP +.BI -D name +Define the +.I name +to the preprocessor, +as if by +.LR #define . +If no definition is given, the name is defined as +.LR 1 . +.TP +.BI -I dir +An +.L #include +file whose name does not begin with +slash +or is enclosed in double quotes +is always +sought first in the directory +of the +.I file +argument. If this fails, or the name is enclosed in +.BR <> , +it is then sought +in directories named in +.B -I +options, +then in +.BR /sys/include , +and finally in +.BR /$objtype/include . +.TP +.B -m +Put the mapped code of any included +.B .h +files into its corresponding +.B .m +file instead of +the +.B .b +file. +.TP +.B -i +Send the mapped code of any included +.B .h +files to +.BR /dev/null . +.TP +.B -l +Send the mapped code of any non-local included +.B .h +files to +.BR /dev/null . +.TP +.B -c +Just generate code corresponding to the C code ie don't include any prologue +or epilogue code such as an implement header, include declarations, module +declarations or an init function. +.TP +.B -v +Outputs any warnings to standard error as well as putting them in the output source. +.TP +.B -s +Map C strings to NUL-terminated arrays of bytes in Limbo. This just about preserves +the semantics of strings and makes the process of hand editing much easier. It is +useful as a first attempt at translation. In this case the module +.B /module/libc0.m +is used in place of the standard one +.B /module/libc.m. +.TP +.B -S +Map +.B "char*" +in C to string in Limbo. Incompatible with the +.B -s +option. +.TP +.B -M +Indicates this file is the one containing the C main program. Used with the +.B -q +option below when +.I c2l +does not always know this until it's too late. +.TP +.B -q +This reduces the number of passes that +.I c2l +makes over the C code. It makes it faster but more liable to miss some +transformations. Cyclic data structures might not be detected. +.TP +.B -a +For functions which are passed the address of a scalar typed (ie not a structure +or union) expression as a parameter, pass the expression itself and +rewrite the function and all calls of it to return the expression. For example :- +.PP +.EX + int + f(int x, int *y) + { + *y = x*x*x; + return x*(*y); + } + + void + g() + { + int p3, p4; + + p4 = f(1729, &p3); + } +.EE +.PP + becomes +.PP +.EX + f(x: int, y: int): (int, int) + { + y = x*x*x; + return (x*y, y); + } + + g() + { + p3, p4: int; + + (p4, p3) = f(1729, p3); + } +.EE +.PP +.I C2l +runs the preprocessor on the C code before starting translation. As +a special case it will convert definitions of constants into Limbo constant declarations. +It makes no attempt to convert any definitions into function declarations. +.PP +Identifier names that clash with Limbo keywords have letter +.B x +appended so, for example, +a structure member called +.B type +would become +.BR typex . +.PP +Warning messages preceded by the acronym TBA (to be addressed) are issued for +NUL bytes in strings, ... as an argument, array indices in declarations, use of void type, use of unions, bit fields, use of address operator, negative array +indices, element specifiers, initial values in Limbo modules, labels, gotos and case +statement fall through. +.PP +The C types +.B char +and +.B "unsigned char" +are mapped to the Limbo +.B byte +type. +The C types short, unsigned short, int, unsigned int, long and unsigned long +are mapped to the Limbo int type. The C types long long and unsigned long long +are mapped to the Limbo big type. Finally the C types float and double are mapped +to the Limbo real type. +.PP +Anonymous C structures and unions map to a name of the form <module>_adt_<num> where module is the name of the module which is, in turn, derived from the file name. Anonymous member names in strucures and unions have a +name of the form anon_<num>. Finally,temporary variables generated by +.I c2l +have a name of the form tmp_<num>. In all cases <num> is a unique identifier. +.SH SOURCE +.TF /utils/c2l +.TP +.B /module/libc.m +.TP +.B /module/libc0.m +.TP +.B /appl/lib/libc.b +.TP +.B /appl/lib/libc0.b +.TP +.SH "SEE ALSO" +.IR 2c (10.1), +.IR limbo (1) +.SH BUGS +.I C2l +is not a pretty printer. It has its own idea of how Limbo should be laid out. +.PP +.I C2l +may well crash if given invalid C code. +.PP +.I c2l -a +does not always do all possible conversions. + + + diff --git a/man/10/conf b/man/10/conf new file mode 100644 index 00000000..134a3038 --- /dev/null +++ b/man/10/conf @@ -0,0 +1,335 @@ +.TH CONF 10.6 +.SH NAME +conf \- native and hosted kernel configuration file +.SH DESCRIPTION +Native and hosted Inferno kernels are built for a given target +.I platform +in the host environment in directory +.BI /os/ platform +or +.BI /emu/ platform . +Existing +platforms include +.B pc +and +.B ipaq +for native kernels and +.BR Plan9 , +.BR Linux , +.B Nt +(for all versions of Windows), +and +.BR Solaris , +amongst others. +Each +.I platform +can have different kernels with different configurations. +A given configuration is built in the platform's directory using the +.IR mk (10.1) +command: +.IP +.EX +mk 'CONF=\fIconf\fP' +.EE +.PP +where +.I conf +is a text file that specifies drivers, protocols and other parameters for that +particular kernel: +a parts list. +The result of a successful +.I mk +is +an executable or bootable file with a name determined by the +.IR platform 's +.BR mkfile , +typically +.BI i conf +for all native platforms, +.BI $O. conf +for Plan 9, Unix and clones, +and +.BI i conf .exe +for Windows. +.PP +A kernel configuration file has several sections of the form +.IP +.EX +.I "label" +.IR " item" " [ " "subitem ..." " ]" +\& ... +.EE +.PP +Each section begins with a +.I label +at the start of a line, which names a configuration +category, followed by +a list of each +.I item +to select from that category, +one line per item, with white space (ie, blank or tab) at the start of the line. +An +.I item +line can optionally list one or more +.I subitems +that must be included in the kernel to support it. +A line that starts with a +.L # +is a comment. +Empty lines are ignored. +.PP +.I Labels +are chosen from the following set, listed in the order +in which they conventionally appear in a configuration file: +.TF etherxx +.TP +.B dev +Device drivers +.TP +.B ip +IP protocols (native kernels only) taken from +.B ../ip +.TP +.B link +Hardware-specific parts of device drivers. +.TP +.B misc +Architecture-specific files; specific VGA and SCSI interfaces +.TP +.B lib +Libraries to link with the kernel +.TP +.B mod +Builtin Dis modules +.TP +.B port +Portable components (other than drivers) from +.B ../port +.TP +.B code +C code and declarations to include as-is in the generated configuration file +.TP +.B init +Dis init program +.TP +.B root +List of files and directories to put in the +.IR root (3) +file system +.PD +.PP +When an +.I item +is listed +under a given +.I label +it causes a corresponding component to be included in the kernel. +The details depend on the +.IR label , +as discussed below. +Each +.I subitem +represents a kernel subcomponent required by the corresponding +.IR item . +Both items and subitems can be either portable (platform-independent) +or platform-specific. +The source file for a given item or subitem +is sought in the platform-directory +(for platform-specific code), and +in directories +.BR ../port +and +.BR ../ip , +under control of the platform's +.BR mkfile +and +.B ../port/portmkfile +(which is included by +.BR mkfile ). +Resulting object files are left in the +.I platform +directory. +.PP +Outside the +.B dev +section, +each item and subitem +.I x +causes the kernel image to include the code compiled from +.IB x .c , +(or +.IB x .s +or +.IB x .S +for assembly-language support), +or +.IB portdir / x .c , +where +.I portdir +is one of the portable directories mentioned above. +In the +.B dev +section, an item +.I x +corresponds instead to the driver source file +.BI dev x .c +in the current (platform-specific) +directory or a portable driver +.IB portdir /dev x .c . +Subitems are handled as in any other section. +Typically they are auxiliary files that are needed by the associated driver. +.PP +For instance, in a native kernel +the portable driver for the +.B draw +device uses platform-specific code from +.BR screen.c . +That can be represented as follows: +.IP +.EX +dev + draw screen +.EE +.PP +Each item +.I x +in the +.B ip +section +corresponds to a protocol implementation compiled from +.BI ../ip/ x .c . +Any subitems +are dealt with in the same way as in the +.B dev +section. +.PP +The +.B link +section provides a way for hardware-specific +parts of drivers to link at runtime to the hardware-invariant part of a device +drivers. +For each item +.IR x , +the kernel will call the function +.IB x link +during its initialisation. +Typically that function makes itself known to the device driver by +calling a function provided by that driver, +passing the address of a interface-specific data structure or linkage table. +For example, +.B ethersmc +is an interface-specific component: +.IP +.EX +link + \fR...\fP + ethersmc +.EE +.PP +and its source file +.B ethersmc.c +provides a function +.B ethersmclink +that +calls +.B addethercard +in the interface-invariant part of the driver, +.BR devether.c : +.IP +.EX +void +ethersmclink(void) +{ + addethercard("smc91cXX", reset); +} +.EE +.PP +Similarly, during kernel initialisation, for each item +.I x +in the +.B mod +section, the kernel calls the function +.IB x init , +to initialise the corresponding built-in Limbo module. +.PP +The +.B init +section selects the first Dis program run by the system. +For native kernels, a given item +.I x +refers to +.BI ../init/ x .dis , +which is automatically built from +.BI ../init/ x .b . +For hosted kernels, +.B emuinit +is normally used, referring to +.BR /dis/emuinit.dis . +.PP +The +.B lib +section lists the libraries to include when linking the kernel, +in an order that satisfies any dependencies amongst them. +Each item +.I x +corresponds to +.BI /$SYSTARG/$OBJTYPE/lib x .a , +a target-specific library +produced by compiling the C source code in +.BI /lib item, +where +.B SYSTARG +and +.B OBJTYPE +are set in +.B mkfile +to the target system and object types. +.PP +An item in the +.B root +section +has one of the forms: +.IP +.EX +.I name +.I "name source" +.EE +.PP +where +.I name +and +.I source +are both absolute path names rooted at the Inferno source tree. +The kernel's initial root file system (see +.IR root (3)) +will contain a file or directory with the given +.IR name . +.I Name +must exist in the Inferno root, or an existing +.I source +file must be named. +In either case, +if the existing name refers to a file, the file in the root file system will have that file's current contents. +If it is a directory, the root file file system will have a directory with that name, +but the directory will contain only those names listed in +the configuration file as belonging to that directory. +.I Source +is often +.L / +to force a target +.I name +to be a directory. +.SH FILES +.B /emu/port/mkdevc +.br +.B /emu/port/mkdevlist +.br +.B /emu/port/mkroot +.br +.B /os/port/mkdevc +.br +.B /os/port/mkdevlist +.br +.B /os/port/mkroot +.SH SEE ALSO +.IR mk (10.1) diff --git a/man/10/delay b/man/10/delay new file mode 100644 index 00000000..72665837 --- /dev/null +++ b/man/10/delay @@ -0,0 +1,36 @@ +.TH DELAY 10.2 +.SH NAME +delay, microdelay, addclock0link \- small delays, clock interrupts +.SH SYNOPSIS +.ta \w'\fLvoid 'u +.B +void delay(int n) +.PP +.B +void microdelay(int n) +.PP +.B +void addclock0link(void(*clockf)(void)) +.SH DESCRIPTION +.I Delay +busy waits for +.I n +milliseconds, forced to be at least one millisecond. +.PP +.I Microdelay +is similar, but busy waits for +.IR n +microseconds. +.PP +For delays on the order of clock ticks, +.I tsleep +(see +.IR sleep (10.2)) +provides a better alternative to the busy waiting of these routines. +.PP +.I Addclock0link +adds +.I clockf +to a list of functions to be executed at each clock interrupt. +.SH SEE ALSO +.IR sleep (10.2) diff --git a/man/10/dev b/man/10/dev new file mode 100644 index 00000000..15bf16cb --- /dev/null +++ b/man/10/dev @@ -0,0 +1,435 @@ +.TH DEV 10.2 +.SH NAME +Dev \- device driver interface +.SH SYNOPSIS +.EX +struct Dev +{ + int dc; + char* name; + + void (*reset)(void); /* native only */ + void (*init)(void); + void (*shutdown)(void); /* native */ + Chan* (*attach)(char *spec); + Walkqid* (*walk)(Chan *c, Chan *nc, char **name, int nname); + int (*stat)(Chan *c, uchar *db, int dbsize); + Chan* (*open)(Chan *c, int mode); + void (*create)(Chan *c, char *name, int mode, ulong perm); + void (*close)(Chan *c); + long (*read)(Chan *c, void *buf, long nbytes, vlong offset); + Block* (*bread)(Chan *c, long nbytes, ulong offset); + long (*write)(Chan *c, void*, long, vlong offset); + long (*bwrite)(Chan *c, Block *b, ulong offset); + void (*remove)(Chan *c); + int (*wstat)(Chan *c, uchar *db, int dbsize); + void (*power)(int on); /* native only */ + int (*config)(int on, char *spec, DevConf *cf); /* native */ +}; +.EE +.SH DESCRIPTION +Every device driver serves a unique name space that represents to the corresponding device(s). +Applications act on the space using the operations of +.IR sys-bind (2), +.IR sys-open (2), +.IR sys-read (2), +.IR sys-stat (2), +and other system calls. +Within the kernel, the +.B Dev +structure defines the interface between the kernel and a device driver for +all operations on that driver's name space. +.PP +.B Dev +identifies the driver, and lists a set of C functions that are the driver's operations. +Most are operations on the +.B Chan +type that is the kernel representation of a file or directory active in a name space. +The kernel converts system calls acting on file descriptors into calls to a device's +.B Dev +operations acting on channel values. +All channel values presented through the +.B Dev +interface are associated with the corresponding device driver: +for channel +.IR c , +.IB c ->type +specifies that driver. +Within the driver, the +.IB c ->qid.path +of a channel +.I c +identifies a file in the driver's name space, or even a client-specific instance of a file +(eg, for multiplexors such as +.IR ip (3)). +The interpretation of the +.B path +is completely determined by the driver. +.PP +A device driver in the source file +.BI dev x .c +exports an initialised instance of +.BI "Dev " x devtab . +For instance, +.B devcons.c +contains the global initialiser: +.IP +.EX +Dev consdevtab = { + 'c', + "cons", + + devreset, + consinit, + devshutdown, + consattach, + conswalk, + consstat, + consopen, + devcreate, + consclose, + consread, + devbread, + conswrite, + devbwrite, + devremove, + devwstat, +}; +.EE +.PP +The kernel accesses the driver only through its +.B Dev +structure, and consequently entry points such as +.BR consinit , +.BR consread , +etc. can (and should) be declared +.BR static , +and thus local to the file. +.PP +The following elements of +.B Dev +identify the driver: +.TP +.B dc +The device's type, represented by a Unicode character (`rune') that must be unique +amongst those in a given kernel (and ideally for a given platform). +Its value is the value of +.B Dir.dtype +in the result of a +.IR sys-stat (2) +applied to any file in the device. +.TP +.B name +The name that identifies the driver in a kernel configuration file and in +.B /dev/drivers +(see +.IR cons (3)). +.PP +All the other entries are functions. +In many cases, the values given in a device's +.B Dev +will be the default operations provided by +.IR devattach (10.2). +.TP +.B reset() +Called once during system initialisation by the native +kernel's +.B main +after initialising all supporting subsystems, including memory allocation, traps, screen, MMU (if used), +but with interrupts disabled, and before any kernel process environment has been established. +Typically used on some platforms to force some devices into a sane state +before interrupts are enabled. +.TP +.B init() +Called once during system initialisation in the context of the first kernel process, +with interrupts enabled, before the virtual machine has been started. +.TP +.B shutdown() +Called once in native kernels during system shut down. +Used on only a few platforms to force a device into a state that will allow it +to function correctly during and after a soft reboot (eg, without doing a full system hardware reset). +.TP +.BI attach( spec ) +Called on each new attach to the device (eg, a reference to +.BI # c +by +.IR sys-bind (2)). +.I Spec +is the string following the device character and before a subsequent +.RB ` / ' +in the bind request. +It is the empty string for most devies. +If the attach is successful, +.B attach +should return a +.B Chan +the refers to the root of the tree served by the device driver. +Normally, it will suffice to return the value of +.IR devattach (10.2). +.TP +.BI walk( c\fP,\fP\ nc\fP,\fP\ name\fP,\fP\ nname ) +Walks existing channel +.I c +from its current position in the device tree to that specified by the +path represented by +.BR name[0] , +\&... +.BR name[nname-1] . +The driver must interpret +.RB ` .. ' +as a walk from the current position one level up towards the root of the device tree. +The result is represented by a dynamically-allocated +.B Walkqid +value, +with contents as described in +.IR devattach (10.2). +Most drivers simply pass parameters on to +.B devwalk +in +.IR devattach (10.2) +and return its result. +.TP +.BI stat( c\fP,\fP\ db\fP,\fP\ nbytes ) +Fill +.I db +with +.IR stat (5) +data describing the file referenced by +.IR c . +.I Nbytes +gives the size of +.IR db ; +if the data will not fit, return the value specified for +.B convD2M +in +.IR styx (10.2). +Most drivers simply pass parameters on to +.B devstat +in +.IR devattach (10.2); +a few fill a local copy of a +.B Dir +structure, and call +.B convD2M +to store the machine-independent representation in +.IR db . +.TP +.BI open( c\fP,\fP\ mode ) +Open the file represented by +.B Chan +.IR c , +in the given +.I mode +(see +.IR sys-open (2)), +and if successful, return a +.B Chan +value representing the result +(usually +.IR c ). +Many drivers simply apply +.B devopen +of +.IR devattach (10.2). +Exclusive use drivers might check and increment a reference count. +.TP +.BI create( c\fP,\fP\ name\fP,\fP\ mode\fP,\fP\ perm ) +.I C +should be a directory. +Create a new file +.I name +in that directory, with permissions +.IR perm , +opened with the given +.IR mode . +If successful, make +.I c +refer to the newly created file. +Most drivers return an error on all creation attempts, +by specifying +.B devcreate +of +.IR devattach (10.2) +in the +.B Dev +table. +.TP +.BI close( c ) +Close channel +.IR c . +This must be implemented by all drivers; there is no default, +although the function often is a no-op. +Exclusive use drivers might decrement a reference count. +.TP +.BI read( c\fP,\fP\ buf\fP,\fP\ nbytes\fP,\fP\ offset ) +Implement a +.IR sys-read (2) +of +.I nbytes +of data from the given +.I offset +in file +.IR c , +and if successful, place the data in +.IR buf , +and return the number of bytes read, +which must be no greater than +.IR nbytes . +Devices sometimes ignore the +.IR offset . +All device drivers must implement +.BR read ; +there is no default. +Note that if +.I c +is a directory, the data has an array of +.IR stat (5) +data listing the directory contents, in the format prescribed by +.IR read (5). +Most drivers have +.B devdirread +of +.IR devattach (10.2) +do the work when +.I c +is the root directory of the device's tree. +.TP +.BI bread( c\fP,\fP\ nbytes\fP,\fP\ offset ) +Implement a +.IR sys-read (2) +of +.I nbytes +of data from the given offset in file +.IR c , +and if successful return the data in a +.B Block +(see +.IR allocb (10.2) +and +.IR qio (10.2)). +Most drivers use the default +.B devbread +provided by +.IR devattach(10.2), +and nearly all ignore the +.I offset +in any case. +Drivers that manipulate Blocks internally, such as +.IR ip (3), +.IR ssl (3) +and similar protocol devices, +and drivers that are likely to provide data to those devices, +will provide a +.B devbread +implementation so as to reduce the number of times the data is copied. +.TP +.BI write( c\fP,\fP\ buf\fP,\fP\ nbytes\fP,\fP\ offset ) +Implement a write of +.I nbytes +of data from +.I buf +to file +.IR c , +which must not be a directory, +starting at the given byte +.IR offset . +Return the number of bytes actually written. +There is no default, but drivers that do not +implement writes to any of their files can simply call +.B error(Eperm) +to signal an error. +.TP +.BI bwrite( c\fP,\fP\ b\fP,\fP\ offset ) +Similar to the +.B write +entry point, but the data is contained in a +.B Block +.I b +(see +.IR allocb (10.2)). +.I B +should be freed before return, whether the driver signals an error or not. +Most drivers use the default +.B devbwrite +from +.IR devattach (10.2), +which calls the driver's +.B write +entry point using the data in +.IR b . +Drivers that manipulate Blocks internally, such as +.IR ip (3), +.IR ssl (3) +and similar protocol devices, +will provide a +.B devbwrite +implementation so as to avoid copying the data needlessly. +.TP +.BI remove( c ) +Remove the file referenced by +.IR c . +Most drivers raise an error by using the default +.B devremove +from +.IR devattach (10.2). +.TP +.BI wstat( c\fP,\fP\ db\fP,\fP\ dbsize ) +Change the attributes of file +.IR c , +using the +.IR stat (5) +data in buffer +.IR db , +which is +.I dbsize +bytes long. +Usually a driver will use +.B convM2D +of +.IR styx (10.2) +to convert the data to a +.B Dir +structure, then apply the rules of +.IR stat (5) +to decide which attributes are to be changed (and whether the change is allowed). +Most drivers simply return an error on all +.B wstat +requests by using the default +.B devwstat +from +.IR devattach (10.2). +.TP +.BI power( on ) +Reserved for use in native kernels, to allow the kernel +to power the device on and off for power-saving; +.I on +is non-zero if the device is being powered up, and +zero if it is being powered down. +The device driver should save the device state if necessary. +Leave the +.B Dev +entry null for now. +.TP +.BI config( on\fP,\fP\ spec\fP,\fP\ cf ) +Reserved for use in native kernels to allow a device +to be configured on and off dynamically. +Leave the +.B Dev +entry null for now. +.PD +.PP +The elements +.IR reset , +.IR shutdown , +.IR power , +and +.IR config +are currently present only in the native kernels. +.SH SEE ALSO +.IR intro (2), +.IR intro (5), +.IR allocb (10.2), +.IR devattach (10.2), +.IR newchan (10.2), +.IR qio (10.2) + diff --git a/man/10/devattach b/man/10/devattach new file mode 100644 index 00000000..718fe9b8 --- /dev/null +++ b/man/10/devattach @@ -0,0 +1,701 @@ +.TH DEVATTACH 10.2 +.SH NAME +devattach, devclone, devdir, devgen, devwalk, devdirread, devstat, devopen, devbread, devbwrite, devcreate, devremove, devwstat, devreset, devinit, devshutdown, openmode \- common device driver support +.SH SYNOPSIS +.nf +.ta \w'\fLBlock* 'u +10n +.B +typedef int +.B +Devgen(Chan *c, char *name, Dirtab *tab, int ntab, int i, Dir *dp) +.PP +.B +Chan* devattach(int tc, char *spec) +.PP +.B +Chan* devclone(Chan *c) +.PP +.B +void devdir(Chan *c, Qid qid, char *n, long length, +.B + char *user, long perm, Dir *dp) +.PP +.B +int devgen(Chan *c, char *name, Dirtab *tab, int ntab, +.B + int i, Dir *dp) +.PP +.B +Walkqid* devwalk(Chan *c, Chan *nc, char **name, int nname, +.B + Dirtab *tab, int ntab, Devgen *gen) +.PP +.B +void devstat(Chan *c, uchar *db, int n, Dirtab *tab, +.B + int ntab, Devgen *gen) +.PP +.B +long devdirread(Chan *c, char *d, long n, Dirtab *tab, +.B + int ntab, Devgen *gen) +.PP +.B +Chan* devopen(Chan *c, int omode, Dirtab *tab, +.B + int ntab, Devgen *gen) +.PP +.B +Block* devbread(Chan *c, long n, ulong offset) +.PP +.B +long devbwrite(Chan *c, Block *bp, ulong offset) +.PP +.B +void devcreate(Chan*, char*, int, ulong) +.PP +.B +void devremove(Chan*) +.PP +.B +void devwstat(Chan*, uchar*, int) +.PP +.B +void devreset(void) +.PP +.B +void devinit(void) +.PP +.B +void devshutdown(void) +.PP +.B +int openmode(ulong mode) +.SH DESCRIPTION +Device drivers call these functions to carry out essential tasks and default actions. +They do most of the name space management +for a driver that serves a simple name space +(eg, data and control files), +leaving the driver to concentrate on the device-specific details +of the I/O requests. +More complex drivers also make good use of them at the leaves +of their name space, and to help manage the +.B Chan +structures correctly. +.PP +A device has an associated +.IR type , +represented as a Unicode character (`rune') that identifies the device +inside and outside the kernel. +It appears as the value of the +.B type +field in the +.B Dir +resulting from a +.IR sys-stat (2) +of any file provided by the device. +A device is named outside the kernel using +a path name starting with +.B # +followed by the device character +(eg, +.B c +in +.B #c +for the console). +Any subsequent characters before +the next '/' or end of string is the `device specifier', +interpreted solely by the device itself. +.PP +.I Devattach +returns a new channel representing +the root of the file tree +corresponding to device type +.IR tc , +with device specifier +.IR spec . +It is normally called by a driver's +.I attach +function (see +.IR dev (10.2)). +The +.B qid +for the new channel is +.BR "(Qid){0,0,QTDIR}" , +suitable for a root directory for many devices, but +a device driver is free to change it (provided the +.B QTDIR +bit remains in the +.BR Qid.type ). +.PP +.I Devclone +returns a new channel that is a copy of +.IR c . +An attempt to clone an open channel causes a +.IR panic (10.2). +.PP +The +.L Dir +structure is shown below: +.IP +.EX +typedef +struct Dir +{ + /* system-modified data */ + ushort type; /* server type */ + uint dev; /* server subtype */ + /* file data */ + Qid qid; /* unique id from server */ + ulong mode; /* permissions */ + ulong atime; /* last read time */ + ulong mtime; /* last write time */ + vlong length; /* file length */ + char *name; /* last element of path */ + char *uid; /* owner name */ + char *gid; /* group name */ + char *muid; /* last modifier name */ +} Dir; +.EE +.PP +This +.B Dir +structure corresponds directly to the Limbo +.B Dir +adt described in +.IR sys-stat (2). +.PP +Given a channel and assorted other information, +.I devdir +initialises a Dir structure at +.IR dp . +.I Devdir +supplies the following data itself: +.RS +.TF length +.TP +.B atime +last access time (set to current time) +.TP +.B mtime +last modification time (set to kernel creation date) +.TP +.B gid +group name (set to +.IR eve (10.2)) +.TP +.B length +length in bytes (set to zero, which +is normal for most devices) +.RE +.PD +.PP +Note that +.I devdir +assigns the values of +.I name +and +.I user +directly to fields of +.BI * dp, +and consequently those values must remain valid until the last use of +.BI * dp. +(Sometimes that requires the use of an auxiliary buffer, such as +.BR up->genbuf .) +If channel +.I c +corresponds to a file descriptor on which Styx is served, +.I devdir +sets both the flag bit +.B QTMOUNT +in +.IB dp ->qid.type +and the flag bit +.B DMMOUNT +in +.IB dp ->mode +(see +.I export +in +.IR sys-dial (2) +and +.I mount +in +.IR sys-bind (2)). +.PP +A simple name space can be represented in a driver by an array of +.B Dirtab +structures. +The array is typically static when the names and permissions +are static, but can be dynamically allocated and initialised if required. +The structure of +.B Dirtab +is shown below: +.IP +.EX +typedef +struct Dirtab +{ + char name[KNAMELEN]; + Qid qid; + vlong length; + long perm; +} Dirtab; +.EE +.PP +The name +.RB ` . ' +.I must +appear as the first entry in a +.B Dirtab +if the default +.I devgen +function is used. +On the other hand, the name +.RB ` .. ' +must never appear in a +.B Dirtab +table. +Drivers that support a directory hierarchy must walk up the hierarchy towards +the root when their +.I walk +function receives +.RB ` .. ' +as a file name component. +The name +.RB ` . ' +is never seen by a driver. +.PP +The +.IR devdirread , +.IR devopen , +.IR devstat , +and +.IR devwalk +functions all take a +.I gen +function argument, +of type +.BR Devgen , +which they invoke to retrieve the items in +a +.B Chan +that represents a directory. +.I Gen +takes a channel +.I c +(a directory), +a file +.I name +(which is nil except during +.IR devwalk ), +an array of +.B Dirtab +structures +.I tab +of length +.IR ntab , +and a table index +.IR i . +The functions calling +.I gen +expect it to place the +.IR i 'th +entry in the directory into +.IR \f5*\fPdp . +It should return 1 +if the call was successful, +-1 if +.I i +is beyond the index of the last directory entry, +or 0 if there is no entry at +.IR i , +but there are entries beyond it. +When +.I i +has the special value +.B DEVDOTDOT +then +.I gen +should set +.IR \f5*\fPdp +to reflect the parent of +.IR c ; +if +.I c +is a one-level device directory, then `..' is equivalent to `.'. +Custom implementations of +.I gen +often ignore +.IR devtab , +and instead return their own dynamically generated +set of directory entries from some other source. +Exceptionally, during +.I devwalk +a non-nil +.I name +is provided: it is the name being looked up, and a device-specific +.I gen +can short-circuit the search by returning -1 if the name does not exist, +or filling in +.IR \f5*\fPdp +and returning 1 if it does exist. +.PP +The function +.I devgen +is compatible with +.BR Devgen ; +it returns the +.IR i 'th +entry in +.IR devtab , +and can be used to provide a simple, static +set of directory entries. +.PP +.I Devwalk +walks channel +.I c +to the file in the device named by the path encoded in +.IR name , +which is an array of strings of length +.IR nname . +It provides the interface to +.IR walk (5) +within the kernel, and that specification must be well understood to appreciate +all the nuances of its interface. +Fortunately, in nearly all device drivers, a device's +.I walk +function typically passes its parameters on to +.I devwalk +(adding the device's own +.B Dirtab +array as the the value of +.IR tab ), +and simply returning the result of +.IR devwalk . +.PP +.I Devwalk +walks +.I c +using the given set of names, and if the walk is successful, the +channel +.I nc +will refer to the result of the walk +(specifically, +.IB nc ->qid +is set to the Qid for the file). +If +.I nc +is nil, +.I devwalk +will allocate a new channel itself, that is initially a clone of +.IR c . +As in +.IR walk (5), +.I devwalk +can return a partial result, +represented by +a dynamically allocated value of the following structure: +.IP +.EX +struct Walkqid +{ + Chan *clone; + int nqid; + Qid qid[1]; /* actually nname in length */ +}; +.EE +.PP +The value must be freed after use. +For each element of +.I name , +.I devwalk +passes +the +.I tab +parameter to +.I gen +together with the currently-sought element of +.IR name . +If the first element is not found, +.I devwalk +returns nil; otherwise, it returns a +.B Walkqid +value in which +.B nqid +elements of the array +.B qid +are set to the qids (see +.IR intro (5)) +of each valid element of +.IR name . +If all +.I nname +elements were successfully traversed, then +.B nqid +will have the value +.IR nname , +and +.B clone +will refer to the result of the walk, +which is either +.I nc +if given, or +the new channel allocated by +.IR devwalk . +Otherwise, at least one element succeeded and +.B nqid +is less than +.I nname +and +.B clone +is nil. +On an error or incomplete walk, +the error string is set to the error that stopped the walk (eg, +.B Enonexist +or +.BR Enotdir ). +.PP +.I Devstat +fills the array of bytes +.I db +with data in the format produced by +.IR stat (5) +that describes the file +referenced by channel +.IR c , +which must have a corresponding entry +returned by +.IR gen +(ie, an entry with matching +.BR Qid.path ). +If +.I c +is a communications channel connecting a Styx server to a current mount point, +the +.B DMMOUNT +bit is set in the resulting +.BR Dir.mode , +and +.B QTMOUNT +is set in +.BR Dir.qid.type . +As in +.IR stat (5), +the length of the data written to +.I db +varies; if more than +.I n +bytes are needed, +.I devstat +raises the +.IR error (10.2) +.BR Ebadarg . +Otherwise, it returns the number of bytes in +.I db +actually used. +.PP +If an entry with the desired qid is not found in the table, but +.I c +corresponds to a directory +(ie, +.B QTDIR +is set in +.IR c\f5->qid.type\fP ), +it is taken to be a +.I stat +of a notional directory containing the files listed in +.IR tab . +.I Dirstat +then builds the corresponding Dir structure: +its +.B Dir.name +is taken from +.IR c\f5->path->elem\fP ; +the length is +.BI DIRLEN*nelem(tab) ; +and +.B Dir.perm +is 0555 (read-execute for all). +.PP +.I Devdirread +calls +.I gen +to obtain successive +.B Dir +structures representing entries in the open directory +.IR c . +These are converted to standard format (see +.I convD2M +in +.IR styx (10.2)) +and placed in the buffer +.IR b . +It returns the number of bytes in the result. +At most +.I n +bytes will be returned, in multiples of +.BR DIRLEN . +Because the kernel maintains the current offset in +.IR c , +successive calls to +.I devdirread +return successive directory components. +.PP +.I Devopen +is called to check and complete a request to open channel +.I c +for I/O according to +.IR omode +(the open mode of +.IR sys-open (2)). +It calls +.I gen +to obtain successive directory entries +which it searches +for a Qid matching that of +.IR c , +and ensures that the current user has permission to open +.I c +with the given mode, +.IR omode , +and that the mode itself is valid +(see +.I openmode +below). +Permission is checked against the permission in the +matching entry. +If no matching Qid is found, it is assumed +that the notional parent directory of the files represented in +.I tab +is to be opened. +Such a directory is deemed to have mode +0555, allowing access by any user. +A directory can only be opened for reading +.RB ( OREAD ). +.I Devopen +returns the channel +.I c +on success. +Last, it sets the bit +.B COPEN +in +.B Chan.flag +to mark +.I c +as open. +This convention can always be relied upon by the driver's +.I close +function to tell if an open succeeded. +On the otherhand, +if the open request was unsuccessful, +.I devopen +raises an appropriate +.IR error (10.2) +and does not return. +.PP +.I Devbread +returns a +.B Block +(see +.IR allocb (10.2)) +containing up to +.I n +bytes read, +using +.BI "devtab[" c "->type]->read" , +from +.I c +starting at the given +.IR offset . +The read pointer in the returned +.B Block +points to the start of the data; +the write pointer points to the next available byte. +.PP +.I Devbwrite +writes the data in +.B Block +.I bp +to the file +.I c +at the given +.IR offset , +using the write function +.BI "devtab[" c "->type]->write" . +It then frees the block list +.I bp +before +returning the number of bytes written. +.PP +Most built-in devices do not allow +.IR create , +.IR remove +or +.I wstat +on their files. +.IR Devcreate , +.I devremove +and +.I devwstat +are stubs that raise an +.IR error (10.2), +.BR Eperm . +They can be named directly in a device driver's device +switch (the +.B Dev +structure in +.BR /os/port/portdat.h : +see +.IR dev (10.2)). +.PP +.IR Devreset , +.I devinit +and +.I devshutdown +are also stubs; +they do nothing. +A device driver puts them in its +.B Dev +structure when it need take no action on device reset, initialisation, or shut down. +.PP +.I Openmode +is used by a driver that does not use +.IR devopen , +to check the open mode it receives in its open +routine. +.I Openmode +returns mode +.IR o , +the mode parameter to +.IR sys-open (2) +or +.IR sys-create , +shorn of +.BR OTRUNC +and similar options, +and reduced to one of +.BR OREAD , +.BR OWRITE +or +.BR ORDWR . +In particular, +.B OEXEC +becomes +.B OREAD +within the kernel. +.I Openmode +raises an +.IR error (10.2) +.B Ebadarg +instead of returning, if +.I o +is an invalid mode (eg, reserved bits set). +.SH SOURCE +.B /emu/port/dev.c +.br +.B /os/port/dev.c +.SH SEE ALSO +.IR allocb (10.2), +.IR eve (10.2), +.IR qio (10.2) diff --git a/man/10/dmainit b/man/10/dmainit new file mode 100644 index 00000000..f0786c33 --- /dev/null +++ b/man/10/dmainit @@ -0,0 +1,86 @@ +.TH DMAINIT 10.2 x86 +.SH NAME +dmainit, dmasetup, dmadone, dmaend, dmacount \- platform-specific DMA support +.SH SYNOPSIS +.ta \w'\fLushort 'u +.B +void dmainit(int chan) +.PP +.B +long dmasetup(int chan, void *va, long len, int isread) +.PP +.B +int dmadone(int chan) +.PP +.B +void dmaend(int chan) +.PP +.B +int dmacount(int chan) +.PP +.SH DESCRIPTION +These functions manage DMA on a bus that uses ISA-style DMA controllers. +They were originally devised for the x86 platform, but the same interface, and similar code, +is used by other platforms that use similar controllers. +They compensate as best they can for the limitations of older DMA implementations +(eg, alignment, boundary and length restrictions). +There are 8 DMA channels: +0 to 3 are byte-oriented; 4 to 7 are word-oriented (16-bit words). +.PP +.I Dmainit +must be called early in a driver's initialisation to prepare +.I chan +for use. +Amongst other things, it allocates a page-sized buffer to help circumvent hardware +restrictions on DMA addressing. +.PP +.I Dmasetup +prepares DMA channel +.IR chan +for a transfer between a device configured to use it +and the virtual address +.IR va . +(The transfer is started by issuing a command to the device.) +If +.I va +lies outside the kernel address space, +the transfer crosses a 64k boundary, +or exceeds the 16 Mbyte limit imposed by some DMA controllers, +the transfer will be split into page-sized transfers using the buffer previously allocated by +.IR dmainit . +If +.I isread +is true (non-zero), data is to be transferred from +.I chan +to +.IR va ; +if false, data is transferred from +.I va +to +.IR chan . +In all cases, +.I dmasetup +returns the number of bytes to be transferred. +That value (rather than +.IR len ) +must be given to the device in the read or write request that starts the transfer. +.PP +.I Dmadone +returns true (non-zero) if +.I chan +is idle. +.PP +.I Dmaend +must be called at the end of every DMA operation. +It disables +.IR chan , +preventing further access to the previously associated memory and, +if a low-memory buffer was required for input, transfers its contents +to the appropriate part of the target buffer. +.PP +.I Dmacount +returns the number of bytes that were last transferred by channel +.IR chan . +The count is always even for word-oriented DMA channels. +.SH SOURCE +.B /os/pc/dma.c diff --git a/man/10/dynld b/man/10/dynld new file mode 100644 index 00000000..62971752 --- /dev/null +++ b/man/10/dynld @@ -0,0 +1,287 @@ +.TH DYNLD 10.2 +.SH NAME +dynfindsym, dynfreeimport, dynloadfd, dynloadgen, dynobjfree, dyntabsize \- load object file dynamically +.SH SYNOPSIS +.B #include <lib9.h> +.br +.B #include <a.out.h> +.br +.B #include <dynld.h> +.PP +.ta \w'\fLDynsym*** 'u +.B +Dynsym* dynfindsym(char *name, Dynsym *syms, int nsym) +.PP +.B +Dynobj* dynloadfd(int fd, Dynsym *exports, int nexport, +.br +.B + ulong maxsize) +.PP +.B +Dynobj* dynloadgen(void *file, long (*read)(void*,void*,long), +.br +.B + vlong (*seek)(void*,vlong,int), void (*err)(char*), +.br +.B + Dynsym *exports, int nexport, ulong maxsize) +.PP +.B +void* dynimport(Dynobj *o, char *name, ulong sig) +.PP +.B +void dynfreeimport(Dynobj *o) +.PP +.B +void dynobjfree(Dynobj *o) +.PP +.B +int dyntabsize(Dynsym *t) +.PP +.B +extern Dynsym _exporttab[]; +.DT +.SH DESCRIPTION +These functions allow a process to load further code and data +into the currently executing image. +A dynamically-loadable file, called a +.I module +here, is a variant of the +.IR a.out (10.6) +executable format with some extra components. +The loader for the architecture +(see +.IR 2l (1)) +creates a module file from component object file(s) when given the +.B -u +option. +A module contains text and data sections, an import table, an export table, +and relocation data. +The import table lists the symbols the module needs from the loading program; +the export table lists symbols the module provides when loaded. +A program that loads a module provides a table of its own symbols to match +the symbols in the module's import table. +.PP +A symbol entry in a symbol table names a global function or data item, and has an associated +.I signature +value representing the type of the corresponding function or data in the source code. +The +.B Dynsym +structure defines a symbol: +.IP +.EX +typedef struct { + ulong sig; + ulong addr; + char* name; +} Dynsym; +.EE +.PP +The structure is known to the loaders +.IR 2l (1). +.I Name +is the linkage name of the function or data. +.I Addr +is its address, which is relative to the start of the module before loading, +and an address in the current address space after loading. +The signature +.I sig +is the value produced by the C compiler's +.B signof +operator applied to the type. +Symbol tables must be sorted by +.IR name . +.PP +An executable that wishes to load modules will normally be linked using the +.B -x +option to the appropriate loader +.IR 2l (1). +The resulting executable contains an export table +.B _exporttab +that lists all the exported symbols of the program (by default, all external symbols). +A nil name marks the end of the table. +See +.IR 2l (1) +for details. +The table can be given to the functions below to allow a loaded module +to access those symbols. +.PP +A loaded module is described by a +.B Dynobj +structure: +.IP +.EX +typedef struct { + ulong size; /* total size in bytes */ + ulong text; /* bytes of text */ + ulong data; /* bytes of data */ + ulong bss; /* bytes of bss */ + uchar* base; /* start of text, data, bss */ + int nexport; + Dynsym* export; /* export table */ + int nimport; + Dynsym** import; /* import table */ +} Dynobj; +.EE +.PP +Several fields give sizes of the module's components, as noted in comments above. +.I Base +gives the address at which the module has been loaded. +All its internal +references have been adjusted where needed to reflect its current address. +.I Export +points to a symbol table listing the symbols exported by the module; +.I nexport +gives the table's length. +.I Import +points to a list of symbols imported by the module; +note that each entry actually points to an entry in a symbol table +provided by the program that loaded the module (see below). +.I Nimport +gives the import table's length. +If the import table is not required, call +.I dynfreeimport +on the module pointer to free it. +.PP +.I Dynfindysm +looks up the entry for the given +.I name +in symbol table +.I syms +(of length +.IR nsym ). +It returns a pointer to the entry if found; nil otherwise. +The symbol table must be sorted by name in ascending order. +.PP +.I Dyntabsize +returns the length of symbol table +.IR t , +defined to be the number of +.B Dynsym +values starting at +.I t +that have non-nil +.I name +fields. +It is used to find the length of +.BR _exporttab . +.PP +.I Dynloadfd +loads a module from the file open for reading on +.IR fd , +and returns the resulting module pointer on success, +or nil on error. +If +.I maxsize +is non-zero +the size of the dynamically-loaded module's code and data +is limited to +.I maxsize +bytes. +.I Exports +is an array of +.I nexport +symbols in the current program that can be imported by the current module. +It uses +.IR read (2) +and +.IR seek (2) +to access +.IR fd , +and calls +.I werrstr +(see +.IR errstr (2)) +to set the error string if necessary. +.PP +.I Dynloadgen +is a more general function that can load a module from an +arbitrary source, not just an open file descriptor. +(In particular, it can be +called by the kernel using functions internal to the kernel +instead of making system calls.) +.IR Exports , +.I nexport +and +.I maxsize +are just as for +.IR dynloadfd . +.I File +is a pointer to a structure defined by the caller that represents the file +containing the module. +It is passed to +.I read +and +.IR seek . +.I Read +is invoked as +.BI (*read)( file , buf ,\ \fInbytes\fP)\fR.\fP +.I Read +should read +.I nbytes +of data from +.I file +into +.I buf +and return the number of bytes transferred. +It should return -1 on error. +.I Seek +is invoked as +.BI (*seek)( file , n ,\ \fItype\fP) +where +.I n +and +.I type +are just as for +.IR seek (2); +it should seek to the requested offset in +.IR file , +or return -1 on error. +.I Dynloadgen +returns a pointer to the loaded module on success. +On error, +it returns nil after calling its +.I err +parameter to set the error string. +.PP +.I Dynimport +returns a pointer to the value of the symbol +.I name +in loaded module +.IR o , +or +.I nil +if +.I o +does not export a symbol with the given +.IR name . +If +.I sig +is non-zero, the exported symbol's signature must equal +.IR sig , +or +.I dynimport +again returns nil. +For example: +.IP +.EX +Dev *d; +d = dynimport(obj, "XXXdevtab", signof(*d)); +if(d == nil) + error("not a dynamically-loadable driver"); +.EE +.PP +.I Dynobjfree +frees the module +.IR o . +There is no reference counting: it is the caller's responsibility to decide whether +a module is no longer needed. +.SH SEE ALSO +.IR 2l (10.1), +.\".IR mach (2), +.IR a.out (10.6) +.SH DIAGNOSTICS +Functions that return pointers return nil on error. +.I Dynloadfd +sets the error string and returns nil. diff --git a/man/10/error b/man/10/error new file mode 100644 index 00000000..ca177d94 --- /dev/null +++ b/man/10/error @@ -0,0 +1,175 @@ +.TH ERROR 10.2 +.SH NAME +error, nexterror, poperror, waserror \- error handling functions +.SH SYNOPSIS +.ta \w'\fLchar* 'u +.B +void error(char*) +.PP +.B +void nexterror(void) +.PP +.B +void poperror(void) +.PP +.B +int waserror(void) +.SH DESCRIPTION +The kernel handles error conditions using non-local gotos, +similar to +.IR setjmp / longjmp +in ANSI C, +but using a stack of error labels to implement nested exception handling. +This simplifies many of the internal interfaces by eliminating the need +for returning and checking error codes at every level of the call stack, +at the cost of requiring kernel routines to adhere to a strict discipline. +.PP +Each kernel process +(see +.IR kproc (10.2)) +has in its defining +.B Proc +structure a stack of labels, +currently 32 elements deep. +A kernel function that must perform a clean up or recovery action on an error +makes a stylised call to +.IR waserror , +.IR nexterror +and +.IR poperror : +.IP +.EX +.DT +if(waserror()){ + /* recovery action */ + nexterror(); +} +/* normal action */ +poperror(); +.EE +.PP +When called in the normal course of events, +.I waserror +registers an error handling block by pushing its label onto the stack, +and returns zero. +The return value of +.I waserror +should be tested as shown above. +If non-zero (true), the calling function should perform the needed +error recovery, ended by a call to +.I nexterror +to transfer control to the next location on the error stack. +Typical recovery actions include deallocating memory, unlocking resources, and +resetting state variables. +.PP +Within the recovery block, +after handling an error condition, there must normally +be a call to +.I nexterror +to transfer control to any error recovery lower down in the stack. +The main exception is in the outermost function in a process, +which must not call +.I nexterror +(there being nothing further on the stack), but calls +.I pexit +(see +.IR kproc (10.2)) +instead, +to terminate the process. +.PP +When the need to recover a particular resource has passed, +a function that has called +.I waserror +must +remove the corresponding label from the stack by calling +.IR poperror . +This +must +be done before returning from the function; otherwise, a subsequent call to +.I error +will return to an obsolete activation record, with unpredictable but unpleasant consequences. +.PP +.I Error +copies the given error message, which is limited to +.B ERRMAX +bytes, into the +.B Osenv.errstr +of the current process, +enables interrupts by calling +.I spllo +.RI ( native +only), +and finally calls +.I nexterror +to start invoking the recovery procedures currently stacked by +.IR waserror . +The files +.B /os/port/error.h +and +.B /emu/port/error.h +offer a wide selection of predefined error messages, suitable for almost any occasion. +The message set by the most recent call to +.I error +can be obtained within the kernel by examining +.B up->env->error +and in an application, by using the +.L %r +directive of +.IR sys-print (2). +.PP +A complex function can have nested error handlers. +A +.I waserror +block will follow the acquisition of a resource, releasing it +on error before calling +.I nexterror, +and a +.I poperror +will precede its release in the normal case. +For example: +.IP +.EX +.DT +void +outer(Thing *t) +{ + qlock(t); + if(waserror()){ /* A */ + qunlock(t); + nexterror(); + } + m = mallocz(READSTR, 0); + if(m == nil) + error(Enomem); + if(waserror()){ /* B */ + free(m); + nexterror(); /* invokes A */ + } + inner(t); + poperror(); /* pops B */ + free(m); + poperror(); /* pops A */ + qunlock(t); +} +.sp 1v +void +inner(Thing *t) +{ + if(t->bad) + error(Egreg); /* error() call returns to B */ + t->valid++; +} +.EE +.SH SOURCE +.B /os/port/proc.c +.br +.B /emu/port/main.c +.SH CAVEATS +The description above has many instances of +.IR should , +.IR will , +.I must +and +.IR "must not" . +.SH SEE ALSO +.IR panic (10.2) diff --git a/man/10/eve b/man/10/eve new file mode 100644 index 00000000..8a20b77f --- /dev/null +++ b/man/10/eve @@ -0,0 +1,42 @@ +.TH EVE 10.2 +.SH NAME +eve, iseve \- privileged user +.SH SYNOPSIS +.ta \w'\fLchar* 'u +.B +char eve[NAMELEN] = "inferno"; +.PP +.B +int iseve(void) +.SH DESCRIPTION +.I Eve +is a null-terminated string containing the name of the privileged user, often called +the `host owner', in +the Inferno system. +The default identity in native systems is +.LR inferno , +and in hosted Inferno it is the user who started +.IR emu (1). +The initial process created by system initialisation is given the +.I eve +identity. +.PP +.I Iseve +returns true if the current user is +.IR eve . +Several drivers use +.I iseve +to check the caller's identity +before granting permission to perform certain actions. +For example, the console driver allows only the user +.I eve +to write a new identity into the +.B /dev/user +file. +The privileges are strictly local and do not extend into the network +(in particular, to file servers). +.PP +Note that the comparison performed by +.I iseve +is case-sensitive, even when running hosted on systems where +usernames are case-insensitive. diff --git a/man/10/getfields b/man/10/getfields new file mode 100644 index 00000000..291ebce5 --- /dev/null +++ b/man/10/getfields @@ -0,0 +1,76 @@ +.TH GETFIELDS 10.2 +.SH NAME +getfields, tokenize \- break a string into fields +.SH SYNOPSIS +.ta \w'\fLchar* \fP'u +.B +int getfields(char *str, char **args, int maxargs, int multiflag, +.br +.B + char *delims) +.PP +.B +int tokenize(char *str, char **args, int maxargs) +.SH DESCRIPTION +.I Getfields +breaks the null-terminated +.SM UTF +string +.I str +into at most +.I maxargs +null-terminated fields and places pointers to the start of these fields in the array +.IR args . +Some of the bytes in +.I str +are overwritten. +If there are more than +.I maxargs +fields, +only the first +.I maxargs +fields will be set. +.I Delims +is a +.SM UTF +string defining a set of delimiters. +.PP +If +.I multiflag +is zero, +adjacent fields are separated by exactly one delimiter. +A string containing +.I n +delimiter characters +contains +.IR n +1 +fields. +If the +.I multiflag +argument is not zero, +a field is a non-empty string of non-delimiters. +.PP +Getfields +return the number of tokens processed. +.PP +.I Tokenize +is the same as +.I getfields +with +.I multiflag +non-zero and +.I delims +\f5"\et\er\en "\fP, +except that fields may be quoted using single quotes, in the manner +of +the command interpreter. +.SH SOURCE +.B /libkern/getfields.c +.br +.B /libkern/tokenize.c +.br +.B /lib9/getfields.c +.br +.B /lib9/tokenize.c +.SH SEE ALSO +.IR strcat (10.2) diff --git a/man/10/iar b/man/10/iar new file mode 100644 index 00000000..7d319c78 --- /dev/null +++ b/man/10/iar @@ -0,0 +1,183 @@ +.TH IAR 10.1 +.SH NAME +iar \- archive and library maintainer +.SH SYNOPSIS +.B iar +.I key +[ +.I posname +] +.I afile +[ +.I file ... +] +.SH DESCRIPTION +.I Iar +maintains groups of files +combined into a single archive file, +.IR afile . +The main use of +.I iar +is to create and update library files for the loaders +.IR 2l (10.1), +etc. +It can be used, though, for any similar purpose. +.PP +.I Key +is one character from the set +.BR drqtpmx , +optionally concatenated with +one or more of +.BR vuaibclo . +The +.I files +are constituents of the archive +.IR afile . +The meanings of the +.I key +characters are: +.TP +.B d +Delete +.I files +from the archive file. +.TP +.B r +Replace +.I files +in the archive file, or add them if missing. +Optional modifiers are +.RS +.PD0 +.TP +.B u +Replace only files with +modified dates later than that of +the archive. +.TP +.B a +Place new files after +.I posname +in the archive rather than at the end. +.TP +.BR b " or " i +Place new files before +.I posname +in the archive. +.RE +.PD +.TP +.B q +Quick. Append +.I files +to the end of the archive without checking for duplicates. +Avoids quadratic behavior in +.LR "for (i in *.v) ar r lib.a $i" . +.TP +.B t +List a table of contents of the archive. +If names are given, only those files are listed. +.TP +.B p +Print the named files in the archive. +.TP +.B m +Move the named files to the end or elsewhere, +specified as with +.LR r . +.TP +.B o +Preserve the access and modification times of files +extracted with the +.B x +command. +.TP +.B x +Extract the named files. +If no names are given, all files in the archive are +extracted. +In neither case does +.B x +alter the archive file. +.TP +.B v +Verbose. +Give a file-by-file +description of the making of a +new archive file from the old archive and the constituent files. +With +.BR p , +precede each file with a name. +With +.BR t , +give a long listing of all information about the files, +somewhat like a listing by +.IR ls (1), +showing +.br +.ns +.IP +.B + mode uid/gid size date name +.TP +.B c +Create. +Normally +.I iar +will create a new archive when +.I afile +does not exist, and give a warning. +Option +.B c +discards any old contents and suppresses the warning. +.TP +.B l +Local. +Normally +.I iar +places its temporary files in the directory +.BR /tmp . +This option causes them to be placed in the local directory. +.PP +When a +.BR d , +.BR r , +or +.BR m +.I key +is specified and all members of the archive are valid object files for +the same architecture, +.I iar +inserts a table of contents, required by the loaders, at +the front of the library. +The table of contents is +rebuilt whenever the archive is modified, except +when the +.B q +.I key +is specified or when the table of contents is +explicitly moved or deleted. +.SH EXAMPLE +.TP +.L +iar cr lib.a *.v +Replace the contents of library +.L lib.a +with the object files in the current directory. +.SH FILES +.TF /tmp/vxxxx +.TP +.B /tmp/v* +temporaries +.SH SOURCE +.B /utils/iar +.SH "SEE ALSO" +.IR 2l (10.1), +.IR ar (10.6) +.SH BUGS +If the same file is mentioned twice in an argument list, +it may be put in the archive twice. +.br +The file format used by this command is taken from UNIX, and +makes some invalid assumptions, +for instance that user IDs are numeric. diff --git a/man/10/inb b/man/10/inb new file mode 100644 index 00000000..5e30d496 --- /dev/null +++ b/man/10/inb @@ -0,0 +1,84 @@ +.TH INB 10.2 x86 +.SH NAME +inb, ins, inl, outb, outs, outl, insb, inss, insl, outsb, outss, outsl \- programmed I/O +.SH SYNOPSIS +.ta \w'\fLushort 'u +.B +int inb(int port) +.PP +.B +ushort ins(int port) +.PP +.B +ulong inl(int port) +.PP +.B +void outb(int port, int value) +.PP +.B +void outs(int port, ushort value) +.PP +.B +void outl(int port, ulong value) +.PP +.B +void insb(int port, void *address, int count) +.PP +.B +void inss(int port, void *address, int count) +.PP +.B +void insl(int port, void *address, int count) +.PP +.B +void outsb(int port, void *address, int count) +.PP +.B +void outss(int port, void *address, int count) +.PP +.B +void outsl(int port, void *address, int count) +.SH DESCRIPTION +The +.I x86 +implementation provides functions to allow kernel code +written in C to access the I/O address space. +On several other architectures such as the PowerPC and Strongarm, +the platform-dependent code provides similar functions to access +devices with an I/O space interface, even when that is memory mapped, to encourage portability of device drivers. +.PP +.IR Inb , +.I ins +and +.I inl +apply the corresponding hardware instruction to fetch the next byte, short or long +from the I/O +.IR port . +.IR Outb , +.I outs +and +.I outl +output a +.I value +to the I/O +.IR port . +.PP +The remaining functions transfer +.I count +bytes, shorts, or longs using programmed I/O between a memory +.I address +and +.IR port . +Functions +.BI ins x +copy values into memory; functions +.BI outs x +copy values from memory. +The +.I count +is in elements, not bytes. +.SH SOURCE +.B /os/pc/l.s +.SH SEE ALSO +.IR dma (10.2), +.IR isaconfig (10.2) diff --git a/man/10/inm b/man/10/inm new file mode 100644 index 00000000..61d86f65 --- /dev/null +++ b/man/10/inm @@ -0,0 +1,102 @@ +.TH INM 10.1 +.SH NAME +inm \- Inferno name list (symbol table) +.SH SYNOPSIS +.B inm +[ +.B -aghnsu +] +.I file ... +.SH DESCRIPTION +.I Inm +prints the name list of each executable or object +.I file +in the argument list. +If the +.I file +is an archive +(see +.IR iar (10.1)), +the name list of each file in the archive is printed. +If more than one file is given in the argument list, +the name of each file is printed at the beginning of each line. +.PP +Each symbol name is preceded by its hexadecimal +value (blanks if undefined) +and one of the letters +.TP +.B T +text segment symbol +.PD0 +.TP +.B t +static text segment symbol +.TP +.B L +leaf function text segment symbol +.TP +.B l +static leaf function text segment symbol +.TP +.B D +data segment symbol +.TP +.B d +static data segment symbol +.TP +.B B +bss segment symbol +.TP +.B b +static bss segment symbol +.TP +.B a +automatic (local) variable symbol +.TP +.B p +function parameter symbol +.TP +.B z +source file name +.TP +.B Z +source file line offset +.TP +.B f +source file name components +.PD +.PP +The output is sorted alphabetically. +.PP +Options are: +.TP +.B -a +Print all symbols; normally only user-defined text, data, +and bss segment symbols are printed. +.TP +.B -g +Print only global +.RB ( T , +.BR L , +.BR D , +.BR B ) +symbols. +.TP +.B -h +Do not print file name headers with output lines. +.TP +.B -n +Sort according to the address of the symbols. +.TP +.B -s +Don't sort; print in symbol-table order. +.TP +.B -u +Print only undefined symbols. +.SH SOURCE +.B /utils/nm +.SH SEE ALSO +.IR iar (10.1), +.IR 2l (10.1), +.IR acid (10.1), +.IR a.out (10.6) diff --git a/man/10/intrenable b/man/10/intrenable new file mode 100644 index 00000000..a6d508e3 --- /dev/null +++ b/man/10/intrenable @@ -0,0 +1,106 @@ +.TH INTRENABLE 10.2 +.SH NAME +intrenable, intrdisable \- enable (disable) an interrupt handler +.SH SYNOPSIS +.ta \w'\fLvoid* 'u +.B +void intrenable(int v, void (*f)(Ureg*, void*), void* a, int tbdf, char *name) +.PP +.B +void intrdisable(int v, void (*f)(Ureg*, void*), void* a, int tbdf, char *name) +.SH DESCRIPTION +.I Intrenable +registers +.I f +to be called by the kernel's interrupt controller driver each time +an interrupt denoted by +.I v +occurs, and unmasks the corresponding interrupt in the interrupt controller. +The encoding of +.I v +is platform-dependent; it is often an interrupt vector number, but +can be more complex. +.I Tbdf +is a platform-dependent value that might further qualify +.IR v . +It might for instance +denote the type of bus, bus instance, device number and function +(following the PCI device indexing scheme), hence its name, +but can have platform-dependent meaning. +.I Name +is a string that should uniquely identify the corresponding device (eg, \f5"uart0"\fP); +again it is usually platform-dependent. +.I Intrenable +supports sharing of interrupt levels when the hardware does. +.PP +Almost invariably +.I f +is a function defined in a device driver to carry out the device-specific work associated with a given interrupt. +The pointer +.I a +is passed to +.IR f ; +typically it points to the driver's data for a given device or controller. +It also passes +.I f +a +.B Ureg* +value that +contains the registers saved by the interrupt handler (the +contents are platform specific; +see the platform's include file +.BR "ureg.h" ). +.PP +.I F +is invoked by underlying code in the kernel that is invoked directly from the hardware vectors. +It is therefore not running in any process (see +.IR kproc (10.2); +indeed, on many platforms +the current process pointer +.RB ( up ) +will be nil. +There are many restrictions on kernel functions running outside a process, but a fundamental one is that +they must not +.IR sleep (10.2), +although they often call +.B wakeup +to signal the occurrence of an event associated with the interrupt. +.IR Qio (10.2) +and other manual pages note which functions are safe for +.I f +to call. +.PP +The interrupt controller driver does whatever is +required to acknowledge or dismiss the interrupt signal in the interrupt controller, +before calling +.IR f , +for edge-triggered interrupts, +and after calling +.IR f +for level-triggered ones. +.I F +is responsible for deal with the cause of the interrupt in the device, including any +acknowledgement required in the device, before it returns. +.PP +.I Intrdisable +removes any registration previously made by +.I intrenable +with matching parameters, and if no other +interrupt is active on +.IR v , +it masks the interrupt in the controller. +Device drivers that are not dynamically configured tend to call +.I intrenable +during reset or initialisation (see +.IR dev (10.2)), +but can call it at any appropriate time, and +instead of calling +.I intrdisable +they can simply enable or disable interrupts in the device as required. +.SH SOURCE +.B /os/*/trap.c +.SH SEE ALSO +.IR malloc (10.2), +.IR qio (10.2), +.IR sleep (10.2), +.IR splhi (10.2) diff --git a/man/10/kbdputc b/man/10/kbdputc new file mode 100644 index 00000000..08fe3830 --- /dev/null +++ b/man/10/kbdputc @@ -0,0 +1,105 @@ +.TH KBDPUTC 10.2 +.SH NAME +kbdputc, kbdrepeat, kbdclock, kbdq \- keyboard interface to \fIcons\fP(3) +.SH SYNOPSIS +.ta \w'\f5extern\ \ \f1'u +.B +#include "keyboard.h" +.PP +.B +void kbdputc(Queue *q, int c) +.PP +.B +void kbdrepeat(int on) +.PP +.B +void kbdclock(void) +.PP +.B +extern Queue *kbdq; +.SH DESCRIPTION +This is the internal interface between +.B /dev/keyboard +of +.IR cons (3) +and the architecture-dependent keyboard driver. +Before calling any of these functions, +the global variable +.B kbdq +must be initialised; +.IR cons (3) +does not initialise it. +This is usually done during system initialisation by the keyboard driver's +.I kbdinit +function , +as follows: +.IP +.EX +kbdq = qopen(4*1024, 0, 0, 0); +qnoblock(kbdq, 1); +.EE +.PP +.I Kbdputc +puts a 16-bit Unicode character +.I c +(ie, a `rune') +on the given +.IR q , +as a sequence of bytes in UTF-8 encoding +(see +.IR utf (6)). +If +.I c +is the special value +.B Latin +(defined by +.BR keyboard.h ), +.I kbdputc +starts collecting characters, looking for the typeable representations of +Unicode characters defined by +.IR keyboard (6); +at the end of a complete such sequence, +.I kbdputc +queues the UTF-8 encoding of the corresponding Unicode character. +It is up to the keyboard driver to map a suitable physical keyboard character +(or combination of characters) to the code +.BR Latin . +.PP +Drivers that need to implement repeat of keypresses in software +should call +.IP +.EX +addclock0link(kbdclock); +.EE +.PP +at the end of +.IR kbdinit , +to cause +.I kbdclock +to be called each clock tick. +.I Kbdrepeat +can then be called to enable +.RI ( on +is non-zero) +or disable it +.RI ( on +is zero). +When repeat is on, +.I kbdclock +(when called) will periodically call +.BI "kbdputc(" kbdq , c ) +where +.I c +is the last rune given to +.IR kbdputc . +The driver is responsible for enabling and disabling repeat appropriately; +for instance, function keys and certainly +.B Latin +should typically not be repeated. +.SH SOURCE +.B /os/*/kbd*.c +.SH SEE ALSO +.IR cons (3), +.IR utf (6), +.IR qio (10.2) + diff --git a/man/10/kproc b/man/10/kproc new file mode 100644 index 00000000..eff495c2 --- /dev/null +++ b/man/10/kproc @@ -0,0 +1,142 @@ +.TH KPROC 10.2 +.SH NAME +kproc, setpri, swiproc, pexit \- kernel process creation, priority change, interrupt and termination +.SH SYNOPSIS +.ta \w'\fLchar* 'u +.B +void kproc(char *name, void (*func)(void*), void *arg, int flags); +.PP +.B +int setpri(int pri); +.PP +.B +void swiproc(Proc *p, int interp); +.PP +.B +void pexit(char*, int); +.SH DESCRIPTION +.I Kproc +creates a new Inferno kernel process +to run the function +.IR func , +which is invoked as +.BR "(*func)(arg)" . +The string +.I name +is copied into the +.B text +field of the +.B Proc +structure of the new process; although the value is not visible to Limbo +applications, it can appear in system messages written to the console. +The process is made runnable; it +will run when selected by the scheduler. +.PP +The new process always acquires the following attributes from the creating process: +.IP +owner (Inferno user name) +.br +host user and group IDs (in +.I emu +only) +.br +floating-point attributes +.PP +Several resources can be shared with the creating process on request, as determined by +.IR flags , +which is the logical OR +of a subset of the following: +.TF KPDUPENVG +.TP +.B KPDUPPG +If set, the new process shares the caller's process group, +which includes its process group ID +(for +.IR killgrp ), +name space (mounts, root and current directory), +and PIN for +.B /dev/pin +(see +.IR cons (3)). +.TP +.B KPDUPFDG +If set, the new process shares the caller's file descriptor group; +otherwise, it has no file descriptor group, and (if it intends to open files) must call +.IR newfgrp (10.2) +to obtain an empty file descriptor group. +.TP +.B KPDUPENVG +If set, the new process shares the caller's environment group +(currently applies in +.I emu +only). +.TP +.B KPDUP +Equivalent to all of the above. +.PD +.PP +If a particular option is not set, the new process will have a +.B nil +reference for the corresponding resource. +.PP +.I Setpri +sets the priority of the calling process to +.I pri +and returns its previous priority level. +If a (now) higher priority process is ready to run, the system will reschedule. +The available priority levels are shown below, +arranged from highest to lowest priority, +with examples of the type of processes intended to use them: +.TF PriBackground +.TP +.B PriLock +The highest priority, used by +.IR lock (10.2) +for a process entering a critical section +.TP +.B PriRealtime +Intended for processes supporting applications with real-time constraints, such as video telephony. +.TP +.B PriHicodec +MPEG codec +.TP +.B PriLocodec +Audio codec +.TP +.B PriHi +Any task with keen time constraints. +.TP +.B PriNormal +The priority of most processes in the system. +.TP +.B PriLo +.TP +.B PriBackground +.PD +.PP +.I Swiproc +sends a software interrupt to process +.IR p , +causing it to wake from +.IR sleep (10.2) +with an +.IR error (10.2) +`interrupted'. +Unless +.I interp +is non-zero (ie, the Dis interpreter is the caller), the process is also marked `killed'. +.PP +An Inferno process terminates only when it calls +.IR pexit , +thereby terminating itself. +There is no mechanism for one process to force the termination of another, +although it can send a software interrupt using +.IR swiproc . +The arguments to +.I pexit +are ignored in Inferno, but are included for compatibility +with kernel components of Plan 9; use +.IP +.EX +pexit("", 0); +.EE diff --git a/man/10/kprof b/man/10/kprof new file mode 100644 index 00000000..4df39888 --- /dev/null +++ b/man/10/kprof @@ -0,0 +1,34 @@ +.TH KPROF 10.1 +.SH NAME +kprof \- display kernel profiling data +.SH SYNOPSIS +.B kprof +.I kernel +.I kpdata +.SH DESCRIPTION +.I Kprof +presents the data accumulated by the kernel +profiling device, +.IR kprof (3) . +The symbol table is taken from the file +.IR kernel , +the executable file of the operating system kernel that +was profiled. +The data file +.I kpdata +is usually a copy of +.BR /dev/kpdata +from the device running the profiling kernel. +.PP +The symbol table +is read and correlated with the +profile data. +For each symbol, the time (in milliseconds) +spent executing between that symbol +and the next +is printed (in decreasing order), +together with the percentage of the total time. +.SH SOURCE +.B /utils/kprof +.SH SEE ALSO +.IR kprof (3) diff --git a/man/10/ksize b/man/10/ksize new file mode 100644 index 00000000..824200b2 --- /dev/null +++ b/man/10/ksize @@ -0,0 +1,29 @@ +.TH KSIZE 10.1 +.SH NAME +ksize \- print size of kernel images +.SH SYNOPSIS +.B ksize +[ +.I file ... +] +.SH DESCRIPTION +.I Ksize +prints the size of the segments for each of the argument executable files +(default +.BR 8.out ). +The format is +.IP +.IB textsize t ++ +.IB datasize d ++ +.IB bsssize b += +.I total +.PP +where the numbers are in bytes. +.SH SOURCE +.B /utils/ksize +.SH "SEE ALSO +.IR kstrip (10.1), +.IR a.out (10.6) diff --git a/man/10/kstrip b/man/10/kstrip new file mode 100644 index 00000000..3346c622 --- /dev/null +++ b/man/10/kstrip @@ -0,0 +1,32 @@ +.TH KSTRIP 10.1 +.SH NAME +kstrip \- remove symbols from kernel images +.SH SYNOPSIS +.B kstrip +.I file ... +.PP +.B kstrip +.B -o +.I ofile +.I file +.SH DESCRIPTION +.I Kstrip +removes symbol table segments from executable files, +rewriting the files in place. +Stripping a file requires write permission on the file +and the directory it is in. +.PP +If the +.B -o +flag is given, +the single input file +.I file +is stripped and the result written to +.IR ofile . +.I File +is unchanged. +.SH SOURCE +.B /utils/kstrip +.SH "SEE ALSO" +.IR ksize (10.1), +.IR a.out (10.6) diff --git a/man/10/lock b/man/10/lock new file mode 100644 index 00000000..9c9e04cd --- /dev/null +++ b/man/10/lock @@ -0,0 +1,110 @@ +.TH LOCK 10.2 +.SH NAME +lock, canlock, ilock, iunlock, unlock \- spin locks +.SH SYNOPSIS +.ta \w'\fLvoid 'u +.B +void lock(Lock *l) +.PP +.B +int canlock(Lock *l) +.PP +.B +void unlock(Lock *l) +.PP +.B +void ilock(Lock *l) +.PP +.B +void iunlock(Lock *l) +.SH DESCRIPTION +These primitives control access to shared +resources using spin locks. +They in turn are used to build higher-level synchronisation mechanisms +such as those described in +.IR sleep (10.2), +.IR qlock (10.2) +and +.IR qio (10.2). +They should be used only to protect short critical sections +that update shared data structures. +.PP +.I Lock +loops repeatedly attempting acquire the spin lock +.I l +until it succeeds. +.I Lock +should not be used to lock a structure shared with an interrupt handler +unless interrupts are disabled by +.IR splhi (10.2) +before attempting the lock; +it is better to use +.IR ilock , +below. +.PP +.I Canlock +is non-blocking. +Only one attempt is made for the lock. +It returns non-zero if the lock was successfully acquired; 0 otherwise. +.PP +.I Unlock +releases the lock +.IR l . +A lock must be unlocked only by the locking process. +.PP +When called by a process, the functions above temporarily boost its priority +to the highest priority, +.BR PriLock ; +its original priority is restored at the end of the critical section by +.IR unlock . +On a uniprocessor, if +.I l +is unavailable, +.I lock +can reschedule unless interrupts are disabled before entering +.I lock +or there is no current process (eg, when executing the scheduler). +.PP +.I Ilock +disables interrupts before attempting to acquire the lock. +It should be used to lock a resource shared between a process and an interrupt handler. +On a uniprocessor, disabling interrupts is sufficient to exclude an interrupt handler +from the critical section, +and on a multiprocessor the spin lock excludes an interrupt handler running on another processor. +.I Ilock +never reschedules the caller, nor must a caller allow itself to be rescheduled +(eg, by calling +.IR sleep (10.2)) +before releasing the lock. +.PP +.I Iunlock +releases a lock previously got by +.IR ilock . +.SH DIAGNOSTICS +The lock functions +guard against the possibility of never acquiring the lock by capping the number of lock attempts. +If the limit is reached, a message of +the following form is written on the console: +.IP +.EX +lock loop on \fIlock-address\fP key \fIkey-value\fP pc \fIcaller-pc\fP held by pc \fIlock-pc\fP +.EE +.PP +Most lock loops represent deadlocks caused by failing to unlock a resource, +attempting to lock (eg, by recursive call) a resource already held by the process, +inconsistent locking and unlocking of nested resources, using a spin-lock +to guard code that reschedules, using +.I lock +not +.I ilock +to interlock with an interrupt routine, and similar blunders. +.SH SOURCE +.B /os/port/taslock.c +.br +.B /os/*/l.s +.br +.B /emu/port/lock.c +.br +.B /emu/*/os.c +.SH SEE ALSO +.IR qlock (10.2) diff --git a/man/10/malloc b/man/10/malloc new file mode 100644 index 00000000..d79ccc45 --- /dev/null +++ b/man/10/malloc @@ -0,0 +1,81 @@ +.TH MALLOC 10.2 +.SH NAME +malloc, mallocz, smalloc, free, realloc, calloc \- kernel memory allocators +.SH SYNOPSIS +.ta \w'\fLvoid* 'u +.B +void* malloc(ulong size) +.PP +.B +void* mallocz(ulong size, int clr) +.PP +.B +void* smalloc(ulong size) +.PP +.B +void* realloc(void *p, ulong size) +.PP +.B +void* calloc(ulong n, ulong szelem) +.PP +.B +void free(void *p) +.SH DESCRIPTION +These functions allocate memory from the +.B mainmem +memory pool. +All but +.I smalloc +(which sleeps) +may safely be called by interrupt handlers. +.PP +.I Malloc +returns a pointer to a block of at least +.I size +bytes, initialised to zero. +The result is aligned on a 32-bit boundary. +.I Mallocz +is similar, but only clears the memory if +.I clr +is non-zero. +.PP +.I Smalloc +returns a pointer to a block of +.I size +bytes, initialised to zero. +If the memory is not immediately available, +.I smalloc +retries every 100 milliseconds until the memory is acquired. +.PP +.I Calloc +returns a pointer to a block of memory of at least +.I "n*szelem" +bytes, initialised to zero. +.PP +.I Realloc +changes the size of the block pointed to by +.I p +to +.I size +bytes, +if possible without moving the data, +and returns a pointer to the block. +The contents are unchanged up to the lesser of old and new sizes, +and any new space allocated is initialised to zero. +If +.I p +is a null pointer, +.I realloc +returns the equivalent of +.BR "malloc(size)" . +.PP +The argument to +.I free +is a pointer to a block of memory allocated by one of the routines above, which +is returned to the allocation pool, or a null pointer, which is ignored. +.SH DIAGNOSTICS +All functions except +.I smalloc +return a null pointer if space is unavailable. +.SH SEE ALSO +.IR xalloc (10.2) diff --git a/man/10/memory b/man/10/memory new file mode 100644 index 00000000..0b11e7ed --- /dev/null +++ b/man/10/memory @@ -0,0 +1,117 @@ +.TH MEMORY 10.2 +.SH NAME +memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations +.SH SYNOPSIS +.ta \w'\fLvoid* 'u +.B +void* memccpy(void *s1, void *s2, int c, long n) +.PP +.B +void* memchr(void *s, int c, long n) +.PP +.B +int memcmp(void *s1, void *s2, long n) +.PP +.B +void* memcpy(void *s1, void *s2, long n) +.PP +.B +void* memmove(void *s1, void *s2, long n) +.PP +.B +void* memset(void *s, int c, long n) +.SH DESCRIPTION +These functions operate efficiently on memory areas +(arrays of bytes bounded by a count, not terminated by a zero byte). +They do not check for the overflow of any receiving memory area. +.PP +.I Memccpy +copies bytes from memory area +.I s2 +into +.IR s1 , +stopping after the first occurrence of byte +.I c +has been copied, or after +.I n +bytes have been copied, whichever comes first. +It returns a pointer to the byte after +the copy of +.I c +in +.IR s1 , +or zero if +.I c +was not found in the first +.I n +bytes of +.IR s2 . +.PP +.I Memchr +returns a pointer to the first +occurrence of byte +.I c +in the first +.I n +bytes of memory area +.IR s, +or zero if +.I c +does not occur. +.PP +.I Memcmp +compares its arguments, looking at the first +.I n +bytes only, and returns an integer +less than, equal to, or greater than 0, +according as +.I s1 +is lexicographically less than, equal to, or +greater than +.IR s2 . +The comparison is bytewise unsigned. +.PP +.I Memmove +copies +.I n +bytes from memory area +.I s2 +to +.IR s1 . +It returns +.IR s1 . +It is guaranteed to work if +.I s1 +and +.IR s2 +overlap. +.PP +In the Inferno kernel +.I memcpy +is equivalent to +.IR memmove . +(In ANSI C, by contrast, +.I memcpy +does not account for overlapping memory regions.) +.PP +.I Memset +sets the first +.I n +bytes in memory area +.I s +to the value of the least significant byte of +.IR c . +It returns +.IR s . +.SH DIAGNOSTICS +If +.I memcpy +and +.I memmove +are handed negative counts, they abort. +.SH SOURCE +.BR /libkern/mem*.c +.br +.BR /libkern/mem*-\fIobjtype\fP.s +.SH SEE ALSO +.IR strcat (10.2) diff --git a/man/10/mk b/man/10/mk new file mode 100644 index 00000000..de5dc6d7 --- /dev/null +++ b/man/10/mk @@ -0,0 +1,668 @@ +.TH MK 10.1 +.SH NAME +mk \- maintain (make) related files +.SH SYNOPSIS +.B mk +[ +.B -f +.I mkfile +] ... +[ +.I option ... +] +[ +.I target ... +] +.SH DESCRIPTION +.I Mk +uses the dependency rules specified in +.I mkfile +to control the update (usually by compilation) of +.I targets +(usually files) +from the source files upon which they depend. +The +.I mkfile +(default +.LR mkfile ) +contains a +.I rule +for each target that identifies the files and other +targets upon which it depends and an +.IR rc (10.1) +script, a +.IR recipe , +to update the target. +The script is run if the target does not exist +or if it is older than any of the files it depends on. +.I Mkfile +may also contain +.I meta-rules +that define actions for updating implicit targets. +If no +.I target +is specified, the target of the first rule (not meta-rule) in +.I mkfile +is updated. +.PP +The environment variable +.B $NPROC +determines how many targets may be updated simultaneously; +Plan 9 sets +.B $NPROC +automatically to the number of CPUs on the current machine. +.PP +Options are: +.TP \w'\fL-d[egp]\ 'u +.B -a +Assume all targets to be out of date. +Thus, everything is updated. +.PD 0 +.TP +.BR -d [ egp ] +Produce debugging output +.RB ( p +is for parsing, +.B g +for graph building, +.B e +for execution). +.TP +.B -e +Explain why each target is made. +.TP +.B -i +Force any missing intermediate targets to be made. +.TP +.B -k +Do as much work as possible in the face of errors. +.TP +.B -n +Print, but do not execute, the commands +needed to update the targets. +.TP +.B -s +Make the command line arguments sequentially rather than in parallel. +.TP +.B -t +Touch (update the modified date of) file targets, without +executing any recipes. +.TP +.BI -w target1 , target2,... +Pretend the modify time for each +.I target +is the current time; useful in conjunction with +.B -n +to learn what updates would be triggered by +modifying the +.IR targets . +.PD +.SS The \fLmkfile\fP +A +.I mkfile +consists of +.I assignments +(described under `Environment') and +.IR rules . +A rule contains +.I targets +and a +.IR tail . +A target is a literal string +and is normally a file name. +The tail contains zero or more +.I prerequisites +and an optional +.IR recipe , +which is an +.B rc +script. +Each line of the recipe must begin with white space. +A rule takes the form +.IP +.EX +target: prereq1 prereq2 + rc \f2recipe using\fP prereq1, prereq2 \f2to build\fP target +.EE +.PP +When the recipe is executed, +the first character on every line is elided. +.PP +After the colon on the target line, a rule may specify +.IR attributes , +described below. +.PP +A +.I meta-rule +has a target of the form +.IB A % B +where +.I A +and +.I B +are (possibly empty) strings. +A meta-rule acts as a rule for any potential target whose +name matches +.IB A % B +with +.B % +replaced by an arbitrary string, called the +.IR stem . +In interpreting a meta-rule, +the stem is substituted for all occurrences of +.B % +in the prerequisite names. +In the recipe of a meta-rule, the environment variable +.B $stem +contains the string matched by the +.BR % . +For example, a meta-rule to compile a C program using +.IR 2c (10.1) +might be: +.IP +.EX +%.2: %.c + 2c $stem.c + 2l -o $stem $stem.2 +.EE +.PP +Meta-rules may contain an ampersand +.B & +rather than a percent sign +.BR % . +A +.B % +matches a maximal length string of any characters; +an +.B & +matches a maximal length string of any characters except period +or slash. +.PP +The text of the +.I mkfile +is processed as follows. +Lines beginning with +.B < +followed by a file name are replaced by the contents of the named +file. +Blank lines and comments, which run from unquoted +.B # +characters to the following newline, are deleted. +The character sequence backslash-newline is deleted, +so long lines in +.I mkfile +may be folded. +Non-recipe lines are processed by substituting for +.BI `{ command } +the output of the +.I command +when run by +.IR rc . +References to variables are replaced by the variables' values. +Special characters may be quoted using single quotes +.BR \&'' +as in +.IR rc (10.1). +.PP +Assignments and rules are distinguished by +the first unquoted occurrence of +.B : +(rule) +or +.B = +(assignment). +.PP +A later rule may modify or override an existing rule under the +following conditions: +.TP +\- +If the targets of the rules exactly match and one rule +contains only a prerequisite clause and no recipe, the +clause is added to the prerequisites of the other rule. +If either or both targets are virtual, the recipe is +always executed. +.TP +\- +If the targets of the rules match exactly and the +prerequisites do not match and both rules +contain recipes, +.I mk +reports an ``ambiguous recipe'' error. +.TP +\- +If the target and prerequisites of both rules match exactly, +the second rule overrides the first. +.SS Environment +Rules may make use of +.B rc +environment variables. +A legal reference of the form +.B $OBJ +or +.B ${name} +is expanded as in +.IR rc (10.1). +A reference of the form +.BI ${name: A % B = C\fL%\fID\fL}\fR, +where +.I A, B, C, D +are (possibly empty) strings, +has the value formed by expanding +.B $name +and substituting +.I C +for +.I A +and +.I D +for +.I B +in each word in +.B $name +that matches pattern +.IB A % B\f1. +.PP +Variables can be set by +assignments of the form +.I + var\fL=\fR[\fIattr\fL=\fR]\fIvalue\fR +.br +Blanks in the +.I value +break it into words, as in +.I rc +but without the surrounding parentheses. +Such variables are exported +to the environment of +recipes as they are executed, unless +.BR U , +the only legal attribute +.IR attr , +is present. +The initial value of a variable is +taken from (in increasing order of precedence) +the default values below, +.I mk's +environment, the +.IR mkfiles , +and any command line assignment as an argument to +.IR mk . +A variable assignment argument overrides the first (but not any subsequent) +assignment to that variable. +The variable +.B MKFLAGS +contains all the option arguments (arguments starting with +.L - +or containing +.LR = ) +and +.B MKARGS +contains all the targets in the call to +.IR mk . +.PP +It is recommended that mkfiles start with +.IP +.EX +</$objtype/mkfile +.EE +.PP +to set +.BR CC , +.BR LD , +.BR AS , +.BR O , +.BR ALEF , +.BR YACC , +and +.B MK +to values appropriate to the target architecture (see the examples below). +.PP +Dynamic information may be included in the mkfile by using a line of the form +.I + \fR<| \fIcommand\fR \fIargs\fR +.br +This runs the command +.I command +with the given arguments +.I args +and pipes its standard output to +.I mk +to be included as part of the mkfile. For instance, the file +.B /os/sa1100/mkfile +uses this technique +to run a shell command with an awk script and a configuration file as arguments in order for +the +.I awk +script to process the file and output a set of variables and their values. +.SS Execution +.PP +During execution, +.I mk +determines which targets must be updated, and in what order, +to build the +.I names +specified on the command line. +It then runs the associated recipes. +.PP +A target is considered up to date if it has no prerequisites or +if all its prerequisites are up to date and it is newer +than all its prerequisites. +Once the recipe for a target has executed, the target is +considered up to date. +.PP +The date stamp +used to determine if a target is up to date is computed +differently for different types of targets. +If a target is +.I virtual +(the target of a rule with the +.B V +attribute), +its date stamp is initially zero; when the target is +updated the date stamp is set to +the most recent date stamp of its prerequisites. +Otherwise, if a target does not exist as a file, +its date stamp is set to the most recent date stamp of its prerequisites, +or zero if it has no prerequisites. +Otherwise, the target is the name of a file and +the target's date stamp is always that file's modification date. +The date stamp is computed when the target is needed in +the execution of a rule; it is not a static value. +.PP +Nonexistent targets that have prerequisites +and are themselves prerequisites are treated specially. +Such a target +.I t +is given the date stamp of its most recent prerequisite +and if this causes all the targets which have +.I t +as a prerequisite to be up to date, +.I t +is considered up to date. +Otherwise, +.I t +is made in the normal fashion. +The +.B -i +flag overrides this special treatment. +.PP +Files may be made in any order that respects +the preceding restrictions. +.PP +A recipe is executed by supplying the recipe as standard input to +the command +.B + $SHELL -e -I +.br +where the +.I SHELL +variable is the appropriate shell on the current platform - typically +.B /bin/sh +or +.B /bin/rc. +The appropriate value is automatically supplied in the Inferno build environment. +The +.B -e +is omitted if the +.B E +attribute is set. +The environment is augmented by the following variables: +.TP 14 +.B $alltarget +all the targets of this rule. +.TP +.B $newprereq +the prerequisites that caused this rule to execute. +.TP +.B $nproc +the process slot for this recipe. +It satisfies +.RB 0≤ $nproc < $NPROC . +.TP +.B $pid +the process id for the +.I mk +executing the recipe. +.TP +.B $prereq +all the prerequisites for this rule. +.TP +.B $stem +if this is a meta-rule, +.B $stem +is the string that matched +.B % +or +.BR & . +Otherwise, it is empty. +For regular expression meta-rules (see below), the variables +.LR stem0 ", ...," +.L stem9 +are set to the corresponding subexpressions. +.TP +.B $target +the targets for this rule that need to be remade. +.PP +These variables are available only during the execution of a recipe, +not while evaluating the +.IR mkfile . +.PP +Unless the rule has the +.B Q +attribute, +the recipe is printed prior to execution +with recognizable environment variables expanded. +Commands returning error status +cause +.I mk +to terminate. +.PP +Recipes and backquoted +.B rc +commands in places such as assignments +execute in a copy of +.I mk's +environment; changes they make to +environment variables are not visible from +.IR mk . +.PP +Variable substitution in a rule is done when +the rule is read; variable substitution in the recipe is done +when the recipe is executed. For example: +.IP +.EX +bar=a.c +foo: $bar + $CC -o foo $bar +bar=b.c +.EE +.PP +will compile +.B b.c +into +.BR foo , +if +.B a.c +is newer than +.BR foo . +.SS Aggregates +Names of the form +.IR a ( b ) +refer to member +.I b +of the aggregate +.IR a . +Currently, the only aggregates supported are +.IR ar (10.1) +archives. +.SS Attributes +The colon separating the target from the prerequisites +may be +immediately followed by +.I attributes +and another colon. +The attributes are: +.TP +.B < +The standard output of the recipe is read by +.I mk +as an additional +.IR mkfile . +.PD 0 +.TP +.B D +If the recipe exits with a non-null status, the target is deleted. +.TP +.B E +Continue execution if the recipe draws errors. +.TP +.B N +If there is no recipe, the target has its time updated. +.TP +.B n +The rule is a meta-rule that cannot be a target of a virtual rule. +Only files match the pattern in the target. +.TP +.B P +The characters after the +.B P +until the terminating +.B : +are taken as a program name. +It will be invoked as +.B "rc -c prog 'arg1' 'arg2'" +and should return a null exit status +if and only if arg1 is not out of date with respect to arg2. +Date stamps are still propagated in the normal way. +.TP +.B Q +The recipe is not printed prior to execution. +.TP +.B R +The rule is a meta-rule using regular expressions. +In the rule, +.B % +has no special meaning. +The target is interpreted as a regular expression as defined in +.IR regexp (6). +The prerequisites may contain references +to subexpressions in form +.BI \e n\f1, +as in the substitute command of +.IR sed (10.1). +.TP +.B U +The targets are considered to have been updated +even if the recipe did not do so. +.TP +.B V +The targets of this rule are marked as virtual. +They are distinct from files of the same name. +.PD +.SH EXAMPLES +A simple mkfile to compile a program: +.IP +.EX +</$objtype/mkfile + +prog: a.$O b.$O c.$O + $LD $CFLAGS -o $target $prereq + +%.$O: %.c + $CC $stem.c +.EE +.PP +Override flag settings in the mkfile: +.IP +.EX +% mk target 'CFLAGS=-S -w' +.EE +.PP +To get the prerequisites for an aggregate: +.IP +.EX +% membername 'libc.a(read.2)' 'libc.a(write.2)' +read.2 write.2 +.EE +.PP +Maintain a library: +.IP +.EX +libc.a(%.$O):N: %.$O +libc.a: libc.a(abs.$O) libc.a(access.$O) libc.a(alarm.$O) ... + names=`{membername $newprereq} + ar r libc.a $names && rm $names +.EE +.PP +String expression variables to derive names from a master list: +.IP +.EX +NAMES=alloc arc bquote builtins expand main match mk var word +OBJ=${NAMES:%=%.$O} +.EE +.PP +Regular expression meta-rules: +.IP +.EX +([^/]*)/(.*)\e.o:R: \e1/\e2.c + cd $stem1; $CC $CFLAGS $stem2.c +.EE +.PP +A correct way to deal with +.IR yacc (10.1) +grammars. +The file +.B lex.c +includes the file +.B x.tab.h +rather than +.B y.tab.h +in order to reflect changes in content, not just modification time. +.IP +.EX +lex.o: x.tab.h +x.tab.h: y.tab.h + cmp -s x.tab.h y.tab.h || cp y.tab.h x.tab.h +y.tab.c y.tab.h: gram.y + $YACC -d gram.y +.EE +.PP +The above example could also use the +.B P +attribute for the +.B x.tab.h +rule: +.IP +.EX +x.tab.h:Pcmp -s: y.tab.h + cp y.tab.h x.tab.h +.EE +.SH SOURCE +.B /utils/mk +.SH SEE ALSO +.IR rc (10.1), +.IR regexp (6) +.br +A. Hume, +``Mk: a Successor to Make''. +.br +Bob Flandrena, +``Plan 9 Mkfiles''. +.SH BUGS +Identical recipes for regular expression meta-rules only have one target. +.br +Seemingly appropriate input like +.B CFLAGS=-DHZ=60 +is parsed as an erroneous attribute; correct it by inserting +a space after the first +.LR = . +.br +The recipes printed by +.I mk +before being passed to +.I rc +for execution are sometimes erroneously expanded +for printing. Don't trust what's printed; rely +on what +.I rc +does. diff --git a/man/10/ms2 b/man/10/ms2 new file mode 100644 index 00000000..6a0d23af --- /dev/null +++ b/man/10/ms2 @@ -0,0 +1,58 @@ +.TH MS2 10.1 +.SH NAME +ms2 \- convert executable or raw file to Motorola S record format +.SH SYNOPSIS +.B ms2 +[ +.I option ... +] +.I infile +.SH DESCRIPTION +.IR ms2 +converts the +.I infile +onto the standard output in Motorola S record format. If the +.B -b +option is not given, the +.I infile +is presumed to be an executable, and the header and symbol +table stripped. If the +.B -b +option is given, the file is treated as raw binary. +The options are: +.TP 1i +.BI -d +Encode the data segment only. +.TP +.BI -s +Omit the end record, presumably to accomodate poorly implemented +decoders. +.TP +.BI -T addr +.TP +.BI -A addr +Set the address of the text segment, i.e. the first record output. +.B -a +is an older, deprecated option. +.TP +.BI -R n +.TP +.BI -p n +Set the page size in use by the linker. +.B -p +is an older, deprecated option. +.TP +.BI -b +The +.I infile +is binary. Ignores the +.B -R +and +.B -d +options. +.TP +.BI -S addr +Sets the entry address output in the end record. +.PP +.SH SOURCE +.IR 5cv (10.1) diff --git a/man/10/newchan b/man/10/newchan new file mode 100644 index 00000000..69346d46 --- /dev/null +++ b/man/10/newchan @@ -0,0 +1,227 @@ +.TH NEWCHAN 10.2 +.SH NAME +newchan, chanfree, cclose, eqqid, eqchan, isdir, fdtochan, namec \- channel operations +.SH SYNOPSIS +.ta \w'\fLChan* 'u +.B +Chan* newchan(void) +.PP +.B +void chanfree(Chan *c) +.PP +.B +int eqqid(Qid a, Qid b) +.PP +.B +int eqchan(Chan *a, Chan *b, int pathonly) +.PP +.B +void isdir(Chan *c) +.PP +.B +Chan* fdtochan(Fgrp *f, int fd, int mode, int chkmnt, int iref) +.PP +.B +Chan* namec(char *pathname, int amode, int omode, ulong perm) +.PP +.B +void cclose(Chan *c) +.SH DESCRIPTION +A value of type +.B Chan +represents a kernel channel for I/O and name space operations. +It has the following public structure: +.IP +.EX +typedef struct Chan{ + ushort type; /* driver name */ + ulong dev; /* instance number */ + ushort mode; /* open mode */ + ushort flag; /* COPEN set once opened */ + ulong offset; /* current file offset */ + Qid qid; /* unique id (path, vers) */ + Cname* name; /* name by which it was accessed */ +.EE +.PP +.I Newchan +returns a pointer to a newly allocated channel (sleeping if necessary until memory is available). +Device drivers do not normally call +.IR newchan +directly, but instead allocate channels using either +.IR devattach , +when a process attaches to the device's root, +or +.IR devclone , +when an existing channel is cloned; +see +.IR devattach (10.2). +.PP +.I Chanfree +frees the channel structure +.I c +for reuse. +.PP +.I Eqqid +returns 1 if +.B Qid +values +.I a +and +.I b +are equal +(ie, +both their +.B path +and +.B vers +members are equal); +it returns 0 otherwise. +.PP +.I Eqchan +returns 1 if +.I a +and +.I b +have the same +.BR qid , +.BR type +and +.BR dev +members +(ie, they represent the same file); +it returns 0 otherwise. +If +.I pathonly +is non-zero, the comparison of the two +.B qid +members compares only their +.B path +values, +ignoring the version field +.BR vers . +.PP +.I Isdir +checks that a given channel +.I c +is a directory. +If so, it returns; +otherwise, it generates an +.IR error (10.2), +.BR Enotdir . +.PP +The +.B Fgrp +structure represents an array of open files, each +represented by a +.BR Chan , +indexed by integer file descriptors. +A given +.B Fgrp +can be shared between processes. +.PP +.I Fdtochan +returns a pointer to the +.B Chan +corresponding to file descriptor +.I fd +in file descriptor group +.I f +(almost invariably +.BR up->env->fgrp , +the file descriptor group for the current process). +If +.I mode +is a valid mode for +.IR sys-open (2), +typically +.BR OREAD , +.B OWRITE +or +.BR ORDWR , +it must correspond to the mode with which +.I fd +was originally opened; if +.I mode +is +.BR -1 , +no check is made. +If +.I chkmnt +is non-zero, +.I c +must not be a channel in use by the mount driver +.IR mnt (3). +On successful return, if +.I iref +is non-zero, the channel's reference count has been incremented. +.I Fdtochan +calls +.IR error (10.2) +if it detects invalid uses, in particular an invalid file descriptor +.IR fd . +.PP +.I Namec +looks up a +.I pathname +in the current name space and returns a channel. +.I Amode +determines the mode of look up, and must be one of the constants below: +.TF Aaccess +.PD +.TP +.B Aaccess +Access file for information, as in the stat command or call. +.TP +.B Atodir +Access file as directory (the +.B CHDIR +bit of its +.B qid.path +must be set). +.TP +.B Aopen +Access for I/O. +.TP +.B Amount +Access directory to be mounted upon. +.TP +.B Acreate +File is to be created. +.PP +If +.I amode +is +.B Aopen +or +.BR Acreate , +.I omode +should be a mode suitable for +.IR sys-open (2); +if +.BR Acreate , +.I perm +should be valid file permissions. +In all other cases, +.I omode +and +.I perm +can be zero. +.PP +.I Cclose +decrements the reference count on +.IR c ; +if no further references remain, it +calls the corresponding device's +.B Dev.close +to close the channel, and frees +.IR c . +.SH DIAGNOSTICS +Most functions call +.IR error (10.2) +on any sort of error. +.SH SOURCE +.B /os/port/chan.c +.br +.B /emu/port/chan.c +.SH SEE ALSO +.IR ref (10.2) diff --git a/man/10/ntsrv b/man/10/ntsrv new file mode 100644 index 00000000..d49b48a2 --- /dev/null +++ b/man/10/ntsrv @@ -0,0 +1,69 @@ +.TH NTSRV 10.1 Windows +.SH NAME +ntsrv \- start hosted Inferno as Windows service +.SH SYNOPSIS +.B ntsrv +.B add +.IR "svcname rootdir cmd" " [" arg " ... ]" +.PP +.B ntsrv +.B del +.I svcname +.SH DESCRIPTION +.I Ntsrv +is a command (for Windows only) that allows hosted Inferno +to run automatically as a Windows service, under Windows 2000 and XP. +For Windows NT, use the command +.BR ntsrv4 , +which otherwise has identical interface. +.I Svcname +is the (proposed) Windows service name; +.I rootdir +is the root of the Inferno directory tree, +including the drive letter. +Once added, a service can be controlled using the Windows service manager: +it may be stopped, started, or have its attributes changed. +.I Svcname +is set to start automatically when Windows starts up. +Services run by default under the local Windows `System' identity. +All Windows processes and threads the service creates (eg, using +.IR cmd (3)) +are destroyed when the service is stopped. +There may be many different services, each with a distinct +.IR svcname . +.PP +.I Ntsrv 's +first parameter tells it what to do: +.TP +.B add +Add a new service +.I svcname +that when started will invoke +.IR emu (1) +to run the Inferno command +.I cmd +with any additional arguments. +.TP +.B del +Delete an existing service +.IR svcname . +.PP +.I Ntsrv +requires the directory +.IR rootdir /Nt/386/bin +to contain both +.B emu.exe +(ie, +.IR emu (1)) +and +.B ntsrv.exe +itself. +.SH FILES +.TF c:/inferno/Nt/386/bin +.TP +.IB rootdir /Nt/386/bin +Windows host executables +.SH SOURCE +.B /utils/ntsrv +.SH SEE ALSO +.IR emu (1) diff --git a/man/10/odbc b/man/10/odbc new file mode 100644 index 00000000..fac39877 --- /dev/null +++ b/man/10/odbc @@ -0,0 +1,266 @@ +.TH ODBC 10.4 +.SH NAME +ODBC \- A Windows ODBC file server +.SH SYNOPSIS +.B odbc.exe +[ +.B -d +] [ +.BI -p " port" +] +.SH DESCRIPTION +.I Odbc +is a file server that runs under Windows and +exports a Styx namespace +(see +.IR intro (5)). +An Inferno process that mounts the namespace +can use it to manipulate Windows ODBC databases. +.PP +The +.B -d +option causes +.I odbc +to print debugging information. +.PP +The +.B -p +option gives the port number to listen on for connections. The default is 6700. +.SS Name space +.I Odbc +presents the following name space: +.PP +.nf +.BI /nclients +.BI /db +.BI /db/new +.BI /db/ n +.BI /db/ n /cmd +.BI /db/ n /ctl +.BI /db/ n /data +.BI /db/ n /error +.BI /db/ n /format +.BI /db/ n /sources +.BI /db/ n /status +.fi +.PP +The top level read-only file +.B nclients +contains the current number of active clients on the server. +.PP +The top level +.B db +directory contains a +.B new +file and subdirectories numbered +.B n +from zero to the maximum number of +configured conversations. +.PP +Opening the +.B new +file reserves a conversation, represented +by one of the numbered directories. The resulting file descriptor will be open +on the control file, +.BR ctl , +of the newly allocated conversation. +Reading the +.B ctl +file returns a text string representing the +number of the conversation. +A conversation is used to converse with the server - in ODBC terms +it is equivalent to obtaining a connection handle. This is the level at +which ODBC transactions are managed. +.PP +A conversation is controlled by writing text strings to the +associated +.B ctl +file. ODBC commands may be sent to the +server by writing them, as text strings, to the +.B cmd +file. +For commands that return a record set, the results may be read +from the +.B data +file; each read returning a single record. +If a command results in an error, the write to the +.B cmd +file +will fail. The full ODBC error message can be obtained by reading +the +.B error +file. +A conversation remains open while at least one of the +.BR ctl , +.B cmd +or +.B data +files remains open. +.PP +The following commands can be written to the +.B ctl +file: +.TP +.B connect " datasource" " [user!auth]" +Connect to the ODBC datasource using the username and authentication, if given. +.TP +.B disconnect +Disconnect from the datasource. +.TP +.B fixed +Reads from the +.B data +file will return data in a fixed format. The format can +be read from the +.B format +file after writing the command to the +.B cmd +file and before reading the data from the +.B data +file. +.TP +.B float " [fs< [rs<]]" +Reads from the data file will return data using the character +.B fs +to separate fields and the character +.B rs +to separate records. +The default values for +.B fs and +.B rs +are the pipe symbol '|' +and the newline character. +.TP +.B trans " begin" +Enter ODBC manual-commit mode for transactions. A transaction will +not complete until one of +.B trans commit +or +.B trans rollback +is written to the +.B ctl +file. +.TP +.B trans " auto" +Enter ODBC auto-commit mode for transactions (the default). +Each database statement is wrapped by a transaction that is automatically +commited when the statement is executed. +.TP +.B trans " commit" +Commit a transaction when in manual-commit mode. +.TP +.B trans " rollback" +Rollback a transation when in manual-commit mode. +.PP +Once a conversation has been established and transaction mode and +output formats determined the +.B cmd +file is +used to send ODBC commands to the server. +The following commands can be written to the +.B cmd +file: +.TP +.B tables +The result of calling the ODBC API function SQLTables is returned +in the +.B data +file. +.TP +.B columns " tablename" +The result of calling the ODBC API function SQLColumns with the +given +.B tablename +as a parameter is returned in the +.B data +file. +.TP +.B any " ODBC" " command" +Any ODBC command written to the +.B cmd +file is passed +to the ODBC API function SQLExecDirect. This most commonly includes +select, update, insert, and delete +commands. +.PP +The +.B format +file is used to determine column names and how to extract +individual columns from the record read from the +.B data +file when using +fixed format output. A read of it gives +a single record read returning one line +for each column in the result data. Each line has three components separated +by a single space: a number giving the character position of the start of the field +in the result data, a number giving the character position one beyond the +end of the field in the result data, and the field name. +.PP +The result of database enquiries can be read from the +.B data +file. +After writing a command that returns data to the +.B cmd +file, +reads from the +.B data +file will return the results one record at a time. +When the last record has been read the following read will return zero +bytes indicating the end of the data. +.PP +The read-only file +.B sources +gives a newline separated list of sources. Each line consists +of the source name and the source type separated by a colon. +.PP +The read-only file +.B status +return the status of the current conversation. +.SH EXAMPLE +For example, the Inferno shell can be used to retrieve +values from a database. The shell commands: +.PP +.EX +mount -A tcp!localhost!6700 /n/remote +{ + d=/n/remote/db/`{cat} + echo -n 'float' > $d/ctl + echo -n 'connect cellar' > $d/ctl + echo -n 'select name from wine' > $d/cmd + cat $d/data +} < /n/remote/db/new +.EE +.PP +produces the output: +.PP +.EX +Chardonnay +Jo. Riesling +Fume Blanc +Wh. Burgundy +Gewurztraminer +Cab. Sauvignon +Pinot Noir +Zinfandel +Gamay +.EE +.PP +Here the server has been started on the local machine, listening on port +6700 for network connections. +The braced block and the redirection from +.B /n/remote/db/new +reserve a conversation with the server and ensures that it remains open +for the duration of the execution of the set of commands within the block. +The +.B -A +option to mount is used because this server can not +authenticate a connection. +.SH SOURCE +.B /tools/odbc/odbc.c +.SH SEE ALSO +.IR bind (1), +.IR sys-bind (2), +.IR intro (5), +.IR db (7), +.IR dbsrv (7), +.IR svc (8) diff --git a/man/10/panic b/man/10/panic new file mode 100644 index 00000000..6de7fe4b --- /dev/null +++ b/man/10/panic @@ -0,0 +1,25 @@ +.TH PANIC 10.2 +.SH NAME +panic \- abandon hope +.SH SYNOPSIS +.ta \w'\fLchar* 'u +.B +void panic(char *fmt, ...) +.SH DESCRIPTION +.I Panic +writes a message to the console and +causes the system to give up the ghost. +It enables interrupts, dumps the kernel stack, +and halts the current processor; +if more than one, others will gradually come to a halt. +Depending on configuration settings, the platform-dependent +.I exit +might reboot the system. +The format +.I fmt +and associated arguments are the same as those for +.IR print (10.2). +.I Panic +adds a prefix +.L "panic: " +and a trailing newline. diff --git a/man/10/parsecmd b/man/10/parsecmd new file mode 100644 index 00000000..a9598773 --- /dev/null +++ b/man/10/parsecmd @@ -0,0 +1,68 @@ +.TH PARSECMD 10.2 +.SH NAME +parsecmd \- parse device commands +.SH SYNOPSIS +.ta \w'\fLCmdbuf* 'u +.B +Cmdbuf* parsecmd(char *a, int n) +.SH DESCRIPTION +.I Parsecmd +is an interface to +.I tokenize +(see +.IR getfields (10.2)), +that safely parses a command, with blank-separated fields, as might be +written to a device's +.B ctl +file. +The buffer +.I a +and count +.I n +can be those passed to the driver's +.I write +function. +.I Parsecmd +converts the byte array (which might not be null-terminated) to a null-terminated string, +trimming any trailing new line, +before invoking +.I tokenize +to break the string into arguments, interpreting blank and tab as field separators +when they are not quoted +(in the style of +.IR sh (1)). +It returns a pointer to a dynamically-allocated +.B Cmdbuf +structure, +which holds a copy of the string as +modified by +.IR parsefields , +and the resulting fields; it is defined as follows: +.IP +.EX +.ta 6n +\w'char* 'u +typedef +struct Cmdbuf +{ + char buf[128]; + char *f[16]; + int nf; +} Cmdbuf; +.EE +.PP +The array +.B f +holds the field pointers; +.B nf +gives the number of fields. +.B Cmdbuf +is allocated by +.I smalloc +(see +.IR malloc (10.2)), +and the caller is responsible for freeing it using +.IR free . +.SH SOURCE +.B /os/port/parse.c +.br +.B /emu/port/dev.c diff --git a/man/10/plan9.ini b/man/10/plan9.ini new file mode 100644 index 00000000..71e8559d --- /dev/null +++ b/man/10/plan9.ini @@ -0,0 +1,789 @@ +.TH PLAN9.INI 10.6 +.SH NAME +plan9.ini \- configuration file for PCs +.SH SYNOPSIS +.I none +.SH DESCRIPTION +When booting Inferno on a PC, the Plan 9 bootstrap programs +are used, hence the references to Plan 9 below. +The DOS program +.IR 9load (10.8) +first reads a DOS file +containing configuration information from the boot disk. +This file, +.BR plan9.ini , +looks like a shell script containing lines of the form +.PP +.EX + name=\f2value\fP +.EE +.LP +each of which defines a kernel or device parameter. +.PP +For devices, the generic format of +.I value +is +.PP +.EX + type=TYPE [port=N] [irq=N] [mem=N] [size=N] [dma=N] [ea=N] +.EE +.LP +specifying the controller type, +the base I/O port of the interface, its interrupt +level, the physical starting address of any mapped memory, +the length in bytes of that memory, the DMA channel, +and for Ethernets an override of the physical network address. +Not all elements are relevant to all devices; the relevant values +and their defaults are defined below in the description of each device. +.PP +The file is used by +.B 9load +and the kernel to configure the hardware available. +The information it contains is also passed to the boot +process, and subsequently other programs, +as environment variables +(see also +.B osinit.dis +in +.IR root (3)). +However, values whose names begin with an asterisk +.B * +are used by the kernel and are not converted into environment variables. +.PP +The following sections describe how variables are used. +.SS \fLetherX=value\fP +This defines an Ethernet interface. +.IR X , +a unique monotonically increasing number beginning at 0, +identifies an Ethernet card to be probed at system boot. +Probing stops when a card is found or there is no line for +.BR etherX+1 . +After probing as directed by the +.BI ether X +lines, any remaining ethernet cards that can be automatically +detected are added. +Almost all cards can be automatically detected. +For debugging purposes, automatic probing can +be disabled by specifying the line +.BR *noetherprobe= . +This automatic probing is only done by the kernel, not by +.IR 9load (10.8). +Thus, if you want to load a kernel over the ethernet, you need +to specify an +.B ether0 +line so that +.I 9load +can find the ethernet card, even if the kernel would +have automatically detected it. +.PP +Some cards are software configurable and do not require all options. +Unspecified options default to the factory defaults. +.PP +Known types are +.TP +.B ne2000 +Not software configurable. 16-bit card. +Defaults are +.EX + port=0x300 irq=2 mem=0x04000 size=0x4000 +.EE +The option (no value) +.B nodummyrr +is needed on some (near) clones to turn off a dummy remote read in the driver. +.TP +.B amd79c970 +The AMD PCnet PCI Ethernet Adapter (AM79C970). +(This is the ethernet adapter used by VMware.) +Completely configurable, no options need be given. +.TP +.B wd8003 +Includes WD8013 and SMC Elite and Elite Ultra cards. There are varying degrees +of software configurability. Cards may be in either 8-bit or 16-bit slots. +Defaults are +.EX + port=0x280 irq=3 mem=0xD0000 size=0x2000 +.EE +BUG: On many machines only the 16 bit card works. +.TP +.B elnk3 +The 3COM Etherlink III series of cards including the 5x9, 59x, and 905 and 905B. +Completely configurable, no options need be given. +The media may be specified by setting +.B media= +to the value +.BR 10BaseT , +.BR 10Base2 , +.BR 100BaseTX , +.BR 100BaseFX , +.BR aui , +and +.BR mii . +If you need to force full duplex, because for example the Ethernet switch does not negotiate correctly, +just name the word (no value) +.B fullduplex +or +.BR 100BASE-TXFD . +Similarly, to force 100Mbit operation, specify +.BR force100 . +Port 0x110 is used for the little ISA configuration dance. +.TP +.B 3c589 +The 3COM 3C589 series PCMCIA cards, including the +3C562 and the 589E. +There is no support for the modem on the 3C562. +Completely configurable, no options need be given. +Defaults are +.EX + port=0x240 irq=10 +.EE +The media may be specified as +.B media=10BaseT +or +.BR media=10Base2 . +.TP +.B ec2t +The Linksys Combo PCMCIA EthernetCard (EC2T), +EtherFast 10/100 PCMCIA cards (PCMPC100) and integrated controllers (PCM100), +the Netgear FA410TX 10/100 PCMCIA card +and the Accton EtherPair-PCMCIA (EN2216). +Completely configurable, no options need be given. +Defaults are +.EX + port=0x300 irq=9 +.EE +These cards are NE2000 clones. +Other NE2000 compatible PCMCIA cards may be tried +with the option +.EX + id=string +.EE +where +.B string +is a unique identifier string contained in the attribute +memory of the card (see +.IR pcmcia (8)); +unlike most options in +.BR plan9.ini , +this string is case-sensitive. +The option +.B dummyrr=[01] +can be used to turn off (0) or on (1) a dummy remote read in the driver +in such cases, +depending on how NE2000 compatible they are. +.TP +.B i82557 +Cards using the Intel 8255[789] Fast Ethernet PCI Bus LAN Controller such as the +Intel EtherExpress PRO/100B. +Completely configurable, no options need be given. +If you need to force the media, specify +one of the options (no value) +.BR 10BASE-T , +.BR 10BASE-2 , +.BR 10BASE-5 , +.BR 100BASE-TX , +.BR 10BASE-TFD , +.BR 100BASE-TXFD , +.BR 100BASE-T4 , +.BR 100BASE-FX , +or +.BR 100BASE-FXFD . +.TP +.B 2114x +Cards using the Digital Equipment (now Intel) 2114x PCI Fast Ethernet Adapter Controller, +for example the Netgear FA310. +Completely configurable, no options need be given. +Media can be specified the same was as for the +.BR i82557 . +Some cards using the +.B PNIC +and +.B PNIC2 +near-clone chips may also work. +.\" .TP +.\" .B ga620 +.\" Netgear GA620 and GA620T Gigabit Ethernet cards, +.\" and other cards using the Alteon Acenic chip such as the +.\" Alteon Acenic fiber and copper cards, +.\" the DEC DEGPA-SA and the SGI Acenic. +.\" Completely configurable. +.TP +.B wavelan +Lucent Wavelan (Orinoco) IEEE 802.11b +and compatible PCMCIA cards. +Compatible cards include the Dell TrueMobile 1150 +and the Linksys Instant Wireless Network PC Card. +Port and IRQ defaults are 0x180 and 3 respectively. + +These cards take a number of unique options to aid in +identifying the card correctly on the 802.11b network. +The network may be +.I "ad hoc" +or +.I managed +(i.e. use an access point): +.EX + mode=[adhoc, managed] +.EE +and defaults to +.IR managed . +The 802.11b network to attach to +.RI ( managed +mode) +or identify as +.RI ( "ad hoc" +mode), +is specified by +.EX + essid=string +.EE +and defaults to a null string. +The card station name is given by +.EX + station=string +.EE +and defaults to +.IR "Plan 9 STA" . +The channel to use is given by +.EX + channel=number +.EE +where +.I number +lies in the range 1 to 16 inclusive; +the channel is normally negotiated automatically. + +If the card is capable of encryption, +the following options may be used: +.EX + crypt=[off, on] +.EE +and defaults to +.IR on . +.EX + key\fIN\fP=string +.EE +sets the encryption key +.I n +(where +.I n +is in the range 1 to 4 inclusive) to +.IR string ; +this will also set the transmit key to +.I n +(see below). +.EX + txkey=number +.EE +sets the transmit key to use to be +.I number +in the range 1 to 4 inclusive. +If it is desired to exclude or include unencrypted packets +.EX + clear=[off, on] +.EE +configures reception and defaults to inclusion. + +The defaults are intended to match the common case of +a managed network with encryption and a typical entry would +only require, for example +.EX + essid=left-armpit key2=fishcalledraawaru +.EE +if the port and IRQ defaults are used. +These options may be set after boot by writing to the device's +.I ctl +file using a space as the separator between option and value, e.g. +.EX + echo 'key2 fishcalledraawaru' > /net/ether0/0/ctl +.EE +.TP +.B wavelanpci +PCI ethernet adapters that use the same Wavelan +programming interface. +Currently the only tested cards are those based on the +Intersil Prism 2.5 chipset. +.TP +.B 83815 +National Semiconductor DP83815-based adapters, notably +the Netgear FA311, Netgear FA312, and various SiS built-in +controllers such as the SiS900. +On the SiS controllers, the ethernet address is not detected properly; +specify it with an +.B ea= +attribute. +.\" .TP +.\" .B 83820 +.\" National Semiconductor DP83820-based gigabit ethernet adapters, notably +.\" the D-Link DGE-500T. +.TP +.B rtl8139 +The Realtek 8139. +.TP +.B 82543gc +The Intel RS-82543GC gigabit ethernet controller, +as found on the Intel PRO/1000[FT] server adapter. +The older non-[FT] cards based on the 82542 (LSI L2A1157) +chip are not supported, although support would probably be +easy to add. +.TP +.B smc91cxx +SMC 91cXX chip-based PCMCIA adapters, notably the SMC EtherEZ card. +.TP +.B sink +A +.B /dev/null +for ethernet packets \(em the interface discards sent +packets and never receives any. +This is used to provide a test bed for +some experimental ethernet bridging software. +.SS \fLusbX=type=uhci port=xxx irq=xxx\fP +This specifies the settings for a USB UHCI controller. +Like the ethernet controllers, USB controllers are autodetected +after scanning for the ones listed in +.IR plan9.ini . +Thus, most systems will not need a +.B usbX +line. +Also like the ethernet controllers, USB autoprobing can be +disabled by specifying the line +.BR *nousbprobe= . +.SS \fLscsiX=value\fP +This defines a SCSI interface which cannot be automatically detected +by the kernel. +.PP +Known types are +.TP +.B aha1542 +The Adaptec 154x series of controllers (and clones). +Almost completely configurable, only the +.EX + port=0x300 +.EE +option need be given. +.PP +NCR/Symbios/LSI Logic 53c8xx-based adapters +and Mylex MultiMaster (Buslogic BT-*) adapters are +automatically detected and need no entries. +.PP +By default, the NCR 53c8xx driver searches for up to 32 controllers. +This can be changed by setting the variable +.BR *maxsd53c8xx . +.PP +By default the Mylex driver resets SCSI cards by using +both the hard reset and SCSI bus reset flags in the driver interface. +If a variable +.BR *noscsireset +is defined, the SCSI bus reset flag is omitted. +.SS Uarts +Plan 9 automatically configures COM1 and COM2, if found, +as +.B eia0 +(port 0x3F8, IRQ4) +and +.B eia1 +(port 0x2F8, IRQ3) +respectively. +These devices can be disabled by adding a line: +.EX + eia\fIX\fP=disabled +.EE +This is typically done in order to reuse the IRQ for +another device. +.PP +The system used to support various serial concentrators, +including the TTC 8 serial line card and various models +in the Star Gate Avanstar series of intelligent serial boards. +These are no longer supported; the much simpler +Perle PCI-Fast4, PCI-Fast8, and PCI-Fast16 controllers +have taken their places. +These latter cards are automatically detected +and need no configuration lines. +.PP +The line +.B serial=type=com +can be used to specify settings for a PCMCIA modem. +.SS \fLmouseport=value\fP +This specifies where the mouse is attached. +.I Value +can be +.TP +.B ps2 +the PS2 mouse/keyboard port. The BIOS setup procedure +should be used to configure the machine appropriately. +.TP +.B ps2intellimouse +an Intellimouse on the PS2 port. +.TP +.B 0 +for COM1 +.TP +.B 1 +for COM2 +.SS \fLmodemport=value\fP +Picks the UART line to call out on. +This is used when connecting to a file server over +an async line. +.I Value +is the number of the port. +.SS \fLpccard0=disabled\fP +Disable probing for and automatic configuration of PC card controllers. +.SS \fLpcmciaX=type=XXX irq=value\fP +If the default IRQ for the +PCMCIA +is correct, this entry can be omitted. The value of +.B type +is ignored. +.SS \fLpcmcia0=disabled\fP +Disable probing for and automatic configuration of PCMCIA controllers. +.SS \fLconsole=value params\fP +This is used to specify the console device. +The default +value is +.BR cga ; +a number +.B 0 +or +.B 1 +specifies +.I COM1 +or +.I COM2 +respectively. +A serial console is initially configured with the +.IR eia (3) +configuration string +.B b9600 +.B l8 +.B pn +.BR s1 , +specifying 9600 baud, +8 bit bytes, no parity, and one stop bit. +If +.I params +is given, it will be used to further +configure the uart. +Notice that there is no +.B = +sign in the +.I params +syntax. +For example, +.EX + console=0 b19200 po +.EE +would use COM1 at 19,200 baud +with odd parity. +.SS \fLbootfile=value\fP +This is used to direct the actions of +.IR 9load (10.8) +by naming the device and file from which to load the kernel. +.SS \fLpartition=value\fP +This defines the partition table +.IR 9load (10.8) +will examine to find disk partitioning information. +By default, a partition table in a Plan 9 partition +is consulted; if no such table is found, an old-Plan 9 +partition table on the next-to-last or last sector +of the disk is consulted. +A value of +.B new +consults only the first table, +.B old +only the second. +.SS \fL*maxmem=value\fP +This defines the maximum physical address that the system will scan when sizing memory. +By default the operating system will scan up to 768 megabytes, but setting +.B *maxmem +will limit the scan. +If the system has more than 768 megabytes, you must set +.B *maxmem +for the kernel to find it. +.B *maxmem +must be less than 1.75 gigabytes. +.SS \fL*kernelpercent=value\fP +This defines what percentage of available memory is reserved for the kernel allocation pool. +The remainder is left for user processes. The default +.I value +is +.B 30 +on CPU servers, +.B 60 +on terminals with less than 16MB of memory, +and +.B 40 +on terminals with memories of 16MB or more. +Terminals use more kernel memory because +.IR draw (3) +maintains its graphic images in kernel memory. +This deprecated option is rarely necessary in newer kernels. +.SS \fL*nomce=value\fP +If machine check exceptions are supported by the processor, +then they are enabled by default. +Setting this variable to +.B 1 +causes them to be disabled even when available. +.SS \fL*nomp=\fP +A multiprocessor machine will enable all processors by default. +Setting +.B *nomp +restricts the kernel to starting only one processor and using the +traditional interrupt controller. +.SS \fL*ncpu=value\fP +Setting +.B *ncpu +restricts the kernel to starting at most +.I value +processors. +.SS \fL*pcimaxbno=value\fP +This puts a limit on the maximum bus number probed +on a PCI bus (default 255). +For example, a +.I value +of 1 should suffice on a 'standard' motherboard with an AGP slot. +This, and +.B *pcimaxdno +below are rarely used and only on troublesome or suspect hardware. +.SS \fL*pcimaxdno=value\fP +This puts a limit on the maximum device number probed +on a PCI bus (default 31). +.SS \fL*nopcirouting=\fP +Disable pci routing during boot. May solve interrupt routing +problems on certain machines. +.\" .SS \fL*nobios=\fP +.\" what does this do? something with pci +.SS \fLioexclude=value\fP +Specifies a list of ranges I/O ports to exclude from use by drivers. +Ranges are inclusive on both ends and separated by commas. +For example: +.EX + ioexclude=0x330-0x337,0x430-0x43F +.EE +.SS \fLapm0=\fP +This enables the ``advanced power management'' interface +as described in +.IR apm (3). +....and +.....IR apm (8). +The main feature of the interface is the ability to watch +battery life. +....battery life (see +.....IR stats (8)). +It is not on by default because it causes problems on some laptops. +.SS \fLmonitor=value\fP +.SS \fLvgasize=value\fP +These are used not by the kernel but by system initialisation. +.SS \fL*dpms=value\fP +This is used to specify the screen blanking behavior of the MGA4xx +video driver. +Values are +.BR standby , +.BR suspend , +and +.BR off . +The first two specify differing levels of power saving; +the third turns the monitor off completely. +.SS \fLnvr=value\fP +This is used by a file server kernel to locate a file holding information +to configure the file system. +The file cannot live on a SCSI disk. +The default is +.B fd!0!plan9.nvr +(sic), +unless +.B bootfile +is set, in which case it is +.B plan9.nvr +on the same disk as +.BR bootfile . +The syntax is either +.BI fd! unit ! name +or +.BI hd! unit ! name +where +.I unit +is the numeric unit id. +This variant syntax is a vestige of the file server kernel's origins. +.SS \fLaudioX=value\fP +This defines a sound interface. +.PP +Known types are +.TP +.B sb16 +Sound Blaster 16. +.TP +.B ess1688 +A Sound Blaster clone. +.PP +The DMA channel may be any of 5, 6, or 7. +The defaults are +.EX + port=0x220 irq=7 dma=5 +.EE +.SS \fLfs=a.b.c.d\fP +.SS \fLauth=a.b.c.d\fP +These specify the IP address of the file and authentication server +to use when mounting a network-provided root file system. +They are used only if the addresses cannot be determined via DHCP. +.SH Multiple Configurations +.PP +A +.B plan9.ini +file may contain multiple configurations, +each within a block beginning with a line +.EX + [tag] +.EE +A special block with the tag +.B menu +gives a list of blocks from which the user may +interactively select the contents of +.BR plan9.ini . +There may also be multiple blocks with the tag +.B common +which will be included in all selections; +if any lines appear in +.B plan9.ini +before the first block, +they are treated as a +.B common +block. +.LP +Within the +.B menu +block the following configuration lines are allowed: +.SS \fLmenuitem=tag[, description] +The block identified by +.B tag +will appear in the presented menu. +The menu entry will consist of the +.B tag +unless the optional +.B description +is given. +.SS \fLmenudefault=tag[, timeout] +Identifies a default block to be given in the +menu selection prompt. +If the optional +.B timeout +is given (in seconds), +the default block will be selected if there is no user +input within the timeout period. +.SS \fLmenuconsole=value[, baud] +Selects a serial console upon which to present the menu +as no +.B console +or +.B baud +configuration information will have been processed yet +(the +.B plan9.ini +contents are still to be decided...). +.LP +In response to the menu being printed, +the user is prompted to select a menu item from the list. +If the numeric response is followed by a +.BR p , +the selected configuration is printed and the menu presented +again. +.LP +The line +.EX + menuitem=tag +.EE +is prefixed to the selected configuration as an aid to +user-level initialization scripts. +.SH EXAMPLES +.PP +A representative +.BR plan9.ini : +.IP +.EX +% cat /n/c:/plan9.ini +ether0=type=3C509 +mouseport=ps2 +modemport=1 +serial0=type=generic port=0x3E8 irq=5 +monitor=445x +vgasize=1600x1200x8 +% +.EE +.PP +Minimum CONFIG.SYS and AUTOEXEC.BAT files to use +COM2 as a console: +.IP +.EX +% cat /n/c:/config.sys +SHELL=COMMAND.COM COM2 /P +% cat /n/c:/autoexec.bat +@ECHO OFF +PROMPT $p$g +PATH C:\eDOS;C:\eBIN +mode com2:96,n,8,1,p +SET TEMP=C:\eTMP +% +.EE +.PP +Simple +.B plan9.ini +with multiple configurations: +.IP +.EX +[menu] +menuitem=vga, Plan 9 with VGA +menuitem=novga, Plan 9 no automatic VGA +menudefault=vga + +[vga] +monitor=multisync135 +vgasize=1024x768x8 + +[novga] + +[common] +ether0=type=i82557 +audio0=type=sb16 port=0x220 irq=5 dma=1 +.EE +.PP +With this, the following menu will be presented on boot: +.IP +.EX +Plan 9 Startup Menu: +==================== + 1. Plan 9 with VGA + 2. Plan 9 no automatic VGA +Selection[default==1]: +.EE +.PP +Selecting item 1 generates the following +.B plan9.ini +to be used by the remainder of the bootstrap process: +.IP +.EX +menuitem=vga +monitor=multisync135 +vgasize=1024x768x8 +ether0=type=i82557 +audio0=type=sb16 port=0x220 irq=5 dma=1 +.EE +.PP +and selecting item 2: +.IP +.EX +menuitem=novga +ether0=type=i82557 +audio0=type=sb16 port=0x220 irq=5 dma=1 +.EE +.SH "SEE ALSO" +.IR root (3), +.IR 9load (10.8) +.SH BUGS +Being able to set the console device to other than a +display is marginally useful on file servers; MS-DOS +and the programs which run under it are so tightly bound +to the display that it is necessary to have a display if any +setup or reconfiguration programs need to be run. +Also, the delay before any messages appear at boot time +is disconcerting, as any error messages from the BIOS +are lost. +.PP +This idea is at best an interesting experiment that needs another iteration. diff --git a/man/10/print b/man/10/print new file mode 100644 index 00000000..aadbbad8 --- /dev/null +++ b/man/10/print @@ -0,0 +1,402 @@ +.TH PRINT 10.2 +.SH NAME +print, fprint, sprint, snprint, seprint, smprint, vfprint, vsnprint, vseprint, vsmprint \- print formatted output +.SH SYNOPSIS +.ta \w'\fLchar* 'u +.B +int print(char *format, ...) +.PP +.B +int fprint(int fd, char *format, ...) +.PP +.B +int sprint(char *s, char *format, ...) +.PP +.B +int snprint(char *s, int len, char *format, ...) +.PP +.B +char* seprint(char *s, char *e, char *format, ...) +.PP +.B +char* smprint(char *format, ...) +.PP +.B +int vfprint(int fd, char *format, va_list v) +.PP +.B +int vsnprint(char *s, int len, char *format, va_list v) +.PP +.B +char* vseprint(char *s, char *e, char *format, va_list v) +.PP +.B +char* vsmprint(char *format, va_list v) +.SH DESCRIPTION +.I Print +writes text to the standard output. +.I Fprint +writes to the named output +file descriptor; +a buffered form +is described in +.IR bio (2). +.I Sprint +places text +followed by the NUL character +.RB ( \e0 ) +in consecutive bytes starting at +.IR s ; +it is the user's responsibility to ensure that +enough storage is available. +Each function returns the number of bytes +transmitted (not including the NUL +in the case of +.IR sprint ), +or +a negative value if an output error was encountered. +.PP +.I Snprint +is like +.IR sprint , +but will not place more than +.I len +bytes in +.IR s . +Its result is always NUL-terminated and holds the maximal +number of complete UTF-8 characters that can fit. +.I Seprint +is like +.IR snprint , +except that the end is indicated by a pointer +.I e +rather than a count and the return value points to the terminating NUL of the +resulting string. +.I Smprint +is like +.IR sprint , +except that it prints into and returns a string of the required length, which is +allocated by +.IR malloc (10.2). +.PP +Finally, the routines +.IR vfprint , +.IR vsnprint , +.I vseprint +and +.I vsmprint +are like their +.BR v-less +relatives except they take as arguments a +.B va_list +parameter, so they can be called within a variadic function. +The Example section shows a representative usage. +.PP +Each of these functions +converts, formats, and prints its +trailing arguments +under control of a +.IR format +string. +The +format +contains two types of objects: +plain characters, which are simply copied to the +output stream, +and conversion specifications, +each of which results in fetching of +zero or more +arguments. +The results are undefined if there are arguments of the +wrong type or too few +arguments for the format. +If the format is exhausted while +arguments remain, the excess +is ignored. +.PP +Each conversion specification has the following format: +.IP +.B "% [flags] verb +.PP +The verb is a single character and each flag is a single character or a +(decimal) numeric string. +Up to two numeric strings may be used; +the first is called +.IR width , +the second +.IR precision . +A period can be used to separate them, and if the period is +present then +.I width +and +.I precision +are taken to be zero if missing, otherwise they are `omitted'. +Either or both of the numbers may be replaced with the character +.BR * , +meaning that the actual number will be obtained from the argument list +as an integer. +The flags and numbers are arguments to +the +.I verb +described below. +.PP +The numeric verbs +.BR d , +.BR o , +.BR b , +.BR x , +and +.B X +format their arguments in decimal, +octal, binary, hexadecimal, and upper case hexadecimal. +Each interprets the flags +.BR 0 , +.BR h , +.BR hh , +.BR l , +.BR u , +.BR + , +.BR - , +.BR , , +and +.B # +to mean pad with zeros, +short, byte, long, unsigned, always print a sign, left justified, commas every three digits, +and alternate format. +Also, a space character in the flag +position is like +.BR + , +but prints a space instead of a plus sign for non-negative values. +If neither +short nor long is specified, +then the argument is an +.BR int . +If unsigned is specified, +then the argument is interpreted as a +positive number and no sign is output. +If two +.B l +flags are given, +then the argument is interpreted as a +.B vlong +(usually an 8-byte, sometimes a 4-byte integer). +If +.I precision +is not omitted, the number is padded on the left with zeros +until at least +.I precision +digits appear. +Then, if alternate format is specified, +for +.B o +conversion, the number is preceded by a +.B 0 +if it doesn't already begin with one; +for +.B x +conversion, the number is preceded by +.BR 0x ; +for +.B X +conversion, the number is preceded by +.BR 0X . +Finally, if +.I width +is not omitted, the number is padded on the left (or right, if +left justification is specified) with enough blanks to +make the field at least +.I width +characters long. +.PP +The floating point verbs +.BR f , +.BR e , +.BR E , +.BR g , +and +.B G +take a +.B double +argument. +Each interprets the flags +.BR + , +.BR - , +and +.B # +to mean +always print a sign, +left justified, +and +alternate format. +.I Width +is the minimum field width and, +if the converted value takes up less than +.I width +characters, it is padded on the left (or right, if `left justified') +with spaces. +.I Precision +is the number of digits that are converted after the decimal place for +.BR e , +.BR E , +and +.B f +conversions, +and +.I precision +is the maximum number of significant digits for +.B g +and +.B G +conversions. +The +.B f +verb produces output of the form +.RB [ - ] digits [ .digits\fR]. +.B E +conversion appends an exponent +.BR E [ - ] digits , +and +.B e +conversion appends an exponent +.BR e [ - ] digits . +The +.B g +verb will output the argument in either +.B e +or +.B f +with the goal of producing the smallest output. +Also, trailing zeros are omitted from the fraction part of +the output, and a trailing decimal point appears only if it is followed +by a digit. +The +.B G +verb is similar, but uses +.B E +format instead of +.BR e . +When alternate format is specified, the result will always contain a decimal point, +and for +.B g +and +.B G +conversions, trailing zeros are not removed. +.PP +The +.B s +verb copies a string +(pointer to +.BR char ) +to the output. +The number of characters copied +.RI ( n ) +is the minimum +of the size of the string and +.IR precision . +These +.I n +characters are justified within a field of +.I width +characters as described above. +The +.B S +verb is similar, but it interprets its pointer as an array +of runes (see +.IR utf (6)); +the runes are converted to +.SM UTF +before output. +.PP +The +.B c +verb copies a single +.B char +(promoted to +.BR int ) +justified within a field of +.I width +characters as described above. +The +.B C +verb is similar, but works on runes. +.PP +The +.B p +verb formats a pointer value. +At the moment, it is a synonym for +.BR ux , +but that will change once pointers and integers are different sizes. +.PP +The +.B r +verb takes no arguments; it copies the error string returned by a call to +the emulated environment's +`system calls'. +It must not be used within the kernels. +....PP +...Custom verbs may be installed using +....IR fmtinstall (2). +.SH EXAMPLE +This function prints an error message with a variable +number of arguments and then quits. +.IP +.EX +.ta 6n +6n +6n +void fatal(char *msg, ...) +{ + char buf[1024], *out; + va_list arg; + + out = vseprint(buf, buf+sizeof(buf), "Fatal error: "); + va_start(arg, msg); + out = vseprint(out, buf+sizeof(buf), msg, arg); + va_end(arg); + write(2, buf, out-buf); + exits("fatal error"); +} +.EE +.SH SOURCE +.B /lib9/fmt* +.br +.B /libkern/fmt* +.SH SEE ALSO +.IR utf (6) +.SH DIAGNOSTICS +Routines that write to a file descriptor or call +.IR malloc +set +.IR errstr . +.SH BUGS +The formatting is close to that specified for ANSI +.IR fprintf (2); +the main difference is that +.B b +is not in ANSI and +.B u +is a flag here instead of a verb. +Also, and distinctly not a bug, +.I print +and friends generate +.SM UTF +rather than +.SM ASCII. +.PP +There is no +.BR runeprint , +.BR runefprint , +etc. because runes are byte-order dependent and should not be written directly to a file; use the +UTF output of +.I print +or +.I fprint +instead. +Also, +.I sprint +is deprecated for safety reasons; use +.IR snprint , +.IR seprint , +or +.I smprint +instead. +Safety also precludes the existence of +.IR runesprint . diff --git a/man/10/qio b/man/10/qio new file mode 100644 index 00000000..c0a88869 --- /dev/null +++ b/man/10/qio @@ -0,0 +1,482 @@ +.TH QIO 10.2 +.SH NAME +qio: qget, qdiscard, qconsume, qpass, qproduce, qcopy, qopen, qbread, qread, qbwrite, qwrite, qiwrite, qfree, qclose, qhangup, qreopen, qlen, qwindow, qcanread, qsetlimit, qnoblock, qflush, qfull \- queued I/O for devices +.SH SYNOPSIS +.ta \w'\fLQueue* 'u +.B +Queue* qopen(int limit,int msg, void (*kick)(void*),void *arg) +.PP +.B +void qhangup(Queue *q, char *reason) +.PP +.B +void qclose(Queue *q) +.PP +.B +void qreopen(Queue *q) +.PP +.B +void qfree(Queue *q) +.PP +.B +long qbwrite(Queue *q, Block *b) +.PP +.B +long qwrite(Queue *q, void *buf, int len) +.PP +.B +int qpass(Queue *q, Block *b) +.PP +.B +int qpassnolim(Queue *q, Block *b) +.PP +.B +int qproduce(Queue *q, void *buf, int len) +.PP +.B +int qiwrite(Queue *q, void *buf, int len) +.PP +.B +Block* qbread(Queue *q, int len) +.PP +.B +long qread(Queue *q, void *buf, int len) +.PP +.B +Block* qcopy(Queue *q, int len, ulong offset) +.PP +.B +Block* qget(Queue *q) +.PP +.B +int qconsume(Queue *q, void *buf, int len) +.PP +.B +int qdiscard(Queue *q, int len) +.PP +.B +void qflush(Queue *q) +.PP +.B +int qlen(Queue *q) +.PP +.B +int qwindow(Queue *q) +.PP +.B +int qcanread(Queue *q) +.PP +.B +void qsetlimit(Queue *q, int limit) +.PP +.B +void qnoblock(Queue *q, int nonblock) +.PP +.B +int qfull(Queue *q); +.SH DESCRIPTION +This suite of functions provides serial data buffering for device drivers. +Data is stored in a +.B Queue +structure as a sequence of variable-sized +.BR Blocks ; +see +.IR allocb (10.2). +.PP +.I Qopen +initialises and returns a pointer to a new +.BR Queue , +configuring it according to the following parameters: +.TF limit +.PD +.TP +.I limit +Set the queue limit (high water mark) in bytes. +.TP +.I msg +Set message mode if non-zero; otherwise, stream mode (discussed below). +.TP +.I kick +Optional flow-control function called by +.I qbread +to restart writers, and by +.I qbwrite +(also +.IR qiwrite ) +to restart readers. +.TP +.I arg +Argument to pass to +.I kick +.PP +.I Qhangup +marks +.I q +as `hung up' +for the given +.IR reason +.RB ( Ehungup +by default). +Subsequent attempts to write to the queue raise an +.IR error (10.2). +.I Qhangup +does not flush the queue: subsequent read requests are +handled normally until the queue empties. +.I Qread +and the other functions then return their conventional values +for a hungup stream: 0, -1 or a null pointer, depending on the function. +After a few such attempts by any process, an +.IR error (10.2) +is raised (typically +.BR Ehungup ) +on each subsequent read. +.PP +If queued data is left unread, and not flushed by +.I qflush +or +.IR qclose , +the data will again be readable following a subsequent +.IR qreopen . +.PP +.I Qclose +also marks a given +.I q +as `hung up', +but removes and frees any queued data Blocks. +.I Qclose +ignores calls when +.I q +is null. +.PP +.I Qreopen +makes a closed or hung up queue available for use again. +The queue's data limit is reset to the +.I limit +value given when the queue was first created by +.IR qopen , +cancelling the effect of any previous call to +.IR qsetlimit . +.PP +.I Qfree +closes +.I q +with +.I qclose +and frees it. +The caller must ensure that no references remain; +these functions do not keep a reference count. +.SS "Flow control" +The queue I/O routines provide a flow control mechanism to coordinate producers and consumers. +Each queue has a limit on the number of bytes queued, its `high water mark', +initially set when the queue is created, but adjustable by +.IR qsetlimit , +below. +The low water mark is not set explicitly: +it is always half the current queue limit. +When the high water mark is exceeded, writes normally block until a reader drains the +queue below its low water mark; the writer is then allowed to proceed. +Conversely, readers normally block when the queue is empty, until a writer +arrives with data, or the queue is closed. +.PP +A queue can be given a +.I kick +function when the queue is created by +.IR qopen . +The function is invoked by +.IR qread +and +.IR qbread , +to prod an output routine when the queue falls below the low-water mark, and by +.IR qwrite , +.IR qbwrite +and +.IR qiwrite , +to notify a reader that a queue is no longer empty. +Because +.I kick +is called from the reading (or writing) process, or an interrupt handler, it +must not block. +.PP +Interrupt handlers must not +.IR sleep (10.2), +and are therefore restricted to using only the non-blocking functions described below. +.SS "Stream mode and message mode" +In stream mode, +no read will return more than one +block +of data, but +a read can split a block that contains more data than requested, leaving the remainder +in a new block at the front of the Queue. +Writes of more than the maximum +.B Block +size (currently 128k bytes) +are split into as many Blocks as required, each written separately to the queue, +in order, but with possible flow-control between them. +The queue is locked meanwhile, however, so that data from other writers is not intermingled. +.PP +In message mode, by contrast, a read will return at most +one block's worth of data, but the remainder of a partially-read block will be discarded, +not returned to the queue. +If a write count exceeds the maximum +.B Block +size, the excess data is discarded: +at most a single block can be queued. +.PP +The mode of the queue should be taken into account in the descriptions below +of the following functions: +.IR qwrite , +.IR qiwrite , +.IR qbread +and +.IR qconsume . +No other functions are aware of the distinction. +.SS "Write operations (flow controlled)" +.I Qwrite +copies +.I len +bytes of data from +.I buf +into one or more +.B Blocks +which it places on the +.IR q . +.I Qwrite +always returns +.IR len . +It can implement message mode. +.PP +.I Qbwrite +places the single Block +.I b +on the tail of +.IR q , +waking any sleeping reader. +If the queue is full, the +writing process blocks until a reader +has reduced the queued data to +the low-water mark; +if the queue is non-blocking +(see +.I qnoblock +below), +the data is discarded without notice. +.I Qbwrite +normally returns +.IR len , +but raises an +.IR error (10.2) +if the queue is closed (see +.I qhangup +and +.IR qclose ). +The block +.I b +is always freed. +Note that +.I b +can be empty (zero-length), to punctuate the data in a queue. +.I Qbwrite +cannot handle a list of Blocks; +.I qpass +must be used instead. +.SS Non-blocking writes +.PP +.I Qproduce +returns -1immediately if +.I q +is full. +Otherwise, it queues +.I len +bytes of data from +.I buf +in a single +.B Block +on +.I q +and returns the number of bytes written. +.PP +.I Qpass +attempts to place the list of Blocks headed by +.I b +on +.IR q , +returning the number of bytes written if successful. +If +.I q +was full, it +frees the Block list +.I b +and returns -1. +.PP +.I Qpassnolim +puts the Block list +.I b +on +.I q +regardless of flow control; it returns the number of bytes in the list +.IR b . +.PP +.I Qiwrite +is a variant of +.I qwrite +used exclusively by the kernel print function, +to allow printing by interrupt handlers; +.I qiwrite +could be used with care by other routines, but +.IR qproduce +is preferable. +.I Qiwrite +writes the +.I len +bytes of data at +.I buf +into the +.I q +without regard to flow control; +the writer never blocks. +The queue is assumed to be open. +.I Qiwrite +always returns +.IR len . +It can implement message mode. +.SS "Read operations (flow controlled)" +.I Qbread +blocks until data arrives on +.IR q , +then +returns the first +.BR Block ; +it limits the data returned +to +.I len +bytes (in the manner depending on the mode of +.IR q ). +It returns a null pointer if the queue has hung up. +.PP +.I Qread +reads a Block of up to +.I len +bytes from +.I q +using +.IR qbread , +and copies the data in the Block into +.IR buf , +then frees the Block and returns +the number of bytes read. +.I Qread +returns 0 on end of file or error (hangup). +It can implement message mode. +.PP +.I Qcopy +returns a Block with a copy of data from the queue (the data remains on the queue). +The copy begins +.I offset +bytes into the queue's data and proceeds until +.I len +bytes have been copied or no more data remains. +The Block's read and write pointers delimit the data copied into it. +.I Qcopy +can be used by a reliable transport protocol to copy a packet for transmission, +leaving the data queued for possible retransmission, if unacknowledged. +.SS Non-blocking reads +.PP +.I Qconsume +returns -1 immediately if +.I q +is empty. +Otherwise, it +copies up to +.I len +bytes from the first +.B Block +on the queue into +.IR buf , +returning the number of bytes copied. +It can implement message mode. +.PP +.I Qget +returns a null pointer immediately if +.I q +is empty or closed. +Otherwise, it +returns the first +.B Block +on the queue. +.SS "Discard and flush" +.I Qdiscard +removes the first +.I len +data bytes from +.IR q ; +it returns the number of bytes actually discarded, in case +the queue is shorter than +.IR len . +If the queue drains below the low-water mark, +.I qdiscard +wakes any sleeping writers. +Since it does not block, +.I qdiscard +can safely be called from interrupt handlers. +It is useful in transport protocol drivers to remove data from the queue +once acknowledged. +.PP +.I Qflush +discards all data waiting on +.IR q , +waking any waiting writer. +.SS "Queue status" +The following functions return a Queue's status. +Note that between a call to one of these functions and another operation, +the state can change if a driver allows concurrent access by +either another process or an interrupt handler. +.PP +.I Qlen +returns the number of bytes queued on +.IR q . +.PP +.I Qwindow +returns the number of bytes that can be written before reaching the queue's high-water mark. +A return of 0 means that a write operation will certainly block; +a non-zero return gives no guarantees (see +.IR qfull , +below). +.PP +.I Qcanread +returns 1 if any data queued is queued. A subsequent read operation will not block. +.PP +.I Qfull +returns non-zero if +.I q +is flow-controlled and a write would block or a non-blocking write would return an error. +(Note that the implementation allows +.I qwindow +to return non-zero yet +.I qfull +to return true.) +.SS "Queue control" +.I Qsetlimit +sets the high water mark for the queue to +.IR limit . +Note that +.I qopen +saves the initial queue limit. +If the queue is closed and reopened (by +.IR qreopen ) +that initial limit is restored. +.PP +.I Qnoblock +sets or resets non-blocking mode. +If +.I nonblock +is non-zero, +the queue becomes non-blocking, and +data written to a queue beyond its high water mark is discarded +by calls that would otherwise block. +.SH SOURCE +.B /os/port/qio.c +.br +.B /emu/port/qio.c +.SH SEE ALSO +.IR allocb (10.2), +.IR ref (10.2) diff --git a/man/10/qlock b/man/10/qlock new file mode 100644 index 00000000..155b4dd9 --- /dev/null +++ b/man/10/qlock @@ -0,0 +1,106 @@ +.TH QLOCK 10.2 +.SH NAME +qlock, qunlock, canqlock, rlock, runlock, wlock, wunlock \- serial synchronisation +.SH SYNOPSIS +.ta \w'\fLvoid 'u +.B +void qlock(QLock *l) +.PP +.B +void qunlock(QLock *l) +.PP +.B +int canqlock(QLock *l) +.PP +.B +void rlock(RWlock *l) +.PP +.B +void runlock(RWlock *l) +.PP +.B +int canrlock(RWlock *l) +.PP +.B +void wlock(RWlock *l) +.PP +.B +void wunlock(RWlock *l) +.SH DESCRIPTION +The primitive locking functions described in +.IR lock (10.2) +guarantee mutual exclusion, but they implement spin locks, +and should not be used if the process might +.IR sleep (10.2) +within a critical section. +The following functions serialise access to a resource by forming an orderly +queue of processes. +.PP +Each resource to be controlled is given an associated +.B QLock +structure; it is usually most straightforward to put the +.B QLock +in the structure that represents the resource. +It must be initialised to zero before use +(as guaranteed for global variables and for structures allocated by +.IR malloc ). +.PP +On return from +.IR qlock , +the process has acquired the lock +.IR l , +and can assume exclusive access to the associated resource. +If the lock is not immediately available, the requesting process is placed on a +FIFO queue of processes that have requested the lock. +Processes on this list are blocked in the +.L Queueing +state. +.PP +.I Qunlock +unlocks +.I l +and schedules the first process queued for it (if any). +.PP +.I Canqlock +is a non-blocking form of +.IR qlock . +It tries to obtain the lock +.I l +and returns true if successful, and 0 otherwise; +it always returns immediately. +.PP +.B RWlock +is a form of lock for resources that have distinct readers and writers. +It allows concurrent readers but gives each writer exclusive access. +A caller announces its read or write intentions by choice of lock (and unlock) function; +the system assumes the caller will not modify a structure accessed under read lock. +.PP +.I Rlock +acquires +.I l +for reading. +The holder can read but agrees not to modify the resource. +There may be several concurrent readers. +.I Canrlock +is non-blocking: it returns non-zero if it successfully acquired the lock immediately, +and 0 if the resource was unavailable. +.PP +.I Runlock +returns a read lock; +the last reader out enables the first writer waiting (if any). +.PP +.I Wlock +acquires a write lock. +The holder of such a lock may assume exclusive access to the resource, +and is allowed to modify it. +.PP +.I Wunlock +returns a write lock. +The next pending process, whether reader or writer, is scheduled. +.SH SOURCE +.B /os/port/qlock.c +.br +.B /os/emu/port/lock.c +.SH SEE ALSO +.IR lock (10.2), +.IR splhi (10.2) diff --git a/man/10/readnum b/man/10/readnum new file mode 100644 index 00000000..64103cac --- /dev/null +++ b/man/10/readnum @@ -0,0 +1,60 @@ +.TH READNUM 10.2 +.SH NAME +readnum, readstr \- return values from read from device +.SH SYNOPSIS +.ta \w'\fLchar* 'u +.B +int readstr(ulong off, char *buf, ulong n, char *str) +.PP +.B +int readnum(ulong off, char *buf, ulong n, ulong val, int size) +.SH DESCRIPTION +.I Readstr +and +.I readnum +simplify the return of strings and numbers from device +.I read +routines, +because they deal with any buffering and boundary cases. +Several parameters to the read call are often handed on directly +to these functions: +the file offset, as +.IR off ; +the address of the user's buffer, as +.IR buf ; +and the number of bytes requested, as +.IR n . +Both functions return the number of bytes they have stored in +.IR buf , +and which can often be returned directly from the device read routine. +.PP +.I Readstr +satisfies a read by copying data into +.I buf +from the NUL-terminated string in +.IR str . +The data transferred is selected and limited by +.IR off , +.I n +and the length of +.IR str . +.PP +.I Readnum +converts the unsigned integer +.I val +to a decimal representation in +.IR buf . +The value is right-justified in a field of +.IR size "-1" +places and is followed by a blank. +.I Size +can be the global constant +.L NUMSIZE +for 32-bit integers; +the largest +.I size +allowed is 64 bytes. +.SH SOURCE +.B /os/port/devcons.c +.br +.B /emu/port/devcon.c diff --git a/man/10/ref b/man/10/ref new file mode 100644 index 00000000..9a363f8c --- /dev/null +++ b/man/10/ref @@ -0,0 +1,61 @@ +.TH REF 10.2 +.SH NAME +Ref, incref, decref \- reference counts +.SH SYNOPSIS +.ta \w'\fLchar* 'u +.PP +.B +int incref(Ref *r) +.PP +.B +int decref(Ref *r) +.SH DESCRIPTION +A +.B Ref +structure holds a reference count for a data structure: +.IP +.EX +typedef struct +struct Ref +{ + Lock; + long ref; +} Ref; +.EE +.PP +The reference count proper is found in +.BR ref ; +the +.B Lock +prevents concurrent updates +(see +.IR lock (10.2)). +.PP +.I Incref +atomically increments the reference count +.IR r , +and returns the new count. +.PP +.I Decref +atomically decrements the reference count +.IR r , +and returns the new count. +.SH EXAMPLES +Release a structure containing a +.B Ref +on last use. +.IP +.EX +if(decref(s) == 0) + free(s); +.EE +.SH DIAGNOSTICS +.I Decref +will +.IR panic (10.2) +if the count goes negative, +revealing a reference counting bug. +.SH SOURCE +.B /os/port/chan.c +.br +.B /emu/port/chan.c diff --git a/man/10/rune b/man/10/rune new file mode 100644 index 00000000..8c3b6324 --- /dev/null +++ b/man/10/rune @@ -0,0 +1,150 @@ +.TH RUNE 10.2 +.SH NAME +runetochar, chartorune, runelen, fullrune, utflen, utfrune, utfrrune, utfutf \- rune/UTF conversion +.SH SYNOPSIS +.ta \w'\fLchar*xx'u +.PP +.B +int runetochar(char *s, Rune *r) +.PP +.B +int chartorune(Rune *r, char *s) +.PP +.B +int runelen(long r) +.PP +.B +int fullrune(char *s, int n) +.PP +.B +int utflen(char *s) +.PP +.B +char* utfrune(char *s, long c) +.PP +.B +char* utfrrune(char *s, long c) +.PP +.B +char* utfutf(char *s1, char *s2) +.SH DESCRIPTION +These routines convert to and from a +.SM UTF +byte stream and runes. +.PP +.I Runetochar +copies one rune at +.I r +to at most +.B UTFmax +bytes starting at +.I s +and returns the number of bytes copied. +.BR UTFmax , +defined as +.B 3 +in +.BR <libc.h> , +is the maximum number of bytes required to represent a rune. +.PP +.I Chartorune +copies at most +.B UTFmax +bytes starting at +.I s +to one rune at +.I r +and returns the number of bytes copied. +If the input is not exactly in +.SM UTF +format, +.I chartorune +will convert to 0x80 and return 1. +.PP +.I Runelen +returns the number of bytes +required to convert +.I r +into +.SM UTF. +.PP +.I Fullrune +returns 1 if the string +.I s +of length +.I n +is long enough to be decoded by +.I chartorune +and 0 otherwise. +This does not guarantee that the string +contains a legal +.SM UTF +encoding. +This routine is used by programs that +obtain input a byte at +a time and need to know when a full rune +has arrived. +.PP +The following routines are analogous to the +corresponding string routines with +.B utf +substituted for +.B str +and +.B rune +substituted for +.BR chr . +.PP +.I Utflen +returns the number of runes that +are represented by the +.SM UTF +string +.IR s . +.PP +.I Utfrune +.RI ( utfrrune ) +returns a pointer to the first (last) +occurrence of rune +.I c +in the +.SM UTF +string +.IR s , +or 0 if +.I c +does not occur in the string. +The NUL byte terminating a string is considered to +be part of the string +.IR s . +.PP +.I Utfutf +returns a pointer to the first occurrence of +the +.SM UTF +string +.I s2 +as a +.SM UTF +substring of +.IR s1 , +or 0 if there is none. +If +.I s2 +is the null string, +.I utfutf +returns +.IR s1 . +.SH SOURCE +.B /libkern/rune.c +.br +.B /libkern/runestrlen.c +.br +.B /libkern/utflen.c +.br +.B /libkern/utfrrune.c +.br +.B /libkern/utfrune.c +.SH SEE ALSO +.IR convcs (2), +.IR utf (6) diff --git a/man/10/seconds b/man/10/seconds new file mode 100644 index 00000000..aeec3268 --- /dev/null +++ b/man/10/seconds @@ -0,0 +1,64 @@ +.TH SECONDS 10.2 +.SH NAME +seconds, ticks, HZ, MS2HZ, MS2TK, TK2MS, TK2SEC \- kernel times and time conversions +.SH SYNOPSIS +.ta \w'\fL#define 'u +.B +long seconds(void) +.PP +.B +ulong ticks(void) +.PP +.EX +#define HZ ... +#define MS2HZ(t) ... +#define TK2SEC(t) ... +#define TK2MS(t) ... +#define MS2TK(m) ... +.EE +.SH DESCRIPTION +.I Seconds +returns the system's idea of the current time as the number of seconds +since the start of the epoch +(00:00:00 GMT, January 1, 1970). +.PP +.I Ticks +returns the number of system-dependent clock ticks since system boot. +.PP +The system clock frequency is platform-dependent. +Several symbolic constants and macro functions are defined by +the file +.B mem.h +to convert between different time units: +.TF TK2SEC(t) +.PD +.TP +.B HZ +The number of clock ticks per second. +.TP +.B MS2HZ +Milliseconds per clock tick. +.TP +.BI TK2SEC( t ) +Convert +.I t +clock ticks to seconds and return the result (truncating not rounding). +.TP +.BI TK2MS( t ) +Convert +.I t +clock ticks to milliseconds and return the result. +.TP +.BI MS2TK( m ) +Convert +.I m +milliseconds to clock ticks and return the result (truncating). +.PP +The functions are often used to calculate delays for timing functions, +for instance: +.IP +.EX +if(atactlrwait(dp->cp, DHmagic, 0, MS2TK(100))){ + ... +} +.EE diff --git a/man/10/sleep b/man/10/sleep new file mode 100644 index 00000000..d823d99a --- /dev/null +++ b/man/10/sleep @@ -0,0 +1,125 @@ +.TH SLEEP 10.2 +.SH NAME +sleep, wakeup, tsleep, return0 \- process synchronisation +.SH SYNOPSIS +.ta \w'\fLvoid 'u +.B +void sleep(Rendez *r, int (*f)(void*), void *arg) +.PP +.B +void wakeup(Rendez *r) +.PP +.B +void tsleep(Rendez *r, int (*f)(void*), void *arg, int ms) +.PP +.B +int return0(void *arg) +.PP +.SH DESCRIPTION +A process running in the kernel can use these functions to +synchronise with an interrupt handler or another kernel process. +In particular, they are used by device drivers to wait for an event to be signalled on +receipt of an interrupt. +(In practice, they are most often used indirectly, through +.IR qio (10.2) +for instance.) +.PP +The caller of +.I sleep +and a caller of +.I wakeup +share a +.B Rendez +structure, to provide a rendezvous point between them +to synchronise on an event. +.I Sleep +uses a condition function +.I f +that returns true if the event has occurred. +.PP +.I Sleep +evaluates +.IB f ( arg ). +If true, the event has happened and +.I sleep +returns immediately. +Otherwise, +.I sleep +blocks on the event variable +.IR r , +awaiting +.IR wakeup . +.PP +.I Wakeup +is called by either a process or an interrupt handler to wake any process +sleeping at +.IR r , +signifying that the corresponding condition is true (the event has occurred). +It has no effect if there is no sleeping process. +.PP +.I Tsleep +is similar to +.IR sleep , +except that if the condition +.IB f ( arg ) +is false and the caller does sleep, +and nothing else wakes it within +.I ms +millliseconds, +the system will wake it. +.IR Tsleep 's +caller must check its environment to decide whether timeout or the event +occurred. +The timing provided by +.I tsleep +is imprecise, but adequate in practice for the normal use of protecting against +lost interrupts and otherwise unresponsive devices or software. +.PP +.I Return0 +ignores its arguments and returns zero. It is commonly used as +the predicate +.I f +in a call to +.I tsleep +to obtain a time delay, using a +.B Rendez +variable +.B sleep +in the +.B Proc +structure, for example: +.IP +.B tsleep(&up->sleep, return0, nil, 10); +.PP +Both +.I sleep +and +.I tsleep +can be interrupted by +.IR swiproc +(see +.IR kproc (10.2)), +causing a non-local goto through a call to +.IR error (10.2). +.SH DIAGNOSTICS +There can be at most one process waiting on a +.BR Rendez , +and if two processes collide, the system will +.IR panic (10.2) +.RB (`` "double sleep" ''). +Access to a +.B Rendez +must therefore be serialised by some other mechanism, usually +.IR qlock (10.2). +.SH SOURCE +.B /os/port/proc.c +.br +.B /emu/port/proc.c +.SH SEE ALSO +.IR lock (10.2), +.IR qlock (10.2), +.IR delay (10.2) +.br +``Process Sleep and Wakeup on a Shared-memory Multiprocessor'', +in +.I "Plan 9 Programmer's Manual: Volume 2". diff --git a/man/10/splhi b/man/10/splhi new file mode 100644 index 00000000..9ac9cb3f --- /dev/null +++ b/man/10/splhi @@ -0,0 +1,55 @@ +.TH SPLHI 10.2 +.SH NAME +splhi, spllo, splx, islo \- enable and disable interrupts +.SH SYNOPSIS +.ta \w'\fLvoid 'u +.B +int spllo(void) +.PP +.B +int splhi(void) +.PP +.B +void splx(int x) +.PP +.B +int islo(void) +.SH DESCRIPTION +These primitives enable and disable maskable interrupts on the current +processor. +Generally, device drivers should use +.I ilock +(see +.IR lock (10.2)), +.IR sleep (10.2), +or the functions in +.IR qio (10.2) +to control interaction between processes and interrupt handlers. +Those routines (but not these) provide correct synchronisation on multiprocessors. +.PP +.I Spllo +enables interrupts and returns a flag representing the previous interrupt enable state. +It must not normally be called from interrupt level. +.PP +.I Splhi +disables all maskable interrupts and returns the previous interrupt enable state. +The period during which interrupts are disabled had best be short, +or real-time applications will suffer. +.PP +.I Splx +restores the interrupt enable state +state to +.IR x , +which must be a value returned +by a previous call to +.I splhi +or +.IR spllo . +.PP +.I Islo +returns true (non-zero) if interrupts are currently enabled, and 0 otherwise. +.SH SEE ALSO +.IR lock (10.2), +.IR qio (10.2), +.IR sleep (10.2), +.IR intrenable (10.2) diff --git a/man/10/srclist b/man/10/srclist new file mode 100644 index 00000000..199711b0 --- /dev/null +++ b/man/10/srclist @@ -0,0 +1,41 @@ +.TH SRCLIST 10.1 +.SH NAME +srclist \- list source files used to build an executable +.SH SYNOPSIS +.B srclist +[ +.B -ce +] [ +.BI -r " rootdir" +\&... +] +.I executable +.SH DESCRIPTION +.I Srclist +prints on standard output, one per line, the names of source files used to build +the given +.IR executable , +which should be +in +.IR a.out (10.6) +format. +.PP +By default, all source file names are listed. +The +.B -c +option restricts the output to names ending +.RB ` .c '. +The +.B -e +option restricts the output to file names that currently exist. +Each +.B -r +option adds a new root directory +.I rootdir +to an internal list. +Only the names of source files that appear below one of the root directories +will be printed. +.SH SOURCE +.B /utils/srclist +.SH SEE ALSO +.IR inm (10.1) diff --git a/man/10/strcat b/man/10/strcat new file mode 100644 index 00000000..6a1f9fd8 --- /dev/null +++ b/man/10/strcat @@ -0,0 +1,170 @@ +.TH STRCAT 10.2 +.SH NAME +strcat, strcmp, strncmp, strcpy, strncpy, strlen, strchr, strrchr, strdup, strstr \- string operations +.SH SYNOPSIS +.ta \w'\fLchar* \fP'u +.B +char* strcat(char *s1, char *s2) +.PP +.B +int strcmp(char *s1, char *s2) +.PP +.B +int strncmp(char *s1, char *s2, long n) +.PP +.B +char* strcpy(char *s1, char *s2) +.PP +.B +char* strncpy(char *s1, char *s2, long n) +.PP +.B +long strlen(char *s) +.PP +.B +char* strchr(char *s, char c) +.PP +.B +char* strrchr(char *s, char c) +.PP +.B +char* strdup(char *s) +.PP +.B +char* strstr(char *s1, char *s2) +.SH DESCRIPTION +The arguments +.I s1, s2 +and +.I s +point to null-terminated strings. +The functions +.IR strcat , +.IR strcpy , +and +.I strncpy +all alter +.IR s1 . +These functions do not check for overflow of +the array pointed to by +.IR s1 . +.PP +.I Strcat +appends a copy of string +.I s2 +to the end of string +.IR s1 , +and +returns a pointer to the null-terminated result. +.PP +.I Strcmp +compares its arguments and returns an integer +less than, equal to, or greater than 0, +according as +.I s1 +is lexicographically less than, equal to, or +greater than +.IR s2 . +.I Strncmp +makes the same comparison but examines at most +.I n +bytes. +The comparisons are made with unsigned bytes. +.PP +.I Strcpy +copies string +.I s2 +to +.IR s1 , +stopping after the null byte has been copied. +.I Strncpy +copies exactly +.I n +bytes, +truncating +.I s2 +or adding +null bytes to +.I s1 +if necessary. +The result will not be null-terminated if the length +of +.I s2 +is +.I n +or more. +Each function returns +.IR s1 . +.PP +.I Strlen +returns the number of bytes in +.IR s , +not including the terminating null byte. +.PP +.I Strchr +.RI ( strrchr ) +returns a pointer to the first (last) +occurrence of byte +.I c +in string +.IR s , +or +.L 0 +if +.I c +does not occur in the string. +The null byte terminating a string is considered to +be part of the string. +.PP +.I Strdup +returns a pointer to a distinct copy of the null-terminated string +.I s +in space obtained from +.IR malloc (10.2) +or +.L 0 +if no space can be obtained. +.PP +.I Strstr +returns a pointer to the first occurrence of +.I s2 +as a substring of +.IR s1 , +or 0 if there is none. +If +.I s2 +is the null string, +.I strstr +returns +.IR s1 . +.SH SOURCE +.B /libkern/str*.c +.br +.B /libkern/str*-\fIobjtype\fP.c +.br +.B /lib9/strdup.c +.SH SEE ALSO +.IR memory (10.2), +.IR rune (10.2) +.SH BUGS +These routines know nothing about +.SM UTF. +Use the routines in +.IR rune (10.2) +as appropriate. +Note, however, that the definition of UTF guarantees that +.I strcmp +compares UTF strings correctly. +.PP +The outcome of overlapping moves varies among implementations. +.PP +Note the absence of ANSI C's +.IR strncat , +.IR strpbrk , +.IR strspn , +.IR strcspn +and +.IR strtok , +but the presence of +.IR strdup . +...strtod.c strtol.c strtoul.c strtoll.c diff --git a/man/10/styx b/man/10/styx new file mode 100644 index 00000000..cbf9bdda --- /dev/null +++ b/man/10/styx @@ -0,0 +1,364 @@ +.TH STYX 10.2 +.SH NAME +Fcall, convS2M, convD2M, convM2S, convM2D, fcallfmt, dirfmt, dirmodefmt, statcheck, sizeS2M, sizeD2M \- interface to Inferno File protocol +.SH SYNOPSIS +.B #include <lib9.h> +.br +.br +.B #include <styx.h> +.PP +.B +uint convS2M(Fcall *f, uchar *ap, uint nap) +.PP +.B +uint convD2M(Dir *d, uchar *ap, uint nap) +.PP +.B +uint convM2S(uchar *ap, uint nap, Fcall *f) +.PP +.B +uint convM2D(uchar *ap, uint nap, Dir *d, char *strs) +.PP +.B +int dirfmt(Fmt*) +.PP +.B +int fcallfmt(Fmt*) +.PP +.B +int dirmodefmt(Fmt*) +.PP +.B +int statcheck(uchar *buf, uint nbuf) +.PP +.B +uint sizeS2M(Fcall *f) +.PP +.B +uint sizeD2M(Dir *d) +.SH DESCRIPTION +These +routines convert messages in the machine-independent format of +the Inferno file protocol, +Styx (which is equivalent to the Plan 9 protocol 9P2000), +to and from a more convenient form, +an +.B Fcall +structure: +.PP +.EX +.if n .ta 4n +6n +5n +6n +18n +4n +.if t .ta \w'xxxx'u +\w'short 'u +\w'xxxx'u +\w'ushort 'u +\w'ticket[TICKETLEN]; 'u +\w'/* 'u +#define MAXWELEM 16 + +typedef +struct Fcall +{ + uchar type; + u32int fid; + ushort tag; + union { + struct { + u32int msize; /* Tversion, Rversion */ + char *version; /* Tversion, Rversion */ + }; + struct { + ushort oldtag; /* Tflush */ + }; + struct { + char *ename; /* Rerror */ + }; + struct { + Qid qid; /* Rattach, Ropen, Rcreate */ + u32int iounit; /* Ropen, Rcreate */ + }; + struct { + Qid aqid; /* Rauth */ + }; + struct { + u32int afid; /* Tauth, Tattach */ + char *uname; /* Tauth, Tattach */ + char *aname; /* Tauth, Tattach */ + }; + struct { + u32int perm; /* Tcreate */ + char *name; /* Tcreate */ + uchar mode; /* Tcreate, Topen */ + }; + struct { + u32int newfid; /* Twalk */ + ushort nwname; /* Twalk */ + char *wname[MAXWELEM]; /* Twalk */ + }; + struct { + ushort nwqid; /* Rwalk */ + Qid wqid[MAXWELEM]; /* Rwalk */ + }; + struct { + vlong offset; /* Tread, Twrite */ + u32int count; /* Tread, Twrite, Rread */ + char *data; /* Twrite, Rread */ + }; + struct { + ushort nstat; /* Twstat, Rstat */ + uchar *stat; /* Twstat, Rstat */ + }; + }; +} Fcall; +.EE +.EX + +/* these are implemented as macros */ + +uchar GBIT8(uchar*) +ushort GBIT16(uchar*) +ulong GBIT32(uchar*) +vlong GBIT64(uchar*) + +void PBIT8(uchar*, uchar) +void PBIT16(uchar*, ushort) +void PBIT32(uchar*, ulong) +void PBIT64(uchar*, vlong) + +#define BIT8SZ 1 +#define BIT16SZ 2 +#define BIT32SZ 4 +#define BIT64SZ 8 +.EE +.PP +This structure is defined in +.BR <styx.h> . +See section 5 +for a full description of Styx messages and their encoding. +For all message types, the +.B type +field of an +.B Fcall +holds one of +.BR Tversion , +.BR Rversion , +.BR Tattach , +.BR Rattach , +etc. (defined in an enumerated type in +.BR <styx.h> ). +.B Fid +is used by most messages, and +.B tag +is used by all messages. +The other fields are used selectively by the message types +given in comments. +.PP +.I ConvM2S +takes a Styx message at +.I ap +of length +.IR nap , +and uses it to fill in +.B Fcall +structure +.IR f . +If the passed message +including any data for +.B Twrite +and +.B Rread +messages +is formatted properly, +the return value is the number of bytes the message occupied in the buffer +.IR ap , +which will always be less than or equal to +.IR nap ; +otherwise it is 0. +For +.B Twrite +and +.B Tread +messages, +.B data +is set to a pointer into the argument message, +not a copy. +.PP +.I ConvS2M +does the reverse conversion, turning +.I f +into a message starting at +.IR ap . +The length of the resulting message is returned. +For +.B Twrite +and +.B Rread +messages, +.B count +bytes starting at +.B data +are copied into the message. +.PP +The constant +.B IOHDRSZ +is a suitable amount of buffer to reserve for storing +the Styx header; +the data portion of a +.B Twrite +or +.B Rread +will be no more than the buffer size negotiated in the +.BR Tversion/Rversion +exchange, minus +.BR IOHDRSZ . +.PP +The routine +.I sizeS2M +returns the number of bytes required to store the machine-independent representation of the +.B Fcall +structure +.IR f , +including its initial 32-bit size field. +In other words, it reports the number of bytes produced +by a successful call to +.IR convS2M . +.PP +Another structure is +.BR Dir , +used by C functions in much the same way as the Limbo versions +described in +.IR sys-stat (2). +.I ConvM2D +converts the machine-independent form starting at +.I ap +into +.IR d +and returns the length of the machine-independent encoding. +The strings in the returned +.B Dir +structure are stored at successive locations starting at +.BR strs . +Usually +.B strs +will point to storage immediately after the +.B Dir +itself. +It can also be a +.B nil +pointer, in which case the string pointers in the returned +.B Dir +are all +.BR nil ; +however, the return value still includes their length. +.PP +.I ConvD2M +does the reverse translation, +also returning the length of the encoding. +If the buffer is too short, the return value will be +.B BIT16SZ +and the correct size will be returned in the first +.B BIT16SZ +bytes. +(If the buffer is less than +.BR BIT16SZ , +the return value is zero; therefore a correct test for +complete packing of the message is that the return value is +greater than +.BR BIT16SZ ). +The macro +.B GBIT16 +can be used to extract the correct value. +The related macros with different sizes retrieve the corresponding-sized quantities. +.B PBIT16 +and its brethren place values in messages. +With the exception of handling short buffers in +.IR convD2M , +these macros are not usually needed except by internal routines. +.PP +Analogous to +.IR sizeS2M , +.I sizeD2M +returns the number of bytes required to store the machine-independent representation of the +.B Dir +structure +.IR d , +including its initial 16-bit size field. +.PP +The routine +.B statcheck +checks whether the +.I nbuf +bytes of +.I buf +contain a validly formatted machine-independent +.B Dir +entry. +It checks that the sizes of all the elements of the the entry sum to exactly +.IR nbuf , +which is a simple but effective test of validity. +.I Nbuf +and +.I buf +should include the second two-byte (16-bit) length field that precedes the entry when +formatted in a Styx message (see +.IR stat (5)); +in other words, +.I nbuf +is 2 plus the sum of the sizes of the entry itself. +.I Statcheck +also verifies that the length field has the correct value (that is, +.IB nbuf -2\f1). +It returns +.B 0 +for a valid entry and +.B -1 +for an incorrectly formatted entry. +.PP +.IR Dirfmt , +.IR fcallfmt , +and +.I dirmodefmt +are formatting routines, suitable for +.IR fmtinstall (10.2). +They convert +.BR Dir* , +.BR Fcall* , +and +.BR long +values into string representations of the directory buffer, +.B Fcall +buffer, +or file mode value. +.I Fcallfmt +assumes that +.I dirfmt +has been installed with format letter +.L D +and +.I dirmodefmt +with format letter +.LR M . +They currently cannot be used in the kernels because they clash +with the use of format +.L D +for Dis instructions. +.SH SOURCE +.B /lib9/convM2D.c +.br +.B /lib9/convM2D.c +.br +.B /lib9/convM2S.c +.br +.B /lib9/convS2M.c +.br +.B /lib9/fcallfmt.c +.br +.B /libkern/convM2D.c +.br +.B /libkern/convM2D.c +.br +.B /libkern/convM2S.c +.br +.B /libkern/convS2M.c +.br +.B /libkern/fcallfmt.c +.SH SEE ALSO +.IR intro (2), +.IR styx (2), +.IR sys-stat (2), +.IR intro (5) diff --git a/man/10/styxserver b/man/10/styxserver new file mode 100644 index 00000000..d0a8d321 --- /dev/null +++ b/man/10/styxserver @@ -0,0 +1,611 @@ +.TH STYXSERVER 10.2 +.SH NAME +Styxserver \- C Styx server library +.SH SYNOPSIS +.EX +#define Qroot 0 + +#define MSGMAX ((((8192+128)*2)+3) & ~3) + +extern char Enomem[]; /* out of memory */ +extern char Eperm[]; /* permission denied */ +extern char Enodev[]; /* no free devices */ +extern char Ehungup[]; /* i/o on hungup channel */ +extern char Eexist[]; /* file exists */ +extern char Enonexist[]; /* file does not exist */ +extern char Ebadcmd[]; /* bad command */ +extern char Ebadarg[]; /* bad arguments */ + +typedef uvlong Path; +typedef struct Styxserver Styxserver; +typedef struct Styxops Styxops; +typedef struct Styxfile Styxfile; +typedef struct Client Client; + +struct Styxserver +{ + Styxops *ops; + Path qidgen; + int connfd; + Client *clients; + Client *curc; + Styxfile *root; + Styxfile **ftab; + void *priv; /* private */ +}; + +struct Client +{ + Styxserver *server; + Client *next; + int fd; + char msg[MSGMAX]; + uint nread; /* valid bytes in msg (including nc)*/ + int nc; /* bytes consumed from front of msg by convM2S */ + char data[MSGMAX]; /* Tread/Rread data */ + int state; + Fid *fids; + char *uname; /* uid */ + char *aname; /* attach name */ + void *u; +}; + +struct Styxops +{ + char *(*newclient)(Client *c); + char *(*freeclient)(Client *c); + + char *(*attach)(char *uname, char *aname); + char *(*walk)(Qid *qid, char *name); + char *(*open)(Qid *qid, int mode); + char *(*create)(Qid *qid, char *name, int perm, int mode); + char *(*read)(Qid qid, char *buf, ulong *n, vlong offset); + char *(*write)(Qid qid, char *buf, ulong *n, vlong offset); + char *(*close)(Qid qid, int mode); + char *(*remove)(Qid qid); + char *(*stat)(Qid qid, Dir *d); + char *(*wstat)(Qid qid, Dir *d); +}; + +struct Styxfile +{ + Dir d; + Styxfile *parent; + Styxfile *child; + Styxfile *sibling; + Styxfile *next; + int ref; + int open; + void *u; +}; + +char *styxinit(Styxserver *server, Styxops *ops, char *port, int perm, int needfile); +char *styxwait(Styxserver *server); +char *styxprocess(Styxserver *server); +char *styxend(Styxserver *server); + +Client *styxclient(Styxserver *server); + +Styxfile *styxaddfile(Styxserver *server, Path pqid, Path qid, char *name, + int mode, char *owner); +Styxfile *styxadddir(Styxserver *server, Path pqid, Path qid, char *name, + int mode, char *owner); +int styxrmfile(Styxserver *server, Path qid); +Styxfile *styxfindfile(Styxserver *server, Path qid); + +int styxperm(Styxfile *file, char *uid, int mode); +long styxreadstr(ulong off, char *buf, ulong n, char *str); +Qid styxqid(int path, int isdir); +void *styxmalloc(int bytes); +void styxfree(void *p); +void styxdebug(void); +.EE +.SH DESCRIPTION +The C Styx server library provides a small suite of functions to enable the +production of a file server based on the Inferno Styx protocol. The following +elements define the primary routines in the interface: +.TP +.BI styxinit(server\fP,\fP\ ops\fP,\fP\ port\fP,\fP\ perm\fP,\fP\ needfile ) +Initializes the interface given a pointer to a Styxserver structure +.I server +, a callback table of operations +.I ops +, a port number +.I port +to announce the file service on +and the permissions +.I perm +on the root directory. The default permission is 0555 (read and execute for user, +group and others) if the latter is specified as -1. If the last argument +.I needfile +is set to true, the styx library will check that each path number it deals with +has a corresponding file associated with it and, if it hasn't, it will issue a +"file does not exist" message automatically. In case of an error, the error message is +returned, otherwise nil is returned to indicate success. +.TP +.BI styxwait(server ) +Waits for communication from a client. Return value as above. +.TP +.BI styxprocess(server ) +Processes the client message after a successful call to +.I styxwait . +This may result in calls to the functions in the table provided to +.I styxinit . +Return value as above. +.TP +.BI styxend(server ) +End all file service. Return value as above. +.TP +.BI styxclient(server ) +Returns the client whose request is currently being processed. +.PP +The next set of functions allow the creation of a file system structure based +upon the +.I Styxfile +structure. This contains a Dir structure +.I d +describing the properties of the file +(defined in lib9.h) and pointers to other files in the file tree: +.I parent +, +.I child +, +.I sibling +and +.I next . +The +.I ref +field +counts current references to the file. The +.I open +field counts the current number of opens on the file. Finally the +.I u +field allows further fields to be tagged onto each file. It is not +used by the Styx server library. +.PP +Each file must have a unique path number in the server. The root of +the tree +.I Qroot +always has path number zero. It's corresponding file is created during library initialization +and placed in the +.I root +field of the server structure. All other files must be supplied with a path number +to identify them. Files are created/deleted as follows: +.TP +.BI styxaddfile(server\fP,\fP\ ppath\fP,\fP\ path\fP,\fP\ name\fP,\fP\ mode\fP,\fP\ owner ) +Add a new file (ie non-directory) with the given path +.I path +, name +.I name +, mode +.I mode +and owner +.I owner +to the directory identified by the path +.I ppath . +If +.I path +is -1 the library will generate a unique path number instead. +Returns nil if the parent file with path +.I ppath +does not exist, if the parent is not a directory, if the path number +.I path +already is assigned to a file or if the parent already contains a file of name +.I name . +.TP +.BI styxadddir(server\fP,\fP\ ppath\fP,\fP\ path\fP,\fP\ name\fP,\fP\ mode\fP,\fP\ owner ) +Add a new directory with the given path +.I path +, name +.I name +, mode +.I mode +and owner +.I owner +to the directory identified by the path +.I ppath . +Returns nil in the same circumstances as +.I styxaddfile . +.TP +.BI styxrmfile(server\fP,\fP\ path ) +Remove the file or directory with path +.I path +from the file server tree. If the file is a directory, it's contents will be recursively +removed. If the file does not exist, -1 is returned, otherwise 0 is returned for +success. +.TP +.BI styxfindfile(server\fP,\fP\ path ) +Return the file structure corresponding to the file or directory with path +.I path . +Nil is returned if the file does not exist. +.PP +If the file system is created in this way the Styx library will check read/write/execute +permissions, check for invalid uses of files and check that path numbers exist +in the file system (see +.I styxinit +for the latter). If it's not feasible to do this (for instance if there is a more suitable +way of describing the file system in question), then all file checking must be +done as part of the callback functions below. +.PP +The library provides a callback mechanism so that the implementer of the +file server can take corresponding action when a particular request is made +of the server. All of these functions may return an error message which will +be communicated back to the client. Otherwise they should return nil to +indicate the success of the operation. Any of these functions may be nil in which case the library +performs a default operation which will be described below. These routines use +the +.I Qid +structure defined in lib9.h to describe files. This structure contains the path number( +.I path +), a version number( +.I vers +) typically zero and a type( +.I type +) which indicates whether the file is a directory, append-only etc. +.TP +.BI newclient(c ) +Called whenever a new client connects to the server. The Client structure +.I c +contains mainly private data but the +.I uname +field contains a user name and the +.I aname +field an attach name if required. The +.I u +field may be used to tag further data onto each client. It is not used by +the Styx server library. +.TP +.BI freeclient(c ) +Called whenever a client disconnects from the server. +.TP +.BI attach(uname\fP,\fP\ aname ) +Called when a client user first mounts the file server. The +.I uname +is the user id and +.I aname +is typically the file tree to access if the server provides a choice. +The default action is to allow the attach to the root of the file system. +.TP +.BI walk(qid\fP,\fP\ name ) +In a directory represented by +.I qid +, find a file member whose name is that given and place it's Qid in +.I qid . +The default action is to perform the walk using any directory structure provided. +.TP +.BI open(qid\fP,\fP\ mode ) +Open the file represented by +.I qid +with mode +.I mode . +The latter may be one of OREAD, OWRITE, ORDWR etc (see lib9.h). If the Qid +of the newly opened file is different from that given (a file server may understand +the opening of a file called "new" say to signify the creation of a directory whose +Qid is returned instead) place it's Qid in +.I qid . +The default action is to nominally allow the open. +.TP +.BI create(qid\fP,\fP\ name\fP,\fP\ perm\fP,\fP\ mode ) +Create a file in the directory given by +.I qid +with name +.I name +, permissions +.I perm +and mode +.I mode . +Place the Qid of the newly created file in +.I qid . +The default action is to issue a permission denied message. +.TP +.BI read(qid\fP,\fP\ buf\fP,\fP\ n\fP,\fP\ offset ) +Read +.I n +bytes of the file represented by +.I qid +at offset +.I offset +and place the result in +.I buf. + Place in +.I n +the actual number of bytes read. +The default action is to read directories but to issue permission denied on ordinary +files. +.TP +.BI write(qid\fP,\fP\ buf\fP,\fP\ n\fP,\fP\ offset ) +Write +.I n +bytes to the file represented by +.I qid +at offset +.I offset +from the buffer +.I buf. + Place in +.I n +the actual number of bytes written. +The default action is to issue permission denied. +.TP +.BI close(qid\fP,\fP\ mode ) +Close the file represented by +.I qid . +The mode it was originally opened with is given by +.I mode . +The default action is to allow the close. +.TP +.BI remove(qid ) +Remove the file represented by +.I qid . +The default action is to issue a permission denied message. +.TP +.BI stat(qid\fP,\fP\ d ) +Place the information for the file represented by +.I qid +in the Dir structure(see lib9.h) +.I d . +The default action is to allow the stat using any information in the file tree. +.TP +.BI wstat(qid\fP,\fP\ d ) +Update the information for the file represented by +.I qid +according to the Dir structure +.I d . +The default action is to disallow this with a permission denied message. +.PP +A small number of utility functions are provided: +.TP +.BI styxperm(file\fP,\fP\ uid\fP,\fP\ mode ) +Does the file/directory +.I file +allow the user +.I uid +the permission given by +.I mode . +For example use +.I OREAD +for read permission, +.I OWRITE +for write permission and +.I ORDWR +for both. +.TP +.BI styxreadstr(off\fP,\fP\ buf\fP,\fP\ n\fP,\fP\ str ) +Read +.I n +bytes of data from the string +.I str +at offset +.I off +and place the result in +.I buf . +Returns the actual number of bytes read. +.TP +.BI styxqid(path\fP,\fP\ isdir ) +Returns a typical Qid structure with the given path number +.I path +and whether the Qid is for a directory +.I isdir . +.TP +.BI styxmalloc(n ) +Allocate +.I n +bytes of memory and return it. +.TP +.BI styxfree(p ) +Free the memory pointed to by +.I p . +.TP +.BI styxdebug() +Print out some of the actions of the server. +.SH EXAMPLE +.PP +A very small file server example is illustrated. First the include files and globals. +.PP +.EX + #include <lib9.h> + #include "styxserver.h" + + int nq; + Styxserver *server; +.EE +.PP +The main processing loop: +.PP +.EX + main(int argc, char **argv) + { + Styxserver s; + + server = &s; + styxinit(&s, &ops, "6701", 100, 0555, 0); + myinit(&s); + for(;;) { + styxwait(&s); + styxprocess(&s); + } + return 0; + } +.EE +.PP +Here the port number is 6701 and the root file permissions are 0555 - no write +permission for anyone which implies that files and directories cannot be +created in the root directory. +.PP +The creation of the directory tree: +.PP +.EX + myinit(Styxserver *s) + { + styxaddfile(s, Qroot, 1, "fred", 0664, "inferno"); + styxaddfile(s, Qroot, 2, "joe", 0664, "inferno"); + styxadddir(s, Qroot, 3, "adir", 0775, "inferno"); + styxaddfile(s, 3, 4, "bill", 0664, "inferno"); + styxadddir(s, Qroot, 5, "new", 0775, "inferno"); + styxadddir(s, 5, 6, "cdir", 0775, "inferno"); + styxaddfile(s, 6, 7, "cfile", 0664, "inferno"); + nq = 8; + } +.EE +.PP +This creates two files +.I fred +and +.I joe +and two directories +.I adir +and +.I new +at the top level. +.I adir +contains a file called +.I bill +and +.I new +contains a directory called +.I cdir +which contains a file called +.I cfile . +Note that each new path number is unique. +.PP +The callback functions: +.PP +.EX + Styxops ops = { + nil, /* newclient */ + nil, /* freeclient */ + + nil, /* attach */ + nil, /* walk */ + nil, /* open */ + mycreate, /* create */ + myread, /* read */ + nil, /* write */ + nil, /* close */ + myremove, /* remove */ + nil, /* stat */ + nil, /* wstat */ + }; +.EE +.PP +Here we choose the defaults most of the time. +.PP +The supplied callback routines: +.PP +.EX + char * + mycreate(Qid *qid, char *name, int perm, int mode) + { + int isdir; + Styxfile *f; + + isdir = perm&DMDIR; + if(isdir) + f = styxadddir(server, qid->path, nq++, name , perm, "inferno"); + else + f = styxaddfile(server, qid->path, nq++, name, perm, "inferno"); + if(f == nil) + return Eexist; + *qid = f->d.qid; + return nil; + } + + char * + myremove(Qid qid) + { + Styxfile *f; + + f = styxfindfile(server, qid.path); + if(f != nil && (f->d.qid.type&QTDIR) && f->child != nil) + return "directory not empty"; + + if(styxrmfile(server, qid.path) < 0) + return Enonexist; + return nil; + } + + char * + myread(Qid qid, char *d, ulong *n, vlong offset) + { + if(qid.path != 1){ + *n = 0; + return nil; + } + *n = styxreadstr(offset, d, *n, "abcdeghijklmn"); + return nil; + } +.EE +.PP +Permission checking for walk (need execute permission on directory), open (the +given mode must be compatible with the file permissions), create and remove (both of +which need write permission on directory) is done automatically whenever +possible. The functions +.I mycreate +and +.I myremove +below therefore can omit these checks. +.PP +The function +.I mycreate +simply creates a directory or file and +if the file cannot be added to the directory tree it returns a 'file exists' error string. +It sets the Qid for the newly created file before returning. +.PP +The function +.I myremove +first checks to see if the file represents a non-empty directory, in which case it +disallows it's removal. Otherwise it +removes the file if it can find it and returns a 'file does not exist' error string if it +can't. +.PP +The function +.I myread +considers all files to be empty except for +.I fred +which notionally contains +.I abcdefghijklmn . +Note that the number of bytes read is returned in the argument +.I n . +.PP +Once this file server is running, the root can be accessed by doing for example +.PP +.EX + mount -A tcp!<address>!6701 /n/remote +.EE +.PP +under Inferno. Here +.I <address> +is the address of the machine running the file server (or the loopback address +127.0.0.1 if it's all on one machine). The +.I -A +option is used to prevent authentication which is not supported at the moment. +Then we can do +.PP +.EX + cd /n/remote + ls + adir + fred + joe + new + ... +.EE +.PP +For a more complicated file server see /tools/styxtest/styxtest.c. +.PP +The file /tools/styxtest/mkfile shows how to compile and link the file server +sources. +.SH SOURCE +.B /Nt/386/include/lib9.h +.br +.B /tools/libstyx/styxserver.h +.br +.B /tools/libstyx/styxserver.c +.br +.B /tools/styxtest/styxtest.c +.br +.B /tools/styxtest/styxtest0.c +.SH BUGS +Currently the library is available under Windows, Linux and Solaris only. +.br +Authentication is not supported. diff --git a/man/10/xalloc b/man/10/xalloc new file mode 100644 index 00000000..d22ea9cb --- /dev/null +++ b/man/10/xalloc @@ -0,0 +1,70 @@ +.TH XALLOC 10.2 +.SH NAME +xalloc, xspanalloc, xfree \- basic memory management +.SH SYNOPSIS +.ta \w'\fLvoid* 'u +.B +void* xalloc(ulong size) +.PP +.B +void* xspanalloc(ulong size, int align, ulong span) +.PP +.B +void xfree(void *p) +.SH DESCRIPTION +.I Xalloc +and +.I xfree +are primitives used by higher-level memory allocators in the kernel, +such as +.IR malloc (10.2). +They are not intended for use directly by most kernel routines. +The main exceptions are routines that permanently allocate large structures, +or need the special alignment properties guaranteed by +.IR xspanalloc . +.PP +.I Xalloc +returns a pointer to a range of size bytes of memory. The memory will be zero filled and aligned on a 8 byte +.RB ( BY2V ) +address. If the memory is not available, +.B xalloc +returns a null pointer. +.PP +.I Xspanalloc +allocates memory given alignment and spanning constraints. +The block returned will contain +.I size +bytes, aligned on a boundary that is +.BI "0 mod" " align," +in such a way that the memory in the block does not +span an address that is +.BI "0 mod" " span." +.I Xspanalloc +is intended for use +allocating hardware data structures (eg, page tables) or I/O buffers +that must satisfy specific alignment restrictions. +If +.I xspanalloc +cannot allocate memory to satisfy the given constraints, it will +.IR panic (10.2). +The technique it uses can sometimes cause memory to be wasted. +Consequently, +.I xspanalloc +should be used sparingly. +.PP +.I Xfree +frees the block of memory at +.IR p , +which must be an address previously returned by +.I xalloc +(not +.IR xspanalloc ). +.SS Allocation status +Some memory allocation statistics are written to the console in response to +the debugging sequence +.LR "control-T control-T x" . +The output includes the total free space, the number of free holes, +and a summary of active holes. +Each line shows `address top size'. +.SH SEE ALSO +.IR malloc (10.2) diff --git a/man/2/0intro b/man/2/0intro new file mode 100644 index 00000000..297bade3 --- /dev/null +++ b/man/2/0intro @@ -0,0 +1,189 @@ +.TH INTRO 2 +.SH NAME +intro \- introduction to Limbo modules for the Inferno system +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +include "draw.m"; +draw := load Draw Draw->PATH; + +include "tk.m"; +tk := load Tk Tk->PATH; + +.I "... etc." + +.I "Generically:" +.EE +.EX +include "\fImodule\fP.m"; +.EE +.fi +.IB module " := " +.BI load " Module" +.IB Module ->PATH; +.SH DESCRIPTION +This section introduces the Limbo modules available to the programmer; +see the corresponding manual pages for more information. +Each module is declared with a single Limbo +.B include +file. +Before calling a module's functions, an application must +.B load +the module; the application stores the resulting value in a variable for later use as +the module qualifier. +The examples above illustrate the style. +It will usually be necessary in some cases to qualify names with the appropriate +module pointer or to +.B import +the types and functions; the manual pages assume the names are accessible +in the current scope. +.PP +Although many modules are self-contained, +dependencies may exist. +For example, the system module, +.BR Sys , +provides basic services that many other modules require. +These are the Inferno equivalent to `system calls'. +.PP +In a few cases, several related modules +share a single +.B include +file; +for instance, +.BR security.m . +.PP +The manual pages describe how to +.B include +a module definition during +compilation and +.B load +an implementation during execution. +The documentation also lists relevant functions or abstract +data types. +Although the +.B include +files declare these components, the manual pages list them explicitly. +In all cases, the enclosing +.B module +declaration is assumed so that unqualified identifiers can be +used in the text without ambiguity, reducing clutter in the text. +In practice when programming, many consider it good style to +use an explicit module reference for functions and constants. +.PP +The Limbo modules are identical on any machine that is running Inferno, +whether native or hosted, which enables Limbo programs to be written +and tested on any Inferno system. +.PP +Many modules are described in a single page, such as +.IR regex (2). +Several larger modules are explained in several sections, such as +.IR math-intro (2), +.IR math-elem (2), +.IR math-fp (2), +and +.IR math-linalg (2). +.SS Exceptions +Exception handling is now part of the Limbo language, replacing an older +scheme that used special system calls. +Various exceptions can be raised by the virtual machine when run-time errors +are detected. +These are the common ones: +.RS +.TP +.B "alt send/recv on same chan" +It is currently illegal for a channel to appear in two +.B alt +statements if they either both receive or both send on it. +(It is fine to send in one and receive in the other.) +.TP +.B "array bounds error" +Array subscript out of bounds. +.TP +.B "dereference of nil" +Attempt to use a +.B "ref" +adt or index an array with value +.B "nil" . +.TP +.B "invalid math argument" +Inconsistent values provided to functions of +.IR math-intro (2). +.TP +.B "module not loaded" +Attempt to use an uninitialised module variable. +.TP +.B "negative array size" +The limit in an array constructor was negative. +.TP +.BI "out of memory:" " pool" +The given memory +.I pool +is exhausted. +.I Pool +is currently one of +.B main +(kernel memory including Tk allocations), +.B heap +(most Limbo data), +and +.B image +memory for +.IR draw (3). +.TP +.B "zero divide" +Integer division (or mod) by zero. +.RE +.PP +There are currently two more classes of exception string with a conventional interpretation +imposed not by the run-time system proper, but by Limbo components: +.RS +.TP +.BI "fail:" "reason" +Commands use this exception to provide an `exit status' to a calling program, +particularly the shell +.IR sh (1); +see also +.IR sh (2). +The status is given by the +.I reason +following the +.RB ` fail: ' +prefix. +.TP +.BI "assertion:" "error" +A module detected the specified internal +.IR error . +This is most often used for cases where a particular possibility ``cannot happen'' +and there is no other need for an error value in the interface. +.RE +.PP +Otherwise, most module interfaces tend to use explicit error return values, not exceptions. +.PP +Note that a Limbo exception handler can do pattern matching to catch a class of exceptions: +.IP +.EX +{ + \f2body of code to protect\fP +} exception e { +"out of memory:*" => + \f2recovery action\fP +"assertion:*" => + fatal_error(e); +} +.EE +.PP +The effect of an unhandled exception in a process that is part of an error-recovery group +can be controlled using the mechanisms described in +.IR prog (3) +as accessed using +.IR exception (2). +.SH SEE ALSO +.IR draw-intro (2), +.IR exception (2), +.IR keyring-intro (2), +.IR math-intro (2), +.IR prefab-intro (2), +.IR security-intro (2), +.IR sys-intro (2) diff --git a/man/2/INDEX b/man/2/INDEX new file mode 100644 index 00000000..6c7d8e44 --- /dev/null +++ b/man/2/INDEX @@ -0,0 +1,493 @@ +intro 0intro +alphabet alphabet-intro +alphabet-intro alphabet-intro +arg arg +asn1 asn1 +decode asn1 +encode asn1 +attrdb attrdb +bloomfilter bloomfilter +bufio bufio +bufiofill bufio +bufio bufio-chanfill +bufio-chanfill bufio-chanfill +chanfill bufio-chanfill +attr cfg +cfg cfg +record cfg +tuple cfg +command command +btos convcs +convcs convcs +stob convcs +crc crc +daytime daytime +filet daytime +gmt daytime +local daytime +now daytime +text daytime +time daytime +tm2epoch daytime +dbf dbm +dbm dbm +init dbm +debug debug +devpointer devpointer +applycfg dhcpclient +bootconf dhcpclient +bootp dhcpclient +dhcp dhcpclient +dhcpclient dhcpclient +lease dhcpclient +removecfg dhcpclient +dialog dialog +getstring dialog +prompt dialog +dict dict +dis dis +block diskblocks +disk diskblocks +diskblocks diskblocks +tempfile diskblocks +chstext disks +disk disks +disks disks +pcpart disks +readn disks +dividers dividers +draw draw-0intro +draw-intro draw-0intro +context draw-context +draw-context draw-context +display draw-display +draw-display draw-display +draw draw-example +draw-example draw-example +example draw-example +draw-font draw-font +font draw-font +draw-image draw-image +image draw-image +draw-point draw-point +point draw-point +draw-pointer draw-pointer +pointer draw-pointer +draw-rect draw-rect +rect draw-rect +draw-screen draw-screen +screen draw-screen +drawmux drawmux +dec encoding +enc encoding +encoding encoding +env env +ether ether +exception exception +factotum factotum +mount factotum +proxy factotum +rpc factotum +expand filepat +filepat filepat +match filepat +filter filter +deflate filter-deflate +filter-deflate filter-deflate +inflate filter-deflate +filter-slip filter-slip +slip filter-slip +format format + +fsproto fsproto +fsproto fsproto fsproto +readprotofile fsproto +readprotostring fsproto +geodesy geodesy +hash hash +hashtable hash +consistent ida +frag ida +fragment ida +ida ida +reconstruct ida +imagefile imagefile +readgif imagefile +readjpg imagefile +readpicfile imagefile +readpng imagefile +readxbitmap imagefile +remap imagefile +ip ip +ir ir +itslib itslib +keyring intro keyring-0intro +keyring-intro keyring-0intro +auth keyring-auth +keyring keyring-auth +keyring-auth keyring-auth +readauthinfo keyring-auth +writeauthinfo keyring-auth +certtostr keyring-certtostr +keyring keyring-certtostr +keyring-certtostr keyring-certtostr +pktostr keyring-certtostr +sktostr keyring-certtostr +strtocert keyring-certtostr +strtopk keyring-certtostr +strtosk keyring-certtostr +aescbc keyring-crypt +aessetup keyring-crypt +descbc keyring-crypt +desecb keyring-crypt +dessetup keyring-crypt +ideacbc keyring-crypt +ideaecb keyring-crypt +ideasetup keyring-crypt +keyring keyring-crypt +keyring-crypt keyring-crypt +dhparams keyring-gensk +gensk keyring-gensk +genskfrompk keyring-gensk +keyring keyring-gensk +keyring-gensk keyring-gensk +sktopk keyring-gensk +getmsg keyring-getmsg +keyring keyring-getmsg +keyring-getmsg keyring-getmsg +senderrmsg keyring-getmsg +sendmsg keyring-getmsg +getbytearray keyring-getstring +getstring keyring-getstring +keyring keyring-getstring +keyring-getstring keyring-getstring +putbytearray keyring-getstring +puterror keyring-getstring +putstring keyring-getstring +ipint keyring-ipint +keyring keyring-ipint +keyring-ipint keyring-ipint +keyring keyring-rc4 +keyring-rc4 keyring-rc4 +rc4 keyring-rc4 +rc4back keyring-rc4 +rc4setup keyring-rc4 +rc4skip keyring-rc4 +hmac_md5 keyring-sha1 +hmac_sha1 keyring-sha1 +keyring keyring-sha1 +keyring-sha1 keyring-sha1 +md4 keyring-sha1 +md5 keyring-sha1 +sha1 keyring-sha1 +sign keyring-sha1 +verify keyring-sha1 +keyset keyset +lock lock +intro math-0intro +math math-0intro +math-intro math-0intro +acos math-elem +acosh math-elem +asin math-elem +asinh math-elem +atan math-elem +atan2 math-elem +atanh math-elem +cbrt math-elem +cos math-elem +cosh math-elem +erf math-elem +erfc math-elem +exp math-elem +expm1 math-elem +hypot math-elem +j0 math-elem +j1 math-elem +jn math-elem +lgamma math-elem +log math-elem +log10 math-elem +log1p math-elem +math math-elem +math-elem math-elem +pow math-elem +pow10 math-elem +sin math-elem +sinh math-elem +sqrt math-elem +tan math-elem +tanh math-elem +y0 math-elem +y1 math-elem +yn math-elem +export_int math-export +export_real math-export +export_real32 math-export +import_int math-export +import_real math-export +import_real32 math-export +math math-export +math-export math-export +math math-fp +math-fp math-fp +dot math-linalg +gemm math-linalg +iamax math-linalg +math math-linalg +math-linalg math-linalg +norm1 math-linalg +norm2 math-linalg +sort math-linalg +mpeg mpeg +basename names +cleanname names +dirname names +elements names +isprefix names +names names +pathname names +relative names +rooted names +newns newns +categories palmfile +dbinfo palmfile +doc palmfile +entry palmfile +palmfile palmfile +pfile palmfile +record palmfile +plumbmsg plumbmsg +pop3 pop3 +add popup +changebutton popup +event popup +mkbutton popup +popup popup +intro prefab-0intro +prefab prefab-0intro +prefab-intro prefab-0intro +compound prefab-compound +prefab prefab-compound +prefab-compound prefab-compound +element prefab-element +prefab prefab-element +prefab-element prefab-element +environ prefab-environ +prefab prefab-environ +prefab-environ prefab-environ +prefab prefab-style +prefab-style prefab-style +style prefab-style +print print +prof prof +profile prof +pslib pslib +rand rand +readdir readdir +regex regex +registries registries +scsi scsiio +scsiio scsiio +secstore secstore +intro security-0intro +security-intro security-0intro +auth security-auth +client security-auth +init security-auth +security-auth security-auth +server security-auth +login security-login +security-login security-login +random security-random +randombuf security-random +randomint security-random +security-random security-random +connect security-ssl +secret security-ssl +security-ssl security-ssl +ssl security-ssl +selectfile selectfile +sets sets +sexp sexprs +sexprs sexprs +sh sh +smtp smtp +cert spki +hash spki +key spki +name spki +seqel spki +signature spki +spki spki +subject spki +toplev spki +valid spki +spki-verifier spki-verifier +verifier spki-verifier +verify spki-verifier +spree spree +allow spree-allow +spree-allow spree-allow +cardlib spree-cardlib +spree-cardlib spree-cardlib +gatherengine spree-gather +spree-gather spree-gather +objstore spree-objstore +spree-objstore spree-objstore +srv srv +append string +drop string +in string +prefix string +quoted string +splitl string +splitr string +splitstrl +splitstrr string +string string +string string string +take string +tobig string +toint string +tolower string +toupper string +unquoted string +stringinttab stringinttab +dir2text styx +istmsg styx +packdir styx +packdirsize styx +qid2text styx +readmsg styx +rmsg styx +styx styx +tmsg styx +unpackdir styx +styxconv styxconv +styxpersist styxpersist +styxservers styxservers +nametree styxservers-nametree +styxservers styxservers-nametree +styxservers-nametree styxservers-nametree +intro sys-0intro +sys sys-0intro +sys-intro sys-0intro +bind sys-bind +mount sys-bind +sys-bind sys-bind +unmount sys-bind +byte2char sys-byte2char +char2byte sys-byte2char +sys-byte2char sys-byte2char +chdir sys-chdir +sys-chdir sys-chdir +announce sys-dial +dial sys-dial +listen sys-dial +sys-dial sys-dial +dirread sys-dirread +sys-dirread sys-dirread +dup sys-dup +fildes sys-dup +sys-dup sys-dup +export sys-export +sys-export sys-export +fauth sys-fauth +sys-fauth sys-fauth +fd2path sys-fd2path +sys-fd2path sys-fd2path +file2chan sys-file2chan +sys-file2chan sys-file2chan +fversion sys-fversion +sys-fversion sys-fversion +iounit sys-iounit +sys-iounit sys-iounit +millisec sys-millisec +sys-millisec sys-millisec +create sys-open +open sys-open +sys-open sys-open +pctl sys-pctl +sys-pctl sys-pctl +pipe sys-pipe +sys-pipe sys-pipe +fprint sys-print +print sys-print +sprint sys-print +sys-print sys-print +pread sys-read +pwrite sys-read +read sys-read +stream sys-read +sys-read sys-read +write sys-read +remove sys-remove +sys-remove sys-remove +seek sys-seek +sys-seek sys-seek +self sys-self +sys-self sys-self +sleep sys-sleep +sys-sleep sys-sleep +fstat sys-stat +fwstat sys-stat +stat sys-stat +sys-stat sys-stat +wstat sys-stat +sys-tokenize sys-tokenize +tokenize sys-tokenize +sys-utfbytes sys-utfbytes +utfbytes sys-utfbytes +sys-werrstr sys-werrstr +werrstr sys-werrstr +mktabs tabs +tabs tabs +tabsctl tabs +tftp tftp +timers timers +cmd tk +imageget tk +imageput tk +keyboard tk +namechan tk +pointer tk +quote tk +tk tk +toplevel tk +handler tkclient +makedrawcontext tkclient +onscreen tkclient +settitle tkclient +snarfget tkclient +snarfput tkclient +startinput +tkclient tkclient +tkclient tkclient tkclient +toplevel tkclient +wmctl tkclient +mkdictname translate +opendict translate +opendicts translate +translate translate +readubf ubfa +ubfa ubfa +uvalue ubfa +writeubf ubfa +venti venti +virgil virgil +volume volume +w3c w3c-css +w3c-css w3c-css +w3c w3c-xpointers +w3c-xpointers w3c-xpointers +wait wait +makedrawcontext wmclient +snarfget wmclient +snarfput wmclient +window wmclient +wmclient wmclient +wmlib wmlib +wmsrv wmsrv +workdir workdir +xml xml diff --git a/man/2/alphabet-intro b/man/2/alphabet-intro new file mode 100644 index 00000000..bb8c2bc4 --- /dev/null +++ b/man/2/alphabet-intro @@ -0,0 +1,236 @@ +.TH ALPHABET-INTRO 2 +.SH NAME +Alphabet \- experimental typed shell +.SH DESCRIPTION +.SS "Values, type characters and signatures" +Each Alphabet typeset defines one Limbo data type, conventionally +named +.BR Value . +It is usually a discriminated union (pick), with each arm of the +pick representing one of the types in the typeset. +Each one of these types is given a character. These characters are +used to describe all value- and module-types within alphabet. +The set of typeset characters implemented by a typeset is +known as its +.IR alphabet . +.PP +For example, in the +.I alphabet +root typeset +(see +.IR alphabet-main (2)), +a string is represented by +the letter ``s'', held at the Limbo level as +a +.BR "ref Value.S" . +.PP +Each alphabet module has a +.I "type signature" +which describes its +return type and the number and type of any flags or +arguments that it allows. +Inside an +.I alphabet +typeset, this signature is represented as a simple +string where the first character (always present) +indicates the return type of the module. Subsequent +characters up until the first minus (``-'') sign (or the +end of the string) indicate +the module's required argument types. +If the last character is an asterisk +.RB ( * ), +it allows an unlimited repetition of the preceding argument type. +.PP +These may be followed by any number of options, each indicated with a +minus character, followed by the option character and then the type +characters of any arguments it requires. +.PP +For instance, the following Alphabet declaration: +.EX + /mount [-abc] [-x /string] /wfd /string -> /status +.EE +can be represented by the signature +.BR `` rws-a-b-xs-c ''. +.SS "Typesets and proxies" +The root typeset +(see +.IR alphabet-main(2)) +is implemented internally to the +.I alphabet +module. All other types are defined by +.I external +typesets. +.PP +An external +.I alphabet +typeset is conventionally represented by two header files +defining the interface to the typeset, and two modules +giving its implementation. Suppose we are to +create a new typeset, say +.B /foo . +We would create the following files: +.TP 10 +.B /module/alphabet/foo.m +.B Foo.m +declares the interface used by all modules within the typeset. +The existing typeset interface files (for instance +.BR alphabet/grid.m , +documented in +.IR alphabet-grid (2)) +provide examples of this kind of interface. +.TP +.B /appl/alphabet/footypes.b +This module translates +between +.I "internal values" +(each held as a +.B Value +as declared in +.BR foo.m ) +and +.I "external values" +(each held as a +.B Value +as declared in the parent typeset, in this case by +the +.I alphabet +module itself). +Since Limbo does not provide a way of +holding an arbitrary type directly, internal +values are instead stored in a table by a local +.IR proxy +(see below), +and referred to externally by their index there. +.TP +.B /appl/alphabet/foo.b +.B Foo.b +provides the basic type-manipulation +primitives needed by the typeset, for instance +the translation from type character to type name. +It is also a convenient place to implement +helper functions to make using the typeset easier. +For instance, it is conventional for +a typeset's +.B Value +adt to contain one eponymously named member function for each +type character, making sure that the +.B Value +is actually of that type and returning the widened type, +or raising an exception otherwise. +For instance, in the root typeset, +.IB v .s() +returns the type +.BR "ref Value.S" , +or raises an error if +.I v +is not of that type. +.TP +.B /module/alphabet/footypes.m +.B Footypes.m +provides an interface to the typeset proxy module, +.BR footypes.b , +that allows direct +access to values in the +.B foo +typeset, while still allowing +manipulation of those values by an +.I alphabet +instance. +.PP + +The proxy module, +.BR footypes.b , +must define at least one function, +.BR proxy , +which returns a channel through which +all operations on the typeset take place. +The +.B Proxy +module (see +.IR alphabet-proxy (2)) +provides a generic implementation of such a translator; +if +.B footypes.b +uses this, it needs only define the mapping +between values in its parent typeset and its own values. +.PP + + +.SS "alphabet-main(2)" +.TP 10 +.B types() +.B Types +is always the first function in a module to be called. +It should do nothing but return the type signature string of the module. +.TP +.B init() +.B Init +is called to allow the module to initialise its global +state. It is called once only. +It is permissible for this function to raise a +.RB `` fail: '' +exception on failure. The text +following the +.RB `` fail: '' +prefix should describe the reason why. +.TP +\f5run\fR(\fIerrorc\fP, \fIr\fP, \fIopts\fP, \fIargs\fP) +.RS +.B Run +runs an actual instance of the module. It must be re-entrant. +The signature of the +.B run +function varies from typeset to typeset, +but usually includes the above arguments. +.I Args +holds a list of the arguments passed to the module; +.I opts +holds all the flags that have been specified. +Each flag is represented with a tuple, say: (\fIc\fR, \fIoptargs\fP), +where +.I c +gives the option character, and +.I optargs +is a list holding any arguments the flag requires. +The arguments and options passed to the module are guaranteed +to conform with the type signature returned from +.BR types . +Note that each flag may be passed multiple times to the module. +.PP +If the run succeeds, it should return the +resulting value. If the module returns a value that was passed in, +and it contains a reference-count, the count should +be incremented before returning, +If the module succeeds, it is responsible for the +disposal of any arguments and option arguments that it has been given. +Appropriate disposal depends on the type of the argument, +but +.IB v .free(0) +is always sufficient to dispose of value +.IR v . +.PP +If the run fails, it should return +.BR nil ; +its arguments will automatically be freed in this case. +.PP +While processing the +.B run +request, the module should send error and debugging diagnostics +to the +.I errorc +channel (it should take care never to send an empty string). +If it spawns any new processes, it can use the +.BR Report , +.IR r , +(see +.IR alphabet-reports (2)) +to create new diagnostic channels for these processes. +When such an diagnostic channel is no longer in use, +the module should send an empty string on it. +It should take care that +.B Report.start +is called +.I before +.B run +returns. +.RE diff --git a/man/2/arg b/man/2/arg new file mode 100644 index 00000000..4cb8d937 --- /dev/null +++ b/man/2/arg @@ -0,0 +1,168 @@ +.TH ARG 2 +.SH NAME +arg \- parse program arguments +.SH SYNOPSIS +.EX +include "arg.m"; +arg := load Arg Arg->PATH; + +init: fn(argv: list of string); +setusage: fn(s: string); +usage: fn(); +progname: fn(): string; +opt: fn(): int; +arg: fn(): string; +earg: fn(): string; +argv: fn(): list of string; +.EE +.SH DESCRIPTION +.B Arg +parses a program's argument list in a traditional form, +as received from a shell or other program +(see +.IR command (2)). +The list must be passed to +.B init +to set the state for the other functions. +.PP +.B Arg +takes the first argument to be the program name. +Subsequent calls to +.B progname +return it. +.PP +Options are arguments containing one or more letters preceded by +.B \- +(dash, hyphen, minus). +The list of options ends +before the first argument that does not begin with a +.BR \- . +Option lists also end +after an argument +.BR \-\- , +to allow programs +to accept arguments +that would otherwise look like options +(eg, file names for +.IR rm (1) +or a pattern for +.IR grep (1)). +Finally, option lists end +before an argument +.BR \- , +which is traditionally interpreted by some commands as referring to the standard input or output +(depending on context). +.PP +Successive calls to +.B opt +return option characters in turn; 0 is returned at the end of the list. +A program might take a parameter to a given option (eg, an option of the form +.BI -f file +or +.BI -f " file" \f1).\f0 +Following a call to +.BR opt , +a call to +.BR arg +will return the rest of the current argument string if not empty, +failing that, the next argument string if any, +and otherwise +.BR nil . +.B Earg +is like +.B arg +except that if there is no argument associated +with the option, an error message is printed to +standard error, and a "\f5fail:usage\fP" +exception raised. +.B Setusage +sets the error message that will be printed in +this case (preceded by +.RB ` usage: ' +and followed by a newline). +.PP +The argument list remaining after the last call to +.B opt +is returned by +.BR argv . +.SH EXAMPLE +The following Limbo program takes options +.BR b , +.B c +and +.BR f , +where +.B f +takes a file name argument. +.br +.ne 2i +.PP +.EX +.ps -1 +.vs -1 +.ta \w'12345678'u +\w'12345678'u +\w'12345678'u +\w'12345678'u +\w'12345678'u +implement Prog; +include "sys.m"; + sys: Sys; +include "draw.m"; +include "arg.m"; + arg: Arg; +Prog: module +{ + init: fn(nil: ref Draw->Context, nil: list of string); +}; + +init(nil: ref Draw->Context, args: list of string) +{ + sys = load Sys Sys->PATH; + arg = load Arg Arg->PATH; + + bflag := cflag := 0; + file := ""; + arg->init(args); + while((c := arg->opt()) != 0) + case c { + 'b' => bflag = 1; + 'c' => cflag = 1; + 'f' => file = arg->arg(); + * => sys->print("unknown option (%c)\en", c); + } + args = arg->argv(); + sys->print("%s %d %d %s\en", arg->progname(), bflag, cflag, file); + for(; args != nil; args = tl args) + sys->print("%s\en", hd args); +} +.ps +1 +.vs +1 +.EE +.PP +When invoked as follows: +.IP +.B "prog -bc -ffile a b c" +.PP +the output is: +.IP +.EX +prog 1 1 file +a +b +c +.EE +.PP +and when invoked by: +.IP +.B "./prog -b -f file -z -- -bc" +.PP +the output is: +.IP +.EX +unknown option (z) +\&./prog 1 0 file +-bc +.EE +.SH SOURCE +.B /appl/lib/arg.b +.SH SEE ALSO +.IR sh (1), +.IR mash (1), +.IR command (2) diff --git a/man/2/asn1 b/man/2/asn1 new file mode 100644 index 00000000..45613473 --- /dev/null +++ b/man/2/asn1 @@ -0,0 +1,621 @@ +.TH ASN1 2 +.SH NAME +asn1: decode, encode \- ASN.1 (X.208), BER (X.209) encoding +.SH SYNOPSIS +.EX +include "asn1.m"; +asn1 := load ASN1 ASN1->PATH; +asn1->init(); + +Elem: adt { + tag: Tag; + val: ref Value; + + is_seq: fn(e: self ref Elem): (int, list of ref Elem); + is_set: fn(e: self ref Elem): (int, list of ref Elem); + is_int: fn(e: self ref Elem): (int, int); + is_bigint: fn(e: self ref Elem): (int, array of byte); + is_bitstring: fn(e: self ref Elem): (int, int, array of byte); + is_octetstring: fn(e: self ref Elem): (int, array of byte); + is_oid: fn(e: self ref Elem): (int, ref Oid); + is_string: fn(e: self ref Elem): (int, string); + is_time: fn(e: self ref Elem): (int, string); + tostring: fn(e: self ref Elem): string; +}; + +Tag: adt { + class: int; + num: int; + constr: int; + + tostring: fn(t: self Tag): string; +}; + +Value: adt { + pick { + Bool or Int => + v: int; + Octets or BigInt or Real or Other => + bytes: array of byte; + BitString => + unusedbits: int; + bits: array of byte; + Null or EOC => + ; + ObjId => + id: ref Oid; + String => + s: string; + Seq or Set => + l: list of ref Elem; + } + + tostring: fn(v: self ref Value): string; +}; + +Oid: adt { + nums: array of int; + tostring: fn(o: self ref Oid): string; +}; + +init: fn(); +decode: fn(a: array of byte): (string, ref Elem); +decode_seq: fn(a: array of byte): (string, list of ref Elem); +decode_value: fn(a: array of byte, kind, constr: int): + (string, ref Value); +encode: fn(e: ref Elem): (string, array of byte); +oid_lookup: fn(o: ref Oid, tab: array of Oid): int; +print_elem: fn(e: ref Elem); + +.EE +.SH DESCRIPTION +.B ASN1 +supports decoding and encoding of the ASN.1 Basic Encoding Rules +(BER, ITU-T Recommendation X.209). +Despite its name, the module is not a parser for Abstract Syntax Notation One +(ASN.1, ITU-T Recommendation X.208). +.PP +.B ASN1 +handles the BER encodings of all types from the ASN.1 Universal class, and +provides a simple OBJECT IDENTIFIER comparison facility. +.PP +For simplicity, +.B ASN1 +does not take a description of the ASN.1 module of the data being +processed. +Consequently, the (de)composition of tagged types must be performed by the +application. +.B ASN1 +does not know the +context of tagged values and so cannot determine the underlying Universal type +to be able to encode or decode the value automatically. +See the section on Tagging for details on how the application +should handle both implicit and explicit tagging. +.TP +.B init() +The module must be initialised by calling this function +before any other module functions or associated adt member functions are called. +.TP +.BI decode( a ) +Convert the BER encoding given by the byte array +.I a +into an +.B Elem +representing the ASN.1 value. +The byte array must contain +the entire BER encoding of the value and any component values. +.IP +Item values not tagged as a Universal type are converted to an +.B Elem +comprised of the decoded +.B Tag +and a +value given by the +.B Value.Octets +variant, which contains +the original encoding of the value +stripped of the BER tag and length header. +.IP +The function returns a tuple composed of an error string and +the decoded +.BR Elem . +If no errors are encountered the error string is nil. +.TP +.BI decode_seq( a ) +Like +.B decode +except that the data in +.I a +is the encoding of an item of type SEQUENCE, SEQUENCE OF, SET or SET OF +which has been stripped of its tag and length header. +The function decodes all of the items in the SEQUENCE or SET. +.IP +The return value is a tuple composed of an error string and the list of +.BR Elem s +forming the SEQUENCE or SET. +.HP +.BI decode_value( a , +.IB kind , +.IB constr ) +.br +Convert the encoding of a single item value to a +.B Value +data structure. +.IP +The array +.I a +does not include the tag and length header. +Instead, the value's Universal type is given by the +.I kind +argument and length is given by that of the array. +The +.B constr +argument indicates if the encoding is in the BER +constructed form or not. +A value of 0 indicates that the primitive encoding is used, all other values +indicate the constructed encoding. +.IP +The function returns a tuple composed of an error string and a +.B Value +reference. +.TP +.BI encode( e ) +Convert the +.B Elem +.I e +to a BER encoding of the element. +If the element is of a structured type, such as SEQUENCE or SET, +then all component values are also exhaustively encoded. +.IP +The encoding can fail if the +.B Tag +and +.B Value +of the element are not compatible. +The +.I constr +field of the +.B Tag +is currently ignored. +.IP +The function returns a tuple comprising an error string and +the BER encoding. +If no errors are encountered the error string is nil and the +second part of the returned tuple is a byte array of the +BER encoding. +.TP +.BI oid_lookup( o ", " tab ) +Lookup an OBJECT IDENTIFIER value in an array of such values. +Returns the index of the first exact match of +.I o +in the +.I tab +array. +Returns -1 if no match is found. +.TP +.BI print_elem( e ) +Print a textual representation of the element to standard output. +The output is that given by +.BR Elem.tostring() , +followed by a newline character. +.SS "Elem adt" +This is the principal data structure, representing the value of an ASN.1 item. +The adt couples a data representation, the +.BR Value , +with its type specifier, the +.BR Tag . +.TP +.B "Elem.tag" +Specifies the ASN.1 type of the element value. +See the description of the +.B Tag +adt for more details. +.TP +.B "Elem.val" +The value of the element. +See the description of the +.B Value +adt for more details. +.PP +All of the +.IB e .is_ Type +member functions test whether the specific +.B Value +pick variant of +.B Elem.val +and the ASN.1 Universal type, given by +the tag, match and are of the requested form. +A successful match yields the type specific data from the +.B Value +pick variant. +The association of Universal types to +.B Value +pick variants is given in the section on the +.B Value +adt. +.PP +The function +.IB e .is_int +succeeds for BOOLEAN and INTEGER ASN.1 types. +The function +.IB e .is_string +succeeds for all of the ASN.1 Universal string types. +.PP +Except for +.BR is_bitstring , +each function returns a tuple of two values. +The first tuple item is an integer, 1 for success, 0 for failure. +The second item is the type specific data from the +.B Value +pick variant. +.PP +.TP +.IB e ".is_bitstring()" +Like the +.BI is_ Type +functions described above. +Tests that the element is a BIT STRING and returns its data. +.IP +The return value is a tuple comprised of two integers and an array of bytes. +The byte array represents the bit string. +The first integer is 1 for success, 0 for failure. +The second integer is the number of unused bits in the last byte of the data +array. +See the description of the +.B Value.BitString +variant for more information. +.TP +.IB e ".tostring()" +returns a textual representation of the element formed by joining +the strings returned from +.IB e ".tag.tostring()" +and +.IB e ".val.tostring()" . +.PP +.SS "Tag adt" +The +.B Tag +adt denotes the ASN.1 type of a +.B Value +instance. +.TP +.B "Tag.class" +Specifies the class of the type and can take one of the values: +.BR ASN1->Universal , +.BR ASN1->Application , +.B ASN1->Context +or +.BR ASN1->Private . +.TP +.B "Tag.num" +Identifies the particular type, or tag, within the specified class. +Tag numbers for the Universal class are given in the +.B asn1.m +header file. +The inconsistent use of upper-case and mixed-case identifiers comes +straight from the ITU-T Recommendation. +.TP +.B "Tag.constr" +This flag is set by the +.B ASN1 +decode functions to mark if the BER +.I constructed +encoding was used for the value. +A zero value indicates the BER primitive encoding, non-zero indicates +the constructed encoding. +.TP +.IB t ".tostring()" +Returns a string representation of the +.BR Tag . +For Universal class tags the function returns +the string +.RB `` UNIVERSAL +.IR "Name" '', +where +.I Name +is the standard name of the specified Universal type. +For other classes the function returns the class name, in upper-case, +followed by the tag number. +.SS "Value adt" +This pick adt provides the representation for values of each of the various +Universal class types. +Values of all other classes are represented by the +.B Value.Octets +branch of the pick. +.TP +.IB v ".tostring()" +Returns a string representation of the +.BR Value . +.PP +The following table lists +each variant of the pick, indicating the ASN.1 Universal type values +it represents, followed by a brief description. +For each variant of the pick, +.I v +is taken to be of that particular type. +.TP +.B Value.Bool +BOOLEAN +.IP +.IB v .v +equals zero for FALSE, non-zero values represent TRUE. +.TP +.B Value.Int +INTEGER, ENUMERATED +.IP +The value is given by +.IB v .v +.TP +.B Value.BigInt +Used for INTEGER values too large to fit a Limbo int. +.IP +The array +.IB v .bytes +contains the encoding of the value. +The array does not include the tag and length prefix. +.TP +.B Value.Octets +OCTET_STRING, ObjectDescriptor +.IP +The octet string is given by the +.IB v .bytes +array. +.TP +.B Value.Null +NULL +.TP +.B Value.ObjId +OBJECT_ID +.IP +The OBJECT_ID value is represented by the +.B Oid +adt given by +.IB v .id . +.TP +.B Value.Real +REAL +.IP +.B ASN1 +does not convert the value into the Limbo +.B real +data type. +The encoding of the value is given by the +.IB v .bytes +array, which does not include the tag and length prefix. +.TP +.B Value.Other +EXTERNAL, EMBEDDED_PDV and Unknown Universal types +.IP +The raw bytes of the value, excluding the tag nad length header, +are given by the +.IB v .bytes +array. +.TP +.B Value.BitString +BIT_STRING +.IP +The number of bits in the BIT_STRING value does not have to be +a multiple of 8. +Bits are packed into bytes MSB first. +The bytes representing the BIT_STRING value, including the potentially +incomplete last byte, are given by the +.IB v .bits +array. +The number of unused bits in the last byte of the array is given by +.IB v .unused , +counting from the LSB. +.IP +The BER constructed encoding of values other than zero-length is not implemented. +.TP +.B Value.EOC +End of Contents octets marker. +.IP +This value is not normally returned to the application; it is used +privately by BER to support indefinite length value encodings. +.TP +.B Value.String +NumericString, PrintableString, TeletexString, +VideotexString, IA5String, UTCTime, +GeneralizedTime, GraphicString, VisibleString, +GeneralString, UniversalString or BMPString. +.IP +The text is given by the +.IB v .s +Limbo string. +Currently no character-set conversion is performed between +the ASN.1 string byte codes and the Unicode code-points of the Limbo string. +.TP +.B Value.Seq +SEQUENCE, SEQUENCE OF +.IP +ASN.1 assigns both constructs the same type tag. +The difference between them is that, within the +ASN.1 notation, the elements +of a SEQUENCE OF structure are constrained to be of the same type. +BER and, consequently, +.B ASN1 +do not directly enforce the restriction. +.IP +The elements of the sequence are given by the +.IB v .l +list. +.TP +.B Value.Set +SET, SET OF +.IP +ASN.1 assigns both constructs the same type tag. +The difference between them is that, within the ASN.1 notation, +SET items are formed from an unordered list of distinct types, whereas +SET OF items are formed from an unordered list of the same type. +BER and +.B ASN1 +do not enforce these constraints. +.IP +The elements of the set are given by the +.IB v .l +list. +.SS "Oid adt" +The +.B Oid +adt provides the value representation for OBJECT IDENTIFERs. +Within the ASN.1 notation OBJECT IDENTIFIERs ultimately map +to an ordered list of INTEGERs. +.TP +.B Oid.nums +The value of the OBJECT IDENTIFIER, given as an +.BR "array of int" . +.TP +.IB o .tostring() +Returns a textual representation of the OBJECT IDENTIFIER in the +form of a `.' separated list of numbers. +.SS Tagging +Tagging is an ASN.1 mechanism for disambiguating values. +It is usually applied to component types, where several components +of a structured type have the same underlying Universal class type. +Tagging allows the client application to determine to which item of the +structured type a value instance belongs. +.PP +There are two types of tagging, implicit and explicit, defining +the manner in which the values are encoded. +.PP +Implicitly tagged values are encoded in the same way as the underlying type, +but with the tag class and number replaced by that specified. +.PP +Explicitly tagged values are encoded in a nested fashion. +The outermost item bears the specified tag and its contents is the +full encoding of the original value using the tag of its underlying type. +.PP +The following examples of how to decode and encode simple tagged types +should make the distinction clear. +.SS "Decoding Tagged Values" +Consider the following ASN.1 type definitions: +.PP +.EX + Type1 ::= INTEGER + Type2 ::= [Application 2] Type1 -- Explicitly tagged + Type3 ::= [3] IMPLICIT Type1 -- Implicitly tagged + +.EE +For each of the types +the value 16r55 will be decoded as follows: +.PP +.EX + (error, elem) := asn1->decode(data); +.EE +.TP +.BR Type1 " (primitive type)" +.EX +elem.tag.class == Universal +elem.tag.num == INTEGER +tagof elem.val == tagof Value.Int +elem.is_int() == (1, 16r55) +.EE +.TP +.BR Type2 " (explicitly tagged)" +.EX +elem.tag.class == Application +elem.tag.num == 2 +tagof elem.val == tagof Value.Octets + +.EE +The +.B bytes +array of the +.B Value.Octets +value contains the complete encoding of the +.B Type1 +value. +The actual value can be obtained as follows: +.IP +.EX +pick v := elem.val { +Octets => + (err2, e2) := asn1->decode(v.bytes); +} +.EE +with +.B e2 +having exactly the same properties as +.B elem +in the +.B Type1 +case above. +.TP +.BR Type3 " (implicitly tagged)" +.EX +elem.tag.class == Context +elem.tag.num == 3 +tagof elem.val == tagof Value.Octets + +.EE +In this case the +.B bytes +array of the +.B Value.Octets +value contains the encoding of just the value part of the Type1 value, +not the complete encoding. +The actual value can be obtained as follows: +.IP +.EX +pick v := e.val { +Octets => + constr := e.tag.constr; + (err, val) := asn1->decode_value(v.bytes, INTEGER, constr); +} + +.EE +Note that the application has to infer the type of the value from +the context in which it occurs. +The resultant +.B val +is of the type +.B Value.Int +with the value 16r55 stored in the +.B v +member variable. +.SS "Encoding Tagged Values" +To encode the value 16r55 in each of the above types, the following +data structures are required. +.TP +.BR Type1 "(primitive type)" +.EX +tag := Tag(Universal, INTEGER, 0); +val := Value.Int(16r55); +elem := ref Elem(tag, val); +(err, data) := asn1->encode(elem); +.EE +.TP +.BR Type2 "(explicitly tagged)" +.EX +tag1 := Tag(Universal, INTEGER, 0); +val1 := Value.Int(16r55); +elem1 := ref Elem(tag1, val1); +(err1, data1) := asn1->encode(elem1); +tag2 := Tag(Application, 2, 0); +val2 := Value.Octets(data1); +elem2 := ref Elem(tag2, val2); +(err, data) := asn1->encode(elem2); +.EE +.TP +.BR Type3 "(implicitly tagged)" +.EX +tag := Tag(Context, 3, 0); +val := Value.Int(16r55); +elem := ref Elem(tag, val); +(err, data) := asn1->encode(elem); +.EE +.SH SOURCE +.B /appl/lib/asn1.b +.SH BUGS +It is irritating that REAL values are not converted by the module. +This forces the application to do the conversion to and from the +raw BER encoding. Fortunately they are rarely used. +.PP +String encodings are converted as UTF-8 byte sequences. +This will result in strings comprising any character codes above 127 +being incorrectly converted. +.PP +There is a particular form of BER encoding that the module will +handle incorrectly, resulting in a decoding error. +The error occurs when a tagged value is encoded using the +indefinite length specifier and the constructed representation. diff --git a/man/2/attrdb b/man/2/attrdb new file mode 100644 index 00000000..3e35e47f --- /dev/null +++ b/man/2/attrdb @@ -0,0 +1,237 @@ +.TH ATTRDB 2 +.SH NAME +attrdb \- database of attribute-value pairs +.SH SYNOPSIS +.EX +include "bufio.m"; +include "attrdb.m"; +attrdb := load Attrdb Attrdb->PATH; + +Attr: adt { + attr: string; + val: string; + tag: int; # application-defined data, initially 0 +}; + +Tuples: adt { + n: int; + pairs: list of ref Attr; + + hasattr: fn(t: self ref Tuples, attr: string): int; + haspair: fn(t: self ref Tuples, + attr: string, value: string): int; + find: fn(t: self ref Tuples, attr: string): list of ref Attr; + findbyattr: fn(t: self ref Tuples, + attr: string, value: string, rattr: string): + list of ref Attr; +}; + +Dbentry: adt { + n: int; + lines: list of ref Tuples; + + find: fn(e: self ref Dbentry, attr: string): + list of (ref Tuples, list of ref Attr); + findfirst: fn(e: self ref Dbentry, attr: string): string; + findpair: fn(e: self ref Dbentry, + attr: string, value: string): + list of ref Tuples; + findbyattr: fn(e: self ref Dbentry, + attr: string, value: string, rattr: string): + list of (ref Tuples, list of ref Attr); +}; + +.ig +Dbptr: adt { + dbs: list of ref Dbf; + index: ref Index; + pick{ + Direct => + offset: int; + Hash => + current: int; + next: int; + } +}; + +Index: adt { + fd: ref Sys->FD; + attr: string; + mtime: int; + size: int; +}; + +Dbf: adt { + fd: ref Bufio->Iobuf; + name: string; + mtime: int; + indices: list of ref Index; + + open: fn(path: string): ref Dbf; + sopen: fn(data: string): ref Dbf; +}; +.. + +Db: adt { + open: fn(path: string): ref Db; + sopen: fn(data: string): ref Db; + append: fn(db1: self ref Db, db2: ref Db): ref Db; + + find: fn(db: self ref Db, start: ref Dbptr, + attr: string): (ref Dbentry, ref Dbptr); + findpair: fn(db: self ref Db, start: ref Dbptr, + attr: string, value: string): + (ref Dbentry, ref Dbptr); + findbyattr: fn(db: self ref Db, start: ref Dbptr, + attr: string, value: string, rattr: string): + (ref Dbentry, ref Dbptr); +}; + +init: fn(): string; + +parseentry: fn(s: string, lno: int): (ref Dbentry, int, string); +parseline: fn(s: string, lno: int): (ref Tuples, string); +.EE +.SH DESCRIPTION +.B Attrdb +fetches data from textual databases that contain groups of attribute-value pairs. +The format is defined by +.IR attrdb (6). +.PP +.B Init +must be called before any other function in the module. +.PP +Each logical database is represented by a +.B Db +value. +It can span several physical files, named in the body of a +.B database +attribute in the primary file of the database. +(If no such attribute appears, there is just the one physical file in the database.) +.TP +.BI Db.open( path ) +Opens +.I path +as a database, and +returns a (reference to a) +.B Db +value that represents it. +On an error, it returns nil and the system error string contains a diagnostic. +If +.I path +contains a +.B database +attribute with associated attributes of the form +.BI file= filename, +the logical database is formed by (logically) concatenating the contents +of each +.I filename +in the order listed. +See +.IR attrdb (6) +for details. +.TP +.BI Db.sopen( data ) +Treat the contents of the string +.I data +as a database, and return a +.B Db +value representing it. +.TP +.IB db1 .append( db2 ) +Return a +.B Db +value that represents the result of logically appending +the contents of database +.I db2 +to +.IR db1 . +.TP +.IB db .find( ptr , attr ) +Starting at +.IR ptr , +look in +.I db +for the next entry that contains an attribute +.I attr +and return a tuple +.BI ( e , ptr ) +where +.I e +is a +.B Dbentry +value representing the whole entry, and +.I ptr +is a database pointer for the next entry. +If +.I attr +cannot be found, +.I e +is nil. +.TP +.IB db .findpair( ptr\fP,\fP\ attr\fP,\fP\ value\fP) +Starting at +.IR ptr , +look in +.I db +for the next entry that contains the pair +.IB attr = value, +and return a tuple +.BI ( e , ptr ) +where +.I e +is a +.B Dbentry +value representing the whole entry, and +.I ptr +is a database pointer for the next entry. +If the given pair +cannot be found, +.I e +is nil. +.TP +.IB db .findbyattr( ptr\fP,\fP\ attr\fP,\fP\ value\fP,\fP\ rattr\fP ) +Starting at +.I ptr +in +.IR db , +look for the next entry containing both the pair +.IB attr = value +and a pair with attribute +.IR rattr ; +return a tuple +.BI ( e , ptr ) +where +.I e +is a +.B Dbentry +value representing the whole entry, and +.I ptr +is a database pointer for the next entry. +If no such entry can be found, +.I e +is nil. +.PP +.B Parseline +takes a line containing a set of space-separated +.IB attribute = value +pairs, and returns a tuple +.BI ( ts , err ) . +If the line's syntax is correct, +.I ts +is a +.B Tuples +value that represents the pairs as a list of +.B Attr +values. +If the syntax is wrong (eg, unmatched quote), +.I ts +is nil and +.I err +contains a diagnostic. +.SH SOURCE +.B /appl/lib/attrdb.b +.SH SEE ALSO +.IR cfg (2), +.IR attrdb (6), +.IR ndb (6) diff --git a/man/2/bloomfilter b/man/2/bloomfilter new file mode 100644 index 00000000..fe6046dd --- /dev/null +++ b/man/2/bloomfilter @@ -0,0 +1,89 @@ +.TH BLOOMFILTER 2 +.SH NAME +Bloomfilter \- Bloom filters +.SH SYNOPSIS +.EX +include "sets.m"; +include "bloomfilter.m"; +bloomfilter := load Bloomfilter Bloomfilter->PATH; + +init: fn(); +filter: fn(d: array of byte, logm, k: int): Sets->Set; +.EE +.SH DESCRIPTION +A Bloom filter is a method of representing a set to support probabilistic +membership queries. It uses independent hash functions of members +of the set to set elements of a bit-vector. +.I Init +should be called first to initialise the module. +.I Filter +returns a Set +.I s +representing the Bloom filter for the single-member +set +.RI { d }. +.I K +independent hash functions are used, each of range +.RI "[0, 2^" logm ), +to return a Bloom filter +.RI 2^ logm +bits wide. It is an error if +.I logm +is less than 3 or greater than 30. +.PP +Bloom filters can be combined by set union. +The set represented by Bloom filter +.I a +is not a subset of another +.I b +if there are any members in +.I a +that are not in +.IR b . +Together, +.IR logm , +.IR k , +and +.IR n +(the number of members in the set) +determine the +.I "false positve" rate +(the probability that a membership test will not eliminate +a member that is not in fact in the set). +The probability of a +.I "false positive" +is approximately (1-e^(-\fIkn\fP/(2^\fIlogm\fP))^\fIk\fP. +For a given false positive rate, +.IR f , +a useful formula to determine appropriate parameters +is: \fIk\fP=ceil(-log₂(\fIf\fP)), +and \fIlogm\fP=ceil(log₂(\fInk\fP)). +.SH EXAMPLES +Create a 128 bit-wide bloom filter +.I f +representing all the elements +in the string array +.IR elems , +with +.IR k =6. +.EX + A, B, None: import Sets; + for(i:=0; i<len elems; i++) + f = f.X(A|B, filter(array of byte elems[i], 7, 6)); +.EE +Test whether the string +.I s +is a member of +.IR f . +If there were 12 elements in +.IR elems , +the probability of a false positive would be +approximately 0.0063. +.EX + if(filter(array of byte s, 7, 6).X(A&~B, f).eq(None)) + sys->print("'%s' might be a member of f\\n", s); +.EE +.SH SOURCE +.B /appl/lib/bloomfilter.b +.SH SEE ALSO +.IR sets (2) diff --git a/man/2/bufio b/man/2/bufio new file mode 100644 index 00000000..22f454a8 --- /dev/null +++ b/man/2/bufio @@ -0,0 +1,318 @@ +.TH BUFIO 2 +.SH NAME +bufio, bufiofill \- buffered input/output module +.SH SYNOPSIS +.EX +include "bufio.m"; + +bufio := load Bufio Bufio->PATH; +Iobuf: import bufio; + +SEEKSTART: con Sys->SEEKSTART; +SEEKRELA: con Sys->SEEKRELA; +SEEKEND: con Sys->SEEKEND; + +OREAD: con Sys->OREAD; +OWRITE: con Sys->OWRITE; +ORDWR: con Sys->ORDWR; + +EOF: con -1; +ERROR: con -2; + +Iobuf: adt { + seek: fn(b: self ref Iobuf, n: big, where: int): big; + offset: fn(b: self ref Iobuf): big; + + read: fn(b: self ref Iobuf, a: array of byte, n: int): int; + write: fn(b: self ref Iobuf, a: array of byte, n: int): int; + + getb: fn(b: self ref Iobuf): int; + getc: fn(b: self ref Iobuf): int; + gets: fn(b: self ref Iobuf, sepchar: int): string; + gett: fn(b: self ref Iobuf, sepstring: string): string; + + ungetb: fn(b: self ref Iobuf): int; + ungetc: fn(b: self ref Iobuf): int; + + putb: fn(b: self ref Iobuf, b: byte): int; + putc: fn(b: self ref Iobuf, c: int): int; + puts: fn(b: self ref Iobuf, s: string): int; + + flush: fn(b: self ref Iobuf): int; + close: fn(b: self ref Iobuf); + + setfill: fn(b: self ref Iobuf, f: BufioFill); +}; + +open: fn(name: string, mode: int): ref Iobuf; +create: fn(name: string, mode, perm: int): ref Iobuf; +fopen: fn(fd: ref Sys->FD, mode: int): ref Iobuf; +aopen: fn(a: array of byte): ref Iobuf; +sopen: fn(s: string): ref Iobuf; + +BufioFill: module +{ + fill: fn(b: ref Bufio->Iobuf): int; +}; +.EE +.SH DESCRIPTION +.B Bufio +provides an interface for buffered I/O. +A buffer is an adt which +is created with +.BR open , +.BR fopen , +.BR create , +.B aopen +and +.BR sopen . +.PP +.B Open +takes two parameters, a +.I filename +and a +.IR mode . +The mode must be +one of +.BR OREAD , +.BR OWRITE , +or +.B ORDWR +(also defined in the +.B Sys +module). +.PP +.B Create +is similar, but +creates a new file if necessary, with file permissions +specified by +.IR perm +(see +.B create +in +.IR sys-open (2)), +or truncates an existing file (without changing its permissions), +before opening it in the given +.IR mode , +and returning a reference to an +.B Iobuf +instance. +.PP +Buffered I/O on an already open file is made possible using +.BR "fopen" , +which takes a file descriptor +.I fd +and an open +.IR mode , +which must be compatible with the mode of the file descriptor. +.PP +The file open functions return a +.B ref +.B Iobuf +to be used in subsequent calls. Thus: +.PP +.EX + lc := bufio->open("/net/tcp/0/local", bufio->OREAD); + addr := lc.gets('\en'); + lc = nil; +.EE +.PP +will open the file +.B /net/tcp/0/local +and read a line (including the terminating newline +character) from this file to initialize the string variable +.BR addr . +The file is closed implicitly by discarding (assigning +.B nil +to) the only +reference to its +.BR Iobuf . +.PP +The function +.B aopen +makes the contents of an array of byte +.I a +readable through an Iobuf (it may not be written). +The function +.B sopen +similarly makes the contents of a string +.I s +readable. +.PP +Processes can share the same instance of +.B Bufio +and safely open and close different files concurrently, but two processes must not access the same +.B Iobuf +concurrently; they must coordinate their access using some external mechanism +(eg, +.IR lock (2)). +.PP +Each output file must be flushed or closed individually (see +.B flush +and +.B close +operations below). +.PP +The calls implemented by +.B Iobuf +are: +.PP +.TF setfill +.PD +.TP +.BR seek , \ read ", and " write +Each has the same parameters as its complement in +.B Sys +(see +.IR sys-seek (2), +.IR sys-read (2)). +Note that +.BR SEEKSTART +etc. are defined by +.B Bufio +as well as by +.BR Sys , +for use by +.BR seek . +.TP +.B offset +Return the current file offset in bytes, taking account of buffered data. +.TP +.B getb +Read a single byte from the buffered stream and return its value +as an +.BR int . +.TP +.B getc +Read a single Unicode character, encoded in UTF +(see +.IR utf (6)), +and +return its value as an +.BR int . +.TP +.B gets +Read a line, up to and including a character specified by +.IR sepchar , +typically a newline. +If none is found, read to the end of the file. +The returned string includes the terminating character. +.TP +.B gett +Read characters until one of the characters in +.IR sepstring . +The returned string includes the separator. +If none of the separator characters is found, +read to the end of the file. +.TP +.BR ungetb , \ ungetc +Undoes the effect of the last +.B getb +or +.BR getc , +so that a subsequent read will reread the byte +.RB ( ungetb ), +or reread the byte(s) of a UTF-encoded character +.RB ( ungetc ) +.TP +.BR putb , \ putc ", and " puts +Each +writes its argument, a byte, a character, or +a string, respectively. +Text is encoded in UTF. +.TP +.B setfill +Associates a +.B BufioFill +module instance +.I f +with +.B Iobuf +.IR b ; +discussed below. +.TP +.B flush +Flush remaining data in the buffer, if necessary. +For files opened for writing, data is flushed to the file. +For files opened for reading, any internally buffered data is discarded, +and the next read will read from the file. +.TP +.B close +Flush remaining data in the buffer, if necessary, close the +associated file, and discard buffers associated with the file. +After close, no further method calls are allowed on the +.B iobuf +adt. +.PP +The +.B BufioFill +module interface can be ignored by most applications. +It allows an +.B Iobuf +to be used to read data from an arbitrary source. +There is no `standard' implementation to load. +Instead, +an application using this interface uses a separate +.B BufioFill +module instance such as +.IR bufio-chanfill (2), +or provides one itself using +.IR sys-self (2). +The resulting module reference is associated, +using +.BR setfill , +with an +.B Iobuf +previously obtained by +.BR sopen +(the string parameter limits the buffer space allocated). +It is up to the +.B BufioFill +module's implementation how its +.B fill +function replenishes the buffer; +it should return the number of bytes now in the buffer, or +.BR Bufio->EOF . +.SH SOURCE +.B /appl/lib/bufio.b +.SH SEE ALSO +.IR bufio-chanfill (2), +.IR intro (2), +.IR sys-open (2), +.IR sys-read (2), +.IR sys-seek (2) +.SH DIAGNOSTICS +Calls that return a +.B ref +type +(eg. +.RB open , +.BR fopen , +.BR gets , +and +.BR gett ) +return +.B nil +when encountering end of file or errors. When an error occurs, the +error string, printable with the +.B %r format, +will usually be set as a consequence of an error in the underlying +.B Sys +module. +The other calls return +.B EOF +upon encountering end of file, and +.B ERROR +when encountering other errors. +.SH BUGS +A given +.B Iobuf +instance may not be accessed concurrently. +.PP +An +.B Iobuf +instance must be manipulated by the same module instance that created it. +.PP +The +.B BufioFill +interface is subject to change. diff --git a/man/2/bufio-chanfill b/man/2/bufio-chanfill new file mode 100644 index 00000000..f5908dd3 --- /dev/null +++ b/man/2/bufio-chanfill @@ -0,0 +1,57 @@ +.TH BUFIO-CHANFILL 2 +.SH NAME +bufio: chanfill \- buffered I/O interface to named channel +.SH SYNOPSIS +.EX +include "bufio.m"; +chanfill := load ChanFill ChanFill->PATH; + +init: fn(data: array of byte, fid: int, + wc: Sys->Rwrite, r: ref Sys->FileIO, + b: Bufio): ref Bufio->Iobuf; +fill: fn(b: ref Bufio->Iobuf): int; +.EE +.SH DESCRIPTION +.B ChanFill +is an implementation of +.B BufioFill +(see +.IR bufio (2)) +that refills an +.B Iobuf +as data is written to a file created by +.IR sys-file2chan (2), +which is allowed only one writer. +.B Init +returns an +.B Iobuf +allocated from the +.B Bufio +instance +.IR b , +that when read will return data written to the file by another process. +.IR Data , +.IR fid +and +.IR wc +are the values in the tuple presented by +.B Sys->file2chan +on the first write. +.I Data +becomes the initial data for the +.BR Iobuf ; +.B init +replies to the writer on +.IR wc . +The other values are saved for use by +.BR fill : +on later calls to +by +.B Bufio +to refill the buffer, +.B fill +waits for a new write request on +.IB fio .write +and either fills the buffer or signals end-of-file appropriately. +.SH SEE ALSO +.IR bufio (2) diff --git a/man/2/cfg b/man/2/cfg new file mode 100644 index 00000000..f7dbaf5e --- /dev/null +++ b/man/2/cfg @@ -0,0 +1,159 @@ +.TH CFG 2 +.SH NAME +Cfg, Record, Tuple, Attr \- configuration file parser +.SH SYNOPSIS +.EX +include "cfg.m"; +cfg := load Cfg Cfg->PATH; + +Attr: adt { + name: string; + value: string; +}; + +Tuple: adt { + lnum: int; + attrs: list of Attr; + lookup: fn(t: self ref Tuple, name: string): string; +}; + +Record: adt { + tuples: list of ref Tuple; + lookup: fn(r: self ref Record, name: string) + : (string, ref Tuple); +}; + +init: fn(path: string): string; +lookup: fn(name: string): list of (string, ref Record); +getkeys: fn(): list of string; + +.EE +.SH DESCRIPTION +.B Cfg +parses its configuration file format into a set of +.BR Record s. +.PP +Each line of the configuration file is comprised of a tuple of attributes. +Comments are introduced by the +.RB ' # ' +character and run to the end of the input line. +Empty lines and comments are ignored. +.PP +An attribute has a name followed by an optional value. +The value is specified by separating the name and value +by an +.RB ' = ' +character. +Attribute names and values are input +.IR words . +A word is delimited by spacing characters and the +.RB ' = ' +character. +If a word needs to include any of these characters then the word may be +quoted using single or double quotes. +The start and end quotes must be the same. +The quoting character may be included in the word by appearing twice. +.PP +Examples: +.EX + 'a b c' yields a b c + "a b c" yields a b c + 'a " c' yields a " c + 'a '' c' yields a ' c +.EE +.PP +The name of the first attribute of a tuple is its +.IR key . +The +.I primary tuple value +is the value of its first attribute. +.PP +Tuples whose first attribute name appears at the start of a line (having no +preceeding spacing characters) +are treated as the start of a new record. +A record incorporates all tuples up to the start of the next record. +The +.I record key +is defined to be the name of its first attribute. +The +.I primary record value +is the value of the first attribute. +.PP +The +.B adt +types +.BR Attr , +.B Tuple +and +.B Record +are direct analogues of the constructs defined above. +.P +.TP +.BI init( path ) +.B Init +initialises the +.B Cfg +module, causing it to open and parse the configuration file +given by the +.I path +argument. +If an error is encountered in processing the file then +an error string is returned. +If there are no errors +.B init +returns +.BR nil . +.TP +.BI lookup( name ) +.B Lookup +returns +the set of +.BR Record s +whose +.I key +matches the +.I name +argument. +The return value is a list of +.RI ( "primary record value" , " record" ) +pairs. +.TP +.B getkeys() +.B Getkeys +returns a list of the record keys that appear in the configuration file. +Note that more than one record can have the same key. +Duplicate key names are not returned by +.BR getkeys() . +.TP +.IB record .lookup( name ) +Returns the first tuple in +.I record +whose key matches +.IR name . +The return value is +.RI ( "primary tuple value" , " tuple" ). +If no matching tuple is found then the value +.B (nil, nil) +is returned. +Note that more than one tuple of the record could have a +.I key +that matches +.IR name . +Only the first matching tuple is returned. +If an application makes use of +multiple tuples with the same +.I key +then the +.IB record .tuple +list will have to be handled explicitly by the application. +.TP +.IB tuple .lookup( name ) +Returns the first attribute in +.I tuple +whose name matches +.IR name . +The return value is the value of the attribute or +.B nil +if no matching attribute was found. +.SH SOURCE +.B /appl/lib/cfg.b diff --git a/man/2/command b/man/2/command new file mode 100644 index 00000000..d46f9525 --- /dev/null +++ b/man/2/command @@ -0,0 +1,132 @@ +.TH COMMAND 2 +.SH NAME +command \- command interface +.SH SYNOPSIS +.nf +.B +include "sh.m"; +.BI "cmd := load Command" " path" ; + +.EX +PATH: con "/dis/sh.dis"; +init: fn(ctxt: ref Draw->Context, args: list of string); +.EE +.SH DESCRIPTION +.B Command +defines the module interface for programs started by the Inferno shells +.IR sh (1) +and +.IR mash (1), +and the window manager +.IR wm (1). +Applications to be run as commands must adhere to it, +and any application wishing to start another command may use it. +.PP +Every command must have an +.B init +function with the signature shown above. +Note that Limbo rules allow a module to expose a larger interface for use by +other applications (see for instance +.IR sh (2)); +provided it includes the form of +.B init +shown above, +the module can also be invoked as a command. +.PP +.B Ctxt +provides the graphics context for a windowing application, +which typically passes it to +.IR wmlib (2) +(eg, to +.IR titlebar ) +or directly to +.IR tk (2). +It is +.B nil +for commands started by the shells. +.PP +The arguments to the command are passed as a simple list of strings, +.BR args . +By convention, the name of the command or the name of its +.B .dis +file heads the list. +.PP +.B PATH +names the file containing +.IR sh (1), +(on small systems, this might actually name an +instance of +.IR tiny (1)) +but usually the path name of +another command will be given to the Limbo +.B load +operator: +.IP +.EX +include "sh.m"; +.EE +\&... +.IP +.EX +cmd := load Command "/dis/date.dis"; +cmd->init(nil, "date" :: nil); +.EE +.PP +In practice more care must be taken when invoking programs. +In the example above, the current process executes the body of +.B cmd->init +and if that executes +.BR exit , +raises an exception, +or otherwise modifies the state of the process, +the caller is affected. +The following is more prudent: +.IP +.EX +.ta 6n +6n +child(file: string, args: list of string, pidc: chan of int) +{ + pidc <-= sys->pctl(Sys->NEWFD|Sys->FORKNS|Sys->NEWPGRP, + list of {0, 1, 2}); + cmd := load Command file; + if(cmd == nil){ + sys->print("can't load %s: %r\en", file); + exit; + } + cmd->init(nil, args); +} +parent() +{ + pidc := chan of int; + spawn child(disfile, args, pidc); + pid := <-pidc; + \&... +} +.EE +.PP +A new +.B child +process runs the command only after using +.IR sys-pctl +to insulate the caller from untoward changes to its environment. +Note the idiomatic use of a channel to return the child's process ID +to its parent, which can then if desired use the +.B wait +file of +.IR prog (3) +to watch over the child and wait for its demise. +or use the +.B ctl +file of +.IR prog (3) +to dispose of it. +Furthermore, any state shared between parent and child can safely +be accessed by the child before it sends the ID +because the parent is blocked on the receive. +.SH SEE ALSO +.IR mash (1), +.IR sh (1), +.IR wm (1), +.IR sh (2), +.IR sys-pctl (2), +.IR sys-exception (2) diff --git a/man/2/convcs b/man/2/convcs new file mode 100644 index 00000000..dd0091f3 --- /dev/null +++ b/man/2/convcs @@ -0,0 +1,367 @@ +.TH CONVCS 2 +.SH NAME +Convcs, Btos, Stob \- character set conversion suite +.SH SYNOPSIS +.EX +include "convcs.m"; +convcs := load Convcs Convcs->PATH; + +Btos: module { + init: fn(arg: string): string; + btos: fn(s: Convcs->State, b: array of byte, nchars: int) + : (Convcs->State, string, int); +}; + +Stob: module { + init: fn (arg: string): string; + stob: fn(s: Convcs->State, str: string) + : (Convcs->State, array of byte); +}; + +Convcs: module { + State: type string; + Startstate: con ""; + + init: fn(csfile: string): string; + getbtos: fn(cs: string): (Btos, string); + getstob: fn(cs: string): (Stob, string); + enumcs: fn(): list of (string, string, int); + aliases: fn(cs: string): (string, list of string); +}; + +.EE +.SH DESCRIPTION +The +.I Convcs +suite is a collection of +modules for converting various standard +coded character sets and character encoding schemes +to and from the Limbo strings. +.PP +The +.B Convcs +module provides an entry point to the suite, mapping character set names and aliases +to their associated +converter implementation. +.SS "The Convcs module" +.TP +.BI init( csfile ) +.B Init +should be called once to initialise the internal state of +.BR Convcs . +The +.I csfile +argument specifies the path of the converter mapping file. +If this argument is nil, the default mapping file +.B /lib/convcs/charsets +is used. +.TP +.BI getbtos( cs ) +.B Getbtos +returns an initialised +.B Btos +module for converting from the requested encoding. +.IP +The return value is a tuple, holding the module reference and an error string. +If any errors were encountered in locating, loading or initialising the requested +converter, the module reference will be nil and the string will contain an explanation. +.IP +The character set name, +.IR cs , +is normalised by mapping all upper-case latin1 characters to lower-case before +comparison with character set names and aliases from the +.B charsets +file. +.TP +.BI getstob( cs ) +.B Getstob +returns an initialised +.B Stob +module for converting from strings to the requested encoding. +Apart from the different module type, the return value and semantics are +the same as for +.BR getbtos() . +.TP +.B enumcs() +Returns a list describing the set of available converters. +The list is comprised of +.RI ( name , +.IR desc , +.IR mode ) +tuples. +.IP +.I Name +is the standard name of the character set. +.IP +.I Desc +is a more friendly description taken directly from the +.B desc +attribute given in the +.I charsets +file. +If the attribute is not given then +.I desc +is set to +.IR name . +.IP +.I Mode +is a bitmap that details the converters available for the given character set. +Valid +.I mode +bits are +.B Convcs->BTOS +and +.BR Convcs->STOB . +For convenience, +.B Convcs->BOTH +is also defined. +.TP +.BI aliases( cs ) +Returns the aliases for the character set name +.IR cs . +The return value is the tuple +.BI ( desc ", " aliases ). +.IP +.I Desc +is the descriptive text for the character set, as returned by +.BR enumcs() . +.IP +.I Aliases +lists all the known aliases for +.IR cs . +The first name in the list is the default character set name \- the name +that all the other aliases refer to. +If the +.I aliases +list is +.B nil +then there was an error in looking up the character set name and +.I desc +will detail the error. +.SS "Using a Btos converter" +The +.B Btos +module returned by +.B getbtos() +is already initialised and is ready to start the conversion. +Conversions can be made on a individual basis, +or in a `streamed' mode. +.PP +.IB converter "->btos(" s , +.IB b , +.IB nchars ) +.RS +Converts raw byte codes of the character set encoding to a Limbo string. +.PP +The argument +.I s +is a converter state as returned from the previous call to +.B btos +on the same input stream. +The first call to +.B btos +on a particular input stream should give +.B Convcs->Startstate +(or +.BR nil) +as the value for +.IR s . +The argument +.I b +is the bytes to be converted. +The argument +.I nchars +is the maximal length of the string to be returned. +If this argument is +.B -1 +then as much of +.I b +will be consumed as possible. +A value of +.B 0 +indicates to the converter that there is no more data and +that any pending state should be flushed. +.PP +The return value of +.B btos +is the tuple +.RI ( state , +.IR str , +.IR nbytes ) +where +.I state +is the new state of the converter, +.I str +is the converted string, and +.I nbytes +is the number of bytes from +.I b +consumed by the conversion. +.PP +The same converter module can be used for multiple conversion streams +by maintaining a separate +.I state +variable for each stream. +.RE +.SS "Using an Stob converter" +The +.B Stob +module returned by +.B getstob() +is already initialised and is ready to start the conversion. +.PP +.IB converter "->stob(" s , +.IB str ) +.RS +Converts the limbo string +.I str +to the raw byte codes of the character set encoding. +The argument +.I s +represents the converter state and is treated in the same way as for +.IB converter ->btos() +described above. +To terminate a conversion +.B stob +should be called with an emtpy string in order to flush +the converter state. +.PP +The return value of +.B stob +is the tuple +.RI ( state , +.IR bytes ) +where +.I state +is the new state of the converter and +.I bytes +is the result of the conversion. +.RE +.SS "Conversion errors" +When using +.IB converter "->btos()" +to convert data to Limbo strings, +any byte sequences that are not valid for the specific character encoding scheme +will be converted to the Unicode error character 16rFFFD. +.PP +When using +.IB converter "->stob()" +to convert Limbo strings, +any Unicode characters that can not be mapped +into the character set will normally be substituted by the US-ASCII code for `?'. +Note that this may be inappropriate for certain conversions, such converters will use +a suitable error character for their particular character set and encoding scheme. +.SS "Charset file format" +The file +.B /lib/convcs/charsets +provides the mapping between character set names and their implementation modules. +The file format conforms to that supported by +.IR cfg (2). +The following description relies on terms defined in the +.IR cfg (2) +manual page. +.PP +Each record name defines a character set name. +If the primary value of the record is non-empty then the name is an alias, +the value being the real name. +An alias record must point to an actual converter record, not to another alias, as +.I Convcs +only follows one level of aliasing. +.PP +Each converter record consists of a set of tuples with the following primary attributes: +.TP +.B desc +A more descriptive name for the character set encoding. +This attribute is used for the description returned by +.BR enumcs() . +.TP +.B btos +The path to the +.B Btos +module implementation of this converter. +.TP +.B stob +The path to the +.B Stob +module implementation of this converter. +.PP +Both the +.B btos +and +.B stob +tuples can have an optional +.B arg +attribute which is passed to the +.B init() +function of the converter when initialised by +.IR Convcs . +If a converter record has neither an +.B stob +nor a +.B btos +tuple, then it is ignored. +.PP +The following example is an extract from the standard Inferno +.I charsets +file: +.PP +.EX +cp866=ibm866 +866=ibm866 +ibm866= + desc='Russian MS-DOS CP 866' + stob=/dis/lib/convcs/cp_stob.dis arg=/lib/convcs/ibm866.cp + btos=/dis/lib/convcs/cp_btos.dis arg=/lib/convcs/ibm866.cp +.EE +.PP +This entry defines +.I Stob +and +.I Btos +converters for the character set called +.BR ibm866 . +The converters are actually the generic codepage converters +.B cp_stob +and +.B cp_btos +paramaterized with a codepage file. +The entry also defines the aliases +.B cp866 +and +.B 866 +for the name +.BR ibm866 . +.SH FILES +.TP +.B /lib/convcs/charsets +The default mapping between character set names and their implementation modules. +.TP +.BI /lib/convcs/ csname .cp +Codepage files for use by the generic codepage converters +.B cp_stob +and +.BR cp_btos . +Each file consists of 256 unicode runes mapping codepage byte values to unicode by their index. +The runes are stored in the utf-8 encoding. +.SH SOURCE +.TF /appl/lib/convcs/convcs.b +.TP +.B /appl/lib/convcs/convcs.b +Implementation of the +.B Convcs +module. +.TP +.B /appl/lib/convcs/cp_btos.b +Generic +.I Btos +codepage converter. +.TP +.B /appl/lib/convcs/cp_stob.b +Generic +.I Stob +codepage converter. +.br +.PP +.SH SEE ALSO +.IR tcs (1), +.IR cfg (2) diff --git a/man/2/crc b/man/2/crc new file mode 100644 index 00000000..f3bc96c4 --- /dev/null +++ b/man/2/crc @@ -0,0 +1,62 @@ +.TH CRC 2 +.SH NAME +crc \- Crc module +.SH SYNOPSIS +.EX +include "crc.m"; +crc := load Crc Crc->PATH; + +CRCstate: adt { + crc: int; + crctab: array of int; + reg: int; +}; + +init: fn(poly: int, reg: int): ref CRCstate; +crc: fn(state: ref CRCstate, buf: array of byte, nb: int): int; +reset: fn(state: ref CRCstate); +.EE +.SH DESCRIPTION +.B Crc +provides the routines to calculate the CRC (cyclic redundancy +check) over blocks of data. +.PP +.B Init +initializes the module and must be called first. The parameter +.I poly +is the polynomial to use when calculating the CRC value. If a value of +0 is given, the default polynomial 16redb88320 (8r035556101440) is used. The polynomial +has its implicit top bit set. The second parameter +.I reg +is the number with which to initialize the CRC register. This is commonly 0 but, for example, is +16rffffffff in the CRC32 algorithm. The final CRC value is also XORed with this number. +The function +returns a pointer to an adt that holds the current CRC value, +the auxiliary table the algorithm uses and the initial register value. These fields should not be accessed +directly - they are only for internal use. +.PP +.B Crc +calculates the CRC value of the first +.I nb +bytes of the array +.I buf +given the CRC state +.I state +as returned by the +.I init +function. It returns the current CRC value. It may be called repeatedly +to calculate the CRC of a series of arrays of bytes, for example, when +calculating the CRC value for the bytes in a file. +.PP +.B Reset +sets the CRC state to its initial value in readiness for a new CRC +calculation. It avoids the need to call +.I init +again. +.SH SOURCE +.B /appl/lib/crc.b +.SH SEE ALSO +.IR sum (1) + + + diff --git a/man/2/daytime b/man/2/daytime new file mode 100644 index 00000000..9e284916 --- /dev/null +++ b/man/2/daytime @@ -0,0 +1,96 @@ +.TH DAYTIME 2 +.SH NAME +daytime: text, filet, gmt, local, now, time, tm2epoch \- time conversions +.SH SYNOPSIS +.EX +include "daytime.m"; +daytime := load Daytime Daytime->PATH; + +Tm: adt +{ + sec: int; # seconds (0 to 59) + min: int; # minutes (0 to 59) + hour: int; # hours (0 to 23) + mday: int; # day of the month (1 to 31) + mon: int; # month (0 to 11) + year: int; # year-1900; 2000AD is 100 + wday: int; # day of week (0 to 6, Sunday is 0) + yday: int; # day of year (0 to 365) + zone: string; # time zone name + tzoff: int; # time zone offset (seconds from GMT) +}; + +text: fn(tm: ref Tm): string; +filet: fn(now, t: int): string; +gmt: fn(tim: int): ref Tm; +local: fn(tim: int): ref Tm; +now: fn(): int; +time: fn(): string; +tm2epoch: fn(tm: ref Tm): int; +.EE +.SH DESCRIPTION +These routines perform time conversions relative to the +epoch 00:00:00 GMT, Jan. 1, 1970. +Note the range of values for each member of the +.B Tm +adt. +The conventions are the same as those of C's +.IR ctime . +.PP +.B Text +converts a time structure referenced by +.I tm +from local or GMT time to a string in the format: +.IP +.BR "Sat Jan 1 13:00:00 GMT 2000" . +.PP +.B Filet +converts the file access or modification time +.I t +from seconds since the epoch to local time as a string +in the format: +.IP +.B "Jan 1 13:00" +.PP +if the file is less than 6 months old or +.IP +.B "Jan 1 2000" +.PP +if the file is older than 6 months, compared to the time +.IR now . +.PP +.B Gmt +converts seconds since the epoch, received in +.IR tim , +to a time structure in Greenwich Mean Time (GMT). +.PP +.B Local +converts seconds since the epoch, received in +.IR tim , +to a time structure in local time. +.PP +.B Now +returns the time in seconds since the epoch, which +it obtains by reading +.B /dev/time +(see +.IR cons (3)) +to get the time in microseconds since the epoch. +.PP +.B Time +converts seconds since the epoch +to the local time as a string in the format +.BR "Fri May 19 17:01:36 BST 2000" . +.PP +.B Tm2epoch +converts a time structure referenced by +.I tm +from local or GMT time to seconds since the epoch. +.SH SOURCE +.B /appl/lib/daytime.b +.SH SEE ALSO +.IR cons (3), +.IR sys-millisec (2) +.SH BUGS +The sign bit of a Limbo integer holding a time will turn on 68 years from the +epoch. diff --git a/man/2/dbm b/man/2/dbm new file mode 100644 index 00000000..71935a86 --- /dev/null +++ b/man/2/dbm @@ -0,0 +1,222 @@ +.TH DBM 2 +.SH NAME +Dbm: Dbf, init \- data base with hashed indexing +.SH SYNOPSIS +.EX +include "dbm.m"; + +dbm := load Dbm Dbm->PATH; +Datum, Dbf: import dbm; + +Datum: type array of byte; + +Dbf: adt { + create: fn(file: string, perm: int): ref Dbf; + open: fn(file: string, flags: int): ref Dbf; + + fetch: fn(db: self ref Dbf, key: Datum): Datum; + delete: fn(db: self ref Dbf, key: Datum): int; + store: fn(db: self ref Dbf, key: Datum, data: Datum, + replace: int): int; + + firstkey: fn(db: self ref Dbf): Datum; + nextkey: fn(db: self ref Dbf, key: Datum): Datum; + + flush: fn(db: self ref Dbf); + isrdonly: fn(db: self ref Dbf): int; +}; + +init: fn(); +.EE +.SH DESCRIPTION +.B Dbm +maintains +key/content pairs in a data base. +The functions will handle very large +(a billion blocks) +databases and will access a keyed item +in one or two filesystem accesses. +.PP +.IR Key s +and +.IR content s +are both represented by arrays of bytes +(with the synonym +.BR Datum ), +allowing +arbitrary binary values. +.PP +The data base is stored in two files. +One file is a directory containing a bit map +and has +.L .dir +as its suffix. +The second file contains all data and has +.L .pag +as its suffix. +An application can access several databases at once, but must avoid +concurrent operations on any one database (eg, by using a monitor process to control access). +.PP +.B Init +must be called before any other operation of the module. +.PP +A database is created by +.IR Dbf.create , +which accepts a file permission parameter +.IR perm , +as described for +.B Sys->create +(see +.IR sys-open (2)); +it creates the two files +.IB file .dir +and +.IB file .pag . +If successful, it returns a +.B Dbf +reference describing the database, which +is open for reading and writing. +(It will truncate an existing database.) +It returns nil if it cannot create the database for some reason, +and sets the error string. +.PP +.B Dbf.open +accepts a +.I mode +parameter as described in +.IR sys-open (2), +and opens the existing database in +.IB file .dir +and +.IB file .pag . +If successful, it returns a +.B Dbf +reference describing the database, +which is open either for reading and writing (ie, +.BR Sys->ORDWR ), +or only for reading +.RB ( Sys->OREAD ) +as determined by +.IR mode . +It returns nil if the database cannot be opened successfully, and sets the error string. +.PP +The remaining operations apply to an existing +.B Dbf +reference +.IR db : +.TP +.IB db .fetch( key ) +Return the data stored under a +.IR key ; +nil is returned if the key is not in the database. +.TP +.IB db .store( key,\ data,\ replace ) +Store +.I data +under the given +.IR key . +If +.I replace +is non-zero, +.B store +will simply replace the existing value by the new one if the key is already +in the database; +if +.I replace +is zero +.B store +will return 0 if the new item was inserted, but +1 if the key already appears in the database, +and the new value will not be stored. +.TP +.IB db .delete( key ) +.I Key +and its associated value +is removed from the database. +.TP +.IB db .firstkey() +Return the first key in the database; +return nil if the database is empty. +.TP +.IB db .nextkey( key ) +Return the key following the given +.IR key , +or nil if there is none. +.TP +.IB db .flush() +Discard any data cached from the file. +The cache is write-through, so it is not necessary to flush the file +before the application exits. +.TP +.IB db .isrdonly() +Return true if +.I db +was opened only for reading and writes are not allowed. +.SH EXAMPLE +.PP +A linear pass through all keys in a database +may be made, +in an (apparently) random order, +by use of +.B Dbf.firstkey +and +.BR Dbf.nextkey . +This code will traverse the data base: +.IP +.EX +for(key := db.firstkey(); key != nil; key = db.nextkey(key)){ + d := db.fetch(key); +} +.EE +.PP +The order of keys presented by +.B Dbf.firstkey +and +.B Dbf.nextkey +depends on a hashing function, not on anything +interesting. +.SH SOURCE +.B /appl/lib/dbm.b +.SH DIAGNOSTICS +All functions that return an +.I int +indicate errors with negative values. +A zero return indicates success. +Routines that return pointers, including values of +.BR Datum , +return nil values on error. +.B Dbf.create +and +.B Dbf.open +return nil on failure to access the database, +setting the error string to a more detailed diagnostic. +.SH BUGS +On some systems (notably Plan 9 but also some Unix systems), +the +.B .pag +file might contain holes where no data block has ever been written so +that its apparent size is about +four times its actual content. +These files cannot be copied +by normal means (cp, cat) +without filling in the holes. +.PP +Except for +.B firstkey +and +.BR nextkey , +.B Datum +values returned +by these functions +point to storage +that is changed by subsequent calls. +.PP +The sum of the sizes of a +key/content pair must not exceed +the internal block size +(currently 512 bytes). +Moreover all key/content pairs that hash +together must fit on a single block. +.B Dbf.store +will return an error in the event that +a block fills with inseparable data. diff --git a/man/2/debug b/man/2/debug new file mode 100644 index 00000000..b0cd837f --- /dev/null +++ b/man/2/debug @@ -0,0 +1,382 @@ +.TH DEBUG 2 +.SH NAME +debug \- process debugging +.SH SYNOPSIS +.EX +include "debug.m"; +debug := load Debug Debug->PATH; + +Pos: adt +{ + file: string; + line: int; + pos: int; +}; +Src: adt +{ + start: Pos; # range within source files + stop: Pos; +}; +Sym: adt +{ + srctopc: fn(s: self ref Sym, src: ref Src): int; + pctosrc: fn(s: self ref Sym, pc: int): ref Src; +}; + +Module: adt +{ + addsym: fn(m: self ref Module, sym: ref Sym); + stdsym: fn(m: self ref Module); + dis: fn(m: self ref Module): string; + sbl: fn(m: self ref Module): string; +}; + +Prog: adt +{ + cont: fn(p: self ref Prog): string; + delbpt: fn(p: self ref Prog, dis: string, pc: int): string; + event: fn(p: self ref Prog): string; + grab: fn(p: self ref Prog): string; + kill: fn(p: self ref Prog): string; + setbpt: fn(p: self ref Prog, dis: string, pc: int): string; + stack: fn(p: self ref Prog): (array of ref Exp, string); + start: fn(p: self ref Prog): string; + status: fn(p: self ref Prog): (int, string, string, string); + step: fn(p: self ref Prog, how: int): string; + stop: fn(p: self ref Prog): string; + unstop: fn(p: self ref Prog): string; +}; + +Exp: adt +{ + name: string; + m: ref Module; + + expand: fn(e: self ref Exp): array of ref Exp; + val: fn(e: self ref Exp): (string, int); + src: fn(e: self ref Exp): ref Src; + findsym:fn(e: self ref Exp): string; + srcstr: fn(e: self ref Exp): string; +}; + +init: fn(): int; +startprog: fn(dis, dir: string, ctxt: ref Draw->Context, + argv: list of string): (ref Prog, string); +prog: fn(pid: int): (ref Prog, string); +sym: fn(sbl: string): (ref Sym, string); +.EE +.SH DESCRIPTION +.B Debug +is the module interface to the debugging facilities provided by +.IR prog (3). +It allows facilities for inspection of a program's data structures, +as it is running, and to start and stop a running program +under program control. +.B Init +must be called before any other function to initialise +.IR debug 's +global state. +.PP +.B Startprog +starts up a program under control of the debug module. +.I Dis +is the full pathname of the Dis module to load (which must +be compatible with +.IR command (2); +.I dir +is the current directory in which to put the new process; +.I ctxt +and +.I argv +are the arguments given to the new process. +.B Startprog +returns a tuple +.RI ( prog ,\ err ) +where +.I prog +can be used to interrogate and control the running process, +as detailed below, unless there is an error, in which case +.I prog +will be nil, and +.I err +contains a description of the error. +.B Prog +is similar to startprog, except that it attaches to an +already running process identified by +.IR pid . +.SS Controlling a process +A +.B Prog +adt provides routines for controlling a running process. +It implements the following routines. +Unless otherwise stated, they return +.B nil +on success and a diagnostic string on error. +.TP 10 +.IB prog .cont() +Run the program until a break point is reached. +.TP +.IB prog .delbpt(\fIdis\fP,\ \fIpc\fP) +.B Delbpt +deletes the breakpoint in the Dis module with filename +.I dis +at Dis instruction +.IR pc . +.TP +.IB prog .event() +.B Event +waits for a state transition in the running +.I prog +and returns the new state, as returned by a read +of the +.B dbgctl +file (see +.IR prog (3)). +.TP +.IB prog .grab() +.B Grab +stops the +.I prog +and puts it into a state where single stepping +is possible. +.TP +.IB prog .kill() +.B Kill +kills +.IR prog . +.TP +.IB prog .setbpt(\fIdis\fP,\ \fIpc\fP) +.B Setbpt +sets a breakpoint in the Dis module with filename +.I dis +at Dis instruction +.IR pc . +.TP +.IB prog .stack() +.B Stack +returns a tuple +.RI ( exps ,\ err ) +where +.I exps +is an array of +.B Exp +adts, each representing one frame of the current +execution stack of +.IR prog . +If an error occurs, +.I exps +will be nil, and +.I err +will contain a description of the error. +.TP +.IB prog .start() +.B Start +runs +.I prog +until it hits a breakpoint or exits. +.TP +.IB prog .status() +.B Status +returns a tuple +(\fIpgrp\fP, \fPuser\fP, \fPstate\fP, \fPmodule\fP) +where +.I pgrp +is the process group id of +.IR prog , +.I user +is the owner of the process, +.I state +is the current state of the process, and +.I module +is the module implementation name of the currently +executing module. +.TP +.IB prog .step(\fIhow\fP) +.B Step +steps +.I prog +forward in a manner specified by +.IR how , +which is one of the following constants: +.RS +.TP +.B StepExp +Step one expression evaluation. +.TP +.B StepStmt +Step one source statement. +.TP +.B StepOver +Step over one called function. +.TP +.B StepOut +Step until the current function has returned. +.RE +.TP +.IB prog .stop() +Stop +.IR prog +from running. +.TP +.IB prog .unstop() +Release a program from its stopped state; +breakpoints will no longer be triggered. +.SS "Inspecting data" +The +.B Exp +adt provides facilities for inspecting +the data structures of a running Dis process. +A hierarchical data structure can be expanded into +an array of its component +.BR Exp s, +as long as the appropriate symbol information has +been located correctly using +.B stdsym +or +.BR addsym , +and +.BR findsym . +.PP +A +.B Pos +represents a position in a Limbo source code file; +it holds the source file name, the line number (origin 1) +and the character within the line (origin 0). +The +.B Src +adt represents a range in a Limbo source code file; +.B Src.start +and +.B Src.stop +represent the beginning and the end of the +range, respectively. +.PP +A +.B Sym +represents a +.B .sbl +symbol file, and is created by calling +.BI sym( p ) +where +.I p +is the pathname of the symbol file; +.B sym +returns a tuple +.RI ( sym ,\ err ), +where if +.I sym +is nil, +.I err +contains an error message. +A +.B Sym +can map between a Dis PC and a source file address, +and vice versa. +For a given +.B Sym +.IR sym , +.IB sym .srctopc( src ) +returns the PC associated with +.IR src +(or -1 on error); +.IB sym .pctosrc +converts the other way (and returns +.B nil +on error). +.PP +Each element +.I e +in the top level stack, as returned by +.BR Prog.stack , +has an associated +.B Module +.IB e .m +which needs to be associated with a +.B Sym +so that +.I debug +can glean from it the type information it needs. +Given a module +.IR m , +.IB m .stdsym() +will try and find a symbol file in +a standard place, but this will fail if the symbol file +or the Dis file is in a non-standard place. +.IB M .addsym( s ) +sets the symbol file for +.I m +to the +.B Sym +.IR s . +.IB M .dis() +and +.IB m .sbl() +return the paths of the Dis and symbol files associated +with +.I m +respectively. +.PP +Each top level stack element +expands into three elements, ``args'', ``locals'', +and ``module'', representing the arguments to the function, +the function's local variables, and the module-global +variables of the function's module respectively. +Before a top level stack element can be expanded, +it is necessary to call +.B findsym +on it to locate the function's data. +.TP 10 +.IB exp .name +The name of the symbol. +.TP +.IB exp .expand() +Expand a hierarchical structure into an array of its +component elements. A list element expands into two +elements named ``hd'' and ``tl''; a tuple into elements +named ``t0'', ``t1'',..., an array into elements named ``0'', ``1'',..., etc. +.TP +.IB exp .val() +.B Val +returns a tuple +.RI ( s ,\ flag ) +where +.I s +is a string representation of the value of +.IR exp , +and if +.I flag +is zero, +.I exp +cannot be expanded. +.TP +.IB exp .src() +.B Src +returns the file range associated with +.IR exp. +.TP +.IB exp .findsym() +If +.I exp +is a top level stack frame (i.e. one of the members of the array +returned by +.BR Prog.stack ) +then +.B findsym +will attempt to locate its type and name. If it succeeds, +it returns the null string, otherwise it returns +an error indicating the problem. +.TP +.IB exp .srcstr() +.B Srcstr +returns a string representing the position in the source file +of +.IR exp . +.SH FILES +.BI /prog/ pid /* +.SH SOURCE +.B /appl/lib/debug.b +.SH SEE ALSO +.IR wm-deb (1), +.IR prog (3) +.SH BUGS +There is no way of looking at the types of the data extracted. diff --git a/man/2/devpointer b/man/2/devpointer new file mode 100644 index 00000000..6433221c --- /dev/null +++ b/man/2/devpointer @@ -0,0 +1,57 @@ +.TH DEVPOINTER 2 mux +.SH NAME +devpointer \- I/O interface for the pointer device +.SH SYNOPSIS +.EX +include "draw.m"; # for Draw->Pointer +include "devpointer.m"; +ptr:= load Devpointer Devpointer->PATH; + +init: fn(file: string, posn: chan of ref Draw->Pointer): int; +bytes2ptr: fn(buf: array of byte) : ref Draw->Pointer; +ptr2bytes: fn(ptr: ref Draw->Pointer): array of byte; +.EE +.SH DESCRIPTION +.B Devpointer +reads messages from pointer devices with the same data format as +.BR /dev/pointer , +converting them to +.B Pointer +adts. +.PP +.B Init +spawns a process to read continually the pointer device specified by +.I file +and send a +.B Pointer +adts over the channel specified by +.IR posn . +If +.I file +is +.BR nil , +the default device is +.BR /dev/pointer . +.PP +.B Bytes2ptr +converts the array of bytes +.I buf +to a +.B Pointer +and returns a reference to it. +.I Buf +should consist of exactly +.B Devpointer->Size +bytes and be in the format returned by +.BR /dev/pointer . +.PP +.B Ptr2bytes +provides the inverse transformation of +.BR bytes2ptr : +it packs the data into an array of bytes of appropriate format, +which it returns. +.SH FILES +.B /dev/pointer +.SH "SEE ALSO" +.IR draw-intro (2), +.IR draw-pointer (2) diff --git a/man/2/dhcpclient b/man/2/dhcpclient new file mode 100644 index 00000000..7cab98de --- /dev/null +++ b/man/2/dhcpclient @@ -0,0 +1,354 @@ +.TH DHCPCLIENT 2 +.SH NAME +Dhcpclient: Bootconf, Lease, bootp, dhcp, applycfg, removecfg \- client's side of dynamic host configuration protocol +.SH SYNOPSIS +.EX +include "dhcp.m"; # sic +dhcpclient := load Dhcpclient Dhcpclient->PATH; +Bootconf, Lease: import dhcpclient; + +Bootconf: adt { + ip: string; + ipgw: string; + ipmask: string; + bootf: string; + bootip: string; + dhcpip: string; + siaddr: string; + serverid: string; + sys: string; + dom: string; + lease: int; + options: array of array of byte; + vendor: array of array of byte; + + new: fn(): ref Bootconf; + get: fn(c: self ref Bootconf, n: int): array of byte; + getint: fn(c: self ref Bootconf, n: int): int; + getip: fn(c: self ref Bootconf, n: int): string; + getips: fn(c: self ref Bootconf, n: int): list of string; + gets: fn(c: self ref Bootconf, n: int): string; + put: fn(c: self ref Bootconf, n: int, a: array of byte); + putint: fn(c: self ref Bootconf, n: int, v: int); + putips: fn(c: self ref Bootconf, n: int, ips: list of string); + puts: fn(c: self ref Bootconf, n: int, s: string); +}; + +Lease: adt { + configs: chan of (ref Bootconf, string); + + release: fn(l: self ref Lease); +}; + +init: fn(); +tracing: fn(debug: int); +bootp: fn(net: string, ctlifc: ref Sys->FD, device: string, + init: ref Bootconf): (ref Bootconf, string); +dhcp: fn(net: string, ctlifc: ref Sys->FD, device: string, + init: ref Bootconf, options: array of int): + (ref Bootconf, ref Lease, string); + +applycfg: fn(net: string, ctlifc: ref Sys->FD, + conf: ref Bootconf): string; +removecfg: fn(net: string, ctlifc: ref Sys->FD, + conf: ref Bootconf): string; +.EE +.SH DESCRIPTION +.B Dhcpclient +implements the client side of the Dynamic Host Configuration Protocol (DHCP) of Internet RFC2131. +In the interface, Internet addresses are represented as strings, in forms that +.IR ip (2) +can parse, and that can be written directly to control files in +.IR ip (3). +.PP +.B Init +must be called before invoking any other operation of the module. +.PP +.B Bootp +reserves the UDP port on +.I net +for use by BOOTP/DHCP clients, and sends a BOOTP request (ie, one without a DHCP operation code). +.I Net +is the name of the network directory (if nil, the default is +.BR /net ). +If +.B bootp +is to configure the interface according to the results received, +.I ctlifc +should be open on the control file of the +.IB net /ipifc +directory for the interface to be configured; otherwise it should be nil. +.B Bootp +repeats the request periodically until it either receives a reply or has made 5 attempts. +It returns a tuple +.BI ( conf,\ err ). +If it has received a reply, +.I conf +refers to a +.B Bootconf +value that contains the values received, and +.I err +is nil. +If +.I ctlifc +is not nil, the interface will also have been configured appropriately. +If a valid reply has not been received, or some other error occurred, +.I conf +is nil, and +.I err +is a diagnostic. +.PP +.B Dhcp +has a similar interface, but runs the full DHCP protocol. +The +.I options +array has integers representing possible DHCP options; +.B dhcp +asks the server to provide values for them. +If +.I options +is nil, a few option values are requested that might be useful for Inferno +(eg, subnet mask, gateway, DNS server, authentication and file servers, and so on). +If the server does supply them, they can be retrieved either from +specific fields of +.BR Bootconf , +or using its +.I get +operations. +.I Init +is also usually nil, but can refer to a +.B Bootconf +that provides some values to suggest to the server, for instance if the client +knows a previously-assigned address stored in non-volatile memory. +.B Dhcp +returns a tuple +.BI ( conf,\ lease,\ err ), +where +.I conf +and +.I err +are just as for +.BR bootp , +and the new component +.I lease +is a reference to a +.B Lease +value that gives access to the state of the client's address assignment. +.PP +DHCP allows a server to assign a client an address permanently, or to lease it for a specified time. +In the latter case, +.B Bootconf.lease +will have a non-zero value, and +the client must periodically renew the lease to retain the address, and +.B dhcp +creates a process to do so. +The +.B Lease +value provides a way for that process to communicate changes (if any) to the network configuration. +Each time the configuration changes, the process will send a message on the channel +.BR configs . +(The channel is buffered, and +.B dhcp +first discards any previous notifications not yet received, so there are no ill effects +if no process ever receives from the channel.) +Each message is a tuple +.BI ( conf,\ diag ). +If a new state change has been made successfully, +.I conf +refers to a +.B Bootconf +value with the details. +Otherwise, +.I conf +is nil and +.I diag +explains what went wrong. +In any case, the watchdog process continues to try to extend the lease, or failing that, +obtain a new network configuration, perhaps from another server. +.B Lease.release +may be called to release the leased address and stop the watchdog. +.PP +.B Bootconf +has the following operations: +.TP +.B new() +Return a reference to a +.B Bootconf +with values initialised to nil or 0. +.TP +.IB bc .get( n ) +Return the value of DHCP option +.I n +as a raw array of bytes. +Return nil if the option is not set. +.TP +.IB bc .getint( n ) +Return the value of option +.I n +interpreted as an integer. +Return zero if the option is not set. +.TP +.IB bc .getip( n ) +Return the first Internet address provided for option +.IR n . +.TP +.IB bc .getips( n ) +Return a list of all the Internet addresses provided for option +.IR n . +.TP +.IB bc .gets( n ) +Return the value of option +.I n +as a string. +.TP +.IB bc .put( n,\ a ) +Set the value of DHCP option +.I n +to the bytes of byte array +.IR a . +If +.I a +is nil, +.B put +removes any existing value for the option. +.TP +.IB bc .putint( n,\ v) +Set option +.I n +to the integer value +.IR v . +.TP +.IB bc .putips( n,\ ips ) +Set option +.I n +to the list of Internet addresses +.IR ips . +.TP +.IB bc .puts( n,\ s ) +Set option +.I n +to the string +.IR n . +.PP +.B Dhcpclient +names a few constants representing commonly-used configuration options (attributes). +They are suitable parameters for the option selector +.I n +of +.BR Bootconf 's +.I get +and +.I put +functions. +The first set of constants name options for both BOOTP and DHCP: +.PP +.PD 0 +.TP 25 +.B Odnsserver +Internet address(es) of Domain Name Servers +.TP +.B Odomainname +Current domain (see +.BR Bootconf.dom ) +.TP +.B Ohostname +Host name (see +.BR Bootconf.sys ) +.TP +.B Omask +Network mask (IPv4). +Also see +.BR Bootconf.ipmask . +.TP +.B Onetbiosns +NetBIOS servers +.TP +.B Ontpserver +Network Time Protocol servers +.TP +.B Opop3server +POP3 mail servers +.TP +.B Orouter +Default router for subnet (see +.BR Bootconf.ipgw ) +.TP +.B Osmtpserver +SMTP mail delivery servers +.TP +.B Ovendorinfo +Vendor-specific data (see below) +.TP +.B Owwwserver +HTTP proxy +.PD +.PP +The second set has DHCP options: +.PP +.PD 0 +.TP 25 +.B Obootfile +Name of the file containing a kernel for the client to load (eg, by TFTP); see +.BR Bootconf.bootf . +.TP +.B Olease +Lease time for IP address, in seconds (also see +.BR Bootconf.lease ) +.TP +.B Omaxmsg +Maximum DHCP size the client is willing to accept (minimum 576 bytes). +.TP +.B Orebindingtime +Time interval in seconds from address assignment to the time address must be rebound. +.TP +.B Orenewaltime +Time interval in seconds from address assignment to first attempt to renew the address. +.TP +.B Otftpserver +TFTP server from which to fetch kernel and parameter files; see +.BR Bootconf.bootip . +.TP +.B Ovendorclass +Identify vendor type and configuration of client. Inferno sets +this to +.B plan9_386 +(sic) to encourage Plan 9 DHCP servers to respond; other servers will ignore it. +.PD +.PP +The final set give vendor-specific options that Inferno shares with Plan 9: +.PP +.PD 0 +.TP 25 +.B Ovendor +Flag OR'd in to an option number to mark it as destined for the `vendor information' section. +.TP +.B OP9auth +Authentication server +.RB ( Ovendor|129 ) +.TP +.B OP9fs +File server +.RB ( Ovendor|128 ) +.PD +.PP +Given a network configuration in +.IR conf , +and a valid file descriptor for a network interface's control file, +in the network +.IR net , +.B applycfg +sets the basic interface parameters (address, network mask, default gateway), +and writes other parameters to +.IR net /ndb ; +conversely, +.B removecfg +removes from the interface just those parameters set by +.IR conf . +Normally these functions are called automatically, as required, by +.B dhcp +and its watchdog process. +.SH SOURCE +.B /appl/lib/dhcpclient.b +.SH SEE ALSO +.IR bootpd (8), +.IR dhcp (8) diff --git a/man/2/dialog b/man/2/dialog new file mode 100644 index 00000000..bec2f045 --- /dev/null +++ b/man/2/dialog @@ -0,0 +1,74 @@ +.TH DIALOG 2 +.SH NAME +dialog: prompt, getstring \- +basic dialog boxes +.SH SYNOPSIS +.EX +include "dialog.m"; +dialog := load Dialog Dialog->PATH; + +init: fn(); +prompt: fn(ctxt: ref Draw->Context, p: ref Draw->Image, + icon, title, msg: string, + dflt: int, labs: list of string): int; +getstring: fn(ctxt: ref Draw->Context, p: ref Draw->Image, + s: string): string; +.EE +.SH DESCRIPTION +.B Dialog +module provides two simple dialog boxes +for use by +.IR wm (1) +applications. +.B Init +should be called once to initialise its internal state. +.PP +.B Prompt +uses the graphics context +.I ctxt +to pop up a dialog box to prompt the user to choose from a set of alternatives, +or to acknowledge a message. +The box is created near the northwest corner of +the parent window +.IR p , +represented by the window's image. +(If the parent window is a Tk Toplevel +.IR t , +for instance, the appropriate value is +.IB t .image \f1.)\fP +If +.I p +is nil, the box is centred on the screen. +The box +has the given +.I title +and an optional +.IR icon . +It displays the given +.I msg +and a number of buttons, labelled with the strings in +.IR labs . +The dialog box waits for the user to push a button, and then +returns the index of the button pushed (the first element of +.I labs +is index 0). +If the user types a newline, the +.I dflt +value is returned. The button with the +.I dflt +index is specially outlined in the dialog box. +.PP +.B Getstring +pops up a dialog box near the parent window +.IR p . +The box contains the +.I msg +and an entry widget. +It waits for the user to type a string and a newline, +and then returns the typed string, without the newline. +.SH SOURCE +.B /appl/lib/dialog.b +.SH SEE ALSO +.IR draw-context (2), +.IR tk (2), +.IR wmlib (2) diff --git a/man/2/dict b/man/2/dict new file mode 100644 index 00000000..6564e278 --- /dev/null +++ b/man/2/dict @@ -0,0 +1,57 @@ +.TH DICT 2 +.SH NAME +dict - list of string pairs +.SH SYNOPSIS +.EX +include "dict.m"; +dict := load Dictionary Dictionary->PATH; + +Dict: adt { + add: fn(d: self ref Dict, e: (string, string)); + delete: fn(d: self ref Dict, k: string); + lookup: fn(d: self ref Dict, k: string): string; + keys: fn(d: self ref Dict): list of string; +}; +.EE +.SH DESCRIPTION +.B Dict +provides a simple string to string association list: +.TP +.IB d .add( e ) +Adds a new tuple +.IR e +to the list, +representing a new +.RI ( "key ,\ value" ) +pair. +.TP +.IB d .delete ( k ) +Deletes all pairs with key +.I k +from the list. +.TP +.IB d .lookup( k ) +Tries to find a pair with key +.I k +and returns its associated value, +or nil if the key was not found. +.TP +.IB d .keys() +Returns a list of all +keys +in the list. +.SH SOURCE +.B /appl/lib/dict.b +.SH SEE ALSO +.IR hash (2) +.SH BUGS +No attempt is made to +keep keys unique in the list; if more +than one pair exists with the same key, then +.B lookup +will select one of them arbitrarily. +.PP +Computational overhead of lookup and deletion of +keys is proportional +to the number of pairs in the list. + diff --git a/man/2/dis b/man/2/dis new file mode 100644 index 00000000..bb3cdc91 --- /dev/null +++ b/man/2/dis @@ -0,0 +1,488 @@ +.TH DIS 2 +.SH NAME +dis \- read Dis object files +.SH SYNOPSIS +.EX +include "dis.m"; +dis := load Dis Dis->PATH; + +Inst: adt +{ + op: int; + addr: int; + mid: int; + src: int; + dst: int; +}; + +Type: adt +{ + size: int; + map: array of byte; +}; + +Data: adt +{ + op: int; # encoded op + n: int; # number of elements + off: int; # byte offset in data space + pick { + Zero => # DEFZ + Bytes => # DEFB + bytes: array of byte; + Words => # DEFW + words: array of int; + String => # DEFS + str: string; + Reals => # DEFF + reals: array of real; + Array => # DEFA + typex: int; + length: int; + Aindex => # DIND + index: int; + Arestore => # DAPOP + Bigs => # DEFL + bigs: array of big; + } +}; + +Link: adt +{ + pc: int; + desc: int; + sig: int; + name: string; +}; + +Import: adt +{ + sig: int; + name: string; +}; + +Except: adt +{ + s: string; + pc: int; +}; + +Handler: adt +{ + pc1: int; + pc2: int; + eoff: int; + ne: int; + t: ref Type; + etab: array of ref Except; +}; + +Mod: adt +{ + name: string; + srcpath: string; + + magic: int; + rt: int; + ssize: int; + isize: int; + dsize: int; + tsize: int; + lsize: int; + entry: int; + entryt: int; + + inst: array of ref Inst; + types: array of ref Type; + data: list of ref Data; + links: array of ref Link; + imports: array of array of ref Import; + handlers: array of ref Handler; + + sign: array of byte; +}; + +init: fn(); +loadobj: fn(file: string): (ref Mod, string); +op2s: fn(op: int): string; +inst2s: fn(i: ref Inst): string; +.EE +.SH DESCRIPTION +The +.B Dis +module decodes the contents of a Dis object file containing a single module, +of the format defined by +.IR dis (6). +The module defines many constants, giving symbolic names to +Dis instruction codes, addressing mode masks, magic numbers, and other +bits of the object code. +.PP +.B Init +must be called before any other function, to initialise the module. +.PP +.B Loadobj +reads a Dis object file from +.IR file , +and returns a reference to a +.B Mod +adt that represents the module's contents, as the first element of the tuple; +the string element of the tuple is nil. +On error, the string element contains a diagnostic, and the +reference is nil. +.PP +.B Op2s +returns the assembly-language representation, as used by +.IR asm (1), +of the Dis operation code +.IR op . +It returns the string +.IB ` OP op' +if +.I op +does not correspond to a known operation code. +.PP +.B Inst2s +returns a string corresponding to a disassembly of Dis instruction +.IR i , +including addressing modes. +.PP +The module defines integer constants giving +symbolic names to the Dis instruction codes, all of the form +.BI I name +where +.I name +is the name of the instruction, all in upper case: +.IP +.BR INOP , +.BR IALT , +.BR INBALT , +\&... +.BR INEWZ , +.BR INEWAZ , +.BR IRAISE +.PP +The name +.B MAXDIS +is also defined; it has the value of the first unassigned Dis operation code. +.PP +Most of the members of the adt types have an obvious interpretation +on reference to +.IR dis (6). +.PP +The adt +.B Mod +represents a single module. +It contains values extracted from the module's header, +and references to structures representing the contents of +the Dis file's code, data, type +and external linkage sections: +.TF entryt +.PD +.TP +.B magic +The constant +.B XMAGIC +(unsigned Dis module) +or the constant +.B SMAGIC +(signed Dis module). +.TP +.B sign +If +.B magic +is +.BR SMAGIC , +the +.B sign +field contains the bytes in the signature section of the module header. +Otherwise, there is no signature and +.B sign +is +.BR nil . +.TP +.B name +The name of the implementation module. +.TP +.B srcpath +The source of the dis file relative to the inferno root. +.TP +.B rt +Run-time options: a bit mask of the constants +.BR MUSTCOMPILE , +.B DONTCOMPILE +and +.BR SHAREMP . +.TP +.B ssize +Stack extent +.TP +.B isize +Number of instructions +.TP +.B dsize +Size in bytes of the module's global data area +.TP +.B tsize +Number of type descriptors +.TP +.B lsize +Number of external linkage descriptors +.TP +.B entry +PC (instruction offset) of the default entry point for the module +.TP +.B entryt +Index of the type descriptor for the module's entry point +.TP +.B inst +Array representing the contents of the code segment; +length +.IB m .isize +.TP +.B types +Array of the module's type descriptors; +length +.IB m .tsize +.TP +.B data +list of data descriptors representing instructions for creating the module's data segment +.TP +.B links +array of the module's external linkage descriptors (for exported functions); length +.IB m .lsize +.TP +.B imports +an array of import descriptor tables, one table for each module imported by this +module. Each table is an array of pairs giving the signature and name of each +function imported. +.TP +.B handlers +an array of exception handlers used in this module. Each handler consists of +the range of pc's it covers, the exception structure offset within the +frame, the number of declared exceptions (as opposed to strings) in the handler, +the type (if any) of any memory to clear when the exception occurs and a table +of exceptions. The latter is an array containing pairs of exceptions and +pc values. The final entry gives the pc to jump to +in the '*' case or -1 if not applicable. +.PP +The +.B Type +adt represents the value of a type descriptor: +.TF entryt +.PD +.TP +.B size +Size in bytes of the object represented by this descriptor +.TP +.B map +Bitmap describing the location of pointers in the object (see +.IR dis (6)) +.PP +The +.B Link +adt represents the value of a link descriptor: +.TF entryt +.PD +.TP +.B name +Name of the exported function +.TP +.B pc +Instruction index in +.B Mod.code +of the function's entry point +.TP +.B desc +Index in +.B Mod.types +of the type describing the function's stack frame +.TP +.B sig +Integer hash of the function's type signature +.PP +The +.B Inst +adt represents a single Dis instruction in the instruction stream. +The member +.B op +is the Dis instruction code. +The member +.B addr +contains the addressing mode flags for middle, source and destination operands. +Constants are defined to help unpack it. +.PP +The middle operand description is selected by the constant mask +.BR ARM : +.IP +.IB i ".addr & ARM" +.PP +The valid results and interpretation are as follows: +.IP +.RS +.TF AXNON +.TP +.B AXNON +No middle operand. +.TP +.B AXIMM +.BI $ n +.TP +.B AXINF +.IB n (fp) +.TP +.B AXINM +.IB n (mp) +.PD +.RE +.PP +The source operand's addressing mode is extracted as follows: +.IP +.BI ( i ".addr>>3)&AMASK" +.PP +The following combinations are valid, where +.I n +is the value in +.IB i .src : +.IP +.RS +.TF AIND|AMP +.TP +.B AXXX +No operand +.TP +.B AFP +The operand is +.IB n (fp) +.TP +.B AMP +The operand is +.IB n (mp) +.TP +.B AIMM +The operand is +.BI $ n +(ie, immediate literal +.IR n ) +.TP +.B AIND|AFP +The operand is +.IB si ( fi (fp)) +.TP +.B AIND|AMP +The operand is +.IB si ( fi (mp)) +.RE +.PD +.PP +where +.I fi +is the offset for the first indirection, extracted from +.IR n : +.IP +.BI ( n ">>16)&16rFFFF)" , +.PP +and +.I si +is the offset for the second indirection, also extracted from +.IR n: +.IP +.BI ( n "&16rFFFF)" . +.PP +The destination addressing mode is interpreted in a similar way, +except that the addressing mode is extracted as follows: +.IP +.BI ( i ".addr&AMASK)" +.PP +and the value of the offset +.I n +is found in +.IB i .dst . +.I Fi +and +.I si +are extracted from +.I n +as before. +.PP +Finally, +.B Data +adt represents a data item, which tells the system's module loader +how to initialise part of the module's global data segment. +It has the following members: +.TP +.B op +the encoded type and length; usually ignored: the +.B pick +tag and +.BR n , +below, +usually suffice +.TP +.B n +the number of data values +.TP +.B off +the byte offset of the first data value to initialise, relative to the current loading base +.PP +The alternatives of the +.B pick +select the correct variant to see the data values encoded in the +object file as Limbo values +of the correct type. +The interpretation is straightforward for the tags +.BR Bytes , +.BR Words , +.B Bigs +and +.BR Reals : +the corresponding array members are arrays of +.B n +elements of the appropriate type. +The remaining cases are as follows: +.TF Arestore +.PD +.TP +.B String +The member +.B str +has the decoded representation of the +corresponding +.I n +data bytes from the object file. +.TP +.B Array +The member +.B typex +is the index in +.B Mod.types +of the array's type, and member +.B length +is its length. +.TP +.B Aindex +This alternative can appear only following a value of +.BR Data.Array . +The member +.B index +is an index into the corresponding array as represented in the global data space, +which determines a new loading base address for subsequent +.B Data +items. +The previous base address is stacked on an internal stack. +.TP +.B Arestore +Pop the address from the internal address stack and make that the current +loading address. +The request marks the end of a sequence of +.B Data +items initialising an array. +.SH SOURCE +.B /appl/lib/dis.b +.SH SEE ALSO +.IR disdep (1), +.B wm/rt +in +.IR wm-misc (1), +.IR dis (6) +.br +"The Dis Virtual Machine", in Volume 2. diff --git a/man/2/diskblocks b/man/2/diskblocks new file mode 100644 index 00000000..15c79e26 --- /dev/null +++ b/man/2/diskblocks @@ -0,0 +1,120 @@ +.TH DISKBLOCKS 2 +.SH NAME +Diskblocks: Block, Disk, tempfile \- temporary storage of variable-sized blocks +.SH SYNOPSIS +.EX +include "diskblocks.m"; +diskblocks := load Diskblocks Diskblocks->PATH; + +Block: adt { + addr: big; # address on file + n: int; # size in bytes +}; + +Disk: adt { + init: fn(fd: ref Sys->FD, gran: int, maxblock: int): ref Disk; + new: fn(d: self ref Disk, n: int): ref Block; + release: fn(d: self ref Disk, b: ref Block); + read: fn(d: self ref Disk, b: ref Block, + a: array of byte, n: int): int; + write: fn(d: self ref Disk, b: ref Block, + a: array of byte, n: int): ref Block; +}; + +init: fn(); +tempfile: fn(): ref Sys->FD; +.EE +.SH DESCRIPTION +.B Diskblocks +manages a set of variable-sized blocks on a temporary file. +.PP +.B Init +must be called before any other function in the module. +.PP +Each block has an address and a size in bytes, represented by a value of type +.BR Block . +.PP +Each file is represented by the type +.BR Disk , +providing the following operations: +.TF 8n +.TP +.BI init( fd\f5,\fP\ gran\f5,\fP\ maxblock ) +Initialises the file +.I fd +for use as temporary block storage and returns a reference to a +.B Disk +to describe it. +.I Fd +must be open for reading and writing, and must refer to a file that allows random access. +Blocks are allocated in multiples of the granularity +.IR gran , +in bytes; +the largest possible block is +.I maxblock +bytes, which must be a multiple of +.IR gran . +.TP +.IB d .new( n ) +Allocate a block of +.I n +bytes on Disk +.I d +and return a reference to it. +.TP +.IB d .release( b ) +Free the Block +.IR b , +making it available for reallocation. +.TP +.IB d .write( b\f5,\fP\ a\f5,\fP\ n ) +Write +.I n +bytes from array +.I a +to Block +.I b +on Disk +.IR d , +returning a reference to the resulting Block. +If +.I b +is nil or +.I n +exceeds +.IR b 's +current size, +.B write +allocates a new block (releasing +.IR b ). +Thus the returned value might differ from +.IR b , +and must be used in subsequent IO requests. +.TP +.IB d .read( b\f5,\fP\ a\f5,\fP\ n ) +Read +.I n +bytes from Block +.I b +on Disk +.I d +into array +.IR a , +returning the number of bytes read. +.I N +must not exceed +.IB b .n . +.PD +.PP +.B Tempfile +returns a file descriptor referring to a newly-created temporary file, +suitable for use by +.BR Disk.init . +The file will be removed automatically +when the file descriptor is closed. +.SH SOURCE +.B /appl/lib/diskblocks.b +.SH DIAGNOSTICS +A function that returns an integer returns -1 on error; a function that returns a reference +returns nil on error. +The system error string is set in either case. diff --git a/man/2/disks b/man/2/disks new file mode 100644 index 00000000..17970a52 --- /dev/null +++ b/man/2/disks @@ -0,0 +1,317 @@ +.TH DISKS 2 +.SH NAME +disks: Disk, PCpart, readn, chstext \- generic disk and partition interface +.SH SYNOPSIS +.EX +include "disks.m"; + +disks := load Disks Disks->PATH; + +Disk: adt { + prefix: string; # prefix before partition name + part: string; # partition name (nil if not partition) + fd: ref Sys->FD; + wfd: ref Sys->FD; + ctlfd: ref Sys->FD; + rdonly: int; # non-zero if readonly + dtype: string; # device type + + secs: big; # number of sectors in device or partition + secsize: int; # device's sector size + size: big; # size of device or partition + offset: big; # within larger disk, perhaps + width: int; # of disk size in bytes as decimal string + c: int; # geometry: cyl, head, sectors + h: int; + s: int; + chssrc: string; # source of c/h/s values + + open: fn(f: string, mode: int, noctl: int): ref Disk; +}; + +PCpart: adt { + active: int; # Active or 0 + ptype: int; + base: big; # base block address + offset: big; # block offset from base to partition + size: big; # in sectors + + extract: fn(a: array of byte, d: ref Disk): PCpart; + bytes: fn(p: self PCpart, d: ref Disk): array of byte; +}; + +init: fn(); +readn: fn(fd: ref Sys->FD, buf: array of byte, n: int): int; +chstext: fn(p: array of byte): string; +.EE +.SH DESCRIPTION +.B Disks +provides a simple way to gather +and use information about +.IR floppy (3) +and +.IR sd (3) +disks and disk partitions, +as well as plain files. +.PP +.B Init +must be called before invoking any other operations of the module +.PP +.B Disk.open +opens +.I file +and returns a reference to a +.B Disk +value to represent the disk. +.I Mode +should be either +.BR Sys->OREAD +or +.BR Sys->ORDWR +to establish the open mode. +.B Open +always opens +.I file +for reading and stores that file descriptor in +the element +.IR fd . +If the mode is not +.BR Sys->OREAD , +.I opendisk +also opens +.I file +for writing and stores that file descriptor in +.BR wfd . +The two file descriptors are kept separate to +help prevent accidents. +If +.I noctl +is not set, +.B open +looks for a +.B ctl +file in the same directory as the +disk file; +if it finds one, it declares +the disk to be +an +.IR sd (3) +device, +setting +.B dtype +to +\f5"sd"\fP. +If the passed +.I file +is named +.BI fd n disk \fR, +it looks for a file +.BI fd n ctl \fR, +and if it finds that, +declares the disk to be +a floppy disk, of type +\f5"floppy"\fP. +If either control +file is found, it is opened for reading +and writing, and the resulting file descriptor +is saved as +.BR ctlfd . +Otherwise the returned disk +has type +\f5"file"\fP. +.PP +.B Open +then stores the file's length +(as given by +.IR sys-stat (2)) +in +.BR size . +If the disk is an +.IR sd (3) +partition, +.B open +reads the sector size from the control +file and stores it in +.BR secsize ; +otherwise the sector size is assumed to be 512, +as is the case for floppy disks. +.B Open +stores the disk size measured in sectors in +.BR secs . +.PP +If the disk is an +.IR sd (3) +partition, +.B open +parses the +control +file to find the partition's offset +within its disk; +otherwise it sets +.B offset +to zero. +If the disk is an ATA disk, +.B open +reads +the disk geometry (number of cylinders, heads, and sectors) +from the +.B geometry +line in the +.I sd +control file; +otherwise it sets these to zero as well. +.B Name +is initialized with the base name of +the disk partition, and is useful for forming messages to the +.I sd +control file. +.B Prefix +is set to the original +.I file +name without the +.B name +suffix. +.PP +The IBM PC BIOS interface allocates +10 bits for the number of cylinders, 8 for +the number of heads, and 6 for the number of sectors per track. +Disk geometries are not quite so simple +anymore, but to keep the interface useful, +modern disks and BIOSes present geometries +that still fit within these constraints. +These numbers are still used when partitioning +and formatting disks. +.B Open +employs a number of heuristics to discover this +supposed geometry and store it in the +.BR c , +.BR h , +and +.B s +elements of +.BR Disk . +Disk offsets in partition tables and +in FAT descriptors are stored in a form +dependent upon these numbers, so +.I opendisk +works hard to report numbers that +agree with those used by other operating +systems; the numbers bear little or no resemblance +to reality. +.PP +.B Chssrc +names the source of the geometry values: +.B disk +(values returned by disk itself); +.B part +(values stored in PC partition table); +or +.B guess +(calculated by module's heuristics). +.PP +.B Readn +attempts to read exactly +.I n +bytes from file +.I fd +into +.IR buf , +using as many +.IR sys-read (2) +calls as required. +It helps insulate a program from any peculiar underlying IO boundaries +of a device. +It returns less than +.I n +only if end-of-file is reached. +It returns -1 if the first read fails. +.PP +The PC BIOS and operating systems support an arcane system of disk partitions: +a partition table at the end of the master boot record +defines up to four partitions. +One (or perhaps more) of those can be an extended partition +that heads a chain (or perhaps roots a tree) of partition tables +elsewhere on disk, allowing many more than four partitions in all. +.B Disks +represents a partition table entry by a value of type +.BR PCpart . +It provides the following operations and values: +.TP +.B active +Has the value +.B Disks->Active +if it is bootable, and zero otherwise. +.TP +.B ptype +Partition type; +.B Disks->Type9 +is used by Plan 9 and Inferno (see +.IR prep (8)). +.TP +.B base +Address of the extended partition that started the chain (or rooted the tree) containing this partition. +Zero for primary partitions defined by the master boot record. +.TP +.B offset +Block address of the start of the partition relative to the +.BR base . +.TP +.B size +Size of the partition in sectors. +.TP +.BI extract( "a, d" ) +Extracts the relevant data from an array of bytes +.I a +containing a PC-format partition table entry on +.B Disk +.IR d , +and returns a +.B PCpart +value that represents the partition. +.TP +.IB pc .bytes( d ) +Return an array of bytes containing the PC-format partition +table entry corresponding to +.IR pc . +It will always be +.B TentrySize +bytes long. +.PP +Several other values are defined here for convenience: +.TP +Active +Value for +.B PCpart.active +if the partition is bootable. +.TP +.B Type9 +Partition type used by Plan 9 and Inferno. +.TP +.B Toffset +Offset (in bytes) of the partition table in a master boot record or extended partition start sector. +.TP +.B TentrySize +Size in bytes of a partition table entry. +.TP +.B NTentry +Number of table entries. +.TP +.B Magic0 +.PD0 +.TP +.B Magic1 +Each sector containing a partition table should end with +these two bytes (a master boot record must end with them). +.PP +.B Chstext +takes a 3-byte array containing the packed cylinder/head/sector +representation of a disk address and returns the corresponding text +in the form +.BI c / h / s. +.SH SOURCE +.B /appl/lib/disks.b +.SH SEE ALSO +.IR scsiio (2), +.IR floppy (3), +.IR sd (3), +.IR prep (3) diff --git a/man/2/dividers b/man/2/dividers new file mode 100644 index 00000000..710308d7 --- /dev/null +++ b/man/2/dividers @@ -0,0 +1,68 @@ +.TH DIVIDERS 2 +.SH NAME +Dividers \- user-draggable tk dividing bars +.SH SYNOPSIS +.EX +include "dividers.m"; +dividers := load Dividers Dividers->PATH; +Divider: import dividers; + +init: fn(); +Divider: adt { + new: fn(win: ref Tk->Toplevel, w: string, wl: list of string, dir: int): + (ref Divider, chan of string); + event: fn(d: self ref Divider, e: string); +}; +.EE +.SH DESCRIPTION +.I Dividers +presents an interface allowing Tk widgets to +be arranged within a window, divided by bars which +can be dragged by the user to determine the proportion +of the available space to allocate to each widget. +The groups can be stacked vertically or horizontally. +.I Divider +widgets can be nested. +.PP +.B Init +must be called before anything else, to allow +.I Dividers +to initialise its internal state. +.B Divider.new +creates a new divider widget; it will be named +.IR w , +and it will divide up the widgets named in +the list +.IR wl . +.I Dir +can be +.BR Dividers->NS , +to stack the widgets one on top of another, +or +.BR Dividers->EW +to stack the widgets left-right. +.B Divider.new +returns a new +.B Divider +adt, and a channel through which +.B Divider +events will be received. +The application should arrange that events +received on this channel be passed to the +.B event() +function. +.PP +A +.B Divider +widget must be informed if its size has changed +by configuring its width and height appropriately; +it does the same to the items it is dividing. +.SH SOURCE +.B /appl/lib/dividers.b +.SH BUGS +It should not be necessary to inform the +.B Divider +widget of size changes. +.PP +The event-based mechanism seems somewhat +contrary to the preferred Limbo way of doing things. diff --git a/man/2/draw-0intro b/man/2/draw-0intro new file mode 100644 index 00000000..6fb4384a --- /dev/null +++ b/man/2/draw-0intro @@ -0,0 +1,268 @@ +.TH DRAW-INTRO 2 +.SH NAME +draw \- basic graphics facilities module +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +setalpha: fn(rgba: int, alpha: int): int; +.EE +.SH DESCRIPTION +Inferno's +.B Draw +module provides basic graphics facilities, defining drawing +contexts, images, character fonts, and rectangular geometric operations. +See +.IR wmlib (2) +and +.IR tk (2) +for higher level operations, such as windows and menu handling. +.SS Pixels +Images are defined on a rectangular region of +an integer plane with a picture element, or +.IR pixel , +at each grid point. +Pixel values are integers with between 1 and 32 bits per pixel, and all +pixels in a given image have the same size, or +.IR depth . +Some operations allow images with different depths to be combined, +for example to do masking. +Images have one or more channels: colour channels, greyscale channels, colour map indices, +and others, as described in +.IR colour (6). +Each pixel value contains a component of each such channel. +All pixels in an image have the same size, or +.IR depth , +and the same component structure. +.PP +When an image is displayed, the value of each pixel determines the colour +of the display, according to the interpretation of the image's channels. +For instance, on `true colour' displays, the display image might contain red, blue and green +colour channels, and each pixel value will have red, blue and green colour components. +For displays with only 8 bits per pixel or less, +Inferno uses a fixed colour map for each display depth (see +.IR colour (6)). +Facilities exist in +.IR draw-display (2) +to convert between (red, green, blue) +triplets and colour-mapped pixel values, +but the mapping is often done automatically by the graphics operations +when images with different channel structures are combined. +.PP +.B Draw +uses a standard representation of colour constants in calls to create coloured images +or to initialise new images with a given colour. +This is referred to as `32-bit RGBA format'. +Each constant colour is represented as a 32-bit integer, with 8-bit red, blue and green colour components, +and an 8-bit alpha component, in that order from most to least significant byte. +.PP +The RGB values in a colour are +.I premultiplied +by the alpha value; for example, a 50% red is +.B "int 16r7F00007F" +not +.BR "int 16rFF00007F" . +The function +.B Draw->setalpha +performs the alpha computation on a given colour +.I rgba +in 32-bit RGBA format, +ignoring its initial alpha value, and returning the +result of multiplying each colour component by the supplied +.BR alpha . +For example, to make a 50% red color value, one could execute +.B draw->setalpha(Draw->Red, +.BR 16r7F) . +.SS Terminology +.TF Pointer +.PD +.TP +.B Point +The graphics plane is defined on an integer grid, +with each +.RI ( x ",\ " y ) +coordinate identifying +the upper left corner of the corresponding pixel. +The plane's origin, (0,\ 0), resides at the upper left corner of the screen; +.I x +and +.I y +coordinates increase to the right and down. +The abstract data type, +.BR Point +defines a coordinate position. +.TP +.B Rect +The type +.B Rect +defines a rectangular region of the plane. +It comprises two +.BR Points , +.B min +and +.BR max , +and specifies the region defined by pixels with coordinates +greater than or equal to +.B min +and strictly less than +.BR max , +in both +.I x +and +.IR y . +This +.I half-open +property allows rectangles that share an edge to have equal coordinates on the edge. +.TP +.B Display +The type +.B Display +represents a physical display, corresponding to a single connection to a +.IR draw (3) +device. +Besides the image of the display itself, the +.B Display +type also stores references to off-screen images, fonts, and so on. +The contents of such images are stored in the display device, not in the client +of the display, which affects how they are allocated and used, see for example +.IR draw-image (2). +.TP +.B Screen +The +.B Screen +type is used to manage a set of windows on an image, typically but not necessarily +that of a display. +.B Screens +and hence windows may be built recursively upon windows for +subwindowing or even on off-screen images. +.TP +.B Image +The +.B Image +type provides basic operations on groups of pixels. +Through a few simple operations, most importantly the +.B draw +image combination operator +(see +.IR draw-image (2)), +the +.B Image +type provides the building blocks for +.BR Display , +.BR Screen , +and +.BR Font . +.TP +.B Font +A +.B Font +defines which character image to draw for each character code value. +Although all character drawing operations ultimately use the +.B draw +primitive on the underlying images, +.B Fonts +provide convenient and efficient management of display text. +Inferno uses the 16-bit Unicode character encoding, so +.B Fonts +are managed hierarchically to control their size and to make +common subsets such as ASCII or Greek efficient in practice. +See +.IR draw-font (2), +.IR utf (6), +and +.IR font (6). +.TP +.B Context +A +.B Context +provides an interface to the system graphics and interactive devices. +The system creates this context when it starts an application. +.TP +.B Pointer +The +.B Pointer +type conveys information for pointing devices, such as mice or trackballs. +.SS More about Images +.PP +An image occupies a rectangle, +.BR Image.r , +of the graphics plane. +A second rectangle, +.BR Image.clipr , +defines a clipping region for the image. +Typically, the clipping rectangle is the same as the basic image, +but they may differ. +For example, the clipping region may be made smaller and centered on +the basic image to define a protected border. +.PP +The pixel structure of an +.B Image +is stored as +.B Chans +value +.BR Image.chans ; +the image's pixel depth in bits is stored as integer +.BR Image.depth . +.PP +An image may be marked for replication: when set, the boolean +.B Image.repl +causes the image +to behave as if replicated across the entire integer plane, +thus tiling the destination graphics area +with copies of the source image. +When replication is turned on, +the clipping rectangle limits the extent of the replication and may +even usefully be disjoint from +.BR Image.r . +See +.IR draw-image (2) +for examples. +.PP +The +.B Image +member functions provide facilities for drawing text and geometric objects, +manipulating windows, and so on. +.PP +Objects of type +.BR Display , +.BR Font , +.BR Screen , +and +.B Image +must be allocated by the member functions; +if such objects are created with a regular Limbo +definition, they will not behave properly and may generate run-time errors. +.PP +There are no ``free'' routines for graphics objects. +Instead Limbo's garbage +collection frees them automatically. +As is generally so within Limbo, +one can eliminate references by assigning +.B nil +to reference variables, returning from functions +whose local variables hold references, etc. +.SH RETURN VALUES +Most drawing operations operate asynchronously, so they have +no error return. +Functions that allocate objects return +.B nil +for failure; in such cases the system error string may be +interrogated (such as by the +.B %r +format (see +.IR sys-print (2))) +for more information. +.SH SOURCE +.B /libinterp/draw.c +.br +.B /libdraw/*.c +.SH SEE ALSO +.IR draw (3), +.IR ir (2), +.IR prefab-intro (2), +.IR tk (2), +.IR wmlib (2), +.IR colour (6), +.IR font (6), +.IR image (6) diff --git a/man/2/draw-context b/man/2/draw-context new file mode 100644 index 00000000..98dde368 --- /dev/null +++ b/man/2/draw-context @@ -0,0 +1,167 @@ +.TH DRAW-CONTEXT 2 +.SH NAME +Context \- +graphics environment +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +Context: adt +{ + display: ref Display; # frame buffer on which windows reside + wm: chan of (string, + chan of (string, ref Wmcontext)); # wmgr connection +}; + +# connection to window manager for one or more windows (as Images) +Wmcontext: adt +{ + kbd: chan of int; # incoming characters from keyboard + ptr: chan of ref Pointer; # incoming stream of mouse positions + ctl: chan of string; # commands from wm to application + wctl: chan of string; # commands from application to wm + images: chan of ref Image; # exchange of images + connfd: ref Sys->FD; # connection control + ctxt: ref Draw->Context; +}; +.EE +.SH DESCRIPTION +The +.B Context +type encapsulates the data types and channels used by an interactive application, +and establishes a context for graphics output and window management. +A reference to the +.B Context +is passed as the first argument to an application when it begins execution: +.PP +.EX +include "draw.m" + +Command: module +{ + init: fn(nil: ref Draw->Context; nil: list of string); +}; +.EE +.PP +Most programs do not create +.B Contexts +but instead inherit one from their parent, typically a shell or window system. +.PP +.SS Context interface +.PP +The following elements of +.B Context +are used by +.IR wm : +.TF display +.PD +.TP +.B display +The +.B Display +adt to which the application is connected; may be +.BR nil . +See +.IR draw-display (2). +.TP +.B wm +A shared channel through which a private channel +can be set up with a window manager. +A client application sends a tuple containing a request string +(of a format defined by the window manager) and a private reply channel. +It receives a tuple in reply on that channel; the tuple contains +a string (eg, an acknowledgement or diagnostic) and a reference to +a +.B Wmcontext +value containing channels by which the application can interact with the +window manager. +.SS Wmcontext interface +The +.B Wmcontext +provides a set of channels and file descriptors +through which the window manager and application interact. +The elements of the adt are used as follows: +.PP +.TF connfd +.PD +.TP +.B kbd +A channel of type +.B int +that delivers keystrokes from a keyboard. +.TP +.B ptr +A channel of type +.B ref +.B Pointer +that delivers events from a pointing device such as a mouse. +See +.IR devpointer (2). +.TP +.B ctl +A channel of type +.B string +that delivers control messages from the +window manager to the application. +.TP +.B wctl +A channel of type +.BR string , +which if initialised is +used by the application to send control messages to the window manager. +It is not used by the current +.IR wm (1) +or +.IR tkclient (2). +.TP +.B images +A channel of type +.B ref +.B Image +that allows the window manager and application to exchange images +(eg, when resizing, or to supply a cursor image). +.TP +.B connfd +A file descriptor that can be used to provide per-client connection control. +For instance, a client can store a file descriptor open on a +.IR sys-file2chan (2) +provided by the window manager, and the window manager will shut down +input to the application when the connection closes (eg, if the application +exits unexpectedly). +.B Connfd +is also used to write requests to the window manager. +Conventionally a request is a list of words formatted as +by +.B quoted +in +.IR string (2). +A request starting with an exclamation mark +.BR "" ( ! ) +if successful will result in an image being sent down the +.B image +channel; the rectangle of the image indicates the rectangle +that has been allocated on the screen. If only the origin +is to be changed by the window manager, a nil image is +sent first (giving the application a chance to suspend operations +on the window), and then the original image, with its origin set +appropriately. +.TP +.B image +This is used as described above. +.TP +.B ctxt +Initialised with the +.B ctxt +value that provided the initial connection on the +.B wm +channel. +.RE +.SH SEE ALSO +.IR wm (1), +.IR wmlib (2), +.IR mux (1), +.IR draw-intro (2), +.IR ir (2), +.IR prefab-intro (2), +.IR tk (2) diff --git a/man/2/draw-display b/man/2/draw-display new file mode 100644 index 00000000..90dbcb8d --- /dev/null +++ b/man/2/draw-display @@ -0,0 +1,389 @@ +.TH DRAW-DISPLAY 2 +.SH NAME +Display \- +connection to draw device +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +Display: adt +{ + image: ref Image; + white: ref Image; + black: ref Image; + opaque: ref Image; + transparent: ref Image; + + allocate: fn(dev: string): ref Display; + startrefresh:fn(d: self ref Display); + publicscreen:fn(d: self ref Display, id: int): + ref Screen; + newimage: fn(d: self ref Display, + r: Rect, chans: Chans, + repl, rgba: int): + ref Image; + color: fn(d: self ref Display, rgba: int): + ref Image; + colormix: fn(d: self ref Display, one: int, three: int): + ref Image; + rgb: fn(d: self ref Display, red, green, blue: int): + ref Image; + namedimage: fn(d: self ref Display, name: string): + ref Image; + open: fn(d: self ref Display, name: string): + ref Image; + readimage: fn(d: self ref Display, fd: ref Sys->FD): + ref Image; + writeimage: fn(d: self ref Display, fd: ref Sys->FD, + i: ref Image): int; + rgb2cmap: fn(d: self ref Display, red, green, blue: int): + int; + cmap2rgb: fn(d: self ref Display, c: int): + (int, int, int); + cmap2rgba: fn(d: self ref Display, c: int): + int; +}; + +Chans: adt +{ + mk: fn(s: string): Chans; + text: fn(c: self Chans): string; + eq: fn(c: self Chans, d: Chans): int; + depth: fn(c: self Chans): int; +}; +.EE +.SH DESCRIPTION +The +.B Display +type represents a connection to a +.IR draw (3) +device. +This device is the external representation of a physical +display, such as a CRT, and its associated memory. +It contains the storage for all images, +even invisible ones, so all +.B Image +objects must be allocated +through +.B Display +member functions. +Graphics operations that use multiple +.B Image +objects may not mix images from different +.BR Displays . +.PP +The pixel channel structure of an +.B Image +is determined when the image is allocated (including the image allocated by the system +to represent a physical display). +This structure is described externally by a channel format string, +described in +.IR colour (6), +and internally by a value of the +.B Chans +adt, +which is used when allocating new images in the calls below. +.B Draw +defines a set of constants of type +.B Chans +for common channel types: +.BR GREY1 , +.BR GREY2 +and +.BR GREY8 +for greyscale (depths 1, 2 and 8); +.BR CMAP8 +for 8-bit +.IR rgbv (8) +colour-mapped images; +.BR RGB16 +for 16-bit +.B r5g6b5 +colour images; +.BR RGB24 +for 24-bit colour; +and +.BR RGBA32 +for 24-bit colour with alpha channel. +.B Chans +has the following operations: +.TP 10 +.BI Chans.mk( s ) +Return the +.B Chans +value corresponding to the channel format string +.I s +(see +.IR image (6) +for the syntax of +.IR s ). +.TP 10 +.IB c .depth() +Return the depth in bits of +.IR c . +The result is 0 if +.I c +is invalid; in particular, +.BI Chans.mk( s ).depth() +is zero if +.I s +is invalid. +.TP +.IB c .text() +Return the format string corresponding to +.IR c . +.TP +.IB c .eq( d ) +Return true if +.I d +has the same channel structure as +.IR c ; +return false otherwise. +.PP +Colours in the calls below are specified as 32-bit integers (`32-bit RGBA format') containing +red, green, blue and alpha components as 8-bit values, in order +from most to least significant byte. +The 8-bit colour component values express illumination, ranging from 0 (no colour) +to 255 (saturated). +For the alpha component, 0 is fully transparent, and 255 is fully opaque. +.PP +.B Display +itself has the following components: +.PP +.TP 10 +.B image +The visible contents of the display; +draw on +.B image +to change the display. +.TP +.BR white ", " black +Replicated images of a single pixel, +either all ones (white) or all zeroes (black). +.TP +.BR opaque ", " transparent +Replicated images of a single pixel, +either all ones (fully opaque) or all zeroes (fully transparent). +Used as mattes for +basic graphical operations. +.TP +.BI allocate( dev ) +Attach to a new display, represented by the +.IR draw (3) +device mounted in the specified +.I dev +directory. +If +.I dev +is the empty string, +.B /dev +is used. +The return value is +.B nil +if the allocation fails. +.TP +.IB d .startrefresh() +After allocating a +.B Display +object, the application should spawn a process to call +.BR startrefresh ; +this thread will receive and process window refresh events +from the device. +.TP +.IB d .publicscreen( id ) +Create a locally addressable pointer to a public +.BR Screen ; +see \f2display-screen\fP(2). +.TP +.IB d .newimage( r\fP,\fP\ chans\fP,\fP\ repl\fP,\fP\ rgba ) +Allocate an off-screen +.BR Image . +The arguments supply values for the +.BR Image 's +.BR r , +.BR chans , +and +.BR repl , +and an initial pixel value +.I rgba +in 32-bit RGBA format, +used to paint the image +when created. +It can be +.B Draw\->Transparent +to create a fully transparent image to draw on to form an +arbitrarily-shaped image or matte. +If it is +.BR Draw\->Nofill , +the image is not initialised. +The image's +.B clipr +is initialized to +.BR r . +.TP +.IB d .color( rgba ) +Creates a single-pixel, +replicated off-screen image of the specified colour, +expressed in 32-bit RGBA format. +The +.B Draw +module defines constants for several dozen colours: +.RS +.IP +.EX +Opaque: con int 16rFFFFFFFF; +Transparent: con int 16r00000000; +Black: con int 16r000000FF; +White: con int 16rFFFFFFFF; +Red: con int 16rFF0000FF; +Green: con int 16r00FF00FF; +Blue: con int 16r0000FFFF; +Cyan: con int 16r00FFFFFF; +Magenta: con int 16rFF00FFFF; +Yellow: con int 16rFFFF00FF; +Grey: con int 16rEEEEEEFF; +Paleyellow: con int 16rFFFFAAFF; +Darkyellow: con int 16rEEEE9EFF; +Darkgreen: con int 16r448844FF; +Palegreen: con int 16rAAFFAAFF; +Medgreen: con int 16r88CC88FF; +Darkblue: con int 16r000055FF; +Palebluegreen: con int 16rAAFFFFFF; +Paleblue: con int 16r0000BBFF; +Bluegreen: con int 16r008888FF; +Greygreen: con int 16r55AAAAFF; +Palegreygreen: con int 16r9EEEEEFF; +Yellowgreen: con int 16r99994CFF; +Medblue: con int 16r000099FF; +Greyblue: con int 16r005DBBFF; +Palegreyblue: con int 16r4993DDFF; +Purpleblue: con int 16r8888CCFF; +Notacolor: con int 16rFFFFFF00; +Nofill: con Notacolor; +.EE +.PP +The special values +.BR Draw\->Opaque +(fully opaque) +and +.BR Draw\->Transparent +(fully transparent) +are useful as the pixel values for +.B Display.newimage +when forming a matte. +The special value +.B Draw\->Nofill +tells +.B Display.newimage +not to paint a new image with any colour, leaving it uninitialised. +.RE +.TP +.IB d .colormix( one\fP,\fP\ three ) +Allocate background colours. +On true color displays, it returns a 1×1 replicated image whose pixel is the result of mixing the two +colours in a one to three ratio; +both colours are expressed in 32-bit RGBA format. +On 8-bit color-mapped displays, it returns a 2×2 replicated image +with one pixel coloured +.I one +and the other three +with +.I three +(after translation through the colour map). +This simulates a wider range of tones than can +be represented by a single pixel value on a colour-mapped display. +.TP +.IB d .rgb( red\fP,\fP\ green\fP,\fP\ blue ) +Uses the values of red, green, and blue to create +a single-pixel replicated image of that colour. +The values are intensities that range from 0 (no colour) to 255 (saturated). +The alpha component is always 255 (fully opaque). +.TP +.IB d .namedimage ( name ) +Returns a reference to the image published as +.I name +on display +.I d +by +.B Image.nameimage +(see +.IR draw-image (2)). +This allows unrelated processes to share the image (eg, a window manager and client). +.TP +.IB d .open( name ) +Read an image +description from the named +file and return an +.B Image +holding the picture. +See +.IR image (6) +for more information about image files. +.TP +.IB d .readimage( fd ) +Analogous to +.BR open , +but from an open file descriptor rather than a named file. +.TP +.IB d .writeimage( fd\fP,\fP\ i ) +Complement of +.BR readimage : +write an image file representing +.B i +to the open file descriptor. +.TP +.IB d .rgb2cmap( red\fP,\fP\ green\fP,\fP\ blue ) +Return the +.I rgbv +colour map index (see +.IR colour (6)) +of the colour that best matches +the given colour triple. The values of the components range from +0 (no colour) to 255 (saturated). +.TP +.IB d .cmap2rgb( c ) +Return the colour triple (red, blue, green) corresponding to colour +map index +.IR c . +.TP +.IB d .cmap2rgba( c ) +Return the 32-bit RGBA representation of the colour corresponding to colour +map index +.IR c . +The alpha component is always 255 (fully opaque). +.ig +.TP +.IB d .cursor(\fIi\fP,\ \fIp\fP) +Set the current cursor. +If +.I i +is the image of the current display, +then the graphics cursor will be set +to its default value, otherwise +.I i +must be an image with ldepth 0 +and the following rules apply: the size of the +cursor will be half the horizontal height of +.I i +(subject to system-dependent restrictions on cursor +size). The top half and the bottom half of the image +are treated as two independent masks. When the +cursor is drawn, pixels congruent with non-zero bits +in the top half are cleared +and then pixels congruent with non-zero bits in the +bottom half are set. +.I P +gives the offset added to the mouse position when drawing +the cursor image. +.TP +.IB d .cursorset(\fIp\fP) +Set the position of the mouse cursor to +.IR p . +.SH BUGS +The interface to +.B cursor +does not allow the use of colour mouse cursors, +even on systems that allow them. The interface is likely +to change in this respect. +.. diff --git a/man/2/draw-example b/man/2/draw-example new file mode 100644 index 00000000..e006e724 --- /dev/null +++ b/man/2/draw-example @@ -0,0 +1,116 @@ +.TH DRAW-EXAMPLE 2 +.SH NAME +draw: example \- +simple program illustrating image primitives +.SH DESCRIPTION +This manual page presents a self-contained simple program that illustrates most +of the feature of the basic draw library. +It must be run at the top-level Inferno shell prompt, not within a window system, +as it establishes its own connection to the display and writes directly +on the display, not in a private window. +.PP +The program exercises the drawing primitives, taking particular care +to maintain a consistent coordinate system for the combinations of +images on the display. Comments in the code introduce each step. +.PP +.EX +implement Test; + +include "sys.m"; + +include "draw.m"; + +Test: module +{ + init: fn(ctxt: ref Draw->Context, argv: list of string); +}; + +init(nil: ref Draw->Context, nil: list of string) +{ + sys := load Sys Sys->PATH; + draw := load Draw Draw->PATH; + Display, Font, Rect, Point, Image, Screen: import draw; + + # + # Set up connection to display and initialize colours. + # + display := draw->Display.allocate(nil); + disp := display.image; + red := display.color(Draw->Red); + blue := display.color(Draw->Blue); + white := display.color(Draw->White); + yellow := display.color(Draw->Yellow); + + # + # Paint the screen red. + # + disp.draw(disp.r, red, nil, disp.r.min); + sys->sleep(5000); + + # + # Texture a region with rectangular tiles. + # + texture := display.newimage(((0,0),(2,3)), + disp.chans, 1, Draw->Black); + texture.clipr = ((-10000,-10000),(10000,10000)); + # put something in the texture + texture.draw(((0,0),(1,3)), white, nil, (0,0)); + texture.draw(((0,0),(2, 1)), white, nil, (0,0)); + # use texture as both source and mask to let + # destination colour show through + disp.draw(((100,100),(200,300)), texture, + texture, (0,0)); + sys->sleep(5000); + + # + # White-out a quarter of the pixels in a region, + # to make the region appear shaded. + # + stipple := display.newimage(((0,0),(2,2)), + disp.chans, 1, Draw->Transparent); + stipple.draw(((0,0),(1,1)), display.opaque, + nil, (0,0)); + disp.draw(((100,100),(300,250)), white, + stipple, (0,0)); + sys->sleep(5000); + + # + # Draw textured characters. + # + font := Font.open(display, "*default*"); + disp.text((100,310), texture, (0,0), font, + "Hello world"); + sys->sleep(5000); + + # + # Draw picture in elliptical frame. + # + delight := display.open("/icons/delight.bit"); + piccenter := delight.r.min.add(delight.r.max).div(2); + disp.fillellipse((250,250), 150, 50, + delight, piccenter); + disp.ellipse((250,250), 150, 50, 3, yellow, (0,0)); + sys->sleep(5000); + + # + # Draw a parabolic brush stroke using an elliptical brush + # to reveal more of the picture, consistent with what's + # already visible. + # + dx : con 15; + dy : con 3; + brush := display.newimage(((0,0),(2*dx+1,2*dy+1)), disp.chans, + 0, Draw->Black); + brush.fillellipse((dx,dy), dx, dy, display.white, + (0,0)); + for(x:=delight.r.min.x; x<delight.r.max.x; x++){ + y := (x-piccenter.x)*(x-piccenter.x)/80; + y += 2*dy+1; # so whole brush is visible at top + xx := x+(250-piccenter.x)-dx; + yy := y+(250-piccenter.y)-dy; + disp.gendraw(((xx,yy),(xx+2*dx+1,yy+2*dy+1)), + delight, (x-dx, y-dy), brush, + (0,0)); + } +} +.EE diff --git a/man/2/draw-font b/man/2/draw-font new file mode 100644 index 00000000..c68d0ef4 --- /dev/null +++ b/man/2/draw-font @@ -0,0 +1,111 @@ +.TH DRAW-FONT 2 +.SH NAME +Font \- +character images for Unicode text +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +Font: adt +{ + name: string; + height: int; + ascent: int; + display: ref Display; + + open: fn(d: ref Display, file: string): ref Font; + build: fn(d: ref Display, name, desc: string): ref Font; + width: fn(f: self ref Font, str: string): int; +}; +.EE +.SH DESCRIPTION +The +.B Font +type defines the appearance of characters drawn with the +.B Image.text +primitive (see +.IR draw-image (2)). +.B Fonts +are usually read from files and are selected based on their +size, their style, the portion of Unicode space they represent, +and so on. +.PP +Fonts are built from a series of subfonts that define contiguous portions +of the Unicode character space, such as the ASCII or the +Greek alphabet. +Font files are textual descriptions of the allocation of characters in +the various regions of the Unicode space; see +.IR font (6) +for the format. +Subfonts are not visible from Limbo. +.PP +A default font, named +.BR *default* , +is always available. +.PP +The type incorporates: +.TP 10 +.BR ascent ", " height +These define the vertical sizes +of the font, in pixels. +The +.B ascent +is the distance from the font baseline to the top of +a line of text; +.B height +gives the interline spacing, that is, the distance from +one baseline to the next. +.TP +.B name +This field +identifies the font, either +the name of +the file from which the font was read, or +.B +"*default*" +for the default font. +.TP +.B display +Tells on which display the font resides. +.TP +.BI open( d\fP,\fP\ file\fP) +The +.B open +method creates a +.B Font +by reading the contents of the named +.IR file . +Fonts are cached, so an open request may return a pointer to an +existing +.BR Font , +without rereading the file. +The name +.B +"*default*" +always describes a defined font. +Fonts are created for an instance of a +.B Display +object, even though the creation +functions are in type +.BR Font . +.TP +.BI build( d\fP,\fP\ name\fP,\fP\ desc ) +.B Build +creates a +.B Font +object by reading the description from the string +.B desc +rather than a file. +.I Name +specifies the name of the font to be created. +.TP +\f2f\fP\f5.width(\fP \f2str\fP \f5)\fP +The +.B width +method returns the width in pixels that +.I str +would occupy if drawn by +.B Image.text +in the Font +.IR f . diff --git a/man/2/draw-image b/man/2/draw-image new file mode 100644 index 00000000..477e69e0 --- /dev/null +++ b/man/2/draw-image @@ -0,0 +1,909 @@ +.TH DRAW-IMAGE 2 +.SH NAME +Image \- +pictures and drawing +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +# compositing operators +SinD: con 1<<3; +DinS: con 1<<2; +SoutD: con 1<<1; +DoutS: con 1<<0; + +S: con SinD|SoutD; +SoverD: con SinD|SoutD|DoutS; +SatopD: con SinD|DoutS; +SxorD: con SoutD|DoutS; + +D: con DinS|DoutS; +DoverS: con DinS|DoutS|SoutD; +DatopS: con DinS|SoutD; +DxorS: con DoutS|SoutD; + +Clear: con 0; + +Image: adt +{ + r: Rect; + clipr: Rect; + chans: Chans; + depth: int; + repl: int; + + display: ref Display; + screen: ref Screen; + + draw: fn(dst: self ref Image, r: Rect, src: ref Image, + mask: ref Image, p: Point); + drawop: fn(dst: self ref Image, r: Rect, src: ref Image, + mask: ref Image, p: Point, op: int); + gendraw: fn(dst: self ref Image, r: Rect, src: ref Image, + p0: Point, mask: ref Image, p1: Point); + gendrawop: fn(dst: self ref Image, r: Rect, src: ref Image, + p0: Point, mask: ref Image, p1: Point, op: int); + line: fn(dst: self ref Image, p0,p1: Point, + end0,end1,thick: int, + src: ref Image, sp: Point); + lineop: fn(dst: self ref Image, p0,p1: Point, + end0,end1,thick: int, + src: ref Image, sp: Point, op: int); + poly: fn(dst: self ref Image, p: array of Point, + end0,end1,thick: int, + src: ref Image, sp: Point); + polyop: fn(dst: self ref Image, p: array of Point, + end0,end1,thick: int, + src: ref Image, sp: Point, op: int); + bezspline: fn(dst: self ref Image, p: array of Point, + end0,end1,thick: int, + src: ref Image, sp: Point); + bezsplineop: fn(dst: self ref Image, p: array of Point, + end0,end1,thick: int, + src: ref Image, sp: Point, op: int); + fillpoly: fn(dst: self ref Image, p: array of Point, + wind: int, src: ref Image, sp: Point); + fillpolyop: fn(dst: self ref Image, p: array of Point, + wind: int, src: ref Image, sp: Point, op: int); + fillbezspline: fn(dst: self ref Image, p: array of Point, + wind: int, src: ref Image, sp: Point); + fillbezsplineop: fn(dst: self ref Image, p: array of Point, + wind: int, src: ref Image, sp: Point, op: int); + ellipse: fn(dst: self ref Image, c: Point, a, b, + thick: int, src: ref Image, sp: Point); + ellipseop: fn(dst: self ref Image, c: Point, a, b, + thick: int, src: ref Image, sp: Point, op: int); + fillellipse:fn(dst: self ref Image, c: Point, a, b: int, + src: ref Image, sp: Point); + fillellipseop:fn(dst: self ref Image, c: Point, a, b: int, + src: ref Image, sp: Point, op: int); + arc: fn(dst: self ref Image, c: Point, a, b, thick: int, + src: ref Image, sp: Point, alpha, phi: int); + arcop: fn(dst: self ref Image, c: Point, a, b, thick: int, + src: ref Image, sp: Point, + alpha, phi: int, op: int); + fillarc: fn(dst: self ref Image, c: Point, a, b: int, + src: ref Image, sp: Point, alpha, phi: int); + fillarcop: fn(dst: self ref Image, c: Point, a, b: int, + src: ref Image, sp: Point, + alpha, phi: int, op: int); + bezier: fn(dst: self ref Image, a,b,c,d: Point, + end0,end1,thick: int, + src: ref Image, sp: Point); + bezierop: fn(dst: self ref Image, a,b,c,d: Point, + end0,end1,thick: int, + src: ref Image, sp: Point, op: int); + fillbezier: fn(dst: self ref Image, a,b,c,d: Point, wind:int, + src: ref Image, sp: Point); + fillbezierop: fn(dst: self ref Image, a,b,c,d: Point, wind:int, + src: ref Image, sp: Point, op: int); + arrow: fn(a,b,c: int): int; + text: fn(dst: self ref Image, p: Point, src: ref Image, + sp: Point, font: ref Font, str: string): Point; + textop: fn(dst: self ref Image, p: Point, src: ref Image, + sp: Point, font: ref Font, str: string, + op: int): Point; + textbg: fn(dst: self ref Image, p: Point, src: ref Image, + sp: Point, font: ref Font, str: string, + bg: ref Image, bgp: Point): Point; + textbgop: fn(dst: self ref Image, p: Point, src: ref Image, + sp: Point, font: ref Font, str: string, + bg: ref Image, bgp: Point, op: int): Point; + border: fn(dst: self ref Image, r: Rect, i: int, + src: ref Image, sp: Point); + borderop: fn(dst: self ref Image, r: Rect, i: int, + src: ref Image, sp: Point, op: int); + + readpixels: fn(src: self ref Image, r: Rect, + data: array of byte): int; + writepixels:fn(dst: self ref Image, r: Rect, + data: array of byte): int; + name: fn(im: self ref Image, s: string, in: int): int; + top: fn(win: self ref Image); + bottom: fn(win: self ref Image); + flush: fn(win: self ref Image, func: int); + origin: fn(win: self ref Image, log, scr: Point): int; +}; +.EE +.SH DESCRIPTION +The +.B Image +type defines rectangular pictures and the methods to draw upon them; +it is also the building block for higher level objects such as +windows and fonts. +In particular, a window is represented as an +.BR Image ; +no special operators are needed to draw on a window. +Off-screen images can have an alpha channel, which gives each pixel an opacity +factor, which in turn allows non-rectangular images to be defined +(ie, pixels made fully transparent by the alpha channel +do not appear when the image is displayed). +Many drawing operations allow images to be shaped, or partial transparency added, by using the alpha +channel of another image as a mask (also called a `matte'). +There are two functions in +.B Image +for each such operation. +One has an +.B op +suffix, and takes an explicit image compositing operator: +.BR S , +.BR D , +.BR SinD , ..., +.BR SoverD +and so on. +(See the Porter-Duff paper mentioned below for the meaning of each operation.) +The other function (without the +.B op +suffix) provides as its default operation the most common operation, +.BR SoverD , +by which the source image, within its matte, is drawn over the destination image. +.PP +An +.B Image +has a pixel channel structure as described in +.IR colour (6), +represented by a value of the +.B Chans +adt, +defined in +.IR draw-display (2). +The channel structure of an image is fixed when the image is allocated. +.PP +.B Image +has the following components: +.TP 10 +.B display +Tells on which display the image resides. +.TP +.B screen +If the image is a window on a +.B Screen +(see +.IR draw-screen (2)), +this field refers to that screen; otherwise it is nil. +.TP +.B r +The coordinates of the rectangle in the plane for which the +.B Image +has defined pixel values. +It should not be modified after the image is created. +.TP +.B clipr +The clipping rectangle: operations that read or write +the image will not access pixels outside +.BR clipr . +Frequently, +.B clipr +is the same as +.BR Image.r , +but it may differ; see in particular the discussion of +.BR Image.repl . +The clipping region may be modified dynamically. +.TP +.B chans +The pixel channel structure of the image; the value +should not be modified after the image is created. +.TP +.B depth +The number of bits per pixel in the picture: +it is simply a convenience since it is necessarily equal to +.BR chans.depth() , +and it should not be modified after the image is created. +.TP +.B repl +A boolean value specifying whether the image is tiled to cover +the plane when used as a source for a drawing operation. +If +.B Image.repl +is zero, operations are restricted to the intersection of +.B Image.r +and +.BR Image.clipr . +If +.B Image.repl +is set, +.B Image.r +defines the tile to be replicated and +.B Image.clipr +defines the portion of the plane covered by the tiling, in other words, +.B Image.r +is replicated to cover +.BR Image.clipr ; +in such cases +.B Image.r +and +.B Image.clipr +are independent. +.IP +For example, a replicated image with +.B Image.r +set to ((0,\ 0),\ (1,\ 1)) and +.B Image.clipr +set to ((0,\ 0),\ (100,\ 100)), +with the single pixel of +.B Image.r +set to blue, +behaves identically to an image with +.B Image.r +and +.B Image.clipr +both set to ((0,\ 0),\ (100,\ 100)) and all pixels set to blue. +However, +the first image requires far less memory. +The replication flag may be modified dynamically along with the clipping +rectangle. +.TP +.IB dst .draw( r\fP,\fP\ src\fP,\fP\ mask\fP,\fP\ p\fP ) +.PD0 +.TP +.IB dst .drawop( r\fP,\fP\ src\fP,\fP\ mask\fP,\fP\ p\fP,\fP\ op ) +.PD +.B Draw +is the standard drawing function. +Only those pixels within the intersection of +.IB dst .r +and +.IB dst .clipr +will be affected; +.B draw +ignores +.IB dst .repl\fR. +The operation proceeds as follows +(this is a description of the behavior, not the implementation): +.RS +.IP 1. +If +.B repl +is set in +.I src +or +.IR mask , +replicate their contents to fill +their clip rectangles. +.IP 2. +Translate +.I src +and +.I mask +so +.I p +is aligned with +.IB r .min\fR. +.IP 3. +Set +.I r +to the intersection of +.I r +and +.IB dst .r\fR. +.IP 4. +Intersect +.I r +with +.IB src .clipr\fR. +If +.IB src .repl +is false, also intersect +.I r +with +.IB src .r\fR. +.IP 5. +Intersect +.I r +with +.IB mask .clipr\fR. +If +.IB mask .repl +is false, also intersect +.I r +with +.IB mask .r\fR. +.IP 6. +For each location in +.IR r , +combine the +.I dst +pixel using the alpha value corresponding to the +.I mask +pixel. +If the +.I mask +has an explicit alpha channel, the alpha value corresponding to the +.I mask +pixel is simply that pixel's alpha channel. +Otherwise, the alpha value is the NTSC greyscale equivalent of the colour value, +with white meaning opaque and black transparent. +.RE +.IP +In terms of the Porter-Duff compositing algebra, +.I draw +replaces the +.I dst +pixels with +.RI ( src +in +.IR mask ) +over +.IR dst . +.I Drawop +is almost identical, but applies the compositing operation +.I op +instead: +.RI ( src +in +.IR mask ) +.I op +.IR dst . +.IP +The various +pixel channel formats +involved need not be identical. +If the channels involved are smaller than 8-bits, they will +be promoted before the calculation by replicating the extant bits; +after the calculation, they will be truncated to their proper sizes. +For +.B draw +and +.B gendraw +only, +if +.I mask +is nil, no mask is used. +.TP +\f2dst\fP.\f5gendraw(\f2r\fP, \f2src\fP, \f2p0\fP, \f2mask\fP, \f2p1\fP)\fP +.PD0 +.TP +\f2dst\fP.\f5gendrawop(\f2r\fP, \f2src\fP, \f2p0\fP, \f2mask\fP, \f2p1\fP\f5, \f2op\fP)\fP +.PD +Similar to \f5draw()\fP except that it aligns the source and mask differently: +.I src +is aligned so +.I p0 +corresponds to +.IB r . min +and +.I mask +is aligned so +.I p1 +corresponds to +.IB r . min . +For most purposes with simple masks and source images, +.B draw +is sufficient, but +.B gendraw +is the general operator and the one the other drawing primitives are built upon. +.TP +\f2dst\fP.\f5line(\f2p0\fP, \f2p1\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5lineop(\f2p0\fP, \f2p1\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Line +draws in +.I dst +a line of width +.RI 1+2* thick +pixels joining points +.I p0 +and +.IR p1 . +The line is drawn using pixels from the +.I src +image aligned so +.I sp +in the source corresponds to +.I p0 +in the destination. +The line touches both +.I p0 +and +.IR p1 , +and +.I end0 +and +.I end1 +specify how the ends of the line are drawn. +.B Draw->Endsquare +terminates the line perpendicularly to the direction of the line; a thick line with +.B Endsquare +on both ends will be a rectangle. +.B Draw->Enddisc +terminates the line by drawing a disc of diameter +.RI 1+2* thick +centered on the end point. +.B Draw->Endarrow +terminates the line with an arrowhead whose tip touches the endpoint. +See the description of +.B arrow +for more information. +.IP +.B Line +and the other geometrical operators are equivalent to calls to +.B gendraw +using a mask produced by the geometric procedure. +.TP +\f2dst\fP.\f5poly(\f2p\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5polyop(\f2p\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Poly +draws a general polygon; it +is equivalent to a series of calls to +.B line +joining adjacent points in the array of +.B Points +.IR p . +The ends of the polygon are specified as in +.BR line ; +interior lines are terminated with +.B Enddisc +to make smooth joins. +The source is aligned so +.I sp +corresponds to +.IB p [0]\f1. +.TP +\f2dst\fP.\f5bezspline(\f2p\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5bezsplineop(\f2p\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Bezspline +takes the same arguments as +.B poly +but draws a quadratic B-spline (despite its name) rather than a polygon. +If the first and last points in +.I p +are equal, the spline has periodic end conditions. +.TP +\f2dst\fP.\f5fillpoly(\f2p\fP, \f2wind\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5fillpolyop(\f2p\fP, \f2wind\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Fillpoly +is like +.B poly +but fills in the resulting polygon rather than outlining it. +The source is aligned so +.I sp +corresponds to +.IB p [0]\f1. +The winding rule parameter +.I wind +resolves ambiguities about what to fill if the polygon is self-intersecting. +If +.I wind +is +.BR ~0 , +a pixel is inside the polygon if the polygon's winding number about the point +is non-zero. +If +.I wind +is 1, +a pixel is inside if the winding number is odd. +Complementary values (0 or ~1) cause outside pixels to be filled. +The meaning of other values is undefined. +The polygon is closed with a line if necessary. +.TP +\f2dst\fP.\f5fillbezspline(\f2p\fP, \f2wind\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5fillbezsplineop(\f2p\fP, \f2wind\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Fillbezspline +is like +.B fillpoly +but fills the quadratic B-spline rather than the polygon outlined by +.IR p . +The spline is closed with a line if necessary. +.TP +\f2dst\fP.\f5ellipse(\f2c\fP, \f2a\fP, \f2b\fP, \f2thick\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5ellipseop(\f2c\fP, \f2a\fP, \f2b\fP, \f2thick\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Ellipse +draws in +.I dst +an ellipse centered on +.I c +with horizontal and vertical semiaxes +.I a +and +.IR b . +The source is aligned so +.I sp +in +.I src +corresponds to +.I c +in +.IR dst . +The ellipse is drawn with thickness +.RI 1+2* thick . +.TP +\f2dst\fP.\f5fillellipse(\f2c\fP, \f2a\fP, \f2b\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5fillellipseop(\f2c\fP, \f2a\fP, \f2b\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Fillellipse +is like +.B ellipse +but fills the ellipse rather than outlining it. +.TP +.IB dst .arc(\fIc\fP,\ \fIa\fP,\ \fIb\fP,\ \fIthick\fP,\ \fIsrc\fP,\ \fIsp\fP,\ \fIalpha\fP,\ \fIphi\fP) +.PD0 +.TP +.IB dst .arcop(\fIc\fP,\ \fIa\fP,\ \fIb\fP,\ \fIthick\fP,\ \fIsrc\fP,\ \fIsp\fP,\ \fIalpha\fP,\ \fIphi\fP,\ \fIop\fP) +.PD +.I Arc +is like +.IR ellipse , +but draws only that portion of the ellipse starting at angle +.I alpha +and extending through an angle of +.IR phi . +The angles are measured in degrees counterclockwise from the positive +.I x +axis. +.TP +.IB dst .fillarc(\fIc\fP,\ \fIa\fP,\ \fIb\fP,\ \fIsrc\fP,\ \fIsp\fP,\ \fIalpha\fP,\ \fIphi\fP) +.PD0 +.TP +.IB dst .fillarcop(\fIc\fP,\ \fIa\fP,\ \fIb\fP,\ \fIsrc\fP,\ \fIsp\fP,\ \fIalpha\fP,\ \fIphi\fP,\ \fIop\fP) +.PD +.I Fillarc +is like +.IR arc , +but fills the sector with the source color. +.TP +\f2dst\fP.\f5bezier(\f2a\fP, \f2b\fP, \f2c\fP, \f2d\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5bezierop(\f2a\fP, \f2b\fP, \f2c\fP, \f2d\fP, \f2end0\fP, \f2end1\fP, \f2thick\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Bezier +draws the +cubic Bezier curve defined by +.B Points +.IR a , +.IR b , +.IR c , +and +.IR d . +The end styles are determined by +.I end0 +and +.IR end1 ; +the thickness of the curve is +.RI 1+2* thick . +The source is aligned so +.I sp +in +.I src +corresponds to +.I a +in +.IR dst . +.TP +\f2dst\fP.\f5fillbezier(\f2a\fP, \f2b\fP, \f2c\fP, \f2d\fP, \f2wind\fP, \f2src\fP, \f2sp\fP) +.PD0 +.TP +\f2dst\fP.\f5fillbezierop(\f2a\fP, \f2b\fP, \f2c\fP, \f2d\fP, \f2wind\fP, \f2src\fP, \f2sp\fP, \f2op\fP) +.PD +.B Fillbezier +is to +.B bezier +as +.B fillpoly +is to +.BR poly . +.TP +.BI arrow( "a,\ b,\ c" ) +.B Arrow +is a function to describe general arrowheads; its result is passed as +.I end +parameters to +.BR line , +.BR poly , +etc. +If all three parameters are zero, it produces the default arrowhead, +otherwise, +.I a +sets the distance along line from end of the regular line to tip, +.I b +sets the distance along line from the barb to the tip, +and +.I c +sets the distance perpendicular to the line from edge of line to the tip of the barb, +all in pixels. +.TP +.IB dst .border( r\fP,\fP\ i\fP,\fP\ src\fP,\fP\ sp\fP) +.PD0 +.TP +.IB dst .borderop( r\fP,\fP\ i\fP,\fP\ src\fP,\fP\ sp\fP,\ \f2op\fP) +.PD +.I Border +draws in +.I dst +an outline of rectangle +.I r +in the given +.I src +colour. +The outline has width +.IR i ; +if positive, the border goes inside the rectangle; negative, outside. +The source is aligned so +.I sp +corresponds to +.IB r .min . +.TP +.IB dst .text( p\fP,\fP\ src\fP,\fP\ sp\fP,\fP\ font\fP,\fP\ str\fP) +.PD0 +.TP +.IB dst .textop( p\fP,\fP\ src\fP,\fP\ sp\fP,\fP\ font\fP,\fP\ str\fP,\ \f2op\fP) +.TP +.IB dst .textbg( p\fP,\fP\ src\fP,\fP\ sp\fP,\fP\ font\fP,\fP\ str\fP,\ \f2bg\fP,\ \f2bgp\fP) +.PD0 +.TP +.IB dst .textbgop( p\fP,\fP\ src\fP,\fP\ sp\fP,\fP\ font\fP,\fP\ str\fP,\ \f2bg\fP,\ \f2bgp\fP,\ \f2op\fP) +.PD +.B Text +draws in +.I dst +characters specified by the string +.I str +and font +.IR font ; +it is equivalent to a series of calls to +.B gendraw +using source +.I src +and masks determined by the character shapes. +The text is positioned with the left of the first character at +.IB p .x +and the top of the line of text at +.IB p .y\f1. +The source is positioned so +.I sp +in +.I src +corresponds to +.I p +in +.IR dst . +.B Text +returns a +.B Point +that is the position of the next character that would be drawn if the string were longer. +.IP +For characters with undefined +or zero-width images in the font, the character at font position 0 (NUL) is drawn. +.IP +.B Text +draws the text leaving the background intact. +.B Textbg +draws the background colour +.I bg +behind the characters, with the alignment specified by point +.IR bgp ; +it is otherwise the same as +.BR text . +.TP +.IB src .readpixels( r\fP,\fP\ data ) +.B Readpixels +fills the +.I data +array with pixels from the specified rectangle of the +.I src +image. +The pixels are presented one horizontal line at a time, +starting with the top-left pixel of +.IR r . +Each scan line starts with a new byte in the array, +leaving the last byte of the previous line partially empty, if necessary. +Pixels are packed as tightly as possible within +.IR data , +regardless of the rectangle being extracted. +Bytes are filled from most to least significant bit order, +as the +.I x +coordinate increases, aligned so +.IR x =0 +would appear as the leftmost pixel of its byte. +Thus, for a 1-bit deep greyscale image, +the pixel at +.I x +offset 165 within the rectangle will be in a +.I data +byte with mask value +.B 16r04 +regardless of the overall +rectangle: 165 mod 8 equals 5, and +.B "16r80\ >>\ 5" equals +.BR 16r04 . +It is an error to call +.B readpixels +with an array that is too small to hold the rectangle's pixels. +The return value is the number of bytes copied. +The arrangement of pixels in arrays of bytes is described in +.IR image (6). +.TP +.IB dst .writepixels( r\fP,\fP\ data ) +.B Writepixels +copies pixel values from the +.I data +array to the specified rectangle in the +.I dst +image. +The format of the data is that produced by +.BR readpixels . +The return value is the number of bytes copied. +It is an error to call +.B writepixels +with an array that is too small to fill the rectangle. +.TP +.IB im .name( s , in ) +Publish the image +.I im +on its display under name +.IR s , +if +.I in is non-zero; +otherwise, +.I s +must be an already published name and it is withdrawn from publication. +A published image can be retrieved using +.B Display.namedimage +(see +.IR draw-display (2)). +This function returns -1 on error, typically because the name is already in use +(for +.I in +non-zero), or does not exist +(for +.I in +zero). +.TP +.IB win .top() +If the image +.I win +is a window, +.B top +pulls it to the ``top'' of the stack of windows on its +.BR Screen , +perhaps obscuring other images. +If +.I win +is not a window, +.B top +has no effect. +.TP +.IB win .bottom() +If the image +.I win +is a window, +.B bottom +pulls it to the ``bottom'' of the stack of windows on its +.BR Screen , +perhaps obscuring it. +If +.I win +is not a window, +.B bottom +has no effect. +.TP +.IB image .flush( flag ) +The connection to a display has a buffer used to gather graphics requests +generated by calls to the draw library. +By default, the library flushes the buffer at the conclusion of any +call that affects the visible display +image itself. +The +.B flush +routine allows finer control of buffer management. +The +.I flag +has three possible values: +.B Flushoff +turns off all automatic flushing caused by writes to +.IR image , +typically a window or the display image itself +(buffers may still be written when they fill or when other objects on the display +are modified); +.B Flushnow +causes the buffer to be flushed immediately; +and +.B Flushon +restores the default behaviour. +.TP +\f2win\fP.\f5origin(\f2log\fP, \f2scr\fP) +When a window is created (see +.IR draw-screen (2)), +the coordinate system within the window is identical to that of the screen: +the upper left corner of the window rectangle is its physical location on the display, +not for example (0, 0). +This symmetry may be broken, however: +.B origin +allows control of the location of the window on the display and the coordinate +system used by programs drawing on the window. +The first argument, +.IR log , +sets the upper left corner of the logical (in-window) coordinate system without +changing the position of the window on the screen. +The second argument, +.IR scr , +sets the upper left corner of physical (on-screen) coordinate system, that is, the +window's location on the display, without changing the internal coordinate system. +Therefore, changing +.I scr +without changing +.I log +moves the window without requiring the client using it to be notified of the change; +changing +.I log +without changing +.I scr +allows the client to set up a private coordinate system regardless of the window's +location. +It is permissible for values of +.I scr +to move some or all of the window off screen. +.B Origin +returns \-1 if the image is not a window or, in the case of changes to +.IR scr , +if there are insufficient resources available to move the window; +otherwise it returns 1. +.SH SOURCE +.B /libdraw +.SH SEE ALSO +.IR draw-intro (2), +.IR draw-display (2), +.IR draw-point (2), +.IR draw-rect (2), +.IR draw-screen (2), +.IR colour (6), +.IR image (6), +.IR font (6) +.IR utf (6) +.PP +T. Porter, T. Duff. +``Compositing Digital Images'', +.I "Computer Graphics +(Proc. SIGGRAPH), 18:3, pp. 253-259, 1984. +.SH DIAGNOSTICS +These functions raise exceptions if argument images are nil, +except for +.B draw +and +.B gendraw +where the mask image is optional and may be nil. +.SH BUGS +Anti-aliased characters can be drawn by defining a font +with multiple bits per pixel, but there are +no anti-aliasing geometric primitives. diff --git a/man/2/draw-point b/man/2/draw-point new file mode 100644 index 00000000..a64a3665 --- /dev/null +++ b/man/2/draw-point @@ -0,0 +1,66 @@ +.TH DRAW-POINT 2 +.SH NAME +Point \- +coordinate position +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +Point: adt +{ + x: int; + y: int; + + add: fn(p: self Point, q: Point): Point; + sub: fn(p: self Point, q: Point): Point; + mul: fn(p: self Point, i: int): Point; + div: fn(p: self Point, i: int): Point; + eq: fn(p: self Point, q: Point): int; + in: fn(p: self Point, r: Rect): int; +}; +.EE +.SH DESCRIPTION +.PP +The +.B Point +data type specifies a position in the integer grid. +.TP 10 +.BR x ", " y +The coordinate position. The coordinates increase to the right +.RI ( x ) +and down +.RI ( y ). +.TP +.IB p .add( q ) +Returns the point +.BI ( p .x+ q .x, +.IB p .y+ q .y)\fR. +.TP +.IB p .sub( q ) +Returns the point +.BI ( p .x\- q .x, +.IB p .y\- q .y)\fR. +.TP +.IB p .mul( i ) +Returns the point +.BI ( p .x* i , +.IB p .y* i )\fR. +.TP +.IB p .div( i ) +Returns the point +.BI ( p .x/ i , +.IB p .y/ i )\fR. +.TP +.IB p .eq( q ) +Returns non-zero if the points' coordinates are equal and zero otherwise. +.TP +.IB p .in( r ) +Returns non-zero if point +.I p +lies within rectangle +.I r +and zero otherwise. +.SH SEE ALSO +.IR draw-intro (2), +.IR draw-rect (2) diff --git a/man/2/draw-pointer b/man/2/draw-pointer new file mode 100644 index 00000000..3383362e --- /dev/null +++ b/man/2/draw-pointer @@ -0,0 +1,38 @@ +.TH DRAW-POINTER 2 +.SH NAME +Pointer \- +state of a pointer device such as a mouse +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +Pointer: adt +{ + buttons: int; + xy: Point; +}; +.EE +.SH DESCRIPTION +.TP 10 +.B buttons +Each button on the device corresponds to a bit in +.BR buttons ; +zero bits indicate released (or non-existent), and one bits indicate pressed. +The bits, from least to most significant positions, +represent the buttons from left to right. +.TP +.B xy +The pointer's screen coordinates. +.PP +.IR Mux (1) +uses the +.B cptr +member of the +.B Draw->Context +adt to pass pointer events through to applications. +.SH SEE ALSO +.IR devpointer (2), +.B mouse +in +.IR tk (2) diff --git a/man/2/draw-rect b/man/2/draw-rect new file mode 100644 index 00000000..ca069378 --- /dev/null +++ b/man/2/draw-rect @@ -0,0 +1,138 @@ +.TH DRAW-RECT 2 +.SH NAME +Rect \- +rectangular portion of the plane +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +Rect: adt +{ + min: Point; + max: Point; + + canon: fn(r: self Rect): Rect; + dx: fn(r: self Rect): int; + dy: fn(r: self Rect): int; + eq: fn(r: self Rect, s: Rect): int; + Xrect: fn(r: self Rect, s: Rect): int; + inrect: fn(r: self Rect, s: Rect): int; + clip: fn(r: self Rect, s: Rect): (Rect, int); + combine: fn(r: self Rect, s: Rect): Rect; + contains: fn(r: self Rect, p: Point): int; + addpt: fn(r: self Rect, p: Point): Rect; + subpt: fn(r: self Rect, p: Point): Rect; + inset: fn(r: self Rect; n: int): Rect; +}; +.EE +.SH DESCRIPTION +The type +.B Rect +defines a rectangular portion of the integer grid. +.TP 10 +.BR min ", " max +These +members define the upper left +.RB ( min ) +and lower right +.RB ( max ) +points for the rectangle. +The rectangle contains the pixels +.BI "min.x\ \fR\(<=\ " "x\ \fR<\ " max.x +and +.BI "min.y\ \fR\(<=\ " "y\ \fR<\ " max.y\fR. +In general, +.B Rect +coordinates should be in canonical form: +.BR min.x "\ \(<=\ " max.x +and +.BR min.y "\ \(<=\ " max.y . +Some functions give undefined results if the +input rectangles are not canonical. +.TP +.IB r .canon() +Returns a canonical rectangle by sorting the coordinates of +.IR r . +.TP +.IB r .dx() +Returns the horizontal dimension of +.IR r . +.TP +.IB r .dy() +Returns the vertical dimension of +.IR r . +.TP +.IB r .eq( s ) +Returns non-zero if the rectangles +.I r +and +.I s +have the same coordinates and zero otherwise. +.TP +.IB r .Xrect( s ) +Returns non-zero if the rectangles +.I r +and +.I s +intersect and zero otherwise. +.I Intersection +means the rectangles share at least one pixel; zero-sized rectangles do not intersect. +.TP +.IB r .inrect( s ) +Returns non-zero if +.I r +is completely inside +.I s +and zero otherwise. +Rectangles with equal coordinates are considered to be inside each other. +Zero-sized rectangles contain no rectangles. +.TP +.IB r .clip( s ) +Computes the intersection between +.I r +and +.IR s . +If the input rectangles intersect, +.B clip +returns the resulting rectangle +and a non-zero integer value. +If the rectangles do not intersect, +.B clip +returns +.I r +and a zero value. +.TP +.IB r .combine( s ) +Returns the smallest rectangle sufficient +to cover all the pixels of +.I r +and +.IR s . +.TP +.IB r .contains( p ) +Returns non-zero if the rectangle +.I r +contains the pixel with the coordinates of +.I p +and zero otherwise. +Zero-sized rectangles contain no points. +.TP +.IB r .addpt( p ) +Returns the rectangle +.BI ( r .min.add( p ), +.IB r .max.add( p ))\fR. +.TP +.IB r .subpt( p ) +Returns the rectangle +.BI ( r .min.sub( p ), +.IB r .max.sub( p ))\fR. +.TP +.IB r .inset( n ) +Returns the rectangle +.BI ( r .min.add(( n , +.IB n )), +.IB r .max.sub(( n , +.IB n ))\fR. +The result will not be in canonical form if the inset amount is +too large for the rectangle. diff --git a/man/2/draw-screen b/man/2/draw-screen new file mode 100644 index 00000000..5a0d283b --- /dev/null +++ b/man/2/draw-screen @@ -0,0 +1,137 @@ +.TH DRAW-SCREEN 2 +.SH NAME +Screen \- +windows and subwindows on a display +.SH SYNOPSIS +.EX +include "draw.m"; +draw := load Draw Draw->PATH; + +Screen: adt +{ + id: int; + image: ref Image; + fill: ref Image; + display: ref Display; + + allocate: fn(image, fill: ref Image, public: int): ref Screen; + newwindow: fn(screen: self ref Screen, r: Rect, + backing:int, rgba: int): ref Image; + top: fn(screen: self ref Screen, wins: array of ref Image); +}; +.EE +.SH DESCRIPTION +A +.B Screen +is the data structure representing a set of windows visible on a particular +.B Image +such as the display or a parent window. +.TP 10 +.B id +When a +.B Screen +object is allocated (see +.B allocate +below), the system assigns it a unique integer, +.BR id . +It may be declared ``public'' and accessible to +arbitrary processes and machines with access to the screen's +.BR Display . +The +.B id +value may be used as an argument to +.BR Display.publicscreen ; +see +.IR draw-display (2). +.TP +.B fill +When windows are deleted from a screen, the system uses the +.B fill +image to repaint the screen's base image. +.TP +.B image +The image upon which the windows appear. +.TP +.B display +The display upon which the screen resides. +.TP +.BI allocate( image\fP,\fP\ fill\fP,\fP\ public ) +.B Allocate +makes a new +.B Screen +object. +The +.I image +argument provides the base image on which the windows will be made. +The +.I fill +argument provides the +.B Screen.fill +image. +.B Allocate +does not affect the contents of +.IR image ; +it may be necessary after allocation to paint the base image with +.BR fill . +.IP +Using a non-zero +.I public +argument allocates a public screen; zero requests a private screen. +Public screens may be attached by any process +on any machine with access to the +.B Display +upon which the screen is allocated, enabling remote processes to +create windows on the screen. +Knowing only the +.B id +field of the original +.BR Screen , +the remote process can call the +.B Display.publicscreen +function to acquire a handle to the screen. +The +.B image +and +.B fill +fields of a +.B Screen +obtained this way are +.BR nil , +but they are not needed for ordinary window management. +.TP +.IB screen .newwindow( r\fP,\fP\ backing\fP,\fP\ rgba ) +Allocates a window +on the display at the specified rectangle with the background +colour +.IR rgba , +expressed in 32-bit RGBA format; the return value is an +.B Image +that may be used like any other. +The +.I backing +parameter can be +.BR Draw->Refbackup , +which provides backing store to store obscured parts of the window when necessary, +and is used by the window manager and its clients; or +.BR Draw->Refnone , +wihch provides no refresh, and is used for windows that are transient, or are already protected by backing +store. +.TP +.IB screen .top( wins ) +.B Top +organizes a group of windows on a screen. +Given +.IR wins , +an array of window images, it places the +.I wins[0] +element at the top, +.I wins[1] +behind that, and so on, +with the last element of +.I wins +in front of the all the windows on the screen not in +.IR wins . +Images in the array must be on the specified +.I screen +.RB ( nil +elements are ignored). diff --git a/man/2/drawmux b/man/2/drawmux new file mode 100644 index 00000000..0da1b9e3 --- /dev/null +++ b/man/2/drawmux @@ -0,0 +1,68 @@ +.TH DRAWMUX 2 +.SH NAME +drawmux \- multiplex stream of draw requests +.SH SYNOPSIS +.EX +include "drawmux.m"; +drawmux := load Drawmux Drawmux->PATH; + +init: fn(): (string, ref Draw->Display); +newviewer: fn(fd: ref Sys->FD); +.EE +.SH DESCRIPTION +.B Drawmux +puts itself between the invoking application and +.B /dev/draw +(see +.IR draw (3)), +so that the contents of the current display can be replicated elsewhere. +.PP +.B Init +returns a new +.B Display +(see +.IR draw-display (2)) +representing a connection to a virtual display device. +Subsequent +.B Draw +requests to that display +(see +.IR draw-intro (2)) +are forwarded to the underlying +.IR draw (3) +device to appear on the physical display, but can also replicated +elsewhere, typically in a window on a remote display. +.PP +.B Newviewer +prepares the virtual display end of a +.B Drawmux +connection for each new viewer of the display created by a previous call to +.BR init . +The file descriptor +.I fd +is a connection to the viewer. +The remote viewer must first write 24 bytes on that connection, +containing two decimal numbers (each 11 digits and a space), +giving the identifier of a public screen on the viewer's display, on which +.B newviewer +will replicate the +.B Drawmux +display, +and the log (base 2) of the number of bits per pixel for windows created on that screen. +The remote viewer must then use +.B Sys->export +(see +.IR sys-dial (2)) +to export its +.BR /dev/draw , +which +.B newviewer +expects to find as the root of the exported hierarchy. +Subsequent draw operations on the +.B Drawmux +display will be replicated on the public screen exported by the viewer. +Shutting down the connection shuts down the multiplexor for that viewer. +.SH SEE ALSO +.IR wm-dmview (1), +.IR draw-intro (2), +.IR draw (3) diff --git a/man/2/encoding b/man/2/encoding new file mode 100644 index 00000000..6dc5189f --- /dev/null +++ b/man/2/encoding @@ -0,0 +1,50 @@ +.TH ENCODING 2 +.SH NAME +Encoding: enc, dec \- encoding and decoding of byte arrays as text +.SH SYNOPSIS +.EX +include "encoding.m"; +base16 := load Encoding Encoding->BASE16PATH; +base32 := load Encoding Encoding->BASE32PATH; +base32a := load Encoding Encoding->BASE32APATH; +base64 := load Encoding Encoding->BASE64PATH; + +enc: fn(a: array of byte): string; +dec: fn(s: string): array of byte +.EE +.SH DESCRIPTION +.B Encoding +presents a common interface to several ways of encoding binary data (represented in arrays of bytes) +as printable text, to be included in essentially textual data (such as XML) or +sent through e-mail systems (as in MIME). +.PP +.B Enc +returns a string with a textual encoding of the binary data in +.IR a . +.PP +.B Dec +returns an array of bytes containing the binary data encoded in +.IR s . +.PP +Four encodings are provided, including all those defined by RFC3548; +load the one required from the given path. +.TP +.B BASE16PATH +Encode in base 16, representing each byte as a pair of hexadecimal digits, using upper-case letters (RFC3548). +.TP +.B BASE32PATH +Encode in base 32, encoding 5 bits per character, using upper-case letters, digits `2' to `7', padded with `=', as per RFC3548. +.TP +.B BASE32APATH +Alternative encoding in base 32, encoding 5 bits per character, using digits `2' to `7', letters (either case) except `l' and `o', not padded. +.TP +.B BASE64PATH +Encode in base 64, encoding 6 bits per character, using upper- and lower-case letters, digits, `+' and `/', +padded with `=' (RFC3548). +.PP +When decoding, white space and illegal characters are ignored; +base 16 and base 32 decoders are case-insensitive. +.SH SOURCE +.B /appl/lib/encoding +.SH SEE ALSO +.IR convcs (2) diff --git a/man/2/env b/man/2/env new file mode 100644 index 00000000..185bd332 --- /dev/null +++ b/man/2/env @@ -0,0 +1,52 @@ +.TH ENV 2 +.SH NAME +env \- environment module +.SH SYNOPSIS +.EX +include "env.m"; +env = load Env Env->PATH; + +getenv: fn(var: string): string; +setenv: fn(var: string, val: string): int; +getall: fn(): list of (string, string); +clone: fn(): int; +new: fn(): int; +.EE +.SH DESCRIPTION +.B Env +provides an interface to manipulate environment variables which may then be shared +between processes. +.B Getenv +returns the value of the environment variable +.I var +passed as a parameter, +or +.B nil +if the variable is not set. It does +this by reading the contents of +.BI /env/ var. +.B Setenv +sets the value of the environment variable +.I var +to +.I val. +The value may be nil to unset the variable. It does this by writing the string +.I val +to +.BI /env/ var. +The routine returns a negative number if it fails to set the variable for any reason. +.B Getall +returns all the variables in the current environment as a list of (variable, value) pairs. +.B Clone +copies the current environment and places the process in a new environment group. Changes now +made to the environment will not affect the environment of other processes. +.B New +places the process in a new empty environment group. Changes made in this new environment will +not affect other processes. +.SH SOURCE +.B /appl/lib/env.b +.SH SEE ALSO +.IR env (1), +.IR sys-pctl (2), +.IR env (3) + diff --git a/man/2/ether b/man/2/ether new file mode 100644 index 00000000..fdd144af --- /dev/null +++ b/man/2/ether @@ -0,0 +1,77 @@ +.TH ETHER 2 +.SH NAME +ether \- Ethernet address manipulation +.SH SYNOPSIS +.EX +include "ether.m"; +ether := load Ether Ether->PATH; + +Eaddrlen: con 6; + +init: fn(); +parse: fn(s: string): array of byte; +text: fn(a: array of byte): string; +addressof: fn(dev: string): array of byte; +eqaddr: fn(a, b: array of byte): int; +.SH DESCRIPTION +.B Ether +provides a small set of functions that manipulate Ethernet MAC addresses, +for the use of the few applications such as +.IR bootpd (8) +that must work with them. +.PP +.B Init +must be called before using any other function in the module. +.PP +.B Parse +takes a textual representation of a MAC address in +.I s +and returns its internal representation as an array of bytes of length +.BR Eaddrlen , +the form used in packets read and written via +.IR ether (3). +.I S +is a string of twelve hexadecimal digits, corresponding to the six bytes of a MAC address. +Each pair of digits can optionally be separated by a colon. +If +.I s +is invalid, +.B parse +returns nil. +.PP +.B Text +takes an array of bytes of length +.B Eaddrlen +and returns its textual representation (a string of twelve hexadecimal digits). +It returns +.LR <invalid> +if the array is less than +.BR Eaddrlen , +but it ignores any bytes beyond that. +.PP +.B Addressof +returns the MAC address of the given Ether device +.I dev +(eg, +.LR /net/ether0 ), +which it reads from +.IB dev /addr . +It returns nil and sets the error string if that file does not exist or is invalid. +.PP +.B Eqaddr +returns true iff +.I a +and +.I b +are the same address. +.SH FILES +.TF /net/etherN/addr +.TP +.IB net /ether N /addr +hardware address of Ether +.I N +.SH SOURCE +.B /appl/lib/ether.b +.SH SEE ALSO +.IR ip (2), +.IR ether (3) diff --git a/man/2/exception b/man/2/exception new file mode 100644 index 00000000..e654bfeb --- /dev/null +++ b/man/2/exception @@ -0,0 +1,36 @@ +.TH EXCEPTION 2 +.SH NAME +exception \- Exception module +.SH SYNOPSIS +.EX +include "exception.m"; +exc := load Exception Exception->PATH; + +getexc: fn(pid: int): (int, string, string); +setexcnotifyleader: fn(pid: int): int; +setexcpropagate: fn(pid: int): int; +.EE +.SH DESCRIPTION +.B Except +provides exception-related utility routines to read or write to system +device files. +.PP +.B Getexc +returns the last exception to be raised on the process with the given process +id. A process id of -1 is taken to mean the current process. The returned +triple gives the pc value, the module and the exception name or 0, nil, nil +if no exception has occurred. +.PP +.B Setexcnotifyleader +and +.B setexcpropagate +set 'exceptions notifyleader' and 'exceptions propagate' respectively on the given +process. 0 is returned on success, +-1 on failure (for instance if the process is not a group leader or does not exist). +See +.I prog (3) +for the actual meaning of these settings. +.SH SOURCE +.B /appl/lib/exception.b +.SH SEE ALSO +.IR prog (3) diff --git a/man/2/factotum b/man/2/factotum new file mode 100644 index 00000000..b13062aa --- /dev/null +++ b/man/2/factotum @@ -0,0 +1,174 @@ +.TH FACTOTUM 2 +.SH NAME +Factotum: mount, proxy, rpc \- client interface to factotum +.SH SYNOPSIS +.EX +include "factotum.m"; +auth := load Factotum Factotum->PATH; + +Authinfo: adt{ + cuid: string; # ID on caller + suid: string; # ID on server + cap: string; # capability (only valid on server side) + secret: array of byte; # key for encryption +}; + +AuthRpcMax: con \fR...\fP; + +init: fn(); +mount: fn(fd: ref Sys->FD, mnt: string, flags: int, aname: string): + (int, ref Authinfo); +getuserpasswd: fn(keyspec: string): (string, string); +rpc: fn(facfd: ref Sys->FD, verb: string, a: array of byte): + (string, array of byte); +proxy: fn(afd: ref Sys->FD, facfd: ref Sys->FD, arg: string): + ref Authinfo; +.EE +.SH DESCRIPTION +.B Factotum +interacts with an instance of the authentication agent +.IR factotum (4) +to authenticate a client to a server. +It can also interact with Plan 9's +.I factotum +if that is in the name space (as well as or instead of +.IR factotum (4)). +.PP +.B Init +must be called before any other function. +.PP +.B Mount +is similar to +.B Sys->mount +(see +.IR sys-bind (1)), +but uses +.I factotum +to authenticate, +if the server requires it. +.B Factotum->mount +should be used instead of +.B Sys->mount +when mounting file servers that use +.IR auth (5) +to authenticate. +(If the server on +.I fd +does not require authentication, +.B Factotum->mount +simply calls +.BR Sys->mount .) +.B Mount +returns +.RI ( v , ai ). +If the integer +.I v +is non-negative, the mount succeeded; +on error, +.I v +is negative, either the authentication or the mount failed, +.I ai +is nil, and the system error string contains a diagnostic. +If the server required authentication and that was successful, +.I ai +is a non-nil reference to an +.B Authinfo +value containing the agreed user IDs, a capability for +.IR cap (3) +that is valid only on the server, and an array of bytes +containing a shared secret that can be used by client +and server to create encryption and hashing keys for the conversation. +.PP +.B Getuserpasswd +returns a tuple +.RI ( user , password ) +containing the values for the +.B user +and +.B !password +attributes of a factotum entry that has +.B proto=pass +and matches the given +.IR keyspec . +The tuple values are nil if no entry matches or the caller lacks permission to see them. +.PP +.B Proxy +links an authenticating server on +.I afd +with the +.I factotum +agent on +.IR facfd . +Typically +.I facfd +is the result of +.IP +.EX +sys->open("/mnt/factotum/rpc", Sys->ORDWR) +.EE +.PP +.I Afd +is typically the result of +.IR sys-open (2), +.IR sys-dial (2), +or +.IR sys-fauth (2). +.I Params +gives any parameters for +.IR factotum , +as a string containing space-separated +.IB attr = value +pairs. +.B Proxy +ferries messages between the server and +.I factotum +until the end of the selected authentication protocol. +If authentication failed, +.B proxy +returns nil; otherwise on success it always returns a non-nil reference to an +.B Authinfo +value with contents as above, but if the protocol does not +supply that authentication data, all the values are nil. +.PP +.B Rpc +does one message exchange with the +.I factotum +on +.IR facfd . +It writes a message containing the given +.I verb +and optional binary parameter +.IR a , +and returns +.RI ( v , a ) +where +.I v +is the response string from +.I factotum +and +.I a +is an optional binary parameter for that response. +Exceptionally, +.I v +is the string +\f5"rpc failure"\fP +if communication fails or a message is garbled, or +\f5"no key"\fP +if +.B rpc +cannot find a suitable key. +See +.IR factotum (4) +for details of the protocol. +.PP +.B AuthRpcMax +is an integer constant giving the maximum size of a message in an +.B rpc +exchange. +.SH SOURCE +.B /appl/lib/factotum.b +.SH SEE ALSO +.IR sys-bind (2), +.IR sys-fauth (2), +.IR factotum (4), +.IR auth (5) diff --git a/man/2/filepat b/man/2/filepat new file mode 100644 index 00000000..0f8eff5b --- /dev/null +++ b/man/2/filepat @@ -0,0 +1,80 @@ +.TH FILEPAT 2 +.SH NAME +filepat: expand, match \- file pattern matching +.SH SYNOPSIS +.EX +include "filepat.m"; +filepat := load Filepat Filepat->PATH; + +expand: fn(pat: string): list of string; +match: fn(pat, name: string): int; +.EE +.SH DESCRIPTION +.B Expand +builds a list of file names in alphabetical order that match +the pattern +.IR pat . +The pattern is tokenised using +.B / +as a delimiter. +.PP +.B Match +returns 1 if +.I name +matches the pattern +.IR pat , +and 0 otherwise. +.PP +The +.I pat +passed to +.B match +and +.B expand +may include combinations of the special characters +.BR * , +.BR ? , +.BR [ , +and +.BR ] . +.PP +The asterisk +.B * +matches a string of zero or more characters. +.PP +The query +.B ? +matches any single character. +.PP +The notation +.BI [ s ]\f1, +where +.I s +is a nonempty string, matches any +single character in +.IR s . +The notation +.BI [^ s ]\f1, +where +.IR s +is a nonempty string, matches any +single character not in +.IR s . +The characters +.BR * , +.BR ? , +and +.BR [ +have no special meaning within s. +.PP +If any character +is preceded by the character +.BR \e , +that character loses any special meaning +and is interpreted literally. +.SH SOURCE +.B /appl/lib/filepat.b +.SH SEE ALSO +.IR sys-tokenize (2), +.IR readdir (2) +.IR regex (2) diff --git a/man/2/filter b/man/2/filter new file mode 100644 index 00000000..0922337b --- /dev/null +++ b/man/2/filter @@ -0,0 +1,112 @@ +.TH FILTER 2 +.SH NAME +filter \- data processing interface +.SH SYNOPSIS +.B +include "filter.m"; +.br +.BI "filter := load Filter " filterpath ";" + +.EX +Rq: adt { + pick { + Start => + pid: int; + Fill or Result => + buf: array of byte; + reply: chan of int; + Finished => + buf: array of byte; + Info => + msg: string; + Error => + e: string; + } +}; + +init: fn(); +start: fn(param: string): chan of ref Rq; +.EE +.SH DESCRIPTION +.B Filter +defines a general module interface for byte-stream processing. +This manual page documents how to use the interface, and +by implication how a +.B Filter +module should behave. +There is a different implementation module for each filter type +and algorithm (eg, for compression or line encoding). +All implementations are instances of type +.BR Filter , +loaded from the Dis file +.IR filterpath , +given in the manual page for each standard filter +(or you can write your own to match this specification). +For details of each existing filter module, see +.IR filter-deflate (2) +and following manual pages. +.PP +.B Init +must be called before any other operation of a filter module. +.PP +.B Start +sets the filter going; +.I param +can be used to pass any filter-specific information +to the processor. +.B Start +spawns a new thread to do the processing; it returns +a channel that is used to receive requests from the +filter. +The first message sent is always +.BR Rq.Start ; +.I pid +is the process id of the new process spawned. +.PP +Subsequent messages are: +.TF Rq.Finished +.PD +.TP +.B Rq.Fill +A request by the filter to fill +.I buf +with data. +The number of bytes that have actually +been placed in the buffer should be sent +on +.IR reply . +If \-1 is sent, the filter will terminate. +If the value is 0, the filter will terminate once it has processed +all its input. +.TP +.B Rq.Result +.I Buf +contains data from the filter. +Receipt of the the data must be acknowledged +by sending a value on +.IR reply . +If the value is \-1, the filter will terminate. +.TP +.B Rq.Finished +The filter has finished processing. +.I Buf +contains any data that was not consumed +by the filter. The filter terminates after +sending this message. +.TP +.B Rq.Info +This message is used to send a string of +arbitrary information from the filter +during the course of its processing. +.TP +.B Rq.Error +The filter has encountered an error when processing. +.I E +is a string describing the error. The filter terminates +after sending this message. +.SH SOURCE +.B /module/filter.m +.SH SEE ALSO +.IR gzip (1), +.IR filter-deflate (2), +.IR filter-slip (2) diff --git a/man/2/filter-deflate b/man/2/filter-deflate new file mode 100644 index 00000000..34b320fb --- /dev/null +++ b/man/2/filter-deflate @@ -0,0 +1,89 @@ +.TH FILTER-DEFLATE 2 +.SH NAME +deflate, inflate \- data compression filters +.SH SYNOPSIS +.EX +include "filter.m"; + +deflate := load Filter Filter->DEFLATEPATH; +inflate := load Filter Filter->INFLATEPATH; + +init: fn(); +start: fn(param: string): chan of ref Rq; +.EE +.SH DESCRIPTION +These implementation modules conform to the +.B Filter +module interface for data-processing filters. +For details of the interface, see +.IR filter (2). +.PP +.I Deflate +implements gzip-compatible stream compression. +The +.I param +string argument to +.B start +can contain one or more of the following option characters: +.RS 10 +.TP +.RB ` d ' +Enable debugging output. Each line of debugging output +is provided in an +.B Rq.Info +message. +.TP +.RB ` v ' +Enable verbose mode. Each line of verbose output +is provided in an +.B Rq.Info +message. +.TP +.RB ` h ' +Add a gzip header and footer to the data. With this flag, +the data after filtering will be in exactly the same +format as a gzip file, with accompanying checksum. +.TP +.RB ` 0 '\ to\ ` 9 ' +Specifies the level of compression to be used (9 highest). See +.IR gzip (1). +.RE +.PP +.I Inflate +performs the inverse operation to +.BR deflate . +If the +.I param +argument to +.B start +begins with the character +.RB ` h ' +then the input to the filter is assumed to be in the +standard gzip file format; the output will be checked +for integrity. While processing, the +.B Rq.Info +message is used to transmit some information; the type +of information is determined by the first word of +.IR msg , +as follows: +.RS +.TP +.B file +The rest of +.I msg +(after a following space) is the name of the original filename +before compression. +.TP +.B mtime +The rest of +.I msg +(after a following space) is the modification time of the +original file before compression. +.RE +.SH SOURCE +.B /appl/lib/deflate.b +.br +.B /appl/lib/inflate.b +.SH SEE ALSO +.IR gzip (1), +.IR filter (2) diff --git a/man/2/filter-slip b/man/2/filter-slip new file mode 100644 index 00000000..6b35f46c --- /dev/null +++ b/man/2/filter-slip @@ -0,0 +1,52 @@ +.TH FILTER-SLIP 2 +.SH NAME +slip \- SLIP data framing protocol +.SH SYNOPSIS +.EX +include "filter.m"; + +slip := load Filter Filter->SLIPPATH; + +init: fn(); +start: fn(param: string): chan of ref Rq; +.EE +.SH DESCRIPTION +.I Slip +provides the SLIP data framing protocol described by RFC1055. +The module is an implementation of the general data-processing module type +.BR Filter ; +see +.IR filter (2) +for details of that general interface. +.PP +.B Init +must be called before any other operation of the module. +.PP +.B Start +begins SLIP line encoding or decoding via the channel it returns, +following the protocol of +.IR filter (2). +.I Param +is one of the two following strings: +.TF encode +.PD +.TP +.B encode +The filter takes the block of data obtained by each +.B Rq.Fill +message, adds framing and escape characters as required, +and returns the resulting data block in an +.B Rq.Result +message. +.TP +.B decode +The filter operates on the data in +.B Rq.Fill +messages as a single stream of bytes, providing an +.B Rq.Result +message for each framed message found in the stream, +with escape characters processed to retrieve the original data. +.SH SOURCE +.B /appl/lib/slip.b +.SH SEE ALSO +.IR filter (2) diff --git a/man/2/format b/man/2/format new file mode 100644 index 00000000..8f95ae5c --- /dev/null +++ b/man/2/format @@ -0,0 +1,249 @@ +.TH FORMAT 2 +.SH NAME +format \- structured data interchange +.SH SYNOPSIS +.EX +include "sys.m"; +include "bufio.m"; +include "sexprs.m"; +include "format.m"; +format := load Format Format->PATH; + +Fmtspec: adt { + name: string; + fields: cyclic array of Fmtspec; +}; +Fmt: adt { + kind: int; + fields: cyclic array of Fmt; +}; +Fmtval: adt { + text: fn(v: self Fmtval): string; + val: ref Sexprs->Sexp; + recs: cyclic array of array of Fmtval; +}; +Fmtfile: adt { + spec: array of Fmtspec; + descr: array of byte; + + new: fn(spec: array of Fmtspec): Fmtfile; + open: fn(f: self Fmtfile, name: string): + ref Bufio->Iobuf; + read: fn(f: self Fmtfile, iob: ref Bufio->Iobuf): + (array of Fmtval, string); +}; +init: fn(); +spec2se: fn(spec: array of Fmtspec): list of ref Sexprs->Sexp; +spec2fmt: fn(spec: array of Fmtspec): array of Fmt; +se2fmt: fn(spec: array of Fmtspec, se: ref Sexprs->Sexp): + (array of Fmt, string); +rec2val: fn(spec: array of Fmtspec, rec: ref Sexprs->Sexp): + (array of Fmtval, string); +.EE +.SH DESCRIPTION +.B Format +provides support for programs that wish to marshal and unmarshal +structured data. It is designed to enable a client to +request that the structure data is provided by the server in a particular +format, and for the server to be able to check that it is capable of providing +that format. +.PP +A +.I record +consists of a set of +.IR fields , +each represented by one element in an +.IR sexprs (2) +list. The content of a field can be a simple value, or it can hold a list containing +any number of sub-records, each holding a set of fields, recursively defined as above. +.PP +The +.B Fmtspec +type defines the format for a field in a record. +.I Name +gives the name of the field, and +.I fields +gives the structure of the fields in any sub-records it contains +(for a field with a simple value, this will be nil). +Thus an array of +.B Fmtspec +values can define the structure of all the fields in a record. +Here is an example structure specification: +.IP +.EX +Name, Address, Phone: con iota; +Number, Kind: con iota; +spec := array[] of { + Address => Fmtspec("address", nil), + Name => Fmtspec("name", nil), + Phone => Fmtspec("phone", array[] of { + Kind => Fmtspec("kind", nil), + Number => Fmtspec("number", nil), + }), +}; +.EE +.PP +By placing each field in the structure specification +at a known index, a link is made from the symbolic constants in the program +to the textual field names. +.PP +A structure specification may also be represented by +a list of S-expressions, where each member of the list +names a field in the structure. If a member is itself +a list, it specifies a field containing sub-records: its first member gives the name of the field, and +subsequent members specify the fields in its sub-records. +For example, the above specification could be written as the +S-expression: +.IP +.EX +(name address (phone number kind)) +.EE +.PP +The +.B Fmt +type also defines a record structure, but +.I "with respect" +to an existing +.B Fmtspec +structure specification. +An +.B Fmt +value represents a field, and +.I kind +holds the index of that field in the original structure specification. +.PP +.I Se2fmt +converts from an S-expression list, +.IR se +(a structure specification), +to a set of +.B Fmt +values. +The specification must be a subset of +.IR spec ; +i.e. each field in +.I se +must exist in +.IR spec . +.I Se2fmt +returns a tuple +.BI ( "f, err" ) . +If the specification is bad, +.I f +will be nil, and +.I err +describes the error. +Otherwise, each member of +.I f +gives a field specified by +.IR se . +For example, given the above structure definition, after executing: +.IP +.EX + se := Sexp.parse("(address (phone number))").t0; + (f, err) := se2fmt(spec, se); +.EE +.PP +.IB f [0].kind +will hold the symbolic constant +.BR Address , +and +.IB f [1].fields[0].kind +will hold +.BR Number . +.PP +.I Spec2se +converts from a structure representation to its S-expression +equivalent. +.I Spec2fmt +converts it to an array of +.B Fmt +structures mirroring it (equivalent to, but more efficient than, +.BI se2fmt(spec2se( spec )).t0\fR) +.SS "Data representation" +The above specifications do not define a format for the +representation of the actual data. For convenience however, +.B Format +defines its own S-expression-based data format. +In this form, the fields in a record are represented by items +in an S-expression list. A field containing sub-records is represented as +a (possibly empty) list containing the sub-records; +otherwise the value of a field may be an arbitrary S-expression. +.PP +For example, a record corresponding to the +structure specification +.IP +.EX +(name address (phone kind number)) +.EE +.PP +might look like: +.IP +.EX +("Jonny Dawes" "24 Crag Lane" + ((home "+44 7924 43535") (office "034 433 645"))) +.EE +.PP +.I Rec2val +cracks such a record, +.IR rec , +into its component values, checking +that it is structurally compatible with the specification, +.IR spec , +and returning a tuple +.BI ( "fields, err" ) . +If it failed, +.I fields +will be nil, and +.I err +describes the error. Otherwise +each member of +.IR fields , +say +.IR v , +holds the value of its equivalent field in +.IR spec . +For fields without sub-records, +.IB v .val +holds the field's value; +otherwise +.IB v .recs +holds an array with one member for each +sub-record, each holding an array of fields +defined recursively as above. +.PP +Some file servers +provide files to which a format specification may +be written, and which provide a sequence of records +in that format when read. +The +.B Fmtfile +type provides support for such files. +It provides the following operations: +.TP +.BI Fmtfile.new( spec ) +returns a new +.B Fmtfile +value +that can be used to open files and read records +conforming to the given +.IR spec . +.TP +.IB f .open(\fIname\fP) +opens such a file, writes the format specification to it, +and returns an +.B Iobuf +(see +.IR bufio (2)) +ready for reading the file. +.TP +.IB f .read +reads a record from the file; its return is the +same as that from +.BR rec2val . +.SH SOURCE +/appl/lib/format.b +.SH SEE ALSO +.IR sexprs (2), +.IR bufio (2), +.IR sexprs (6) diff --git a/man/2/fsproto b/man/2/fsproto new file mode 100644 index 00000000..9f0c5487 --- /dev/null +++ b/man/2/fsproto @@ -0,0 +1,89 @@ +.TH FSPROTO 2 +.SH NAME +FSproto: +FSproto: readprotofile, readprotostring \- read file system prototype file +.SH SYNOPSIS +.EX +include "fsproto.m"; +fsproto := load FSproto FSproto->PATH; + +Direntry: type (string, string, ref Sys->Dir); + +init: fn(): string; + +readprotofile: fn(proto: string, root: string, + entries: chan of Direntry, + warnings: chan of (string, string)): string; + +readprotostring: fn(proto: string, root: string, + entries: chan of Direntry, + warnings: chan of (string, string)); +.EE +.SH DESCRIPTION +.B FSproto +provides an interface to read a file system prototype file, +as defined by +.IR proto (6). +.PP +.B Init +must be called before any other function in the module. +.PP +.B Readprotofile +reads a file system prototype from the file +.IR proto . +It traverses the file system, starting at the given +.IR root , +and each file or directory encountered that is mentioned +in the prototype causes +.B readprotofile +to send a +.B Direntry +tuple on the channel +.IR entries . +The tuple has the form +.BI ( old , new , dir\fP\f5)\fP +where +.I old +is the name of the current file or directory, +rooted at +.IR root , +.I new +is the same file's name +.I relative +to +.IR root , +and +.I dir +is a reference to the +.B Sys->Dir +directory information for +.IR old , +as produced by +.IR sys-stat (2). +When all files in +.I root +have been examined, +.B readprotofile +sends a single tuple with all nil components on +.IR entries . +For each error that occurs during processing (eg, unable to open a directory) +.B readprotofile +sends a tuple +.BI ( old , diag ) +on the channel +.IR warnings , +naming the file and giving a diagnostic string, +but processing continues. +.PP +.B Readprotostring +reads a file system prototype from the string +.I proto +itself. +Otherwise, its operation is the same as +.BR readprotofile . +.SH SOURCE +.B /appl/lib/fsproto.b +.SH SEE ALSO +.IR fs (1), +.IR proto (6), +.IR mkfs (8) diff --git a/man/2/geodesy b/man/2/geodesy new file mode 100644 index 00000000..73c5331a --- /dev/null +++ b/man/2/geodesy @@ -0,0 +1,146 @@ +.TH GEODESY 2 +.SH NAME +geodesy \- Geodesy module +.SH SYNOPSIS +.EX +include "geodesy.m"; +geodesy := load Geodesy Geodesy->PATH; + +# easting, northing +Eano: adt{ + e: real; + n: real; +}; + +# latitude, longitude in radians +Lalo: adt{ + la: real; + lo: real; +}; + +OSGB36, Ireland65, ED50, WGS84, ITRS2000, ETRS89: con iota; + +Natgrid, IrishNatgrid, UTMEur, UTM: con iota; + +init: fn(d: int, t: int, z: int); +format: fn(d: int, t: int, z: int); +os2en: fn(s: string): (int, Eano); +en2os: fn(en: Eano): string; +str2lalo: fn(s: string): (int, Lalo); +lalo2str: fn(lalo: Lalo): string; +str2en: fn(s: string): (int, Eano); +en2lalo: fn(en: Eano): Lalo; +lalo2en: fn(lalo: Lalo): Eano; +datum2datum: fn(lalo: Lalo, f: int, t: int): Lalo; +.EE +.SH DESCRIPTION +.B Geodesy +provides routines to deal with (some) terrestrial coordinate systems. +.PP +Eastings and northings are defined by the +.B Eano +adt and are measured in metres and latitude and longitude (which should be in radians) by the +.B Lalo +adt. Latitude is in the range -π/2 to π/2 radians and longitude in the +range -π to π radians. +.PP +.B OSGB36 +(Ordnance Survey Great Britain 1936), +.B Ireland65 +(Ireland 1965), +.B ED50 +(European Datum 1950), +.B WGS84 +(World Geodetic System 1984), +.B ITRS2000 +(International Terrestrial Reference System 2000), and +.B ETRS89 +(European Terrestrial Reference System 1989) are the current datums defined. Helmert transformations are used +to convert between them. Note that +.B Ireland65 +and +.B ED50 +are currently not supported and +.B WGS84 +and +.B ITRS2000 +are considered equivalent. +.PP +.B Natgrid +(National Grid), +.B IrishNatgrid +(Irish National Grid), +.B UTMEur +(European Universal Transverse Mercator), and +.B UTM +(Universal Transverse Mercator) are the current transverse Mercator projections supported. +.PP +The following functions are provided +.TP +.B init +The module should always be initialized first. The parameters are +the required datum (default WGS84), transverse Mercator projection (default Natgrid) and UTM zone (default 30) if appropriate. Negative values or out of range values are +ignored. +.TP +.B format +Parameters as above. Alters the current settings at any time though care +must be taken to ensure existing coordinates are still treated as in their +original form. +.TP +.B os2en +Converts an Ordnance Survey National Grid reference to an easting, northing. +The formats XYen, XYeenn, XYeeennn, XYeeeennnn, XYeeeeennnnn, eenn, +eeennn, eeeennnn, eeeeennnnn and eeeeeennnnnn are allowed. Here X and +Y are upper case letters, e is an easting digit and n is a northing digit. The +reference can therefore be rounded to the nearest decakilometre, kilometre, +hectometre, decametre or metre. The first element of the returned tuple is zero +if the string has an incorrect format. +.TP +.B en2os +Converts an easting, northing to an OS reference in the form XYeeeeennnnn +as above. +.TP +.B str2lalo +Converts a latitude/longitude string to a latitude, longitude. The string +may have the formats deg[N|S], deg:min[N|S] or deg:min:sec[N|S] for +latitude, deg[E|W], deg:min[E|W] or deg:min:sec[E|W] for longitude. The +latitude must come first, then optional white space, then the longitude. +Degrees, minutes and seconds may be integer or real. Format errors +are indicated as in +.B os2en. +.TP +.B lalo2str +Converts a latitude, longitude to string format as above. Seconds are given +to two decimal places. +.TP +.B str2en +Converts a string in OS or latitude/longitude format as above to an easting, northing. +Format errors indicated as in +.B os2en. +.TP +.B en2lalo +Converts an easting, northing to latitude, longitude using the current transverse +Mercator projection.If the latter is +.B UTM +or +.B UTMEur +the current zone setting will be used. +.TP +.B lalo2en +Converts latitude, longitude to an easting, northing using the current transverse +Mercator projection. +.TP +datum2datum +Approximate (Helmert) transformation of a latitude, longitude between any of +.B OSGB36, +.B WGS84, +.B ITRS2000 +or +.B ETRS89. +The `from' datum appears first in the parameter list. +.SH SOURCE +.B /module/math/geodesy.m +.br +.B /appl/math/geodesy.b +.SH BUGS +The module is heavily biased towards Great Britain. diff --git a/man/2/hash b/man/2/hash new file mode 100644 index 00000000..522069a0 --- /dev/null +++ b/man/2/hash @@ -0,0 +1,91 @@ +.TH HASH 2 +.SH NAME +hash, HashTable \- hash table +.SH SYNOPSIS +.EX +include "hash.m"; +hash := load Hash Hash->PATH; + +new: fn(size:int):ref HashTable; + +HashTable: adt{ + insert: fn(h:self ref HashTable, key:string, val:HashVal); + find: fn(h:self ref HashTable, key:string):ref HashVal; + delete: fn(h:self ref HashTable, key:string); + all: fn(h:self ref HashTable): list of HashNode; +}; +HashVal: adt{ + i: int; + r: real; + s: string; +}; +HashNode: adt{ + key: string; + val: ref HashVal; +}; +fun1, fun2: fn(s:string, n:int):int; +.EE +.SH DESCRIPTION +The hash module provides support for arrays that are indexed by keys of type +.BR string . + +The values may be any combination of +.BR int , +.BR real , +or +.BR string . +.B New +creates and returns a new +.B HashTable +with +.I size +slots. The hashing works best if +.I size +is a prime number. The +.B HashVal +adt contains the data values of the hash. +The +.B HashNode +adt contains the key/value pair for each element in the table. +.TP +.IB ht .insert( "key, value" ) +Adds a new +.IR key / value +pair to the table. +If an element with the same +.I key +already exists, +it will acquire the new +.IR value . +.TP +.IB ht .find( key ) +Search the table for an element with the given +.I key +and return the value found; return nil if none was found. +.TP +.IB ht .delete( key ) +Removes any element with the given +.I key +from the table. +.TP +.IB ht .all() +Returns a list of all key/value pairs stored in the table. +.PP +.B Fun1 +and +.B fun2 +provide access to two different string hashing functions. +.B Fun1 +is the function used internally; +.B fun2 +is the same as that used in the Limbo compiler. +They each compute the hash value of +.I s +and return a value between 0 and +.IR n \-1. +.SH SOURCE +.B /appl/lib/hash.b +.SH BUGS +.B HashVal +should really be a +.BR pick . diff --git a/man/2/ida b/man/2/ida new file mode 100644 index 00000000..127926a8 --- /dev/null +++ b/man/2/ida @@ -0,0 +1,151 @@ +.TH IDA 2 +.SH NAME +Ida: Frag, fragment, consistent, reconstruct \- information dispersal algorithm +.SH SYNOPSIS +.EX +include "ida.m"; +ida := load Ida Ida->PATH; + +Frag: adt { + dlen: int; # length of original data + m: int; # minimum pieces for reconstruction + a: array of int; # encoding array row for this fragment + enc: array of int; # encoded data + + tag: array of byte; # user data, such as SHA1 hash + pack: fn(f: self ref Frag): array of byte; + unpack: fn(d: array of byte): ref Frag; +}; + +init: fn(); +fragment: fn(data: array of byte, m: int): ref Frag; +consistent: fn(frags: array of ref Frag): array of ref Frag; +reconstruct: fn(frags: array of ref Frag): (array of byte, string); +.EE +.SH DESCRIPTION +.B Ida +implements Rabin's Information Dispersal Algorithm (IDA), an effective scheme +for fault-tolerant storage and message routing. +The algorithm breaks an array of bytes (for instance a file or a block of data) into +.I n +pieces, +in such a way that the original data can be recovered using only +.I m +of them, where +.I n +and +.I m +are parameters. +The module provides the fundamental operations. +.PP +.B Init +must be called before invoking any other operation of the module. +.PP +.B Fragment +takes an array of +.IR data , +and +.IR m , +the minimum number of pieces required for reconstruction, +and returns a reference to a +.B Frag +value representing one encoded fragment of the data. +At least +.I m +calls must be made to +.B fragment +to obtain enough such fragments to be able to rebuild the data; +invariably more fragments are generated to provide the desired level of redundancy. +.PP +Each fragment +.B Frag +has the following components: +.TP +.B dlen +The length in bytes of the +.IR data . +.TP +.B m +The minimum number of fragments for reconstruction. +.TP +.B a +The row of an \fIm\fP×\fIm\fP encoding matrix that corresponds to this fragment. +.TP +.B enc +The encoded data, represented by an array of integer values. +For +.I L +bytes of input data, the array will have length +.\\"$ left ceil L over 2m right ceil $. +.rm 11 +.ds 12 "\f2L\fP +.ds 13 "\f12\fP\f2\^m\fP +.nr 12 0\w'\s+0\*(12' +.nr 13 0\w'\s+0\*(13' +.nr 14 \n(12 +.if \n(13>\n(14 .nr 14 \n(13 +.nr 14 \n(14+0.5m +.ds 12 \v'0.7m'\h'\n(14u-\n(13u/2u'\*(13\v'-0.7m'\ +\h'-\n(13u-\n(12u/2u'\v'-0.6m'\*(12\v'0.6m'\ +\h'-\n(14u-\n(12u/2u+0.1m'\v'-0.3m'\l'\n(14u-0.2m'\h'0.1m'\v'0.3m' +.ds 12 \^\v'0.13m'\b'\(lc\(bv\(bv'\v'-0.13m'\*(12\v'0.13m'\b'\(rc\(bv\(bv'\v'-0.13m' +.ds 12 \x'0-0.85m'\*(12\x'1.05m' +.as 11 \*(12 +.lf 4 +.as 11 ". +\*(11 +.lf 5 +.PP +All those values must be stored or transmitted for later use, to reconstruct the data. +The values in +.B a +are in the interval +.RI "[ 1,\ 65536 ]" +and those in +.B enc +are in the interval +.RI "[ 0,\ 65536 ]." +.PP +.B Reconstruct +takes an array +.I frags +of distinct fragments previously produced by repeated calls to +.BI fragment( data,\ m ) +and returns a tuple +.BI ( data,\ err ) . +Provided at least +.I m +suitable fragments are found in +.IR frags , +the +.I data +returned will be that originally provided to +.BR fragment . +If the parameters of the various fragments in +.I frags +disagree, or some other error occurs, +.I data +will be nil and +.I err +will contain a diagnostic. +.B Reconstruct +assumes the fragments it receives are consistent: +they represent the same encoding parameters, including the value of +.IR m . +If it detects an inconsistency, it returns a diagnostic. +.PP +.B Consistent +checks the consistency of a set of fragments, and returns a new subset containing +only those fragments that agree with the majority in +.I frags +on each parameter. +.SH SOURCE +.B /appl/lib/ida/ida.b +.br +.B /appl/lib/ida/idatab.b +.SH SEE ALSO +M Rabin, ``Efficient Dispersal of Information for Security, Load Balancing, and Fault Tolerance'', +.I JACM +.BR 36(2) , +April 1989, +pp. 335-348. diff --git a/man/2/imagefile b/man/2/imagefile new file mode 100644 index 00000000..7ba9e415 --- /dev/null +++ b/man/2/imagefile @@ -0,0 +1,157 @@ +.TH IMAGEFILE 2 +.SH NAME +imagefile: readgif, readjpg, readpicfile, readpng, readxbitmap, remap \- processing external image file formats +.SH SYNOPSIS +.EX +include "imagefile.m"; + +gifreader := load RImagefile RImagefile->READGIFPATH; +jpgreader := load RImagefile RImagefile->READJPGPATH; +xbmreader := load RImagefile RImagefile->READXBMPATH; +picreader := load RImagefile RImagefile->READPICPATH; +pngreader := load RImagefile RImagefile->READPNGPATH; + +imageremap := load Imageremap Imageremap->PATH; + +Rawimage: adt +{ + r: Draw->Rect; + cmap: array of byte; + nchans: int; + chans: array of array of byte; + chandesc: int; + + init: fn(bufio: Bufio); + read: fn(fd: ref Bufio->Iobuf): (ref Rawimage, string); + readmulti: fn(fd: ref Bufio->Iobuf): + (array of ref Rawimage, string); +}; + +init: fn(bufio: Bufio); +writeimage: fn(fd: ref Bufio->Iobuf, image: ref Draw->Image) + : string; + +remap: fn(i: ref RImagefile->Rawimage, d: ref Draw->Display, + errdiff: int): (ref Draw->Image, string); +.EE +.SH DESCRIPTION +The +.B Rawimage +.B adt +of module +.B RImagefile +defines an internal representation +and routines for reading images such as GIF and JPEG files. +To read a set of files of a given format, load the appropriate module, +pass its +.B init +function an implementation of the +.B Bufio +module, and pass +.B read +an +.B Bufio->Iobuf +for each file. +.B Read +returns a tuple: a +.B ref +.B Rawimage +that holds the image and an error string. +If the +.B Rawimage +is +.BR nil , +the error string will report the reason. +Files (particularly GIF files) are often incorrectly encoded but yield usable pictures, +so even if a +.B Rawimage +is returned, the error string may still report problems. +.PP +Some image file types (eg, GIF) support having several images in a single file. +They can be read in all at once using +.BR readmulti , +which returns a tuple with the array of images, and an error string as above. +.PP +The +.B Rawimage +is always defined as one or more bytes per pixel, with +.B nchans +channels of data stored in the array +.BR chans . +The +.B chandesc +field, described below, specifies the contents of +.BR chans . +The +rectangle +.B r +describes the shape of the picture. +.PP +The +.B Rawimage +type can be converted to a regular +.B Image +(see +.IR draw-image (2)) +by calling module +.BR Imageremap 's +function +.B remap. +.B Remap +is passed the +.BR Rawimage , +a +.B Display +on which to create the image, and a flag that specifies whether to apply Floyd-Steinberg +error diffusion code to the result, for smoother rendering of colours at the cost of +some noise in the image. +.PP +How to remap is defined by the +.B RImagefile +itself: the field +.B chandesc +specifies the type of the various +.B chans +of data: +.B RImagefile->CRGB +specifies a 3-colour RGB image with no colour map; +.B RImagefile->CY +a monotone (luminance-only, grey-scale) image with no colour map; +and +.B RImagefile->CRGB1 +a single-channel image with RGB colour map in +.BR cmap . +The file readers set +.B chandesc +as appropriate for the format of the file. +.PP +The writing of image files is defined by the module +.BR WImagefile. +To initialize the module, call its +.B init +function with an instance of the +.B Bufio +module and pass its +.B writeimage +function a +.B Bufio->Iobuf +representing the output stream and an image of type +.B Draw->Image. +.PP +These functions are split into separate modules to give applications control over +the memory they need to process images. +.SH SOURCE +.B /appl/lib/readgif.b +.br +.B /appl/lib/readjpg.b +.br +.B /appl/lib/readxbitmap.b +.br +.B /appl/lib/readpicfile.b +.br +.B /appl/lib/readpng.b +.SH NOTES +The JPEG reader handles only the Baseline sequential format as defined by +the JFIF 1.02 file exchange format. +.PP +Functions to write these formats are as yet unimplemented. diff --git a/man/2/ip b/man/2/ip new file mode 100644 index 00000000..7739c2b5 --- /dev/null +++ b/man/2/ip @@ -0,0 +1,334 @@ +.TH IP 2 +.SH NAME +IP \- Internet Protocol addresses and interfaces +.SH SYNOPSIS +.EX +include "ip.m"; +ip := load IP IP->PATH; +IPaddr: import IP; + +IPaddr: adt { + newv6: fn(nil: array of byte): IPaddr; + newv4: fn(nil: array of byte): IPaddr; + copy: fn(nil: self IPaddr): IPaddr; + eq: fn(nil: self IPaddr, v: IPaddr): int; + mask: fn(nil: self IPaddr, m: IPaddr): IPaddr; + isv4: fn(nil: self IPaddr): int; + ismulticast: fn(nil: self IPaddr): int; + isvalid: fn(nil: self IPaddr): int; + + v4: fn(nil: self IPaddr): array of byte; + v6: fn(nil: self IPaddr): array of byte; + class: fn(nil: self IPaddr): int; + classmask: fn(nil: self IPaddr): IPaddr; + + parse: fn(s: string): (int, IPaddr); + parsemask: fn(s: string): (int, IPaddr); + parsecidr: fn(s: string): (int, IPaddr, IPaddr); + + text: fn(nil: self IPaddr): string; + masktext: fn(nil: self IPaddr): string; +}; + +v4bcast, v4allsys, v4allrouter, noaddr, allbits: IPaddr; +selfv6, selfv4: IPaddr; +v4prefix: array of byte; + +Ifcaddr: adt { + ip: IPaddr; # local interface address + mask: IPaddr; # subnet mask + net: IPaddr; # ip & mask + preflt: big; # preferred life time + validlt: big; # valid life time +}; + +Ipifc: adt { + index: int; # /net/ipifc/N + dev: string; # bound device + addrs: list of ref Ifcaddr; + sendra: int; # !=0, send router adverts + recvra: int; # !=0, receive router adverts + mtu: int; + pktin: big; # packets in + pktout: big; # packets out + errin: big; # input errors + errout: big; # output errors + rp: IPv6rp; # IPv6 route advert parameters +}; + +IPv6rp: adt { + mflag: int; + oflag: int; + maxraint: int; # max route advert interval + minraint: int; # min route advert interval + linkmtu: int; + reachtime: int; + rxmitra: int; + ttl: int; + routerlt: int; +}; + +init: fn(); +readipifc: fn(net: string, index: int): (list of ref Ipifc, string); +.EE +.SH DESCRIPTION +.B IP +provides data types and operations that manipulate Internet Protocol addresses, +and operations that convert between internal and textual address forms, +for both IPv4 and IPv6. +The textual forms are those defined by RFC2373. +Briefly, an IPv6 address is 16 bytes, represented textually as a sequence +of 8 colon-separated hexadecimal values ranging from +.B 0 +to +.BR FFFF , +except that any one sequence of zeroes can be replaced by +.BR :: . +IPv4 addresses are embedded in the IPv6 space with a prefix of either +.B 0:0:0:0:0:FFFF +(for addresses of `IPv4-mapped' nodes), or +.BR 0:0:0:0:0:0 +(for `IPv4-compatible' IPv6 nodes). +See RFC2373 for the distinction. +For convenience in working with such addresses, the textual syntax +allows the last 4 bytes of an IPv6 address to be specified using a +restricted IPv4 syntax, allowing an address to end in four dot-separated decimal values +(for example, +.BR 0:0:0:0:0:FFFF:127.0.0.1 +for the IPv4 loopback address). +The functions here also accept the common forms of IPv4 syntax with one or two values +omitted (eg, +.B 127.1 +for the loopback address), +and accept IPv4 format for masks +(eg, +.BR 255.255.254.0 ). +.PP +.B Init +must be called once before using any value or function of the module. +.PP +An Internet address or network mask is represented by an +.B IPaddr +value. +It has the following operations: +.TP +.BI IPaddr.newv6( a ) +Return an +.B IPaddr +representing the IPv6 address stored in +.I a +as an array of 16 bytes +.TP +.BI IPaddr.newv4( a ) +Return an +.B IPaddr +representing the IPv4 address stored in +.I a +as an array of 4 bytes +.TP +.BI IPaddr.parse( s ) +Return a tuple +.BI ( ok , ip ). +If +.I ok +is 0, +.I ip +is an +.B IPaddr +representing the address in textual format in the string +.IR s , +which can be in either IPv4 or IPv6 syntax. +If +.I ok +is negative, +.I s +was invalid. +.TP +.BI IPaddr.parsemask( s ) +.I S +is a text string defining a mask, in one of three forms: +.BI / nbits +where +.I nbits +is the number of leading one bits in the mask, ranging from 0 to 128; +an IPv4 mask (eg, +.BR 255.255.254.0 ); +or an IPv6 mask. +Return a tuple +.BI ( ok , m )\fR. +If +.I ok +is 0, +.I m +is an +.B IPaddr +representing the mask given by +.IR s . +If +.I ok +is negative, +.I s +was invalid. +.TP +.BI IPaddr.parsecidr( s ) +.I S +is an address-mask combination in Classless Inter-Domain Routing (CIDR) format: +.IB ip-address / prefix-length, +where +.I ip-address +is an address in any form accepted by +.B parse +above, and +.I prefix-length +is a decimal value giving the number of leftmost bits in +.I ip-address +that form the addressing prefix (ie, subnet prefix). +Return a tuple +.BI ( ok , ip , m\fR). +If +.I ok +is 0, +.I ip +and +.I m +are +.B IPaddr +values for the address and mask given by +.IR s . +If +.I ok +is negative, +.I s +is invalid. +.TP +.IB ip .copy() +Return a copy of the value +.I ip +.TP +.IB ip .eq( v ) +Return true (non-zero) if +.I ip +represents the same address as +.IR v ; +return false (zero) otherwise. +.TP +.IB ip .mask( m ) +Return the value +.BI ( ip & m ) , +that is, address +.I ip +masked by +.I m +.TP +.IB ip .isv4() +Return true if +.I ip +is an IPv4 address; return false if +otherwise (it can only be used on a full IPv6 network) +.TP +.IB ip .v4() +Return the value of +.I ip +as a 4-byte array in IPv4 representation if it can be so represented; +if +.I ip +is not an IPv4 address, return nil. +.TP +.IB ip .v6() +Return the value of +.I ip +in IPv6 addressing format as an array of 16 bytes +.TP +.IB ip .class() +If +.I ip +is an IPv4 address, return its class (0 to 3); if it is an IPv6 address, return 6. +.TP +.IB ip .classmask() +If +.I ip +is an IPv4 address, return the mask associated with its class; if +.I ip +is an IPv6 address, return a mask that is all ones. +.TP +.IB ip .ismulticast() +Return true if +.I ip +is a multicast or broadcast address. +.TP +.IB ip .isvalid() +Return true if +.I ip +is not the zero address in either IPv4 or IPv6 address space +.TP +.IB ip .text() +Return a textual representation of the address +.I ip +in either IPv4 or IPv6 format as appropriate. +.TP +.IB ip .masktext() +Return a textual representation of the address +.I ip +as one of: an IPv4 mask; +.BI / n +where +.I n +is the number of leading 1 bits, as used in CIDR syntax; or +as a full IPv6 textual address. +The format used is appropriate to the structure of the value. +.PP +The module provides some predefined +.B IPaddr +values, mainly for common IPv4 addresses: +.B v4bcast +(broadcast address), +.B v4allsys +(all hosts multicast address), +.B v4allrouter +(all routers multicast address), +.B selfv4 +(loopback in IPv4), +.B selfv6 +(loopback in IPv6), +.B noaddr +(all zero address, used before a node has an address), +.B v4noaddr +(all zero address with IPv4 prefix), +and +.B allbits +(address of all 1 bits). +The 12-byte IPv6 prefix for IPv4 embedded addresses is provided in +the array of bytes +.BR v4prefix . +.PP +.B Readipifc +returns a list of the host's IP interfaces +and the attributes and addresses of each, +read from the interface status files in +.BR /net/ipifc . +On an error, the string in the returned tuple contains a diagnostic and the list is nil. +Each interface is represented by an +.B Ipifc +value, which contains a list of local interface addresses, +.BR addrs . +Each local address is represented by an +.B Iplifc +value in that list. +.SH FILES +.TF /net/ipifc/N/status +.TP +.B /net/ipifc +directory of IP interfaces +.TP +.BI /net/ipifc/ n /status +status and addresses of interface +.I n +.SH SOURCE +.B /appl/lib/ip.b +.SH SEE ALSO +.IR ether (2), +.IR ip (3) +.SH BUGS +.B Readipifc +is currently only usable in native Inferno. +That will change shortly. diff --git a/man/2/ir b/man/2/ir new file mode 100644 index 00000000..e86bef06 --- /dev/null +++ b/man/2/ir @@ -0,0 +1,254 @@ +.TH IR 2 +.SH NAME +ir \- infrared remote control module +.SH SYNOPSIS +.EX +include "ir.m"; + +ir := load Ir Ir->PATH; # for real remotes +simir := load Ir Ir->SIMPATH; # for keyboard simulator + +init: fn(irc: chan of int, pidc: chan of int): int; +translate: fn(key: int): int; +.EE +.SH DESCRIPTION +Programs running with the Prefab +toolkit (see +.IR prefab-intro (2)) +are controlled by an infrared remote +control device. +If such a device is not present, the system may simulate +it from the keyboard by loading the module in file +.BR Ir->SIMPATH . +Although originally designed for use with Prefab, +these modules are general enough to be used directly by non-Prefab +applications. +.PP +The +.B Ir +module defines codes +for representing the remote control keys. +Whether the remote is real or simulated, the +.B init +function does the appropriate actions to initialize the device, and then spawns +a process to return the codes on the +.I irc +channel. +The process ID of that process +is sent on the channel +.I pidc +when the process starts; +.BR init 's +caller must receive it. +It can be used to kill the controlling process when the application finishes. +.PP +The codes are: +.PP +.TP +.BR Ir\->ChanUP ", " Ir\->ChanDN +The Channel-Up and Channel-Down buttons. +The keyboard equivalents are +.B r +and +.BR c . +.TP +.B Ir\->Enter +The Enter button. +The keyboard equivalent is the \s-1SPACE\s0 bar. +.TP +.B Ir\->EOF +An end of file from the remote device. +After sending one, no more codes will be sent on +.IR irc . +.TP +.B Ir\->Error +An unknown or invalid input from the remote device. +.TP +.BR Ir\->FF ", " Ir\->Rew +The Fast-Forward and Rewind buttons. +The keyboard equivalents are +.B k +and +.BR j . +.TP +.B Ir\->Mute +The Mute button. +There is no keyboard equivalent. +.TP +.B Ir\->Power +The Power button. +The keyboard equivalent is the +.B Delete +key. +.TP +.B Ir\->Rcl +The Recall button. +The keyboard equivalent is +.BR x . +.TP +.B Ir\->Record +The Record button. +There is no keyboard equivalent. +.TP +.B Ir\->Select +The Select button. +The keyboard equivalent is the +.B Return +or +.B Enter +key. +.TP +.BR Ir\->Up ", " Ir\->Dn +The Up and Down buttons. +The keyboard equivalents are +.B i +and +.BR m . +.TP +.BR Ir\->VolUP ", " Ir\->VolDN +The Volume-Up and Volume-Down buttons. +The keyboard equivalents are +.B t +and +.BR v . +.TP +.B +Ir\->Zero\fR,\fP Ir\->One\fR,\fP Ir\->Two\fR, etc. +.PD +The digit buttons, 0 through 9. +The keyboard equivalents are the corresponding numeral keys. +.PP +The +.B translate +function converts the device's raw codes into the constants defined by +the module. +For example, with the simulated remote control, +.B translate('3') +returns +.BR Ir->Three . +.B Translate +is only necessary for programs that wish to manage their own simulation of the remote. +.PP +Programs +that drive the remote control directly, +must load the appropriate Ir implementation module and initialise it. +The following example uses the absence of a simulator module +to infer that a real remote control is available. +.PP +.EX +implement Irtest; + +include "sys.m"; +include "draw.m"; +include "ir.m"; + +Irtest: module +{ + init: fn(ctxt: ref Draw->Context, argv: list of string); +}; + +init(nil: ref Draw->Context, nil: list of string) +{ + sys := load Sys Sys->PATH; + + # First try the keyboard Ir simulator. + # If that is not present, use Ir directly. + + ir := load Ir Ir->SIMPATH; + if(ir == nil) + ir = load Ir Ir->PATH; + if(ir == nil){ + sys->print("Ir module not loaded: %r\en"); + return; + } + irc := chan of int; + pidc := chan of int; + if(ir->init(irc, pidc) < 0){ + sys->print("Can't initialize Ir device: %r\en"); + return; + } + pid := <-pidc; + while((irraw := <-irc) != Ir->EOF) { + irval := ir->translate(irraw); + if(irval == Ir->Power) + break; + sys->print("command %d -> %d\en", irraw, irval); + } + kill(pid); +} +.EE +.PP +.IR Mux (1) +provides one model for the use of an infrared remote control to control +a group of applications. +.B Init +is invoked once by +.IR mux , +and the codes then multiplexed between its applications as follows. +.I Mux +creates a graphics context for each application +(see +.IR draw-context (2)). +This context includes channels to the +.B mux +program and to the +.B Ir +device: +.B Draw->Context.ctomux +and +.BR Draw->Context.cinput . +Applications do not see the +.B Ir->Rcl +command. +Instead, +.I mux +program intercepts it and reactivates its own menu. +The following example establishes communication with +.I mux +and then reads +.B Ir +commands until it see +.BR Ir->Enter . +.PP +.EX +implement Command; + +include "sys.m"; +include "draw.m"; +include "ir.m"; + +Command: module +{ + init: fn(ref Draw->Context; list of string); +}; + +init(ctxt: ref Draw->Context; argv: list of string) +{ + sys := load Sys Sys->PATH; + + # Tell mux to start sending input. + ctxt.ctomux <-= Draw->AMstartinput; + for(;;) { + key := <-ctxt.cinput; + sys->print("command %d\en", key); + if(key == Ir->Enter) + break; + } + + # Tell mux this thread is going away. + ctxt.ctomux <-= Draw->AMexit; +} +.EE +.SH SOURCE +.B /appl/lib/ir.b +.br +.B /appl/lib/irmpath.b +.br +.B /appl/lib/irsim.b +.SH SEE ALSO +.IR limbo (1), +.IR mux (1), +.IR intro (2), +.IR draw-intro (2), +.IR prefab-intro (2) + diff --git a/man/2/itslib b/man/2/itslib new file mode 100644 index 00000000..4b12bcd6 --- /dev/null +++ b/man/2/itslib @@ -0,0 +1,101 @@ +.TH ITSLIB 2 +itslib \- test library +.SH SYNOPSIS +.EX +include "itslib.m"; +itslib := load Itslib Itslib->PATH; + +S_INFO: con 0; +S_WARN: con 1; +S_ERROR: con 2; +S_FATAL: con 3; +S_STIME: con 4; +S_ETIME: con 5; +ENV_VERBOSITY: con "ITS_VERBOSITY"; +ENV_MFD: con "ITS_MFD"; + +Tconfig: adt { + verbosity: int; + mfd: ref Sys->FD; + report: fn(t: self ref Tconfig, sev: int, verb: int, msg: string); + done: fn(t: self ref Tconfig); +}; + +init: fn(): ref Tconfig; +.EE +.SH DESCRIPTION +.B Itslib +provides a simple error reporting facility for tests which can be run +by +.IR itest (1) . +.PP +The module must first be initialised by calling +.B init +which returns an adt containing the verbosity setting specified +for this test run, and the message file descriptor +used to pass messages back to +.I itest. +These two items of information are passed to the test via the +environment variables ITS_VERBOSITY and ITS_MFD. +.TP +.BI Tconf.report( severity , verbosity , message) +Report a message with specified severity and verbosity. +.I Severity +must be one of S_INFO, S_WARN, S_ERROR or S_FATAL for Information, +warnings, errors and fatal errors respectively. +.I Verbosity +is an integer between 0 and 9. +For informatory messages (severity S_INFO), the message will only be +displayed if the current +verbosity level is greater than or equal to +.I verbosity. +.TP +.BI Tconf.done() +Tell the test system that all significant work has been completed. +This useful when for example results are displayed in an interactive +manner following the test proper. For recording purposes the test +will be regarded as having finished when this function is called, +rather than when the test finally exits. +.SH EXAMPLE +A very simple test program. +.EX + +implement T; +include "sys.m"; + sys: Sys; +include "draw.m"; + draw: Draw; +include "itslib.m"; + itslib: Itslib; + Tconfig, S_INFO, S_WARN, S_ERROR, S_FATAL: import itslib; + +T: module +{ + init: fn(ctxt: ref Draw->Context, argv: list of string); +}; + +tconf: ref Tconfig; + +init(ctxt: ref Draw->Context, argv: list of string) +{ + sys = load Sys Sys->PATH; + itslib = load Itslib Itslib->PATH; + if (itslib != nil) tconf = itslib->init(); + report(S_INFO, 5, "Testing addition of 1 + 2"); + x := 1 + 2; + if (x == 3) + report(S_INFO, 6, "Addition of 1 + 2 OK"); + else + report(S_ERROR, 5, sys->sprint("Addition of 1 + 2 gave %d", x)); +} + +report(sev: int, verb: int, msg: string) +{ + if (tconf != nil) tconf.report(sev, verb, msg); + else sys->print("%d:%s\n", sev, msg); +} + +.EE +.SH SEE ALSO +.IR itest (1), +.IR sh-test (2) diff --git a/man/2/keyring-0intro b/man/2/keyring-0intro new file mode 100644 index 00000000..5e28b068 --- /dev/null +++ b/man/2/keyring-0intro @@ -0,0 +1,296 @@ +.TH KEYRING-INTRO 2 +.SH NAME +Keyring intro \- introduction to the +.B Keyring +module +.SH SYNOPSIS +.EX +include "keyring.m"; +keyring := load Keyring Keyring->PATH; + +SigAlg: adt +{ + name: string; +}; + +PK: adt +{ + sa: ref SigAlg; + owner: string; +}; + +SK: adt +{ + sa: ref SigAlg; + owner: string; +}; + +Certificate: adt +{ + sa: ref SigAlg; + ha: string; + signer: string; + exp: int; +}; + +DigestState: adt +{ + # hidden state + copy: fn(d: self ref DigestState): ref DigestState; +}; + +Authinfo: adt +{ + mysk: ref SK; + mypk: ref PK; + cert: ref Certificate; + spk: ref PK; + alpha: ref IPint; + p: ref IPint; +}; +.EE +.SH DESCRIPTION +This module contains a mixed set of functions that variously: +.IP \(bu +perform infinite precision modular arithmetic; see +.IR keyring-ipint (2) +.IP \(bu +form cryptographically secure digests; see +.IR keyring-sha1 (2) +.IP \(bu +generate public/private key pairs and transform them +to and from textual form; see +.IR keyring-gensk (2) +and +.IR keyring-certtostr (2) +.IP \(bu +encrypt data, using AES, DES, or IDEA; see +.IR keyring-crypt (2) +.IP \(bu +create and verify cryptographic signatures using the +public keys; see +.IR keyring-auth (2) +.IP \(bu +authenticate the parties on a connection; see +.IR keyring-auth (2) +.IP \(bu +read and write files containing the information +needed to authenticate the parties on a connection; see +.IR keyring-auth (2) +.IP \(bu +send Limbo byte arrays and strings across a connection; see +.IR keyring-getstring (2) +.PP +Each collection is discussed in turn. +.SS "Large Precision Arithmetic" +The +.B IPint +adt +is provided to allow some cryptographic functions to +be implemented in Limbo. +.B IPint +stands for infinite precision integer, though, for +space considerations, our +implementation limits the maximum integer to +2\u\s-2\&8192\s0\d-1. +.PP +An +.B IPint +can be converted into two external formats. +The first is +an array of bytes in which the first byte is the highest order +byte of the integer. This format is useful when +communicating with the +.IR ssl (3) +device. +The second is a MIME base 64 format, that +allows +.BR IPint s +to be stored in files or transmitted across +networks in a human readable form. +.SS "Public Key Cryptography" +Public key cryptography has many uses. +Inferno relies on it only for digital signatures. +Each Inferno user may generate a +pair of matched keys, one public and +one private. +The private key may be used to digitally +sign data, the public one to verify the signature. +Public key algorithms have been chosen to +make it difficult to spoof a signature or guess +the private key. +.PP +For public keys algorithms to work, there must be a way to +distribute the public keys: +in order to verify that +.B X +signed something, we must know +.BR X 's +public key. +To simplify the problem, we have instituted a +trust hierarchy that requires people to +know only the public keys of certifying authorities (CAs). +After generating a public key, one can have the +concatenation of one's name, expiration date, and key +signed by a CA. +The information together with the name of the CA +and the signature is called a +.IR certificate . +.PP +At the beginning of a conversation, the parties +exchange certificates. +They then use the CA's public key to verify each +other's public keys. +The CA's public key, a system wide Diffie-Hellman +base and modulus, one's private key, one's +public key and certificate are kept in +a Limbo adt called +.BR Keyring->Authinfo . +An +.B Authinfo +adt can be read from from a file using +.B readauthinfo +or written to a file +using +.BR writeauthinfo , +both from +.IR keyring-auth (2). +.PP +.B Authinfo +adts are normally created during the login and +registration procedures described below. +.SS "Authentication" +Two parties conversing on a network connection can +authenticate each other's identity using the functions in +.IR keyring-auth (2). +They use the +.B Keyring->Authinfo +information to run the Station to Station (STS) +authentication protocol. +STS not only authenticates each party's identity to the other but also +establishes a random bit string known +only to the two parties. +This bit string can be used +as a key to encrypt or authenticate subsequent messages +sent between the two parties. +.SS "Secure Communications" +After exchanging secrets, communicating +parties may encode the conversation to +guarantee varying levels of security: +.IP • +none +.IP • +messages cannot be forged +.IP • +messages cannot be intercepted +.LP +Encoding uses the line formats +provided by the Secure Sockets Layer. +See +.IR security-intro (2) +for more detail. +.SS "Login and registration" +The Inferno authentication procedure +requires that both parties possess an +.B Authinfo +adt containing +a locally generated public/private key pair, +the public key of a commonly trusted CA, +and a signed certificate from the CA that links +the party's identity and public key. +This +.B Authinfo +adt is normally kept in a file. +At some point, however, it must be created, and later +conveyed securely between the user's machine +and the CA. +There are two ways to do this, the login procedure +and the registration procedure. +Both require an out of band channel between the +CA and the user. +.PP +The login procedures are used by typed +commands and by programs using Tk. +The login procedure relies on the CA and +the user having established a common secret +or password. +This is done securely off line, perhaps by mail or telephone. +This secret is then used to provide a secure +path between CA and user machine to transfer +the certificate and CA public key. +See +.IR security-intro (2) +for more detail. +.PP +The registration procedure is built into the +.IR mux (1) +interface and is intended for the set top box +environment. +When the set top box is first turned on, it +creates a public/private key pair and +dials the service provider's CA to get a key +signed. +The CA returns its public key and a signed +certificate, blinded by a random bit string +known only to the CA. +A hash of the information is then displayed on the +user screen. +The user must then telephone the CA and compare this +hashed foot print with the one at the CA. +If they match and the user proves that he is +a customer, the CA makes the blinding string +publicly known. +.SS Data Types +.TP +.B SigAlg +The +.B SigAlg +adt contains a single string that specifies the algorithm used for digital signatures. +The allowable values are +.BR md5 , +.BR md4 +and +.BR sha1 +that specify which one-way hash function is used to produce a digital signature +or message digest. +.TP +.BR PK " and " SK +The +.B PK +adt contains the data necessary to construct a public key; +the +.B SK +adt contains the data necessary to construct a secret key. +Both keys are built from the combination of a specified signature algorithm +and a string representing the name of the owner of the key. +.TP +.B Certificate +The +.B Certificate +adt contains a digital signature with the certification of the trusted authority (CA). +.TP +.B DigestState +The +.B DigestState +adt contains the hidden state of partially completed hash functions during processing. +Its +.B copy +operation returns a reference to a copy of a given state. +.TP +.B Authinfo +The +.B Authinfo +adt contains an individual user's private and public key, the signer's certificate +and the signer's public key, and the Diffie-Hellman parameters. +.SH SOURCE +.B /libcrypt/*.c +.br +.B /libinterp/keyring.c +.br +.B /libkeyring/*.c +.SH SEE ALSO +.IR security-intro (2) +.br +B. Schneier, +.IR "Applied Cryptography" , +1996, J. Wiley & Sons, Inc. diff --git a/man/2/keyring-auth b/man/2/keyring-auth new file mode 100644 index 00000000..9ed26b2a --- /dev/null +++ b/man/2/keyring-auth @@ -0,0 +1,101 @@ +.TH KEYRING-AUTH 2 +.SH NAME +keyring: auth, readauthinfo, writeauthinfo \- authenticate a connection +.SH SYNOPSIS +.EX +include "keyring.m"; +keyring := load Keyring Keyring->PATH; +auth: fn(fd: ref Sys->FD, info: ref Authinfo, setid: int) + : (string, array of byte); +readauthinfo: fn(filename: string): ref Authinfo; +writeauthinfo: fn(filename: string, info: ref Authinfo): int; +.EE +.SH DESCRIPTION +.B Auth +performs mutual authentication over a network connection, usually between a client and a server. +The function is symmetric: each party runs it on their end of the connection. +.I Info +holds the public key of a certifying authority +.RB ( PKca ), +the private key of the user +.RB ( SKu ), +the public key +.RB ( PKu ) +of the user signed by the certifying authority +.RB ( CERTu ), +and Diffie-Hellman parameters +.RB ( alpha , +.BR p ). +.PP +.B Auth +returns a string and a byte array. +If the byte array is nil then the authentication has failed and the string is an error message. If the byte array is non-nil, it represents a secret shared by the two communicating parties, +and the string names the party at the other end of the connection. +.PP +If the authentication is successful and +.I setid +is non-zero then +.B auth +attempts to write the name of the party at the other end of the connection into +.B /dev/user +(see +.IR cons (3)); +no error is generated if that does not succeed. +If the authentication is not successful and +.I setid +is non-zero, +.B auth +writes the name +.B nobody +into +.BR /dev/user . +.PP +The authentication protocol is based on the Station-to-Station protocol. In the following, the parties are labelled 0 and 1. +.BI Sig0( x ) +is +.I x +signed with 0's private key. +.IP +.EX +0 → 1 alpha**r0 mod p, CERTu0, PKu0 +1 → 0 alpha**r1 mod p, CERTu1, PKu1 +0 → 1 sig0(alpha**r0 mod p, alpha**r1 mod p) +1 → 0 sig1(alpha**r0 mod p, alpha**r1 mod p) +.EE +.PP +At this point both 0 and 1 share the secret +.B "alpha**(r0*r1)" +which is returned in the byte array. +Amongst other things, it can be the secret to digest or encrypt a conversation +(see +.IR security-ssl (2)). +.PP +.B Readauthinfo +reads a representation of an +.B Authinfo +from a file. +It returns nil if there is a read error or a conversion error; +it returns a reference to the +.B Authinfo +otherwise. +.PP +.B Writeauthinfo +writes a representation of +.I info +to a file. It returns -1 if the write operation fails, 0 otherwise. +.SH FILES +.TF /usr/user/keyring/defaultxxx +.TP +.BI /usr/ user /keyring +The conventional directory for storing +.B Authinfo +files +.TP +.BI /usr/ user /keyring/default +The key file normally used by server programs +.TP +.BI /usr/ user /keyring/ net ! server +The key file normally used by clients for a given +.I server +.SH SOURCE +.B /libinterp/keyring.c diff --git a/man/2/keyring-certtostr b/man/2/keyring-certtostr new file mode 100644 index 00000000..55b7f142 --- /dev/null +++ b/man/2/keyring-certtostr @@ -0,0 +1,56 @@ +.TH KEYRING-CERTTOSTR 2 +.SH NAME +keyring: certtostr, pktostr, sktostr, strtocert, strtopk, strtosk \- encryption key conversion functions +.SH SYNOPSIS +.EX +include "keyring.m" +keyring:= load Keyring Keyring->PATH; + +strtocert: fn(s: string) : ref Certificate; +certtostr: fn(c: ref Certificate): string; +strtopk: fn(s: string) : ref PK; +pktostr: fn(pk: ref PK) : string; +strtosk: fn(s: string) : ref SK; +sktostr: fn(sk: ref SK) : string; +.EE +.SH DESCRIPTION +Certificates, public keys, and private keys are passed over networks and between applications using a Unicode representation. This collection of functions provide a means to convert adts supplied by the system to and from their portable textual representation. These routines are typically used as part of an I/O package for implementing security. +.PP +.B Strtocert +takes a string argument containing a user name, a hash algorithm, a certifying authority and an expiration time. Fields are separated by a newline. The return value is a +.BR Certificate . +If the string is of improper format, the result is +.IR nil . +.PP +.B Certtostr +performs the inverse operation: takes the +.B Certificate +.I c +and produces a text string suitable for communication over a network. +.PP +.B Strtopk +and +.B strtosk +take as their arguments a string +.I s +representing the public and private keys respectively. +.I S +must contain an algorithm name, a user name and the key. Fields are separated by a newline. +.B Strtopk +returns a reference to the resulting +.BR PK ; +.B strtosk +returns a reference to the resulting +.BR SK . +If the format of +.I s +is invalid, the result is +.IR nil . +.PP +.B Pktostr +and +.B sktostr +perform the inverse operations: +they take a public key (secret key) and produce a printable representation as a string. +.SH SOURCE +.B /libinterp/keyring.c diff --git a/man/2/keyring-crypt b/man/2/keyring-crypt new file mode 100644 index 00000000..a083e543 --- /dev/null +++ b/man/2/keyring-crypt @@ -0,0 +1,120 @@ +.TH KEYRING-CRYPT 2 +.SH NAME +keyring: aessetup, aescbc, dessetup, descbc, desecb, ideasetup, ideacbc, ideaecb \- data encryption +.SH SYNOPSIS +.EX +include "keyring.m"; +keyring := load Keyring Keyring->PATH; + +Encrypt: con 0; +Decrypt: con 1; + +AESbsize: con 16; + +aessetup: fn(key: array of byte, ivec: array of byte): ref AESstate; +aescbc: fn(state: ref AESstate, buf: array of byte, + n: int, direction: int); + +DESbsize: con 8; + +dessetup: fn(key: array of byte, ivec: array of byte): ref DESstate; +descbc: fn(state: ref DESstate, buf: array of byte, + n: int, direction: int); +desecb: fn(state: ref DESstate, buf: array of byte, + n: int, direction: int); + +IDEAbsize: con 8; + +ideasetup: fn(key: array of byte, ivec: array of byte): ref IDEAstate; +ideacbc: fn(state: ref IDEAstate, buf: array of byte, + n: int, direction: int); +ideaecb: fn(state: ref IDEAstate, buf: array of byte, + n: int, direction: int); +.EE +.SH DESCRIPTION +These functions encrypt and decrypt blocks of data using different +encryption algorithms. +The interfaces are similar. +.PP +Each algorithm has an adt that holds the current state for a given encryption. +It is produced by the setup function for the algorithm, +.IB alg setup , +which is given a secret +.I key +and an initialisation vector +.IR ivec . +A sequence of blocks of data can then be encrypted or decrypted by repeatedly calling +.IB alg cbc +(for `cipher block chaining'), or +.IB alg ebc +(the less secure `electronic code book', if provided). +On each call, +.I buf +provides +.I n +bytes of the data to encrypt or decrypt. +.I N +must be a multiple of the encryption block size +.IB ALG bsize . +Exceptionally, +.B aescbc +allows +.I n +to be other than a multiple of +.B AESbsize +in length, but then +for successful decryption, the decryptor must use the same +sequence of buffer sizes as the encryptor. +.I Direction +is the constant +.B Encrypt +or +.B Decrypt +as required. +.I State +maintains the encryption state, initially produced by the setup function, +and updated as each buffer is encrypted or decrypted. +.PP +The algorithms currently available are: +.TP +.B aes +The Advanced Encryption Standard, AES (also known as Rijndael). +The +.I key +should be 16, 24 or 32 bytes long (128, 192 or 256 bits). +.I Ivec +should be +.B AESbsize +bytes of random data: random enough to be unlikely to be reused but +not cryptographically strongly unpredictable. +.TP +.B des +The older Data Encryption Standard, DES. +.I Key +is 8 bytes (64 bits), containing a 56-bit key +encoded into 64 bits where every eighth bit is parity. +.I Ivec +is +.B DESbsize +bytes of random data. +.TP +.B idea +The International Data Encryption Standard, IDEA™. +The +.I key +is 16 bytes long (128 bits). +.I Ivec +is +.B IDEAbsize +bytes of random data. +.SH SEE ALSO +.IR keyring-intro (2), +.IR keyring-rc4 (2), +.IR security-random (2) +.PP +IDEA was patented by Ascom-Tech AG (EP 0 482 154 B1, US005214703), +currently held by iT_SEC Systec Ltd. +At time of writing, there was no licence fee required for noncommercial use +but check +the current licensing policy of iT_SEC Systec Ltd, +especially for commercial use. diff --git a/man/2/keyring-gensk b/man/2/keyring-gensk new file mode 100644 index 00000000..a4c7fd65 --- /dev/null +++ b/man/2/keyring-gensk @@ -0,0 +1,49 @@ +.TH KEYRING-GENSK 2 +.SH NAME +keyring: genSK, genSKfromPK, sktopk, dhparams \- generate keys +.SH SYNOPSIS +.EX +include "keyring.m"; +keyring := load Keyring Keyring->PATH; +genSK: fn(algname, owner: string, length: int): ref SK; +genSKfromPK: fn(pk: ref PK, owner: string): ref SK; +sktopk: fn(sk: ref SK): ref PK; +dhparams: fn(nbits: int): (ref IPint, ref IPint); +.EE +.SH DESCRIPTION +.B GenSK +generates a public/private key pair, represented by +.BR SK . +(Although we call it a `private key', +.B SK +contains both the private and public parts of a public key.) +.I Algname +is the name of the algorithm to use; in the current implementation, only +.B elgamal +and +.B rsa +are possible. +.I Owner +is the user name to be associated with the key. +.I Length +gives the length of the key modulus in bits. +.B GenSK +returns nil if an unknown algorithm has been specified. +.PP +.B GenSKfromPK +generates a private key that has the same system parameters as the public key +.IR pk . +It is used to generate new keys that are of the same complexity as old keys. +.PP +.B Sktopk +extracts the public part of private key. +.PP +.B Dhparams +creates Diffie-Hellman parameters. The second +.B IPint +returned is an +.I nbits +long prime number that serves as the modulus. +The first +.B IPint +is a primitive root in the integer field defined by that modulus. diff --git a/man/2/keyring-getmsg b/man/2/keyring-getmsg new file mode 100644 index 00000000..bf6958a0 --- /dev/null +++ b/man/2/keyring-getmsg @@ -0,0 +1,68 @@ +.TH KEYRING-GETMSG 2 +.SH NAME +keyring: getmsg, sendmsg, senderrmsg \- send and receive messages on undelimited streams +.SH SYNOPSIS +.EX +include "keyring.m"; +keyring := load Keyring Keyring->PATH; + +getmsg: fn(fd: ref Sys->FD): array of byte; +sendmsg: fn(fd: ref Sys->FD, buf: array of byte, n: int): int; +senderrmsg: fn(fd: ref Sys->FD, s: string): int; +.EE +.SH DESCRIPTION +These functions allow arbitrary data, packed into arrays of bytes, to be exchanged +on network connections using connection-oriented transport protocols that do not preserve +record boundaries (eg, TCP/IP without +.IR ssl (3)). +They are used to implement various authentication protocols, including +.IR auth (6), +as implemented by +.IR keyring-auth (2). +.PP +Each data message is transmitted with a five-byte header containing a four-character zero-padded decimal count +.I n +terminated by a newline, followed by +.I n +bytes of message data. +An error message has a similar structure, except that the first character +of the count is replaced by an exclamation mark +.RB ( ! ); +the message data following +contains the diagnostic string in its UTF-8 encoding (see +.IR utf (6)). +.PP +.B Getmsg +reads the next message from +.I fd +and returns its data content. +.PP +.B Sendmsg +sends the first +.I n +bytes of +.I buf +as a message on +.IR fd , +and returns +.IR n . +.PP +.B Senderrmsg +sends the error message +.IR s . +.SH SOURCE +.B /libinterp/keyring.c +.SH DIAGNOSTICS +.B Sendmsg +and +.B senderrmsg +return -1 if there was an error writing to +.IR fd ; +they set the system error string. +.B Getmsg +returns nil if there was an error reading from +.IR fd ; +it sets the system error string to reflect the cause. +It also returns nil +if an error message was received instead of a data message; +the system error string will contain the error message's diagnostic. diff --git a/man/2/keyring-getstring b/man/2/keyring-getstring new file mode 100644 index 00000000..783c0106 --- /dev/null +++ b/man/2/keyring-getstring @@ -0,0 +1,90 @@ +.TH KEYRING-GETSTRING 2 +.SH NAME +keyring: getstring, putstring, getbytearray, putbytearray, puterror \- exchange data on delimited streams +.SH SYNOPSIS +.EX +include "keyring.m" +keyring:= load Keyring Keyring->PATH; + +getstring: fn(fd: ref Sys->FD): (string, string); +putstring: fn(fd: ref Sys->FD, s: string): int; +getbytearray: fn(fd: ref Sys->FD): (array of byte, string); +putbytearray: fn(fd: ref Sys->FD, a: array of byte, n: int): int; +puterror: fn(fd: ref Sys->FD, s: string): int; +.EE +.SH DESCRIPTION +These functions provide +I/O for strings, byte arrays and error strings over network connections that +provide a record structure for communication (as provided for arbitrary +networks by +.IR ssl (3)). +.PP +.B Putstring +writes string +.I s +to +.IR fd. +It returns the number of bytes written, or -1 if an error occurred. +Messages written by +.B putstring +are truncated to 4096 bytes. +.PP +.B Getstring +reads a string as written by +.B putstring +from +.IR fd +and returns a tuple +.RI ( result , error ). +If successful, the error +string is nil. +.PP +.B Putbytearray +writes the array of bytes +.I a +to +.IR fd . +It returns the number of bytes written, or -1 if an error occurred. +Messages written by +.B putbytearray +are truncated to 4096 bytes. +.PP +.B Getbytearray +reads an array of bytes as written by +.B putbytearray +from +.IR fd +and returns a tuple of the form +.RI ( result , error ). +If successful, the error string is nil. +.PP +.B Puterror +writes an error string +.I s +to +.IR fd . +It can be used in place of +.B putstring +or +.B putbytearray +to cause a corresponding +.B getstring +or +.B getbytearray +to fail +(in the receiving process), +forcing them to return the error string +.IR s . +It may not be longer than +.BR Sys->ERRMAX +bytes. +.SH SOURCE +.B /libinterp/keyring.c +.SH DIAGNOSTICS +The output functions return an +.B int +which is -1 if there was an I/O error, +and a non-negative value otherwise. +The input functions +return a tuple that includes a string indicating the cause of the +error, as the second element of the tuple. diff --git a/man/2/keyring-ipint b/man/2/keyring-ipint new file mode 100644 index 00000000..8a47c001 --- /dev/null +++ b/man/2/keyring-ipint @@ -0,0 +1,147 @@ +.TH KEYRING-IPINT 2 +.SH NAME +keyring: IPint \- `infinite' precision integer utility functions +.SH SYNOPSIS +.EX +include "keyring.m" +keyring:= load Keyring Keyring->PATH; + +IPint: adt +{ + iptob64: fn(i: self ref IPint): string; + b64toip: fn(str: string) : ref IPint; + iptobytes: fn(i: self ref IPint): array of byte; + bytestoip: fn(buf: array of byte): ref IPint; + iptobebytes: fn(i: self ref IPint): array of byte; + bebytestoip: fn(buf: array of byte): ref IPint; + inttoip: fn(i: int): ref IPint; + iptoint: fn(i: self ref IPint): int; + iptostr: fn(i: self ref IPint, base: int): string; + strtoip: fn(str: string, base: int): ref IPint; + random: fn(minbits, maxbits: int): ref IPint; + copy: fn(i: self ref IPint): ref IPint; + bits: fn(i: self ref IPint): int; + expmod: fn(base: self ref IPint, exp, mod: ref IPint):ref IPint; + add: fn(i1: self ref IPint, i2: ref IPint): ref IPint; + sub: fn(i1: self ref IPint, i2: ref IPint): ref IPint; + neg: fn(i: self ref IPint): ref IPint; + mul: fn(i1: self ref IPint, i2: ref IPint): ref IPint; + div: fn(i1: self ref IPint, i2: ref IPint): (ref IPint, ref IPint); + eq: fn(i1: self ref IPint, i2: ref IPint): int; + cmp: fn(i1: self ref IPint, i2: ref IPint): int; + shl: fn(i: self ref IPint, n: int): ref IPint; + shr: fn(i: self ref IPint, n: int): ref IPint; +}; +.EE +.SH DESCRIPTION +.B IPint +provides the following arbitrary-length integer manipulation functions required for cryptographic support in Limbo: +.TP +.IB i .iptob64() +Returns a string that represents a large integer textually in base 64 for convenient transmission over a network connection. +.TP +.BI b64toip( str ) +Returns the +.B IPint +represented by the base-64 encoded +.IR str . +.TP +.IB i .iptobytes() +Returns an array of bytes representing a large integer. The representation includes both positive and negative numbers. +.TP +.BI bytestoip( buf ) +The inverse operation of +.BR iptobytes . +.TP +.IB i .iptobebytes() +Returns an array of bytes in big-endian format representing the magnitude of a large integer; used for instance to pass a value to +.IR ssl (3). +Only non-negative numbers are represented. +.TP +.BI bebytestoip( buf ) +The inverse operation of +.BR iptobebytes . +.TP +.BI inttoip( i ) +Creates a new large integer from integer +.IR i . +.TP +.IB i .iptoint() +Converts a large integer +.I i +to an +.BR int ; +returns 0 on error. +.TP +.IB i .iptostr( base ) +Converts a large integer to a string in base +.IR base ; +returns nil on error. +.TP +.BI strtoip( str , base ) +Converts a string +.I str +representing a number in in base +.I base +to a large integer; returns nil on error. +.TP +.BI random( minbits , maxbits ) +Returns a large random number with length from +.I minbits +to +.IR maxbits . +The largest number allowed in the current implementation is +2^8192-1 . +The seed for the generator is obtained by duelling clocks. +.TP +.IB i .copy() +Returns a reference to the same value as +.IR i . +.TP +.IB i .bits() +Returns the number of bits of precision of +.IR i . +.TP +.IB base .expmod( "exp , mod" ) +Returns +.BI ( base ** exp ") mod " mod. +.TP +.IB i1 .add( i2 ) +Returns +.RI ( i1 + i2 ). +.TP +.IB i1 .sub( i2 ) +Returns +.RI ( i1 - i2 ). +.TP +.IB i1 .mul ( i2 ) +Returns +.IR i1*i2 . +.TP +.IB i1 .div ( i2 ) +Returns +.RI ( i1 / i2, +.IR i1 mod i2 ). +.TP +.IB i1 .eq( i2 ) +Returns 1 if +.I i1 +and +.I i2 +are equal; 0 otherwise. +.TP +.IB i1 .cmp( i2 ) +Compares two large integers, returning 1 if +.I i1 +is larger, +-1 if +.I i2 +is larger, and 0 if they are equal. +.TP +.IB i .shl( n ) +Returns +.IR i << n +.TP +.IB i .shr( n ) +Returns +.IR i >> n diff --git a/man/2/keyring-rc4 b/man/2/keyring-rc4 new file mode 100644 index 00000000..516ec51a --- /dev/null +++ b/man/2/keyring-rc4 @@ -0,0 +1,45 @@ +.TH KEYRING-RC4 2 +.SH NAME +keyring: rc4setup, rc4, rc4skip, rc4back \- RC4 encryption +.SH SYNOPSIS +.EX +include "keyring.m"; +keyring := load Keyring Keyring->PATH; + +rc4setup: fn(seed: array of byte): ref RC4state; +rc4: fn(state: ref RC4state, buf: array of byte, n: int); +rc4skip: fn(state: ref RC4state, n: int); +rc4back: fn(state: ref RC4state, n: int); +.EE +.SH DESCRIPTION +These functions implement the stream encryption algorithm that is claimed to +be equivalent to RSA Security's RC4. +It is a pseudo-random number generator with a 256 +byte state and a long cycle. +.PP +.B Rc4setup +sets the initial +.IR seed , +which can be any non-zero length, and +returns a representation of the initial state of the algorithm, +which is used in subsequent calls. +.PP +.B Rc4 +runs the generator starting with the given +.IR state , +and XORs the output of the generator with +the first +.I n +bytes of +.IR buf , +updating the +.IR state . +.B Rc4 +is symmetric and is used both to encrypt and decrypt. +.B Rc4skip +skips over bytes (eg, to account for lost transmissions); +.B rc4back +runs the generator backwards (eg, to account for retransmissions). +.SH SEE ALSO +.IR keyring-intro (2), +.IR keyring-crypt (2) diff --git a/man/2/keyring-sha1 b/man/2/keyring-sha1 new file mode 100644 index 00000000..e453a25c --- /dev/null +++ b/man/2/keyring-sha1 @@ -0,0 +1,142 @@ +.TH KEYRING-SHA1 2 +.SH NAME +keyring: sha1, md4, md5, hmac_sha1, hmac_md5, sign, verify \- cryptographic digests and digital signatures +.SH SYNOPSIS +.EX +include "keyring.m"; +keyring := load Keyring Keyring->PATH; + +.ta \w'verify:\ 'u +\w'fn(\ \ \ 'u +sha1: fn(buf: array of byte, n: int, digest: array of byte, + state: ref DigestState): ref DigestState; +md4: fn(buf: array of byte, n: int, digest: array of byte, + state: ref DigestState): ref DigestState; +md5: fn(buf: array of byte, n: int, digest: array of byte, + state: ref DigestState): ref DigestState; +hmac_sha1: fn(buf: array of byte, n: int, key: array of byte, digest: array of byte, + state: ref DigestState): ref DigestState; +hmac_md5: fn(buf: array of byte, n: int, key: array of byte, digest: array of byte, + state: ref DigestState): ref DigestState; +sign: fn(sk: ref SK, exp: int, state: ref DigestState, + ha: string): ref Certificate; +verify: fn(pk: ref PK, cert: ref Certificate, + state: ref DigestState): int; +.EE +.SH DESCRIPTION +.BR Sha1 , +.B md4 +and +.B md5 +are cryptographically secure hash functions that produce output called a message digest. +Each function computes a hash of +.I n +bytes of the data in +.IR buf , +and updates the current +.IR state . +They can be called iteratively to form a single digest for many data blocks. +The state is kept in the +.B DigestState +value referenced by +.I state +between calls. +.I State +should be +.B nil +on the first call, and a newly allocated +.B DigestState +will be returned for use in subsequent calls. +On a call in which +.I digest +is not +.BR nil , +the hash is completed and copied into the +.I digest +array. +.B Sha1 +produces a 20-byte hash +.RB ( SHA1dlen ), +.B md4 +and +.B md5 +a 16-byte one +.RB ( MD4len +and +.BR MD5len ). +.PP +.B Hmac_sha1 +and +.B hmac_md5 +are keyed versions of the hashing functions, following Internet RFC2104. +The +.I key +must be provided in each call, but otherwise +the calling conventions are those of +.BR sha1 . +The +.I key +must currently be no more than 64 bytes. +.PP +.B Sign +creates a digital signature of a digest from the concatenation of: a message, the name of the signer, and an expiration time. +.I State +is the digest state after running +.BR sha1 , +.B md4 +or +.B md5 +over the message. +.I Ha +is a string specifying the hash algorithm to use: +.B +"sha"\fR, +.B +"sha1"\fR, +.B +"md4"\fR +or +.B +"md5"\fR. +.B Sign +extends the digest to cover the signer's name +(taken from the private key, +.IR sk ) +and the expiration time. +It returns a certificate containing the digital signature of the digest, signer name, hash algorithm and signature algorithm. +If any parameter is invalid, +.B sign +returns nil. +The signature algorithm is implied by the type of the private key. +.PP +.B Verify +uses public key +.I pk +to verify a certificate. +It returns non-zero (true) if the certificate is valid; zero (false) otherwise. +.I State +is the digest state after running the chosen digest algorithm +over the message. +.SH EXAMPLES +A program to read a file and hash it using SHA might contain the following inner loop: +.IP +.EX +state: ref DigestState = nil; +while((n := sys->read(fd, buf, len buf)) > 0) + state = kr->sha1(buf, n, nil, state); +digest := array[kr->SHAdlen] of byte; +kr->sha1(buf, 0, digest, state); +.EE +.SH SOURCE +.B /libinterp/keyring.c +.br +.B /libcrypt/hmac.c +.br +.B /libcrypt/md4.c +.br +.B /libcrypt/md5.c +.br +.B /libcrypt/sha1.c +.SH BUGS +The MD4 algorithm is included only to allow communication with software +that might still use it; it should not otherwise be used now, because it +is easily broken. diff --git a/man/2/keyset b/man/2/keyset new file mode 100644 index 00000000..a2efd2f2 --- /dev/null +++ b/man/2/keyset @@ -0,0 +1,79 @@ +.TH KEYSET 2 +.SH NAME +keyset \- find authentication keys matching a signer +.SH SYNOPSIS +.EX +include "keyset.m"; +keyset := load Keyset Keyset->PATH; + +init: fn(): string; +keysforsigner: fn(signername: string, spkthumb: string, + user: string, dir: string): + (list of (string, string, string), string); +pkhash: fn(pk: string): string; +.EE +.SH DESCRIPTION +.B Keyset +looks through a set of certified public keys +to find one or more keys that have were certified by a given signer. +.PP +.B Init +must be called before any other function in the module. +It returns nil on success or a diagnostic string on failure. +.PP +.B Keysforsigner +looks for public keys that satisfy given conditions: +.I signername +is either the name of a signer or nil (don't care); +.I spkthumb +is either a thumbprint of the signer's public key (as produced by +.BR pkhash , +below), or nil (don't care). +.I User +is the name of the user that owns the set of keys; if it is nil, +the user's name is read from +.BR /dev/user . +.I Dir +is the name of the directory holding a collection of the +.IR user 's +signed keys as obtained for instance using +.IR getauthinfo (8); +if it is nil, the directory +.BI /usr/ user /keyring +is used by default. +Only signed (certified) unexpired keys are considered. +.B Keysforsigner +returns a tuple +.BI ( keys , err ). +.I Keys +is list of tuples +.BI ( keyfile\fB,\fP\ owner\fB,\fP\ signername ) +where +.I keyfile +is the full name of a file in +.I dir +that holds an apparently suitable key; +.I owner +is the name of the key's owner; and +.I signername +is the name of the signer in the certificate attached to the key. +The list is nil if no keys could be found that matched the criteria. +On an error, +.I err +is non-nil and gives a diagnostic. +.PP +.B Pkhash +returns the hexadecimal representation of the SHA-1 hash of public key +.IR pk , +which must be in the canonical textual form produced by +.B Keyring->pktostr +(see +.IR keyring-certtostr (2)). +.SH SOURCE +.B /appl/lib/keyset.b +.SH SEE ALSO +.IR bind (1), +.IR keyring-gensk (2), +.IR keyring-sha1 (2), +.IR security-auth (2), +.IR logind (8) diff --git a/man/2/lock b/man/2/lock new file mode 100644 index 00000000..ff9a0fa7 --- /dev/null +++ b/man/2/lock @@ -0,0 +1,39 @@ +.TH LOCK 2 +.SH NAME +lock \- +thread locking. +.SH SYNOPSIS +.EX +include "lock.m"; +lock := load Lock Lock->PATH; +Semaphore: adt { + c: chan of int; + obtain: fn(s: self ref Semaphore); + release: fn(s: self ref Semaphore); + new: fn(): ref Semaphore; +}; +init: fn(); +.EE +.SH DESCRIPTION +.B Lock +provides semaphore-based mutual exclusion. +.B Init +must be called before creating any locks. +.TP +.B Semaphore.new() +Creates and returns a reference to a new +.B Semaphore +(lock). +.TP +.IB s .obtain() +Obtains exclusive access to the lock +.IR s . +It will block until it can do so. +.TP +.IB s .release() +Releases access to the lock +.I s +and allows processes waiting on it to proceed. +.SH SOURCE +.B /appl/lib/lock.b + diff --git a/man/2/math-0intro b/man/2/math-0intro new file mode 100644 index 00000000..573d6076 --- /dev/null +++ b/man/2/math-0intro @@ -0,0 +1,79 @@ +.TH MATH-INTRO 2 +.SH NAME +Math: intro \- elementary numerics +.SH SYNOPSIS +.EX +include "math.m"; +math := load Math Math->PATH; +.EE +.SH DESCRIPTION +Inferno's math module and Limbo compiler provide the +fundamental floating point environment and ``elementary functions''. +.PP +Limbo expressions involving only literal and named constants are +evaluated at compile time with all exceptions ignored. +However, +arithmetic on variables is left to run-time, even if data path analysis +shows the value to be a compile time constant. +This implies that tools +generating Limbo source must do their own simplification, and not +expect the compiler to change +.B x/x +into +.BR 1 , +or +.B -(y-x) +into +.BR x-y , +or even +.BR x-0 +into +.BR x . +.PP +Subexpression elimination and other forms of code motion may be done by the +compiler, +but not across calls to the mode and status functions described in +.IR math-fp (2). +Removal of +parentheses or factoring is not performed by the compiler. +The evaluation +order of +.B a+b+c +follows the parse tree and is therefore the same as for +.BR (a+b)+c . +These rules are the same as for Fortran and C. +.PP +Contracted multiply-add instructions (with a single rounding) are not +generated by the compiler, though they may be used in the native BLAS +(linear algebra) +libraries. +All arithmetic follows the IEEE floating point standard, except that +denormalized numbers may be replaced by flush-to-0, depending on what +the hardware makes feasible. +.PP +Binary/decimal conversion is properly rounded. +In particular, printing +a real using +.B %g +and reading it on a different machine is guaranteed to +recover identical bits, including +conversions done by the compiler. +The one exception is that +smaller, faster, but sloppier run-time conversion +routines may be used when mandated by +limited memory embedded systems. +Programmers may assume, however, +that the +features described in these man pages are present in all Inferno +systems intended for general computing. +.SH SOURCE +.B /libinterp/math.c +.SH SEE ALSO +See +.IR math-fp (2) +for floating point control and primitive arithmetic operations, +.IR math-elem (2) +for the classical elementary functions of applied mathematics, +and +.IR math-linalg (2) +for basic linear algebra functions. diff --git a/man/2/math-elem b/man/2/math-elem new file mode 100644 index 00000000..fb3e2e2d --- /dev/null +++ b/man/2/math-elem @@ -0,0 +1,106 @@ +.TH MATH-ELEM 2 +.SH NAME +Math: cbrt, sqrt, pow, pow10, hypot, exp, expm1, log, log10, log1p, cos, cosh, sin, sinh, tan, tanh, acos, asin, acosh, asinh, atan, atanh, atan2, lgamma, erf, erfc, j0, j1, y0, y1, jn, yn \- elementary functions of applied mathematics +.SH SYNOPSIS +.EX +include "math.m"; +math := load Math Math->PATH; + +cbrt, sqrt: fn(x: real): real; +pow: fn(x, y: real): real; +pow10: fn(p: int): real; +hypot: fn(x, y: real): real; +exp, expm1, log, log10, log1p: fn(x: real): real; + +cos, cosh, sin, sinh, tan, tanh: fn(x: real): real; +acos, asin, acosh, asinh, atan, atanh: fn(x: real): real; +atan2: fn(y, x: real) of real; + +lgamma: fn(x: real): (int,real); +erf, erfc: fn(x: real): real; +j0, j1, y0, y1: fn(x: real): real; +jn, yn: fn(n: int, x: real): real; + +.EE +.SH DESCRIPTION +These routines implement the basic elementary functions of applied mathematics. +.PP +.BI Sqrt( x ) +computes the square root of +.IR x , +.BI cbrt( x ) +the cube root. +.BI Pow( x , y ) +computes +.I x +raised to the exponent +.IR y ; +.B pow10 +raises 10 to the integer power +.IR n . +.BI Hypot( x , y ) +computes +\f5sqrt(\f2x\f5*\f2x\f5+\f2y\f5*\f2y\f5)\f1. +.PP +.BI Exp( x ) +returns the exponential function of +.IR x , +and +.BI expm1( x ) +is +.BI exp( x )-1. +.PP +.BI Log( x ) +returns the natural logarithm of +.IR x , +while +.BI log10( x ) +returns the logarithm base 10 and +.BI log1p( x ) +returns the logarithm of +.BI 1+ x\f1. +.PP +The trigonometric functions use radians. +The ranges of the inverse functions are: +.BI acos +in [0,\(*p]; +.B asin +in [-\(*p/2,\(*p/2]; +.B atan +in [-\(*p/2,\(*p/2]; +and +.BI atan2( y , x ) +.B = +.BI arctan( y / x ) +in [-\(*p,\(*p]; +.PP +The gamma function is implemented by +.BI lgamma( x )\f1; +the tuple it returns, say +.BI ( s , lg )\f1, +encodes the gamma function by +.RI \(*G( x ) += +.IB s *exp( lg )\f1. +.PP +The hyperbolic trigonometric functions +.B sinh +etc. behave as expected. +.B Erf +is the error function and +.BI erfc( x ) +is +.BI 1-erf( x )\f1. +.PP +The Bessel functions are computed by +.BI j0 , +.BI j1 , +.BI jn , +.BI y0 , +.BI y1 , +and +.BR yn . +.SH SOURCE +.B /libinterp/math.c +.SH SEE ALSO +.IR math-intro (2) diff --git a/man/2/math-export b/man/2/math-export new file mode 100644 index 00000000..9c6c7b63 --- /dev/null +++ b/man/2/math-export @@ -0,0 +1,52 @@ +.TH MATH-EXPORT 2 +.SH NAME +Math: export_int, export_real, export_real32, import_int, import_real, import_real32 \- conversion to and from external representation +.SH SYNOPSIS +.EX +include "math.m"; +math := load Math Math->PATH; + +export_int: fn(b: array of byte, x: array of int); +export_real32: fn(b: array of byte, x: array of real); +export_real: fn(b: array of byte, x: array of real); + +import_int: fn(b: array of byte, x: array of int); +import_real32: fn(b: array of byte, x: array of real); +import_real: fn(b: array of byte, x: array of real); +.EE +.SH DESCRIPTION +These routines convert between Limbo's internal representation of +integer and floating-point values, and equivalent external representations as +arrays of bytes, allowing efficient input/output of binary representations. +.PP +.BI Export_int( b , \ x ) +converts each integer element of array +.I x +into a sequence of 4 bytes in array +.IR b . +.PP +.BI Export_real( b , \ x ) +converts each double-precision floating-point element of array +.I x +into a sequence of 8 bytes in array +.IR b . +.PP +.BI Export_real32( b , \ x ) +converts each double-precision floating-point element of array +.I x +to a single-precision value, then encodes it as a sequence of 4 bytes in array +.IR b . +.PP +Each +.BI import_ T +operation reverses the transformation of the corresponding +.BI export_ T +operation, converting an array of bytes containing a sequence of external representations +into an array of values of the appropriate internal form. +.PP +Values are encoded in big-endian order (most significant byte first), with floating-point +values represented in IEEE 32-bit or 64-bit form (again, most significant byte first). +.SH SOURCE +.B /libinterp/math.c +.SH SEE ALSO +.IR math-intro (2) diff --git a/man/2/math-fp b/man/2/math-fp new file mode 100644 index 00000000..a67b1377 --- /dev/null +++ b/man/2/math-fp @@ -0,0 +1,205 @@ +.TH MATH-FP 2 +.SH NAME +math-fp \- floating point +.SH SYNOPSIS +.EX +include "math.m"; +math := load Math Math->PATH; + +Infinity, NaN, MachEps, Pi, Degree: real; +INVAL, ZDIV, OVFL, UNFL, INEX: int; +RND_NR, RND_NINF, RND_PINF, RND_Z, RND_MASK: int; + +getFPcontrol, getFPstatus: fn(): int; +FPcontrol, FPstatus: fn(r, mask: int): int; +ilogb: fn(x: real): int; +scalbn: fn(x: real, n: int): real; +copysign: fn(x, s: real): real; +finite, isnan: fn(x: real): int; +nextafter: fn(x, y: real): real; + +fdim, fmin, fmax: fn(x, y: real): real; +fabs: fn(x: real): real; +ceil, floor: fn(x: real): real; +remainder: fn(x, p: real): real; +fmod: fn(x, y: real): real; +modf: fn(x: real): (int,real); +rint: fn(x: real): real; +.EE +.SH DESCRIPTION +These constants and functions provide control over rounding modes, +exceptions, and other properties of floating point arithmetic. +.PP +.B Infinity +and +.B NaN +are constants containing +the positive infinity and quiet not-a-number values +of the IEEE binary floating point standard, double precision. +.B MachEps +is 2\u\s-2-52\s0\d, the smallest +.I e +such that 1+\f2e\f1 is not equal to 1. +.B Pi +is the nearest machine number to the infinitely precise value. +.B Degree +is +.BR Pi/ 180. +.PP +Each thread has a floating point control word (governing rounding mode and +whether a particular floating point exception causes a trap) +and a floating point status word (storing accumulated exception flags). +The functions +.B FPcontrol +and +.B FPstatus +copy bits to the control or status word, +in positions specified by a mask, returning the previous values of the bits +specified in the mask. +The functions +.B getFPcontrol +and +.B getFPstatus +return the words unchanged. +.PP +.BR INVAL , +.BR ZDIV , +.BR OVFL , +.BR UNFL , +and +.B INEX +are non-overlapping single-bit masks +used to compose arguments or return values. +They stand for the five IEEE exceptions: +`invalid operation' (0/0,0+NaN,Infinity-Infinity,sqrt(-1)), +`division by zero' (1/0), `overflow' (1.8e308), `underflow' (1.1e-308), +and `inexact' (.3*.3). +.PP +.BR RND_NR , +.BR RND_NINF , +.BR RND_PINF , +and +.BR RND_Z +are distinct bit patterns +for `round to nearest even', `round toward negative infinity', +`round toward infinity', and `round toward 0', +any of which can be set or extracted from the floating point control +word using +.BR RND_MASK . +For example, +.B FPcontrol(0, +.B UNFL) +makes underflow silent; +.B FPstatus(0, +.B INEX) +checks and clears the inexact flag; and +.B FPcontrol(RND_PINF, +.B RND_MASK) +sets directed rounding. +.PP +By default, +.B INEX +is quiet, +.BR OVFL , +.BR UNFL , +and +.B ZDIV +are fatal, +and rounding is to nearest even. +Limbo modules are +entitled to assume this, and if they wish to use quiet +underflow, overflow, or zero-divide, they must either +set and restore the control register or clearly document that +their caller must do so. +.PP +The +.B ilogb +function +returns the nearest integral logarithm base 2 of the absolute value of +.IR x: +for positive finite +.IR x , +1 \(<= +.IB x *2\u-\s-2ilogb( x )\s0\d +< 2, +and +.BI ilogb(- x ) +.B = +.BI ilogb( x )\f1. +.BI Scalbn( x , n ) +is a scaled power of two: +.IB x *2\u\s-2n\s0\d\f1. +.BI Copysign( x , s ) +has the magnitude of +.I x +and the +sign bit of +.IR s . +.BI Nextafter( x , y ) +is the machine number nearest x closer to y. +Finally, +.BI finite( x ) +is 0 if +.I x +is +.B Nan +or +.B Infinity, +1 otherwise, and +.BI isnan( x ) +is 1 if +.I x +is +.B Nan +and 0 otherwise. +.PP +The function +.BI fdim( x , y) += +.IB x - y +if +.I x +is greater than +.IR y , +otherwise it is 0. +The functions +.BR fmin , +.BR fmax , +.BR fabs , +.BR ceil , +and +.B floor +are the +customary minimum, +maximum, +absolute value, +and integer rounding routines. +.PP +There are two functions for computing the modulus: +.BI fmod( x , y ) +is the function defined by the C standard which gives the value +.IB x - i*y +for some +.I i +such that the remainder has the sign of +.I x +and magnitude less than the magnitude of +.IR y , +while +.BI remainder( x , y ) +is the function defined by the IEEE standard +which gives a remainder of magnitude no more than half the +magnitude of +.IR y . +The function +.BI modf( x ) +breaks +.I x +into integer and fractional parts returned in a tuple, and +.B rint +rounds to an integer, following the +rounding mode specified in the floating point control word. +.SH SOURCE +.B /libinterp/math.c +.SH SEE ALSO +.IR math-intro (2) diff --git a/man/2/math-linalg b/man/2/math-linalg new file mode 100644 index 00000000..5a39e838 --- /dev/null +++ b/man/2/math-linalg @@ -0,0 +1,146 @@ +.TH MATH-LINALG 2 +.SH NAME +Math: dot, norm1, norm2, iamax, gemm, sort \- linear algebra primitives +.SH SYNOPSIS +.EX +include "math.m"; +math := load Math Math->PATH; + +dot: fn(x, y: array of real): real; +norm1, norm2: fn(x: array of real): real; +iamax: fn(x: array of real): int; +gemm: fn(transa, transb: int, # upper case N or T + m, n, k: int, alpha: real, + a: array of real, lda: int, + b: array of real, ldb: int, beta: real, + c: array of real, ldc: int); + +sort: fn(x: array of real, p: array of int); +.EE +.SH DESCRIPTION +These routines implement the basic functions of linear algebra. +The standard vector inner product and norms are defined as follows: +.IP +.BI dot( "x , y" ) += +.BI sum( x [ i ]* y\fP[\fPi\fP]) +.IP +.BI norm1( x ) += +.BI sum(fabs( x [ i\ \f5])) +.IP +.BI norm2( x ) += +.BI sqrt(dot( "x , x" )) +.PP +For the infinity norm, the function +iamax(x) +computes an integer +.I i +such that +.BI fabs( x [ i ]) +is maximal. +These are all standard BLAS (basic linear algebra subroutines) +except that in Inferno they apply only to contiguous (unit stride) +vectors. +.PP +We assume the convention that matrices are represented as +singly-subscripted arrays with Fortran storage order. +So for an +.I m +by +.I n +matrix +.I A +we use loops +with +.BI 0\(<= i < m +and +.BI 0\(<= j < n +and access +\f2A\f5[\f2i\f5+\f2m\f5*\f2j\f5]\f1. +.PP +Rather than provide the huge number of entry points in BLAS2 and BLAS3, +Inferno provides the matrix multiply primitive, +.BR gemm , +defined by +.PP +.EX + \f2A\fP = \f1\(*a\fP*\f2A\fP\f1'\fP*\f2B\fP\f1'\fP + \f1\(*b\fP*\f2C\fP +.EE +.PP +where the apostrophes indicate an optional transposition. +As shown by the +work of Kagstrom, Ling, and Van Loan, the other BLAS functionality can +be built efficiently on top of +.BR gemm . +.PP +Matrix +.IR a ' +is +.I m +by +.IR k , +matrix +.IR b ' +is +.I k +by +.IR n , +and matrix +.I c +is +.I m +by +.IR n . +Here +.IR a ' +means +.I a +.RI ( a ') +if +.I transa +is the constant +.B 'N' +.RB ( 'T' ), +and similarly for +.IR b '. +The sizes +.IR m , +.IR n , +and +.I k +denote the `active' part of +the matrix. +The parameters +.IR lda , +.IR ldb , +and +.I ldc +denote the `leading dimension' +or size for purposes of indexing. +So to loop over +.I c +use loops +with +.BI 0\(<= i < m +and +.BI 0\(<= j < n +and access +\f2a\f5[\f2i\f5+\f2ldc\f5*\f2j\f5]\f1. +.PP +The sorting function +.BI sort( x , p ) +updates a 0-origin permutation +.I p +so that +.IB x [ p [ i ]] +\(<= +.IB x [ p [ i +1]]\f1, +leaving +.I x +unchanged. +.SH SOURCE +.B /libinterp/math.c +.SH SEE ALSO +.IR math-intro (2) diff --git a/man/2/mpeg b/man/2/mpeg new file mode 100644 index 00000000..1691a713 --- /dev/null +++ b/man/2/mpeg @@ -0,0 +1,74 @@ +.TH MPEG 2 +.SH NAME +mpeg \- interface to the mpeg device driver +.SH SYNOPSIS +.EX +include "draw.m"; +include "mpeg.m"; +mpeg:= load Mpeg Mpeg->PATH; + +play: fn(d: ref Display, + w: ref Image, + dopaint: int, + r: Rect, + file: string, + notify: chan of string): string; +ctl: fn(msg: string): int; +keycolor: fn(d: ref Display): ref Image; +.EE +.SH DESCRIPTION +.B Mpeg +provides a primitive interface to the +.IR mpeg (3) +device. +.PP +.B Play +plays the specified MPEG +.I file +in rectangle +.I r +within window +.I w +on display +.IR d . +The +.I dopaint +flag specifies whether, before playing the movie, to paint the rectangle with the chroma key colour of the device. +.PP +.I Notify +is a channel upon which to receive errors and status. If +.I notify +is +.BR nil , +.B play +runs synchronously, returning the empty string ("") when the movie completes, or a description of any error. +If +.I notify +is not +.BR nil , +.B play +spawns an asynchronous process to play the movie and returns the empty string immediately; the process returns the status on the +.I notify +channel when the movie completes. +.PP +.B Ctl +writes +.IR msg , +the string given as an argument, to the MPEG control interface +.BR /dev/mpegctl . +.PP +.B Keycolor +uses the +.B Display +.I d +to create a single-pixel, replicated off screen +.B Image +of colour +.B Chroma +.RB ( 16r05 ). +.SH FILES +.B /dev/mpeg +.br +.B /dev/mpegctl +.SH SOURCE +.B /appl/lib/mpeg.b diff --git a/man/2/names b/man/2/names new file mode 100644 index 00000000..e28abf08 --- /dev/null +++ b/man/2/names @@ -0,0 +1,113 @@ +.TH NAMES 2 +.SH NAME +Names: basename, cleanname, dirname, elements, isprefix, pathname, relative, rooted \- file name manipulation +.SH SYNOPSIS +.EX +include "names.m"; +names := load Names Names->PATH; + +basename: fn(name: string, suffix: string): string; +cleanname: fn(name: string): string; +dirname: fn(name: string): string; +elements: fn(name: string): list of string; +isprefix: fn(a: string, b: string): int; +pathname: fn(els: list of string): string; +relative: fn(name: string, root: string): string; +rooted: fn(root: string, name: string): string; +.EE +.SH DESCRIPTION +.B Names +provides operations on file names (path names): +.TF cleanname +.PD +.TP +.B basename +Return the trailing component of +.I name +(the text after the final +.LR / ), +shorn of +.I suffix +(which may be null). +.TP +.B cleanname +Return a `cleaner' version of +.IR name : +there are no redundant and trailing slashes, +and directory names +.L . +and +.L .. +have been interpreted lexically. +If the result would otherwise be the empty string, +the name +.L . +is returned instead. +.TP +.B dirname +Return the directory component of +.IR name : +the string up to but not including the final slash(es). +.TP +.B elements +Return a list of the path elements of +.IR name : +the words between slashes. +If +.I name +starts with a +.LR / , +the head of the list will be the string +\&\f5"/"\fP +but otherwise slashes do not appear. +.TP +.B pathname +Return a path name formed from a list of elements as produced by +.BR elements . +.TP +.B isprefix +Return true iff path name +.I a +is a prefix of path name +.IR b . +.TP +.B relative +If +.I name +is +.IB root / X +for some +.IR X , +return +.IR X ; +otherwise return +.I name +unchanged. +.TP +.B rooted +Return the path name for +.I name +relative to a given +.I root +directory (either name may be nil). +If +.I name +itself starts with +.L / +or +.LR # , +the result is +.IR name ; +otherwise it is +.IB root / name. +.PP +See +.IR sys-intro (2) +for details of file name syntax and its interpretation. +.SH SOURCE +.B /appl/lib/names.b +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-fd2path (2), +.IR workdir (2) + diff --git a/man/2/newns b/man/2/newns new file mode 100644 index 00000000..4b151558 --- /dev/null +++ b/man/2/newns @@ -0,0 +1,40 @@ +.TH NEWNS 2 +.SH NAME +newns \- build a new name space from a description file +.SH SYNOPSIS +.EX +include "newns.m"; +ns := load Newns Newns->PATH; + +newns: fn(user: string, nsfile: string): string; +.EE +.SH DESCRIPTION +.B Newns +reads file +.I nsfile +and builds a new name space based on the commands it contains. +The file has the format defined by +.IR namespace (6). +If +.I nsfile +is +.B nil +or empty, then +.B newns +attempts to read file the file +.BR namespace . +.SH SOURCE +.B /appl/lib/newns.b +.SH SEE ALSO +.IR sys-bind (2), +.IR sys-chdir (2), +.IR sys-pctl (2), +.IR namespace (6) +.SH BUGS +The +.I user +string is currently ignored: +use +.B nil +or the current user name +.RB ( /dev/user ). diff --git a/man/2/palmfile b/man/2/palmfile new file mode 100644 index 00000000..81d62fc2 --- /dev/null +++ b/man/2/palmfile @@ -0,0 +1,542 @@ +.TH PALMFILE 2 +.SH NAME +Palmfile: Categories, DBInfo, Doc, Entry, Pfile, Record \- read Palm™ file formats +.SH SYNOPSIS +.EX +include "bufio.m"; +include "palmfile.m"; + +palmfile := load Palmfile Palmfile->PATH; + +Pfile: adt { + fname: string; + + appinfo: array of byte; + sortinfo: array of int; + + entries: array of ref Entry; + + open: fn(name: string, mode: int): (ref Pfile, string); +. # create: fn(nil: string, mode: int, perm: int, nil: ref DBInfo): ref Pfile; + close: fn(pf: self ref Pfile): int; + read: fn(pf: self ref Pfile, index: int): (ref Record, string); +. # append: fn(pf: self ref Pfile, r: ref Record): int; + stat: fn(pf: self ref Pfile): ref DBInfo; +. # wstat: fn(pf: self ref Pfile, nil: ref DBInfo): string; +. # readid: fn(pf: self ref Pfile, nil: int): (ref Record, string); +. # setappinfo: fn(pf: self ref Pfile, nil: array of byte); +. # setsortinfo: fn(pf: self ref Pfile, nil: array of int); +}; + +DBInfo: adt { + name: string; # database name on Palm + attr: int; # file attributes (defined below) + dtype: string; # database type (byte[4]) + version: int; # version of data layout, defined by application + creator: string; # creating application (byte[4]) + ctime: int; # creation time + mtime: int; # modification time + btime: int; # last backup + modno: int; # modification number + uidseed: int; # unique record ID seed + + new: fn(name: string, attr: int, dtype: string, + version: int, creator: string): ref DBInfo; +}; + +Entry: adt { + id: int; # resource: id; record: unique ID + offset: int; # offset in file + size: int; # size in bytes + name: int; # resource entry only + attr: int; # record entry only +}; + +Record: adt { + id: int; # resource: ID; data: unique record ID + index: int; # record index (origin 0) + name: int; # byte[4]: resource record only + attr: int; # attributes, defined below, data record only + cat: int; # category, data record only + data: array of byte; # content of record + +. # new: fn(size: int): ref Record; +}; + +Categories: adt { + renamed: int; # which categories have been renamed + labels: array of string; # category names + uids: array of int; # corresponding unique IDs + lastuid: int; # last unique ID assigned + appdata: array of byte; # remaining application-specific data + + new: fn(labels: array of string): ref Categories; + unpack: fn(a: array of byte): ref Categories; + pack: fn(c: self ref Categories): array of byte; +}; + +Doc: adt { + version: int; + length: int; # uncompressed + nrec: int; # text records only + recsize: int; # uncompressed + position: int; + sizes: array of int; # sizes of uncompressed records + + open: fn(file: ref Pfile): (ref Doc, string); + read: fn(doc: self ref Doc, i: int): (string, string); + iscompressed: fn(doc: self ref Doc): int; + unpacktext: fn(doc: self ref Doc, a: array of byte): + (string, string); + textlength: fn(doc: self ref Doc, a: array of byte): int; +}; + +init: fn(): string; + +filename: fn(s: string): string; +dbname: fn(s: string): string; + +gets: fn(a: array of byte): string; +puts: fn(a: array of byte, s: string); +get2: fn(a: array of byte): int; +get3: fn(a: array of byte): int; +get4: fn(a: array of byte): int; +put2: fn(a: array of byte, v: int); +put3: fn(a: array of byte, v: int); +put4: fn(a: array of byte, v: int); +.EE +.SH DESCRIPTION +.B Palmfile +provides read-only access to files in the Palm™ database and document formats. +It currently handles three types of files: +Palm Database +.RB ( .pdb ) +files, which store data for applications; +Palm Resource +.RB ( .prc ) +files, which store code resources and user interface resource elements; +and +Palm Doc +.RB ( .doc ) +files, which store compressed documents for the Palm document and e-book readers. +Database and resource files have a similar structure, with slight differences +in representation, and differing mainly in how the contents are used. +.PP +.B Init +must be called before any other function in the file. +It returns a diagnostic if it cannot initialise the module. +.PP +.B Pfile +represents an open Palm file of any type: +.TP +.B open() +Opens file +.I name +with the given +.I mode +(which must currently be +.BR Sys->OREAD ) +and returns a tuple +.RI ( pf , err ). +.I Pf +is a new +.B Pfile +instance giving access to the file, +or nil if the open failed, in which case the +.I err +string contains a diagnostic. +.TP +.IB pf .close() +Close the file (needed only when writing to a file is eventually supported). +.TP +.IB pf .read( index ) +Returns a tuple +.RI ( rec,\ err ) +where +.I rec +is a +.B Record +containing the data of the record +with the given +.I index +(origin 0), or +nil if no such record index exists or it cannot be read. +In the latter case, +.I err +is a diagnostic string. +.TP +.IB pf .stat() +Return the database information for +.IR pf . +.TP +.B entries +An array of +.B Entry +values (see below), one per record. +The length of the array is consequently the length of +the file in records. +It can be nil or empty. +.TP +.B appinfo +Optional application-specific data (see +.B Categories +below). +.TP +.B sortinfo +Optional application-specific data (typically +an array of record IDs in a chosen sorting order). +.TP +.B fname +File name given to +.BR Pfile.open . +.PP +.B DBInfo +gives the database information for a file: +.TF creator +.PD +.TP +.B name +Database name used on the Palm, maximum of 31 characters. +.TP +.B attr +A bit set of file attributes, containing the following values: +.RS +.TF Fappinfodirty +.PD +.TP +.B Fresource +File is a resource file +.RB ( .prc ) +not a database file +.RB ( .pdb ). +.TP +.B Fronly +File is read only. +.TP +.B Fappinfodirty +Application information has changed. +.TP +.B Fbackup +No conduit program exists (the whole file must be backed up). +.TP +.B Foverwrite +Overwrite older copy if present. +.TP +.B Freset +Reset PDA after installing this file. +.TP +.B Fprivate +Don't allow copy of this file to be beamed. +.RE +.TP +.B dtype +String identifying database type (up to 4 characters). +It is usually the string +\f5"appI"\fP for resource files. +.TP +.B version +Identifies the version of the data format (application specific). +.TP +.B creator +String identifying creating application (up to 4 characters). +.TP +.B ctime +File creation time, in seconds from the Inferno epoch (see +.IR daytime (2)). +.TP +.B mtime +Time file last modified, in seconds from the epoch. +.TP +.B btime +Time file last backed up, in seconds from the epoch. +.TP +.B uidseed +Seed for generating unique record IDs (typically set to 0 for database files, +always 0 for resource files). +.TP +.BI new( name,\ attr,\ dtype,\ creator ) +Return a new +.B DBInfo +with the given values. +.PP +In some applications, it is useful to use a data base name +(ie, +.BR DBInfo.name ) +as a component of an Inferno file name. +The device allows space and slash characters in names, though, +which makes it hard to use the name directly. +.B Filename +maps each space character +in +.I s +to U+00A0 (unpaddable space) +and each slash character to U+2215 (`division /'), +and returns the result. +.B Dbname +maps the other way. +.SS Entries and Records +Each record in the file is represented by an +.B Entry +in memory, which holds the record's essential attributes, +leaving the data on file. +The meaning of some of the elements depends on whether +the file is a data file or a resource file. +.TF offset +.PD +.TP +.B id +Resource ID, 16 bits (resource file); unique record ID, 24 bits (data file). +.TP +.B offset +Offset in file, in bytes. +.TP +.B size +Size of record in bytes. +.TP +.B name +Name of the resource (resource record only). +.TP +.B attrs +Record attributes (data record only): +.RS +.TF Rarchive +.PD +.TP +.B Rdelete +Delete the record when file next synchronised. +.TP +.B Rdirty +Record has been modified. +.TP +.B Rinuse +Record in use (not typically used in Inferno). +.TP +.B Rsecret +Record is secret (shown on the device only with use of a password). +.TP +.B Rarchive +Archive this record when file next synchronised. +.TP +.B Rmcat +Mask for the 4-bit category field (in +.B Entry.attrs +only). +.RE +.PP +Records read from the file are represented by a +.B Record +adt containing its data and associated values. +Some fields are valid only for particular classes of records. +.TF index +.PD +.TP +.B id +Resource or record ID, as for +.BR Entry . +.TP +.B index +Index (origin 0) of the record in the file. +.TP +.B name +Resource name (resource record only). +.TP +.B attr +Record attributes, as above (data record only). +.TP +.B cat +Record's category ID (data record only). +.TP +.B data +The actual data. +.SS Application data +The contents of both the ``application information'' and ``sort information'' sections of the file +are defined by an application in general. +Even so, both have conventional uses with many Palm applications. +The Palm software often assigns data records to particular categories (eg, ``Business'' or ``Personal''), +and stores up to 16 category names and IDs in the application data in a fixed format +(possibly followed by further data that is application specific). +This is represented by an instance of +.BR Categories , +which provides the following: +.TF renamed +.PD +.TP +.B renamed +Bit set indicating which categories have been renamed (for category 0, bit +.BR 1<<0 , +for 1, bit +.BR 1<<1 , +and so on). +.TP +.B labels +Array of 16 category labels. +.TP +.B uids +Array of 16 category IDs, each in the range 0 to 255. +(It is said that the Palm itself assigns 0 to 127 and desktop applications assign 128 to 255.) +.TP +.B lastuid +Last unique category ID assigned. +.TP +.B appdata +Any data that remained after unpacking the category data. +.TP +.BI new( labels ) +Return a new +.B Categories +value for the given array of +.IR labels , +assigning unique IDs to each in turn, starting from 128. +There can be at most 16 labels; if there are fewer, the remaining labels will be marked as unused +(empty strings). +.TP +.BI unpack( a ) +Unpack the application data in array +.I a +(typically +.IB pf .appinfo +for some +.B Pfile +.IR pf ), +returning a reference to a new +.B Categories +instance. +A nil value is returned if the array is too short to hold valid category data. +.TP +.IB c .pack() +Pack +.I c +into a form suitable for writing back to a file's application information area. +.PP +Binary data in Palm files is typically encoded in big-endian form. +.B Palmfile +functions account for that internally, but some Palm applications might use +big-endian data in their own data records. +Several functions are therefore provided to decode and encode big-endian data: +.BI get n +retrieves an integer from the first +.I n +bytes of array +.IR a ; +.BI put n +stores a big-endian representation of the value +.I v +in the first +.I n +bytes of array +.IR a . +.PP +Strings are stored in fixed-length arrays of bytes, always terminated by a zero byte. +The character encoding is (apparently) Latin-1 (ISO 8859-1), not UTF-8, +so functions +.B gets +and +.B puts +are provided to convert between that representation and a Limbo string. +.SS Documents +.B Doc +provides read-only access to Palm documents and (unencrypted) e-books: +.TF position +.PD +.TP +.BI open( file ) +Given a +.B Pfile +.IR file , +return a tuple +.RI ( doc,\ err ) +where +.I doc +is a new +.B Doc +instance giving access to the document contents in +.IR file . +If an error occurs, in particular if +.I file +does not appear to be a valid Palm document, +.I doc +is nil and the string +.I err +diagnoses the error. +.TP +.IB doc .iscompressed() +Returns true (non-zero) if the document is compressed; returns false (zero) otherwise. +.TP +.IB doc .read( i ) +Read text record with index +.I i +(origin 0), +returning a tuple +.RI ( s,\ err ) +where +.I s +is the uncompressed text for record +.IR i , +or nil if the record does not exist (or there is an error reading it). +On any error, +.I err +is a diagnostic string. +Note that +.I i +is an index into the set of text records, and is not an index into the set of all records. +It must be no greater than +.IB doc .nrec . +.IB doc .unpacktext( a ) +Returns a tuple +.RI ( s,\ err ) +where +.I s +is the text in array +.IR a , +after uncompressing if +.I doc +contains compressed records. +Following Palm conventions, the text is assumed to be written in the Latin-1 encoding (ISO-8859-1). +If it is compressed but the data in +.I a +is corrupt (cannot be uncompressed), +.I s +is nil and +.I err +diagnoses the problem. +.TP +.IB doc .textlength( a ) +Returns the number of bytes required to store the text in array +.I a +once it has been uncompressed (if necessary). +.TP +.B version +The document's version number. +.TP +.B length +The length of the whole document in bytes, when uncompressed. +.TP +.B nrec +Number of text records in the document. +.TP +.B recsize +Size of uncompressed text records. +.TP +.B position +Possibly records the position where reading last stopped. +.TP +.B sizes +Array giving sizes of all text records, once uncompressed. +.PP +Most document-reading applications require only +.B Doc.open +and +.BR Doc.read , +and perhaps +.BR Doc.length +to guide the construction of scroll bars (for instance). +.SH SOURCE +.B /appl/lib/palmfile.b +.SH SEE ALSO +.IR "Palm® File Format Specification" , +Gary Hillerson, Palm Inc., +Document Number 3008-004, +1 May 2001. +. br +.IR "[Palm®] standard text document file format" , +Paul Lucas, 18 August 1998. diff --git a/man/2/plumbmsg b/man/2/plumbmsg new file mode 100644 index 00000000..9eba8c5c --- /dev/null +++ b/man/2/plumbmsg @@ -0,0 +1,291 @@ +.TH PLUMBMSG 2 +.SH NAME +plumbmsg \- plumbing message module +.SH SYNOPSIS +.EX +include "plumbmsg.m"; +plumbmsg := load Plumbmsg Plumbmsg->PATH; +Msg: import plumbmsg; + +Msg: adt +{ + src: string; + dst: string; + dir: string; + kind: string; + attr: string; + data: array of byte; + # used by applications + send: fn(msg: self ref Msg): int; + recv: fn(): ref Msg; + # used by plumb and send, recv + pack: fn(msg: self ref Msg): array of byte; + unpack: fn(b: array of byte): ref Msg; +}; + +Attr: adt +{ + name: string; + val: string; +}; + +init: fn(willsend: int, rcvport: string, maxdata: int): int; +shutdown: fn(); +string2attrs: fn(s: string): list of ref Attr; +attrs2string: fn(l: list of ref Attr): string; +lookup: fn(attrs: list of ref Attr, name: string): (int, string); +.EE +.SH DESCRIPTION +.B Plumbmsg +is an interface for message-passing between applications +via the +.IR plumber (8). +It allows applications to receive messages from the plumber on a logical input port, +and send messages to other applications via the plumber. +.PP +.B Init +must be called once when the application starts, to +set up its plumbing connections. +Applications can choose to send messages, receive them, or do both. +Note that +the plumber must be running before any of these functions are useful. +Normally, that is done by the window system's initialisation procedure, +but in specialised systems, plumbing can be used for attribute-oriented +communication even without a window system. +.PP +If the application will be sending +messages via the plumber, the value +.I willsend +must be non-zero, and +.B init +will open an appropriate channel to the plumber; if the application +will not send messages, the value should be zero. +.PP +If the application is prepared to receive messages, the parameter +.I rcvport +names its logical input port, +which must also be known to the plumber (ie, it must +be named as a possible destination in +.IR plumbing (6)); +.B init +will open an appropriate channel to receive messages from the plumber. +The parameter +.I maxdata +gives the size in bytes of the largest message +the application is prepared to receive. +Applications that only send messages set +.I rcvport +to nil. +.PP +.B Init +returns returns -1 if for any reason either connection cannot be set up correctly, +in particular if the plumber is not running or the input port is unknown. +Otherwise it returns a non-negative value. +.PP +The following program fragment establishes input and output plumbing +for an application `edit': +.IP +.EX +plumbed := 0; +plumbmsg = load Plumbmsg Plumbmsg->PATH; +if(plumbmsg->init(1, "edit", 1000) >= 0) + plumbed = 1; +.EE +.PP +The variable +.B plumbed +is set to allow the application to disable its plumbing user interface +(and not attempt to send messages) if initialisation fails. +.PP +The +.B Msg +adt +encapsulates the message data routed between applications and +provides member functions to send and receive them. +Its components are used as follows: +.TF dataxx +.PD +.TP +.B src +The name of the program generating the message. +.TP +.B dst +The output port to which the plumber should route the message. +In practice, destination is often left empty, and +the destination port will be determined by +the plumber applying the automatic routing rules +(cf. +.IR plumbing (6)) +.TP +.B dir +The directory in which to interpret the data (eg, if the data is a local file name). +.TP +.B kind +The format of the data. +Currently, +.RB ` text ' +is the only type that applications understand, but the plumbing system +can route any kind of data. +.TP +.B attr +A string containing +.IB name = value +pairs (eg, +.BR click=7 ), +separated by tabs. +Normally the value should be created using +.B attrs2string +and parsed using +.BR string2attrs , +described below. +.TP +.B data +The message to be conveyed. +If +.B kind +is +.BR text , +and the message is a string +.IR s , +.B data +will be +.RB ` array +.B of +.BI byte " s'" +(ie, its UTF encoding). +.PD +.PP +Plumbing messages are created directly using Limbo's +.B ref +operator, giving the desired value to each field. +For example: +.IP +.EX + msg := ref Msg( + "WmSh", + "", + workdir->init(), + "text", + attr, + array of byte text); +.EE +.PP +The plumbing messages are exchanged with +the plumber +using two member functions: +.TP +.IB m .send( msg ) +Writes a plumbing message to the +plumber. +It returns the number of bytes written (the result of +.I write +in +.IR sys-read (2) +which does the writing). +It returns -1 if the plumber cannot route the message. +.TP +.B Msg.recv() +Reads a plumbing message from the file +representing the application's input port, +previously opened by +.BR init . +It waits for a message, and returns a reference to a +.B Msg +that contains the message data. +.PP +.B Shutdown +sends a message to the plumber +that shuts down plumbing for the application's input port +.IR rcvport . +An application +.I must +call it before it exits if it has an active input port. +.PP +.B String2attrs +takes a string containing a tab-separated list of attribute pairs and returns a list of references to +.B Attr +adts. +.PP +.B Attr2string +converts a list of references to +.B Attr +adts into a string of the form +.IB name = value name = value +\&. . . . +The +.IB name = value +pairs are separated by a single tab. +.PP +.B Lookup +searches +.I attrs +for an attribute +.IR name , +and if found, returns the tuple +.BI (1, value ) . +If +.I name +is not found, +.B lookup +returns +.BR "(0, nil)" . +.SS Packed message format +The format of plumbing messages as transmitted, and member functions +that encapsulate it, are documented here for completeness, and in case +the details are useful in interpreting plumbing messages outside the Inferno environment. +.PP +Plumbing messages have a fixed structure: five lines of text +giving UTF representations of the +corresponding fields of +.BR Msg , +then a line giving the length of +.B data +in decimal, +followed by the bytes of +.BR data : +.IP +.nf +.IB source \en +.IB destination \en +.IB directory \en +.IB kind \en +.IB attributes \en +.IB n \en +.IB n " bytes" +.fi +.PP +The details are encapsulated in two functions: +.TP +.IB m .pack() +.B Pack +packs the contents +.B Msg +.I m +into an array of byte for subsequent transmission using +.I write +(see +.IR sys-read (2)). +.TP +.BI Msg.unpack( b ) +Unpack unpacks an array of byte +.I b +to form a copy of the original +.BR Msg , +which it returns. +.SH FILES +.TF /chan/plumb.rcvport +.TP +.B /chan/plumb.input +file to send messages to the plumber +.TP +.BI /chan/plumb. rcvport +file to receive messages routed to the logical name +.I rcvport +.SH SOURCE +.B /appl/lib/plumbmsg.b +.SH BUGS +.I Shutdown +should not be needed: +the +.IR plumber (8), +as a file server, must know that a particular client has vanished. diff --git a/man/2/pop3 b/man/2/pop3 new file mode 100644 index 00000000..6288bc2a --- /dev/null +++ b/man/2/pop3 @@ -0,0 +1,85 @@ +.TH POP3 2 +.SH NAME +pop3 \- Post Office Protocol +.SH SYNOPSIS +.EX +include "pop3.m"; +pop3 := load Pop3 Pop3->PATH; + +open: fn(user, password, server: string): (int, string); +stat: fn(): (int, string, int, int); +msglist: fn(): (int, string, list of (int, int)); +msgnolist: fn(): (int, string, list of int); +top: fn(m: int): (int, string, string); +get: fn(m: int): (int, string, string); +delete: fn(m: int): (int, string); +close: fn(): (int, string); +.EE +.SH DESCRIPTION +.B Pop3 +provides an interface to the Post Office Protocol +POP3 through a set of functions. +.PP +.B Open +opens a connection to a POP3 +.IR server , +logging in as the specified +.IR user +with the given +.IR password . +If +.I server +is +.IR nil , +.B open +uses +.BR $POPSERVER , +and if that is not defined, it +uses +.BR $MAILSERVER , +the default mail server, if set up in +.LR /services/cs/db +(see +.IR db (6)). +The remaining functions assume a successfully opened connection. +.PP +.B Stat +returns the status of the user's mailbox. +The third element of its return tuple is the number of +messages and the fourth is the total number of bytes in the messages. +.PP +.B Msglist +lists the user's mailbox. The third element in its return tuple gives a list of pairs of numbers +comprising +.RI ( "message number, bytes in message" ). +.PP +.B Msgnolist +lists the user's mailbox as above but omits the bytes in each message. +.PP +.B Top +returns the top of message +.IR m . +.PP +.B Get +returns the full text of message +.IR m . +.PP +.B Delete +deletes message +.IR m . +.PP +.B Close +closes the connection to the POP3 server. +Note that subsequent reconnections to the server +may renumber the messages in the mail box and will certainly do so if the last connection +deleted messages. +.PP +Note also that a connection is static in the sense that mail messages entering the server during +a connection will not be accessible. A reconnection is needed to see newly arrived messages. +.SH SOURCE +.B /appl/lib/pop3.b +.SH SEE ALSO +.IR acme (1) +.SH DIAGNOSTICS +All these functions return -1 +and an error message on failure as the first two entries in their return tuples. diff --git a/man/2/popup b/man/2/popup new file mode 100644 index 00000000..731ced36 --- /dev/null +++ b/man/2/popup @@ -0,0 +1,102 @@ +.TH POPUP 2 +.SH NAME +Popup: mkbutton, changebutton, event, add \- popup list box pseudo-widget +.SH SYNOPSIS +.EX +include "popup.m"; +popup := load Popup Popup->PATH; + +init: fn(); +mkbutton: fn(win: ref Tk->Toplevel, name: string, + items: array of string, n: int): chan of string; +changebutton: fn(win: ref Tk->Toplevel, name: string, + items: array of string, n: int); +event: fn(win: ref Tk->Toplevel, e: string, + items: array of string): int; +add: fn(items: array of string, s: string): + (array of string, int); +.EE +.SH DESCRIPTION +.B Popup +implements popup list boxes as Tk pseudo-widgets. +This module has since been superseded by +.IR choicebutton (2) +in Tk itself, but remains for the moment for compatibility. +.PP +.B Init +must be called once to initialise the module. +.PP +.B Mkbutton +creates a new button +.IR name , +in Tk toplevel +.IR win . +It returns a channel on which it delivers events (see +.BR event , +below). +Once created, +.I name +can be packed like any other Tk widget. +When the button is pressed with button 1, +a menu pops up offering a choice from the given +.IR items . +The value +.I n +is the index in +.I items +of the button's initial value. +The current choice is always displayed in the button. +If +.I items +is nil or an empty array, the string +.RB ` ----- ' +is displayed instead. +.PP +Having created a popup button, the application must receive values on +the channel returned by +.B mkbutton +and pass each value it receives to +.BR event +(as parameter +.IR e ). +(Typically the application will receive on the channel in an +.B alt +statement that watches other channels too.) +.B Event +returns the result of a selection, or -1 if no selection was made. +In either case, the text of the button +.I name +will reflect the currently active selection +(the application can fetch it using +.RB ` cget\ -text '). +The +.I items +parameter must match that given to +.B mkbutton +(or most recently given to +.BR changebutton ). +.PP +.B Changebutton +changes the list of +.I items +in an existing popup button +.IR name , +and sets its initial selection to the item with index +.IR n . +.PP +.B Add +adds string +.I s +to the array +.IR items , +if it is not already there, +and in either case returns the resulting new array and +the index of +.I s +therein. +It is useful for calculating a list of items dynamically. +.SH SOURCE +.B /appl/lib/popup.b +.SH SEE ALSO +.IR tabs (2), +.IR tk (2) diff --git a/man/2/prefab-0intro b/man/2/prefab-0intro new file mode 100644 index 00000000..4d0d1776 --- /dev/null +++ b/man/2/prefab-0intro @@ -0,0 +1,75 @@ +.TH PREFAB-INTRO 2 +.SH NAME +Prefab: intro \- Interactive TV tookit +.SH SYNOPSIS +.EX +include "draw.m"; +include "prefab.m"; +prefab := load Prefab Prefab->PATH; +.EE +.SH DESCRIPTION +The +.B Prefab +module contains components for building graphics objects suitable for +Interactive Television (ITV) applications using infrared remote controls. +Using the +.B Draw +module's operations +for simple text and images +(see +.IR draw-intro (2)), +the toolkit can group individual items, +treat those groups as units, and then activate the +items on command. +The other user interface toolkit, +.IR tk (2), +provides facilities for keyboard- and mouse-driven applications. +.PP +The objects on the screen are of type +.BR Compound , +each of which occupies a unique window on the +display and contains objects of type +.BR Element . +An +.B Element +may be a single object or a list of further +.BR Elements , +to build hierarchically structured components. +.PP +.B Prefab +defines +.B Environ +and +.B Style +types that specify the appearance of objects: their colours, fonts, +backgrounds, and so on. +A +.B Style +gives font and colour information, while +an +.B Environ +identifies the +.B Screen +upon which the items will be displayed and the +.B Style +in which they will be drawn. +.PP +Applications should allocate +.B Elements +and +.B Compounds +only through the appropriate member functions, as described in the corresponding +sections of the manual. +Items created with regular Limbo +definitions will not work properly. +Moreover, except where indicated, +applications should not modify the data members directly. +Although the type definitions make data members visible, +the members should usually be treated as read-only data. +.SH SOURCE +.B /libinterp/prefab.c +.br +.B /libprefab/*.c +.SH SEE ALSO +.IR draw-intro (2), +.IR ir (2) diff --git a/man/2/prefab-compound b/man/2/prefab-compound new file mode 100644 index 00000000..1ca41778 --- /dev/null +++ b/man/2/prefab-compound @@ -0,0 +1,262 @@ +.TH PREFAB-COMPOUND 2 +.SH NAME +prefab: Compound \- windows for ITV toolkit +.SH SYNOPSIS +.EX +include "draw.m"; +include "prefab.m"; +prefab := load Prefab Prefab->PATH; + +Compound: adt +{ + image: ref Draw->Image; + environ: ref Environ; + r: Draw->Rect; + title: ref Element; + contents: ref Element; + + iconbox: fn(env: ref Environ, + p: Draw->Point, title: string, icon, + mask: ref Draw->Image): + ref Compound; + textbox: fn(env: ref Environ, + r: Draw->Rect, title, text: string): + ref Compound; + layoutbox: fn(env: ref Environ, + r: Draw->Rect, title: string, lay: list of Layout): + ref Compound; + box: fn(env: ref Environ, + p: Draw->Point, title, elist: ref Element): + ref Compound; + draw: fn(comp: self ref Compound); + redraw: fn(comp: self ref Compound, r: Draw->Rect); + scroll: fn(comp: self ref Compound, elem: ref Element, + d: Draw->Point); + show: fn(comp: self ref Compound, elem: ref Element): int; + select: fn(comp: self ref Compound, + elem: ref Element, i: int, c: chan of int): + (int, int, ref Element); + tagselect: fn(comp: self ref Compound, + elem: ref Element, i: int, c: chan of int): + (int, int, ref Element); + highlight: fn(comp: self ref Compound, + elem: ref Element, on: int); +}; +.EE +.SH DESCRIPTION +.B Compound +is the data type defining boxes drawn on the screen. +Each appears in a new window, +.BR Compound.image , +and holds a (possibly +.BR nil ) +title +.B Element +and contents +.BR Element . +It occupies the space on +the screen defined by +.BR Compound.r . +Allocating a +.B Compound +creates +a window but does not draw it; +after the +.B Compound +is built, +.B Compound.draw +must be called to make it visible. +Compounds have a border around them, drawn in +.B Style.edgecolor +and contain from top to bottom the title (if any), +a horizontal line (if there is a title), and the contents. +.PP +.TP +.B "Compound.iconbox(\f2env\fP, \f2p\fP, \f2title\fP, \f2icon\fP, \f2mask\fP) +Creates a +.B Compound +whose contents are made by calling +.B Element.icon +(see +.IR prefab-element (2)) +using the +.I icon +and +.IR mask . +The +.BR Compound 's +upper left corner is at +.IR p ; +its size is determined by the size of the +.I icon +and +.IR mask . +.TP +.B "Compound.textbox(\f2env\fP, \f2r\fP, \f2title\fP, \f2text\fP) +Creates a +.B Compound +whose contents are made by calling +.B Element.text +using the supplied +.IR text . +As with +.BR Element.text , +the resulting contents +.B Element +will be actually a list of text +.B Elements +if the text occupies multiple lines on the screen. +The rectangle behaves as in +.BR Element.text . +.TP +.B "Compound.layoutbox(\f2env\fP, \f2r\fP, \f2title\fP, \f2layoutlist\fP) +Like +.BR Compound.textbox , +but based on +.B Element.layout +rather than +.BR Element.text . +.TP +.B "Compound.box(\f2env\fP, \f2p\fP, \f2title\fP, \f2element\fP) +Creates a +.B Compound +whose contents are made from an existing +.BR Element . +To build complex structures, use the +.BR Element -building +functions, +size the +.B Element +appropriately, +and use +.BR Compound.box . +The result is positioned with its upper left corner at +.IR p , +and with size determined by that of the +.BR Element . +.PP +However a +.B Compound +is built, +its size computation makes allowance for the border and title. +Moreover, if the requested size and placement makes part +appear offscreen, the result may be moved to display it better. +.TP +.B Compound.draw() +This function +uses the description of the title and contents to paint the +on-screen image. +It takes no arguments; +all the information is included in the description. +.TP +.BI Compound.redraw( r ) +Like +.BR Compound.draw , +but restricts the drawing to the specified +.B Rect +.IR r . +.PP +.TP +.ft 5 +Compound.select( \f2element\fP, \f2index\fP, \f2c\fP ): (int, int, Element) +.ft 1 +The channel +.I c +is a +.B chan +of +.B int +connected to an IR remote control interface, typically acquired through the program's +.B Context +(see +.IR draw-context (2)). +The +.I element +is contained in the +.BR Compound , +and may be at any level of its structure. +It +is most usefully a list, +but may be a singleton, in which case it behaves like a list of one element. +The arrow keys on the remote control scroll through the members of the list, +using the +.B Style.highlightcolor +associated with each member element to indicate selection. +A +.B Select +key on the remote control triggers +.B select +to return a tuple +.BI ( key , +.IB index , +.IB elem )\f1; +.I key +is the key code of the action (here +.BR Select ), +.I index +is the number of the element in the list (ignoring separators), +and +.I elem +is the list member highlighted when the key was hit. +Any other key returns the same tuple with +.I index +\-1 and the value of the key. +The +.I elem +returned is always the most recently highlighted, +even if the result was not a selection. +When +.B select +returns, it always restores the default appearance of the list. +.PP +.TP +.ft 5 +Compound.tagselect( \f2element\fP, \f2index\fP, \f2c\fP): (int, int, Element) +.ft 1 +Like +.BR Compound.select , +but rather than selecting among all the elements +of a list, it selects among only those elements with +defined +tags in the +structure contained within the specified +.IR element . +.TP +\f5Compound.highlight(\fP\f2element\fP\f5,\ \fP\f2on\fP\f5)\fP +Set the highlighting to be ``on'' or ``off'' +for the +.I element +within the compound. +.TP +\f5Compound.scroll(\fP\f2element\fP\f5,\ \fP\f2d\fP\f5)\fP +Like +.BR Element.scroll : +scroll the +.I element +within the compound. +The updated image is redrawn after the scrolling. +.TP +.ft 5 +\f5Compound.show(\fP\f2element\fP\f5,\ \fP\f2d\fP\f5)\fP +.ft 1 +Like +.BR Element.show : +make sure the +.I element +is visible +within the rectangle of the top-level +.B Element +of the +.BR Compound , +that is, in effect call +.ft 5 +Element.show(Compound.contents, \f2element\fP); +.ft 1 +.SH SOURCE +.B /libinterp/prefab.c +.br +.B /libprefab/*.c +.SH SEE ALSO +.IR prefab-element (2), +.IR prefab-environ (2), +.IR prefab-style (2) diff --git a/man/2/prefab-element b/man/2/prefab-element new file mode 100644 index 00000000..ef35a604 --- /dev/null +++ b/man/2/prefab-element @@ -0,0 +1,468 @@ +.TH PREFAB-ELEMENT 2 +.SH NAME +prefab: Element \- menu and display elements for ITV toolkit +.SH SYNOPSIS +.EX +include "draw.m"; +include "prefab.m"; +prefab := load Prefab Prefab->PATH; + +# types of Elements +EIcon: con 0; +EText: con 1; +ETitle: con 2; +EHorizontal:con 3; +EVertical: con 4; +ESeparator: con 5; + +# first arg to Element.adjust: size of elements +Adjpack: con 10; # leave alone, pack tightly +Adjequal: con 11; # make equal +Adjfill: con 12; # make equal, filling available space + +# second arg: position of element within space +Adjleft: con 20; +Adjup: con 20; +Adjcenter: con 21; +Adjright: con 22; +Adjdown: con 22; + +Layout: adt +{ + font: ref Draw->Font; + color: ref Draw->Image; + text: string; + icon: ref Draw->Image; + mask: ref Draw->Image; + tag: string; +}; + +Element: adt +{ + kind: int; + r: Draw->Rect; + environ:ref Environ; + tag: string; + + # different fields defined for different kinds of Elements + kids: cyclic list of ref Element; # children of elists + str: string; # text in an EText element + mask: ref Draw->Image; # part of Eicon, ESeparator + image: ref Draw->Image; # part of Eicon, ESeparator, EText, Etitle + font: ref Draw->Font; # part of EText, Etitle + + icon: fn(env: ref Environ, r: Draw->Rect, + icon, mask: ref Draw->Image): + ref Element; + text: fn(env: ref Environ, text: string, + r: Draw->Rect, kind: int): ref Element; + layout: fn(env: ref Environ, lay: list of Layout, + r: Draw->Rect, kind: int): ref Element; + elist: fn(env: ref Environ, elem: ref Element, kind: int): + ref Element; + separator: fn(env:ref Environ, r: Draw->Rect, + icon, mask: ref Draw->Image): ref Element; + + append: fn(elist: self ref Element, elem: ref Element): int; + adjust: fn(elem: self ref Element, equal: int, dir: int); + clip: fn(elem: self ref Element, r: Draw->Rect); + scroll: fn(elem:self ref Element, d: Draw->Point); + translate: fn(elem:self ref Element, d: Draw->Point); + show: fn(elist: self ref Element, elem: ref Element): int; +}; +.EE +.SH DESCRIPTION +.B Prefab +.B Elements +are the building blocks of the ITV toolkit. +They represent and display text and pictures that can be grouped in +arbitrary two-dimensional menus to be walked by the infrared remote control. +.B Elements +are packaged within +.B Compounds +(see +.IR prefab-compound (2)) +for display. +.TF environ +.PD +.TP +.B environ +This specifies the element's environment. +.TP +.B image +If the element needs an +.B Image +object (see +.B kind +below), this member specifies it. +.TP +.B kind +The +.B Prefab +module defines six +.B Element +varieties, each labelled by a defined constant in the +.B kind +member. +.RS +.TP +.B EIcon +An image. +.TP +.B EHorizontal +A horizontal list of elements. +.TP +.B ESeparator +An +.B Image +object, like an +.BR EIcon , +but intended to fill space in a list, rather than to serve +as an element of the list. +Separators are ignored when selecting or highlighting list elements. +.TP +.B EText +A single line of text. +Text for this element will be drawn with +.B Style.textfont +and +.BR Style.textcolor . +.TP +.B ETitle +A single line of text, usually giving the title of a +.B Compound +object. +Text for this element will be drawn with +.B Style.titlefont +and +.BR Style.titlecolor . +.TP +.B EVertical +A vertical list of elements. +.RE +.TP +.B mask +When an element contains an +.B Image +object, the +.B Image.draw +function will be used to display it on the screen. +The +.B mask +image is used as an argument to +.BR Image.draw ; +see +.IR draw-intro (2) +for more information. +.TP +.B r +All +.B Elements +are rectangular, occupying the +position on the display specified by +.BR r.min . +The size of the element also depends on +.BR r . +During creation, +if the rectangle is degenerate (has +zero size), the element takes its size from the +sizes of its components: +the image size for icons, text width for strings, etc. +Otherwise, the element's size matches the rectangle. +.TP +tag +The +.B tag +of an element serves two purposes: it allows an element to be labelled +with arbitrary invisible text, and provides a mechanism to control which +elements of a list may be selected: see the description of +.B Compound.tagselect +in +.IR prefab-compound (2). +The +.B tag +field of an element may be modified freely after the element is created. +.TP +.BI icon( env\fP,\fP\ r\fP,\fP\ icon\fP,\fP\ mask ) +Build one +.B EIcon +element to be drawn with the +.I icon +and +.IR mask . +The rectangle, +.IR r , +gives the element's position and size. +.TP +.BI text( env\fP,\fP\ text\fP,\fP\ r\fP,\fP\ kind ) +Build a textual element or a list of textual elements. +.I Kind +may be +.B EText +or +.BR ETitle , +determining the style of the drawn +.IR text . +The resulting +.B Element +object may be a single element or a +.B EVertical +list of the appropriate kind, if the text occupies +more than one line. +The text is folded as necessary to +accommodate the available horizontal space; newlines in +the text cause line breaks. +The width of the +text is determined by +.IR r , +but if +.I r +has no width, it will be +set by the text itself. +The height of the Element is also +determined by +.IR r ; +again, if the height of +.I r +is zero, the Element will be made as tall as necessary (if +.I r +is not tall enough, the rest of the text may be made visible +by calls to +.BR Element.scroll ). +Thus one may choose +a specific size or let the +.I text +determine the size by setting +.I r +suitably. +.TP +.BI layout( env\fP,\fP\ lay\fP,\fP\ r\fP,\fP\ kind ) +Like +.BR Element.text , +but builds a structure using the contents of the list +.I lay +of +.B Layout +structures. The +.B Layout +type +allows construction of a more general form of textual display +by providing fine control over the font and colour in which to +display text and the inclusion of images as textual elements. +It also allows setting of the +.B tag +for each component of the resulting element or list of elements. +If the +.B Layout +has a +.RB non- nil +.B image +field, it is taken as a description of a +picture to be incorporated in the text as an +.B EIcon +element (and the +.B text +field is ignored); +otherwise the +.B text +field specifies the text to be drawn in the indicated +.B font +and +.BR color . +As with +.BR Element.text , +.B Element.layout +does all the geometry management, text line breaking and folding, etc. +.TP +.BI elist( env\fP,\fP\ elem\fP,\fP\ kind ) +Start a list of +.B Element +objects. +The +.I kind +may be +.B Prefab\->EHorizontal +or +.BR Prefab\->EVertical , +specifying the orientation of the list. +.I Elem +will be the first element of the list. +It may be +.BR nil , +which creates an empty list of the +requested orientation. +Subsequent +.B Element.append +calls build the list. +.TP +.BI separator( env\fP,\fP\ r\fP,\fP\ icon\fP,\fP\ mask ) +Build one +.B ESeparator +element to be drawn with the +.I icon +and +.IR mask . +The rectangle, +.IR r , +gives the element's position and size. +.TP +.IB elist .append( elem ) +Append one +.BR Element , +.IR elem , +to an existing list, +.IR elist . +The new element will appear after those already +there, either to the right for +.B EHorizontal +or below for +.B EVertical +lists. +.TP +.IB elem .adjust( spacing\fP,\fP\ dir ) +Format the list so its elements abut. +The list-building functions such as +.B append +attempt to build a sensible geometry. +Alternatively, one can build a list using +degenerate geometry and then let +.B adjust +compute the geometry for the whole list. +For example, one could place all the elements +at (0,\ 0) and then call +.B adjust +to decide where the elements belong. +.IP "" +.I Spacing +specifies how the elements fit together: +.RS +.TP +.B Adjequal +Makes them all equal sized in the dimension of the list, +but only as big as the largest element. +For example, if the element is a horizontal list, +all elements will be as wide as the widest item. +If the list is too big for the allocated space, +only some will be visible. +.TP +.B Adjfill +Makes them all equal sized in the dimension of the list, +expanding the elements to fit the space of the list's +.BR Element.r . +If the list is too big for the allocated space, +only some will be visible. +.TP +.B Adjpack +Packs elements as tightly as possible, +using the ``natural'' size of each element +and setting their rectangles against one another. +.RE +.IP "" +.I Dir +controls how each element is placed in its allotted space: +.RS +.TP +.B Adjcenter +Place each element in the middle of its space. +.TP +.B Adjdown +In a vertical list, move each element to the bottom. +.TP +.B Adjleft +In a horizontal list, move each element to the left. +.TP +.B Adjright +In a horizontal list, move each element to the right. +.TP +.B Adjup +In a vertical list, move each element to the top. +.RE +.TP +.IB elem .clip( r ) +The drawing model for +.B Element +objects is that they occupy some space in +the plane, which may be larger or smaller than the space occupied +by its constituent text, icons, sub-elements, etc. +The +.I clip +function sets the rectangle of +.I elem +to +.IR r , +without changing its internal geometry. +Any space made newly visible by this +will be filled in by the list's +.BR Style.elemcolor . +For example, if +.B e +is an icon element just large enough to display its image, +.B e.clip(e.r.inset(-2)) +will make a two-pixel-wide border around the icon when +it is drawn. +As another example, lists are scrolled by leaving their clip +rectangle intact while translating the list elements' coordinates. +.TP +.IB elem .scroll( d ) +.I D +is a +.BR Point , +representing a vector; +.I elem +is an +.B Element +object to be scrolled. +The +.B scroll +function leaves the element's +.B r +alone and translates all the constituent pieces of the list by +.IR d , +causing a different portion of +.I elem +to be visible in its rectangle. +.TP +.IB elem .translate( d ) +Like +.IB elem .scroll( d ), +but moves +.B r +too, thus translating the entire +.B Element +rather than just the visible part within a fixed rectangle. +.TP +.IB elist .show( elem ) +.B Show +does nothing if +.I elem +is not a list. +If it is a list, the list is scrolled +so +.IR elem , +which must be a member of the list, is visible through +.IR elist.r . +.PP +The geometry of elements and the membership of lists +may be modified only through +the provided functions; the Limbo-visible structure is +(intended to be) read-only. +Tags, text, and images may be modified freely +by the application, but at the moment there is no way to recalculate +the geometry if the components of an +textual or image icon change size. +.PP +.B Element +objects are never drawn explicitly, nor are they drawn after any +.B Element +operation. +They are made visible only by calls to +.BR Compound.draw , +described by +.IR prefab-compound (2). +.SH SOURCE +.B /libinterp/prefab.c +.B /libprefab/*.c +.SH SEE ALSO +.IR prefab-compound (2) +.IR prefab-environ (2) +.IR prefab-style (2) diff --git a/man/2/prefab-environ b/man/2/prefab-environ new file mode 100644 index 00000000..0f5a26e9 --- /dev/null +++ b/man/2/prefab-environ @@ -0,0 +1,54 @@ +.TH PREFAB-ENVIRON 2 +.SH NAME +prefab: Environ \- environment for ITV toolkit +to provide a graphics framework for a collection of items +.SH SYNOPSIS +.EX +include "draw.m"; +include "prefab.m"; +prefab := load Prefab Prefab->PATH; + +Environ: adt +{ + screen: ref Draw->Screen; + style: ref Style; + +}; +.EE +.SH DESCRIPTION +The +.B Environ +type collects the +.B Style +and +.B Screen +types necessary to specify how and where to draw +.B Prefab +items. +.TP 10 +.B screen +Specifies the +.B Screen +upon which items will be displayed. +.TP +.B style +Specifies the +.B Style +for items in an environment. +To draw various items in different fonts or colors, +the application should associate different +.B Environ +objects with the various. +(But see also the +.B layout +functions in +.IR prefab-element (2) +and +.IR prefab-compound (2)). +.SH SOURCE +.B /libinterp/prefab.c +.B /libprefab/*.c +.SH SEE ALSO +.IR prefab-intro (2), +.IR draw-screen (2), +.IR prefab-style (2) diff --git a/man/2/prefab-style b/man/2/prefab-style new file mode 100644 index 00000000..d3b90153 --- /dev/null +++ b/man/2/prefab-style @@ -0,0 +1,95 @@ +.TH PREFAB-STYLE 2 +.SH NAME +prefab: Style \- fonts and colours for ITV toolkit +.SH SYNOPSIS +.EX +include "draw.m"; +include "prefab.m"; +prefab := load Prefab Prefab->PATH; + +Style: adt +{ + titlefont: ref Draw->Font; + textfont: ref Draw->Font; + elemcolor: ref Draw->Image; + edgecolor: ref Draw->Image; + titlecolor: ref Draw->Image; + textcolor: ref Draw->Image; + highlightcolor: ref Draw->Image; +}; +.EE +.SH DESCRIPTION +The +.B Style +type collects the font and colour information for an application or a set of +items within an application. Except when using the +.B layout +routines (see +.IR prefab-compound (2) +and +.IR prefab-element (2)), +the members of a +.B Style +are the only way to control the appearance of +.B Prefab +items. +Note that although the +.RB `... color' +members of +.B Style +in practice often refer to a literal colour (a single replicated pixel of colour), +they can be any image. +.PP +.B Styles +are allocated by regular Limbo definitions; there is no allocation function. +All the members of a +.B Style +must be defined. +Although it will not cause errors to modify the members of a +.B Style +after it has been created and passed to a +.B Prefab +routine, the results may be unpredictable. +.PP +.TP 10 +.B edgecolor +This +.B Image +specifies how to draw the edges, or borders, of compounds. +.TP +.B elemcolor +This +.B Image +specifies how to draw the base, or background, of elements and compounds. +.TP +.B highlightcolor +This +.B Image +specifies the colour to use to highlight a selected element. +.TP +.B textcolor +This +.B Image +specifies the colour in which to draw an item's regular text. +.TP +.B textfont +This +.B Font +specifies the font in which to draw an item's regular text. +.TP +.B titlecolor +This +.B Image +specifies the colour in which to draw an item's title text. +.TP +.B titlefont +This +.B Font +specifies the font in which to draw an item's title text. +.SH SOURCE +.B /libinterp/prefab.c +.br +.B /libprefab/*.c +.SH SEE ALSO +.IR prefab-intro (2), +.IR prefab-environ (2) diff --git a/man/2/print b/man/2/print new file mode 100644 index 00000000..575ede77 --- /dev/null +++ b/man/2/print @@ -0,0 +1,341 @@ +.TH PRINT 2 +.SH NAME +Print \- printing system +.SH SYNOPSIS +.EX +include "print.m"; +print := load Print Print->PATH; + +Print: module +{ + PATH: con "/dis/lib/print/print.dis"; + CONFIG_PATH: con "/lib/print/"; + + init: fn(): int; + set_printfd: fn(fd: ref Sys->FD); + print_image: fn(p: ref Printer, display: ref Draw->Display, im: ref Draw->Image, pcwidth: int): int; + print_textfd: fn(p: ref Printer, fd: ref Sys->FD, ps: real, pr: int, wrap: int): int; + get_defprinter: fn(): ref Printer; + set_defprinter: fn(p: ref Printer); + get_size: fn(p: ref Printer): (int, real, real); # dpi, xinches, yinches + get_printers: fn(): list of ref Printer; + get_papers: fn(): list of ref Paper; + save_settings: fn(): int; + +# Printer types + +Ptype: adt { + name: string; + modes: list of ref Pmode; + driver: string; + hpmapfile: string; +}; + +# Paper sizes + +Paper: adt { + name: string; + hpcode: string; + width_inches: real; + height_inches: real; +}; + + + +# Print modes + +Pmode: adt { + name: string; + desc: string; + resx: int; + resy: int; + blackdepth: int; + coldepth: int; + blackresmult: int; +}; + +# Print options + +Popt: adt { + name: string; + mode: ref Pmode; + paper: ref Paper; + orientation: int; + duplex: int; +}; + +# Printer instance + +PORTRAIT: con 0; +LANDSCAPE: con 1; + +DUPLEX_OFF: con 0; +DUPLEX_LONG: con 1; +DUPLEX_SHORT: con 2; + +Printer: adt { + name: string; + ptype: ref Ptype; + device: string; + popt: ref Popt; + pdriver: Pdriver; +}; + +}; + + +Pdriver: module +{ + PATHPREFIX: con "/dis/lib/print/"; + DATAPREFIX: con "/lib/print/"; + + init: fn(debug: int); + sendimage: fn(p: ref Print->Printer, tfd: ref Sys->FD, display: ref Draw->Display, im: ref Draw->Image, width: int, lmargin: int): int; + sendtextfd: fn(p: ref Print->Printer, pfd, tfd: ref Sys->FD, ps: real, pr: int, wrap: int): int; + printable_pixels: fn(p: ref Print->Printer): (int, int); + +}; + + +.EE +.SH DESCRIPTION +The +.I Print +module provides an interface to one or more printers. +.SS "The Print module" +.TP +.BI init() +.B Init +must be called once to initialise the internal state of +.BR Print . +.TP +.BI set_printfd( fd ) +.B set_printfd +provides a file descriptor to be used for output. By default, output is sent to the file or device +specified in the +.B Printer +adt. +.TP +.BI print_image( p, display, im, pcwidth ) +.B print_image +prints a page containing a single image. The image is centred horizontally, and is scaled up to fill the percentage of the available +width specified by +.I pcwidth. +.TP +.BI print_textfd( p, fd, ps, pr, wrap ) +.B print_textfd +prints one or more pages of text on printer +.I p +from the file open for reading on +.I fd. +The point size is controlled by +.I p. +If the printer does not support the specified point size an alternative size will be used. +A point size of 0.0 can be used to select the printer's default size (usually 12 point). +If +.I pr is non-zero, a proportionally-spaced font will be used (if available). +If +.I wrap +is non-zero, lines will be wrapped if they overflow the page width (if this feature is supported by the printer). +.TP +.BI get_defprinter( ) +.B get_defprinter +returns the default printer (in +.I /lib/print/defprinter). +.TP +.BI set_defprinter( p ) +.B set_defprinter +sets the default printer (in +.IR /lib/print/defprinter ). +.TP +.BI get_size( p ) +.B get_size +returns the resolution in dots per inch and the total number of pixels available for printing in the x and y direction. +Before calling this function the +.I orientation +should be set if required. +.TP +.BI get_printers( ) +.B get_printers +returns a list of all available printers (in +.I /lib/print/printer.cfg). +.TP +.BI get_papers( ) +.B get_papers +returns a list of all available paper sizes (in +.I /lib/print/paper.cfg). +.SS "Data Structures" +.TP +.BI Ptype + - specifies a Printer Type, with fields: +.RS +.PD +.TP +.B name: +Name used to refer to this printer type +.TP +.B desc +Description +.TP +.B modes +List of supported print modes +.TP +.B driver: +The .dis file specification of the printer driver +.TP +.B hpmapfile: +For HP printers, the name of the color map file +.RE +.TP +.BI Paper + - specifies the dimensions of a type of paper +.RS +.PD +.TP +.B name: +Name used to refer to this paper size +.TP +.B hpcode: +For HP printers, PCL code used for this paper size +.TP +.B width_inches: +Width of paper in inches +.TP +.B height_inches: +Height of paper in inches +.RE +.TP +.BI Pmode + - specifies a print mode +.RS +.PD +.TP +.B name: +Name used to refer to this print mode +.TP +.B desc: +Description +.TP +.B resx: +X resolution in dots per inch +.TP +.B resx: +Y resolution in dots per inch +.TP +.B blackdepth: +Depth of black component in bytes +.TP +.B coldepth: +Depth of color components in bytes +.TP +.B blackresmult: +Resolution multiplier of black component (1 means same as base x resolution) +.RE +.TP +.BI Popt + - specifies a set of Print Options +.RS +.PD +.TP +.B name: +Name of a Printer to which these print options apply +.TP +.B mode: +The name of a print mode +.TP +.B paper: +The name of a paper size +.TP +.B orientation: +Paper orientation - either PORTRAIT or LANDSCAPE +.TP +.B duplex (NB DUPLEX IS NOT CURRENTLY SUPPORTED): +Duplex setting - DUPLEX_OFF or DUPLEX_SHORT or DUPLEX_LONG +.RE +.TP +.BI Printer + - specifies a printer instance +.RS +.PD +.TP +.B name: +Name used to refer to this printer +.TP +.B ptype: +The printer type +.TP +.B device: +The name of the file to be used for output (eg /dev/lpt1data) +.TP +.B popt: +The print options +.TP +.B driver: +The printer driver module handle +.RE +.SS "Configuration Files" +.PP +There are configuration files to initialize the Printer Types, Print Modes, Paper Sizes Printers and Print Modes. +They all have a similar format, with fields corresponding to the relevant adt. +Here is an extract from the +.I paper.cfg +file: +.PP +.EX +A4= + hpcode=26 + width_inches=8.3 + height_inches=11.7 +A5= + hpcode=25 + width_inches=4.15 + height_inches=5.85 +.EE +.PP +Aliases can also be defined, such as +.PP +.EX +myA4=A4 +.EE +.PP +The final configuration file, +.B defprinter, +just contains the name of the default printer. +.SH FILES +.TP +.B /lib/print/*.map +HP color maps. +.TP +.BI /lib/print/ptype.cfg +Print Type configuration file. +.TP +.BI /lib/print/pmode.cfg +Print Mode configuration file. +.TP +.BI /lib/print/paper.cfg +Paper Size configuration file. +.TP +.BI /lib/print/printer.cfg +Printer Instance configuration file. +.TP +.BI /lib/print/popts.cfg +Print options configuration file. +.TP +.BI /lib/print/defprinter +Holds the name of the default printer. Not needed if there is only one printer available. +.SH SOURCE +.TF /appl/lib/print/print.b +.TP +.B /appl/lib/print/print.b +Implementation of the +.B Print +module. +.TP +.B /appl/lib/print/*_driver.b +Printer-specific driver modules +.TP +.B /appl/lib/print/scaler.b +Scaler module +.SH SEE ALSO +.IR draw-image (2), +.IR image (6) diff --git a/man/2/prof b/man/2/prof new file mode 100644 index 00000000..a8d59966 --- /dev/null +++ b/man/2/prof @@ -0,0 +1,225 @@ +.TH PROFILE 2 +.SH NAME +profile \- profiling library +.SH SYNOPSIS +.EX +include "profile.m"; + +profile := load Profile Profile->PATH; + +Range: adt{ + l: int; + u: int; + f: int; + n: cyclic ref Range; +}; + +Funprof: adt{ + name: string; + line: int; + count: int; + counte: int; +}; + +Modprof: adt{ + name: string; + path: string; + srcpath: string; + rawtab: array of (int, int); + linetab: array of int; + rngtab: array of ref Range; + funtab: array of Funprof; + total: int; + totals: array of int; + covered: int; +}; + +Prof: adt{ + mods: list of Modprof; + total: int; + totals: array of int; +}; + +Coverage: type list of (string, int, list of (list of (int, int, byte), string)); + +MODULE: con 1; # give stats for each module +FUNCTION: con 2; # give stats for each function +LINE: con 4; # give stats for each line +VERBOSE: con 8; # full stats +FULLHDR: con 16; # file:lineno: on each line of output +FREQUENCY: con 32; # show frequency rather than coverage + +init: fn(): int; +profile: fn(m: string): int; +sample: fn(i: int): int; +start: fn(): int; +stop: fn(): int; +stats: fn() : Prof; +show: fn(p: Prof, v: int): int; +end: fn(): int; + +# coverage profiling specific functions + +cpstart: fn(pid: int): int; +cpstats: fn(rec: int, v: int): Prof; +cpfstats: fn(v: int): Prof; +cpshow: fn(p: Prof, v: int): int; + +coverage: fn(p: Prof, v: int): Coverage; + +# memory profiling specific functions + +memstart: fn(): int; +memstats: fn(): Prof; +memshow: fn(p: Prof, v: int): int; + +lasterror: fn(): string; +.EE +.SH DESCRIPTION +.B Profile +provides an interface to the kernel profile device. It contains routines to start and stop +profiling, to gather profiling statistics and to display these statistics in relation to the +relevant limbo source code. All of these routines apart from +.B lasterror +return a negative integer if an error occurred during their execution. Once this +happens, a call to +.B lasterror +will give the error message. +.PP +.B init +initializes the module and binds the kernel profile device onto the /prof directory. +It should be called before any other functions in this module. +.PP +.B profile +takes a module name or a path name as its argument and indicates a module to be profiled. +Repeated calls of this function allow a number of modules to be profiled together. +In the absence of any calls to this routine, the profile device profiles all modules +loaded by the kernel. +.PP +.B sample +sets the sampling interval of the profiling. The argument is in ms. The default value +in the profile device is 100ms. +.PP +.B start +starts profiling. +.PP +.B stop +stops profiling. +.PP +.B stats +returns profiling statistics. It is recommended that this is called once profiling has +been stopped, otherwise the results may be slightly inaccurate. It returns an adt +of type +.B Prof. +Its first field +.B mods +is a list of profile statistics for each module under profile. +Its second field +.B total +is the number of samples made altogether. The statistics for each module are +represented in the +.B Modprof +adt. Its fields are +.TP 10n +.B name +The name of the module. +.TP 10n +.B path +The path of the module's corresponding dis file. +.TP 10n +.B srcpath +The path of the module's corresponding source file. +.TP 10n +.B linetab +The line frequency count table. The number of samples made on a particular line of +the above source file is found by indexing this table. +.TP 10n +.B funtab +The function frequency count table. This array of +.B Funprof +adt gives the name, line number and number of samples made for each function in +the above source file. +.TP 10n +.B total +The total number of samples made in this module. +.PP +.B stats +will ignore modules if it fails to locate the symbol (.sbl) file for a particular dis file. +.PP +.B show +simply prints out the profile information returned by +.B stats. +For each module it will print out either the line number statistics or the function +statistics or both. The former gives the line number, percentage of time spent on +this line and the source code for each line in the source file. The latter gives the +line number, function name and percentage of time spent in this function for each +function in the source file. The amount of output can be controlled by the second +argument to +.B show. +The following should be ored together in the required combination to get the +desired effect. +.PP +.TP 10n +.B FUNCTION +Print the function table. +.TP 10n +.B LINE +Print the line number table. +.TP 10n +.B VERBOSE +Normally lines and functions are not shown if the sample frequency for them is +zero. This option prevents this. +.TP 10n +.B FULLHDR +Prints the file name as well as the line number in a form that can be selected in +.B acme +to show that particular line in a window. +.PP +.B show +will ignore modules if it fails to locate the source (.b) file for a particular dis file. +.PP +.B end +ends the profiling session. This should be called when all statistics have been +gathered in order to clean up the device profile's data structures. +.PP +In order to support coverage profiling as well the following new routines are +provided. +.PP +.B cpstart +Start coverage profiling on the process whose pid is given. +.PP +.B cpstats +Returns coverage profiling statistics from the profile device. If the first argument is +true, the raw results will be stored in a profile file whose name is <file>.prf where +<file> is the prefix of the corresponding dis file. +.PP +.B cpfstats +Returns coverage profiling statistics from any saved profile files. +.PP +.B cpshow +Shows the coverage profiling statistics. +.PP +.B coverage +Given the coverage profiler statistics this returns the list of modules profiled. Each module +has a name, a boolean indicating whether all instructions in the module were executed and a +list of lines. Each line consists of a list of ranges and the source code. +The list of ranges contains the character positions on the line of code corresponding to instructions that were not executed and an indicator of whether +partial execution was performed. +.PP +For the further support of memory profiling the following routines are available. +.PP +.B memstart +Start memory profiling. +.PP +.B memstats +Return the memory profile statisics. +.PP +.B memshow +Send memory profile statistics to standard output. +.PP +.SH SOURCE +.B /module/profile.m +.br +.B /appl/lib/profile.b +.SH SEE ALSO +.IR prof (3) diff --git a/man/2/pslib b/man/2/pslib new file mode 100644 index 00000000..47d04696 --- /dev/null +++ b/man/2/pslib @@ -0,0 +1,46 @@ +.TH PSLIB 2 +.SH NAME +pslib - postscript generation +.SH SYNOPSIS +.EX +include "pslib.m"; +pslib := load Pslib Pslib->PATH; + +init: fn(bufio: Bufio); +writeimage: fn(f: ref Bufio->Iobuf, + img: ref Draw->Image, dpi: int): string; +.EE +.SH DESCRIPTION +.B Pslib +must first be initialised by calling +.B Init +with a loaded Bufio module. +.B Writeimage +writes a Postscript file containing the data within +.I img +to +.IR f , +which should first have been opened for writing +by +.IR bufio . +.I Dpi +is a value specifying the pixel width of pixels in +.IR img ; +the width (and height) of +.I dpi +dots in +.I img +will be one inch when the Postscript is +rendered. +.SH SOURCE +.B /appl/lib/pslib.b +.SH SEE ALSO +.IR bufio (2), +.IR draw-image (2) +.SH BUGS +The resulting Postscript is really only suitable for +use as encapsulated Postscript, as there's no way +to set the destination paper size. +.PP +There should be many more useful functions +in this module. diff --git a/man/2/rand b/man/2/rand new file mode 100644 index 00000000..a07a37fa --- /dev/null +++ b/man/2/rand @@ -0,0 +1,35 @@ +.TH RAND 2 +.SH NAME +rand \- pseudo random number generation +.SH SYNOPSIS +.EX +include "rand.m"; +rand = load Rand Rand->PATH; + +init: fn(seed: int); +rand: fn(modulus: int): int; +bigrand: fn(modulus: big): big; +.EE +.SH DESCRIPTION +.B Init +initialises the pseudo-random number generator +with +.IR seed ; +subsequent calls to +.B rand +and +.B bigrand +return a pseudo-random sequence of integers +or bigs respectively, between 0 and +.IR modulus \-1. +.I Modulus +should be a non-negative integer; +for +.BR bigrand , +it should be less than 2^53. +.SH SOURCE +.B /appl/lib/rand.b +.SH SEE ALSO +.IR security-random (2) +.SH BUGS +The quality of the algorithm currently used is questionable. diff --git a/man/2/readdir b/man/2/readdir new file mode 100644 index 00000000..c7acb7ec --- /dev/null +++ b/man/2/readdir @@ -0,0 +1,101 @@ +.TH READDIR 2 +.SH NAME +readdir \- read directory and sort files +.SH SYNOPSIS +.EX +include "readdir.m"; +readdir := load Readdir Readdir->PATH; + +NAME, ATIME, MTIME, SIZE, NONE: con iota; +COMPACT: con (1<<4); +DESCENDING: con (1<<5); +init: fn(path: string, sortkey: int): (array of ref Sys->Dir, int); +readall: fn(fd: ref Sys->FD, sortkey: int): (array of ref Sys->Dir, int); +sortdir: fn(a: array of ref Sys->Dir, key: int): (array of ref Sys->Dir, int); +.EE +.SH DESCRIPTION +.B Readdir +provides functions to read and sort the contents of a directory. +Each function +returns its result as a tuple that represents the +directory contents as an array of references to +.B Sys->Dir +values, one per file +(see +.IR sys-stat (2) +for a description of +.BR Dir ). +The integer element of the tuple is the number of entries +returned, or \-1 if there was an error reading the directory. +.B Readdir +differs from +.I sys-dirread (2) +in returning the contents of the whole directory, not just a chunk of it, +and in allowing the result to be sorted. +.PP +.B Init +is most often used: it +reads the contents of the directory +.I path +and sorts the resulting array according to +.IR sortkey . +.PP +The sorting criteria for the returned array are based on +.I sortkey +as follows: +.PP +.TF MTIME +.PD +.TP +.B NAME +Sort files alphabetically by name. +.TP +.B ATIME +Sort files by access time, most recently accessed first. +.TP +.B MTIME +Sort files by modification time, most recently modified first. +.TP +.B SIZE +Sort files by size, largest file first. +.TP +.B NONE +Files are left in directory order, unsorted. +.PP +If the value +.B DESCENDING +is or'd into any of the values above, except +.BR NONE , +the order of sorting is reversed. +.PP +The sort used is stable, of particular importance in the presence of +duplicate names in a union mount. +If the value +.B COMPACT +is or'd into any of the values above, including +.BR NONE , +only the first (outermost) entry with a given name will be returned from reading +a union mount, if names are duplicated in the union. +.PP +.B Readall +reads file descriptor +.I fd +which must be open on a directory, +and returns the contents after applying +.I sortkey +as described above for +.BR init . +.PP +.B Sortdir +sorts the array +.I a +according to the given +.IR key , +as defined earlier, except that +the +.B COMPACT +option has no effect. +.SH SOURCE +.B /appl/lib/readdir.b +.SH SEE ALSO +.IR sys-dirread (2) diff --git a/man/2/regex b/man/2/regex new file mode 100644 index 00000000..cddc08b5 --- /dev/null +++ b/man/2/regex @@ -0,0 +1,108 @@ +.TH REGEX 2 +.SH NAME +regex \- regular expression recognizer module +.SH SYNOPSIS +.EX +include "regex.m"; +regex := load Regex Regex->PATH; + +compile: fn(e: string, flag: int): (Re, string); +execute: fn(x: Re; s: string): array of (int,int); +executese: fn(x: Re, s: string, se: (int, int), bol: int, eol: int): + array of (int, int); +.EE +.SH DESCRIPTION +Regular expressions are defined by +.IR regexp (6). +.B Compile +returns (as the first element of the result tuple) +a compiled form of the regular expression given in string +.IR e . +If +.I e +is not a valid regular expression, +.B compile +returns the tuple +.BI "(nil" ", diag" ) +where +.I diag +is a diagnostic string. +The effect of +.I flag +is described below. +.PP +.B Execute +matches the compiled regular expression +.I x +against string +.I s. +It returns +.B nil +on no match, otherwise it returns an array. +The element with index 0 gives the character positions +of the first character of some longest leftmost match and +the first character beyond the match. +If the compilation +.I flag +was 0, there are no more elements. +If +.I flag +was 1, there is one element for each pair of +parentheses in the regular expression, counting +left parentheses left to right starting at 1. +The +.IR n th +element gives the position of the last match to the +.IR n th +parenthesized subexpression, or (\-1,\-1) if the subexpression +does not participate in the overall match. +.PP +.B Executese +is similar to +.B execute +but allows the start and end points in the string to be specified, +as tuple +.IR se : +.BI ( "start , end" ) , +where +.I start +is the index in +.I s +of the initial character to be matched, +and +.I end +is the index in +.I s +of the first character beyond the substring to be matched +(and can be the length of +.IR s ). +If +.I bol +is non-zero, the +initial character is at the beginning of a line, +allowing an initial match by the regular expression operator +.RB ` ^ '; +if +.I eol +is non-zero, the +last character is at the end of a line, allowing a match +by the operator `\f5$\fP'. +.SH EXAMPLES +.EX +(re, nil) := regex->compile("(thick )*(chocolate |raspberry )?"+ + "(topp|fill)ing", 0); + +(re, nil) := regex->compile("[ABCb-z]+", 0); +a := regex->execute(re, s:="aAbBcCdD"); +(beg, end) := a[0]; +s[beg:end] == "AbBcCd"; + +(re, nil) := regex->compile("a*b*", 0); +a := regex->execute(re, "bbaabb"); +(beg, end) := a[0]; +(beg, end) == (0,2); +.EE +.SH SOURCE +.B /appl/lib/regex.b +.SH SEE ALSO +.IR regexp (6) diff --git a/man/2/registries b/man/2/registries new file mode 100644 index 00000000..526e1c13 --- /dev/null +++ b/man/2/registries @@ -0,0 +1,318 @@ +.TH REGISTRIES 2 +.SH NAME +registries \- access services registry +.SH SYNOPSIS +.EX +include "registries.m"; +registries := load Registries Registries->PATH; + +init: fn(); + +Attributes: adt { + attrs: list of (string, string); + + get: fn(a: self ref Attributes, attr: string): string; + set: fn(a: self ref Attributes, attr, val: string); + new: fn(attrs: list of (string, string)): ref Attributes; +}; + +Attached: adt { + fd: ref Sys->FD; # connection to the service + signerpkhash: string; # hash of signer's key + localuser: string; # user name here + remoteuser: string; # user name there +}; + +Service: adt { + addr: string; # dial this to connect to the service + attrs: ref Attributes; # service description + + attach: fn(s: self ref Service, user: string, + keydir: string): ref Attached; +}; + +Registered: adt { + addr: string; # address where registered + reg: ref Registry; # registry where registered + fd: ref Sys->FD; # file representing registration entry +}; + +Registry: adt { + dir: string; + + new: fn(dir: string): ref Registry; + connect: fn(svc: ref Service, user: string, keydir: string): + ref Registry; + services: fn(r: self ref Registry): + (list of ref Service, string); + find: fn(r: self ref Registry, a: list of (string, string)): + (list of ref Service, string); + register: fn(r: self ref Registry, addr: string, + attrs: ref Attributes, persist: int): + (ref Registered, string); + unregister: fn(r: self ref Registry, addr: string): string; +}; +.EE +.SH DESCRIPTION +.B Registries +helps access and update the contents of one or more +.I registry (4) +servers. +Each registry lists services, each described by a set of attribute/value pairs. +The attributes need not identify the service uniquely. +.PP +.B Init +must be called before any other function in the module. +.PP +.B Attributes +represents a set of attribute/value pairs; +a given attribute name cannot appear more than once. +It provides the following members and operations: +.TF attrs +.PD +.TP +.B attrs +The current value of the set, as a list of +.BI ( attr , value ) +tuples. +.TP +.BI Attributes.new( attrs ) +Return a new +.B Attributes +value given +.IR attrs , +a list of +.BI ( attr , value ) +tuples. +.TP +.IB a .get( attr ) +Return the value of +.I attr +in attribute set +.IR a . +.TP +.IB a .set( attr\fB,\fP\ value ) +Set the +.I value +of +.I attr +in attribute set +.IR a . +.PP +A +.B Service +value represents a service registered in some registry. +It has the following members and operations: +.TF attrs +.PD +.TP +.B addr +A string that represents where the service can be reached: it is often a +.IR sys-dial (2) +address string, but might be a name in the name space; the interpretation is internal to +.BR Registries . +.TP +.B attrs +The service's attributes (complete service description). +.TP +.IB svc .attach( user , keydir ) +Attempts to attach to the service +.IR svc , +and if successful returns an +.B Attached +value to represent the connection; +otherwise returns nil and sets the system error string. +.I User +is the local name of the user making the connection; if nil, the contents of +.B /dev/user +are used by default. +.I Keydir +is the name of a directory containing the +.IR user 's +certified keys for authentication; if nil, the default is +.BI /usr/ user /keyring. +If an error occurs, the return value is nil and the system error string contains a diagnostic. +Not all services demand authentication, and either or both values can be nil to +select suitable defaults. +If authentication is done, the certified data determines the remote identity, not +.IR user , +which is used only to help find a suitable set of keys and has no effect on security. +.PP +.B Attached +holds data about an active connection to a particular service. +(There can be several distinct connections to the same +.BR Service .) +It provides the following members: +.TF attrs +.PD +.TP +.B fd +A file descriptor that can be read and written to exchange data with the service. +The meaning of the data depends on the service (eg, it might be a Styx connection +or a SOAP implementation). +Typically an attribute of the service description hints at the protocol. +.TP +.B signerpkhash +A hexadecimal string giving the SHA-1 hash of the key of the signer used for +mutual authentication (ie, its thumbprint); if no authentication was needed or +did not use public key methods, it is nil. +.TP +.B localuser +If authentication was required, the name used as the local name for authentication; +otherwise nil. +.TP +.B remoteuser +If authentication was required, the remote identity for this connection; otherwise nil. +.PP +A service provider registers using one of the +.B Registry +functions listed below. +An active registration is represented by a value of type +.BR Registered : +.TF attrs +.PD +.TP +.B addr +Location of service, as registered. +.TP +.B reg +The registry that registered the service. +.TP +.B fd +File descriptor open for on the service file in +.IR registry (4) +that holds the service description. +Unless the service has a non-zero +.B persist +attribute, the service registration will be removed when this file is closed +(eg, when this +.B Registration +value is freed by the garbage collector if there is no other copy of +.BR fd ). +The file can be written as described in +.IR registry (4) +to change the some or all of current set of attributes and/or values +in the service description. +.PP +A +.B Registry +represents a connection to a single +.IR registry (4) +instance. +It provides the following members and operations: +.TF attrs +.PD +.TP +.B dir +Location of the registry in the name space. +.TP +.BI Registry.new( dir ) +Return a new +.B Registry +value for the registry located at +.I dir +in the name space; if +.I dir +is nil, the default is +.BR /mnt/registry . +.TP +.BI Registry.connect( svc\fB,\fP\ user\fB,\fP\ keydir ) +Connect to the registry at the location determined by the service description +.IR svc ; +if +.I svc +is nil, the default is to try +.IR sys-dial (2) +to +.BR net!$registry!registry , +the symbolic name of the default registry for the current host. +(The registry might or might not be local.) +Attributes of +.I svc +determine the method used to connect to the registry and whether authentication is required. +.I User +and +.I keydir +provide user name and certificate directory (see +.IR getauthinfo (8)) +if authentication is required; either or both can be nil to select the defaults for the given authentication method. +On successful connection, +.B connect +returns a +.B Registry +value that can subsequently be used to access that registry and its services. +It returns nil on an error and sets the system error string. +.TP +.IB reg ".services()" +Returns a tuple +.BI ( svcs , err ) +where +.I svcs +is a list of +.B Service +values, one for each service registered by +.I reg +at time of asking. +If no services are registered, both values are nil. +If an error occurred, +.I svcs +is nil but +.I err +is a diagnostic string. +.TP +.IB reg .find( attrs ) +Return a tuple +.BI ( svcs , err ) +where +.I svcs +is a list of +.B Service +values, one for each service registered by +.I reg +that (at time of asking) matched all of the attribute/value pairs in +.IR attrs . +A value of +.B \&"*" +matches any value. +If no services matched, both values are nil. +If an error occurred, +.I svcs +is nil but +.I err +is a diagnostic string. +.TP +.IB reg .register( addr\fB,\fP\ attrs\fB,\fP\ persist ) +Attempts to register with +.I reg +a service named +.I addr +and the given attributes +.IR attrs , +and returns a tuple +.BI ( r , err ) +where +.I r +is a non-nil +.B Registration +value for the entry if successful, and +.I err +is a diagnostic otherwise. +.I Persist +is non-zero if the service registration should survive the +.B Registration +value (connection); normally it is zero and the registry entry vanishes when +the service frees the +.B Registration +value. +.TP +.IB reg .unregister( addr ) +Attempt to remove the registration entry at +.I reg +for the service named +.IR addr . +Only the service owner can do so. +Returns nil on success and a diagnostic otherwise. +.SH SEE ALSO +.IR attrdb (2), +.IR registry (4), +.IR svc (8) diff --git a/man/2/scsiio b/man/2/scsiio new file mode 100644 index 00000000..0aa5e0ab --- /dev/null +++ b/man/2/scsiio @@ -0,0 +1,144 @@ +.TH SCSIIO 2 +.SH NAME +ScsiIO: Scsi \- SCSI device operations +.SH SYNOPSIS +.EX +include "scsi.m"; + +scsiio := load ScsiIO ScsiIO->PATH; +Scsi: adt { + inquire: string; + rawfd: ref Sys->FD; + nchange: int; + changetime: int; + + open: fn(devdir: string): ref Scsi; + rawcmd: fn(s: self ref Scsi, cmd: array of byte, + data: array of byte, io: int): int; + cmd: fn(s: self ref Scsi, cmd: array of byte, + data: array of byte, io: int): int; + ready: fn(s: self ref Scsi): int; +}; + +Sread, Swrite, Snone: con iota; + +scsierror: fn(asc: int, ascq: int): string; + +init: fn(verbose: int); +.EE +.SH DESCRIPTION +.B ScsiIO +provides a low-level interface to a SCSI or ATAPI device via +.IR sd (3). +.PP +.B Init +must be called before using any other operation of the module. +If +.I verbose +is non-zero +the module will produce a fair +amount of debugging output on file descriptor 2 +when SCSI commands fail. +.PP +.B Scsi.open +attempts to open the file +.IB devdir /raw +on which to send raw SCSI commands. +On success, it reads the device's inquiry +string and returns a reference to a +.B Scsi +value to represent the connection. +It provides the following operations: +.TP +.IB s .ready() +Sends the ``unit ready'' command up to three times, +returning zero once the unit responds that it is ready, +or \-1 on error. +.TP +.IB s .rawcmd( "cmd, data, io" ) +.PD 0 +.TP +.IB s .cmd( "cmd, data, io" ) +Both these functions execute a single SCSI command on the named device. +The command data is in the byte array +.IR cmd . +If +.I io +is +.BR Sread , +a successful operation will store the resulting bytes in +.IR data , +up to its length, +returning the number of bytes stored. +If +.I io +is +.BR Swrite , +the bytes in +.I data +are transmitted as the data argument to +the command, and the +number of bytes written is returned. +If +.I io +is +.BR Snone , +.I data +is ignored and may be nil. +.B Rawcmd +simply issues the command and +returns the result; +.B cmd +works a bit harder and +is the more commonly used routine. +It attempts to send the commmand; +if it is successful, +.B cmd +returns the result. +Otherwise, +.B cmd +sends a request sense command to +obtain the reason for the failure, +sends a unit ready command in +an attempt to bring the unit out of any +inconsistent states, and tries again. +It also accounts for media change. +If the second try fails, +.B cmd +returns an error. +On error, both functions return \-1 and set the system error string. +.PD +.PP +The +.B nchange +and +.B changetime +elements of +.B Scsi +the number of times a media +change has been detected, and the +first time the current media was detected (the +first time a SCSI command was issued +after it was inserted). +They are maintained by +.BR Scsi.cmd . +The initial SCSI inquiry result is kept in +.BR inquire . +.PP +.I Scsierror +returns a textual description of the SCSI status +denoted by the ASC and ASCQ sense codes. +The description is found by consulting +.BR /lib/scsicodes . +.SH FILES +.TF +.TP +.B /lib/scsicodes +List of textual messages corresponding to SCSI error codes; +consulted by +.BR scsierror . +.SH SOURCE +.B /appl/lib/scsiio.b +.SH SEE ALSO +.IR disks (2), +.IR sd (3) diff --git a/man/2/secstore b/man/2/secstore new file mode 100644 index 00000000..2a14b67a --- /dev/null +++ b/man/2/secstore @@ -0,0 +1,250 @@ +.TH SECSTORE 2 +.SH NAME +secstore \- fetch data from Plan 9's secure storage service +.SH SYNOPSIS +.EX +include "secstore.m"; +secstore := load Secstore Secstore->PATH; + +Maxfilesize: con 128*1024; # default + +init: fn(); +privacy: fn(): int; +cansecstore: fn(addr: string, user: string): int; +mkseckey: fn(pass: string): array of byte; +dial: fn(addr: string): ref Sys->Connection; +auth: fn(conn: ref Sys->Connection, user: string, seckey: array of byte): + (string, string); +connect: fn(addr: string, user: string, seckey: array of byte): + (ref Sys->Connection, string, string); +sendpin: fn(conn: ref Sys->Connection, pin: string): int; +files: fn(conn: ref Sys->Connection): + list of (string, int, string, string, array of byte); +getfile: fn(conn: ref Sys->Connection, name: string, + maxsize: int): array of byte; +.\"putfile: fn(conn: ref Sys->Connection, name: string, data: array of byte,): int; +remove: fn(conn: ref Sys->Connection, file: string): int; +bye: fn(conn: ref Sys->Connection); + +mkfilekey: fn(pass: string): array of byte; +decrypt: fn(data: array of byte, filekey: array of byte): array of byte; +.\"encrypt: fn(data: array of byte, filekey: array of byte): array of byte; +erasekey: fn(key: array of byte); + +lines: fn(file: array of byte): list of array of byte; +.EE +.SH DESCRIPTION +.B Secstore +establishes a secure authenticated connection with a Plan 9 +.I secstore +service (or equivalent, such as Plan 9 from User Space), +that can then be used to fetch and decrypt data files, such as the +.B factotum +file containing the initial keys for an instance of +.IR factotum (4). +The module's functions hold the file descriptors for the connection in a +.BR Sys->Connection +value, +as returned by +.IR sys-dial (2). +The +.I addr +parameter that gives the network address of the +.I secstore +service is also as defined in +.IR sys-dial (2). +A nil value defaults to +.BR "net!$auth!secstore" , +for translation in the usual way by +.IR cs (8). +.PP +.B Init +must be called before invoking any other operation of the module. +.PP +.B Privacy +ensures the memory of the calling process cannot be read, for instance by +.IR prog (3). +It returns zero on success and a negative value on failure. +.PP +.B Cansecstore +returns true if a connection can be made to a +.I secstore +at network address +.IR addr , +and the given +.I user +has a +.I secstore +account; +it returns false otherwise. +.PP +Users authenticate themselves to the service using a secret key and a special protocol that does not +reveal the key itself to the remote service. +The textual secret (eg, password or pass phrase) is not used directly by the following functions, +but only after transformation by +.BR mkseckey , +which hashes it into an array of bytes. +That is the +.I key +parameter to the functions. +.PP +.B Dial +dials the +.I secstore +at network address +.I addr +(as defined by +.IR sys-dial (2)) +and returns a reference to the resulting +.BR Sys->Connection . +It returns nil on an error and sets the error string. +.PP +.B Auth +authenticates a fresh connection as belonging to a given +.I user +of the service. +The parameter +.I conn +refers to the +.B Sys->Connection +value representing the connection. +.I User +names a user registered with the service. +The parameter +.I seckey +is the result of applying +.B mkseckey +to the user's secret. +.I Auth +returns a tuple +.BI ( srvname,\ diag ). +.I Srvname +is the service name configured in the remote host (often simply +.BR secstore ). +On an error, +.I srvname +is nil, and +.I diag +is a diagnostic. +If the remote service +has been configured to demand extra authentication data, then +.I diag +contains a demand for it. +Currently the only such value is +.RB ` need pin '; +call +.B sendpin +to provide it to the connection. +If +.B sendpin +succeeds, it returns zero, and +.I conn +can be used normally; on error, +.B sendpin +returns -1 and the connection cannot be used. +.PP +.B Connect +combines the actions of +.B dial +and +.BR auth : +dials the +.I secstore +at +.IR addr , +and mutually authenticates the server and the given +.I user +using the user's secret +.I key +for that service. +It returns a tuple +.BI ( conn,\ srvname,\ diag ), +where each component is as described for +.B dial +and +.B auth +above. +On an error, +.I conn +is nil, and +.I diag +contains a diagnostic. +.PP +.B Getfile +retrieves the file +.I name +from the secure store, and returns its contents as an array of bytes. +.I Maxsize +gives the largest acceptable file size; if the value is zero or negative, +a large value is used by default. +The files stored on the service are separately encrypted under the user's secret key. +.B Mkfilekey +takes a textual secret +.I key +and returns a hash of it as an array of bytes, +suitable for use as the +.I filekey +parameter in subsequent calls to +.BR decrypt . +(The +.I filekey +is not the same value as the +.I seckey +used for initial authentication, although the secret text is the same.) +.PP +.B Remove +deletes the given +.I file +from the server. +It returns 0 on success and a negative value on error. +.PP +.B Decrypt +decrypts the +.I data +previously fetched from a file on the secure store. +It uses the +.I filekey +produced by +.B mkfilekey +to decrypt the data in place (ie, modifying the contents of +.IR data ) +and returns a slice of +.I data +that excludes any headers and trailers in the encoding. +It returns nil if the file could not be decrypted (usually because the +.I key +value is not actually the encryption key). +.PP +.B Erasekey +clears the bytes of +.I key +to zero; it should be called on every value produced by +.B mkfilekey +and +.BR mkseckey , +after use, +but can also be used on the data arrays returned by +.B getfile +and +.BR decrypt . +.PP +.B Lines +returns a list of slices of +.IR file , +representing each line of +.I file +in turn (including newline). +.IR Factotum (4) +for instance requires keys to be written to its control file one at a time. +.PP +.B Bye +closes the connection to the +.IR secstore . +.SH SOURCE +.B /appl/lib/secstore.b +.SH DIAGNOSTICS +As well as returning the error values described above, functions set the system error string. +.SH SEE ALSO +.IR crypt (1), +.IR factotum (2), +.IR factotum (4) diff --git a/man/2/security-0intro b/man/2/security-0intro new file mode 100644 index 00000000..a7d0d6e2 --- /dev/null +++ b/man/2/security-0intro @@ -0,0 +1,162 @@ +.TH SECURITY-INTRO 2 +.SH NAME +intro \- introduction to security +.SH SYNOPSIS +.EX +include "keyring.m"; +include "security.m"; +.EE +.SH DESCRIPTION +This is an introduction to some of the principals behind computer security as well as a description of how these principals are used in Inferno. More detailed descriptions of the methods and principals for ensuring secure communications on computers can be found in texts such as +.I "Applied Cryptography" +by Bruce Schneier (published 1996, J. Wiley & Sons, Inc.). +.PP +Inferno provides several levels of security: +.IP \(bu +Mutual authentication means that two users or applications that want to communicate can establish that they are who they say they are. It is the basic level of security provided by Inferno. Thus, for example, when a user connects to +an Inferno service, they can and must establish that they are a legitimate user. +.IP \(bu +Message digesting is a technique to ensure that an interloper cannot modify messages sent between users. +.IP \(bu +Encryption protects the confidentiality of messages so that only the party or parties for whom the messages are intended can decrypt and read them. +Inferno makes it easy to enforce any one or all of these levels of security. +.SS "Mutual Authentication" +Authentication requires a combination of elements: a third party that each user can trust, an algorithm or mathematical method to secure messages between users, and a protocol for exchanging messages that ensures that a third party or intruder cannot pretend to be one of the users, or use some other method to undermine their communication. +.PP +One important method for authenticating users in Inferno is the use of digital signatures. Like signing a letter a digital signature testifies to the identity of the sender. Fortunately, it is much more difficult to forge a digital signature. +.PP +Even after users are authenticated to each other, it is possible for someone `listening' to their communication to read and possibly modify their messages without the users knowing it. So authentication solves one security requirement, but not all of them. +.SS "Message Digesting" +Message digesting uses a mathematical hashing algorithm to convert a message +into an indecipherable string of fixed length (a digest). +By appending the hashed value to the message, +the authenticity of the message can be verified. +The recipient takes the message, applies the same hashing algorithm used by the sender, and compares the value to the one sent. +If the values are the same, then the message received must be the same as the one that was sent. +.PP +Inferno includes a counter in the digest to check that messages were received in the correct order and +that no messages were inserted by a third party listening in on the line. +A secret key is also included in the digest to verify the identity of the sender. +.PP +A message digest ensures that no one has tampered with a message. +It does not prevent someone from reading it. +.SS "Message Encryption" +The traditional notion of encryption is translating a message, called a plaintext in cryptography, into something unreadable, called a ciphertext. Its most obvious use is to provide confidentiality. Only someone able to decrypt the message, or translate it back to its original form, can interpret it. +.PP +A mathematical algorithm is used to both encrypt and decrypt a message. Encryption algorithms depend on keys or bit strings of a specified length for encryption and decryption. The nature of an algorithm and the size of the key determine the degree of security. +.PP +Two basic types of algorithms are used in cryptography: private key (or symmetric key) and public key algorithms. With symmetric algorithms the same key is used to encrypt and decrypt a message. This key must be a secret, known only to the users who want to communicate. It is often called a private or secret key. +.PP +A public key algorithm may use a private or secret key to encrypt a message and a public key to decrypt it, or vice-versa. The private or secret key is known only to one user. The public key, however, does not have to be kept secret and may be distributed to anyone the user wishes to communicate with. +.PP +Inferno uses a public key algorithm for digital signatures and symmetric key algorithms for encryption. +.PP +A user can encrypt a message with or without appending a message digest. +.PP +.SS "Algorithms Supplied With Inferno" +Some of the considerations when choosing algorithms are speed, degree of security, and +political restrictions on export. +The algorithms used in Inferno are well known and rigorously tested. +.TP +One-way hashing algorithms +SHA1 and MD5 are well known (in cryptographic circles) one-way hashing algorithms. MD5 is a high-speed, 128-bit hash. SHA1 is a somewhat slower but more secure 160-bit hash. +.TP +Elgamal and RSA public key signature algorithms +Elgamal is a public key system widely used for creating digital signatures. It uses a private key for signing a message and a public key for verifying it. +Inferno also supports the widely-used RSA and DSS-1 signature algorithms. +Because Inferno initially used Elgamal +keys, it does not assume that either a private or public key can be used for encryption or decryption. With constant advances in the field of cryptography, one of the design goals of Inferno is to create a security component that will be easy to enhance as new algorithms are developed. +.TP +Encryption algorithms +DES (the Data Encryption Standard) was adopted by the US government in 1976 as a standard encryption/decryption system for unclassified data in the United States. It is widely used, especially by the financial services industry. Two types of DES are offered: DES-ECB and DES-CBC. ECB or Electronic Code Book and CBC or Chain Block Coding are part of the ANSI Banking Standard. CBC is more complex and less vulnerable than ECB. Both versions of DES provide 56-bit keys. +.RS +.PP +RC4 is a symmetric or private key system that is about 10 times faster than DES. +.RE +.TP +Diffie-Hellman key exchange algorithm +Diffie-Hellman is an algorithm for creating a secret key to be shared by users for encrypting messages (sometimes called a shared secret). It requires each user to exchange certain information with the other. This information can be exchanged in the open, that is, without encryption. Each user is able to create the same, secret key from this information. However, no one else listening to their exchange would be able to create or determine the secret key. +.SS "Security Protocols" +Cryptanalysis is the study of how to break cryptographic systems. Attempts to disrupt or listen to confidential communications are called attacks. Usually the objective of an attack is to figure out the secret key, decrypt a message, or add or modify messages in some way. +.PP +There are many methods or strategies for attacking a confidential communication. One method is called a man-in-the-middle attack, where someone listening to a communication pretends to be one of the parties; another is a replay attack, where an interloper reuses messages that have already been exchanged in an attempt to discover a pattern. +.PP +In order to thwart such attacks and establish some level of trust between communicating parties, it is necessary to employ certain protocols. +Inferno uses two well-established protocols to permit keys to be exchanged +and to permit +mutual authentication of the identities of two communicating parties. +.PP +A +.I "digital signature" +is one way to guarantee that a message sent by a user is indeed from that user and not someone else. A signature does not require that a message be encrypted. It can be appended to a message in order to guarantee the identity of the sender. With Elgamal, creating a signature requires that the user have a secret or private key. Uniquely associated with the private key is another key that can be distributed publicly. This public key is used along with the private key to create a signature, and is used by others to verify the signature. +.PP +To create a signature the Elgamal algorithm is applied to a combination of the private key, the public key, and the message to be signed. The output of the algorithm is the signature. +.PP +To verify the signature the receiver applies the Elgamal algorithm to the public key and the signature. If the output is the same message that was sent with the signature, then the signature is valid. This method ensures that the user receiving a message is indeed communicating with someone who owns the public key. +.PP +The next step is to determine who the owner of the public key is, and to ensure that it belongs to the user that the receiver wants to communicate with. This is accomplished by having a third party create a +.I "certificate" +testifying to the identity of the owner of the public key. This third party is called a certifying authority (CA). If a user trusts the certifying authority, a copy of a certificate is sufficient to determine the ownership of a public key, and therefore, the signature and identity of the user sending a message. +.PP +A certificate includes a variety of information: a user's public key, the identity of the user, Diffie-Hellman parameters, an expiration time for the certificate, and the signature of the CA. The CA's public key is sent to the user along with the certificate to verify the CA's signature. +.PP +Inferno provides two different methods for obtaining a certificate depending on whether a user has access to a keyboard or not. For users with a keyboard, Inferno offers a variation of the Encrypted-Key-Exchange (EKE) protocol, +described in +.IR login (6). +The protocol depends on establishing trust between a user and a CA +using a shared secret (password). +The secret must initially be established at the CA by some secure means: +typing a password on a secure console at the CA, or transmitting the +password securely off-line, perhaps by unintercepted letter or untapped phone call. +To obtain a certificate, a user can subsequently enter +the secret on the client machine's keyboard; the protocol obtains +a certificate without revealing the secret. +.PP +For an application or user on a set-top box, which normally does not have a keyboard, entering a password would be difficult. Therefore, Inferno provides a different method to establish trust. When the set-top box is turned on, it creates a private/public key pair and dials the service provider's CA to get a certificate. The CA returns a certificate blinded or scrambled with a random bit string known only to the CA. A hashed version of the string is displayed on the user's screen. The user telephones the CA and compares what is displayed with what the CA has sent. If they match, and the user can prove his or her identity, the CA makes the random bit string known to the user, so the certificate can be unscrambled. +.SS "Authentication" +Mutual authentication in Inferno requires that two parties who want to communicate must have a certificate from the same CA. As described above, the public key of the CA is used to check the certificate sent by the other user. The certificate is used to verify that the public key belongs to the party that the user wants to communicate with. +.PP +If a user can trust the public key, then the key can be used to check the signature sent by the other party. If the public key unlocks the signature, then whoever sent the signature must have the corresponding secret key, and therefore, must be the owner of the public key. +.PP +The default protocol provided by Inferno for mutual authentication is +the station-to-station protocol described in +.IR auth (6). +It has the property that both parties can derive the +same key from exchanged and validated data but no eavesdropper +can determine the key. +.SS "Security at the Application Layer" +An application can make use of the algorithms and protocols described previously by using only a few library routines such as: +.IR security-login (2), +.IR security-auth (2) +and +.IR connect +(see +.IR security-ssl (2)). +The +.B Login +module enables an application that shares a password with a server acting as the CA to obtain a certificate. After obtaining certificates, two applications establish a mutually authenticated connection by calling +.IR auth . +.I Auth +performs the entire STS protocol. +.I Connect +connects an application to an SSL (security sockets layer) device. Each application can create message digests or encrypt messages by writing to this device. Messages are received and decrypted by reading from the SSL device. +.PP +Although Inferno provides these routines to make it easy to establish secure communications, an application is not restricted to their use. Lower-level routines used by +.I login +and +.I auth +are also available to an application. These routines enable an application to create alternate methods for establishing security, or to perform specialized functions like signing files. +.PP +Inferno also provides security routines tailored for set-top boxes. For example, a set-top-box can use +.IR register (8) +instead of +.I login +(see +.IR security-login (2)). +.I Register +obtains a certificate without requiring a user to enter a password. +.PP +There are also commands in section 8 that establish a server as a Certifying Authority or `signer'. For example, a CA needs a key and password to create a certificate. These can be created on the server using the commands +.IR changelogin (8) +and +.IR createsignerkey (8). diff --git a/man/2/security-auth b/man/2/security-auth new file mode 100644 index 00000000..045db64e --- /dev/null +++ b/man/2/security-auth @@ -0,0 +1,157 @@ +.TH SECURITY-AUTH 2 +.SH NAME +Auth: init, client, server \- authenticated connections between client and server +.SH SYNOPSIS +.EX +include "keyring.m"; +include "security.m"; +auth := load Auth Auth->PATH; + +init: fn(): string; +client: fn(alg: string, ai: ref Keyring->Authinfo, + fd: ref Sys->FD): (ref Sys->FD, string); +server: fn(algs: list of string, ai: ref Keyring->Authinfo, + fd: ref Sys->FD, setid: int): (ref Sys->FD, string); +.EE +.SH DESCRIPTION +.B Auth +establishes authenticated connections using the station to station protocol described +in +.IR auth (6). +It encapsulates the use of the primitives of +.IR keyring-auth (2) +and +.IR security-ssl (2) +for the particular case where the stations +play the rôles of `client' and `server'. +The underlying primitives must still be accessed directly in some cases, +for instance when completely symmetric authentication is needed between peers. +.PP +.B Init +must be called before using any other functions in +.BR Auth ; +it returns nil if successful, and a diagnostic message otherwise. +.PP +.B Client +authenticates a connection with the server on +.I fd +using the authentication data in +.IR ai . +If successful, and +.I alg +is neither +.B nil +nor the value +.B +"none"\c +, +.B client +will set the connection to digest or encrypt the data, +using the +digest or encryption algorithm specified in +.IR alg . +It returns the file descriptor for the connection, +and a string with information about the connection. +If an authenticated connection cannot be established, +.B client +returns a nil file descriptor and an error message. +.PP +.B Server +authenticates a client connection +.IR fd , +as described in +.IR keyring-auth (2), +using the server's authentication data in +.IR ai . +If successful, and the client requested the use of a digest or +encryption algorithm, and that algorithm is listed in +.IR algs , +.B server +enables the security layer +.IR ssl (3) +using the selected algorithm. +Furthermore, if +.I setid +is non-zero, the current user name is set to the +newly authenticated name. +.B Server +returns a file descriptor for the connection, +and a string with information about the connection. +If an authenticated connection cannot be established, +or the client's chosen algorithm is not listed, +.B server +returns a nil file descriptor and an error message. +.PP +Any string acceptable to +.IR ssl (3), +including +.B +"clear"\c +, can be given as an +.I alg +to +.BR client , +or listed in +.I algs +for +.BR server . +Furthermore, the special string +.B +"none" +tells both functions +that +.IR ssl (3) +should not be used at all on a connection. +.SH EXAMPLE +This selection from +.B /appl/cmd/mount.b +illustrates client-side use. +.PP +.EX + au := load Auth Auth->PATH; + err := au->init(); + if(err != nil){ + sys->fprint(stderr, "mount: %s\en", err); + exit; + } + fd: ref Sys->FD; + (fd, err) = au->client("none", ai, c.dfd); + if(fd == nil){ + sys->fprint(stderr, "mount: authentication failed: %s\en", err); + exit; + } + dir := hd argv; + ok = sys->mount(fd, dir, flags, ""); + if(ok < 0) + sys->fprint(stderr, "mount: %r\en"); +.EE +.PP +The following example from +.B /appl/lib/styxd.b +shows server-side use; +note that +.B readauthinfo +is called first to fetch the authentication data to pass to +.BR server . +.PP +.EX + kr := load Keyring Keyring->PATH; + ... + ai := kr->readauthinfo("/usr/"+user+"/keyring/default"); + auth->init(); + (fd, info_or_err) := auth->server(argv, ai, stdin, 1); + if(fd == nil){ + sys->fprint(stderr, "styxd: %s\en", info_or_err); + exit; + } + sys->pctl(Sys->FORKNS, nil); + if(sys->export(fd, Sys->EXPASYNC) < 0) + sys->fprint(stderr, "styxd: file export: %r\en"); +.EE +.SH SOURCE +.B /appl/lib/auth.b +.SH "SEE ALSO" +.IR keyring-auth (2), +.IR security-ssl (2), +.IR ssl (3), +.IR auth (6) diff --git a/man/2/security-login b/man/2/security-login new file mode 100644 index 00000000..cc831319 --- /dev/null +++ b/man/2/security-login @@ -0,0 +1,93 @@ +.TH SECURITY-LOGIN 2 +.SH NAME +login \- verify credentials +.SH SYNOPSIS +.EX +include "keyring.m"; +include "security.m"; +login := load Login Login->PATH; + +login: fn(name, password, addr: string): + (string, ref Keyring->Authinfo); +.EE +.SH DESCRIPTION +The +.BR Login +module is provided for use by a client of +a certifying authority (CA) or `signer'. +The +.B login +function communicates +with a certifying authority (CA) +in order to create a +.B Keyring->Authinfo +adt +which contains a public/private key pair and a certificate +signed by the CA +(see +.IR keyring-intro (2)). +The public/private key pair is generated by +.B login +using the same parameters as those in the signer's key +(eg, algorithm and key length); +see +.IR keyring-gensk (2). +The procedure assumes a secret, i.e. a +password, has already been established +between the user and the CA. +See +.IR changelogin (8) +and +.IR keyfs (4) +for how this password is managed at the +CA. +.PP +.B Login +connects, using +.IR sys-dial (2), +to the signer at network address +.IR addr , +which is any form accepted by +.IR cs (8), +including the special address +.BR $SIGNER , +which +.IR cs +will translate to the client's default signer (if there is one). +Normally the incoming call will be given to +.IR logind (8) +by +.IR svc (8). +.PP +.B Login +sends the user +.I name +and +.IR password , +using the protocol described in +.IR login (6), +to justify the server's +issuing a certificate, which is returned in a +.B Keyring->Authinfo +adt on success. +The certificate can if desired be stored by +.BR Keyring->writeauthinfo ; +see +.IR keyring-auth (2). +The password is used by the encrypted +key exchange protocol to establish +a secure channel between user and CA. +.SH SOURCE +.B /appl/lib/login.b +.SH SEE ALSO +.IR getauthinfo (8), +.IR keyring-auth (2), +.IR login (6), +.IR createsignerkey (8), +.IR logind (8) +.SH DIAGNOSTICS +.B Login +returns nil in the string component +on success and a diagnostic string on error (with a nil +.B Keyring->Authinfo +reference). diff --git a/man/2/security-random b/man/2/security-random new file mode 100644 index 00000000..60ff3f7c --- /dev/null +++ b/man/2/security-random @@ -0,0 +1,43 @@ +.TH SECURITY-RANDOM 2 +.SH NAME +random: randomint, randombuf \- +random number generation +.SH SYNOPSIS +.EX +include "security.m"; +random := load Random Random->PATH; + +randomint: fn(which: int): int; +randombuf: fn(which, n: int): array of byte; +.EE +.SH DESCRIPTION +.B Randomint +and +.B randombuf +return random or not-quite-random data +obtained from +.B /dev/random +or +.BR /dev/notquiterandom . +.B Randomint +returns a random integer; +.B randombuf +returns an array of length +.I n +filled with random bytes. +In both functions, +.I which +may be either +.B ReallyRandom +or +.B NotQuiteRandom +to select the random data source. +.SH FILES +.B /dev/random +.br +.B /dev/notquiterandom +.SH SOURCE +.B /appl/lib/random.b +.SH SEE ALSO +.IR rand (2), +.IR cons (3) diff --git a/man/2/security-ssl b/man/2/security-ssl new file mode 100644 index 00000000..7b54f2af --- /dev/null +++ b/man/2/security-ssl @@ -0,0 +1,76 @@ +.TH SECURITY-SSL 2 +.SH NAME +ssl: connect, secret \- interface to the Secure Sockets Layer +.SH SYNOPSIS +.EX +include "sys.m"; +include "security.m"; +ssl := load SSL SSL->PATH; + +connect: fn(fd: ref Sys->FD): (string, ref Sys->Connection); +secret: fn(c: ref Sys->Connection, secretin, + secretout: array of byte): string; +.EE +.SH DESCRIPTION +.B SSL +provides an interface to the secure sockets layer device +.IR ssl (3). +.PP +.B Connect +allocates a new +.IR ssl (3) +connection directory. +It pushes +file descriptor +.I fd +into the +.B data +file of that connection, and if successful, +returns a reference to a +.B Connection +adt describing the connection. +The +.B Connection +adt has its members set as follows: +.B dir +names the resulting connection directory; +.B cfd +is open on the connection's +control file; and +.B dfd +is open on the connection's +.B data +file, +which is read and written to exchange data on the original +.I fd +using SSL. +.PP +.B Secret +writes +.I secretin +and +.I secretout +to +.IB c .dir/secretin +and +.IB c .dir/secretout +where +.I n +is obtained from the +.B Connection +adt +.IR c . +The string returned describes errors encountered, if any; otherwise it is nil. +.PP +.SH SOURCE +.B /appl/lib/ssl.b +.SH "SEE ALSO" +.IR security-auth (2), +.IR ssl (3) +.SH DIAGNOSTICS +.B Connect +returns a tuple containing a string and a +.B Connection +reference. +On success the string is nil, and the connection reference is not nil; +on error, the string contains a diagnostic, and the connection reference is nil. diff --git a/man/2/selectfile b/man/2/selectfile new file mode 100644 index 00000000..7b28b236 --- /dev/null +++ b/man/2/selectfile @@ -0,0 +1,57 @@ +.TH SELECTFILE 2 +.SH NAME +selectfile \- +file browser +.SH SYNOPSIS +.EX +include "selectfile.m"; +selectfile := load Selectfile Selectfile->PATH; + +init: fn(); +filename: fn(ctxt: ref Draw->Context, parent: ref Draw->Image, + title: string, + pat: list of string, + dir: string): string; +.EE +.SH DESCRIPTION +.B Selectfile +provides an interactive file browser for use by a +.IR wm (1) +application. +It allows a user to browse the +file system to select a file of a give type. +.PP +.B Init +should be called once to initialise the module's internal state. +.PP +.B Filename +makes a dialog panel for selecting a file. +It is created in the graphics context +.IR ctxt , +near the northeast corner of a given parent window, +.IR parent , +represented by that window's Image. +(If the parent window is a Tk Toplevel +.IR t , +for instance, the appropriate value is +.IB t .image \f1.)\fP +If +.I parent +is nil, the panel is centred on the screen. +.I Dir +gives the directory where the file search should begin. +Only files that match +.I pat +are displayed. +The returned string is the name of the selected file, +or the empty string if no file was selected. +.SH SOURCE +.B /appl/lib/selectfile.b +.SH SEE ALSO +.IR dialog (2), +.IR dividers (2), +.IR draw-context (2), +.IR tabs (2), +.IR tk (2), +.IR wmlib (2) + diff --git a/man/2/sets b/man/2/sets new file mode 100644 index 00000000..6c0fcaf9 --- /dev/null +++ b/man/2/sets @@ -0,0 +1,226 @@ +.TH SETS 2 +.SH NAME +Sets \- +sets of non-negative integers +.SH SYNOPSIS +.EX +include "sets.m"; +\fIOR\fP include "sets32.m"; +sets := load Sets Sets->PATH; +A, B: import Sets; + +Sets: adt { + init: fn(); + set: fn(): Set; + str2set: fn(str: string): Set; + bytes2set: fn(d: array of byte): Set; + Set: adt { + # opaque data + + X: fn(s1: self Set, op: int, s2: Set): Set; + add: fn(s: self Set, n: int): Set; + addlist: fn(s: self Set, ns: list of int): Set; + del: fn(s: self Set, n: int): Set; + invert: fn(s: self Set): Set; + + eq: fn(s1: self Set, s2: Set): int; + holds: fn(s: self Set, n: int): int; + isempty: fn(s: self Set): int; + msb: fn(s: self Set): int; + limit: fn(s: self Set): int; + + str: fn(s: self Set): string; + bytes: fn(s: self Set, n: int): array of byte; + }; +}; +.EE +.SH DESCRIPTION +.PP +The +.B Sets +module provides routines for manipulating sets +of small non-negative integers. There are currently +two implementations available: +the implementation declared in +.B sets32.m +stores sets of numbers from 0 to 31 inclusive; +the implementation in +.B sets.m +stores arbitrary sets of non-negative integers. +The description given is for the more general +implementation; behaviour of the other is undefined +if an integer higher than 31 is used. +.PP +.B Init +must be called first, to allow +.B Sets +to initialise its internal state. +.B Set +returns a new set, containing nothing. +.B Str2set +converts a string to a new set; the string +should have been created with +.BR Set.str() . +.B Bytes2set +converts an array of bytes, +.IR d , +as returned by +.BR Set.bytes() , +to a new set. +.PP +Note that all set operations are copy operations; +none change an existing set. +.TP 10 +.IB s1 .X(\fIop\fP,\ \fIs2\fP) +Returns a new set, the result of combining +.I s1 +and +.I s2 +according to boolean operator +.IR op . +.I Op +can be any bitwise boolean combination of the +two constants +.B A +and +.BR B , +defined in the module. Notionally, each +set is an infinitely long string of bits, each +bit representing a non-negative integer: +zero if the integer is present, and one if absent. +For each corresponding bit in +.I s1 +and +.IR s2 , +.B X +sets a corresponding bit in the returned set +according to the calculation +.IR "s1 op s2" . +.TP +.IB s .add(\fIn\fP) +Returns the set +.I s +with +.I n +added. +.TP +.IB s .addlist(\fIns\fP) +.B Addlist +is the same as calling +.B add +on each member of the list +.IR ns , +but somewhat more efficient. +.TP +.IB s .del(\fIn\fP) +Returns +.I s +with +.I n +removed. +.TP +.IB s .invert() +.B Invert +returns a set holding all non-negative integers +other than those already in +.IR s . +Hence +.B set().invert() +holds all non-negative integers. +.TP +.IB s1 .eq(\fIs2\fP) +Returns non-zero if +.I s1 +is identical to +.IR s2 . +.TP +.IB s .holds(\fIn\fP) +Returns non-zero if +.I s +holds +.I n +as a member. +.TP +.IB s .isempty() +Returns non-zero if +.I s +holds no members. +.TP +.IB s .msb() +Returns the "most significant bit": the membership +status of all members that have not been explicitly +set. For example, +.B set().msb() +is 0; +.B set().invert().msb() +is 1. +.TP +.IB s .limit() +If +.IB s .msb() +is zero, +.IB s .limit() +returns one more than the largest member contained in +.IR s , +otherwise it returns one more than the largest member +.I not +contained in +.IR s . +Thus +.B set().limit() +yields 0, +and +.B set().invert().del(5).limit() +yields 6. +.TP +.IB s .str() +Returns a string corresponding to +.IR s . +The format is +.IB hexdigits : msb\fR,\fP +where +.I hexdigits +give the least significant members of the set, +most significant on the left, in hexadecimal format; +.I msb +gives the padding bit that fills the rest of the set. +Note that this format is compatible between the +two implementations. +.TP +.IB s .bytes(\fIn\fP) +Returns a packed byte representaton of +.I s . +The array is held in little-endian order, +with the topmost bit of the top byte +holding the msb of the set. +The array returned will contain at least +.I n +bytes. +.SH EXAMPLES +Given two sets, +.I s1 +and +.IR s2 , +.IB s1 ".X(A&B," " s2" ) +gives their intersection; +.IB s1 ".X(A|B," " s2" ) +their union; +.IB s1 ".X(A&~B," " s2" ) +gives the set of all members of +.I s1 +that aren't in +.IR s2 ; +.IB s1 ".X(~(A|B), " s2 ) +gives the set of all integers in neither +.I s1 +nor +.IR s2 . +.PP +.EX + sys->print("%s\en", set().addlist(1::2::5::nil) + .invert().X(A|B, set().add(2)).str()); +.EE +produces the string +.RB `` dd:1 '', +corresponding to the set of all non-negative +integers except 1 and 5. diff --git a/man/2/sexprs b/man/2/sexprs new file mode 100644 index 00000000..e06b06cf --- /dev/null +++ b/man/2/sexprs @@ -0,0 +1,362 @@ +.TH SEXPRS 2 +.SH NAME +Sexprs: Sexp \- S-expressions +.SH SYNOPSIS +.EX +include "bufio.m"; +include "sexprs.m"; +sexprs := load Sexprs Sexprs->PATH; + +Sexp: adt { + pick { + String => + s: string; + hint: string; + Binary => + data: array of byte; + hint: string; + List => + l: cyclic list of ref Sexp; + } + + read: fn(b: ref Bufio->Iobuf): (ref Sexp, string); + parse: fn(s: string): (ref Sexp, string, string); + pack: fn(e: self ref Sexp): array of byte; + packedsize: fn(e: self ref Sexp): int; + text: fn(e: self ref Sexp): string; + b64text: fn(e: self ref Sexp): string; + unpack: fn(a: array of byte): (ref Sexp, array of byte, string); + + eq: fn(e: self ref Sexp, t: ref Sexp): int; + copy: fn(e: self ref Sexp): ref Sexp; + + astext: fn(e: self ref Sexp): string; + asdata: fn(e: self ref Sexp): array of byte; + + islist: fn(e: self ref Sexp): int; + els: fn(e: self ref Sexp): list of ref Sexp; + op: fn(e: self ref Sexp): string; + args: fn(e: self ref Sexp): list of ref Sexp; +}; + +init: fn(); +.EE +.SH DESCRIPTION +.B Sexprs +provides a data type and I/O for S-expressions, or `symbolic expressions', +which represent complex data as trees. +This implementation provides the variant defined by +Rivest in Internet Draft +.L draft-rivest-sexp-00.txt +(4 May 1997), +as used for instance by the Simple Public Key Infrastructure (SPKI). +It offers a basic set of operations on the internal representation, +and input and output in both canonical and advanced transport encodings. +.I Canonical +form conveys binary data directly and efficiently (unlike some +other schemes such as XML). +Canonical encoding must be used when exchanging S-expressions between computers, +and when digitally signing an expression. +.I Advanced +encoding is a more elaborate +form similar to that used by Lisp interpreters, typically using +only printable characters: representing any binary data in hexadecimal or base 64 encodings, +and quoting strings containing special characters, using escape sequences as required. +Unquoted text is called a +.IR token , +restricted by the standard to a specific alphabet: +it must start with a letter or a character from the set +.LR "-./_:*+=" , +and contain only letters, digits and characters from that set. +Upper- and lower-case letters are distinct. +See +.IR sexprs (6) +for a precise description. +.PP +.B Init +must be called before invoking any other operation of the module. +.PP +.B Sexp +is the internal representation of S-expression data, as lists and non-list values (atoms) that +in general can form a tree structure; +that is, a list may contain not just atoms but other lists as its elements, and so on recursively. +The atoms are strings of text or binary. +A well-formed S-expression might be a tree, but cannot contain cycles. +.PP +For convenience in processing, +.B Sexp +distinguishes three variants represented in a pick adt: +.TP +.B Sexp.String +An atom that can be represented as a textual string +.IR s , +including all tokens but also any other data that contains no characters outside the 7-bit ASCII +set and no control-characters other than space. +.I Hint +is the `display hint', typically nil (see the Internet Draft for its intended use). +.TP +.B Sexp.Binary +An atom that must be represented as an array of bytes +.I data +(typically because it is purely binary data or contains non-space control-characters). +.I Hint +again is the display hint. +.TP +.B Sexp.List +A list of S-expression values, +.IR l . +.PP +.B Sexp +provides the following operations for input and output, using +.IR bufio (2)'s +buffered channels (directly or indirectly): +.TP +.BI read( b ) +Read one S-expression (a list or a single token) from +.B Iobuf +.IR b . +Return a tuple of the form +.RI ( e , err ), +where +.I e +is the +.B Sexp +representing the data just read, and +.I err +is nil on success; +.I b +is positioned at the first character after the end of the S-expression. +On an error, +.I e +is nil, and +.I err +contains the diagnostic string. +On end-of-file, both +.I e +and +.I err +are nil. +.TP +.BI parse( s ) +Parse the first S-expression in string +.IR s , +and return a tuple +.RI ( e , t , err ), +where +.I e +is the +.B Sexp +representating that expression, +.I t +is the unparsed tail of string +.IR s , +and +.I err +is a diagnostic string that is nil on success. +On an error, +.I e +is nil, +.I t +is as before, and +.I err +contains the diagnostic. +.TP +.IB e .pack() +Return an array of byte that represents +.B Sexp +.I e +as an S-expression in canonical transport form. +.TP +.IB e .packedsize() +Return the size in bytes of the canonical transport representation of +.IR e . +.TP +.IB e .b64text() +Return a string that contains the base-64 representation of the canonical representation of +.IR e , +surrounded by braces. +.TP +.IB e .text() +Return a string that represents +.I e +as an S-expression in advanced (`human-readable') transport form containing no newlines. +The result of +.B text +can always be interpreted by +.B Sexp.read +and +.BR Sexp.parse , +and furthermore +.BI "Sexp.parse(" e ".text())" +yields the same tree value as +.I e +(similarly for +.BR Sexp.read ). +.TP +.BI unpack( a ) +Parse the first S-expression in array of byte +.IR a , +and return a tuple +.RI ( e , r , err ), +where +.I e +is the +.B Sexp +representing the S-expression, +.I r +is a slice of +.I a +giving the portion of +.I a +after the S-expression, and +.I err +is nil on success. +On error, +.I e +is nil, +.I r +is as before, +and +.I err +contains a diagnostic string. +The data in +.I a +is typically in canonical transport form, read from a file or network connection. +.PP +All input functions accept S-expression in either canonical or advanced form, or +any legal mixture of forms. +Expressions can cross line boundaries. +For output in canonical form, use +.BR pack ; +for output in advanced form (similar to Lisp's S-expressions), use +.BR text . +.PP +.B Sexp +provides a further small collection of operations: +.TP +.IB e1 .eq( e2 ) +Return non-zero if expression +.I e1 +and +.I e2 +are identical (isomorphic in tree structure and atoms in corresponding positions in +.I e1 +and +.I e2 +equal); +return 0 otherwise. +.TP +.IB e .copy() +Return a new +.B Sexp +value equal to +.IR e , +but sharing no storage with it. +(In other words, it returns a copy of the +whole tree +.IR e ). +.TP +.IB e .islist() +Return true iff +.I e +is a list +(ie, a value of type +.BR Sexp.List ). +.PP +Two operations provide a shorthand for fetching the value of an atom, returning nil if +applied to a list: +.TP +.IB e .astext() +Return the value of +.I e +as a +.BR string ; +binary data is assumed to be a string in +.IR utf (6) +representation. +.TP +.IB e .asdata() +Return the value of +.I e +as an array of bytes. +A +.B String +value will be converted to an array of bytes giving its +.IR utf (6). +.PP +The remaining operations extract values from lists, +and return nil if applied to an atom: +.TP +.IB e .els() +Return the elements of list +.IR e ; +return nil if +.I e +is not a list. +.TP +.IB e .op() +Return the first token of list +.IR e , +if it is a string; return nil if it is not a string or +.I e +is not a list. +The first token of a list often gives an operation name. +.TP +.IB e .args() +Return a list containing the second and subsequent values in list +.IR e ; +useful when the first value is an operation name and the rest represent parameters +(arguments) to that operation. +.SH EXAMPLES +The following S-expression is in advanced transport form: +.IP +.EX +(snicker "abc" (#03# |YWJj|)) +.EE +.PP +It represents a list of three elements: the token +.LR snicker , +the token +.LR abc , +and a sub-list with two elements (a hexadecimal constant +representing the byte +.LR 03 , +and a base-64 constant +.L YWjj +that represents the bytes +.LR abc ). +.PP +Here is another in advanced form with two sublists: +.IP +.EX +(certificate + (issuer bob) + (subject "alice b")) +.EE +.PP +Its equivalent in canonical form (as produced by +.BR pack ) +is shown below: +.IP +.EX +(11:certificate(6:issuer3:bob)(7:subject7:alice b)) +.EE +.PP +Nesting parentheses +still mark the start and end of lists, but there is no other punctuation or white space, and +the byte sequence representing each atom +is preceded by a decimal count, so that binary values appear unencoded, +and for instance the space +in the last string is not a delimiter but part of the token. +.SH SOURCE +.B /appl/lib/sexprs.b +.SH SEE ALSO +.IR bufio (2), +.IR xml (2), +.IR sexprs (6) +.PP +R. Rivest, ``S-expressions'', Network Working Group Internet Draft, +.L http://theory.lcs.mit.edu/~rivest/sexp.txt +(4 May 1997), +reproduced in +.BR /lib/sexp . diff --git a/man/2/sh b/man/2/sh new file mode 100644 index 00000000..ebe82f15 --- /dev/null +++ b/man/2/sh @@ -0,0 +1,561 @@ +.TH SH 2 +.SH NAME +Sh \- module interface to the shell +.SH SYNOPSIS +.EX +.ps -1 +.vs -1 +include "sh.m"; +sh := load Sh Sh->PATH; +Context, Listnode: import sh; + +system: fn(drawctxt: ref Draw->Context, cmd: string): string; +run: fn(drawctxt: ref Draw->Context, argv: list of string): string; +parse: fn(s: string): (ref Cmd, string); +cmd2string: fn(c: ref Cmd): string; +list2stringlist: fn(nl: list of ref Listnode): list of string; +stringlist2list: fn(sl: list of string): list of ref Listnode; + +Context: adt { + new: fn(drawcontext: ref Draw->Context): ref Context; + get: fn(c: self ref Context, + name: string): list of ref Listnode; + set: fn(c: self ref Context, + name: string, + value: list of ref Listnode); + setlocal: fn(c: self ref Context, + name: string, + value: list of ref Listnode); + envlist: fn(c: self ref Context): + list of (string, list of ref Listnode); + push, pop: fn(c: self ref Context); + copy: fn(c: self ref Context, copyenv: int): ref Context; + run: fn(c: self ref Context, + args: list of ref Listnode, + last: int): string; + addmodule: fn(c: self ref Context, name: string, + mod: Shellbuiltin); + addbuiltin: fn(c: self ref Context, name: string, + mod: Shellbuiltin); + removebuiltin: fn(c: self ref Context, name: string, + mod: Shellbuiltin); + addsbuiltin: fn(c: self ref Context, name: string, + mod: Shellbuiltin); + removesbuiltin: fn(c: self ref Context, name: string, + mod: Shellbuiltin); + fail: fn(c: self ref Context, ename, msg: string); + options: fn(c: self ref Context): int; + setoptions: fn(c: self ref Context, flags, on: int): int; +}; + +Listnode: adt { + cmd: ref Cmd; + word: string; +}; + +Cmd: adt { + # private data +}; + +Shellbuiltin: module { + initbuiltin: fn(ctxt: ref Context, sh: Sh): string; + whatis: fn(ctxt: ref Sh->Context, sh: Sh, + name: string, wtype: int): string; + runbuiltin: fn(ctxt: ref Context, sh: Sh, + cmd: list of ref Listnode, + last: int): string; + runsbuiltin: fn(ctxt: ref Context, sh: Sh, + cmd: list of ref Listnode): list of ref Listnode; + getself: fn(): Shellbuiltin; +}; + +.ps +1 +.vs +1 +.EE +.SH DESCRIPTION +.I Sh +is a command-line interpreter and a scripting language; +it also presents a module interface to allow Limbo +modules to access its functionality at a lower level. +The +.B Sh +module can be used in several different ways. +At the simplest level, it can be run as a command-line +program; for details of this, see +.IR sh (1). +The simplest access at the Limbo level is through +the +.B system +function, which given a +.I draw +.B Context +(see +.IR draw-context (2)) +and a string +executes the +.I sh +command contained in +.I s +and returns its result. It catches any exceptions raised by the command. +Almost as simple is +.BR exec , +which runs +.I argv +as a command, taking the first word as the command to be +executed (it can be a braced block) and giving the rest as arguments, +catching any exceptions raised. +.PP +Although program arguments are passed to external programs +as lists of strings, at the +.B Sh +module level, an argument list is held as a +.BR "list of ref Listnode" . +A +.B Listnode +holds either a simple string, or a braced block +that has been parsed by the shell. Sometimes it can hold +both; in this case the string and the block both represent +the same thing. +.B Parse +converts from a string to a +.B Cmd +(a braced block). It returns a tuple +.RI ( cmd ,\ error ) +where +.I cmd +holds the parsed block, +and +.I error +is non-empty if an error has occurred doing so. +.B Cmd2string +performs the opposite conversion; it returns +a string that when parsed will yield the same command +block it was passed. +The utility functions +.B List2stringlist +and +.B stringlist2list +convert from and to a +.B list of ref Listnode +to or from a +.B list of string +respectively. +.PP +A +.B Context +holds all the state information needed by a currently running +.I sh +process; this adt holds current values of environment variables +and a list of currently loaded modules and builtin commands. +It is specific to the process within which it was created. +If it is desired to run +.I sh +commands in a newly spawned process, a new +.B Context +must be created, or a copy of an existing Context made (making +sure to synchronise access until the copy has been made). +.TP 10 +.BI Context.new( drawcontext ) +.B New +creates a new context. +.I Drawcontext +represents the current graphics context +within which +.I sh +commands will be run +(see +.IR draw-context (2)). +.TP +.IB ctxt .get(\fPname\fP) +.B Get +retrieves the value of environment variable +.I name +from +.IR ctxt . +It is retrieved from the innermost scope in which +a value for +.I name +has been set. +.TP +.IB ctxt .set(\fPname\fP,\ \fPvalue\fP) +.B Set +sets the value of environment variable +.I name +in +.IR ctxt +to +.IR value . +It is set in the innermost scope in which a value +for +.I name +has been set, or the outermost level if it has +not been set. +.TP +.IB ctxt .setlocal(\fPname\fP,\ \fPvalue\fP) +Similar to +.B set() +except that the value is set in the innermost scope +that has been pushed. +.TP +.IB ctxt .envlist() +.B Envlist +retrieves the list of all the environment variables +currently in scope, and their values. +It returns a list of +.RI ( name ,\ value ) +tuples, where +.I name +is the name of the variable and +.I value +is its value. +.TP +.IB ctxt .push() +.B Push +creates a new innermost environment variable scope. +.TP +.IB ctxt .pop() +.B Pop +discards the current innermost scope, losing the +values of all variables that have been defined there. +It is an error to +.B pop +a context that has not been pushed. +Care must be taken to ensure that a +.B push +is always matched by a +.BR pop. +In particular, exceptions should be caught, +the context popped, and the exception re-raised. +.TP +.IB ctxt .copy(\fPcopyenv\fP) +The shell's +.B Context +is associated with a particular process; +.B copy +returns a copy of +.I ctxt +associated with the current process. If +.I copyenv +is non-zero, the whole environment will be copied - this +should be set if the new process is to run asynchronously - i.e. +if there is a chance that there might be two processes accessing the +context in parallel. It is an error to copy a context if not +within a new process. +.TP +.IB ctxt .run(\fPargs\fP,\ \fPlast\fP) +.B Run +executes a +.I sh +command. +.I Last +should be non-zero if this is the last time +that +.B run +will be called, so +.I sh +does not have to spawn a new process in order +to hide file redirection side-effects. +.TP +.IB ctxt .addmodule(\fPname\fP,\ \fPmod\fP) +.B Addmodule +adds the +.B Shellbuiltin +module +.I mod +to its list of builtin modules. +The module will be initialised as described in +``Builtin modules'', below. +.TP +.IB ctxt .addbuiltin(\fPname\fP,\ \fPmod\fP) +.B Addbuiltin +may be called by a module that has previously +been loaded by +.B addmodule +or by the +.B load +.I sh +command to add a new builtin command +to the shell. Any subsequent invocation of +.I name +within +.I ctxt +will result in a call of +.B runbuiltin() +to +.IR mod . +Any attempt to redefine the command +.RB `` builtin '' +will be ignored. +.TP +.IB ctxt .removebuiltin(\fPname\fP,\ \fPmod\fP) +.B Removebuiltin +removes +.I name +from the list of builtin commands in +.IR ctxt . +If +.I name +had not previously been defined by +.IR mod , +or had subsequently been replaced, then +this function does nothing. +.TP +.IB ctxt .addsbuiltin(\fPname\fP,\ \fPmod\fP) +.B Addsbuiltin +may be called by a module that has previously +been loaded by +.B addmodule +or by the +.B load +.I sh +command to add a new builtin substitution operator +to the shell. +Any subsequent invocation of +.BI ${ name } +within +.I ctxt +will result in a call of +.B runsbuiltin() +to +.IR mod . +.TP +.IB ctxt .removesbuiltin(\fPname\fP,\ \fPmod\fP) +.B Removesbuiltin +removes +.I name +from the list of builtin substitution operators in +.IR ctxt . +If +.I name +had not previously been defined by +.IR mod , +or had subsequently been replaced, then +this function does nothing. +.TP +.IB ctxt .fail(\fPename\fP,\ \fPmsg\fP) +.B Fail +prints +.I msg +to the standard error if message printing +is currently enabled, and raises +the exception +.BI fail: ename\f1.\fP +.TP +.IB ctxt .options() +.B Options +returns a bitmask of the options currently enabled in +.IR ctxt . +The bits are defined by constants declared within +.BR Context . +They include: +.RS +.TP +.IB ctxt .INTERACTIVE +.I Sh +is currently being run from an interactive command-line. +.TP +.IB ctxt .VERBOSE +Message printing is currently enabled. +.TP +.IB ctxt .EXECPRINT +Commands are printed to standard error +as they are executed. +.TP +.IB ctxt .ERROREXIT +An exception will be raised when the first +simple command returns an error status. +.PP +Options are defined in the innermost scope +of +.I ctxt +and will be lost when it is +.BR pop ped. +.RE +.TP +.IB ctxt .setoptions(\fPflags\fP,\ \fPon\fP) +.B Setoptions +sets the specified +.I flags +within +.IR ctxt . +.I Flags +is a bitmask of options, as described in +.BR options , +above. If +.I on +is non-zero, the specified bits will be set; +otherwise they will be reset. +.B Setoptions +returns the previously set options bitmask. +.SS Builtin modules +.B Shellbuiltin +specifies the interface to a loadable +.I sh +builtin module. Any Limbo module +.I mod +adhering to this +interface may be loaded into the shell. +.TP 10 +.IB mod ->initbuiltin(\fPctxt\fP,\ \fPsh\fP) +.B Initbuiltin +is called when +.I sh +loads +.I mod +either via the +.B load +command, or via the +.B loadmodule() +function. +.I Ctxt +is the context within which the builtin has been +loaded, and +.I sh +is the +.B Sh +module itself. When +.B initbuiltin +is called, +.I mod +is expected to call +.IB ctxt .addbuiltin +and +.IB ctxt .addsbuiltin +to define any builtin commands and builtin substitution +operators that it wants. If an error occurs on +initialisation, +.B initbuiltin +should return a non-nil value; this will cause the load to fail. +.TP +.IB mod ->runbuiltin(\fPctxt\fP,\ \fPsh\fP,\ \fPcmd\fP,\ \fPlast\fP) +.B Runbuiltin +is invoked when +.I sh +executes a command that has previously been +defined as a builtin command by +.IR mod . +.I Ctxt +is the current execution context (which may not be +the original context passed to +.BR initbuiltin() ), +.I sh +is the running +.B Sh +module, and +.I cmd +is the command to be executed. +.I Last +is true if this is the last command to be executed +in the current process; it can be passed to +.IB ctxt .run() +as appropriate. +The name of the command can be found in +.BR "(hd cmd).word" . +.B Runbuiltin +returns its exit status; by convention this +is the exit status of the last command executed. +A non-nil exit status is usually treated as false. +By convention, if an invalid set of arguments are +passed to a builtin command, a +.B usage +exception is raised by calling +.IB ctxt .fail +with +.B "usage" +and an explanatory usage message as arguments. +.TP +.IB mod ->runsbuiltin(\fPctxt\fP,\ \fPsh\fP,\ \fPcmd\fP) +Similar to +.BR runbuiltin , +.B runsbuiltin +is called when +.I sh +encounters a builtin substitution operator +that has previously been defined by +.IR mod . +It returns the list of values that will be +substituted in place of the operator. +.TP +.IB mod ->getself() +.B Getself +should return the +.B Shellbuiltin +module handle for +.IR mod , +usually obtained by invoking +.BR "load $self" . +N.B. it is important that the value returned +by +.B getself +is the same as that passed to +.B addbuiltin +or +.BR addsbuiltin . +As the Limbo +.B load +operator returns a different value each time, +the value to be returned by +.B getself() +should be initialised once, +during the call to +.BR initbuiltin() . +.TP 10 +.IB mod ->whatis(\fPctxt\fP,\ \fPsh\fP,\ \fPname\fP,\ \fPwtype\fP) +.B Whatis +is called by the shell's +.B whatis +command to query the definition of a name. +.I Wtype +gives the type of name that is being asked about; it can be +.B BUILTIN +(conventional commands), +.BR SBUILTIN +(substitution builtins), +or +.BR OTHER +(any other names that the module defines). +Return +.B nil +to get the usual default behaviour. The +.B std +module, for example, uses this feature to +display the definition of a shell function +correctly. +.SS Exceptions +The exceptions used within +.I sh +are exactly the same as those used within Limbo, +except that all exceptions generated by the +shell are prefixed by the string +.RB `` fail: '', +and any exception caught with the prefix +.B fail: +has its first 5 characters removed before +being made available to the +.I sh +script. +This adheres to the convention defined by +other shells within Inferno that a process +that raises an exception with a +.B fail: +prefix is just returning a non-zero exit status, +and should not be left in a Broken state. +It also means that the number of bytes available +for the exception string is reduced by 5 +(to 59). Care must therefore be taken to avoid +generating an exception with a name that is too long; +.I sh +takes the pragmatic approach of truncating any +exception string that is too long. +.SH FILES +.TP 10 +.BI /prog/ pid /wait +The file used by the shell to wait for dead child processes. +.SH SOURCE +.B /appl/cmd/sh/sh.y +.SH SEE ALSO +.IR sh (1), +.IR sh-std (1), +.IR sh-expr (1), +.IR sh-tk (1), +.IR sys-exception (2) diff --git a/man/2/smtp b/man/2/smtp new file mode 100644 index 00000000..16cde120 --- /dev/null +++ b/man/2/smtp @@ -0,0 +1,58 @@ +.TH SMTP 2 +.SH NAME +smtp \- Simple Mail Transfer Protocol +.SH SYNOPSIS +.EX +include "smtp.m"; +smtp := load Smtp Smtp->PATH; + +open: fn(server: string): (int, string); +sendmail: fn(fromwho: string, + towhom: list of string, + cc: list of string, + msg: list of string): (int, string); +close: fn(): (int, string); +.EE +.SH DESCRIPTION +.B Smtp +provides an interface to the mail transport protocol SMTP. +.PP +.B Open +opens a connection to the given SMTP +.IR server . +If +.I server +is nil, +.B open +uses the +default mail server +.B $MAILSERVER +if set up in +.BR /services/cs/db ; +see +.IR db (6). +It returns -1 and an error message if the connection fails. +.PP +.B Sendmail +sends mail to the SMTP server for subsequent delivery. +The first argument names the sender, the list +.I towhom +names the +recipients, +.I cc +is a list of CC's, +and +.I msg +has the text of the message. The latter +may simply be a list of one item containing the whole message, a list of lines of the message +or any intermediate format. It returns -1 and an error message on failure. +.PP +.B Close +closes the connection to the SMTP server. +.SH SOURCE +.B /appl/lib/smtp.b +.SH SEE ALSO +.IR sendmail (1), +.IR acme (1) +.SH BUGS +Too much copying of strings is done, especially with large messages. diff --git a/man/2/spki b/man/2/spki new file mode 100644 index 00000000..dc7badb3 --- /dev/null +++ b/man/2/spki @@ -0,0 +1,446 @@ +.TH SPKI 2 +.SH NAME +SPKI: Cert, Hash, Key, Name, Seqel, Signature, Subject, Toplev, Valid \- simple public key infrastructure +.SH SYNOPSIS +.EX +include "bufio.m"; +include "sexprs.m"; +include "keyring.m"; +include "spki.m"; +spki := load SPKI SPKI->PATH; + +Hash: adt { + alg: string; + hash: array of byte; + + sexp: fn(h: self ref Hash): ref Sexprs->Sexp; + text: fn(h: self ref Hash): string; + eq: fn(h1: self ref Hash, h2: ref Hash): int; +}; + +Key: adt { + pk: ref Keyring->PK; # either pk/sk or hash might be nil + sk: ref Keyring->SK; + halg: string; + hash: ref Hash; + + hashed: fn(k: self ref Key, alg: string): array of byte; + sigalg: fn(k: self ref Key): string; + text: fn(k: self ref Key): string; + sexp: fn(k: self ref Key): ref Sexprs->Sexp; + eq: fn(k1: self ref Key, k2: ref Key): int; +}; + +Name: adt { + principal: ref Key; + names: list of string; + + isprincipal: fn(n: self ref Name): int; + local: fn(n: self ref Name): ref Name; + islocal: fn(n: self ref Name): int; + isprefix: fn(n1: self ref Name, n2: ref Name): int; + text: fn(n: self ref Name): string; + sexp: fn(n: self ref Name): ref Sexprs->Sexp; + eq: fn(n1: self ref Name, n2: ref Name): int; +}; + +Cert: adt { + e: ref Sexprs->Sexp; # S-expression, if originally parsed + issuer: ref Name; + subject: ref Subject; + valid: ref Valid; + pick { + A or KH or O => # auth, keyholder or object + delegate: int; + tag: ref Sexprs->Sexp; + N => # name + } + + text: fn(c: self ref Cert): string; + sexp: fn(c: self ref Cert): ref Sexprs->Sexp; +}; + +Subject: adt { + pick{ + P => + key: ref Key; + N => + name: ref Name; + O => + hash: ref Hash; + KH => + holder: ref Name; + T => + k, n: int; + subs: cyclic list of ref Subject; + } + + eq: fn(s1: self ref Subject, s2: ref Subject): int; + principal: fn(s: self ref Subject): ref Key; + text: fn(s: self ref Subject): string; + sexp: fn(s: self ref Subject): ref Sexprs->Sexp; +}; + +Signature: adt { + hash: ref Hash; + key: ref Key; # find by hash if necessary + sa: string; + sig: list of (string, array of byte); + + sexp: fn(s: self ref Signature): ref Sexprs->Sexp; + text: fn(s: self ref Signature): string; +}; + +Seqel: adt { + pick{ + C => + c: ref Cert; + K => + k: ref Key; + O => + op: string; + args: list of ref Sexprs->Sexp; + S => + sig: ref Signature; + E => + exp: ref Sexprs->Sexp; + } + + text: fn(se: self ref Seqel): string; +}; + +Valid: adt { + notbefore: int; + notafter: int; + + intersect: fn(a: self Valid, b: Valid): (int, Valid); + text: fn(a: self Valid): string; + sexp: fn(a: self Valid): ref Sexprs->Sexp; +}; + +Toplev: adt { + pick { + C => + v: ref Cert; + Sig => + v: ref Signature; + K => + v: ref Key; + Seq => + v: list of ref Seqel; + } +}; + +init: fn(); +date2epoch: fn(s: string): int; # YYYY-MM-DD_HH:MM:SS +epoch2date: fn(t: int): string; +time2secs: fn(s: string): int; # HH:MM:SS +secs2time: fn(t: int): string; + +# parse structures +parse: fn(s: ref Sexprs->Sexp): (ref Toplev, string); +parseseq: fn(s: ref Sexprs->Sexp): list of ref Seqel; +parsecert: fn(s: ref Sexprs->Sexp): ref Cert; +parsesig: fn(s: ref Sexprs->Sexp): ref Signature; +parsename: fn(s: ref Sexprs->Sexp): ref Name; +parsekey: fn(s: ref Sexprs->Sexp): ref Key; +parsehash: fn(s: ref Sexprs->Sexp): ref Hash; +parsecompound: fn(s: ref Sexprs->Sexp): ref Name; + +# tags +maketag: fn(e: ref Sexprs->Sexp): ref Sexprs->Sexp; +tagintersect: fn(t1: ref Sexprs->Sexp, t2: ref Sexprs->Sexp): + ref Sexprs->Sexp; +tagimplies: fn(t1: ref Sexprs->Sexp, t2: ref Sexprs->Sexp): int; + +# hash canonical s-expression +hashbytes: fn(a: array of byte, alg: string): array of byte; +hashexp: fn(e: ref Sexprs->Sexp, alg: string): array of byte; +.EE +.SH DESCRIPTION +.B SPKI +provides data types and operations to help build implementations of the Simple Public Key Infrastructure +(SPKI). +It provides types for hash values, public and private keys, local and extended names, +principals and compound principles, certificates, validity periods, signatures, and proof sequences. +It also provides operations on authorisation tags. +Externally, SPKI represents all such things as particular forms of S-expression, internally represented using +.B Sexprs->Sexp +from +.IR sexprs (2). +.PP +.B Init +must be called before invoking any other operation of the module. +.PP +Most types defined here provide several common operations: +.TP +.IB t1 .eq( t2 ) +Return true iff values +.I t1 +and +.I t2 +are equal. +.TP +.IB t .sexp() +Return an S-expression +.I s +representing the value of +.IR t . +Subsequently, the +.B Sexp +operation +.IR s .pack() +will yield an array of bytes containing the value +.I t +in SPKI's canonical S-expression form. +.TP +.IB t .text() +Return a textual representation of the value +.IR t ; +it is often just the textual representation of the corresponding S-expression. +.PP +.B Hash +is the internal representation of hash values, +containing an +algorithm name +.B alg +and the +.B hash +itself as an array of bytes. +A +.B Hash +value can be created from an S-expression representing a SPKI +.B <hash> +element +by +.BR parsehash . +It returns nil if the S-expression was ill-formed. +.PP +.B Key +represents public and private keys, +with an optional associated hash algorithm when signing, and +an optional hash of the key itself. +SPKI identifies principals and public keys, thus each instance of a principal +in the other data structures is represented by a +.B Key +giving the corresponding public key, or its hash, or both. +Currently the public and private (secret) key values have types defined by +.IR keyring-intro (2). +A +.B Key +value can be created from an S-expression representing a SPKI +.B <public-key> +element by +.BR parsekey . +It returns nil if the S-expression was ill-formed. +.PP +.B Name +represents both local and extended names, and simple principals consisting of just a key. +The field +.B principal +gives the key that defines the name space in which the list of names is interpreted. +For simple principles, the list of +.B names +is nil. +A local name has exactly one name in the list. +Two parsing functions convert to +.B Name +from S-expressions. +.B Parsename +parses a SPKI +.B <name> +element: +.BI (name +[ +.I principal +] +.I name +\&... +.BR ), +where +.I principal is either a +.B <public-key> +or a +.B <hash> +element. +.B Parsecompound +accepts either a +.B <name> +element as above, or a +.B <public-key> +or its +.BR <hash> . +Both functions return nil if the S-expression is ill-formed. +.PP +.B Subject +represents the subjects of SPKI name and authorisation certificates. +It has several variants in a +.B pick +adt, with suitable fields for each variant: +.TP +.B Subject.P +A simple principal: a +.BR key . +.TP +.B Subject.N +A group of principals or a delayed binding to a principal: a +.BR name . +.TP +.B Subject.O +The +.B hash +of an object. +.TP +.B Subject.KH +A keyholder certificate, that says something about a key's +.B holder +(represented by a +.BR Name ). +.TP +.B Subject.T +A +.I threshold +subject, used only in authorisation certificates. +The +.I n +subsidiary subjects are listed in +.BR subs ; +of those, at least +.I k +must sign a request for it to be authorised. +.TP +.B Subject +provides the common operations +.BR eq , +.B sexp +and +.BR text , +and a further operation: +.TP +.IB s .principal() +If +.I s +is a simple principal or a name, return the +.B Key +defining the principal, if known; return nil otherwise. +.PP +Subjects appear only as a subsidiary item in certificates and do not have a parsing function. +.PP +.B Cert +represents SPKI certificates. +There are four variants, represented by a pick adt: +.B Cert.A +(authorisation); +.B Cert.KH +(keyholder); +.B Cert.O +(object); and +.B Cert.N +(name). +The following fields and operations are common to all variants: +.TP +.B e +original S-expression (if created by +.BR parsecert ) +to allow hashes and signatures to be computed on the SPKI canonical form of the certificate +.TP +.B issuer +The simple principal (represented as a name) that issued an authorisation, keyholder or object certificate, +or the +.B <issuer-name> +of a name certificate (allowing both local and extended names not just simple principals). +.TP +.B subject +The +.B Subject +of the certificate. +Name certificates may not have threshold subjects. +.TP +.B valid +Optional restriction on the certificate's validity +(see +.B Valid +for details). +.PP +Name certificates have only the fields above; the others have several more fields: +.TP +.B +delegate +True iff the certificate carries delegation rights (ie, +.B (propagate) +in the S-expression representation). +.TP +.B tag +An S-expression that expresses the authority granted by the certificate. +The expression +.B "(tag (*))" +means `all permissions'. +.PP +A +.B Cert +value +can be created from an S-expression representing a SPKI +.B <cert> +element by +.BR parsecert . +It returns nil if the expression was ill-formed. +.PP +SPKI +.B tag +expressions, represented internally by +.B Sexprs->Sexpr +trees, form a partial order, +including the pattern operations +.BR (*) , +.BR "(* set " ... +.BR ), +.BR "(* prefix " ... +.BR ), +.BR "(* range " ... +.BR ), +and as an extension, +.BR "(* suffix " ... +.BR ). +Given two tag expressions +.I t1 +and +.IR t2 , +.I tagintersect +returns a tag expression representing +.I t1 +∩ +.IR t2 ; +.B tagimplies +returns true iff tag +.I t1 +implies tag +.IR t2 : +(\fIt1\fP∩\fIt2\fP)=\fIt2\fP. +Both functions work correctly when +.I t1 +and +.I t2 +contain any legal combination of pattern operations. +.PP +SPKI structures are converted to a canonical form of S-expression to be hashed or signed +(with or without hashing). +.B Hashbytes +returns an array of bytes containing the result of hashing array +.I a +using hash algorithm +.I alg +(either +.B sha1 +or +.BR md5 ). +.B Hashexp +returns an array of bytes containing the hash of the canonical form of expression +.I e +using hash algorithm +.IR alg . +.SH SOURCE +.B /appl/lib/spki.b +.SH SEE ALSO +.IR bufio (2), +.IR sexprs (2), +.IR spki-verifier (2) diff --git a/man/2/spki-verifier b/man/2/spki-verifier new file mode 100644 index 00000000..0218c75a --- /dev/null +++ b/man/2/spki-verifier @@ -0,0 +1,91 @@ +.TH SPKI-VERIFIER 2 +.SH NAME +verifier: verify \- verify sequence of SPKI elements +.SH SYNOPSIS +.EX +include "bufio.m"; +include "sexprs.m"; +include "spki.m"; + +sexprs := load Sexprs Sexprs->PATH; +Sexp: import sexprs; + +spki := load SPKI SPKI->PATH; +Name, Seqel, Subject, Valid: import spki; + +verifier := load Verifier Verifier->PATH; + +Speaksfor: adt { + subject: ref Subject; + name: ref Name; + regarding: ref Sexp; + valid: ref Valid; +}; + +init: fn(); +verify: fn(seq: list of ref Seqel): + (ref Speaksfor, list of ref Seqel, string); +.EE +.SH DESCRIPTION +.B Verifier +checks SPKI proof sequences. +This initial implementation provides a single basic operation. +Further work will allow (via channels and processes) verification +to detect and refresh expired credentials, to support `pull' authentication, +for instance. +.PP +.B Init +must be called before any other operation of the module. +.PP +A +.B Speaksfor +value represents a claim that a given +.I subject +entity +speaks for (on behalf of) a given +.I name +regarding a set of statements, with validity optionally limited to a given period. +That is, when during the agreed time, +.I subject +makes a statement that is in the agreed sete, it is treated +as if +.I name +had said it directly. +The set of statements is defined by a SPKI `tag' expression, represented as +an S-expression. +In particular, the +.B "(tag (*))" +means that +.I subject +speaks for +.I name +about everything. +A claim can be taken as true if supported by acceptable evidence, +for instance a collection of signed certificates. +.PP +.B Verify +does the actual verification of a sequence +.I seq +of SPKI certificates, signatures and operations +that makes and supports a claim that an entity speaks for another. +It returns a tuple +.BI ( claim,\ badel,\ err ) . +On success, +.I claim +refers to a +.B Speaksfor +value that summaries the statement verified by the sequence. +On failure, +.I claim +is nil, +.I badel +is a list of sequence elements headed by the first element of +.I seq +that failed verification, and +.I err +is the reason it failed. +.SH SOURCE +.B /appl/lib/spki/verifier.b +.SH SEE ALSO +.IR sexprs (2), +.IR spki (2) diff --git a/man/2/spree b/man/2/spree new file mode 100644 index 00000000..1cd517b3 --- /dev/null +++ b/man/2/spree @@ -0,0 +1,604 @@ +.TH SPREE 2 +.SH NAME +Spree \- distributed interactive sessions. +.SH SYNOPSIS +.EX +.ps -1 +.vs -1 +include "sys.m"; +include "draw.m"; +include "sets.m"; +include "spree.m"; +spree := load Spree Spree->PATH; +Range, Object, Clique, Member: import spree; +Set: import Sets; +Archive: import Archives; + +Range: adt { + start: int; + end: int; +}; + +Object: adt { + transfer: fn(o: self ref Object, + r: Range, dst: ref Object, i: int); + setvisibility: fn(o: self ref Object, + visibility: Set); + setattrvisibility: fn(o: self ref Object, + name: string, visibility: Set); + setattr: fn(o: self ref Object, + name: string, val: string, vis: Set); + getattr: fn(o: self ref Object, name: string): string; + delete: fn(o: self ref Object); + deletechildren: fn(o: self ref Object, r: Range); + + id: int; + parentid: int; + children: array of ref Object; + objtype: string; + visibility: Set; + # ...private data +}; + +Clique: adt { + new: fn(parent: self ref Clique, archive: ref Archive, + owner: string): (int, string, string); + newobject: fn(clique: self ref Clique, parent: ref Object, + visibility: int, objtype: string): ref Object; + action: fn(clique: self ref Clique, cmd: string, + objs: list of int, rest: string, whoto: int); + member: fn(clique: self ref Clique, id: int): ref Member; + start: fn(clique: self ref Clique); + breakmsg: fn(clique: self ref Clique, whoto: Sets->Set); + members: fn(clique: self ref Clique): list of ref Member; + owner: fn(clique: self ref Clique): string; + hangup: fn(clique: self ref Clique); + notify: fn(clique: self ref Clique, cliqueid: int, msg: string); + + objects: array of ref Object; + cliqueid: int; + # ...private data +}; + +Member: adt { + obj: fn(m: self ref Member, id: int): ref Object; + del: fn(m: self ref Member, suspend: int); + + id: int; + name: string; + # ...private data +}; + +Engine: module { + init: fn(srvmod: Spree, clique: ref Clique, argv: list of string): string; + command: fn(member: ref Member, e: string): string; + join: fn(member: ref Member , e: string, suspended: int): string; + leave: fn(member: ref Member): int; + notify: fn(fromid: int, s: string); + readfile: fn(f: int, offset: big, count: int): array of byte; +}; + +Archives: module { + Archive: adt { + argv: list of string; # how to restart the session. + members: array of string; # members involved. + info: list of (string, string); # any other information. + objects: array of ref Object; + }; + init: fn(mod: Spree); + write: fn(clique: ref Clique, info: list of (string, string), file: string, members: Set): string; + read: fn(file: string): (ref Archive, string); + readheader: fn(file: string): (ref Archive, string); +}; + +rand: fn(n: int): int; +.ps +1 +.vs +1 +.EE +.SH DESCRIPTION +.I Spree +provides a general server interface that allows sets of distributed +clients, +.IR cliques , +to interact in a controlled manner, with the +interaction mediated +by Limbo modules, known as +.IR engines . +Each engine decides on the rules +of its particular clique; the engine interface is described +at the end of this manual page, under +``Module Interface''. +.PP +This manual page describes the +interface as presented to an engine +once it has been loaded by +.IR spree . +A loaded instance of an engine is responsible for a particular +.IR clique , +in which one or more +.I members +participate. Messages sent by members +are interpreted by the engine, which +responds by making changes to the hierarchical +.I object +database held by the clique. +Behind the scenes +.I spree +distributes updates to this database to members +of the clique as appropriate (see +.IR spree (4) +for details). +.SS "Objects and visibility" +Objects hold a clique's visible state. An object +has a unique integer +.IR id , +which is an index into the array +.IB clique .objects\fR;\fP +it also holds a set of attribute-value pairs, a type, and +zero or more child objects. Together, all the objects +in the clique form a hierarchical tree, rooted at +the +.IR "root object" +(id 0), which always exists. +Each attribute and each object also has an associated +.IR "visibility set" , +the set of member that sees updates to the attributes or the children +of the object. Each member has a unique id; +in a visibility set (see +.IR sets (2)), +a member is ``visible'' if the set contains the member's id. +.PP +Note that the visibility set of an object does not alter the visibility +of that object's attributes, but only that of its children (and of +their children: in general an object is visible to a member if the +intersection of all its ancestors' visibility sets contains that +member). +.PP +Objects can be transferred inside the hierarchy from one parent to +another. If an object is moved to a parent whose visibility conceals it +from a member, then it will appear to that member to have been deleted; +if it is later made visible, then it will be recreated for that +member. +A clique engine can almost always ignore this technicality, +except for one thing: the identifier used by a particular member to +identify an object is not necessarily the same as that used by the clique +engine. Thus when an engine receives an object id in a member's +message, it should convert it using the +.IB member .obj() +function. +.SS \fBClique\fP +The +.B Clique +type holds all the objects in a clique. It allows the +creation of new objects, and provides a way of communicating +with members directly. +All data members of a +.B Clique +should be treated as read-only. +.TP 10 +.IB clique .objects +This array holds the objects in the clique. An object with +identifier +.I id +is found at +.IB clique .objects[ id ]\fR.\fP +.TP +.IB clique .new(\fIarchive\fP, \fIowner\fP) +.B New +creates a new clique. +.I Archive +is an archive of the game to be created; +.IB archive \.argv +should be non-nil; its first element should name +the engine to be loaded (as a path relative to the +engine module directory, and without the +.B .dis +extension). +.TP +.IB clique .newobject(\fIparent\fP,\ \fIvisibility\fP,\ \fIobjtype\fP) +.B Newobject +creates a new object at the end +of +.IR parent 's +children; +If +.I parent +is nil, the new object is created under the root object. +The new object has visibility +.IR visibility , +and type +.IR objtype . +An object's type cannot be changed once +it has been created. +.TP +.IB clique .action(\fIcmd\fP,\ \fIobjs\fP,\ \fIrest\fP,\ \fIwhoto\fP) +.B Action +sends a message to some members without affecting +the object hierarchy. It can be used to send transient +events that have no meaning when stored statically +(for example, network latency probes). +The message is sent to the set of members given by +.IR whoto . +.I Objs +is assumed to be a list of object ids, which are +converted appropriately for each member +receiving the message; the final +message is a string built by concatenating +.IR cmd , +the list of object ids, and +.IR rest , +separated by spaces. +.TP +.IB clique .breakmsg(\fIwhoto\fP) +Messages are usually sent to clients in an uninterrupted +stream (as documented in +.IR spree (4)), +with a single read returning a potentially large +set of messages. +.B Breakmsg +arranges that subsequent messages received by the members specified in +.I whoto +will see not be merged with messages sent prior to the call to +.BR breakmsg . +This is used to enable a new client module to be started +without needing to pass it data received in the previous read. +.TP +.IB clique .member(\fIid\fP) +.B Member +yields the member corresponding to identifier +.IR id , +or +.B nil +if there is none. +.TP +.IB clique .membernamed(\fIname\fP) +.B Membernamed +searches for a member of +.I clique +named +.I name +and returns it if it finds it, otherwise +.BR nil . +.TP +.IB clique .members() +.B Members +returns a list of all the members of +.IR clique , +including those that have been suspended. +.TP +.IB clique .owner() +.B Owner +returns the name of the owner of the clique; +i.e. the user that created it. +.TP +.IB clique .hangup() +.B Hangup +terminates a game and informs all the +players of that fact. +.TP +.IB clique .notify(\fIcliqueid\fP, \fImsg\fP) +.B Notify +sends an informational message to another clique. +The clique so referenced must be either the parent +or a child of +.IR clique . +The message is not sent synchronously, +and care should be taken not to send messages that +can cause an indefinite recursion. +.SS Member +The +.B Member +type represents a member of a clique. +.TP 10 +.IB member .id +The member's identifier is an integer unique across all current members +of the clique, +but ids of members that have left the clique will +be reused. +There may not be two members of the same name in the +same clique. +.TP +.IB member .name +.B Name +holds the authenticated name of the member. +This is necessarily unique over the members +of a clique. +.TP +.IB member .obj(\fIid\fP) +.B Obj +converts from a member's external object +identifier to the clique's local +.B Object +that it represents. It returns +.B nil +if there is no such object. +.TP +.IB member .del(\fIsuspend\fP) +.B Del +deletes +.I member +from the clique; +no more requests from +.I member +will be received by the clique engine. +If +.I suspend +is non-zero, if a member of the same name joins again +it will be allocated the same object id, allowing a member +to leave and join again without losing state. +.SS \fBObject\fP +The +.B Object +type is the basic unit of clique engine state. +An object's children can be selectively concealed +from members; it holds a set of +.RI ( attribute ,\ value ) +pairs, each of which can be concealed likewise. +Where an argument +.IR r , +of +.B Range +type is used, it refers to a range of an object's +children starting at index +.IB r .start\fR,\fP +and finishing at +.IB r .end-1\fR.\fP +All the data members of an +.B Object +should be treated as read-only. +.TP 10 +.IB obj .setattr(\fIname\fP,\ \fIval\fP,\ \fIvis\fP) +.B Setattr +sets attribute +.I name +in +.I obj +to +.IR val. +If the attribute is being created for the +first time, then it will be given visibility +.IR vis . +.I Name +should be non-empty, and should not +contain any space characters. +Note that it is not possible for an attribute +to refer directly to an object by its identifier; +if this facility is needed, another identifying +scheme should be used. This also applies +to member identifiers, which will change +if the clique is saved and loaded again. +.TP +.IB obj .getattr(\fIname\fP) +.B Getattr +yields the current value of the +attribute +.I name +in +.IR obj . +If an attribute is not set, it yields +.BR nil . +.TP +.IB obj .delete() +.B Delete +removes +.I obj +from the object +hierarchy. +.TP +.IB obj .deletechildren(\fIr\fP) +.B Deletechildren +deletes children in range +.I r +from +.IR obj . +.TP +.IB obj .transfer(\fIr\fP,\ \fIdst\fP,\ \fIi\fP) +.B Transfer +transfers the children in range +.I r +from +.I obj +to just before the object at index +.I i +in +.IR dst . +It is permissible for +.I obj +and +.I dst +to be the same object. +.TP +.IB obj .setvisibility(\fIvisibility\fP) +.B Setvisibility +allows the set of members +given in +.I visibility +to see the children of +.IR obj , +and denies access to all others. +Members are notified of the change. +.TP +.IB obj .setattrvisibility(\fIname\fP,\ \fIvisibility\fP) +.B Setattrvisibility +allows the set of members +given in +.I visibility +to see the value of +.IR obj 's +attribute +.IR name , +and denies access to all others. +Members are not notified of the change; +if there is a need to communicate +the fact of an attribute becoming invisible to +members, it should be done by using another +(visible) attribute to communicate the change. +.SS "Archives" +The +.B Archives +module provides a means of committing a clique +to permanent storage and retrieving it later. +It should first be initialised by calling +.BR init , +passing the +.B Spree +module in +.IR mod . +.B Write +writes +.I clique +to the file +.IR file . +.I Info +gives a set of attributes and values associated with the clique; +.I members +gives the set of clique members for which visibility information +will be archived; visibility information for other members is forgotten. +.PP +.B Read +opens +.I file +and returns it as an +.B Archive +adt, say +.IR a . +.IB A .argv +holds the command line arguments to the clique module +(including the name of the module, its first element); +.IB a .members +gives the names of all archived members - the id +of an archived member is given by its index in the array; +.IB a .info +gives the list of attributes an values as stored by +.BR write ; +.IB a .objects +holds the clique objects. +.B Readheader +is just like +.B read +except that it parses the header only, so will return an +.B Archive +adt such that +.IB a .objects +is nil. +.SS "Module Interface" +An engine module, +.IR mod , +must implement the +following functions. Where a function returns a string, +it is interpreted as an error response to the member +responsible for the request; an empty string signifies +no error. +.TP +.IB mod ->init(\fIsrvmod\fP, \fIclique\fP, \fIargv\fP) +.B Init +initialises the clique engine. +.I Clique +is the clique that the engine is controlling, +and +.I srvmod +is the +.B Spree +module holding its associated data. +An error response from this function +causes the clique to be aborted. +.I Argv +gives a list of arguments to the engine, starting +with its module name. +.TP +.IB mod ->join(\fImember\fP, \fIe\fP, \fIsuspended\fP) +.I Member +has made a request to join the clique; +an error response causes the request to be +refused, otherwise the member joins the +clique. +.I E +is a message from the client about how it would like to +join the clique (e.g. +.BR join , +.BR watch , +etc). +.I Suspended +is non-zero if the member was previously suspended from the clique. +.TP +.IB mod ->leave(\fImember\fP) +.I Member +has left the clique. +If +.B leave +returns zero, the member will not be deleted from the +clique, but merely suspended until they should join again. +.TP +.IB mod ->command(\fImember\fP,\ \fIe\fP) +.I Member +has sent the command +.IR e . +The command usually follows +the simple message conventions +used in +.IR spree (4), +i.e. simple space-separated tokens. +.TP +.IB mod ->notify(\fIcliqueid\fP, \fIs\fP) +A notification, +.IR s , +has been posted to +the current clique +by the clique identified by +.IR cliqueid . +The posting clique is either a parent or a child of the current clique. +.TP +.IB mod . +.SH EXAMPLE +The following is a small, but working example +of a clique engine that acts as a chat server +(parsing error checking omitted, and white-space +compressed to save paper): +.PP +.EX +.ps -1 +.vs -1 +implement Cliquemodule; +include "sys.m"; + sys: Sys; +include "draw.m"; +include "../spree.m"; + spree: Spree; + Clique, Member: import spree; +clique: ref Clique; +clienttype(): string +{ + return "chat"; +} +init(g: ref Clique, srvmod: Spree): string +{ + (sys, clique, spree) = (load Sys Sys->PATH, g, srvmod); + return nil; +} +join(nil: ref Member): string +{ + return nil; +} +leave(nil: ref Member) +{ +} +command(member: ref Member, cmd: string): string +{ + clique.action("say " + string member.id + " " + cmd, nil, nil, ~0); + return nil; +} +.ps +1 +.vs +1 +.EE +.SH SOURCE +.B /appl/cmd/cliques/spree.b +.SH "SEE ALSO" +.IR spree (4), +.IR spree-objstore (2), +.IR spree-cardlib (2), +.IR spree-allow (2), +.SH BUGS +The reuse of object ids can lead to +problems when objects are deleted and +recreated on the server before clients become +aware of the changes. diff --git a/man/2/spree-allow b/man/2/spree-allow new file mode 100644 index 00000000..6265c9ca --- /dev/null +++ b/man/2/spree-allow @@ -0,0 +1,129 @@ +.TH SPREE-ALLOW 2 +.SH NAME +Allow \- filter client actions +.SH SYNOPSIS +.EX +include "spree.m"; +include "spree/allow.m"; +Clique, Member, Object: import Spree; +allow := load Allow Allow->PATH; + +init: fn(m: Spree, c: ref Clique); +add: fn(tag: int, member: ref Member, pattern: string); +del: fn(tag: int, member: ref Member); +action: fn(member: ref Member, cmd: string): (string, int, list of string); +archive: fn(archiveobj: ref Object); +unarchive: fn(archiveobj: ref Object); +.EE +.SH DESCRIPTION +A +.IR spree (2) +client can send arbitrary actions to a running +engine. The +.B Allow +module enables an engine to filter clients' +actions, permitting only actions matching +certain provided patterns to get through. +.PP +An action is conventionally formatted as +a sequence of space-separated words. +A +.I pattern +is a string consisting of a sequence of such words. +For a pattern to match a client's action, each word in the pattern +must match each word in the action. +Most pattern words are not special: they must match +literally. The exceptions are: +.TP +.B * +An asterisk matches any single word. +.TP +.B "&" +An ampersand matches any set of words. +Any words in the pattern after this are ignored. +.TP +.B %d +Matches a decimal integer. +.TP +.B %p +Matches a valid player id (decimal integer). +.TP +.B %o +Matches any valid object id (decimal integer). +The corresponding word in the list returned by +.B action +will be changed to the local object id from +the member's external representation. +.PP +.B Init +must be called first with the spree module, +.IR m , +and the current clique, +.IR c , +to initialise the module. +.PP +.B Add +adds the new +.I pattern +to the list of allowed actions; +.I tag +is an integer tag that the caller can later use to identify the +action, and +I member +is the clique member that is allowed to perform the action +(if nil, then any member will be allowed to perform the action). +.B Del +deletes patterns tagged with +.I tag +from the list of allowed actions. +If +.I member +is non-nil, then only patterns specific to +that member will be deleted. +.PP +.B Action +matches +.IR +.IR cmd , +an action performed by +.IR member , +against the list of all the allowed patterns. +It returns a tuple, say +.RI ( err\fR,\ \fItag\fR,\ \fItoks\fR). +If +.I cmd +does not match any pattern, then +.I err +will be non-nil and holds a string describing the +nature of the failure. +If a match is made, then +.I tag +holds the matched pattern's tag, as passed to +.BR add , +and +.I toks +holds the list of words in the action, with +object ids matched by +.B %o +changed to their local representation using +.IB member .obj\fR. +.PP +.B Archive +stores all the +.I allow +module's internal state as attributes on +.I archiveobj +(for card game engines, this is usually the +object returned from +.B cardlib->archive +(see +.IR cardlib (2))). +.B Unarchive +reverses this, restoring the module's internal state from +.IR archiveobj . +.SH SOURCE +/appl/spree/lib/allow.b +.SH "SEE ALSO" +.IR spree (2) , +.IR spree-cardlib (2) , +.IR spree-objstore (2) diff --git a/man/2/spree-cardlib b/man/2/spree-cardlib new file mode 100644 index 00000000..6c495902 --- /dev/null +++ b/man/2/spree-cardlib @@ -0,0 +1,628 @@ +.TH SPREE-CARDLIB 2 +.SH NAME +Cardlib \- support for card games in Spree engines. +.SH SYNOPSIS +.EX +include "sys.m"; +include "draw.m"; +include "sets.m"; +include "spree.m"; +include "spree/cardlib.m"; + +Object: import Spree; +cardlib := load Cardlib Cardlib->PATH; + +init: fn(spree: Spree, clique: ref Clique, archived: int); +selection: fn(stack: ref Object): ref Selection; + +makecard: fn(deck: ref Object, c: Card, rear: string): ref Object; +makecards: fn(stack: ref Object, r: Range, rear: string); +getcard: fn(card: ref Object): Card; +getcards: fn(stack: ref Object): array of Card; +setface: fn(card: ref Object, face: int); +flip: fn(stack: ref Object); +shuffle: fn(stack: ref Object); +discard: fn(stk, pile: ref Object, facedown: int); +deal: fn(stack: ref Object, n: int, stacks: array of ref Object, first: int); +sort: fn(stack: ref Object, rank, suitrank: array of int); + +addlayframe: fn(name: string, parent: string, layout: ref Layout, packopts: int, facing: int); +addlayobj: fn(name: string, parent: string, layout: ref Layout, packopts: int, obj: ref Object); +dellay: fn(name: string, layout: ref Layout); +maketable: fn(parent: string); + +newstack: fn(parent: ref Object, p: ref Member, spec: Stackspec): ref Object; + +archive: fn(): ref Object; +unarchive: fn(): ref Object; +setarchivename: fn(o: ref Object, name: string); +archivearray: fn(a: array of ref Object, name: string); +getarchiveobj: fn(name: string): ref Object; +getarchivearray: fn(name: string): array of ref Object; + +nmembers: fn(): int; + +Layout: adt { + lay: ref Object; +}; + +Stackspec: adt { + style: string; + maxcards: int; + title: string; + conceal: int; +}; + +Card: adt { + suit: int; + number: int; + face: int; +}; + +# a member currently playing +Cmember: adt { + ord: int; + id: int; + p: ref Member; + obj: ref Object; + layout: ref Layout; + sel: ref Selection; + + join: fn(p: ref Member, ord: int): ref Cmember; + index: fn(ord: int): ref Cmember; + find: fn(p: ref Member): ref Cmember; + findid: fn(id: int): ref Cmember; + leave: fn(cp: self ref Cmember); + next: fn(cp: self ref Cmember, fwd: int): ref Cmember; + prev: fn(cp: self ref Cmember, fwd: int): ref Cmember; +}; + +Selection: adt { + stack: ref Object; + ownerid: int; + isrange: int; + r: Range; + idxl: list of int; + + set: fn(sel: self ref Selection, stack: ref Object); + setexcl: fn(sel: self ref Selection, stack: ref Object): int; + setrange: fn(sel: self ref Selection, r: Range); + addindex: fn(sel: self ref Selection, i: int); + delindex: fn(sel: self ref Selection, i: int); + isempty: fn(sel: self ref Selection): int; + isset: fn(sel: self ref Selection, index: int): int; + transfer: fn(sel: self ref Selection, dst: ref Object, index: int); + owner: fn(sel: self ref Selection): ref Cmember; +}; +.EE +.SH DESCRIPTION +.I Cardlib +provides facilities to help in the implementation +of +.I spree (2) +engines that implement the +.IR spree-cards (4) +interface. +Facilities include the layout of clients' cards, +support for card selections, and card manipulation. +.PP +.B Init +must be called first to initialise the +.I Cardlib +module, giving it the +.I spree +module and the current clique. +.I Archived +should be non-zero if the card game is being restored from +an archive. +.SS Cards +The value of a playing card is represented by the +.B Card +adt, having attributes +.IR suit , +.IR number , +and +.IR face . +.I Suit +ranges from 0 to 3 inclusive, representing clubs, +diamonds, hearts and spades respectively; +.I number +ranges from 0 to 12 inclusive for the standard cards, +with ace low and king high - a joker is represented +by a number greater than 12; +.I face +represents whether the card is face up or face down +(0 is face down). +.PP +A actual card is represented by an object in the object hierarchy +of type +.BR card , +with attributes +.BR number , +.BR face , +and +.BR rear . +.B Number +is the suit/number of the card (held as +.IR n , +where +.IR n %4 +gives the suit, and +.IR n /4 +the rank). +.B Face +is as held in the +.B Card +adt, and +.B rear +is a number that represents the pattern on the +back of the card (numbered from 0 upwards). +Conventionally the +.B number +attribute is made invisible to all players when +the +.B face +attribute is set to zero. +.PP +.B Makecard +creates a new card of value +.IR c , +placing the new card object at the end of +.IR deck , +and setting the +.B rear +attribute to +.I rear +if it is non-nil. +.B Makecards +makes a set of cards, all face down, +in all four suits, having numbers within the range +.IR r . +.PP +.B Getcard +gets the value representation of a card from object +.IR card ; +.B getcards +gets the values of all the card objects within +.IR stack . +.B Setface +sets of +.I card +to +.IR face ; +the visibility of the card's number is changed appropriately. +.PP +The following few routines operate on stacks of cards: objects +which contain only card objects: +.B flip +reverses a stack of cards, reversing their faces as it does so; +.B shuffle +shuffles a stack of cards, and +.B sort +sorts a stack of cards by suit and then number, according to +.I rank +and +.IR suitrank . +.I Rank +and +.I suitrank +are permutations mapping number/suit to sort precedence (0 low). +If either of these are nil, then a default ranking scheme is chosen +(two low, ace high for number). +.B Discard +moves all the cards in +.I stk +onto +.IR pile , +turning them face down if +.I facedown +is non-zero. +.B Deal +deals out all the cards in +.I stack +as evenly as possible amongst +.IR stacks , +dealing to +.IB stacks [ first ] +first. +.SS Members and card selection +.I Cardlib +keeps a record of the current players of the game; +a player is represented by a +.B Cmember +adt; the players are assumed to sit in a circle, +numbered from 0 updwards; +.B nmembers +gives the number of current players. +Each player has a unique integer id, and an +associated selection +and card layout. +.TP 10 +.IB m .join(\fIm\fP,\ \fIord\fP) +Join a new player to the game; +.I m +is the clique member that's joining, and +.I ord +is where to slot the player in the circle of existing players. +If +.I ord +is -1, the player will be added at the end. +.TP +.IB m .leave() +Remove +.I m +from the list of current players. +.TP +.IB m .index(\fIord\fP) +.B Index +returns the +.IR ord th +player around the table. +.TP +.IB m .find(\fIm\fP) +Find the +.B Cmember +corresponding to member +.IR m . +.TP +.IB m .findid(\fIid\fP) +Find the +.B Cmember +with identifier +.IR id , +and return it. +.IB m .next(\fIfwd\fP) +.B Next +returns the next player around the table +from +.IR m . +If +.I fwd +is non-zero, it counts upwards, otherwise it counts +downwards. +.IB m .prev(\fIfwd\fP) +.B Prev +is the opposite of +.BR next . +If +.I fwd +is non-zero, it counts downwards, otherwise it +counts upwards. +.SS Selection +Each +.B Cmember +.I m +has an associated selection, +.IB m .sel\fR, +which consists of a selection +of some cards from a single stack of cards. +A selection can consist of either a range of cards within +a stack, or an arbitrary set of cards within a stack. +A stack can only be the subject of one selection; the +member that has that selection is known as its +owner. +.TP 10 +.IB sel .set(\fIstack\fP) +.B Set +makes +.I stack +(an object containing only card objects) +the subject of +.IR sel 's +selection. If +.I stack +is nil, the selection is cleared. +.TP +.IB sel .setexcl(\fIstack\fP) +.B Setexcl +is the same as +.B set +except that it will fail if the stack is owned +by a different player. It returns 0 if it fails, +otherwise non-zero. +.TP +.IB sel .setrange(\fIr\fP) +.B Setrange +sets the selection +.I sel +to be a range of cards within its stack. +If the selection had been of distinct cards (set using +.BR addindex ), +it is first cleared. +.TP +.IB sel .addindex(\fIi\fP) +.B Addindex +adds the card at index +.I i +to the selection +.IR sel . +If a range had previously been selected, +it is first cleared. +.TP +.IB sel .delindex(\fIi\fP) +.B Delindex +deletes the card at index +.I i +from the selection. +If the selection was previously a range, +this is a no-op. +.TP +.IB sel .isempty() +.B Isempty +returns non-zero if +.I sel +holds an empty selection. +.TP +.IB sel .isset(\fIindex\fP) +.B Isset +returns non-zero if the card at index +.I index +is contained within the selection +.IR sel . +.TP +.IB sel .transfer(\fIdst\fP,\ \fIindex\fP) +.B Transfer +moves all the cards in the selection +.I sel +to just before +.I index +within the stack +.IR dst . +.IB sel .owner() +.B Owner +returns the +.B Cmember +that owns the selection +.IR sel . +.SS Layout +Creating a stack of cards does not specify how it is to be displayed +to members of the game. Each member has a +.I layout +object which defines which objects are to be displayed to +that member, and how they are to be laid out. +Any member must see at most one layout object +(it is conventional to make a layout object visible only to +its owner). +Objects are laid out using tk-like +.IR pack (9) +semantics: +.I frames +pack together display objects or other frames. +A display object can lay out anything the card client knows +how to display (see ``Display Objects'', below). +.PP +.B Addlayframe +adds a new frame named +.I name +within +a layout frame named +.IR parent , +specific to +.IR layout . +If +.I parent +is nil, the frame is added to the root of the hierarchy. +If +.I layout +is nil, a frame is added to +.I parent +for each member that has a layout frame of that name. +.I Packopts +specifies how the frame is to be packed within its parent: +it is a bitmask, specifying the side of the cavity against which it is to be packed, +the place it is to be anchored should the cavity be bigger than its requested size, +how to fill its cavity, whether to expand its requested size to fill extra available space. +See +.IR pack (9) +for details of the packing algorithm. +The packing direction is specified with one of +.BR dTOP , +.BR dLEFT , +.BR dBOTTOM +or +.BR dRIGHT . +The anchor direction is specified with one of +.BR aCENTRE , +.BR aUPPERCENTRE , +.BR aUPPERLEFT , +.BR aCENTRELEFT , +.BR aLOWERLEFT , +.BR aLOWERCENTRE , +.BR aLOWERRIGHT , +.BR aCENTRERIGHT , +or +.BR aUPPERRIGHT . +.B FILLX +and +.B FILLY +specify how to fill unused space in its cavity +(not mutually exclusive), +and +.B EXPAND +requests unused space. +.I Facing +influences direction that objects are packed in +underneath the frame. It should be one of the +pack direction constants specified above +(e.g. +.BR dTOP ). +For instance, if +.B dRIGHT +is specified, then all objects packed underneath +have their attributes modified 90° clockwise, +as if the player in question was sitting on the +left of the table, looking right. +This feature means that it is possible +to set up a ``table'' in which layout objects +can be added to all players at the same time, but +which nonetheless looks different to each player +around the table. +.PP +.B Maketable +creates such a ``table'' for between 0 and 4 players. +It creates a frame for each player, named +.BI p n\fR, +where +.I n +is the ordinal number of the player around the table; +and an inner space, named +.BR public . +The +.I parent +argument to +.B maketable +gives the frame within which the table is to be created. +.PP +.B Addlayobj +adds a new display object +.I obj to the layout hierarchy. +.IR Name , +.IR parent , +.IR layout , +and +.I packopts +are the same as for +.B addlayframe +except that +if it is a stack object, then +.I packopts also specifies the +orientation of the stack, with one of the constants +.BR oRIGHT , +.BR oUP , +.BR oLEFT , +or +.BR oDOWN , +giving the direction in which cards are laid out +within the stack. +.PP +.B Dellay +deletes the object named +.I name +from the layout hierarchy. If +.I layout +is nil, it is deleted from all layouts, +otherwise from +.I layout +only. +.SS "Display Objects" +Currently, two kinds of objects can be displayed: stacks and +widgets. A stack has object type +.BR stack , +and contains only cards objects. +Attributes on the stack object define its appearance: +.B maxcards +gives the default size of the stack; +.B style +gives the style of stack layout, +currently one of +.B pile +(all the cards piled directly on top of one another), +or +.B display +(cards are spread out in the direction specified by +the orientation given in the packing options, see +Layout, above); +.B title +gives a title to display with the stack. +.PP +.B Newstack +creates a new stack according to the specifications in +.IR spec , +where +.I spec +is an adt that holds +.BR style , +.BR maxcards , +and +.BR title , +as described above. +If +.IB spec .conceal +is non-zero, the contents of the new stack will be made +invisible to all (except +.IR owner , +if +.I owner +is non-nil). +.PP +Widgets are created by making an object +of type +.RB `` widget +.IR type '', +where +.I type +is one of +.BR button , +.BR entry , or +.BR menu . +The +.B text +attribute controls the text that is displayed in the widget; +.B command +gives the text that will be sent to the engine +when the widget is activated, +and +.B width +specifies the widget of the widget, in multiples of the width +of the ``0'' character. +.PP +Entries can be made in a menu widget +by creating new objects of type +.B menuentry +inside a menu object. The +.B text +and +.B command +attributes have the usual meaning here. +.SS Archival +Engines that use +.I cardlib +should not use +.IR spree-objstore (2) +to archive their objects: +.I cardlib +provides an interface to do this, +and also knows how to archive and unarchive its own +internal state. +.PP +.B Archive +commits all the internal state of +.I cardlib +to the object hierarchy, prior to archival. +It returns an ``archive'' object +that can be used as a convenient place to put +attributes that need archiving but are not associated with +any particular object. +.B Setarchivename +associates +.I name +with the object +.I o +such that it can be retrieved when +unarchiving by calling +.B getarchiveobj +with the same name. +Similarly +.B Archivearray +associates a name with each object in the array +.I a +such that the array can be retrieved when unarchiving +by calling +.B getarchivearray +with the same name. +.I Name +should not end in a decimal digit. +.B Unarchive +unarchives +.IR cardlib 's +internal state. It returns the same archive object +that was returned by +.BR archive . +.SH SOURCE +.B /appl/spree/lib/cardlib.b +.SH "SEE ALSO" +.IR spree (2), +.IR spree-allow (2), +.IR spree-objstore (2) +.SH BUGS +This interface is not complete and is liable to change. diff --git a/man/2/spree-gather b/man/2/spree-gather new file mode 100644 index 00000000..b4b4aeab --- /dev/null +++ b/man/2/spree-gather @@ -0,0 +1,105 @@ +.TH SPREE-GATHER 2 +.SH NAME +Gatherengine \- module interface for pre-assembled groups. +.SH SYNOPSIS +.EX +implement Gatherengine; + +include "spree.m"; +include "spree/gather.m"; +Clique, Member: import Spree; + +init: fn(m: Spree, c: ref Clique, argv: list of string, archived: int): string; +clienttype: fn(): string; +maxmembers: fn(): int; +propose: fn(members: array of string): string; +start: fn(members: array of ref Member, archived: int); +command: fn(member: ref Member, c: string): string; +archive: fn(); +readfile: fn(f: int, offset: big, n: int): array of byte; +.EE +.SH DESCRIPTION +When implementing a +.IR spree (2) +engine, it is common to have the requirement that a certain number +of members are grouped together before actually starting the +engine. +.I Spree +provides no support for this directly; instead the +.I gather +module acts as an intermediate layer: engines that wish +this functionality should implement the +.B Gatherengine +interface. +The +.I gather +module also provides facilities for the automatic suspension and resumption +of players, clique archival, and members that watch but do not +participate. +.PP +.B Init +is called first, with +.IR m , +the +.I spree +module, and +.IR c , +the new clique. +.I Argv +gives a list of arguments to the engine (the first being +the name of the engine itself); +.I archived +is non-zero if the engine has been restored from an archive. +If +.B init +returns a non-nil string, it is taken to describe an error, and the +engine will be discarded. +.B Maxmembers +should return the maximum number of members that the engine +can accept; +.B clienttype +should return the kind of client that is expected by the +engine (e.g. +.B cards +for a card game engine). +.PP +.B Propose +proposes that a clique consisting of +.I members +(the names of the proposed members) +be started. It returns an error string: if this is non-nil, then +the clique is not started, otherwise the proposed +members are accepted into the clique, +and +.B start +is called, where +.I members +is the array of actual members (corresponding to the +members passed to +.BR propose ), +and +.I archived +is non-zero if the clique is being restored from an archive +(same as passed to +.BR init ). +.PP +Once a clique has been successfully started, +.B command +is called when a member sends a command to the +engine; +.I member +has sent the command, +and +.I c +is the command itself. +.B Command +should return a non-nil error string if the command fails. +.PP +When a clique is being archived, +.B archive +will be called to request the engine to store all its +internal state into the object hierarchy (this is the moment, +for instance, to call +.BR cardlib->archive ). +.SH "SEE ALSO" +.IR spree (2) , diff --git a/man/2/spree-objstore b/man/2/spree-objstore new file mode 100644 index 00000000..6a6be763 --- /dev/null +++ b/man/2/spree-objstore @@ -0,0 +1,63 @@ +.TH SPREE-OBJSTORE 2 +.SH NAME +Objstore \- support for object archiving in Spree engines. +.SH SYNOPSIS +.EX +include "spree.m"; +include "spree/objstore.m"; +Object: import Spree; +objstore := load Objstore Objstore->PATH; + +init: fn(m: Spree, c: ref Clique); +setname: fn(o: ref Object, name: string); +unarchive: fn(); +get: fn(name: string): ref Object; +.EE +.SH DESCRIPTION +The +.IR spree (2) +module provides an +.B Archives +module to allow storage of an engine's object hierarchy to a persistent +medium. This does not store the state internal to an engine that +is not reflected in the object hierarchy, e.g. global variables. +In particular, if an engine holds a variable referring to an object, +it is not able to reset that variable correctly when the archive is +later restored. +The +.B Objstore +module provides some support for the naming of objects +before archival, and for their retrieval by name, in order to enable this. +.PP +.B Init +must be called first with the spree module, +.IR m , +and the current clique, +.IR c . +When a module is archiving itself, it should name each object +that it wishes to retrieve, using +.BR setname . +It is permissible for a single object to be given multiple +names: the object will later be retrievable under any of its given +names. +.PP +When restoring from an archive, a module should call +.BR unarchive , +which scans through the object hierarchy looking +for named objects and storing their names. +After this, +.BI get( name ) +will return the object, +.IR o , +that was named +.IR name +by a previous +.BI setname( o ,\ name )\fR, +or +.B nil +if there was none such. +.PP +The names for an object are stored in the attribute ``§'', +which is cleared when +.B unarchive +is called. diff --git a/man/2/srv b/man/2/srv new file mode 100644 index 00000000..f217a0d9 --- /dev/null +++ b/man/2/srv @@ -0,0 +1,66 @@ +.TH SRV 2 +.SH NAME +srv \- network name and address translation when hosted +.SH SYNOPSIS +.EX +include "srv.m" +srv := load Srv Srv->PATH; +Srv: module +{ + init: fn(); + iph2a: fn(host: string): list of string; + ipa2h: fn(addr: string): list of string; + ipn2p: fn(protocol, service: string): string; +}; +.EE +.SH DESCRIPTION +.B Srv +provides access to the host operating system's +name and address translation when Inferno is running hosted. +The module's implementation is usually built-in to +.IR emu (1), +and then only on some platforms. +It uses the Internet name resolution services of the host operating system +(eg, +.B gethostbyname +on Unix systems). +Its services are normally only used internally by +.IR cs (8) +and +.IR dns (8), +and even they give priority to data in +.IR services (6) +and +.IR dns (6) +if available. +Other Inferno applications normally give network addresses to the functions of +.IR sys-dial (2), +and they are then translated automatically, using the services of +.IR cs (8). +.PP +.B Init +must be called before any other function is used. +.PP +Given a host name, +.B iph2a +returns a list of its Internet addresses (if any). +Given an Internet address, +.B ipa2h +returns a list of host names (if any) that have that address. +The results are only as accurate as the host system's name service. +.PP +.B Ipn2p +returns the port number (as a string) for the given +.I service +when accessed using a particular protocol +.I protocol +(typically +.B tcp +or +.BR udp ). +.SH SOURCE +.B /emu/port/srv.c +.SH SEE ALSO +.IR sys-file2chan (2), +.IR cs (8), +.IR dns (8) diff --git a/man/2/string b/man/2/string new file mode 100644 index 00000000..7d1c4298 --- /dev/null +++ b/man/2/string @@ -0,0 +1,177 @@ +.TH STRING 2 +.SH NAME +string: append, drop, in, prefix, quoted, splitl, splitr, splitstrl, +splitstrr, take, tobig, toint, tolower, toupper, unquoted \- string operations +.SH SYNOPSIS +.EX +include "string.m"; +str := load String String->PATH; + +append: fn(s: string, l: list of string): list of string; +drop: fn(s, cl: string): string; +in: fn(c: int, cl: string): int; +prefix: fn(pre, s: string): int; +splitl: fn(s, cl: string): (string, string); +splitr: fn(s, cl: string): (string, string); +splitstrl: fn(s, t: string): (string, string); +splitstrr: fn(s, t: string): (string, string); +take: fn(s, cl: string): string; +tobig: fn(s: string, base: int): (big, string); +toint: fn(s: string, base: int): (int, string); +tolower: fn(s: string): string; +toupper: fn(s: string): string; +quoted: fn(args: list of string): string; +unquoted: fn(s: string): list of string; +.EE +.SH DESCRIPTION +The +.I cl +argument to some of these functions is a character class in which +a +.B - +between any two characters indicates a range and a +.B ^ +in the first position means +.I not in +the class. +Example of classes are +.B \&"a-zA-Z" +and +.B +\&"^acg-mr"\c +\&. +.PP +.B Append +appends string +.I s +to the end of string list +.IR l . +.PP +.B Drop +removes the maximal prefix of string +.I s +that is in class +.IR cl . +.PP +.B In +returns 1 if +character +.I c +is in class +.I cl +and 0 if it is not. +.PP +.B Prefix +returns 1 if string +.I pre +is a prefix of string +.I s +and 0 if it is not. +.PP +.B Splitl +splits string +.I s +just before the first character in class +.IR cl . +.PP +.B Splitr +splits string +.I s +just after the last character in class +.IR cl . +.PP +.B Splitstrl +splits string +.I s +just before the leftmost segment of string +.I s +that consists entirely of string +.IR t , +and returns a tuple with the resulting pair of strings. +If +.I t +does not occur in +.IR s , +the result is +.RI ( s , nil ). +.PP +.B Splitstrr +splits string +.I s +just after the rightmost segment of string +.I s +that consists entirely of string +.IR t , +and returns a tuple with the resulting pair of strings. +If +.I t +does not occur in +.IR s , +the result is +.RI ( nil, s ). +.PP +.B Take +returns the maximal prefix of string +.I s +that is in class +.IR cl . +.PP +.B Toint +returns as an integer the value represented by the string +.IR s . +The string is scanned up to the first character inconsistent +with +.IR base . +The first inconsistent character marks the beginning of the +returned string. +Leading white-space characters are ignored. +The +.I base +can be any integer in the range 2 to 36, inclusive; +or 0 in which case the base can be specified as part +of the string, in Limbo style (e.g. 16rffff). +.PP +.B Tobig +has the same specification as +.B toint +except that converts to 64-bit +.BR big . +.PP +.B Tolower +converts all upper case letters in the string +.I s +to lower case letters. +.PP +.B Toupper +converts all lower case letters in the string +.I s +to upper case letters. +.PP +.B Quoted +takes a list of strings, +.IR args , +and returns a single string with the value of each element of +.I args +separated from the next by a single space. +When forming the string, the text of any element that +contains white space or single quotes is first quoted by +surrounding it by single quotes +.RB ( ' ... ' ) +within which each existing single quote is doubled +.RB ( '' ), +following the conventions of +.IR sh (1). +.PP +.B Unquoted +takes a string +.IR s , +quoted according to the conventions of +.BR quoted , +and splits it into separate strings. +It splits the string at each maximal sequence of +unquoted white space (blank, newline or tab), +stripping single quotes except where paired, +to form the corresponding list of strings, +which it returns. +.SH SOURCE +.B /appl/lib/string.b diff --git a/man/2/stringinttab b/man/2/stringinttab new file mode 100644 index 00000000..1dbf5c66 --- /dev/null +++ b/man/2/stringinttab @@ -0,0 +1,87 @@ +.TH STRINGINTTAB 2 +.SH NAME +stringinttab \- string table lookup module +.SH SYNOPSIS +.EX +include "strinttab.m"; +StringInt: import StringIntTab; + +strinttab := load StringIntTab StringIntTab->PATH; + +StringInt: adt{ + key: string; + val: int; +}; + +lookup: fn(tab: array of StringInt, key: string) : (int, int); +revlookup: fn(tab: array of StringInt, val: int) : string; +.EE +.SH DESCRIPTION +.B Stringinttab +provides functions that perform forward and reverse searches of an ordered table of +.I key\-value +pairs. +.PP +A table should be constructed as an array of +.B StringInt +entries, ordered by increasing +.I key +value. Keys ordering is determined by comparison of the Unicode +value of their characters. +.PP +.B Lookup +performs a binary search of +.I tab +for the +.B StringInt +entry whose +.B key +field has a value equal to +.I key +and returns a tuple: an +.B int +whose value is non-zero if a match has been found and zero otherwise, +and an +.B int +whose value is equal to the +.B val +field of the matching +.B StringInt +entry. +.PP +.B Revlookup +searches +.I tab +for the first +.B StringInt +entry whose +.B val +field has a value equal to +.I val +and returns the corresponding +.B key +string. +.SH EXAMPLES +.EX +T := load StringIntTab StringIntTab->PATH; + +fmtstringtab := array[] of { Strinttab->StringInt + ("html", FHtml), + ("latex", FLatex), + ("latexbook", FLatexBook), + ("latexpart", FLatexPart), + ("latexproc", FLatexProc), + ("latexslides", FLatexSlides), +}; + +(fnd, fmt) := T->lookup(fmtstringtab, "latexbook"); +fmtstring := T->revlookup(fmtstringtab, FLatex); +.EE +.SH SOURCE +.B /appl/lib/strinttab.b +.SH SEE ALSO +.IR hash (2) +.SH BUGS +.B Revlookup +performs a sequential search of the table. + diff --git a/man/2/styx b/man/2/styx new file mode 100644 index 00000000..d7208d00 --- /dev/null +++ b/man/2/styx @@ -0,0 +1,416 @@ +.TH STYX 2 +.SH NAME +Styx: Rmsg, Tmsg, dir2text, istmsg, packdir, packdirsize, readmsg, qid2text, unpackdir \- interface to Styx file protocol +.SH SYNOPSIS +.EX +include "styx.m"; +styx := load Styx Styx->PATH; + +Tmsg: adt { + tag: int; + pick { + Readerror => + error: string; # tag is unused in this case + Version => + msize: int; + version: string; + Auth => + afid: int; + uname, aname: string; + Attach => + fid, afid: int; + uname, aname: string; + Flush => + oldtag: int; + Walk => + fid, newfid: int; + names: array of string; + Open => + fid, mode: int; + Create => + fid: int; + name: string; + perm, mode: int; + Read => + fid: int; + offset: big; + count: int; + Write => + fid: int; + offset: big; + data: array of byte; + Clunk or + Stat or + Remove => + fid: int; + Wstat => + fid: int; + stat: Sys->Dir; + } + + read: fn(fd: ref Sys->FD, msize: int): ref Tmsg; + unpack: fn(a: array of byte): (int, ref Tmsg); + pack: fn(nil: self ref Tmsg): array of byte; + packedsize: fn(nil: self ref Tmsg): int; + text: fn(nil: self ref Tmsg): string; + mtype: fn(nil: self ref Tmsg): int; +}; + +Rmsg: adt { + tag: int; + pick { + Readerror => + error: string; # tag is unused in this case + Version => + msize: int; + version: string; + Auth => + aqid: Sys->Qid; + Attach => + qid: Sys->Qid; + Flush => + Error => + ename: string; + Clunk or + Remove or + Wstat => + Walk => + qids: array of Sys->Qid; + Create or + Open => + qid: Sys->Qid; + iounit: int; + Read => + data: array of byte; + Write => + count: int; + Stat => + stat: Sys->Dir; + } + + read: fn(fd: ref Sys->FD, msize: int): ref Rmsg; + unpack: fn(a: array of byte): (int, ref Rmsg); + pack: fn(nil: self ref Rmsg): array of byte; + packedsize: fn(nil: self ref Rmsg): int; + text: fn(nil: self ref Rmsg): string; + mtype: fn(nil: self ref Rmsg): int; +}; + +init: fn(); + +readmsg: fn(fd: ref Sys->FD, msize: int): (array of byte, string); +istmsg: fn(f: array of byte): int; + +compatible: fn(t: ref Tmsg.Version, msize: int, version: string): (int, string); + +packdirsize: fn(d: Sys->Dir): int; +packdir: fn(d: Sys->Dir): array of byte; +unpackdir: fn(f: array of byte): (int, Sys->Dir); +dir2text: fn(d: Sys->Dir): string; +qid2text: fn(q: Sys->Qid): string; + +VERSION: con "9P2000"; +MAXWELEM: con 16; +NOTAG: con 16rFFFF; +NOFID: con ~0; +IOHDRSZ: con \fIimplementation-defined\f5; +MAXRPC: con \fIimplementation-defined\f5; +.EE +.SH DESCRIPTION +.B Styx +provides a Limbo interface to send and receive messages of the Styx file service protocol, +described by Section 5 of this manual (a thorough reading of which +is advised before using this module). +.B Init +must be called before using any other function in the module. +.PP +A Styx client transmits requests to a server as `T-messages' +and receives replies in matching `R-messages'. +A T-message is here represented by values of the type +.BR Tmsg , +and an R-message by values of type +.BR Rmsg . +Every message has a +.B tag +value, and the alternatives of the pick adt represent the possible operation types of a T-message, +generally with parameter names and types corresponding to those described in section 5. +The exceptions are: +.B Tmsg.Write +and +.B Rmsg.Read +contain an array of byte, +.BR data , +to hold the data for the corresponding message, and the `count' parameter of the message is simply the length of that array; +and there is an alternative labelled +.B Readerror +that does not appear in the protocol but is used to represent input errors as described below. +Also note that values that are `unsigned' integers in the protocol are typically given signed integer +types in the Limbo representation (in particular, fids, qid paths, counts and offsets), and applications +should take appropriate care when manipulating them. +.PP +The following functions are provided by +.BR Tmsg: +.TP +.BI read( fd\fP,\fP\ msize ) +Read file descriptor +.I fd +to obtain exactly one T-message and return (a reference to) the corresponding +.BR Tmsg . +A nil value is returned on end of file. +Otherwise, if the read fails or the data read does not form a valid T-message, +the value returned will be a +.B Tmsg.Readerror +value in which the +.B error +member describes the error. +.I Msize +gives the maximum number of bytes in any acceptable T-message, +and should be the value negotiated in the exchange of +.B version +messages; +any incoming message larger than that will result in a diagnostic as a +.B Tmsg.Readerror +value. +An +.I msize +of 0 means `no limit negotiated' and should (only) be used until a message size +has been negotiated by exchange of +.IR version (5) +messages. +.TP +.IB t .pack() +Return an array of bytes containing the value of +.I t +in the machine-independent format described in Section 5. +It can return nil only if the message +.I t +is itself nil or has an invalid type. +.TP +.BI unpack( a ) +The array +.I a +is assumed to contain zero or more T-messages. +.B Unpack +attempts to unpack the first message, and returns a tuple of the form +.RI ( n , v ). +If successful, +.I n +is the number of bytes at the start of +.I a +used by the message, and +.I v +is the corresponding +.B Tmsg +value. +If +.I a +contains the prefix of a valid message but more data is required to complete it, +.I n +is zero (and +.I v +is nil); the caller will typically read more data, append it to +.IR a , +and try again. +If the message is invalid, +.I n +is -1 +and +.I v +is nil. +.TP +.IB t .packedsize() +Return the number of bytes required for the value of +.I t +when packed in its machine-independent format. +(Zero is returned if +.I t +is invalid.) +.TP +.IB t .text() +Return a printable string showing the contents of +.IR t , +for tracing or debugging. +.TP +.IB t .mtype() +Return the Styx message type of the message. +.PP +An R-message is represented by +.BR Rmsg . +Its member functions behave exactly as those for +.BR Tmsg , +except that they operate on R-messages not T-messages. +.PP +When a client reads a directory, the data returned in the reply must be formatted +as described in +.IR read (5): +an array of directory entries, one per file, with each entry formatted in +a machine-independent format. +An appropriate array value can be produced by +.B packdir +from a +.B Sys->Dir +structure, as used by +.IR sys-stat (2). +The space that packed representation will take can be calculated beforehand by +.BR packdirsize . +The server will usually fill the buffer for the reply to the read +with as many entries as will fit, +checking the space remaining against the result of +.B packdirsize +and if the value will fit, storing the result of +.BR packdir . +Given an array +.I a +containing at most one packed directory value (as produced by +.BR packdir ), +.B unpackdir +returns a tuple +.RI ( n,\ d ) +where +.I n +is \-1 if +.I a +is illegally formatted; +.I n +is zero if +.I a +does not contain a complete directory entry value; +and otherwise +.I n +is the number of bytes of +.I a +used to produce the unpacked +.B Dir +value +.I d . +.PP +The functions +.B dir2text +and +.B qid2text +produce printable strings showing the contents of the corresponding data structures, +for use when tracing or debugging. +.PP +Applications that acts as file servers will read T-messages and +reply with R-messages. +They can use +.B Tmsg.read +to read each T-message, build an +.B Rmsg +reply value +.IR r , +and use +.IB r .pack +to produce an array of bytes to be written in reply by +.B Sys->write +(see +.IR sys-read (2)). +.PP +A few specialised programs might need the lower-level function +.B readmsg +that underlies +.B Tmsg.read +and +.BR Rmsg.read . +It reads a single message, which can be either a T-message or R-message, +and returns it as an array of bytes, +which can then be unpacked using +.B Tmsg.unpack +or +.BR Rmsg.unpack . +.I Msize +is the negotiated message size, or 0 meaning `no limit'. +The predicate +.B istmsg +returns true if the contents of array +.I f +looks like a packed representation of a T-message, +judging only by its +.I type +byte. +.PP +When generating the +.B version +message (see +.IR version (5)), +the constant +.B NOTAG +can be used in +.B Tmsg.tag +and +.B Rmsg.tag +to represent `no tag value'. +The constant +.B VERSION +names the current version of the protocol, and can be +used as the value of +.BR Tmsg.version . +.PP +.B Compatible +can be used by a server to +compare its +.I msize +and +.I version +(which is typically +.BR VERSION ) +to those in the +.B Tmsg.Version +message received from a client, to decide its reply, +following the rules in +.IR version (5). +It returns a tuple +.RI ( m ", " v ) +with values for use in the +.B Rmsg.Version +reply. +.I M +is the lesser of +.I msize +and +.IB t .msize , +and +.I v +is the negotiated protocol version, or the value \f5"unknown"\f1 +if no version could be agreed. +The constant +.B MAXRPC +is a reasonable value for +.I msize +on current systems. +The resulting value +.I m +can subsequently be given to the various read functions as the limit +.IR msize . +The constant +.B IOHDRSZ +gives the amount to allow for protocol overhead, when limiting data size for +.B Tmsg.Write +and +.BR Rmsg.Read . +.PP +The constant +.B NOFID +can be used as the value of +.B afid +of the +.B attach +message when authentication is not required (see +.IR attach (5)). +.PP +The constant +.B MAXWELEM +gives the protocol-defined limit on the length of the arrays +.B Tmsg.names +and +.BR Rmsg.qids . +For specialised applications, the module defines constants +.BR Tversion , +.BR Rversion , +etc. for the message types of the protocol, and the +other constants mentioned in Section 5. +.SH SOURCE +.B /appl/lib/styx.b +.SH SEE ALSO +.IR styxservers (2), +.IR intro (5) diff --git a/man/2/styxconv b/man/2/styxconv new file mode 100644 index 00000000..ca5d9f49 --- /dev/null +++ b/man/2/styxconv @@ -0,0 +1,77 @@ +.TH STYXCONV 2 +.SH NAME +styxconv \- convert between old and new Styx +.SH SYNOPSIS +.EX +include "styxconv.m"; +styxconv := load Styxconv Styxconv->PATH; + +init: fn(); +styxconv: fn(to: ref Sys->FD, from: ref Sys->FD, pid: chan of int); +.EE +.SH DESCRIPTION +.B Styxconv +converts between the previous version of the Styx protocol, +as used for instance in Inferno's Third Edition and earlier, +and the current version of the protocol, +based on 9P2000 and defined by +.IR intro (5). +.PP +.B Init +must be called before any other function in the module. +.PP +The function +.B styxconv +takes two file descriptors. +.I From +must be a connection to a file server that serves the original, older +version of Styx. +.I To +is a connection, perhaps a pipe, to something that requires the current protocol; +.B Sys->mount +for instance +(see +.IR sys-bind (1)). +.B Styxconv +is spawned by the caller, to create a process that copies messages between +.I from +and +.IR to , +converting as required as it goes. +Its process ID is the only message sent on +channel +.IR pidc ; +it must be received by +.BR styxconv 's +caller. +See the example below. +.SH EXAMPLE +Apply +.B styxconv +to file descriptor +.I fd +connected to an old Styx server: +.IP +.EX +cvstyx(fd: ref Sys->FD): ref Sys->FD +{ + styxconv := load Styxconv Styxconv->PATH; + if(styxconv == nil) + return nil; + p := array[2] of ref Sys->FD; + if(sys->pipe(p) < 0) + return nil; + styxconv->init(); + pidc := chan of int; + spawn styxconv->styxconv(p[1], fd, pidc); + <-pidc; + return p[0]; +} +.EE +.SH SOURCE +.B /appl/lib/styxconv +.SH SEE ALSO +.IR bind (1), +.IR sys-bind (2), +.IR sys-pipe (2), +.IR intro (5) diff --git a/man/2/styxpersist b/man/2/styxpersist new file mode 100644 index 00000000..60f370bf --- /dev/null +++ b/man/2/styxpersist @@ -0,0 +1,80 @@ +.TH STYXPERSIST 2 +.SH NAME +styxpersist \- persistent Styx connection +.SH SYNOPSIS +.EX +include "sys.m"; +include "styxpersist.m"; +styxpersist := load Styxpersist Styxpersist->PATH; + +init: fn(clientfd: ref Sys->FD, usefac: int, keyspec: string) + : (chan of chan of ref Sys->FD, string); +.EE +.SH DESCRIPTION +.I Styxpersist +tries to maintain a persistent Styx connection for its client. +.B Init +starts a process to serve Styx for the client on +.IR clientfd . +If +.I usefac +is non-zero, +.I styxpersist +will use +.IR factotum (2) +to do plan 9-style authentication if necessary, +and +.I keyspec +gives attribute-value pairs to pass to +.IR factotum 's +.B proxy +function. +.PP +.B Init +returns a tuple, say +.RI ( c ,\ err ). +If things have started successfully, +.I c +holds a channel that +.I styxpersist +uses to request a new connection to the server. +The caller of +.B init +should arrange that a process is ready to repeatedly receive on this channel, +dial the server, and send the resulting file descriptor (or +.B nil +if the connection was unsuccessful) +on the channel received, +.PP +If +.B init +failed, +.I c +will be +.B nil +and +.I err +describes the error. +.PP +If the server goes down, it redials as above, and tries to +re-open all the files that were open in the previous connection. +In the meantime all client access to the namespace is blocked. +.PP +Note that this service should only be used on conventional +file servers, where most reads and writes are idempotent. +.SH SOURCE +.B /appl/lib/styxpersist.b +.SH BUGS +Even on a conventional fileserver, some operations are non-idempotent; +namely create, rename, remove, and write to an append-only file. +If a fileserver dies while such a request is outstanding, it is unclear +what it should do. Currently it returns an error to the client if such a sitution occurs. +.PP +.I Styxpersist +is dependent on the capabilities of the local factotum to re-authenticate +Plan 9 style. If a client uses an external factotum with different keys, +.I styxpersist +may be unable to re-authenticate. +.SH "SEE ALSO" +.IR mount (1), +.IR sys-dial (2) diff --git a/man/2/styxservers b/man/2/styxservers new file mode 100644 index 00000000..fca2748a --- /dev/null +++ b/man/2/styxservers @@ -0,0 +1,902 @@ +.TH STYXSERVERS 2 +.SH NAME +styxservers \- +Styx server implementation assistance +.SH SYNOPSIS +.EX +include "sys.m"; +include "styx.m"; +Tmsg, Rmsg: import Styx; +include "styxservers.m"; +styxservers := load Styxservers Styxservers->PATH; +Styxserver, Fid, Navigator: import styxservers; + +Styxserver: adt { + fd: ref Sys->FD; # file server end of connection + t: ref Navigator; # name space navigator for this server + msize: int; # negotiated Styx message size + + new: fn(fd: ref Sys->FD, t: ref Navigator, rootpath: big) + :(chan of ref Tmsg, ref Styxserver); + reply: fn(srv: self ref Styxserver, m: ref Rmsg): int; + + # protocol operations + attach: fn(srv: self ref Styxserver, m: ref Tmsg.Attach): ref Fid; + clunk: fn(srv: self ref Styxserver, m: ref Tmsg.Clunk): ref Fid; + walk: fn(srv: self ref Styxserver, m: ref Tmsg.Walk): ref Fid; + open: fn(srv: self ref Styxserver, m: ref Tmsg.Open): ref Fid; + read: fn(srv: self ref Styxserver, m: ref Tmsg.Read): ref Fid; + remove: fn(srv: self ref Styxserver, m: ref Tmsg.Remove): ref Fid; + stat: fn(srv: self ref Styxserver, m: ref Tmsg.Stat); + default: fn(srv: self ref Styxserver, gm: ref Tmsg); + + # check validity + cancreate: fn(srv: self ref Styxserver, m: ref Tmsg.Create) + :(ref Fid, int, ref Sys->Dir, string); + canopen: fn(srv: self ref Styxserver, m: ref Tmsg.Open) + :(ref Fid, int, ref Sys->Dir, string); + canread: fn(srv: self ref Styxserver, m: ref Tmsg.Read) + :(ref Fid, string); + canwrite: fn(srv: self ref Styxserver, m: ref Tmsg.Write) + :(ref Fid, string); + + # fid management + getfid: fn(srv: self ref Styxserver, fid: int): ref Fid; + newfid: fn(srv: self ref Styxserver, fid: int): ref Fid; + delfid: fn(srv: self ref Styxserver, c: ref Fid); + allfids: fn(srv: self ref Styxserver): list of ref Fid; + + iounit: fn(srv: self ref Styxserver): int; +}; + +Fid: adt { + fid: int; # client's fid + path: big; # file's 64-bit unique path + qtype: int; # file's qid type (eg, Sys->QTDIR if directory) + isopen: int; # non-zero if file is open + mode: int; # if open, the open mode + uname: string; # user name from original attach + param: string; # attach aname from original attach + data: array of byte; # application data + + clone: fn(f: self ref Fid, nf: ref Fid): ref Fid; + open: fn(f: self ref Fid, mode: int, qid: Sys->Qid); + walk: fn(f: self ref Fid, qid: Sys->Qid); +}; + +Navop: adt { + reply: chan of (ref Sys->Dir, string); # channel for reply + path: big; # file or directory path + pick { + Stat => + Walk => + name: string; + Readdir => + offset: int; # index (origin 0) of first entry to return + count: int; # number of directory entries requested + } +}; + +Navigator: adt { + new: fn(c: chan of ref Navop): ref Navigator; + stat: fn(t: self ref Navigator, path: big): (ref Sys->Dir, string); + walk: fn(t: self ref Navigator, parent: big, name: string) + : (ref Sys->Dir, string); + readdir:fn(t: self ref Navigator, path: big, + offset, count: int): array of ref Sys->Dir; +}; + +init: fn(styx: Styx); +traceset: fn(on: int); + +readbytes: fn(m: ref Styx->Tmsg.Read, d: array of byte): + ref Styx->Rmsg.Read; +readstr: fn(m: ref Styx->Tmsg.Read, s: string): + ref Styx->Rmsg.Read; +openok: fn(uname: string, omode, + perm: int, funame, fgname: string): int; +openmode: fn(o: int): int; +.EE +.SH DESCRIPTION +When writing a Styx file server, there are some +commonly performed tasks that are +fiddly or tedious to implement each time. +.B Styxservers +provides a framework to automate some of these +routine tasks. +In particular, it helps manage the fid space, +implements common default processing for protocol messages, +and assists walking around the +directory hierarchy and reading of directories. Other +tasks, such as defining the structure of the +name space, and reading and writing files in it, are +left to the file server program itself. +Familiarity with Section 5 of the manual which defines the protocol +(see +.IR intro (5)), +and with the representation of Styx messages in Limbo +(see +.IR styx (2)), +is a prerequisite for use of this module. +.PP +.B Styxservers +does not define or store any of the directory hierarchy itself; +instead it queries an external process for information +when necessary, through a value of type +.BR Navigator , +which encapsulates communication with that process. +That process must be started up +independently of each +.BR Styxserver ; +a channel to such a process should be provided +when starting a new +.BR Styxserver . +The channel carries messages of type +.BR Navop . +.IR Styxservers-nametree (2) +provides a ready-made +implementation of such a process that is sufficient for many applications. +.PP +.B Styxserver +keeps tabs on the fids that are currently in use, and remembers +some associated information, such as the Qid path +of the file, whether it has been opened, etc. +It does this using values of type +.BR Fid . +.PP +Once the +.B Styxservers +module has been loaded, +the +.B init +function must be called before anything else, +to initialise its internal state. The +.I styx +argument should be an implementation of +the +.IR styx (2) +module, which will be used to translate messages. +Individual +.B Styxserver +instances do not share state, and are therefore +independently thread-safe. +.SS Fid representation +.B Styxservers +represents each active fid as a +.B Fid +value, +which has the following public members: +.TF param +.TP +.B fid +The integer +.I fid +value provided by the client to refer to an active instance of a file in the file server, +as described in +.IR intro (5). +.TP +.B path +The 64-bit qid path that uniquely identifies the file on the file server, +as described in +.IR intro (5). +It is set by +.IB f .walk +and +.IB f .open +(see below). +.TP +.B qtype +The file's qid type; it is +.B Sys->QTDIR +if and only if the fid refers to a directory. +The value is set by +.IB f .walk +and +.IB f .open +(see below). +.TP +.B isopen +Non-zero if and only if the fid has been opened by an +.IR open (5) +message. +It is initially zero, and set by +.IB f .open +(see below). +.TP +.B mode +Valid only if the fid has been opened. +It has one of the values +.BR Sys->OREAD , +.BR Sys->OWRITE , +.BR Sys->ORDWR , +possibly ORed with +.BR Sys->ORCLOSE , +corresponding to the mode with which the file was opened. +It is set by +.IB f .open +(see below). +.TP +.B uname +The name of the user that created the fid. +.TP +.B param +Set by +.B Styxservers +to the +.B aname +of the initial +.IR attach (5) +message, +and subsequently inherited by each new fid created by +.IR walk (5), +but not otherwise used by +.B Styxservers +itself, and may be changed by the application. +.TP +.B data +Unused by +.BR Styxservers ; +for application use. +It might be used, for instance, to implement a file that gives different +data to different clients. +.TP +.IB f .clone( nf ) +Copy the current state of all members of +.I f +except +.IB f .fid\f1,\fP +into +.IR nf , +and return +.IR nf . +Used by +.BR Styxserver.walk , +and is needed by an application only if it replaces that function. +.TP +.IB f .walk( qid ) +Make +.I f +refer to the file with the given +.IR qid : +set +.IB f .path +and +.IB f .qtype +from +.IB qid .path +and +.IB qid .qtype . +Used by +.IB Styxserver.walk +and is needed by an application only if it replaces that function. +.TP +.IB f .open( mode,\ qid ) +Mark +.I f +as `open', +set +.IR f .mode +to +.IR mode , +and set +.B path +and +.B qtype +to the path and type of +.IR qid . +Used by the +implementations of +.B open +and +.B create +messages. +The default implementation of +.IR open (5) +in +.B Styxserver +obtains the value of +.I mode +from +.B Styxserver.canopen +(below), +and +obtains the value of +.I qid +by querying the application's navigator. +.SS Styxserver and file server state +Each +.B Styxserver +value holds the state for a single file server, including its active fids, +the link to the external name space process, and other internal data. +Most of the state is manipulated through the member functions described below. +The exceptions are two read-only values: +the +.B Navigator +reference +.IB srv .t +which can be used to access that navigator; and +the file descriptor +.IB srv .fd +that is the file server's end of the connection to the Styx client. +Both values are initially provided by the file serving application, +but can be accessed through the +.B Styxserver +value for convenience. +The file descriptor value is normally used only through +.BR Styxserver.reply , +but will be needed directly if the caller needs the file descriptor value +as a parameter to +.IR sys-pctl (2) +when insulating the serving process's file descriptors from the surrounding environment. +.PP +The first set of functions in +.B Styxserver +provides common and default actions: +.TP +.B Styxserver.new(\fIfd\fP,\ \fIt\fP,\ \fIrootpath\fP) +Create a new +.BR Styxserver . +It returns a tuple, say +.RI ( c ", " srv ), +and spawns a new process, which uses +.IR styx (2) +to read and parse Styx messages read +from +.IR fd , +and send them down +.IR c ; +.I t +should be a +.B Navigator +adt which the +.B Styxserver +can use to answer queries +on the name space (see ``Navigating file trees'', below). +.I Rootpath +gives the Qid path of the root of the served name space. +.TP +.IB srv .reply(\fIm\fP) +Send a reply (R-message) to a client. The various utility methods, +listed below, call this function to make their response. +.TP +.IB srv .attach(\fIm\fP) +Respond to an +.IR attach (5) +message +.IR m , +creating a new fid in the process, and returning it. +Returns +.B nil +if +.IB m .fid +is a duplicate of an existing fid. +The value of the attach parameter +.IB m .aname +is copied into the new fid's +.B param +field, as is the attaching user name, +.IB m .uname . +.TP +.IB srv .clunk(\fIm\fP) +Respond to a +.IR clunk (5) +message +.IR m , +and return the old +.BR Fid . +Note that this does nothing about remove-on-close +files; that should be programmed explicitly if needed. +.TP +.IB srv .walk(\fIm\fP) +Respond to a +.IR walk (5) +message +.IR m , +querying +.IB srv . t +for information on existing files. +.TP +.IB srv .open(\fIm\fP) +Respond to an +.IR open (5) +message +.IR m . +This will allow a file to be opened if its permissions allow the +specified mode of access. +.TP +.IB srv .read(\fIm\fP) +Respond to a +.IR read (5) +message +.IR m . +If a directory is being read, the appropriate reply +is made; for files, an error is given. +.TP +.IB srv .remove(\fIm\fP) +Respond to a +.IR remove (5) +message +.IR m +with an error, clunking the fid as it does so, +and returning the old +.BR Fid . +.TP +.IB srv .stat(\fIm\fP) +Respond to a +.IR stat (5) +message +.IR m . +.TP +.IB srv .default(\fIgm\fP) +Respond to an arbitrary T-message, +.IR gm , +as appropriate (eg, by calling +.IB srv .walk +for a +.IR walk (5) +message). +It responds appropriately to +.IR version (5), +and replies to +.B Tauth +(see +.IR attach (5)) +stating that authentication is not required. +Other messages without an associated +.B Styxserver +function are generally responded to +with a ``permission denied'' error. +.PP +All the functions above check the validity of the fids, modes, counts and offsets +in the messages, and automatically reply to the client with a suitable +.IR error (5) +message on error. +.PP +The following further +.B Styxserver +operations are useful +in applications that override all or part of the default handling +(in particular, +to process read and write requests): +.TP +.IB srv .canopen( m ) +Check whether it is legal to open a file as requested by message +.IR m : +the fid is valid but not already open, the corresponding file exists and its +permissions allow access in the requested mode, and if +.B Sys->ORCLOSE +is requested, the parent directory is writable (to allow the file to be removed when closed). +.B Canopen +returns a tuple, say +.RI ( f ,\ mode ,\ d,\ err\ \fP). +If the open request was invalid, +.I f +will be nil, and the string +.I err +will diagnose the error (for return to the client in an +.B Rmsg.Error +message). +If the request was valid: +.I f +contains the +.B Fid +representing the file to be opened; +.I mode +is the access mode derived from +.IB m .mode , +.BR Sys->OREAD , +.BR Sys->OWRITE , +.BR Sys->ORDWR , +ORed with +.BR Sys->ORCLOSE ; +.I d +is a +.B Dir +value giving the file's attributes, obtained from the navigator; +and +.I err +is nil. +Once the application has done what it must to open the file, +it must call +.IB f .open +to mark it open. +.TP +.IB srv .cancreate( m ) +Checks whether the +creation of the file requested by +message +.I m +is legal: +the fid is valid but not open, refers to a directory, +the permissions returned by +.IR srv .t.stat +show that directory is writable by the requesting user, +the name does not already exist in that directory, +and the mode with which the new file would be opened is valid. +.B Cancreate +returns a tuple, say +.RI ( f ,\ mode,\ d,\ err\ \fP). +If the creation request was invalid, +.I f +will be nil, and the string +.I err +will diagnose the error, for use in an error reply to the client. +If the request was valid: +.I f +contains the +.B Fid +representing the parent directory; +.I mode +is the open mode as defined for +.B canopen +above; +.I d +is a +.B Dir +value containing some initial attributes for the new file or directory; +and +.I err +is nil. +The initial attributes set in +.I d +are: +.IB d .name +(the name of the file to be created); +.IB d .uid +and +.IB d .muid +(the user that did the initial attach); +.IB d .gid , +.IB d .dtype , +.IB d .dev +(taken from the parent directory's attributes); +and +.IB d .mode +holds the file mode that should be attributed to the new +file (taking into account the parent mode, as +described in +.IR open (5)). +The caller must supply +.IB d .qid +once the file has successfully been created, +and +.IB d .atime +and +.IB d .mtime ; +it must also call +.IB f .open +to mark +.I f +open and set its path to the file's path. +If the file cannot be created successfully, the application should reply with +an +.IR error (5) +message and leave +.I f +untouched. +The +.B Fid +.I f +will then continue to refer to the original directory, and remain unopened. +.TP +.IB srv .canread( m ) +Checks whether +.IR read (5) +message +.I m +refers to a valid fid that has been opened for reading, +and that the count and file offset are non-negative. +.B Canread +returns a tuple, say +.RI ( f ,\ err ); +if the attempted access is illegal, +.I f +will be nil, and +.I err +contains a description of the error, +otherwise +.I f +contains the +.B Fid +corresponding to the file in question. +It is typically called by an application's implementation of +.B Tmsg.Read +to obtain the +.B Fid +corresponding to the fid in the message, and check the access. +.TP +.IB srv .canwrite( m ) +Checks whether +message +.I m +refers to a valid fid that has been opened for writing, +and that the file offset is non-negative. +.B Canwrite +returns a tuple, say +.RI ( f ,\ err ); +if the attempted access is illegal, +.I f +will be nil, and +.I err +contains a description of the error, +otherwise +.I f +contains the +.B Fid +corresponding to the file in question. +It is typically called by an application's implementation of +.B Tmsg.Write +to obtain the +.B Fid +corresponding to the fid in the message, and check the access. +.TP +.IB srv .iounit() +Return an appropriate value for use as the +.I iounit +element in +.B Rmsg.Open +and +.B Rmsg.Create +replies, +as defined in +.IR open (5), +based on the message size negotiated by the initial +.IR version (5) +message. +.PP +The remaining functions are normally used only by servers that need to +override default actions. +They maintain and access the mapping between a client's fid values presented in +.B Tmsg +messages and the +.B Fid +values that represent the corresponding files internally. +.TP +.IB srv .newfid(\fIfid\fP) +Create a new +.B Fid +associated with number +.I fid +and return it. +Return nil if the +.I fid +is already in use (implies a client error if the server correctly clunks fids). +.TP +.IB srv .getfid(\fIfid\fP) +Get the +.B Fid +data associated with numeric id +.IR fid ; +return nil if there is none such (a malicious or erroneous client +can cause this). +.TP +.IB srv .delfid(\fIfid\fP) +Delete +.I fid +from the table of fids in the +.BR Styxserver . +(There is no error return.) +.TP +.IB srv .allfids() +Return a list of all current fids (ie, the files currently active on the client). +.PP +.B Newfid +is required when processing +.IR auth (5), +.IR attach (5) +and +.IR walk (5) +messages to create new fids. +.B Delfid +is used to clunk fids when processing +.IR clunk (5), +.IR remove (5), +and in a failed +.IR walk (5) +when it specified a new fid. +All other messages should refer only to already existing fids, and the associated +.B Fid +data is fetched by +.BR getfid . +.SS Navigating file trees +When a +.B Styxserver +instance needs to know about the namespace, +it queries an external process through a channel +by sending a +.B Navop +request; +each such request carries with it a +.B reply +channel through which the +reply should be made. +The reply tuple has a reference to a +.B Sys->Dir +value that is non-nil on success, and a diagnostic string +that is non-nil on error. +.PP +Files in the tree are referred to +by their Qid +.BR path . +The requests are: +.TF Walk +.TP +.BR Stat +.br +Find a file in the hierarchy by its +.BR path , +and reply with the corresponding +.B Dir +data if found (or a diagnostic on error). +.TP +.BR Walk +.br +Look for file +.B name +in the directory with the given +.BR path . +.TP +.BR Readdir +.br +Get information on selected files in the directory with the given +.BR path . +In this case, the reply channel is used to send +a sequence of values, one for each entry in the directory, finishing with a tuple value +.BR (nil,nil) . +The entries to return are those selected by an +.B offset +that is the index (origin 0) of the first directory entry to return, +and a +.B count +of a number of entries to return starting with that index. +Note that both values are expressed in units of directory entries, not as byte counts. +.PP +.B Styxserver +provides a +.B Navigator +adt to enable convenient access to this functionality; calls +into the +.B Navigator +adt are bundled up into requests on the channel, and the +reply returned. +The functions provided are: +.TP 10 +.BI Navigator.new( c ) +Create a new +.BR Navigator , +sending requests down +.IR c . +.TP +.IB t .stat(\fIpath\fP) +Find the file with the given +.IR path . +Return a tuple +.RI ( d ,\ err ), +where +.I d +holds directory information for the file +if found; otherwise +.I err +contains an error message. +.TP +.IB t .walk(\fIparent\fP,\ \fIname\fP) +Find the file with name +.I name +inside parent directory +.IR parent . +Return a tuple as for +.BR stat . +.TP +.IB t .readdir(\fIpath\fP,\ \fIoffset\fP,\ \fIcount\fP) +Return directory data read from directory +.IR path , +starting at entry +.I offset +for +.I count +entries. +.SS Other functions +The following functions provide some commonly used functionality: +.TP 10 +.BI readbytes( m ,\ d ) +Assuming that the file in question contains data +.IR d , +.B readbytes +returns an appropriate reply to +.IR read (5) +message +.IR m , +taking account of +.IB m .offset +and +.IB m.count +when extracting data from +.IR d . +.TP 10 +.BI readstr( m ,\ s ) +Assuming that the file in question contains string +.IR s , +.B readstr +returns an appropriate reply to +.IR read (5) +message +.IR m , +taking account of +.IB m .offset +and +.IB m.count +when extracting data from the UTF-8 representation of +.IR s . +.TP +.BI openok (\fIuname\fP,\ \fIomode\fP,\ \fIperm\fP,\ \fIfuid\fP,\ \fIfgid\fP) +Does standard permission checking, assuming user +.I uname +is trying to open a file with access mode +.IR omode , +where the file is owned by +.IR fuid , +has group +.IR fgid , +and permissions +.IR perm . +Returns true (non-zero) if permission would be granted, and false (zero) otherwise. +.TP +.BI openmode( o ) +Checks to see whether the open mode +.I o +is well-formed; if it is not, +.B openmode +returns -1; if it is, it returns the mode +with OTRUNC and ORCLOSE flags removed. +.TP +.BI traceset( on ) +If +.I on +is true (non-zero), +will trace Styx requests and replies, on standard error. +This option must be set before creating a +.BR Styxserver , +to ensure that it preserves its standard error descriptor. +.SS Constants +.B Styxservers +defines a number of constants applicable to the writing +of Styx servers, including: +.TP +.BR Einuse\fP,\fP\ Ebadfid\fP,\fP\ Eopen\fP,\fP\ Enotfound\fP,\fP\ Enotdir\fP,\fP\ Eperm\fP,\fP\ Ebadarg\fP,\fP\ Eexists +These provide standard strings for commonly used error conditions, +to be used in +.B Rmsg.Error +replies. +.SS Authentication +If authentication is required beyond that provided at the link level +(for instance by +.IR security-auth (2)), +the server application must handle +.B Tauth +itself, +remember the value of +.I afid +in that message, and generate an +.B Rauth +reply with a suitable Qid referring to a file with +.B Qid.qtype +of +.BR QTAUTH . +Following successful authentication by read and write on that file, +it must associate that status with the +.IR afid . +Then, on a subsequent +.B Tattach +message, before calling +.I srv .attach +it must check that the +.BR Tattach 's +.I afid +value corresponds to one previously authenticated, and +reply with an appropriate error if not. +.SH SOURCE +.B /appl/lib/styxservers.b +.SH SEE ALSO +.IR styxservers-nametree (2), +.IR sys-stat (2), +.IR intro (5) diff --git a/man/2/styxservers-nametree b/man/2/styxservers-nametree new file mode 100644 index 00000000..f64e519a --- /dev/null +++ b/man/2/styxservers-nametree @@ -0,0 +1,180 @@ +.TH STYXSERVERS-NAMETREE 2 +.SH NAME +Styxservers: nametree \- +hierarchical name storage for use with Styxservers. +.SH SYNOPSIS +.EX +include "sys.m"; +include "styx.m"; +include "styxservers.m"; +nametree := load Nametree Nametree->PATH; + Tree: import nametree; + +Tree: adt { + create: fn(t: self ref Tree, parentpath: big, d: Sys->Dir): string; + remove: fn(t: self ref Tree, path: big): string; + wstat: fn(t: self ref Tree, path: big, d: Sys->Dir); + quit: fn(t: self ref Tree); +}; +init: fn(); +start: fn(): (ref Tree, chan of ref Styxservers->Navop); +.EE +.SH DESCRIPTION +.B Nametree +provides the storage for a hierarchical namespace +to be used by +.IR styxservers (2). +After the module is loaded, the +.B init +function should be called to +initialise the module's internal variables. +.B Start +spawns a new +.B nametree +process; it returns a tuple, say +.RI ( tree ,\ c ), +where c is a channel that can be used to create +an instance of +.BR Styxservers->Navigator , +to access files inside +.BR nametree , +and +.I tree +is an adt that allows creation and removal of those files. +On failure, these functions return a string describing +the error. +.PP +Note that the full set of operations on +.B Nametree +(i.e. stat, walk, readdir, wstate, create and remove), +is only available in conjunction with +.BR Styxserver 's +.B Navigator +interface. +Files in the name space are ultimately identified by a 64-bit +.I path +value, which forms the path component of the file's Qid. +(See +.IR intro (5) +for a description of the system's interpretation of Qids.) +.PP +The +.B Tree +operations +are: +.TP 10 +.IB t .create(\fIparentpath\fP,\ \fId\fP) +Create a new file or directory. +.I D +gives the directory information that will be stored +for the file, including its own path value, +given by +.IB d .qid.path . +If the file referenced by +.I parentpath +does not exist, creation will not be allowed, +other than in the special case when +.IB d .qid.path +is equal to +.IR parentpath , +in which case it is assumed to be a root directory +and may be created. This potentially allows a single +.B Nametree +instance to hold many distinct directory hierarchies. +Note that no attempt is made to ensure that +.I parentpath +refers to a directory; the check is assumed to have +been made previously. +When a hierarchy is traversed, +.B Nametree +interprets the name +.RB ` .. ' +itself as `parent directory', and that name should not be created explicitly. +.TP +.IB t .remove(\fIpath\fP) +Remove the file referred to by +.IR path , +and all its descendants. +.TP +.IB t .wstat(\fIpath\fP,\ \fId\fP) +Change the directory information held on file +.IR path . +The Qid path itself cannot be changed by +.IR d . +.TP +.IB t .quit() +Shut down the +.B nametree +process. +.SH EXAMPLE +Here is a complete example that uses +.B Nametree +in conjunction with +.B Styxservers +in order to serve two files +.B data +and +.BR ctl " ..." +and do nothing with them: +.EX +implement Tst; +include "sys.m"; + sys: Sys; +include "draw.m"; +include "styx.m"; +include "styxservers.m"; + styxservers: Styxservers; + Styxserver, Navigator: import styxservers; + nametree: Nametree; + Tree: import nametree; + +Tst: module +{ + init: fn(nil: ref Draw->Context, argv: list of string); +}; + +Qroot, Qctl, Qdata: con big iota; # paths +init(nil: ref Draw->Context, args: list of string) +{ + sys = load Sys Sys->PATH; + styx := load Styx Styx->PATH; + styx->init(); + styxservers = load Styxservers Styxservers->PATH; + styxservers->init(styx); + nametree = load Nametree Nametree->PATH; + nametree->init(); + sys->pctl(Sys->FORKNS, nil); + (tree, treeop) := nametree->start(); + tree.create(Qroot, dir(".", 8r555|Sys->DMDIR, Qroot)); + tree.create(Qroot, dir("ctl", 8r666, Qctl)); + tree.create(Qroot, dir("data", 8r444, Qdata)); + (tchan, srv) := Styxserver.new(sys->fildes(0), + Navigator.new(treeop), Qroot); + while((gm := <-tchan) != nil) { + # normally a pick on gm would act on + # Tmsg.Read and Tmsg.Write at least + srv.default(gm); + } + tree.quit(); +} + +dir(name: string, perm: int, qid: big): Sys->Dir +{ + d := sys->zerodir; + d.name = name; + d.uid = "me"; + d.gid = "me"; + d.qid.path = qid; + if (perm & Sys->DMDIR) + d.qid.qtype = Sys->QTDIR; + else + d.qid.qtype = Sys->QTFILE; + d.mode = perm; + return d; +} +.EE +.SH SOURCE +.B /appl/lib/nametree.b +.SH SEE ALSO +.IR styxservers (2), +.IR intro (5) diff --git a/man/2/sys-0intro b/man/2/sys-0intro new file mode 100644 index 00000000..c5c90b47 --- /dev/null +++ b/man/2/sys-0intro @@ -0,0 +1,302 @@ +.TH SYS-INTRO 2 +.SH NAME +Sys: intro \- introduction to the +.B Sys +module +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; +.EE +.SH DESCRIPTION +Inferno system calls are provided by the built-in module declared by +.BR sys.m . +It contains the fundamental system data structures and interfaces. +There are currently 42 calls, providing: file access; basic I/O; +name space manipulation; formatted output +for Limbo; and basic character and string manipulation. +.SS "File Name Space" +Files are collected into a hierarchical organization called a +.I file +.I tree +starting in a +.I directory +called the +.IR root. +.IR Filenames , +also called +.IR paths , +consist of a number of +.BR / -separated +.I "path elements +with the slashes corresponding to directories. +A path element must contain only printable +characters (those outside ASCII and Latin-1 control space). +A path element cannot contain a space, slash, or +.BR # . +The path element +.B \&.. +refers to the parent directory of the directory containing that element. +.PP +When a process presents a file name to Inferno, +it is +.I evaluated +by the following algorithm. +.TP +1. +Start with a directory that depends on the first character of the path: +.B / +means the root of the main hierarchy, +.B # +means the separate root of a kernel device's file tree +(see Section 3), +and anything else means the process's current working directory. +.TP +2. +For each path element, look up the element +in the directory, advance to that directory, +do a possible translation (see below). +.TP +3. +Repeat. +The last step may yield a directory or regular file. +.PP +The collection of files reachable from the root is called the +.I "name space +of a process. +.PP +A program can use +.B bind +or +.B mount +(see +.IR sys-bind (2)) +to say that whenever a certain (specified) file is reached during an evaluation, +that evaluation continues instead from some other (specified) file. +.PP +Also, these same calls create +\f2union directories\fP, +which are concatenations of ordinary directories +that are searched sequentially until the desired element is found. +.PP +The result of evaluating +.B \&.. +in a union directory is undefined. +.PP +Using +.B bind +and +.B mount +to do name space adjustment affects only +the current name space group (see below, and +.IR sys-pctl (2)). +.PP +Certain conventions about the layout of the name space should be preserved; +see +.IR namespace (4). +.SS "File I/O" +Files are opened for input or output +by +.B open +or +.B create +(see +.IR sys-open (2)). +These calls return a reference to an object of type +.B FD +(file descriptor) +that identifies the file to subsequent I/O calls, +notably +.B read +and +.B write +(see +.IR sys-read (2)). +When the last reference to an +.B FD +disappears, the file descriptor is released\(emclosed, in Unix parlance. +The +.B FD +contains an integer file descriptor, similar to those in Unix, but the +.B FD +type is the one passed to Limbo I/O routines. +.PP +Integer file descriptor values range from 0 to +.I n +in the current system, where the upper bound +depends on the underlying operating system. +The system allocates the numbers by selecting the lowest unused descriptor. +They may be reassigned using +.B dup +(see +.IR sys-dup (2)). +Integer file descriptor values are indices into a +kernel-resident +.IR "file descriptor table" , +which is inherited from the parent when a process is created by a Limbo +.B spawn +operation. +A set of processes, called a +.IR "file descriptor group" , +shares that table, so files opened by one process may be +read and written by other processes in the group. See +.IR sys-pctl (2) +for more information. +.PP +By convention, +file descriptor 0 is the standard input, +1 is the standard output, +and 2 is the standard error output. +The operating system is unaware of these conventions; +it is permissible to close file 0, +or even to replace it by a file open only for writing, +but many programs will be confused by such chicanery. +.PP +Files are normally read or written in sequential order. +The I/O position in the file is called the +.IR "file offset" +and may be set arbitrarily using the +.B seek +system call +.RI ( sys-seek (2)). +.PP +Directories may be opened and read +much like regular files (see +.IR sys-dirread (2)). +They contain an integral number of records, +called +.IR "directory entries" . +Each entry is a machine-independent representation of +the information about an existing file in the directory, +including the +name, +ownership, +permission, +access dates, +and so on. +.PP +The entry +corresponding to an arbitrary file can be retrieved by +.B stat +or +.B fstat +(see +.IR sys-stat (2)); +.B wstat +and +.B fwstat +write back entries, thus changing the properties of a file. +.PP +New files are made with +.B create +and deleted with +.B remove +(see +.IR sys-open (2) +and +.IR sys-remove (2)). +.PP +Directories are manipulated by +.BR create , +.BR remove , +.BR wstat , +and +.BR fwstat ; +they may not directly be written. +.PP +Inferno provides no guarantee of consistency should +several processes access a file concurrently. +Guaranteed synchronous writes are not available. +Nor is file locking from underlying file systems supported by Inferno. +Processes can coordinate their file operations by other mechanisms. +.PP +Atomicity is guaranteed for byte counts smaller than the +.I Styx +message size; +see +.IR read (5). +.SS "Process execution and control" +A Limbo +.IR process , +also called a +.IR thread , +is the basic unit of computation for Limbo application programming +in the Inferno operating system. +.PP +A newly spawned thread shares the same +.I "address space +as that of its creator thread. +That is, the set of global variables that is in scope to +one is in scope to the other. +A change made by one can be detected by the other. +Since they are scheduled independently, +they should synchronize their +actions to share this data coherently. +.PP +The newly created thread also shares the same set of open file descriptors +and the current working directory. +.PP +Processes are also organized into +.I "process groups +.RB ( pgrps ) +that represent the set of threads of a single +application and can be terminated by a single kill request; see +.IR prog (3). +.PP +A newly-spawned thread automatically inherits the following attributes: +file name space (including shared +current directory); file descriptor group; and process group. +A thread can subsequently +acquire a new, independent name space, new or modified file descriptor group, +or new process group. +See +.IR sys-pctl (2). +.SS "User/Group Identity" +The Inferno operating system maintains user identifier +.RB ( uid ) +and group identifier +.RB ( gid ) +strings +for each process. +These values are also attributes of files and directories. +See +.IR sys-stat (2) +and +.IR stat (5). +A comparison of process and file identities take place when a process +attempts to open or create a file. +.PP +When a pathname crosses from one server to another the process identities are +mapped by each server receiving a file request. +.PP +The +.B uid +and +.B gid +strings are assigned to the thread created +when a user logs into Inferno and cannot be changed. +.SH SOURCE +.B /emu/port/inferno.c +.br +.B /os/port/inferno.c +.SH DIAGNOSTICS +System calls often return an integer status, or tuples containing results and +an integer status, +and follow the convention that a status of -1 is returned when an error occurred; +a non-negative value (usually 0) is returned on success. +If an error occurred, a detailed error message can be obtained for the +most recent error, using the +.RB ` %r ' +format of +.IR sys-print (2). +Exceptions to this general rule are noted in the +`DIAGNOSTICS' sections. +.PP +From Limbo, system calls that return values on the heap, for instance strings in +.B Dir +structures returned by +.IR sys-stat (2), +and arrays of directory entries returned by +.IR sys-readdir (2), +can also raise ``out of memory: heap'' exceptions when attempting +to create the return value. diff --git a/man/2/sys-bind b/man/2/sys-bind new file mode 100644 index 00000000..b03379c0 --- /dev/null +++ b/man/2/sys-bind @@ -0,0 +1,201 @@ +.TH SYS-BIND 2 +.SH NAME +bind, mount, unmount \- change file name space +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +bind: fn(name, old: string, flag: int): int; +mount: fn(fd: ref FD; afd: ref FD, old: string, flag: int, aname: string): + int; +unmount: fn(name, old: string): int; +.EE +.SH DESCRIPTION +.B Bind +and +.B mount +modify the file name space of the current process and its name space group. +For both calls, +.I old +is the name of an existing file or directory in the +current name space where the modification is to be made. +The name +.I old +is +evaluated +as described in +.IR sys-intro (2) +except that no translation of the final path element is done. +.PP +For +.BR bind , +.I name +is the name of another (or possibly the same) +existing file or directory in +the current name space. +After a successful +.B bind +call, the file name +.I old +is an alias for the object originally named by +.IR name ; +if the modification does not hide the original, +.I name +will also still refer to its original file. +The evaluation of +.I name +happens at the time of the +.BR bind , +not when the binding is later used. +.PP +The +.I fd +argument to +.B mount +is a file descriptor of an open pipe or network connection +to a file server ready to receive Styx messages. +The +.I old +file must be a directory. +After a successful +.BR mount , +the file tree +.I served +(see below) by +.I fd +will be visible with its root directory having name +.IR old . +If the requested service requires authentication, the file descriptor +.I afd +must be open on an authentication file for the +requested service; +otherwise it should be +.BR nil . +.PP +The +.I flag +controls details of the modification made to the name space. +In the following, +.I new +refers to the file +as defined by +.I name +or the root directory served by +.IR fd . +Either both +.I old +and new files must be directories, +or both must not be directories. +.I Flag +can be one of: +.TF Sys->MBEFORE +.TP +.B Sys->MREPL +Replace the +.I old +file by the new one. +Henceforth, an evaluation of +.I old +will be translated to the new file. +If they are directories (for +.BR mount , +this condition is true by definition), +.I old +becomes a +.I "union directory" +consisting of one directory (the new file). +.TP +.B Sys->MBEFORE +Both the +.I old +and new files must be directories. +Add the constituent files of the new directory +to the union directory at +.I old +so its contents appear first in the union. +After a +.B Sys->MBEFORE +.B bind +or +.BR mount , +the new directory will be searched first when evaluating file names +in the union directory. +.TP +.B Sys->MAFTER +Like +.B Sys->MBEFORE +but the new directory goes at the end of the union. +.PD +.PP +In addition, there is a +.B Sys->MCREATE +flag that can be OR'd with any of the above. +When a +.B create +call (see +.IR sys-open (2)) +attempts to create in a union directory, and the file does not exist, +the elements of the union are searched in order until one is found +with +.B Sys->MCREATE +set. +The file is created in that directory; if that attempt fails, +the +.B create +fails. +.PP +With +.BR mount , +the file descriptor +.I fd +must be open for reading and writing +and connected to a file server. +After the +.BR mount , +the file tree starting at +.I old +is served by a kernel +.IR mnt (3) +device. +That device will turn operations in the tree into messages to the server on +.IR fd . +.I Aname +selects among different +file trees on the server; the +empty (or nil) +string chooses the default tree. +.PP +The effects of +.B bind +and +.B mount +can be undone by +.BR unmount . +If +.I name +is +.BR nil , +everything bound to or mounted upon +.I old +is unbound or unmounted. +If +.I name +is not +.BR nil , +it is evaluated as described above for +.BR bind , +and the effect of binding or mounting that particular result on +.I old +is undone. +.SH SEE ALSO +.IR sys-intro (2) +.SH DIAGNOSTICS +The return value is a positive integer (a unique sequence number) for +success, \-1 for failure. +.SH BUGS +.B Mount +will not return until it has successfully attached +to the file server, so the thread doing a +.B mount +cannot be the one serving. diff --git a/man/2/sys-byte2char b/man/2/sys-byte2char new file mode 100644 index 00000000..70aeb015 --- /dev/null +++ b/man/2/sys-byte2char @@ -0,0 +1,68 @@ +.TH SYS-BYTE2CHAR 2 +.SH NAME +byte2char, char2byte \- convert between bytes and characters +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +byte2char: fn(buf: array of byte, n: int): (int, int, int); +char2byte: fn(c: int, buf: array of byte, n: int): int; +.EE +.SH DESCRIPTION +.B Byte2char +converts a byte sequence to one Unicode character. +.I Buf +is an array of bytes and +.I n +is the index of the first byte to examine in the array. +The returned tuple, say +.BI ( c , +.IB length , +.IB status )\f1, +specifies the result of the translation: +.I c +is the resulting Unicode character, +.I status +is non-zero if the bytes are a valid UTF sequence and zero otherwise, +and +.I length +is set to the number of bytes consumed by the translation. +If the input sequence is not long enough to determine its validity, +.B byte2char +consumes zero bytes; +if the input sequence is otherwise invalid, +.B byte2char +consumes one input byte and generates an error character +.RB ( Sys->UTFerror , +.BR 16r80 ), +which prints in most fonts as a boxed question mark. +.PP +.B Char2byte +performs the inverse of +.BR byte2char . +It translates a Unicode character, +.IR c , +to a UTF byte sequence, which +is placed in successive bytes starting at +.IR buf [\c +.IR n ]. +The longest UTF sequence for a single Unicode character is +.B Sys->UTFmax +(3) bytes. +If the translation succeeds, +.B char2byte +returns the number of bytes placed in the buffer. +If the buffer is too small to hold the result, +.B char2byte +returns zero and leaves the array unchanged. +.SH SOURCE +.B /libinterp/runt.c +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-utfbytes (2), +.IR utf (6) +.SH DIAGNOSTICS +A run-time error occurs if +.I n +exceeds the bounds of the array. diff --git a/man/2/sys-chdir b/man/2/sys-chdir new file mode 100644 index 00000000..8604d7f9 --- /dev/null +++ b/man/2/sys-chdir @@ -0,0 +1,40 @@ +.TH SYS-CHDIR 2 +.SH NAME +chdir \- change working directory +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +chdir: fn(path: string): int; +.EE +.SH DESCRIPTION +.B Chdir +changes the working directory +of the invoking process and its file name space group to +.IR path . +.PP +The working directory is the starting point for +evaluating file names that do not begin with +.B / +or +.BR # , +as explained in +.IR sys-intro (2). +.PP +When Inferno boots, +the initial process has +.B / +for its working directory. +.PP +Applications that invoke +.B chdir +normally use the +.B FORKNS +option of +.IR sys-pctl (2) +to prevent the change from affecting the surrounding environment. +.SH DIAGNOSTICS +Returns 0 on success; -1 on failure. +.SH SEE ALSO +.IR sys-intro (2) diff --git a/man/2/sys-dial b/man/2/sys-dial new file mode 100644 index 00000000..4626f557 --- /dev/null +++ b/man/2/sys-dial @@ -0,0 +1,247 @@ +.TH SYS-DIAL 2 +.SH NAME +announce, dial, listen \- make network connections +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +Connection: adt +{ + dfd: ref FD; # data file + cfd: ref FD; # control file + dir: string; # pathname of line directory +}; + +announce: fn(addr: string): (int, Connection); +dial: fn(addr, local: string): (int, Connection); +listen: fn(c: Connection): (int, Connection); +.EE +.SH DESCRIPTION +These routines establish network connections. +Their description uses the following definitions: +.TF network +.PD +.TP +.I addr +is a network address in one of the following forms: +.br +.IP +.IB network ! netaddr ! service\f1 +.br +.IB network ! netaddr\f1 +.br +.IR netaddr +.TP +.I network +Any directory listed in +.B /net +(eg, +.BR tcp ), +or the special token, +.BR net . +The name +.B net +acts as a free variable that stands for any network in common +between the source and +.IR netaddr . +A network name can be preceded by the full path name of a directory +of networks, using the form +.I /dir/network +(eg, +.BR /net.alt/tcp ). +.TP +.I netaddr +A host name, a domain name, a network address, +or a meta-name of the form +.BI $ attribute\f1, +which +is replaced by +.I value +from the corresponding attribute-value pair +in the connection server data base (see +.IR db (6)). +.PP +The functions +.B dial +and +.B announce +translate a given +.I addr +to an actual network address using +the connection server +.IR cs (8). +If a logical name +.I addr +corresponds to several network addresses, +for instance if a destination machine has several interfaces, +.I cs +will return them all. +In particular, if +.I addr +is +.BR net , +.I cs +will return addresses on +all networks that are common to source and destination. +The translation procedure accesses +.I cs +using its interface file +.BR cs , +which is sought as follows: +first, in an explicit directory +.BI / dir +if one was given in +.IR network ; +second, in the standard directory +.BR /net ; +and finally in the directory +.BR /net.alt +.RB ( dial +only). +If the connection server cannot be found, +the +.I addr +is used as-is. +.PP +If a connection attempt is successful, the +.B dir +member of the resulting +.B Connection +will be +the path name of a +.I line directory +that has files for accessing the connection. +One line directory exists for each possible connection. +The +.B data +file in the line directory is opened to +make a connection, and read and written to communicate with the destination. +The +.B ctl +file in the line directory can be used to send commands to the line. +See +.IR ip (3) +for messages that can be written to the +.B ctl +file. +The last close of the +.B data +or +.B ctl +file will close the connection. +The +.B remote +file in the line directory contains the address called; the file +.B local +contains the local address assigned. +.PP +The +.B dial +routine +makes a call to destination +.I addr +on a multiplexed network. +If the connection server returns several addresses, +.B dial +tries each in turn, until a connection is made +or no addresses remain to be tried. +It returns a +.B Connection +containing a file descriptor +.B dfd +open for reading and writing the +.B data +file in the line directory, +and a file descriptor +.B cfd +open for reading and writing the +.B ctl +file. +If +.IR local +is non-empty, and +the network allows the local address to be set, +as is the case with UDP and TCP port numbers, +the local address will be set to +.IR local . +.PP +.B Announce +and +.B listen +are the complements of +.BR dial . +.B Announce +establishes a network name to which incoming calls can be made. +In +.IR addr , +.I netaddr +gives the name or address of one of the local host's interfaces on which to listen for +calls to the given +.IR service ; +it can be +.B * +to listen for calls on any interface on +.IR network . +.B Announce +returns a +.B Connection +structure in which only the +.B cfd +descriptor is open, on the control file representing the announcement. +.B Listen +takes as its only argument the +.B Connection +structure of a successful call to +.BR announce . +When a call is received, +.B listen +returns an open +.B Connection +structure as if from +.BR dial , +except that only the +.B cfd +descriptor is open, +.B dfd +is nil, +and the caller must open the data file for itself. +.SH EXAMPLES +.PP +Make a call and return an open file descriptor to +use for communications: +.IP +.EX +callkremvax(): (int, Connection) +{ + return sys->dial("tcp!kremvax!80", nil); +} +.EE +.PP +Call the local certificate signer: +.IP +.EX +dialsigner(service: string): (int, Connection) +{ + return sys->dial("net!$SIGNER!inflogin", nil); +} +.EE +.SH SOURCE +.B /emu/port/inferno.c +.br +.B /emu/port/dial.c +.br +.B /os/port/inferno.c +.br +.B /os/port/dial.c +.SH DIAGNOSTICS +The integer valued functions return 0 on success and -1 on error; +the system error string is set. +The integer component of the tuple returned by the other functions +follows the same convention. +.SH BUGS +Note that +.B listen +does not open the +.B data +file. diff --git a/man/2/sys-dirread b/man/2/sys-dirread new file mode 100644 index 00000000..1599d58b --- /dev/null +++ b/man/2/sys-dirread @@ -0,0 +1,59 @@ +.TH SYS-DIRREAD 2 +.SH NAME +dirread \- read directory +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +dirread: fn(fd: ref FD): (int, array of Dir); +.EE +.SH DESCRIPTION +.B Dirread +reads the contents of the directory pointed to by the open file descriptor +.IR fd , +returning a tuple containing an array +with one +.B Dir +structure for each directory entry read. +These +.B Dir +structures are equivalent to the result of a +.B stat +call on each file in the directory. +See +.IR sys-stat (2) +for a description of +.B stat +and +.BR Dir . +.PP +A successful +.B dirread +returns a tuple giving the number of entries read and the resulting array. +A return of (0,nil) indicates the end of the directory. +Directory entries are variable length in general; +the file offset is advanced by the number of bytes actually read. +.PP +Seeks (see +.IR sys-seek (2)) +are allowed on directories only to seek to the start. +.PP +In general, several calls to +.B dirread +will be needed to read the whole directory. +.I Readdir (2) +provides functions that return all the directory entries at once, +optionally sorted. +.SH SEE ALSO +.IR readdir (2), +.IR sys-intro (2), +.IR sys-open (2), +.IR sys-read (2), +.IR sys-seek (2), +.IR sys-stat (2) +.SH DIAGNOSTICS +The integer in +.BR dirread 's +return tuple has a value of -1 on error, and 0 on end of file. +The array element of the tuple is nil in both cases. diff --git a/man/2/sys-dup b/man/2/sys-dup new file mode 100644 index 00000000..7b96b47a --- /dev/null +++ b/man/2/sys-dup @@ -0,0 +1,62 @@ +.TH SYS-DUP 2 +.SH NAME +dup, fildes \- duplicate an open file descriptor +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +dup: fn(oldfd, newfd: int): int; +fildes: fn(fd: int): ref FD; +.EE +.fi +.SH DESCRIPTION +The Limbo programming language and its libraries +manage I/O via references to instances of abstract data type, +.BR FD , +called a +.IR "Limbo file descriptor", +or simply `file descriptor' when the context is understood. +.B FD +holds an integer-valued file descriptor, the form used +by the operating system, in a structure that can be reference counted +and garbage collected. +There are occasions when a program must access the underlying +integer file descriptor, such as when rearranging the standard input +and output for a new subprocess. +.PP +The +.B dup +call takes a valid integer file descriptor, +.IR oldfd , +referring to an open file, +and +returns a new integer file descriptor referring to the same file. +If +.I newfd +is in the range of legal file descriptors, +.B dup +will use that for the new file descriptor +(closing any old file associated with +.IR newfd ); +if +.I newfd +is \-1 the system chooses the lowest available file descriptor. +If a suitable file descriptor cannot be found, +.B dup +returns \-1. +.PP +.B Fildes +uses the integer file descriptor +.B fd +to create a new Limbo +file descriptor, suitable for other +.B Sys +module functions. +It returns +.B nil +if it cannot convert +.IR fd . +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-open (2) diff --git a/man/2/sys-export b/man/2/sys-export new file mode 100644 index 00000000..00ca7cf3 --- /dev/null +++ b/man/2/sys-export @@ -0,0 +1,116 @@ +.TH SYS-EXPORT 2 +.SH NAME +export \- export a name space +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +export: fn(fd: ref FD, dir: string, flag: int): int; +.EE +.SH DESCRIPTION +.B Export +receives and replies +to Styx requests from a client on a connection represented by +.IR fd , +for file operations on the part of the current file name space +rooted at +.IR dir , +which is thus exported. +This is the server end of the client's +.B mount +call. +Names presented by the client are interpreted relative to directory +.IR dir , +which can be adjusted using +.IR sys-pctl (2) +and +.IR sys-bind (2) +before export. +The file descriptor +.I fd +must be open for reading and writing, and neither mounted elsewhere nor already exported. +.PP +Commonly, +.BR export 's +first argument is a file descriptor open on the data file in the +.B dir +of a +.B Connection +returned by +.B listen +(see +.IR sys-dial (2)). +Before calling +.BR export , +the connection on +.I fd +can optionally be authenticated and set for encryption or digesting using the +functions in +.IR security-auth (2). +.PP +The +.B export +function takes two mutually exclusive flags: +.TP +.B Sys->EXPWAIT +.B Export +blocks until all client requests are complete. +.TP +.B Sys->EXPASYNC +Client requests are handled by a background (kernel) process. +.B Export +returns immediately. +The serving process terminates when the client hangs up. +.SH EXAMPLES +.PP +Export a given directory on +.BR fd , +protecting it from subsequent changes: +.IP +.EX +exportdir(fd: ref Sys->FD, dir: string, pid: chan of int) +{ + pid <-= sys->pctl(Sys->FORKNS|Sys->FORKENV|Sys->NEWFD, fd.fd :: nil); + sys->export(fd, dir, Sys->EXPWAIT); +} +.EE +.PP +The +.B FORKNS +given to +.B pctl +forks the name space, and +prevents the +.B sys->export +from seeing the effects of subsequent mounts by the process +that calls or spawns +.BR exportdir . +The +.B exportdir +function above might be called using: +.IP +.EX +pid := chan of int; +spawn export(fd, "/", pid); +expid := <-pid; +.EE +.PP +Service will stop automatically when the connection +.B fd +returns end-of-file (eg, when it hangs up), +but it can also be stopped locally by killing +.BR expid . +.EE +.SH SOURCE +.B /emu/port/inferno.c +.br +.B /emu/port/exportfs.c +.br +.B /os/port/inferno.c +.br +.B /os/port/exportfs.c +.SH DIAGNOSTICS +.B Export +returns a non-negative value on success and -1 on error; +the system error string is set. diff --git a/man/2/sys-fauth b/man/2/sys-fauth new file mode 100644 index 00000000..8e06d6ac --- /dev/null +++ b/man/2/sys-fauth @@ -0,0 +1,61 @@ +.TH SYS-FAUTH 2 +.SH NAME +fauth \- set up authentication on a file descriptor to a file server +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +fauth: fn(fd: ref FD, aname: string): ref FD; +.EE +.SH DESCRIPTION +.B Fauth +provides a means for the current user to authenticate to access +resources available through the Styx connection represented by +.IR fd . +The return value is a file descriptor, conventionally called +.IR afd , +that is subsequently used to execute the authentication protocol +for the server. +After successful authentication, +.I afd +may be passed as the second argument to a subsequent +.B mount +call (see +.IR sys-bind (2)), +with the same +.IR aname, +as a ticket-of-entry for the user. +.PP +If +.B fauth +returns nil, the error case, that means the file server does not require +authentication for the connection, and +.I afd +should be nil +in the call to +.BR mount. +.ig +.PP +It is rare to use +.IR fauth +directly; more commonly +.I amount +(see +.IR auth (2)) +is used. +.. +.SH SEE ALSO +.IR attach (5), +.IR security-auth (2) +.ig +(particularly +.BR amount ), +.IR authsrv (6) +.. +.SH DIAGNOSTICS +The system error string is set on error, +including the server not requiring authentication, +and +.B fauth +returns nil. diff --git a/man/2/sys-fd2path b/man/2/sys-fd2path new file mode 100644 index 00000000..4890e0fb --- /dev/null +++ b/man/2/sys-fd2path @@ -0,0 +1,46 @@ +.TH FD2PATH 2 +.SH NAME +fd2path \- return file name associated with file descriptor +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +fd2path(fd: ref FD): string; +.EE +.SH DESCRIPTION +As described in +.IR intro (2), +the kernel stores a rooted path name with every open file or directory; +typically, it is the name used in the original access of the file. +.B Fd2path +returns the path name associated with open file descriptor +.IR fd . +(It returns nil if an error occurs.) +.PP +Changes to the underlying name space do not update the path name +stored with the file descriptor. +Therefore, +the path returned by +.B fd2path +may no longer refer to the same file (or indeed any file) +after some component directory or file in the path has been removed, renamed +or rebound. +.PP +As an example, +.IR workdir (2) +is implemented by opening +.B . +and executing +.B fd2path +on the resulting file descriptor. +.SH SEE ALSO +.IR bind (1), +.IR ns (1), +.IR sys-bind (2), +.IR sys-intro (2), +.IR workdir (2), +.IR prog (3) +.SH DIAGNOSTICS +.B Fd2path +returns nil on error and sets the system error string. diff --git a/man/2/sys-file2chan b/man/2/sys-file2chan new file mode 100644 index 00000000..dc4088b0 --- /dev/null +++ b/man/2/sys-file2chan @@ -0,0 +1,158 @@ +.TH SYS-FILE2CHAN 2 +.SH NAME +file2chan \- create file connected to Limbo channel +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +Rread: type chan of (array of byte, string); +Rwrite: type chan of (int, string); +FileIO: adt +{ + read: chan of (int, int, int, Rread); + write: chan of (int, array of byte, int, Rwrite); +}; + +file2chan: fn(dir, file: string): ref FileIO; +.EE +.fi +.SH DESCRIPTION +.B File2chan +presents an interface for binding Limbo channels to files in the file name space. +A +.I server +program calls +.B file2chan +to create a +.I file +in a directory +.IR dir , +which must be a directory on which device +.RB ` #s ' +has been bound +(see +.IR srv (3)). +A +.I client +program can open the file for reading or writing (see +.IR sys-open (2) +and +.IR sys-read (2)) +to communicate with the server. +.PP +.B File2chan +returns a +.B FileIO +type holding two channels used to deliver tuples representing +the contents of the +.B Tread +and +.B Twrite +Styx messages received by the system on the server's behalf; see +.IR intro (5). +.PP +When the client invokes the +.B read +system call on the file, the server +receives a tuple, say +.BI ( offset\fP,\fP\ count\fP,\fP\ fid\fP,\fP\ rc )\f1, +on the +.B read +channel. +The request asks for +.I count +bytes of data, starting at +.I offset +bytes from the beginning of the file +associated with +.IR fid . +The server sends its reply to the client by transmitting a tuple, say +.BI ( data\fP,\fP\ error )\f1, +that contains the +.I data +for the +.BR read , +on the channel +.I rc +received as part of the +.B read +tuple. +If the request was successful, the +.I error +string should be +.BR nil . +If an error occurred, +.I error +should be a diagnostic string, +and the +.I data +array should be +.BR nil . +The client blocks in the +.B read +system call until the server sends its reply. +The client receives only +.I count +bytes even if +.I data +is larger. +.PP +When the client does a +.B write +system call on the file, +the server receives a tuple, +.BI ( offset\fP,\fP\ data\fP,\fP\ fid\fP,\fP\ wc )\f1, +on the +.B write +channel. +A +.BI ( count\fP,\fP\ error ) +response is sent back on the +.I wc +channel received in the +.B write +tuple: +.I count +gives the number of bytes written (zero if an error occurs), and +.I error +is an empty or +.B nil +string or an explanation of the problem. +.PP +If the client closes the file for reading (writing), the server will receive a +.B read +.RB ( write ) +message with a +.B nil +.I rc +.BI ( wc )\f1. +The server can use these signals to determine when to stop processing. +The +.I fid +received by the server can be used to manage the multiplexing of multiple +active clients sharing a single file; see +.IR intro (5) +for details. +.SH SOURCE +.B /emu/port/devsrv.c +.br +.B /os/port/devsrv.c +.SH SEE ALSO +.IR sh-file2chan (1), +.IR sys-intro (2), +.IR sys-open (2), +.IR sys-read (2), +.IR sys-bind (2), +.IR intro (5) +.SH BUGS +.B Read +and +.B write +system calls for the file will not return until the +server sends its reply on the appropriate channel, +so the process doing the +.B read +or +.B write +cannot be the one serving. diff --git a/man/2/sys-fversion b/man/2/sys-fversion new file mode 100644 index 00000000..200a4f04 --- /dev/null +++ b/man/2/sys-fversion @@ -0,0 +1,71 @@ +.TH SYS-FVERSION 2 +.SH NAME +fversion \- initialize Styx connection and negotiate version +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +fversion: fn(fd: ref FD, bufsize: int, version: string): (int, string); +.EE +.SH DESCRIPTION +.B Fversion +initialises the Styx connection represented by +.I fd +and negotiates the maximum message size and the version of the protocol to be used. +.PP +The +.I bufsize +determines the size of the I/O buffer used to stage Styx requests to the server, +subject to the constraints of the server itself. +The +.I version +is a text string that represents the highest version level the protocol will support. +.PP +.B Fversion +returns a tuple +.RI ( n , useversion ) +where +.I n +is -1 if the request was rejected, and otherwise +.I n +is +.I bufsize +and +.I useversion +is a string representing the negotiated, possibly lower, version of the protocol. +.PP +Default values of zero for +.I bufsize +and the empty string for +.I version +will negotiate sensible defaults for the connection. +.PP +The interpretation of the version strings is defined in +.IR version (5). +.PP +It is rare to use +.BR fversion +directly; usually the default negotiation performed +by the kernel during +.B mount +(see +.IR sys-bind (2)) +is sufficient. +.SH SEE ALSO +.IR sys-fauth (2), +.IR intro (5), +.IR version (5). +.SH DIAGNOSTICS +.B Fversion +returns a value of -1 for +.I n +on error, including failure to negotiate acceptable values, +and sets the system error string. +.SH BUGS +The returned value of +.I n +when no error occurs should be the negotiated message size +but is currently the original +.I bufsize +parameter. diff --git a/man/2/sys-iounit b/man/2/sys-iounit new file mode 100644 index 00000000..0f8ef118 --- /dev/null +++ b/man/2/sys-iounit @@ -0,0 +1,35 @@ +.TH SYS-IOUNIT 2 +.SH NAME +iounit \- return size of atomic I/O unit for file descriptor +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +iounit: fn(fd: ref FD): int; +.EE +.SH DESCRIPTION +Reads and writes of files are transmitted using the Styx protocol (see +.IR intro (5)) +and in general, operations involving large amounts of data must be +broken into smaller pieces by the operating system. +The `I/O unit' associated with each file descriptor records the maximum +size, in bytes, that may be read or written without breaking up the transfer. +.PP +The +.B iounit +system call returns the I/O unit size for the open file +.IR fd . +Certain file descriptors, particularly those associated with devices, may +have no specific I/O unit, in which case +.B iounit +will return zero. +.SH SOURCE +.B /emu/port/inferno.c +.br +.B /os/port/inferno.c +.SH SEE ALSO +.IR sys-dup (2), +.IR read (5) +.SH DIAGNOSTICS +Returns zero if any error occurs or if the I/O unit size of the fd is unspecified or unknown. diff --git a/man/2/sys-millisec b/man/2/sys-millisec new file mode 100644 index 00000000..d8e7d0bb --- /dev/null +++ b/man/2/sys-millisec @@ -0,0 +1,24 @@ +.TH SYS-MILLISEC 2 +.SH NAME +millisec \- millisecond timer +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +millisec: fn(): int; +.EE +.SH DESCRIPTION +.B Millisec +returns the value of an internal system clock, in milliseconds. +The actual resolution of the clock is a property of the underlying +system and may be coarser than a millisecond. +The epoch is arbitrary, so +.B millisec +is useful for measuring durations but not absolute time. +If the system operates continuously, the millisecond counter overflows +every few months; +a reboot resets the epoch. +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-sleep (2) diff --git a/man/2/sys-open b/man/2/sys-open new file mode 100644 index 00000000..5795ce32 --- /dev/null +++ b/man/2/sys-open @@ -0,0 +1,135 @@ +.TH SYS-OPEN 2 +.SH NAME +open, create \- open a file for reading or writing, create file +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +create: fn(file: string, omode, perm: int): ref FD; +open: fn(file: string, omode: int): ref FD; +.EE +.SH DESCRIPTION +.B Open +opens the +.I file +for I/O and returns an associated file descriptor. +.I Omode +is one of +.BR Sys->OREAD , +.BR Sys->OWRITE , +or +.BR Sys->ORDWR , +asking for permission to read, write, or read and write, respectively. +There are two values that can be OR'd with those to form +.IR omode : +.B Sys->OTRUNC +says to truncate the file before opening it, which requires write permission +even if +.I omode +is +.BR Sys->OREAD ; +and +.B Sys->ORCLOSE +says to remove the file when it is closed (ie, when the last reference +to this file descriptor goes away). +.PP +.B Open +returns +.B nil +if the file does not exist, if the file name is unacceptable, if the user does not have +permission to open it as requested +(see +.IR sys-stat (2) +for a description of permissions), +or if any other error occurs. +.PP +.B Create +creates a new +.I file +or prepares to rewrite an existing +.IR file , +opens it according to +.I omode +(as described for +.BR open ), +and returns an associated file descriptor. +.PP +If the file is new, +the owner is set to the +.I "user id +of the creating process group, +the group to that of the containing directory, +and the permissions to +.I perm +ANDed with the permissions of the containing directory. +The bits in +.I perm +are the same as those +in the file mode returned by +.IR sys-stat (2). +.PP +If the file already exists, +it is truncated to 0 length, +but the permissions, owner, and group remain unchanged. +.PP +The created file will be a directory if the +.B Sys->DMDIR +bit is set in +.IR perm , +and +.I omode +is +.BR Sys->OREAD . +The file will be exclusive-use if the +.B Sys->DMEXCL +bit is set in +.I perm +and the underlying file server supports it; +see +.IR open (5) +for details. +It will be append-only if the +.B Sys->DMAPPEND +bit is set, and the underlying file server supports it. +.PP +.B Create +returns +.B nil +if the path up to the last element of +.I file +cannot be evaluated, if the file name is unacceptable, +if the user does not have write permission in the final directory, +if the file already exists and does not permit the access defined by +.IR omode, +or if any other error occurs. +.PP +If the file is new and the directory in which it is created is +a union directory (see +.IR sys-intro (2)) +then the constituent directory where the file is created +depends on the structure of the union: see +.IR sys-bind (2). +.PP +Since create may succeed even if the file exists, a special mechanism +is necessary for applications that require an atomic create operation. +If the +.B Sys->OEXCL +bit is set in the mode for a create, the call succeeds only if +the file does not already exist; see +.IR open (5) +for details. +.PP +There is no explicit ``close'' routine: +when the last reference to the file descriptor is released, +the system closes the associated file. +For devices and network protocols where shutdown must be guaranteed, +write a +.B hangup +message to the associated control file and use the return value of the +.B write +to verify closure. +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-bind (2), +.IR sys-stat (2) diff --git a/man/2/sys-pctl b/man/2/sys-pctl new file mode 100644 index 00000000..1df73829 --- /dev/null +++ b/man/2/sys-pctl @@ -0,0 +1,142 @@ +.TH SYS-PCTL 2 +.SH NAME +pctl \- process control +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +pctl: fn(flags: int, movefd: list of int): int; +.EE +.SH DESCRIPTION +A newly spawned Limbo process (also known as a thread) +shares with its parent process a number of resources and properties, +such as file name space, open file descriptors, current working directory, +and so on. +.B Pctl +controls this sharing, allowing a process to gain a copy of a resource +rather than to share it, to start with a null resource, and so on. +.PP +The set of processes sharing a property are called a group; +for example the set of processes sharing a name space are called a name space group. +Each process is a member of a +.IR "process group" , +typically the set of threads functioning as a single program. +All the members of a process group +may be terminated at once using the +.B killgrp +control message in the +.IR prog (3) +device. +.PP +A call to +.B pctl +affects the calling process and, indirectly according to +.IR flags , +any other processes sharing properties with it. +The +.I flags +to +.B pctl +are: +.TF FORKENV +.PD +.TP +.B NEWFD +Give the process a new file descriptor group. +All file descriptors are closed except those listed in +.IR movefd , +which are preserved in the new group. +After this call, changes the process makes to its set of open file descriptors +will not be visible to other processes. +.TP +.B FORKFD +Place the process in a new file descriptor group +containing a copy +of the current set of file descriptors. +The file descriptors listed in +.I movefd +are closed in the +.I old +group. +After this call, changes the process makes to its set of open file descriptors +will not be visible to other processes. +.TP +.B NEWNS +Place the process in a new file name space group in which the current directory +is made the root directory, +.LR / , +of the new name space. +The current directory is unaffected by this call. +.TP +.B FORKNS +Place the process in a new file name space group +containing a copy +of the current name space. +After this call, changes the process makes to its name space, including +.B chdir +calls, +will not affect other processes. +.TP +.B NODEVS +Set the current file name space group to prevent subsequent access to +the roots of file trees implemented by a device driver (ie, the use of path +names beginning with +.BR # , +as described by +.IR intro (3)). +Even after +.B NODEVS +the following devices can be attached, which are either +private or can be separately controlled: +.IR pipe (3) , +.IR env (3), +.IR srv (3) +and +.IR ssl (3). +.TP +.B NEWENV +Place the process in a new empty environment group containing +no environment variables. +After this call, changes the process makes to its environment will +not affect other processes. +.TP +.B FORKENV +Place the process in a new environment group containing +a copy of the current environment variables. +After this call, changes the process makes to its environment will +not affect other processes. +.TP +.B NEWPGRP +Establish a new process group with a group id equal to that of the pid +of the calling process. +.PP +The Inferno shell +.IR sh (1) +uses +.B FORKFD +when starting a command; +its +.I pctl +built-in (see +.IR sh-std (1)) +can invoke the other effects when needed. +The window manager +.IR wm (1) +uses +.B NEWPGRP|FORKFD +when starting a window manager application. +.IR Srv (8) +uses +.B NEWGRP|FORKNS|FORKFD +to insulate itself completely from services it starts. +.PP +The return value of +.B pctl +is the numerical process id of the calling process, which can be used for example to +access its +.IR prog (3) +files. +.SH SEE ALSO +.IR sh-std (1), +.IR sys-intro (2) diff --git a/man/2/sys-pipe b/man/2/sys-pipe new file mode 100644 index 00000000..6fb3a25e --- /dev/null +++ b/man/2/sys-pipe @@ -0,0 +1,45 @@ +.TH SYS-PIPE 2 +.SH NAME +pipe \- create an interprocess channel +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +pipe: fn(fds: array of ref FD): int; +.EE +.SH DESCRIPTION +.B Pipe +creates a buffered channel for interprocess I/O via file descriptors. +It allocates a pipe from the pipe device and returns in the array +.B fds +file descriptors for the two pipe ends. Both returned file descriptors are opened for both reading and writing +.RB ( Sys->ORDWR ). +Data written on one file descriptor can be read from the other. +The details of flow control and buffering are given in +.IR pipe (3). +When no references remain to the file descriptor representing +one end of a pipe, and all remaining data has been read at the other end, +subsequent reads at that end will return 0 bytes. +Writes to a pipe with no reader produce an exception. +.PP +The array +.B fds +passed to the system call must have a length of at least 2; +only entries 0 and 1 are updated. +.PP +Limbo applications typically use typed Limbo channels, not pipes, for efficient +communication by cooperating processes. +Pipes are still useful, however, +to connect applications that do not (or cannot) share such channels, +or when a system interface requires a file descriptor. +For instance, a process that serves the Styx protocol can +pass the file descriptor for one end of a pipe to +.B Sys->mount +(see +.IR sys-bind (2)), +and read and write Styx messages on the other end of the pipe. +.SH DIAGNOSTICS +Returns 0 on success; -1 on failure. +.SH "SEE ALSO" +.IR pipe (3) diff --git a/man/2/sys-print b/man/2/sys-print new file mode 100644 index 00000000..c499ad43 --- /dev/null +++ b/man/2/sys-print @@ -0,0 +1,271 @@ +.TH SYS-PRINT 2 +.SH NAME +print, fprint, sprint \- print formatted output +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +fprint: fn(fd: ref FD, format: string, *): int; +print: fn(format: string, *): int; +sprint: fn(format: string, *): string; +.EE +.SH DESCRIPTION +These functions format and print their arguments as +.SM UTF +text. +.B Print +writes text to the standard output. +.B Fprint +writes to the named output +file descriptor. +.B Sprint +places text +in a string, which it returns. +.B Print +and +.B fprint +return the number of bytes transmitted +or +a negative value if an error was encountered when writing the output. +.PP +Each of these functions +converts, formats, and prints its +trailing arguments +under control of a +.IR format +string. +The +format +contains two types of objects: +plain characters, which are simply copied to the +output stream, +and conversion specifications, +each of which results in fetching of +zero or more +arguments. +The Limbo compiler recognizes calls to these functions +and checks that the arguments match the format specifications in number and type. +.PP +Each conversion specification has the following format: +.IP +.BI "%" " \fR[\fPflags\fR]\fP verb" +.PP +The verb is a single character and each flag is a single character or a +(decimal) numeric string. +Up to two numeric strings may be used; +the first is called +.IR f1 , +the second +.IR f2 . +They can be separated by +.RB ` . ', +and if one is present, then +.I f1 +and +.I f2 +are taken to be zero if missing, otherwise they are considered `omitted'. +Either or both of the numbers may be replaced with the character +.BR * , +meaning that the actual number will be obtained from the argument list +as an integer. +The flags and numbers are arguments to +the +.I verb +described below. +.PP +.TP +.BR d ", " o ", " x ", " X +The numeric verbs +.BR d , +.BR o , +and +.B x +format their +.B int +arguments in decimal, octal, and hexadecimal (with hex digits in lower-case). +The flag +.B b +is required when the corresponding value is a Limbo +.BR big , +not an +.BR int . +Arguments are taken to be signed, unless the +.B u +flag is given, to force them to be treated as unsigned. +Each interprets the flags +.B \- , +.B , , +and +.B # +to mean left justified, commas every three digits, and alternative format. +If +.I f2 +is not omitted, the number is padded on the left with zeros +until at least +.I f2 +digits appear. +Then, if alternative format is specified +for +.B x +conversion, the number is preceded by +.BR 0x . +Finally, if +.I f1 +is not omitted, the number is padded on the left (or right, if +left justification is specified) with enough blanks to +make the field at least +.I f1 +characters long. +The verb +.B X +is similar to +.BR x , +except that the hexadecimal digits are displayed in upper-case, +and in alternative format, the number is preceded by +.BR 0X . +.PP +.TP +.BR e ", " f ", " g +The floating point verbs +.BR e , +.BR f , +and +.BR g +take a +.B real +argument. +Each interprets the flags +.BR + , +.BR \- , +and +.B # +to mean +always print a sign, +left justified, +and +alternative format. +.I F1 +is the minimum field width and, +if the converted value takes up less than +.I f1 +characters, it is padded on the left (or right, if `left justified') +with spaces. +.I F2 +is the number of digits that are converted after the decimal place for +.BR e +and +.B f +conversions, +and +.I f2 +is the maximum number of significant digits for +.B g +conversions. +The +.B f +verb produces output of the form +.RB [ \- ]\c +.IR digits [\c +.BI \&. digits\fR]. +The +.B e +conversion appends an exponent +.BR e [ \- ]\c +.IR digits . +The +.B g +verb will output the argument in either +.B e +or +.B f +with the goal of producing the smallest output. +Also, trailing zeros are omitted from the fraction part of +the output, and a trailing decimal point appears only if it is followed +by a digit. +When alternative format is specified, the result will always contain a decimal point, +and for +.B g +conversions, trailing zeros are not removed. +.TP +.BR E ", " G +These are the same as +.B e +and +.B g +respectively, but use +.B E +not +.B e +to specify an exponent when one appears. +.TP +.B c +The +.B c +verb converts a single Unicode character +from an +.B int +argument to a UTF encoding, +justified within a field of +.I f1 +characters as described above. +.TP +.B r +The +.B r +verb takes no arguments; it prints the error string +associated with the most recent system error. +.TP +.B s +The +.B s +verb copies a +.B string +to the output. +The number of characters copied +.RI ( n ) +is the minimum +of the size of the string and +.IR f2 . +These +.I n +characters are justified within a field of +.I f1 +characters as described above. +.TP +.B q +The +.B q +verb copies a +.B string +to the output as for +.BR s , +but quotes the string in the style of +.IR sh (1) +only if necessary to avoid ambiguity (for instance +if the string contains quotes or spaces). +If the format string, however, includes the specifier +.B # +(for example +.BR %#q ), +the printed string will always be quoted. +.SH SOURCE +.B /libinterp/runt.c:/^xprint +.br +.B /os/port/print.c +.br +.B /lib9/print.c +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-open (2) +.SH BUGS +The +.B x +verb does not apply the +.B 0x +prefix when +.I f2 +is present. +The prefix should probably be +.B 16r +anyway. diff --git a/man/2/sys-read b/man/2/sys-read new file mode 100644 index 00000000..38df696d --- /dev/null +++ b/man/2/sys-read @@ -0,0 +1,94 @@ +.TH SYS-READ 2 +.SH NAME +read, write, pread, pwrite, stream \- read or write file +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +read: fn(fd: ref FD, buf: array of byte, nbytes: int): int; +write: fn(fd: ref FD, buf: array of byte, nbytes: int): int; + +pread: fn(fd: ref FD, buf: array of byte, nbytes: int, + offset: big): int; +pwrite: fn(fd: ref FD, buf: array of byte, nbytes: int, + offset: big): int; + +stream: fn(src, dst: ref FD, bufsiz: int): int; +.EE +.SH DESCRIPTION +.B Read +reads +.I nbytes +bytes of data from the offset in the file +associated with +.I fd +into memory at +.IR buf . +The file offset is advanced by the number of bytes read. +It is not guaranteed +that all +.I nbytes +bytes will be read; for example +if the file refers to the console, at most one line +will be returned. +In any event the number of bytes read is returned. +A return value of +0 is conventionally interpreted as end of file. +.PP +.B Write +writes +.I nbytes +bytes of data starting at +.I buf +to the file associated with +.I fd +at the file offset. +The offset is advanced by the number of bytes written. +The number of bytes actually written is returned. +It should be regarded as an error +if this is not the same as requested. +.PP +.B Pread +and +.B pwrite +take an explicit file +.I offset +as a parameter, leaving +.IR fd 's +current offset untouched; +they are otherwise identical in behaviour to +.B read +and +.BR write . +They are particulary useful when several processes must access the same +.I fd +concurrently and it is inconvenient or undesirable to synchronise their activity +to avoid interference. +.PP +.B Stream +continually reads data from +.IR src , +using a buffer of +.I bufsiz +bytes, and writes the data to +.IR dst . +It copies data +until a read fails (returning +zero bytes or an error) or a write fails. +.B Stream +returns the number of bytes actually copied. +The implementation may be more efficient than a +.BR read / write +loop in the application, but is otherwise +equivalent to calling +.B read +and +.B write +directly. +.SH SEE ALSO +.IR bufio (2), +.IR sys-intro (2), +.IR sys-dup (2), +.IR sys-open (2), +.IR read (5) diff --git a/man/2/sys-remove b/man/2/sys-remove new file mode 100644 index 00000000..083ec6b4 --- /dev/null +++ b/man/2/sys-remove @@ -0,0 +1,23 @@ +.TH SYS-REMOVE 2 +.SH NAME +remove \- remove a file +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +remove: fn(file: string): int; +.EE +.SH DESCRIPTION +.B Remove +removes +.I file +from the directory containing it and discards the contents of the file. +The user must have write permission in the containing directory. +If +.I file +is a directory, it must be empty. +.B Remove +returns zero if it deletes the file, \-1 otherwise. +.SH SEE ALSO +.IR sys-intro (2) diff --git a/man/2/sys-seek b/man/2/sys-seek new file mode 100644 index 00000000..15124007 --- /dev/null +++ b/man/2/sys-seek @@ -0,0 +1,48 @@ +.TH SYS-SEEK 2 +.SH NAME +seek \- change file offset +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +seek: fn(fd: ref FD, off: big, start: int): big; +.EE +.SH DESCRIPTION +.B Seek +sets the 64-bit offset for the file +associated with +.I fd +as follows: +.IP +If +.I start +is +.BR Sys->SEEKSTART , +the offset is set to +.I off +bytes. +.IP +If +.I start +is +.BR Sys->SEEKRELA , +the pointer is set to its current location plus +.IR off . +.IP +If +.I start +is +.BR Sys->SEEKEND , +the pointer is set to the size of the +file plus +.IR off . +.PP +The new file offset value is returned. +.PP +Seeking in a pipe is not allowed. +Seeking in a directory is allowed only if the new offset is zero. +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-open (2), +.IR bufio (2), diff --git a/man/2/sys-self b/man/2/sys-self new file mode 100644 index 00000000..777cca2e --- /dev/null +++ b/man/2/sys-self @@ -0,0 +1,83 @@ +.TH SYS-SELF 2 +.SH NAME +SELF \- reference self as a compatible module type +.SH SYNOPSIS +.B +include "sys.m"; +.br +.BI "me := load" " Module " SELF; +.SH DESCRIPTION +An instance of +a module of one type can acquire a reference to itself as any compatible module type, +using the Limbo +.B load +operator with the special built-in module name +.BR $self . +Normally, applications use a synonym, the constant +.BR SELF , +which is defined by +.B sys.m +.I outside +the declaration of the +.B Sys +module +(so that it need not be imported). +Note that the result of the +.B load +refers to the same instance +that is currently executing (ie, the same module data). +.PP +This mechanism is most often used to obtain a reference to the current module +instance with a +.I restriction +of its module type to a compatible subtype (eg, containing a subset +of the current module's declarations). +For example, given modules of the following types: +.IP +.EX +T: module +{ + init: fn(nil: ref Draw->Context, nil: list of string); + special: fn(a, b: int); +}; +S: module +{ + special: fn(x, y: int); +}; +G: module +{ + init: fn(v: S); +}; +.EE +.PP +an instance of module +.B T +can execute both the following: +.IP +.EX +t := load T SELF; +s := load S SELF; +.EE +.PP +but a module of type +.B S +could not load itself as type +.BR T . +.PP +The result might typically be assigned to a module variable of that type +(including passing as a parameter or storing in an adt), as in: +.IP +.EX +g := load G "g.dis"; +g->init(s); +.EE +.PP +See the definition and use of +.B BufioFill +in +.IR bufio (2) +and +.IR bufio-chanfill (2) +for a practical example. +.SH SEE ALSO +``The Limbo Programming Language'', Volume 2. diff --git a/man/2/sys-sleep b/man/2/sys-sleep new file mode 100644 index 00000000..d8b91a56 --- /dev/null +++ b/man/2/sys-sleep @@ -0,0 +1,29 @@ +.TH SYS-SLEEP 2 +.SH NAME +sleep \- delay +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +sleep: fn(period: int): int; +.EE +.SH DESCRIPTION +.B Sleep +suspends the current thread for +.I period +milliseconds. +The actual suspension time may be a little more or less than +the requested time. +If +.I period +is 0, the process +gives up the CPU if another process is waiting to run, returning +immediately if not. +.PP +.B Sleep +normally returns 0. In hosted Inferno it may return -1 to indicate that +it was not possible to sleep (eg if no more threads are available). +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-millisec (2) diff --git a/man/2/sys-stat b/man/2/sys-stat new file mode 100644 index 00000000..a5ca67da --- /dev/null +++ b/man/2/sys-stat @@ -0,0 +1,283 @@ +.TH SYS-STAT 2 +.SH NAME +fstat, fwstat, stat, wstat \- get and put file status +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +fstat: fn(fd: ref FD): (int, Dir); +fwstat: fn(fd: ref FD; d: Dir): int; +stat: fn(name: string): (int, Dir); +wstat: fn(name: string, d: Dir): int; + +nulldir: con Dir(\fIspecial don't care values\fP); +zerodir: con Dir(\fIall elements set to zero\fP); +.EE +.SH DESCRIPTION +Given a file's +.IR name , +or an open file descriptor +.IR fd , +these routines retrieve or modify file status information. +.B Stat +and +.B fstat +retrieve information about +.I name +or +.I fd +into the +.B Dir +member of the return tuple. +The +.B int +member will be zero for success and \-1 for failure. +.B wstat +and +.B fwstat +write information back, thus changing file attributes according to +.IR d . +Both functions return zero for success and \-1 for failure. +.PP +File status is recorded as a +.B Dir +type: +.IP +.PP +.EX +Qid: adt +{ + path: big; # unique id for file on server + vers: int; # write version number + qtype: int; # file type (see below) +}; + +Dir: adt +{ + name: string; # last element of path + uid: string; # owner name + gid: string; # group name + muid: string; # last modifier name + qid: Qid; # unique id from server + mode: int; # permissions + atime: int; # last read time + mtime: int; # last write time + length: big; # file length + dtype: int; # server type + dev: int; # server subtype +}; +.EE +.PP +If the file resides on permanent storage and is not a directory, +the +.B length +field returned in +.B Dir +by +.B stat +is the number of bytes in the file. +For directories, the length returned is zero. +Some devices, in particular files that are +streams such as pipes and network connections, +report a length that is the number of bytes that +may be read from the device without blocking. +.PP +Each file is the responsibility of some +.IR server : +it could be a file server, a kernel device, or a user process. +.B Dtype +identifies the server type, and +.B dev +says which of a group of servers of the same type is the one +responsible for this file. +.B Qid +is a type containing +.BR path , +.B vers +and +.B qtype +members, each an integer: +.B path +is guaranteed to be +unique among all path names currently on the file server; +.B vers +changes each time the file is modified; +and +.B qtype +gives the file's characteristics (eg, directory or file). +The +.B path +is 64 bits +.RB ( big ), +and the +.B vers +is 32 bits +.RB ( int ). +Thus, if two files have the same +.BR dtype , +.BR dev , +and +.BR qid , +they are the same file. +(Except when checking that the contents +are the same, as in a file cache, the version is often considered irrelevant in that comparison.) +The bits in +.B qtype +are defined by +.IP +.EX +16r80 # directory (Sys->QTDIR) +16r40 # append-only (Sys->QTAPPEND) +16r20 # exclusive-use (Sys->QTEXCL) +16r08 # authentication file (Sys->QTAUTH) +16r00 # any other file (Sys->QTFILE) +.EE +.PP +(They are the top 8 bits of +.B Dir.mode +for the file, as discussed below.) +.B Sys +defines constants for the bits: +.BR Sys->QTDIR , +.BR Sys->QTAPPEND , +and so on, as shown above. +The value +.B Sys->QTFILE +is not a particular bit; it is defined to be zero, to allow +a symbolic name to be used when creating +.B Qid +values for ordinary files. +.PP +The bits in +.B mode +are defined by +.IP +.EX +16r80000000 #directory (Sys->DMDIR) +16r40000000 #append-only (Sys->DMAPPEND) +16r20000000 #exclusive-use (Sys->DMEXCL) +16r08000000 #authentication file (Sys->DMAUTH) + 8r400 #read permission by owner + 8r200 #write permission by owner + 8r100 #execute permission (search on directory) by owner + 8r070 #read, write, execute (search) by group + 8r007 #read, write, execute (search) by others +.EE +.PP +There are constants defined in +.B Sys +for the first four bits: +.BR Sys\->DMDIR , +.B Sys\->DMAPPEND +and +.B Sys\->DMEXCL +for normal files, and +.B Sys\->DMAUTH +only for the special authentication file opened by +.IR sys-fauth (2). +.PP +The two time fields are measured in seconds since the epoch +(Jan 1 00:00 1970 GMT). +.B Mtime +is the time of the last change of content. +Similarly, +.B atime +is set whenever the contents are accessed; +also, it is set whenever +.B mtime +is set. +.PP +.B Uid +and +.B gid +are the names of the owner and group (of owners) of the file; +.B muid +is the name of the user that last modified the file (setting +.BR mtime ). +Groups are also users, but each server is free to associate +a list of users with any user name +.IR g , +and that list is the +set of users in the group +.IR g . +When an initial attachment is made to a server, +the user string in the process group is communicated to the server. +Thus, the server knows, for any given file access, whether the accessing +process is the owner of, or in the group of, the file. +This selects which sets of three bits in +.B mode +is used to check permissions. +.PP +Only some of the fields may be changed by +.B wstat +calls. +The +.B name +can be changed by anyone with write permission in the parent directory. +The +.B mode +and +.B mtime +can be changed by the owner or the group leader of the file's current +group. +The +.B gid +can be changed by the owner if he or she is a member of the new group. +The +.B gid +can be changed by the group leader of the file's current group +if he or she is the leader of the new group. +The +.B length +can be changed by anyone with write permission, provided the operation +is implemented by the server. +(See +.IR intro (5) +and +.IR stat (5) +for more information about permissions, and +.IR users (6) +for how to configure users and groups +when using +.IR kfs (4)). +.PP +Special values in the fields of the +.B Dir +passed to +.I wstat +indicate that the field is not intended to be changed by the call. +The values are the maximum unsigned integer of appropriate size +for integral values (usually +.BR ~0 , +but beware of conversions and size mismatches +when comparing values) and the empty or nil string for string values. +The constant +.B nulldir +in +.B Sys +has all its elements initialised to these ``don't care'' values. +Thus one may change the mode, for example, by assigning +.B sys->nulldir +to initialize a +.BR Dir , +then setting the mode, and then doing +.IR wstat ; +it is not necessary to use +.I stat +to retrieve the initial values first. +.PP +The constant +.B zerodir +has all its elements initialised to zero. +It can be used to initialise a +.B Dir +structure, for use with +.IR styx (2) +or +.IR styxservers-nametree (2), +for instance. +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-dirread (2), +.IR sys-open (2) diff --git a/man/2/sys-tokenize b/man/2/sys-tokenize new file mode 100644 index 00000000..38c04598 --- /dev/null +++ b/man/2/sys-tokenize @@ -0,0 +1,56 @@ +.TH SYS-TOKENIZE 2 +.SH NAME +tokenize \- split string into words +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +tokenize: fn(s, delim: string): (int, list of string); +.EE +.SH DESCRIPTION +.B Tokenize +breaks +.I s +into words separated by characters in +.IR delim . +The returned tuple holds the number of words +and an ordered list of those words (whose +.B hd +gives the leftmost word from +.IR s ). +.PP +Words are delimited by the maximal sequences of any +character from the +.I delim +string. +.B Tokenize +skips delimiter characters at the beginning and end of +.IR s , +so each element in the returned list has non-zero length. +.PP +If +.I s +is +.B nil +or contains no words, +.B tokenize +returns a count of zero and a +.B nil +list. +.PP +.I Delim +may be +.B nil +or the empty string, specifying no delimiter characters. +The resulting word list will be +.B nil +(if +.I s +is +.B nil +or the empty string) +or a single-item list with a copy of +.IR s . +.SH SEE ALSO +.IR sys-intro (2) diff --git a/man/2/sys-utfbytes b/man/2/sys-utfbytes new file mode 100644 index 00000000..2ad42489 --- /dev/null +++ b/man/2/sys-utfbytes @@ -0,0 +1,28 @@ +.TH SYS-UTFBYTES 2 +.SH NAME +utfbytes \- compute UTF length of complete Unicode characters in a UTF byte sequence +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +utfbytes: fn(buf: array of byte, n: int): int; +.EE +.SH DESCRIPTION +.B Utfbytes +examines the +.IR n -byte +UTF sequence in +.IR buf +and returns the number of bytes representing complete Unicode characters. +The value will be less than +.I n +when the region inspected ends with an incomplete UTF sequence. +.SH DIAGNOSTIC +A bounds check error results if +.I n +exceeds the length of the array. +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-byte2char (2), +.IR utf (6) diff --git a/man/2/sys-werrstr b/man/2/sys-werrstr new file mode 100644 index 00000000..add8206d --- /dev/null +++ b/man/2/sys-werrstr @@ -0,0 +1,26 @@ +.TH SYS-WERRSTR 2 +.SH NAME +werrstr \- set the system error string +.SH SYNOPSIS +.EX +include "sys.m"; +sys := load Sys Sys->PATH; + +werrstr(s: string): int; +.EE +.SH DESCRIPTION +When a system call fails, it returns an error value (often -1) +and records a string describing the error in a per-process location. +The verb +.B r +in +.IR sys-print (2) +outputs the error string. +.B Werrstr +sets the process's error string to +.IR s , +to allow a function in a module to mimic the error reporting +interface of a system call. +.SH SEE ALSO +.IR sys-intro (2), +.IR sys-print (2) diff --git a/man/2/tabs b/man/2/tabs new file mode 100644 index 00000000..eae441de --- /dev/null +++ b/man/2/tabs @@ -0,0 +1,74 @@ +.TH TABS 2 +.SH NAME +tabs: mktabs, tabsctl \- +tabbed notebook pseudo-widget +.SH SYNOPSIS +.EX +include "tabs.m"; +tabs := load Tabs Tabs->PATH; + +init: fn(); + +mktabs: fn(p: ref Tk->Toplevel, book: string, + tabs: array of (string, string), dflt: int): + chan of string; + +tabsctl: fn(p: ref Tk->Toplevel, book: string, + tabs: array of (string, string), curid: int, + newid: string): int; +.EE +.SH DESCRIPTION +.B Tabs +implements a Tk extension: +a user-interface device that looks like a tabbed notebook. +.PP +.B Init +should be called once to initialise the internal state. +.PP +.B Mktabs +creates a tabbed notebook pseudo widget, +.IR book , +for insertion into Tk +widget +.IR p . +Once created, +.I book +can be packed like any other Tk widget. +Information for specific tab pages is contained in the +.I tabs +array. +For each page, +.I tabs +contains the name displayed in the tab and a Tk widget name. +Whenever a page is selected, its widget is +packed in +.I book +and displayed. +The notebook will initially display the page +indexed by +.IR dflt . +.B Mktabs +returns a Tk event channel. +Messages received on this channel should be passed as the +.I newid +argument to +.BR tabsctl . +.PP +.B Tabsctl +controls a tabbed notebook. +.I Curid +is the index of the page currently selected +in the notebook. +.I Newid +is a string containing the index of the new +page to be displayed; this is usually the information received on +the tabs channel. +The index of the newly selected page is returned. +.SH SOURCE +.B /appl/lib/tabs.b +.SH SEE ALSO +.IR dividers (2), +.IR draw-context (2), +.IR tk (2), +.IR wmlib (2) + diff --git a/man/2/tftp b/man/2/tftp new file mode 100644 index 00000000..d5a2a236 --- /dev/null +++ b/man/2/tftp @@ -0,0 +1,54 @@ +.TH TFTP 2 +.SH NAME +tftp \- Trivial File Transfer Protocol +.SH SYNOPSIS +.EX +tftp := load Tftp Tftp->PATH; +Tftp: module +{ + init: fn(progress: int); + receive: fn(host: string, filename: string, + fd: ref Sys->FD): string; +}; +.EE +.SH DESCRIPTION +.B Tftp +fetches files from an Internet TFTP server. +It is typically used only to fetch kernels or configuration files when booting. +Only one transfer can be active at any given time. +.PP +.B Init +must be called once before using any other function of the module. +If +.I progress +is non-zero, +.B receive +will periodically print a character as blocks are received: +.RB ` . ' +for every 25 blocks, +.RB ` S ' +for a sequence error, +.RB ` T ' +for a timeout. +.PP +.B Receive +attempts to fetch the contents of +.I filename +from +.I host +and writes the blocks of data to +.I fd +as they are received. +It returns when the file transfer has completed, +returning a nil string on success or a diagnostic string otherwise. +When booting, +.I fd +is typically open on the +.B kexec +file of +.IR boot (3). +.SH SOURCE +.B /appl/lib/tftp.b +.SH SEE ALSO +.IR ip (2), +.IR bootpd (8) diff --git a/man/2/timers b/man/2/timers new file mode 100644 index 00000000..4e1c8f52 --- /dev/null +++ b/man/2/timers @@ -0,0 +1,89 @@ +.TH TIMERS 2 +.SH NAME +timers \- interval timers +.SH SYNOPSIS +.EX +include "timers.m"; +timers := load Timers Timers->PATH; + +Timer: adt +{ + timeout: chan of int; + start: fn(msec: int): ref Timer; + stop: fn(t: self ref Timer); +}; + +init: fn(minms: int): int; +shutdown: fn(); +.EE +.SH DESCRIPTION +.B Timers +provides simple interval timing. +Timeouts are notified by a message sent on a channel, +allowing them to provide timeouts in +.B alt +statements. +.PP +The module must first be initialised by calling +.BR init , +which starts a process to manage the interval timers and returns its process ID. +Before exit, the caller must shut the timing process down either by calling +.BR shutdown , +which stops it synchronously; by using the process ID returned by +.B init +to kill it; +or by killing the process group of the process that +called +.BR init +(since the timing processes remain in that group). +.I Minms +gives the minimum granularity of timing requests in milliseconds. +.TP +.BI Timer.start( msec ) +Returns a +.B Timer +that will expire in +.I msec +milliseconds, +measured with the granularity of either +.IR sys-sleep (2) +or the granularity set by +.BR init , +whichever is greater. +.TP +.IB t .timeout +An arbitrary integer value is sent on this channel when the timer +.I t +expires. +.TP +.IB t .stop() +The timer +.I t +is stopped +and removed from the interval timing queue, +if it has not already expired. +.PP +Each +.B Timer +value times a single interval. +When a timer +.I t +expires, the timing process attempts, at that and each subsequent timing interval, to send on +.IB t .channel +until the expiry message is delivered or the timer is stopped. +.SH EXAMPLE +Wait for data to be sent on an input channel, but give up if it does not arrive within 600 milliseconds: +.IP +.EX +t := Timer.start(600); +alt { +data := <-input => + t.stop(); + # process the data +<-t.timeout => + # request timed out +} +.EE +.SH SEE ALSO +.IR sys-millisec (2), +.IR sys-sleep (2) diff --git a/man/2/tk b/man/2/tk new file mode 100644 index 00000000..07774801 --- /dev/null +++ b/man/2/tk @@ -0,0 +1,270 @@ +.TH TK 2 +.SH NAME +Tk: toplevel, namechan, cmd, pointer, keyboard, imageget, imageput, quote \- graphics toolkit +.SH SYNOPSIS +.EX +include "draw.m"; +include "tk.m"; +tk := load Tk Tk->PATH; +Image: import Draw; + +Toplevel: adt +{ + display: ref Draw->Display; + wreq: chan of string; + image: ref Image; + ctxt: ref Draw->Wmcontext; + screenr: Draw->Rect; +}; + +toplevel: fn(display: ref Draw->Display, arg: string): ref Toplevel; +namechan: fn(top: ref Toplevel, c: chan of string, n: string): string; +cmd: fn(top: ref Toplevel, arg: string): string; +pointer: fn(top: ref Toplevel, p: Draw->Pointer); +keyboard: fn(top: ref Toplevel, key: int); +getimage: fn(top: ref Toplevel, name: string): + (ref Image, ref Image, string); +putimage: fn(top: ref Toplevel, name: string, i, m: ref Image): string; +rect: fn(top: ref Toplevel, name: string, flags: int): Draw->Rect; +quote: fn(s: string): string; +color: fn(s: string): int; +.EE +.SH DESCRIPTION +The +.B Tk +module provides primitives for building user interfaces, based on +Ousterhout's Tcl/TK. +The interface to the toolkit itself is primarily the passing of strings +to and from the elements of the toolkit using the +.B cmd +function; see section 9 of this manual for more information +about the syntax of those strings. +.IR Tkclient (2) +is conventionally used to create tk windows +that interact correctly with a running window manager. +.PP +.B Toplevel +creates a new window +called a +.BR Toplevel , +which is under the control of the +.B Tk +toolkit, +on an existing +.IR display , +usually one inherited from the graphics +.B Context +(see +.IR draw-context (2)). +The +.B Toplevel +is passed to +.B cmd +and +.B namechan +.RI ( q.v. ) +to drive the widgets in the window. +.I Arg +is a string containing creation options (such as +.BR "-borderwidth 2" ) +that are applied when creating the toplevel window. +.PP +.B Cmd +passes command strings to the widgets in the +.B Toplevel +.I t +and returns the string resulting from their execution. +For example, given a canvas +.B .c +in the +.B Toplevel +.BR t , +.EX + x := int tk->cmd(t, ".c cget -actx"); +.EE +returns the integer +.I x +coordinate of the canvas. +.PP +Bindings can be created in a +.B Toplevel +that trigger strings to be sent on Limbo channels. +Such channels must be declared to the +.B Tk +module using +.BR namechan . +For example, to create a button that sends the word +.B Ouch +when it is pressed: +.EX + hitchannel := chan of string; + tk->namechan(t, hitchannel, "channel"); + tk->cmd(t, + "button .b.Hit -text Hit -command {send channel Ouch}"); + expl := <-hitchannel; # will see Ouch when button pressed +.EE +.PP +.B Pointer +and +.B keyboard +pass mouse and keyboard events to a +.BR Tk +window +for delivery to widgets; they must be called by each application, +which usually receives them via a +.B Wmcontext +structure (see +.IR draw-context (2)) +obtained from the window manager, often via +.IR tkclient (2). +.PP +.B Putimage +passes an image and a mask into Tk. +If +.I name +is the name of a Tk widget, it must be either a +.IR panel (9) +widget, or a top level widget (ie, +.RB `` . '') +.BR "" "`"` . "'')" +or a menu widget, +in which case the associated image +or window image is set to +.IR i . +.RI ( m +is ignored for menu and top-level widgets.) +Otherwise, +.I name +must be the name of an existing +.IR image (9) +which has its image and mask +set to copies of +.I i +and +.I m +respectively. +.PP +Initially, a Tk toplevel has no image to draw on. +Tk uses +.B wreq +to request new images of an external authority, and to inform +said authority when the images are to be deleted. +The requests are formatted as per +.B quoted +in +.IR string (2), +and hold one of the following: +.TP +.B !reshape \fIname\fP \fIreqid\fP \fIminx miny maxx maxy\fP +A new image for +.I name +is requested +.RI ( name +is either the toplevel widget or a menu). +The desired rectangle for the new image is given +by +.RI [ "minx miny maxx maxy" ], +and the application should respond by creating a new +image and using +.B putimage +to pass it to Tk. +.I Reqid +is used by Tk to filter out responses to out-of-date +requests; when responding to a reshape +request, the +.I name +passed to +.B putimage +should have a space and +.I reqid +appended. +.IR Tkclient (2) +usually deals with the details of this. +.TP +.B delete \fIname\fP +The image +.I name +has been deleted. This is generated for +.IR menu (9) +widgets when they are unmapped. +.TP +.B raise \fIname\fP +Tk widget +.I name +should be raised above other windows on the same screen. +.TP +.B lower \fIname\fP +Tk widget +.I name +should be lowered beneath other windows on the same screen. +.PP +.B Wreq +may be set to nil if an application is not prepared to +read requests sent on this channel. +.PP +.B Rect +returns the bounding rectangle of +widget +.I name +in +.IR top . +.I Flags +determines the form of rectangle returned. +If +.I flags +is zero, the actual rectangle of +.I name +in screen coordinates, not including its border, +is returned. The bitmask flags that can change this are: +.TP +.B Border +Include the widget's border. +.TP +.B Required +Return the rectangle required by the widget, rather +than the rectangle that has been actually allocated to it. +.TP +.B Local +Return the rectangle in coordinates relative +to the logical origin of the actual top level image. +.PP +.B Quote +returns a string that is the same as its arguments, but enclosed +in curly braces and with internal curly braces escaped. +This can be used to make an arbitrary string into a +.I word +suitable as an argument to a Tk function. +.PP +.B Color +returns a colour in 32-bit RGBA format corresponding to the +tk colour name +.IR s . +(see +.IR types (9) +for details). +.PP +.B Screenr +gives the rectangle of the screen containing the toplevel window. +Tk has no +.I "a priori" +way of knowing what this is; it is initially set to the rectangle of the +display image, and may be set by the application if it knows better +(e.g. from the +.B wmrect +file served by +.IR wm (1)). +.SH SOURCE +.B /libinterp/tk.c +.br +.B /libtk/*.c +.SH SEE ALSO +.IR intro (9), +.IR image (9), +.IR panel (9), +.IR tkcmd (1), +.IR sh-tk (1), +.IR draw-context (2), +.IR tkclient (2), +.IR wmlib (2) +.br +`An Overview of Limbo/Tk', this manual, Volume 2. diff --git a/man/2/tkclient b/man/2/tkclient new file mode 100644 index 00000000..c8bf5091 --- /dev/null +++ b/man/2/tkclient @@ -0,0 +1,229 @@ +.TH TKCLIENT 2 +.SH NAME +tkclient: makedrawcontext, toplevel, onscreen, startinput, +wmctl, settitle, handler, snarfput, snarfget \- +window manager interface for Tk applications. +.SH SYNOPSIS +.EX +include "tkclient.m"; +tkclient := load Tkclient Tkclient->PATH; + +Resize, +Hide, +Help, +OK, +Plain: con 1 << iota; + +Appl: con Resize | Hide; + +init: fn(); +makedrawcontext: fn(): ref Draw->Context; +toplevel: fn(ctxt: ref Draw->Context, topconfig: string, + title: string, buts: int): (ref Tk->Toplevel, chan of string); +onscreen: fn(top: ref Tk->Toplevel, how: string); +startinput: fn(top: ref Tk->Toplevel, devs: list of string); +wmctl: fn(top: ref Tk->Toplevel, request: string): string; +settitle: fn(top: ref Tk->Toplevel, name: string): string; +handler: fn(top: ref Tk->Toplevel, stop: chan of int); + +snarfput: fn(buf: string); +snarfget: fn(): string; +.EE +.SH DESCRIPTION +The +.B Tkclient +module provides routines for making windows controlled by +.IR wm (1) +containing +.IR tk (2) +widgets. +.PP +.B Init +should be called once to initialise the internal state of +.BR tkclient . +.PP +.B Makedrawcontext +establishes an initial connection with the window manager, +creating a new +.B Draw +context suitable for creating new windows. It is only +necessary to call this if the application has not already +been provided with a context. +.PP +.B Toplevel +creates a new window through +.IR ctxt . +.I Topconfig +gives a list of +.IR frame (9) +options that are applied to the +new tk window, as described in +.IR tk (2). +.I Title +gives a label that will be displayed in the title bar +of the window; +.I buts +determines which buttons are created in the titlebar, +a bitwise combination of the constants +.BR Resize , +.BR Help , +.BR OK, +and +.BR Hide . +If +.B Plain +is given, the window is given no decoration at all. +.B Toplevel +returns a tuple, say +.RI ( top ,\ ctl ), +where +.I top +is the newly created top level tk window, +and +.I ctl +is a channel down which requests from the +title bar are sent. +Messages received on +.I ctl +should be processed +by the application or passed to the +.B wmctl +function. Requests are formatted +as with +.B quoted +in +.IR string (2). +The messages include: +.TP +.B exit +The window should be closed. +.B Wmctl +will kill all processes in the current +process group. +.TP +.B !move \fIx\fP \fIy\fP +The user has started to try to drag the window. +.I X +and +.I y +give the location of the initial pointer click. +.TP +.B !size +The user wishes to resize the window. +.TP +.B help +The help button has been clicked. +.TP +.B ok +The OK button has been clicked. +.TP +.B hide +The Hide button has been clicked. +The window will be deleted, and an entry +shown on the toolbar. +.PP +In order to function correctly, an application +should process not only events from the +title bar channel, but also events from +the Tk toplevel +.I wreq +channel, those received from the window +manager itself (via +.IB top .ctxt.ctl\fR),\fP +and pointer and keyboard events received from +the window manager (via +.IB top .ctxt.ptr +and +.IB top .ctxt.kbd +respectively). +Control events can be passed to +.BR wmctl ; +pointer and keyboard events should be +passed to their respective functions +in +.IR tk (2). +.PP +When created, the window is not visible +and will not receive pointer or keyboard events. +.B Onscreen +makes it visible, and possibly chooses a +position and a size for it. +.I How +specifies what sort of placement is required +for the window; it can be one of +.TP +.B place +tries to choose a suitable place on the screen +with respect to other windows; it may size the +window as it feels appropriate. This the default +(if +.I how +is nil). +.TP +.B onscreen +tries to keep the position and size the same +as specified on the window, adjusting them only +to bring the window fully on screen, and making sure +that the window is no bigger than the entire display. +.TP +.B exact +does not change the specified size or position +of the window unless absolutely necessary. +.PP +.B Startinput +informs the window manager that the window is +ready to the event types specified in +.IR devs . +Currently understood are +.B kbd +for keyboard events, and +.B ptr +for pointer events. +.PP +The simplest well-behaved +.I wm (1) +client will therefore contain: +.PP +.EX + (top, ctl) := tkclient->toplevel(ctxt, nil, "My Program", Tkclient->Appl); + # ... populate the window with tk widgets + tkclient->startinput(top, "ptr" :: "kbd" :: nil); + tkclient->onscreen(top, nil); + for(;;){ + alt{ + s := <-ctl or + s = <-top.ctxt.ctl or + s = <-top.wreq => + tkclient->wmctl(top, s); + p := <-top.ctxt.ptr => + tk->pointer(top, *p); + c := <-top.ctxt.kbd => + tk->keyboard(top, c); + } + } +.EE +.PP +.B Settitle +changes the name displayed in the title bar +and the window's name when it is in the task bar. +.PP +.B Snarfget +and +.B snarfput +retrieve and replace the contents of the window +manager's snarf buffer. +.SH FILES +.TF /chan/snarf +.TP +.B /chan/snarf +snarf buffer maintained by +.IR wm (1) +.TP +.B /chan/wm +channel for interaction with +.IR wm (1) +.SH SOURCE +.B /appl/lib/tkclient.b +.SH SEE ALSO +.IR wm (1), +.IR tk (2) diff --git a/man/2/translate b/man/2/translate new file mode 100644 index 00000000..87e0ca1b --- /dev/null +++ b/man/2/translate @@ -0,0 +1,135 @@ +.TH TRANSLATE 2 +.SH NAME +translate: opendict, opendicts, mkdictname \- translation dictionaries +.SH SYNOPSIS +.EX +include "translate.m"; +translate := load Translate Translate->PATH; + +Dict: adt { + new: fn(): ref Dict; + add: fn(d: self ref Dict, file: string): string; + xlate: fn(d: self ref Dict, s: string): string; + xlaten: fn(d: self ref Dict, s: string, note: string): string; +}; + +init: fn(); +opendict: fn(file: string): (ref Dict, string); +opendicts: fn(files: list of string): (ref Dict, string); +mkdictname: fn(locale, app: string): string; +.EE +.SH DESCRIPTION +The +.B Translate +module provides access to the translation dictionaries +defined by +.IR translate (6), +intended for the translation of +text from one natural language to another. +.PP +.B Init +should be called before using any of these functions. +.PP +.B Opendict +opens a dictionary +.I file +(of the format defined below) and returns a tuple: +a reference to a +.B Dict +that represents it and a diagnostic string (which is nil if no error occurred). +.B Opendicts +is similar, but loads each of the +.I files +in turn into the same +.BR Dict , +producing a composite dictionary in which translations in later files can override +translations in earlier ones; +the diagnostic string summarises all errors (if any). +.PP +.B Mkdictname +returns the conventional name of a dictionary file given +locale and application names. +The +.I locale +is normally +.B nil +to use the current locale, which is formed by +binding the desired locale directory (or directories) onto +.BR /lib/locale . +.PP +.B Dict.new +returns an empty dictionary. +.B Dict.add +loads the given dictionary +.I file +into an existing dictionary, returning a non-nil diagnostic string on error. +Translations are made by +.B Dict.xlate +and +.BR Dict.xlaten : +they look for a string +.I s +(eg, text in one language), +optionally qualified by a +.IR note , +and return the corresponding translation text from the dictionary. +If no such translation exists, they return the original text +.IR s . +.SH EXAMPLE +The following shows one possible style of use: +.PP +.EX +.ta 4n 8n 12n 16n 20n +include "translate.m"; + translate: Translate; + Dict: import translate; + +dict: ref Dict; + +X(s: string): string +{ + if(dict == nil) + return s; + return dict.xlate(s); +} + +init(ctxt: ref Draw->Context, args: list of string) +{ + ... + translate = load Translate Translate->PATH; + if(translate != nil){ + translate->init(); + (dict, nil) = translate->opendict( + translate->mkdictname("", "vmail")); + } + ... + optioncfg := array [] of { + "frame .op -relief flat -borderwidth 8", + "frame .op.lbs", + "label .op.lbs.a -text {" + + X("Voice Mail Active") + ":}", + "label .op.lbs.g -text {" + + X("Answer Calls With") + ":}", + "label .op.lbs.r -text {" + + X("Rings before Answering") + ":}", + "label .op.lbs.l -text {" + + X("Length of Incoming Messages") + ":}}", + ... + }; + ... + wmlib->tkcmds(top, optioncfg); +} +.EE +.PP +The intermediate function +.B X +is defined to allow the program to be used (albeit with text in English) even +when the +.B Translate +module cannot be loaded. +.SH FILES +.BI /locale/ locale /dict/ app +.SH SOURCE +.B /appl/lib/translate.b +.SH SEE ALSO +.IR translate (6) diff --git a/man/2/ubfa b/man/2/ubfa new file mode 100644 index 00000000..46f6a763 --- /dev/null +++ b/man/2/ubfa @@ -0,0 +1,273 @@ +.TH UBFA 2 +.SH NAME +ubfa: readubf, writeubf, UValue \- read, write and represent values in a UBF(A) data transport encoding +.SH SYNOPSIS +.EX +include "ubfa.m"; +ubfa := load UBFa UBFa->PATH; + +UValue: adt { + pick{ + Atom => + name: string; + Int => + value: int; + String => + s: string; + Binary => + a: array of byte; + Tuple => + a: cyclic array of ref UValue; # tree + List => + l: cyclic list of ref UValue; # tree + Tag => + name: string; + o: cyclic ref UValue; + } + isatom: fn(o: self ref UValue): int; + isstring: fn(o: self ref UValue): int; + isint: fn(o: self ref UValue): int; + istuple: fn(o: self ref UValue): int; + isop: fn(o: self ref UValue, op: string, arity: int): int; + islist: fn(o: self ref UValue): int; + isbinary: fn(o: self ref UValue): int; + istag: fn(o: self ref UValue): int; + eq: fn(o: self ref UValue, v: ref UValue): int; + op: fn(o: self ref UValue, arity: int): string; + args: fn(o: self ref UValue, arity: int): + array of ref UValue; + els: fn(o: self ref UValue): list of ref UValue; + val: fn(o: self ref UValue): int; + binary: fn(o: self ref UValue): array of byte; + objtag: fn(o: self ref UValue): string; + obj: fn(o: self ref UValue): ref UValue; + text: fn(o: self ref UValue): string; +}; + +init: fn(bufio: Bufio); +readubf: fn(input: ref Iobuf): (ref UValue, string); +writeubf: fn(output: ref Iobuf, v: ref UValue): int; +uniq: fn(s: string): string; + +uvatom: fn(s: string): ref UValue.Atom; +uvint: fn(i: int): ref UValue.Int; +uvstring: fn(s: string): ref UValue.String; +uvbinary: fn(a: array of byte): ref UValue.Binary; +uvtuple: fn(a: array of ref UValue): ref UValue.Tuple; +uvlist: fn(l: list of ref UValue): ref UValue.List; +uvtag: fn(name: string, o: ref UValue): ref UValue.Tag; +.EE +.SH DESCRIPTION +.B UBFa +provides value representations, and encoding and decoding operations for Armstrong's UBF(A) data transport +format, defined by +.IR ubfa (6). +.PP +.B Init +must be called before invoking any other operation of the module. +The +.I bufio +parameter must refer to the instance of +.IR bufio (2) +that provides the +.B Iobuf +parameters used for input and output. +.PP +.B UValue +is the internal representation of values that can be transmitted by the UBF(A) encoding. +The various sorts of values are distinguished in a pick adt: +.TP +.B UValue.Atom +Represents an +.IR atom : +a symbolic constant, for example the name of an operation or an enumeration literal. +The string +.B name +gives the spelling of the constant's name. +.TP +.B UValue.Int +Represents an integer value (eg, a Limbo +.BR int ) +with the given +.BR value . +.TP +.B UValue.String +Represents a character string (eg, a Limbo +.BR string ) +with the value +.BR s . +.TP +.B UValue.Binary +Represents binary data as a sequence of bytes in the array +.BR a . +.TP +.B UValue.Tuple +Represents a compound value that contains a fixed number of component values, +given by successive elements of the array +.BR a . +UBF tuples correspond to tuples or non-pick +.B adt +values in Limbo. +.TP +.B UValue.List +Represents a compound value containing a variable number of component values, +given by successive elements of the list +.BR l . +.TP +.B UValue.Tag +Associates an application-specific +.B tag +with another +.B UValue +referenced by +.BR o . +.PP +.B Readubf +reads a single value in +.IR ubfa (6) +format from the +.I input +stream and returns a tuple +.BI ( val,\ err ). +On success, +.I val +is a +.B UValue +that represents that value. +If an error occurs, +.I val +is nil and +.I err +contains a diagnostic. +.PP +.B Writeubf +writes a +.IR ubfa (6) +representation of the value +.I v +to the +.I output +stream. +It returns 0 on success and -1 on error (setting the system error string). +.PP +The easiest way to create a new +.B UValue +for subsequent output is with one of the module-level functions +.BR uvatom , +.BR uvint , +.BR uvstring , +and so on. +As values of a pick adt, a +.B UValue +can be inspected using Limbo's +.B tagof +operator and the appropriate variant accessed using a +.B pick +statement. +.B UValue +also supports several groups of common operations, for smaller, tidier code. +First, the set of enquiry functions +.IB u .is X () +return true if the value +.I u +is an instance of the UBF type +.I X +.RI ( atom , +.IR int , +.IR string , +.IR binary , +.IR tuple , +etc). +The other operations are: +.TP +.IB u .eq( v ) +Return true if the values of +.I u +and +.I v +are equal, including the values of corresponding subcomponents, recursively +.TP +.IB u .isop( op,\ n ) +Return true if +.I u +is a tuple having +.I n +components, and its first component is an atom or string with the value +.IR op . +.TP +.IB u .op( n ) +If +.I u +is a tuple with +.I n +components, and the first component is an atom or string, return its value. +Otherwise, return nil. +.TP +.IB u .args( n ) +If +.I u +is a tuple with +.I n +components, return an array containing the values of all but the first component. +Otherwise, return nil. +.TP +.IB u .els() +If +.I u +is a list, return a Limbo list of its elements (ie, +.IB u .l\fR)\fP. +Otherwise, return nil. +.TP +.IB u .val() +If +.I u +is an integer, return its value. +Otherwise return zero. +.TP +.IB u .binary() +If +.I u +is a binary value, return the corresponding array of bytes; if +.I u +is an atom or string, return an array of bytes containing its value; +otherwise, return nil. +.TP +.IB u .objtag() +If +.I u +is a tag, return the name of the tag. +Otherwise, return nil. +.TP +.IB u .obj() +If +.I u +is a tag, return the tagged value. +Otherwise, return +.I u +itself. +.TP +.IB u .text() +Return a printable representation of the value +.IR u , +mainly intended for debugging and tracing. +.PP +One difference between atoms and strings is that +all atoms with identical spellings refer to the same string in the implementation's storage. +Given an atom name, +.B uniq +returns the corresponding string, stored in an internal dictionary. +It is used by +.B UBFa +to create the strings +.BR UValue.Atom.s , +and can be put to similar use directly by applications. +It should only be applied to values that are small in number (as with symbolic constants). +.SH SOURCE +.B /appl/lib/ubfa.b +.SH SEE ALSO +.IR sexprs (2), +.IR ubfa (6) +.br +J L Armstrong, ``Getting Erlang to talk to the outside world'', +.I "ACM SIGPLAN Erlang workshop 2002" , +Pittsburg, PA USA diff --git a/man/2/venti b/man/2/venti new file mode 100644 index 00000000..fdb0d2ac --- /dev/null +++ b/man/2/venti @@ -0,0 +1,107 @@ +.TH VENTI 2 +.SH NAME +Venti \- access to Venti content-addressed filestore. +.SH SYNOPSIS +.EX +include "venti.m"; +venti := load Venti Venti->PATH; +Session: import venti; + +init: fn(); +unpackentry: fn(d: array of byte): ref Entry; +unpackroot: fn(d: array of byte): ref Root; + +Session: adt { + new: fn(fd: ref Sys->FD): ref Session; + read: fn(s: self ref Session, score: Venti->Score, etype: int, maxn: int): array of byte; + write: fn(s: self ref Session, etype: int, buf: array of byte): (int, Venti->Score); + sync: fn(s: self ref Session): int; +}; + +Score: adt { + a: array of byte; + eq: fn(a: self Score, b: Score): int; + text: fn(a: self Score): string; + parse: fn(s: string): (int, Score); + zero: fn(): Score; +}; + +.EE +.SH DESCRIPTION +.I Venti +is a block storage server intended for archival applications. +The +.I Venti +module provides low-level access to a Venti server. +The module assumes that the physical connection +to the server has already been established +(for example, by +.IR dial (2)). +On a Venti server, a block is addressed by the SHA1 hash of +the contents of that block, known as a +.IR score , +and represented as a +.B Score +adt. +Blocks are additionally tagged with a +.IR type , +facilitating recovery in the event of corruption. +A +.B Session +represents an session with a Venti server. +.TP +.IB s .new(\fIfd\fP) +.B New +performs the initial handshake with the Venti server, +returning established +.BR Session . +.TP +.IB s .read(\fIscore\fP,\ \fIetype\fP,\ \fImaxn\fP) +.B Read +tries to retrieve the block +corresponding to +.IR score , +and of type +.IR etype . +The block must be no longer than +.I maxn +bytes. +.I Etype +is conventionally one of the constants +.BR Roottype , +.BR Dirtype , +.BR Datatype +or +.BR Pointertype [0-9], +where the different +.BR Pointertype s +represent different depth levels within a Venti tree. +.TP +.IB s .write(\fIetype\fP,\ \fIbuf\fP) +.B Write +writes the data in +.I buf +to the Venti server. +The block will be tagged with type +.IR etype . +It returns a tuple, say +.RI ( ok ,\ score ); +on error, +.I ok +is -1, otherwise +.I ok +is 0 and +.I score +contains the Venti score for the block that has been written. +.TP +.IB s .sync() +.B Sync +tells the Venti server to make sure that all data is committed to +active storage. +.SH SOURCE +.B /appl/lib/venti.b +.SH BUGS +to do: +Score adt +entry packing/unpacking +other Vmsgs, Session.rpc()? diff --git a/man/2/virgil b/man/2/virgil new file mode 100644 index 00000000..5a7cd347 --- /dev/null +++ b/man/2/virgil @@ -0,0 +1,54 @@ +.TH VIRGIL 2 +.SH NAME +virgil \- pose question to name resolver +.SH SYNOPSIS +.EX +include "security.m"; +virgil := load Virgil Virgil->PATH; + +virgil: fn(args: list of string): string; +.EE +.SH DESCRIPTION +.B Virgil +provides a client side interface for interactions with the +name resolution service +.IR virgild (8). +.PP +.I Args +is a command line of the form: +.IP +.BR virgil " [" -v +.IR address ] +.RI [ name ] +.PP +.I Name +is the host name to be resolved to a network address. +Normally the request is broadcast to any and all +.I virgild +servers on the network, which +.B virgil +expects to find on UDP/IP port 2202. +The +.B -v +option instead directs the request to the given numeric IP +.IR address . +.PP +.B Virgil +waits up to 5 seconds for a reply, retransmitting the request once a second. +It accepts and returns the first answer it receives. +.SH SOURCE +.B /appl/lib/virgil.b +.SH SEE ALSO +.IR sys-dial (2), +.IR cs (8), +.IR register (8), +.IR virgild (8) +.SH DIAGNOSTICS +.B Virgil +returns +.L nil +for invalid arguments and if the name was not resolved. +.SH BUGS +The +.I virgild +port is hard coded. diff --git a/man/2/volume b/man/2/volume new file mode 100644 index 00000000..58b5d61f --- /dev/null +++ b/man/2/volume @@ -0,0 +1,51 @@ +.TH VOLUME 2 mux +.SH NAME +volume \- volume control for an infrared interface +.SH SYNOPSIS +.EX +include "volume.m"; +vctl := load Volumectl Volumectl->PATH; + +volumectl: fn(ctxt: ref Draw->Context, ch: chan of int, + device: string); +.EE +.SH DESCRIPTION +.B Volumectl +should be spawned as a separate process from any process that desires volume control via an infrared interface. +.I Ctxt +provides +.B volumectl +with access to the display, +on which it displays a slider widget. +The slider automatically disappears after several seconds of inactivity. +.B Volumectl +receives input from the infrared controller on channel +.IR ch . +The values recognized are: +.TF Enter +.PD +.TP +.B VolUP +increase volume +.TP +.B VolDN +decrease volume +.TP +.B Enter +exit +.PP +.I Device +is a string used as a prefix to commands to the device; +for example +.B +"audio out" +.ft P +for +.IR audio (3). +.SH FILES +.B /dev/volume +.SH SOURCE +.B /appl/lib/volume.b +.SH "SEE ALSO" +.IR ir (2), +.IR prefab-intro (2) diff --git a/man/2/w3c-css b/man/2/w3c-css new file mode 100644 index 00000000..44a1ebfc --- /dev/null +++ b/man/2/w3c-css @@ -0,0 +1,349 @@ +.TH W3C-CSS 2 +.SH NAME +w3c-css \- cascading style sheet parser +.SH SYNOPSIS +.EX +include "css.m"; + +css := load CSS CSS->PATH; + +Stylesheet: adt { + charset: string; + imports: list of ref Import; + statements: list of ref Statement; +}; + +Import: adt { + name: string; + media: list of string; +}; + +Statement: adt { + pick{ + Media => + media: list of string; + rules: list of ref Statement.Ruleset; + Page => + pseudo: string; + decls: list of ref Decl; + Ruleset => + selectors: list of Selector; + decls: list of ref Decl; + } +}; + +Decl: adt { + property: string; + values: list of ref Value; + important: int; +}; + +Selector: type list of (int, Simplesel); # (combinator, simplesel) +Simplesel: type list of ref Select; + +Select: adt { + name: string; + pick{ + Element or ID or Any or Class or Pseudo => + # empty + Attrib => + op: string; # "=" "~=" "|=" + value: ref Value; # optional Ident or String + Pseudofn => + arg: string; + } +}; + +Value: adt { + sep: int; # operator preceding this term + pick{ + String or + Number or + Percentage or + Url or + Unicoderange => + value: string; + Hexcolour => + value: string; # as given + rgb: (int, int, int); # converted + RGB => + args: cyclic list of ref Value; # as given + rgb: (int, int, int); # converted + Ident => + name: string; + Unit => + value: string; # int or float + units: string; # suffix giving units + Function => + name: string; + args: cyclic list of ref Value; + } +}; + +init: fn(diag: int); +parse: fn(s: string): (ref Stylesheet, string); +parsedecl: fn(s: string): (list of ref Decl, string); +.EE +.SH DESCRIPTION +.B Css +implements a parser for the World-Wide Web Consortium's Cascading +Style Sheet, specification 2.1. +.PP +.B Init +must be called before any other operation in the module. +If +.I diag +is non-zero, the module will print diagnostics on standard output for +malformed or unrecognised items that are ignored during parsing (as +required by the specification). +.PP +.B Parse +takes a complete stylesheet in string +.IR s , +parses it, and returns a tuple +.BI ( sheet,\ err ) +where +.I sheet +refers to a +.B Stylesheet +value containing the logical content of +.IR s , +as described below. +On a fatal error, +.I sheet +is nil and +.I err +is a diagnostic. +Most syntactic errors are ignored, as the specification requires. +.PP +In some applications there can be auxiliary declarations outside a stylesheet. +.B Parsedecl +takes a string +.I s +containing a sequence of declarations, and returns a tuple +.BI ( decls,\ err ) +where +.I decls +is a list of references to +.B Decl +values, each representing a single +.I declaration +in +.IR s . +On a fatal error, +.I decls +is nil, and +.I err +is a diagnostic. +.PP +The adts represent an abstract syntax of the CSS grammar. +The concrete syntax is presented below in an extended BNF, +derived from the reference grammar, +with each section labelled by the name of the corresponding adts. +(Compared to the reference grammar in the +specification, it abstracts away from the complex rules about where whitespace can appear.) +.TP +.B Stylesheet +.EX +.ft R +\f2stylesheet\fP ::= [ '\f5@charset\fP' STRING '\f5;\fP' ] \f2import\fP* \f2statement\fP* +.EE +.IP +Limbo lists represent lists of items in the grammar. +Nil values denote optional components that are missing. +Upper-case names such as +IDENT, +STRING +and +NUMBER +are terminals; see the CSS specification for their +often subtle definitions. +They are usually represented +by Limbo string values in the adts. +.TP +.B Import +.EX +.ft R +\f2import\fP ::= '\f5@import\fP' (\f2STRING\fP|\f2uri\fP) [\f2medium\fP ('\f5,\fP' \f2medium\fP)*] '\f5;\fP' +\f2uri\fP ::= '\f5url(\fP' STRING '\f5)\fP' +.EE +.IP +.B Import.name +holds the text of the +STRING +or +.IR uri . +.TP +.B Statement +.EX +.ft R +\f2statement\fP ::= \f2ruleset\fP | \f2media\fP | \f2page\fP +\f2media\fP ::= '\f5@media\fP' \f2medium\fP ('\f5,\fP' \f2medium\fP)* '\f5{\fP' \f2ruleset\fP* '\f5}\fP' +\f2medium\fP ::= IDENT +\f2page\fP ::= '\f5@page\fP' [\f2pseudo_page\fP] '\f5{\fP' \f2declaration\fP ('\f5;\fP' \f2declaration\fP)* '\f5}\fP' +\f2pseudo_page\fP ::= '\f5:\fP' IDENT +\f2ruleset\fP ::= \f2selector\fP ('\f5,\fP' \f2selector\fP)* '\f5{\fP' \f2declaration\fP ('\f5;\fP' \f2declaration\fP)* '\f5}\fP' +.EE +.IP +.B Statement +is not in the reference grammar, but is introduced here to give a name corresponding +to the pick adt. +.TP +.B Decl +.EX +.ft R +\f2declaration\fP ::= \f2property\fP '\f5:\fP' \f2expr\fP ['\f5!\fP' '\f5important\fP'] | /* \f2empty\fP */ +\f2property\fP ::= IDENT +.EE +.B Decl.values +is a list representing the terms of the +.I expr +(see below for details). +.BR Decl 's +field +.B important +is non-zero if the optional `important' priority is given. +.TP +.B "list of ref Value" +.EX +.ft R +\f2expr\fP ::= \f2term\fP (\f2operator\fP \f2term\fP)* +\f2operator\fP ::= '\f5/\fP' | '\f5,\fP' | /* \f2empty\fP */ +.EE +.IP +An +.I expr +is always represented as a list of references to +.B Value +in some containing structure +(where +.B Value +represents a +.IR term , +see below). +The +.I operator +preceding each +.I term +appears as the field +.B sep +of the corresponding +.BR Value , +where a space character represents `empty' (concatenation). +.TP +.BR Selector +.EX +.ft R +\f2selector\fP ::= \f2simple_selector\fP (\f2combinator\fP \f2simple_selector\fP)* +\f2combinator\fP ::= '\f5+\fP' | '\f5>\fP' | /* \f2empty\fP */ +.EE +.IP +.B Selector +is just a type synonym for a list of tuples, say +.BI ( com,\ simplesel ) +where the +.I simplesel +value represents +.I simple_selector +(see below), and the integer +.I com +is one of the characters space (representing `empty'), +.RB ` > ' +or +.RB ` + ', +giving the combinator that preceded the simple selector. +(The first in the list is always space.) +.TP +.BR Simplesel ", " Select +.EX +.ft R +\f2simple_selector\fP ::= \f2element_name\fP (\f2hash\fP | \f2class\fP | \f2attrib\fP | \f2pseudo\fP)* + | (\f2hash\fP | \f2class\fP | \f2attrib\fP | \f2pseudo\fP)+ +\f2hash\fP ::= '\f5#\fP' NAME +\f2class\fP ::= '\f5.\fP' IDENT +\f2element_name\fP ::= IDENT | '\f5*\fP' +\f2attrib\fP ::= '\f5[\fP' IDENT [('\f5=\fP' | '\f5|=\fP' | '\f5~=\fP') (IDENT | STRING)] '\f5]\fP' +\f2pseudo\fP ::= '\f5:\fP' ( IDENT | IDENT '\f5(\fP' [IDENT] '\f5)\fP' ) +.EE +.IP +A +.I simple_selector +is represented by +.BR Simplesel , +a list of references to +.B Select +values, each representing one +.I element_name +or qualifier. +An +.I element_name +is represented by +.B Select.Element +for an +IDENT, +or +.B Select.Any +for +.RB ` * '. +The qualifiers are +.I hash +.RB ( Select.ID ), +.I class +.RB ( Select.Class ), +.I attrib +.RB ( Select.Attrib , +where the comparison operator is the string +.BR op ), +.I pseudo +(either +.B Select.Pseudo +if a plain identifier, or +.B Select.Pseudofn +for a function with optional parameter). +.TP +.B Value +.EX +.ft R +\f2term\fP ::= ['\f5+\fP' | '\f5-\fP'] (NUMBER | \f2percent\fP | \f2unit\fP) | STRING | IDENT | \f2uri\fP | \f2function\fP | \f2hexcolour\fP | \f2rgb\fP +\f2function\fP ::= IDENT '\f5(\fP' \f2expr\fP '\f5)\fP' +\f2hash\fP ::= '\f5#\fP' NAME +\f2hexcolour\fP ::= '\f5#\fP' HEXDIGIT+ +\f2percent\fP ::= NUMBER '\f5%\fP' +\f2unit\fP ::= NUMBER STRING +\f2rgb\fP ::= '\f5rgb(\fP' \f2term\fP '\f5,\fP' \f2term\fP '\f5,\fP' \f2term\fP '\f5)\fP' +\f2uri\fP ::= '\f5url(\fP' STRING '\f5)\fP' +.EE +.IP +Any sign before a +.BR Number , +.B Percentage +or +.B Unit +appears as the first character of +.BR value . +All the dimensional units (LENGTH, EMS, EXS, ANGLE, TIME, FREQ and others) +in the reference grammar are mapped to +.BR Value.Unit , +with the field +.B units +containing the name of the relevant unit (eg, +.LR cm , +.LR in , +etc.) in lower case. +Values and names appear shorn of the surrounding punctuation. +.B Value.Hexcolour +includes the original sequence of hex digits as a string, +and a decoding of it as an +.B rgb +triple. +The arguments to the CSS +.B rgb +function are similarly presented in original and decoded forms, in +.BR Value.RGB . +Other function references are returned uninterpreted in +.BR Value.Function . +.SH SOURCE +.B /appl/lib/w3c/css.b +.SH SEE ALSO +``Cascading Style Sheets, level 2 revision 1'', +.B http://www.w3.org/TR/CSS21 diff --git a/man/2/w3c-xpointers b/man/2/w3c-xpointers new file mode 100644 index 00000000..deda4e32 --- /dev/null +++ b/man/2/w3c-xpointers @@ -0,0 +1,382 @@ +.TH W3C-XPOINTERS 2 +.SH NAME +w3c-xpointers \- parser for XPointers framework including XPath +.SH SYNOPSIS +.EX +include "xpointers.m"; + +xpointers := load Xpointers Xpointers->PATH; +Xpath, Xstep: import xpointers; + +# special operators ('+', '-', etc represent themselves) +One, Ole, Oge, Omul, Odiv, Omod, Oand, Oor, Oneg, +Onodetype, Onametest, Ofilter, Opath: con ...; + +# axis types +Aancestor, +Aancestor_or_self, +Aattribute, +Achild, +Adescendant, +Adescendant_or_self, +Afollowing, +Afollowing_sibling, +Anamespace, +Aparent, +Apreceding, +Apreceding_sibling, +Aself: con iota; + +Xstep: adt { + axis: int; # Aancestor, ... (above) + op: int; # Onametest or Onodetype + ns: string; + name: string; + arg: string; # optional parameter to processing-instruction + preds: cyclic list of ref Xpath; + + text: fn(nil: self ref Xstep): string; + axisname: fn(i: int): string; +}; + +Xpath: adt { + pick{ + E => + op: int; + l, r: cyclic ref Xpath; + Fn => + ns: string; + name: string; + args: cyclic list of ref Xpath; + Var => + ns: string; + name: string; + Path => + abs: int; + steps: list of ref Xstep; + Int => + val: big; + Real => + val: real; + Str => + s: string; + } + text: fn(nil: self ref Xpath): string; +}; + +framework: fn(s: string): + (string, list of (string, string, string), string); + +# predefined schemes +element: fn(s: string): (string, list of int, string); +xmlns: fn(s: string): (string, string, string); +xpointer: fn(s: string): (ref Xpath, string); +.EE +.SH DESCRIPTION +.B Xpointers +implements a parser for the World-Wide Web Consortium's XPointers framework, +including a parser for XPath expressions. +.PP +.B Init +must be called before any other operation in the module. +.PP +.B Framework +parses a string +.I s +according to the grammar for the XPointers framework, +and returns a tuple +.BI ( short,\ pointers,\ err ) . +On an error, the string +.I err +gives a diagnostic and the other two values are nil. +Otherwise, if +.I short +is non-nil, the XPointer was a `shorthand pointer', with the given value; +.I pointers +will be nil. +If a scheme-based pointer is used, +.I short +is nil and +.I pointers +has a list of tuples +.BI ( ns,\ scheme,\ data ) , +each representing one pointer value. +.I Ns +is the XML name space for the given +.IR scheme ; +the default name space is represented by nil. +.I Scheme +is the XPointer scheme name within that name space; and +.I data +is the actual pointer value following the rules of that scheme. +(They all have completely different syntax.) +.PP +Three common schemes are directly supported by the module, +by functions named after the scheme. +All of them follow the convention of returning a tuple in which +the last element is a diagnostic string. +On an error, all but that last element of the tuple will be nil, +and the last element will be a non-nil string with a diagnostic. +.PP +.B Xmlns +parses an XML name space definition of the form +.IB ns = uri, +and returns its components. +.PP +.B Element +parses a value of the XPointer +.B element +scheme, given by the grammar: +.IP +.EX +.ft I +selector \f1::=\fP name child* \f1|\fP child+ +child \f1::=\fP '\f5/\fP' \f5[1-9][0-9]\fP* +.EE +.PP +The optional +.I name +is an XPointer `shorthand pointer'. +Each +.I child +number selects the child with that index (origin 1) at the corresponding level of the XML tree +beneath the node selected by the +.IR name , +or starting at the root of the XML tree. +.B Element +returns a tuple +.BI (( name,\ path ) ,\ err ) +where +.I name +is the top element name or nil if none was specified, +and +.I path +is a +.B "list of int" +giving the path of child indices. +.PP +The most complex scheme is +.BR xpointer , +because its syntax is that of XML's elaborate XPath expression. +.B Xpointer +parses such an expression and returns a tuple +.BI ( e,\ err ) +where +.I e +refers to an +.B Xpath +value that represents the abstract syntax of the XPath +.BR Expr . +.B Xpointer +checks only the syntax of +.IR s , +and does not check that functions are limited to those specified by the +.B xpointer +scheme (that is consistent with it being a parse of +.IR s , +rather than an XPointer or XPath evaluator). +.PP +.B Xpath +and +.B Xstep +together represent an abstract syntax of the XPath grammar. +.PP +.B Xstep +represents the XPath +.B Step +grammar rule, with all abbreviations expanded to their full form: +.IP +.EX +.ft I +Step \f1::=\fP AxisName '\f5::\fP' NodeTest Predicate* +NodeTest \f1::=\fP NameTest \f1|\fP NodeType '\f5(\fP' '\f5)\fP' +NameTest \f1::=\fP '\f5*\fP' \f1|\fP NCName '\f5:\fP' '\f5*\fP' \f1|\fP (NCName '\f5:\fP')? NCName +Predicate \f1::=\fP '\f5[\fP' Expr '\f5]\fP' +.EE +.PP +The correspondence is as follows: +.TF s.text() +.PD +.TP +.IB s .axis +Represents the +.B AxisName +by one of the constants +.B Aancestor +to +.BR Aself . +.TP +.IB s .op +.B Onametest +or +.B Onodetype +to say which rule is represented +.TP +.IB s .ns +For a +.IR NameTest , +gives the XML name space; +can be +.L * +for `any name space' or nil for the default name space. +For a +.IR NodeType , +gives the type: +.BR comment , +.BR node , +.BR processing-instruction , +or +.BR text . +.TP +.IB s .name +Gives the +.I name +for a +.IR NameTest ; +can be +.L * +for `any name'. +.TP +.IB s .arg +The optional literal parameter to a +.I NodeType +that is a +.BR processing-instruction . +.TP +.IB s .preds +A list of +.B Xpath +values representing the optional sequence of +.I Predicate +expressions +.TP +.IB s .text() +Returns a string representing the +.B Xstep +in textual form. +.TP +.IB s .axisname( a ) +Returns the printable text for axis code +.I a +(ie, +one of +.B Aancestor +to +.BR Aself ) +.PP +.B Xpath +values represent an abstract syntax for an XPath expression. +Briefly, an expression follows the grammar below (see the XPath specification for the full concrete syntax). +.IP +.EX +.ft I +.ta \w'e ::= 'u +e ::= e '\f5or\fP' e + | e '\f5and\fP' e + | e \f1(\fP'\f5=\fP' \f1|\fP '\f5!=\fP'\f1)\fP e + | e \f1(\fP'\f5<\fP' \f1|\fP '\f5<=\fP' \f1|\fP '\f5>=\fP' \f1|\fP '\f5>\fP'\f1)\fP e + | e \f1(\fP'\f5+\fP' \f1|\fP '\f5-\fP'\f1)\fP e + | e \f1(\fP'\f5*\fP' \f1|\fP '\f5div\fP' \f1|\fP '\f5mod\fP'\f1)\fP e + | '\f5-\fP' e + | e '\f5|\fP' e + | filter + | path +filter ::= primary predicate* \f1(\fP\f1(\fP'\f5/\fP' \f1|\fP '\f5//\fP'\f1)\fP relpath\f1)\fP? +primary ::= '\f5$\fP' QName \f1|\fP '\f5(\fP' e '\f5)\fP' \f1|\fP Literal \f1|\fP Number \f1|\fP FunctionName '\f5(\fP' \f1(\fPe \f1(\fP'\f5,\fP' e\f1)\fP*\f1)\fP '\f5)\fP' +path ::= '\f5/\fP' relpath \f1|\fP relpath +relpath ::= relpath '\f5/\fP' relpath \f1|\fP relpath '\f5//\fP' relpath \f1|\fP Step +.EE +.PP +Most of +.I e +is represented by a binary tree using the pick +.BI Xpath.E( op,\ l,\ r ) +where +.I op +is an operator symbol (either the character itself or one of the constants +.BR One , +.BR Odiv , +etc. for compound symbols), +and +.I l +and +.I r +represent the operands. +The only unary operator +.B Oneg +has its operand in +.IR l . +A +.I filter +uses the binary operator +.BI Xpath.E(Ofilter ,\ e,\ pred ) +to apply each +.I predicate +to the preceding +.I primary +or +.IR predicate . +A +.I filter +also uses +.BI Xpath.E(Opath ,\ e,\ relpath ) +to apply the optional +.I relpath +(represented by a value of +.BR Xpath.Path ) +to the preceding part of the filter expression. +.PP +The other cases in the pick adt correspond to the various choices of +.I path +and +.IR primary . +Integer and real numbers are distinguished. +.I Literal +is represented by +.BR Xpath.Str ; +variable references (ie, +.BI $ QName\c +) +are represented by +.BR XPath.Var , +where +.I ns +gives the optional XML name space of the +.IR name . +.I Path +is represented by +.BI Xpath.Path( abs,\ steps ) +where +.I abs is non-zero if and only if the path is absolute (starts with `/' or `//'), +and +.I steps +lists the +.B Xstep +values corresponding to the slash-separated +.I Steps +in the grammar. +Abbreviated forms such as +.RB ` // ' +are converted by +.B xpointer +to their full internal form in terms of +.RB ` / ', +as defined by the specification, +so there is no need to distinguish the delimiters in this representation. +.SH SOURCE +.B /appl/lib/w3c/xpointers.b +.SH SEE ALSO +``XML Path Language (XPath) Version 1.0'', +.B http://www.w3.org/TR/xpath +.br +``XPointer framework'', +.B http://www.w3.org/TR/xptr-framework/ +.br +``XPointer element() scheme'', +.B http://www.w3.org/TR/xptr-element/ +.br +``XPointer xmlns() scheme'', +.B http://www.w3.org/TR/xptr-xmlns/ +.br +``XPointer xpointer() scheme'', +.B http://www.w3.org/TR/xptr-xpointer/ diff --git a/man/2/wait b/man/2/wait new file mode 100644 index 00000000..a7cf56f0 --- /dev/null +++ b/man/2/wait @@ -0,0 +1,100 @@ +.TH WAIT 2 +.SH NAME +wait \- wait for child process to exit +.SH SYNOPSIS +.EX +wait := load Wait Wait->PATH; + +Wait: module +{ + init: fn(); + read: fn(fd: ref Sys->FD): (int, string, string); + monitor: fn(fd: ref Sys->FD): (int, chan of (int, string, string)); + parse: fn(status: string): (int, string, string); +}; +.EE +.SH DESCRIPTION +.B Wait +helps use the +.B wait +file of +.IR prog (3). +.PP +.B Init +must be called to initialise the module before invoking any other function. +.PP +.B Read +reads a single wait record from file descriptor +.IR fd , +which must be open on some process +.IR p 's +.B wait +file, +and returns a tuple +.BI ( pid\f5,\fP\ module\f5,\fP\ status ) +where +.I pid +is the process ID of a child of +.I p +that has exited, +.I module +is the name of the module that caused +.I p +to exit, +and +.I status +is nil if +.I pid +ended without error or a status message otherwise. +If reading the +.B wait +file resulted in end of file or error, +.I pid +is 0 (for end of file) or +.B -1 +on error (and +.I status +is the system error string for the error). +.PP +.B Monitor +provides a channel interface to the +.B wait +file open on +.IR fd ; +it allows, for instance, +a process to use +.B alt +to exchange data with a process but also watch for to exit (for good or ill). +It starts a monitor process that applies +.B read +to +.I fd +and send the resulting tuple on a channel. +It returns a tuple +.BI ( pid\f5,\fP\ c ) +where +.I pid +is the process ID of the monitor process (which can be used to kill it when done with it), +and +.I c +is the channel on which the process sends each value it reads. +The tuple has the format described above for +.BR read . +The monitor process exits when the wait file +.I fd +yields end of file or error, after sending the corresponding tuple on +.IR c . +.PP +.B Parse +takes a complete +.I status +string as read from a +.B wait +file and returns a tuple +.BI ( pid\f5,\fP\ module\f5,\fP\ status ) +as described for +.B read +above. +.SH SEE ALSO +.IR sh (1), +.IR prog (3) diff --git a/man/2/wmclient b/man/2/wmclient new file mode 100644 index 00000000..23aada28 --- /dev/null +++ b/man/2/wmclient @@ -0,0 +1,235 @@ +.TH WMCLIENT 2 +.SH NAME +wmclient: makedrawcontext, window, snarfput, snarfget \- +window manager interface for Draw-based applications. +.SH SYNOPSIS +.EX +include "tk.m"; +include "wmclient.m"; +wmclient := load Wmclient Wmclient->PATH; + +Resize, +Hide, +Help, +OK, +Plain: con 1 << iota; + +Appl: con Resize | Hide; + +init: fn(); +makedrawcontext: fn(): ref Draw->Context; +window: fn(ctxt: ref Draw->Context, title: string, buts: int): ref Window; +snarfput: fn(buf: string); +snarfget: fn(): string; +Window: adt{ + display: ref Draw->Display; + r: Draw->Rect; # full rectangle of window, including titlebar. + image: ref Draw->Image; + screenr: Draw->Rect; + ctxt: ref Draw->Wmcontext; + focused: int; + ctl: chan of string; + + startinput: fn(w: self ref Window, devs: list of string); + wmctl: fn(w: self ref Window, request: string): string; + settitle: fn(w: self ref Window, name: string): string; + reshape: fn(w: self ref Window, r: Draw->Rect); + onscreen: fn(w: self ref Window, how: string); + screenr2imager: fn(w: self ref Window, sr: Draw->Rect): Draw->Rect; + imager2screenr: fn(w: self ref Window, ir: Draw->Rect): Draw->Rect; + pointer: fn(w: self ref Window, p: Draw->Pointer): int; +}; + +.EE +.SH DESCRIPTION +The +.B Wmclient +module provides routines for making windows controlled by +.IR wm (1) +containing an image that can be drawn on with the +routines described in +.IR draw-image (2). +.PP +.B Init +should be called once to initialise the internal state of +.BR wmclient . +.PP +.B Makedrawcontext +establishes an initial connection with the window manager, +creating a new +.B Draw +context suitable for creating new windows. It is only +necessary to call this if the application has not already +been provided with a context. +.PP +.B Window +creates a new window through +.IR ctxt +and returns it. +.I Title +gives a label that will be displayed in the title bar +of the window; +.I buts +determines which buttons are created in the titlebar, +a bitwise combination of the constants +.BR Resize , +.BR Help , +.BR OK, +and +.BR Hide . +If +.B Plain +is given, the window is given no decoration at all. +.PP +When a window, say +.IR w , +is first created, its size has not been determined +and its image is not yet allocated. +.IB W .reshape +sets the requested rectangle for the window, +(and requests a new image for the window +if it has already been made visible), +where +.I r +gives the requested rectangle of the new +image, excluding window decoration, such as the +title bar and the window border. +An application can use +.IB w .screenr2imager +to find out the usable rectangle within screen +rectangle +.I sr +when window decorations are taken into account. +.IB W .imager2screenr +converts in the other direction. +.IB W .screenr +contains the current rectangle of the screen containing +the window. +.PP +.IB W .image +holds the window's image when it has been successfully created; +.IB w .ctxt +holds the window manager context for the window, from which +keyboard and mouse events can be received. +No such events will be received until +.IB w .startinput +is called, with a list of devices (e.g. +.BR ptr , +.BR kbd ) +to start input for. +.IB W .settitle +sets the title that is shown on the window's title bar; +it can make the window's size (and therefore the window's image) +change. +.PP +.IB W .ctl +is a channel down which requests from the titlebar are sent. +Messages received on it should be processed by +the application or passed to +.IB w \.wmctl\fR. +Requests are formatted +as with +.B quoted +in +.IR string (2). +The messages include: +.TP +.B exit +The window should be closed. +.IB W .wmctl +will kill all processes in the current +process group. +.TP +.B !move \fIx\fP \fIy\fP +The user has started to try to drag the window. +.I X +and +.I y +give the location of the initial pointer click. +.TP +.B !size \fImindx\fP \fImindy\fP +The user wishes to resize the window. +.I Mindx +and +.I mindy +give the minimum size acceptable for the window. +.TP +.B help +The help button has been clicked. +.TP +.B ok +The OK button has been clicked. +.TP +.B hide +The Hide button has been clicked. +.IB W .wmctl +will delete the window, and an entry +will be shown on the toolbar. +.PP +In order to function correctly, an application +should process not only events from the +title bar channel, but also events received from the window +manager itself (via +.IB w .ctxt.ctl\fR),\fP +and pointer and keyboard events received from +the window manager (via +.IB top .ctxt.ptr +and +.IB top .ctxt.kbd +respectively). +Control events can be passed to +.IB w .wmctl \fR; +keyboard events can be processed by the application; +pointer events should be passed to +.IB w .pointer +for processing; if this returns zero, the +application should process the pointer event, +otherwise the event has been consumed by the +titlebar. +.PP +When created, the window is not visible; +.IB w .onscreen +makes it visible, and possibly chooses a +position and a size for it. +.I How +specifies what sort of placement is required +for the window; it can be one of +.TP +.B place +tries to choose a suitable place on the screen +with respect to other windows; it may size the +window as it feels appropriate. This the default +(if +.I how +is nil). +.TP +.B onscreen +tries to keep the position and size the same +as specified on the window, adjusting them only +to bring the window fully on screen, and making sure +that the window is no bigger than the entire display. +.TP +.B exact +does not change the specified size or position +of the window unless absolutely necessary. +.PP +.B Snarfget +and +.B snarfput +retrieve and replace the contents of the window +manager's snarf buffer. +.SH FILES +.TF /chan/snarf +.TP +.B /chan/snarf +snarf buffer maintained by +.IR wm (1) +.TP +.B /chan/wm +channel for interaction with +.IR wm (1) +.SH SOURCE +.B /appl/lib/wmclient.b +.SH SEE ALSO +.IR wm (1), +.IR tk (2) diff --git a/man/2/wmlib b/man/2/wmlib new file mode 100644 index 00000000..dade0c47 --- /dev/null +++ b/man/2/wmlib @@ -0,0 +1,90 @@ +.TH WMLIB 2 +.SH NAME +wmlib \- +low level access to window manager +.SH SYNOPSIS +.EX +include "sys.m"; +include "draw.m"; +include "wmlib.m"; +wmlib := load Wmlib Wmlib->PATH; + +init: fn(); +connect: fn(ctxt: ref Draw->Context): ref Draw->Wmcontext; +startinput: fn(w: ref Draw->Wmcontext, devs: list of string): string; +wmctl: fn(w: ref Draw->Wmcontext, request: string): (string, ref Draw->Image, string); +snarfput: fn(buf: string); +snarfget: fn(): string; + +.EE +.SH DESCRIPTION +.B Wmlib +provides basic routines to access the window manager, +It is used by higher level modules such as +.IR tkclient (2) +and +.IR wmclient (2) +to provide window manager access to applications. +.PP +.B Init +should be called once to initialise the internal state of +.BR Wmlib . +.B Connect +makes a connection to the window manager through +.I ctxt +(see +.IR draw-context (2)). +.B Startinput +tells the window manager to start queuing events on the input +streams named in +.I devs +(e.g. +.BR ptr , +.BR kbd ) +so that they can be received by the application. +.PP +.B Wmctl +sends +.I request +to the window manager. +It returns a tuple, say (\fIname\fP, \fIimg\fP, \fIerr\fP). +If a request fails, then +.I name +and +.I img +will be nil and the non-empty +.I err +gives the reason. +If the request has resized or created an image, +.I name +gives the tag name of the image and +.I img +holds the new image. +.B Wmlib +interprets the +.B exit +request itself, by killing all processes in the current +process group, and exiting. +.PP +.B Snarfget +and +.B snarfput +retrieve and replace the contents of the window +manager's snarf buffer. +.SH FILES +.TF /chan/snarf +.TP +.B /chan/snarf +snarf buffer maintained by +.IR wm (1) +.TP +.B /chan/wm +channel for interaction with +.IR wm (1) +.SH SOURCE +.B /appl/lib/wmclient.b +.SH SEE ALSO +.IR wm (1), +.IR wmclient (2), +.IR tkclient (2), +.IR tk (2) diff --git a/man/2/wmsrv b/man/2/wmsrv new file mode 100644 index 00000000..5617508f --- /dev/null +++ b/man/2/wmsrv @@ -0,0 +1,295 @@ +.TH WMSRV 2 +.SH NAME +Wmsrv \- core window-manager functionality and helper functions +.SH SYNOPSIS +.EX +.ps -1 +.vs -1 +include "sys.m"; +include "draw.m"; +include "wmsrv.m"; +wmsrv := load Wmsrv Wmsrv->PATH; +Client, Window: import wmsrv; + +init: fn(): + (chan of (string, chan of (string, ref Draw->Wmcontext)), + chan of (ref Client, chan of string), + chan of (ref Client, array of byte, Sys->Rwrite)); +find: fn(p: Draw->Point): ref Client; +top: fn(): ref Client; + +Window: adt { + tag: string; + r: Rect; + img: ref Image; +}; + +Client: adt { + kbd: chan of int; + ptr: chan of ref Draw->Pointer; + ctl: chan of string; + stop: chan of int; + images: chan of (ref Draw->Point, ref Draw->Image, chan of int); + flags: int; + wins: list of ref Window; + znext: cyclic ref Client; + id: int; + + window: fn(c: self ref Client, tag: string): ref Window; + contains: fn(c: self ref Client, p: Draw->Point): int; + setimage: fn(c: self ref Client, tag: string, i: ref Draw->Image): int; + setorigin:fn(c: self ref Client, tag: string, o: Draw->Point): int; + top: fn(c: self ref Client); + bottom: fn(c: self ref Client); + remove: fn(w: self ref Client); +}; +.ps +1 +.vs +1 +.EE +.SH DESCRIPTION +.B Wmsrv +acts as a kind of ``buffer'' module between an actual window-manager +implementation and possibly misbehaving clients. +It provides notification when clients arrive, make window-manager requests, +and leave. For each client, it provides a set of channels that mirror those +found in +.BR Draw->Wmcontext , +(see +.IR draw-context (2)), +except that writing to the +.BR Client 's +channels is guaranteed not to block. +Each client holds zero or more +.BR Window s, +each of which is tagged with an identifying string +and which can hold the image of that window. +A given client's windows are layered in strict order, +most recently created at the top. Most clients will have +only one window; others are generally used only for +ephemeral purposes, such as pop-up menus. +.PP +A +.BR Client , +say +.IR c , +holds some channels directly equivalent to their +.B Wmcontext +namesakes: +.IB c \.kbd\fR +.IB c \.ptr\fR, +and +.IB c \.ctl\fR. +The behaviour of +.IB c \.images +is described below. +.B Wmsrv +starts a new process to mediate interaction +between the window manager and its clients; +sending a value on +.IB c \.stop +causes this process to exit. +.IB C \.wins +gives the list of all the windows +associated with this client; +.IB c \.flags +is not used by +.IR wmsrv : +it may be used to store arbitrary information; +.IB c \.id +holds a unique identifier for the client; +it will be no larger than the largest +number of clients that have simultaneously existed; +.IB c \.znext +links clients together by window depth (see +.BR top , +below). +.PP +.B Init +must be called before any other +.I wmsrv +function to initialise the +.I wmsrv +module. It creates the virtual file +.BR /chan/wm , +and returns a tuple of channels, say (\fIwm\fP, \fIjoin\fP, \fIrq\fP). +.I Wm +is the channel that should be passed to prospective clients +in the +.B Draw->Context +structure; communication on this channel is used +to establish a new client connection. +.I Join +is used to receive notifications +of new clients arriving. The tuple received on this channel, +say (\fIc\fP, \fIrc\fP) +holds the new client, and a channel on which a reply +should be sent acknowledging the new client. +If the string sent is non-empty, it represents an error message +that will be returned to the client, and the client will not +be allowed to join. +.IB c \.ptr\fR, +.IB c \.kbd\fR, +and +.IB c \.ctl +are all direct equivalents of their +.B Wmcontext +namesakes; the +behaviour of +.IB c \.images +is described below. +.I Rq +is used to receive requests made by clients to the window +manager by writing to the file +.B /chan/wm. +The tuple received on +.IR rq , +say (\fIc\fP, \fIdata\fP, \fIreply\fP) +holds the client that is making the request, the +data that has been sent, and a channel that can be used +(as described in +.IR sys-file2chan (2)) +to return a reply to the request, +The request is conventionally formatted as a utf8-encoded +string, holding a list of tokens quoted as described in +.B quoted +in +.IR string (2). +.PP +If the first character of a window-manager request is an exclamation mark +.RB ( ! ), +it should be a request to change the image of a client's window +(or create a new window). +In this case, the first three tokens should be +the name of the command (starting with an exclamation mark), +the tag of the window to which the request refers, and a tag +used by clients to match requests to replies. +If such a request is allowed to succeed, then clients expect that +a new image will be sent to them. +The +.I images +channel in a client is used to do this (normally accessed through the +.I setimage +and +.I setorigin +methods, see below). Sending a tuple, say (\fIo\fP, \fIi\fP, \fIrc\fP) +on +.I images +buffers an image to be returned to the client. +If +.I o +is non-nil, the request will change the physical origin of +.I i +to +.IR o , +otherwise +.I i +gives a new image (its logical origin must match its physical origin). +Only one such request is allowed to be outstanding +at any one time; the channel passed in +.I rc +will yield the value +.B -1 +if the image from a previous request has not yet been consumed, +in which case the current request should be caused to fail. +.PP +.B Wmsrv +can maintain a record of the current +windows and their stacking order relative to one other. +.B Top +returns a pointer to the client at the top of the stack; +the other clients can be accessed, in stacking order, +via their +.B znext +references. +.B Find +finds the top client that has a window containing +the point +.IR p . +.B Wmsrv +provides various +.B Client +methods that may be used to help +implement a window manager's interface: +.TP 10 +.IB c .window(\fItag\fP) +Yield the +.BR Window , +.IR w , +corresponding to +.IR tag , +or +.B nil +if there is none. +Note that +.IB w \.r +holds the actual screen rectangle of the image; +the client is free to modify the image's logical +coordinate system, so +.IB w \.img.r +cannot be relied upon to contain a value with a meaningful origin. +.TP +.IB c .contains(\fIp\fP) +Return non-zero if any of the client's windows +contain the point +.IR p . +.TP +.IB c .setimage(\fItag\fP,\ \fIi\fP) +Set the image associated with window +.I tag +to +.IR i . +If this is in response to a window manager request, +.I i +must be non-nil, and +.I wmsrv +will arrange that the new image is sent to the client. +If this is not possible, then +.B setimage +will return +.BR -1 . +If +.I i +is nil, no image will be sent to the client +and the window will be deleted. +.TP +.IB c .setorigin(\fItag\fP,\ \fIo\fP) +Similar to +.BR setimage , +except that only the origin of the window is changed. +In order to enable clients to maintain their own logical +coordinate system, +.I wmsrv +first sends +.B nil +on the +.B Wmcontext.images +channel, allowing the client to suspend operations +on the image momentarily; it then sends to same +channel, with its origin set to its actual screen origin. +The client is then free to set the logical origin again. +.TP +.IB c .top() +Raise the client's windows above the other clients' windows. +.TP +.IB c .bottom() +Send the client's windows below the other clients' windows. +.TP +.IB c .remove() +Remove the client and its windows from wmsrv's window stack. +.SH FILES +.TP 10 +.B /chan/wm +Created by +.I wmsrv +using +.IR file2chan (2) +to serve connection requests. +.SH SOURCE +.B /appl/lib/wmsrv.b +.SH SEE ALSO +.IR wm (1), +.IR draw-screen (2), +.IR wmlib (2), +.IR wmexport (1), +.IR wmclient (2), +.IR tkclient (2), diff --git a/man/2/workdir b/man/2/workdir new file mode 100644 index 00000000..ba6b3094 --- /dev/null +++ b/man/2/workdir @@ -0,0 +1,25 @@ +.TH WORKDIR 2 +.SH NAME +workdir \- get the current working directory +.SH SYNOPSIS +.EX +include "workdir.m"; +workdir := load Workdir Workdir->PATH; + +init: fn(): string; +.EE +.SH DESCRIPTION +.B Workdir +returns a string representation of the working directory +of the invoking process. +.PP +When Inferno boots, +the initial process has +.B / +for its working directory. +.SH SOURCE +.B /appl/lib/workdir.b +.SH SEE ALSO +.IR sys-chdir (2), +.IR sys-fd2path (2), +.IR sys-stat (2) diff --git a/man/2/xml b/man/2/xml new file mode 100644 index 00000000..8387971a --- /dev/null +++ b/man/2/xml @@ -0,0 +1,266 @@ +.TH XML 2 +.SH NAME +xml \- XML navigation +.SH SYNOPSIS +.EX +include "xml.m"; + +xml := load Xml Xml->PATH; +Parser, Item, Location, Attributes, Mark: import xml; + +init: fn(): string; +open: fn(f: string, warning: chan of (Locator, string), + preelem: string): (ref Parser, string); + +Parser: adt { + fileoffset: int; + + next: fn(p: self ref Parser): ref Item; + down: fn(p: self ref Parser); + up: fn(p: self ref Parser); + mark: fn(p: self ref Parser): ref Mark; + atmark: fn(p: self ref Parser, m: ref Mark): int; + goto: fn(p: self ref Parser, m: ref Mark); + str2mark: fn(p: self ref Parser, s: string): ref Mark; +}; + +Item: adt { + fileoffset: int; + pick { + Tag => + name: string; + attrs: Attributes; + Text => + ch: string; + ws1: int; + ws2: int; + Process => + target: string; + data: string; + Doctype => + name: string; + public: int; + params: list of string; + Stylesheet => + attrs: Attributes; + Error => + loc: Locator; + msg: string; + } +}; + +Locator: adt { + line: int; + systemid: string; + publicid: string; +}; + +Attribute: adt { + name: string; + value: string; +}; + +Attributes: adt { + all: fn(a: self Attributes): list of Attribute; + get: fn(a: self Attributes, name: string): string; +}; + +Mark: adt { + offset: int; + str: fn(m: self ref Mark): string; +}; +.EE +.SH DESCRIPTION +.B Xml +provides an interface for navigating XML files (`documents'). Once loaded, the module +must first be initialised by calling +.BR init . +A new parser instance is created by calling +.BR open(\fIf\fP,\ \fIwarning\fP,\ \fIpreelem\fP) , +which opens the file +.I f +for parsing as an XML document. +It returns a tuple, say +.RI ( p ,\ err ). +If there is an error opening the document, +.I p +is nil, and +.I err +contains a description of the error; otherwise +.I p +can be used to examine the contents of the document. +If +.I warning +is not nil, non-fatal errors encountered when parsing +will be sent on this channel - a separate process will +be needed to received them. Each error is represented +by a tuple, say +.RI ( loc ,\ msg ), +containing the location +.IR loc , +and the description, +.IR msg , +of the error encountered. One XML tag, +.IR preelem , +may be marked for special treatment by the XML parser: +within this tag all white space will be passed through as-is. +.PP +Once an XML document has been opened, the following +.B Parser +methods may be used to examine the items contained within: +.TP 10 +.IB p .next() +An XML document is represented by a tree-structure. +.B Next +returns the next item in the document at the current level of the tree +within the current parent element. If there are no more such +items, it returns +.BR nil . +.TP +.IB p .down() +.B Down +descends into the element that has just been returned by +.BR next , +which should be a +.B Tag +item. Subsequent items returned by +.B next +will be those within that tag. +.TP +.IB p .up() +.B Up +moves up one level in the XML tree. +.TP +.IB p .mark() +.B Mark +returns a mark that can be used to return later to the current +position in the document. The underlying file must +be seekable for this to work. +.TP +.IB p .goto(\fIm\fP) +Goes back to a previously marked position, +.IR m , +in the document. +.TP +.IB p .atmark(\fIm\fP) +.B Atmark +returns non-zero if the current +position in the document is the same as that marked by +.IR m . +The current tree level is ignored in the comparison. +.TP +.IB p .str2mark(\fIs\fP) +.B Str2mark +turns a string as created by +.B Mark.str +back into a mark as returned by +.BR Parser.mark . +.SS Items +Various species of items live in XML documents; they are encapsulated +in the +.B Item +adt. This contains one member in common to all its subtypes: +.BR fileoffset , +the position in the XML document of the start of the item. +The various kinds of item are as follows: +.TP +.B Tag +A generic XML tag. +.B Name +names the tag, and +.B attrs +holds its attributes, if any. +.TP +.B Text +.B Text +represents inline text in the XML document. +With the exception of text inside the tag named by +.I preelem +in +.BR open , +any runs of white space are compressed to a single space, +and white space at the start or end of the text is elided. +.B Ch +contains the resulting text; +.B ws1 +and +.B ws2 +are non-zero if there was originally white space at the start +or end of the text respectively. +.TP +.B Process +.B Process +represents an XML document processing directive. +.B Target +is the processing instruction's target, and +.B data +holds the rest of the text inside the directive. +XML stylesheet directives are recognised directly and have +their own item type. +.TP +.B Doctype +.B Doctype +should only occur at the start of an xml document, +and represents the type of the XML document. +.TP +.B Stylesheet +.B Stylesheet +represents an XML stylesheet processing request. The +data of the processing request is parsed as per the RFC +into attribute-value pairs. +.TP +.B Error +If an unrecoverable error occurs processing the document, +an +.B Error +item is returned holding the location +.RB ( loc ), +and description +.RB ( msg ) +of the error. +This will be the last item returned by the parser. +.PP +The attribute-value pairs in +.B Tag +and +.B Stylesheet +items are held in an +.B Atttributes +adt, say +.IR a . +.IB A .all() +yields a list holding all the attributes; +.IB a .get( name ) +yields the value of the attribute +.IR name . +.PP +The location returned when an error is reported is held +inside a +.B Locator +adt, which holds the line number on which the error occurred, +the ``system id'' of the document (in this implementation, its file name), +and the "public id" of the document (not currently used). +.PP +A +.B Mark +.I m +may be converted to a string with +.IB m .str()\fR;\fP +this enables marks to be written out to external storage, to index +a large XML document, for example. +Note that if the XML document changes, any stored marks will +no longer be valid. +.SH SOURCE +.B /appl/lib/xml.b +.SH SEE ALSO +``Extensible Markup Language (XML) 1.0 (Second Edition)'', +.B http://www.w3.org/TR/REC-xml +.SH BUGS +XML's definition makes it tricky to handle leading and trailing white space +efficiently; +.B ws1 +and +.B ws2 +in +.B Item.Text +is the current compromise. diff --git a/man/3/0intro b/man/3/0intro new file mode 100644 index 00000000..e379f9af --- /dev/null +++ b/man/3/0intro @@ -0,0 +1,69 @@ +.TH INTRO 3 +.SH NAME +intro \- introduction to the Inferno devices +.SH DESCRIPTION +An Inferno +.I device +implements a file tree for client processes. +A file name beginning with a hash (number) symbol, such as +.LR #c , +names the root of a file tree implemented by +a particular +.IR "kernel device driver" +identified by the character after the hash. +Such names are usually bound to conventional locations +in the name space. +For example, after +.IP +.EX +sys->bind("#c", "/dev", sys->MREPL) +.EE +.LP +an +.IR ls (1) +of +.B /dev +will list the files provided by the +.I console +device. +.PP +A kernel device driver is a +.I server +in the sense of the Inferno File Protocol, Styx (see Section 5), +but with the messages implemented by local +rather than remote procedure calls. +Also, several of the messages +.RI ( Nop , +.IR Flush , +and +.IR Error ) +have no subroutine equivalents. +.PP +When a system call is passed a file name beginning with +.L "#" +it looks at the next character, and if that is a valid +.I device character +it performs an +.IR attach (5) +on the corresponding device to get a channel representing the +root of that device's file tree. +If there are any characters after the device character but +before the next +.L "/" +or end of string, those characters are passed as parameter +.I aname +to the attach. +.PP +Each kernel device has a conventional place at which to be bound +to the name space. +The +.I SYNOPSIS +sections of the following pages includes a shell +.I bind +command to put the device in the conventional place. +Most of these binds are done automatically by the system when it initializes; +see +.IR init (8). +.SH SEE ALSO +.IR intro (5), +.IR intro (2) diff --git a/man/3/INDEX b/man/3/INDEX new file mode 100644 index 00000000..82bda96c --- /dev/null +++ b/man/3/INDEX @@ -0,0 +1,54 @@ +intro 0intro +arch arch +audio audio +boot boot +cap cap +cmd cmd +cons cons +dbg dbg +draw draw +ds ds +dup dup +dynld dynld +eia eia +env env +ether ether +flash flash +floppy floppy +fpga fpga +fs fs +ftl ftl +gpio gpio +i2c i2c +i82365 i82365 +indir indir +ip ip +kprof kprof +logfs logfs +lpt lpt +mnt mnt +mpeg mpeg +pbus pbus +pipe pipe +plap plap +pci pnp +pnp pnp +pointer pointer +prof prof +prog prog +root root +rtc rtc +sd sd +sign sign +snarf snarf +srv srv +srv9 srv9 +ssl ssl +switch switch +tinyfs tinyfs +tls tls +touch touch +tv tv +usb usb +vga vga +vid vid diff --git a/man/3/arch b/man/3/arch new file mode 100644 index 00000000..ffb03c69 --- /dev/null +++ b/man/3/arch @@ -0,0 +1,63 @@ +.TH ARCH 3 x86 +.SH NAME +arch \- x86 architecture-specific information and control +.SH SYNOPSIS +.nf +.B bind -a #P /dev + +.B /dev/cputype +.B /dev/ioalloc +.B /dev/iob +.B /dev/iol +.B /dev/iow +.B /dev/irqalloc +.SH DESCRIPTION +This device presents textual information about PC hardware and allows +user-level control of the I/O ports on x86-class machines. +.PP +Reads from +.I cputype +recover the processor type and clock rate. +.PP +Reads from +.I ioalloc +return I/O ranges used by each device, one line +per range. Each line contains three fields separated by white space: first address +in hexadecimal, +last address, name of device. +.PP +Reads from +.I irqalloc +return the enabled interrupts, one line per +interrupt. Each line contains three fields separated by white space: +the trap number, the IRQ it is assigned to, and the name of +the device using it. +.PP +Reads and writes to +.IR iob , +.IR iow , +and +.I iol +cause 8-bit wide, 16-bit wide, and 32-bit wide requests to +I/O ports. +The port accessed is determined by the byte offset of the +file descriptor. +.SH EXAMPLE +The following Limbo code reads from an x86 byte I/O port. +.IP +.EX +inportb(port: int): byte +{ + data := array[1] of byte; + + if(iobfd == nil) + iobfd = sys->open("#P/iob", Sys->ORDWR); + + sys->seek(iobfd, port, 0); + if(sys->read(iobfd, data, len data) != len data) + fatal(sys->sprint("inportb(16r%4.4x): %r\en", port)); + return data[0]; +} +.EE +.SH SOURCE +.B /os/pc/devarch.c diff --git a/man/3/audio b/man/3/audio new file mode 100644 index 00000000..17d9aa3e --- /dev/null +++ b/man/3/audio @@ -0,0 +1,169 @@ +.TH AUDIO 3 +.SH NAME +audio \- digital audio input and output +.SH SYNOPSIS +.B bind -a '#A' /dev +.PP +.B /dev/audio +.br +.B /dev/audioctl +.SH DESCRIPTION +The +.I audio +device serves a one-level directory containing two files, +giving access to the host or native audio device in a platform-independent way. +.PP +.B Audio +is the data file, which can be read or written to exchange data with the device. Audio +data is a sequence of stereo samples, left sample first, each of which is a 16 bit little-endian +two's complement integer. +.PP +.B Audioctl +is the associated control file, which sets the characteristics of the device. +Reads return lines of the form +.TP +.B "\fIsource\fP [in out] \fIvalue\fP" +.TP +.B "\fIsource\fP in \fIvalue\fP out \fIvalue\fP" +.TP +.B "\fIsource\fP [in out] left \fIvalue\fP right \fIvalue\fP" +.TP +.B "\fIsource\fP in left \fIvalue\fP right \fIvalue\fP out left \fIvalue\fP right \fIvalue\fP" +The qualifiers +.BR in , +.B out +and +.BR left , +.B right +are omitted if they +are not applicable or if the input/output and/or left/right values are +the same. +The +.I source +is one of +.BR audio , +.BR aux1 , +.BR aux2 , +.BR line , +.BR mono , +.BR mic , +.BR rate , +.B chans +or +.BR bits . +If +.I source +is one of the ports +.BR audio , +.BR aux1 , +.BR aux2 , +.BR line , +.B mono +or +.BR mic , +.I value +represents +the volume +on a scale of 0 (quiet) to 100 (loud). The default volume is 50 for the +.B audio +port and 0 for the +remainder. If the +.I source +is +.BR rate , +.I value +represents the +rate at which the data was recorded in Hz. The default is 22050. +If the +.I source +is +.BR chans , +.I value +is the number of channels of audio data - 2 (the default) for stereo, otherwise mono. If the +.I source +is +.BR bits , +.I value +is one of 4, 8 or 16, the sample size in bits. +.TP +.B [in out] enc \fIformat\fP +Outputs the recording format on the input and/or output channels. +.I Format +is one of +.BR ulaw , +.BR alaw , +.BR pcm , +.B pcm16 +or +.B adpcm +.TP +.B loop \fIvalue\fP +.I Value +is 0 or 1 to disable or enable loopback respectively. +.PP +Writes control the device with strings of a similar format as that for reads. +.TP +.B "\fIsource\fP [in out] \fIvalue\fP" +.TP +.B "\fIsource\fP in \fIvalue\fP out \fIvalue\fP" +.TP +.B "\fIsource\fP [in out] left \fIvalue\fP right \fIvalue\fP" +.TP +.B "\fIsource\fP in left \fIvalue\fP right \fIvalue\fP out left \fIvalue\fP right \fIvalue\fP" +Set the corresponding value/volume for the particular +.I source. +The same conventions apply +as in the read case above. The default value of +.I source +is +.BR audio . +.TP +.B reset +Set all attributes to their default value. +.TP +.B loop \fIvalue\fP +Enable (1) or disable (0) loopback mode. +.TP +.B [in out] enc \fIformat\fP +Set the recording format on the input and/or output channels to +.I format. +.I Format +is one of +.BR ulaw , +.BR alaw , +.BR pcm , +.BR adpcm . +.TP +.B [left right] dev \fIinput\fP +Set the input source of the left and/or right ADCs. +.I Input +is one of +.BR mic , +.BR line , +.BR aux1 , +.BR loop . +.SH SOURCE +.B /emu/port/devaudio*.c +.br +.B /emu/*/devaudio.c +.br +.B /os/*/devaudio.c +.br +.B /os/*/devcs4231.c +.SH SEE ALSO +.IR auplay (1) +.br +.IR audio (6) +.SH BUGS +The device has not been implemented on every platform that could provide it, +particularly hosted implementations. +.br +.B /os/port/devaudio.c +(a driver for the SB16) implements an older interface of broadly similar form, +but using +.B volume +not +.BR audioctl , +and supports a subset of the commands described above. +.br +The device is exclusive-use and cannot mix streams from several clients. diff --git a/man/3/boot b/man/3/boot new file mode 100644 index 00000000..cc9ea36a --- /dev/null +++ b/man/3/boot @@ -0,0 +1,41 @@ +.TH BOOT 3 +.SH NAME +boot \- reboot under program control +.SH SYNOPSIS +.B bind -a #B /dev +.PP +.B /dev/boot +.br +.B /dev/kexec +.br +.B /dev/mem +.SH DESCRIPTION +.I Boot +serves a directory containing three files that control a reboot of the system. +The files can only be opened by the host owner +(see +.IR eve (10.2)). +.PP +.B Boot +is a write-only file that accepts 4 bytes representing a kernel address, high-order byte first. +The system will transfer control to that address, which is assumed to be the start of low-level reboot code. +There is no return from the write on success or failure. +.PP +.B Kexec +is a write-only file to which an uncompressed kernel image can be written, a chunk at a time. +When the file is closed, the system will transfer control to the start of the image, which again +is assumed to be low-level reboot code. +.PP +.B Mem +copies data to and from kernel memory, taking the current file offset as an address therein. +.PP +.I Boot +flushes caches as necessary to ensure that writes to kernel memory through any +of these files will be visible when subsequently executed as instructions. +.SH SOURCE +.B /os/port/devboot.c +.SH SEE ALSO +.IR tftp (2), +.IR cons (3) +.SH DIAGNOSTICS +Invalid addresses are diagnosed, but otherwise there is no error return. diff --git a/man/3/cap b/man/3/cap new file mode 100644 index 00000000..afd7ef3d --- /dev/null +++ b/man/3/cap @@ -0,0 +1,92 @@ +.TH CAP 3 +.SH NAME +cap \- capability for changing user name +.SH SYNOPSIS +.BI "bind #¤ " dir +.PP +.IB dir /caphash +.br +.IB dir /capuse +.SH DESCRIPTION +.I Cap +allows a process owned by the host owner (see +.IR eve (10.2)) +to give another process on the same machine +a capability to set its user name to a specified user. +The capability is a string of the form: +.IP +[ +.IB fromuser @ +] +.IB touser @ key +.PP +where +.I fromuser +is a process's current user name, +.I touser +is its new user name, and +.I key +is a string of random characters +(eg, produced by +.IR security-random (2)). +.PP +.B Caphash +is a write-only file that can only be opened by the host owner. +A process enables the use of a capability by writing the keyed hash of +.IB fromuser @ touser +to +.BR caphash . +The hash is computed using +.B Keyring->hmac_sha1 +as follows: +.IP +.EX +kr := load Keyring Keyring->PATH; +IPint: import kr; +users := sys->sprint("%s@%s", fromuser, touser); +cap := sys->sprint("%s@%s", users, key); +digest := array[Keyring->SHA1dlen] of byte; +ausers := array of byte users; +kr->hmac_sha1(ausers, len ausers, array of byte key, digest, nil); +if(sys->write(caphashfd, digest, len digest) < 0) + error(); +.EE +.PP +The capability (eg, +.B cap +in the example) +can then be passed to another process. +.PP +.B Capuse +is a write-only file that can be opened by any process. +It can then write a capability string to change its user name, +provided that capability has previously been enabled by the host owner via +.BR caphash , +and if the capability included a +.IR fromuser , +the writing process currently has that user name. +After a successful write, the writing process will be owned by +.IR touser . +Any capability can be used at most once. +.PP +A capability enabled by +.B caphash +has a limited lifetime, on the order of 30 seconds. +.B Caphash +can be removed by the host owner to prevent its further use. +.SH SOURCE +.B /emu/port/devcap.c +.br +.B /os/port/devcap.c +.SH SEE ALSO +.IR keyring-sha1 (2), +.IR cons (3), +.IR intro (5), +.IR eve (10.2) +.SH DIAGNOSTICS +A write to +.B capuse +without a previous write to +.B caphash +sets the error string to +.RB `` "invalid capability" ''. diff --git a/man/3/cmd b/man/3/cmd new file mode 100644 index 00000000..83b4e245 --- /dev/null +++ b/man/3/cmd @@ -0,0 +1,273 @@ +.TH CMD 3 hosted +.SH NAME +cmd \- interface to host operating system commands +.SH SYNOPSIS +.B bind -a '#C' / +.PP +.B /cmd/clone +.br +.BI /cmd/ n /ctl +.br +.BI /cmd/ n /data +.br +.BI /cmd/ n /status +.br +.BI /cmd/ n /wait +.SH DESCRIPTION +.I Cmd +provides a way to run commands in the underlying operating system's +command interpreter when Inferno is running hosted, in +.IR emu (1). +It serves a three-level directory that is conventionally bound +behind the root directory. +The top of the hierarchy is a directory +.BR cmd , +that contains a +.B clone +file and zero or more numbered directories. +Each directory represents a distinct connection to the host's command interpreter. +The directory contains four files: +.BR ctl , +.BR data , +.B status +and +.BR wait , +used as described below. +Opening the +.B clone +file reserves a connection: it is equivalent to opening the +.B ctl +file of an unused connection directory, creating a new one if necessary. +.PP +The file +.B ctl +controls a connection. +When read, it returns the decimal number +.I n +of its connection directory. +Thus, opening and reading +.B clone +allocates a connection directory and reveals the number of the allocated directory, +allowing the other files to be named (eg, +.BI /cmd/ n /data\fR). +.PP +.B Ctl +accepts the following textual commands, allowing quoting as interpreted by +.IR parsecmd (10.2): +.TP +.BI "dir " wdir +Run the host command in directory +.IR wdir , +which is a directory +.I "on the host system" . +Issue this request before starting the command. +By default, commands are run in the Inferno root directory on the host system. +.TP +.BI "exec " "command args ..." +Spawn a host process to run the +.I command +with arguments as given. +The write returns with an error, setting the error string, if anything prevents +starting the command. +If write returns successfully, the command has started, and its input and +output may be accessed through +.B data +(see below). +If arguments containing white space are quoted (following the conventions of +.IR sh (1) +or +.IR parsecmd (10.2)), +they are requoted by +.I cmd +using the host command interpreter's conventions so that +.I command +sees exactly the same arguments as were written to +.BR ctl . +.TP +.B kill +Kill the host command immediately. +.TP +.B killonclose +Set the device to kill the host command when the +.B ctl +file is closed (normally all files must be closed, see below). +.TP +.BI nice " \fR[\fPn\fR]\fP" +Run the host command at less than normal scheduling priority. +Issue this request before starting the command. +The optional value +.IR n , +in the range 1 to 3, +indicates the degree of `niceness' (default: 1). +.PP +The +.B data +file provides a connection to the input and output of a previously-started +host command. +It must be opened separately for reading and for writing. +When opened for reading, it returns data that the command writes to its standard output and standard error (the +streams are merged); when closed, further writes by the command will receive the host +equivalent of `write to closed pipe'. +When opened for writing, data written to the file +can be read by the command on its standard input; when closed, further reads by +the command will see the host equivalent of `end of file'. +(Unfortunately there is no way to know when the command needs input.) +.PP +Once started, a host command runs until it terminates or until it is killed, +by using the +.B kill +or +.B killonclose +requests above, or by closing all +.BR ctl , +.B data +and +.B wait +files for a connection. +.PP +The read-only +.B status +file provides a single line giving the status of the connection (not the command), of the form: +.IP +.BI cmd/ "n opens state wdir arg0" +.PP +where the fields are separated by white space. The meaning of each field is: +.TP +.I n +The +.B cmd +directory number. +.TP +.I opens +The decimal number of open file descriptors for +.BR ctl , +.B data +and +.BR wait . +.TP +.I state +The status of the interface in directory +.IR n : +.RS +.TF Execute +.TP +.B Open +Allocated for use but not yet running a command. +.TP +.B Execute +Running a command. +.TP +.B Done +Command terminated: status available in the +.B status +file (or via +.BR wait ). +.TP +.B Close +Command completed. Available for reallocation via +.BR clone . +.RE +.PD +.TP +.I wdir +The command's initial working directory on the host. +.TP +.I arg0 +The host command name (without arguments). +.PP +The read-only +.B wait +file must be opened before starting a command via +.BR ctl . +When read, it blocks until the command terminates. +The read then returns with a single status line, to be +parsed using +.B String->unquote +(see +.IR string (2)). +There are five fields: +host process ID (or 0 if unknown); +time the command spent in user code in milliseconds (or 0); +time spent in system code in milliseconds (or 0); +real time in milliseconds (or 0); +and a string giving the exit status of the command. +The exit status is host-dependent, except that an empty string +means success, and a non-empty string contains a diagnostic. +.PP +.SS "Command execution" +In all cases, the command runs in the host operating system's +own file name space +in which +.IR emu (1) +was started. +All file names will be interpreted in that space, not Inferno's. +For example, on Unix and Plan 9, +.B / +refers to the host's file system root, not Inferno's; +the effects of mounts and binds will not be visible; +nor will Inferno services be available except by network connection. +.PP +On Unix systems, +the command is run by the +.B execvp +system call, +using the Unix user and group ID of +the user that started +.IR emu (1), +unless it was started by the super-user, in which case +.I cmd +attempts to set the Unix user ID and group ID to those of a Unix user corresponding to +the current Inferno user's name, and failing that, to user and group +.BR nobody . +.PP +On Plan 9, +the command is run with the system call +.BR exec , +first trying the +.I command +name as-is; +if that fails and the name does not start with +.BR # , +.BR / , +.B ./ +or +.BR ../ , +.I cmd +attempts to exec +.BI /bin/ command. +The command runs using the Plan 9 identity of +the user that started +.IR emu (1). +Each connection has its own name space. +.PP +On Windows systems, +the command must be a binary executable (not built into the command interpreter) in the current path. +It is always run with the same Windows user identity as started +.IR emu (1). +The arguments given to the +.B exec +request are requoted as described above so as to present the same +arguments to the command via the Windows command interpreter. +The arguments are otherwise unmodified. +In particular, no attempt is made to convert slashes to backslashes in a vain +attempt to convert file name syntax to Windows conventions. +(In fact, most Windows applications will accept +.B / +as a separate in file names, provided the drive letter precedes the whole +name to prevent its interpretation as a command option.) +.SH SOURCE +.B /emu/port/devcmd.c +.br +.B /emu/*/cmd.c +.SH "SEE ALSO" +.IR emu (1), +.IR os (1) +.SH BUGS +Standard output and standard error ideally should not be mingled. +.SH DIAGNOSTICS +A +.B write +to +.B ctl +returns with an error and sets the error string if +a command cannot be started or killed successfully. diff --git a/man/3/cons b/man/3/cons new file mode 100644 index 00000000..dacd73dd --- /dev/null +++ b/man/3/cons @@ -0,0 +1,312 @@ +.TH CONS 3 +.SH NAME +cons \- console device +.SH SYNOPSIS +.nf +.B bind #c /dev + +.B /dev/cons +.B /dev/consctl +.B /dev/drivers +.B /dev/jit +.B /dev/keyboard +.B /dev/klog +.B /dev/kprint +.B /dev/memory +.B /dev/msec +.B /dev/null +.B /dev/notquiterandom +.B /dev/pin +.B /dev/pointer +.B /dev/random +.B /dev/scancode +.B /dev/sysctl +.B /dev/sysname +.B /dev/time +.B /dev/user +.fi +.SH DESCRIPTION +The console device serves a one-level directory +giving access to the console and +miscellaneous information. +.PP +Reading the +.B cons +file returns characters typed on the keyboard. +Normally, characters are buffered to enable erase and kill processing. +A control-U, +.LR ^U , +typed at the keyboard +.I kills +the current input line (removes all characters +from the buffer of characters +not yet read via +.BR cons ), +and a backspace +.I erases +the previous non-kill, non-erase character from the input buffer. +Killing and erasing only delete characters back to, but not including, +the last newline. +Typed keystrokes produce 16-bit characters +that are translated into the variable-length +.SM UTF +encoding (see +.IR utf (6)) +before putting them into the buffer. +A +.B read +of length greater than zero causes the process to wait until a +newline or a +.L ^D +ends the buffer, and then returns as much of the buffer as the argument +to +.B read +allows, but only up to one complete line. +A terminating +.L ^D +is not put into the buffer. +If part of the line remains, the next +.B read +will return bytes from that remainder and not part of any new line +that has been typed since. A single line containing a +.L ^D +can be used as an end of file indication to programs that take interactive input. +.PP +If +the string +.B rawon +has been written to the +.B consctl +file and the file is still open, +.B cons +is in +.IR "raw mode" : +characters are not echoed as they are typed, +backspace and +.L ^D +are not treated specially, +and characters are available to +.B read +as soon as they are typed. +Ordinary mode is reentered when +.B rawoff +is written to +.B consctl +or this file is closed. +.PP +A +.B write +to +.B cons +causes the characters to be printed on the console screen. +.PP +The +.B keyboard +file returns the underlying tokens produced by the keyboard hardware as they +are produced; in the emulation environment, it is like an always-raw +.B cons +file. +.PP +The +.B null +file throws away anything written to it +and always returns zero bytes when read. +.PP +The +.B klog +file +returns the tail of messages written by the native kernel debugging function +.B kprint +(mainly used when debugging interrupt handlers in device drivers). +It is available only in native kernel implementations. +.PP +The +.B kprint +file +returns console output: messages written by kernel print statements and messages +written by processes to this driver's +.B cons +file. +Until +.B kprint +is opened, system console output is handled normally. +Once +.B kprint +has been opened, +if the machine's console is a serial line, the data is sent both to +the serial console and to +.BR kprint ; +if the console is a graphics screen, the data is sent only to +.BR kprint . +.PP +A read of the +.B pointer +file returns the status of the mouse or other pointing device: +its position and button state. +The read blocks until the state has changed since the last read. +The read returns 49 bytes: the letter +.B m +followed by four fields containing decimal integers, each 11 characters wide followed by a blank. +The integers are: x and y, +coordinates of the pointer on the screen; a bit mask with the +1, 2, and 4 bits when the pointer's left, middle, and right +buttons, respectively, are down; and a time stamp in units of milliseconds. +.PP +Writing to the +.B pointer +file, using the same format, +causes the pointer to move to the specified x, y position +(the button and millisecond fields are ignored, and optional). +If there is a visible image representing the pointer's position, +that will move too. +.PP +The +.B pin +file, when read, returns either the string +.B "no pin +if no PIN has been set for authentication, or +.B "pin set +if one has. +The +.B pin +file may be written once with a decimal representation of the PIN +to use on this Inferno machine. +.PP +The +.B random +device returns as many bytes of random data as are requested in the +.BR read . +.PP +The +.B notquiterandom +device returns as many bytes of pseudo-random data as are requested in the +.BR read ; +this is typically faster than +.B random +but the results are more predictable. +.PP +The +.B scancode +device provides access to the raw scan codes of the primary +.B keyboard . +While it is open, key strokes are diverted from +.B cons +and +.B keyboard . +The first +.IR read (2) +after opening returns an identifier string which defines the format of data delivered +by subsequent +reads. Known ones are defined in +.IR scancode (6). +The most common format is a single byte per scan code, where the top bit is 1 for +up and 0 for down, and the bottom 7 bits are the scan code. Some input devices +have a larger scan code space; in this case scan codes are often delivered as two byte +little endian quantities, where the top bit is the up/down signifier, and the bottom +15 bits are the scan code. In all cases the meaning of the individual scan codes is +device specific. +.PP +The rest of the files contain (mostly) read-only strings. +Each string has a fixed length: a +.I read +(see +.IR sys-read (2)) +of more than that gives a result of that fixed length (the result does not +include a terminating zero byte); +a +.I read +of less than that length leaves the file offset so the +rest of the string (but no more) will be read the next time. +To reread the file without closing it, +.I seek +must be used to reset the offset. +When the file contains numeric data, each number is formatted +in decimal as an 11-digit number with leading blanks and +one trailing blank: twelve bytes total. +.PP +The +.B sysctl +file can be read to return the current Inferno version. Writing the string +.B reboot +to it attempts to reboot the system, writing +.B halt +attempts to halt the system. Writing +.B nobroken +ensures that broken processes have all associated memory freed before +being destroyed, +writing +.B broken +ensures that they are left in this state to allow debugging (the default). +Only the privileged user is allowed to write to this file. +.PP +The +.B sysname +file holds the textual name of the machine. +It can only be written by the privileged user. +.PP +The +.B user +file contains the name of the user associated with the current process. +It can only be written by the privileged user. In the emulation environment, +writing to this file also attempts to set the user id in the host operating +system to the specified value. +.PP +The +.B memory +file returns a formatted presentation of the state of the memory +allocation pools in the system. +Each line of output returned reports, for a single pool, +the amount of memory in use, +the upper size limit, +the high water mark, +the number of allocations done, +the number of frees done, +the number of extensions done, +the largest chunk available +and the name of the pool. +.PP +The +.B drivers +file returns a list of the device drivers loaded in the system. +Each line gives the name of the device for +.IR bind (1), +such as +.BR #c , +followed by the name of the driver as used in the system configuration file. +.PP +The other files served by the +.I cons +device are all single numbers: +.TP +.B jit +non-zero if `just in time' compilation is configured (can be written to change the state). Writing 0 turns off JIT compilation, 1 turns it on and larger values give increasingly +detailed traces of the compilation for debugging purposes. +.TP +.B msec +the value of a millisecond counter +.TP +.B time +number of microseconds since the epoch 00:00:00 GMT, Jan. 1, 1970. +(Can be written once by the privileged user, to set at boot time.) +.SH SOURCE +.B /emu/port/devcons.c +.br +.B /os/port/devcons.c +.SH SEE ALSO +.IR draw (3), +.IR keyboard (6), +.IR utf (6), +.IR eve (10.2) +.SH BUGS +For debugging, on native systems only, +two control-T's followed by a letter +generate console output: +.L ^T^Tp +prints data about kernel processes, +.L ^T^Ts +prints the kernel stack, +.L ^T^Tx +prints data about memory allocation. +.PP +The system can be rebooted by typing +.LR ^T^Tr . diff --git a/man/3/dbg b/man/3/dbg new file mode 100644 index 00000000..ce91144f --- /dev/null +++ b/man/3/dbg @@ -0,0 +1,384 @@ +.TH DBG 3 +.SH NAME +dbg \- remote kernel debugging +.SH SYNOPSIS +.B "bind -b '#b' /dev" +.PP +.B /dev/dbgctl +.br +.B /dev/dbglog +.PP +.BI "echo r >/dev/dbgctl" +.SH DESCRIPTION +.I Dbg +allows a native kernel to be debugged remotely, +by means of a simple protocol, typically run on a serial port +(see +.IR eia (3)). +The +.IR acid (10.1) +debugger uses the protocol for instance; see its +.B -R +option. +.PP +.I Dbg +uses the values of several global variables set by the kernel configuration file (see +.IR conf (10.6)), +all of which default values. +The variables and default values are listed below: +.IP +.EX +int dbgstart = 0; +char *dbgdata = "#t/eia0"; +char *dbgctl = "#t/eia0ctl"; +char *dbgctlstart = "b19200"; +char *dbgctlstop = "h"; +char *dbgctlflush = "f"; +.EE +.PP +Different values can be set by including similar declarations, +with values as desired, in the +.B code +section of the configuration file. +.I Dbg +uses the values as follows: +.TP \w'\f5dbgctlflushxx\fP'u +.PD 0 +.B dbgstart +if non-zero, start the debugger protocol on the +configured connection during driver initialisation (system startup); +otherwise it must be started explicitly by the +.B r +control request (see below) +.TP +.B dbgdata +data file for the debugging connection +.TP +.B dbgctl +control file for the debugging connection +.TP +.B dbgctlstart +control request to initialise link (eg, baud rate) +.TP +.B dbgctlstop +control request to hang up link +.TP +.B dbgctlflush +control request to write to flush input and output on link +.PD +.PP +.I Dbg +serves two files that control and monitor its operation. +.PP +.B Dbgctl +accepts several textual commands; normally only +.B r +is needed: +.TP +.BI d " dbgdata" +set the value of +.B dbgdata +to the value given as an argument +.TP +.BI c " dbgctl" +.PD 0 +.TP +.BI i " dbgctlstart" +.TP +.BI h " dbgctlstop" +.TP +.BI f " dbgctlflush" +set the value of the corresponding control variable to the value of the first argument +.PD +.TP +.B r +start running the debugger protocol (not needed if +.B dbgstart +was non-zero at boot) +.TP +.B s +stop running the debugger protocol; stop and flush the link +.PP +When read, +.B dbgctl +yields a single line showing the status of the device +.RB (` running ' +or +.RB ` stopped ') +and the current values of the debugger control +variables listed above. +.PP +.B Dbglog +is a read-only text file containing lines representing debugger events, +one per line. +It is mainly useful for checking the operation of the device, or debugging new +.IR acid (10.1) +functions. +.SS Debug protocol +The protocol is subject to change. +The host running the debugger and the target to be debugged +exchange 10-byte messages containing a one byte message type +and 9 bytes of data. +Bytes unused by a given type are set to zero. +Normally the host sends one of the T-messages below and +receives the corresponding R-message, or +.BR Rerr . +(These are unrelated to the T-messages and R-messages of +.IR intro (5).) +Exceptionally, the target sends the first message, an +.B Rerr +to reset the protocol, and thus the debugger is notified if the target +is rebooted during a debugging session and can reset its own state. +Values, including addresses, are sometimes represented textually +in hexadecimal, but are usually in binary as a single byte, or an array of 4 bytes, +high-order byte first (big endian). +.PP +The term +.I process +here refers exclusively to those created directly or indirectly by +.IR kproc (10.2), +not to Limbo processes, which are not visible directly through +the protocol (although it is possible to write +.IR acid (10.1) +functions that interact through +.I dbg +with the Inferno data structures representing +the state of the Dis virtual machine). +Many requests read or write the memory or state of the +.IR "current process" +set by the +.B Tproc +message (see below). +Addresses are always 32 bits. +An address below the size of +.B Ureg +(saved register state) for the target is interpreted as an offset within the saved +state for the current process. +Otherwise it refers to an address in kernel virtual memory. +Currently in native Inferno all processes share the same address space. +.PP +The message type names used below +are assigned values by declarations in +.BR /include/rdbg.h . +The following messages are currently implemented: +.TP \w'Tstart'u +.PD 0 +.B Terr +unused +.TP +.BI Rerr " reason\fR[9]\fR" +The last message failed for the given +.IR reason , +a text string: +.BR reset , +the target or debug driver was restarted; +.BR count , +bad count; +.BR unk , +unknown command; +.BR inval , +invalid parameter; +.BR pid , +no such process; +.BR unsup , +unsupported action; +.BR notstop , +action requires process to be stopped first. +.TP +.BI Tmget " addr\fR[4]\fP n\fR[1]\fP" +Request +.I n +bytes of memory from +.IR addr ; +.I n +must be no greater than 9 +.TP +.BI Rmget " data\fR[9]\fP" +Return +.I data +requested by +.B Tmget +.TP +.BI Tmput " addr\fR[4]\fP n\fR[1]\fP data\fR[4]\fP" +Write the first +.I n +bytes of +.I data +to memory at +.IR addr , +and flush the data and instruction caches for that region; +.I n +must be no greater than 4 +.TP +.BI Rmput +Reply to a successful +.B Tmput +.TP +.BI Tproc " pid\fR[4]\fP" +Set the current process to the one with integer process ID +.I pid +for subsequent requests. +.TP +.BI Rproc " addr\fR[8]\fP" +.I Addr +is the address in hexadecimal text of the +.B Proc +structure for process +.I pid +in the corresponding +.BR Tproc . +.TP +.BI Tstatus " pid\fR[4]\fP" +Request the status of process +.I pid +leaving the current process ID unchanged. +.TP +.BI Rstatus " status\fR[9]\fP" +Return the textual status of the process +as a text string, currently one of: +.BR Dead , +.BR Moribund , +.BR Ready , +.BR Scheding , +.BR Running , +.BR Queueing , +.BR Wakeme , +.BR Broken , +.BR Stopped , +.BR Rendezvous , +or if invalid, the state value as a hexadecimal number. +.TP +.BI Trnote " pid\fR[4]\fP" +Retrieve the note (trap status) for the given +.I pid +.TP +.BI Rrnote " status\fR[9]\fP" +Provide the textual trap +.I status +for the requested process (currently always returns null status) +.TP +.BI Tstop " pid\fR[4]\fP" +Tell the kernel to stop running process +.I pid +in debugging state +.B Stopped +when it next appears in the scheduler. +.TP +.BI Rstop +Reply to successful +.B Tstop +.TP +.BI Tstart +Cancel a previous +.BR Tstop ; +if the process has already stopped, make it ready to run. +.TP +.BI Rstart +Reply to successful +.B Tstart +.TP +.BI Tcondbreak " val\fR[4]\fP op\fR[4]\fP" +If +.I op +is +.BR d , +remove and delete the breakpoint with ID +.IR val . +All other operations help +create a conditional breakpoint, providing a possibly empty list of operations +representing a conditional expression in Reverse Polish is followed +by a breakpoint request, +each expression element represented by a single +.B Tcondbreak +message. +.I Op +is a single character representing an operation, with +.I val +(integer, address, process ID) as a parameter. +The operator +.B n +should appear first; it assigns the +breakpoint an ID number +.I val +(no greater than 255). +Expression primaries are: +.BI k " val," +true if process +.I val +is at this breakpoint; +.BI b " val," +true if program counter is +.IR val ; +and +.BI p " val," +.I val +as a 32-bit literal. +Expression operators are: +unary +.B * +(indirect, yielding 32-bit value); +.B & +(bit-wise AND); +.B = +(values equal); +.B ! +(values not equal); +.B a +(logical AND); +.B o +(logical OR). +Although the expression is interpreted following Reverse Polish notation, +when transmitted, the +.B b +operation is sent last (to mark the end of the sequence and create the breakpoint), +but is moved to the start of the expression before evaluation. +.TP +.BI Rcondbreak +Reply to successful +.BR Tcondbreak . +.TP +.BI Tstartstop " pid\fR[4]\fP" +If the process +.I pid +is not stopped, return +.B Rerr +.BR notstop . +Otherwise, if the process is not stopped at +a breakpoint, start it, and wait for it to reach a breakpoint +that evaluates `true' +.TP +.BI Rstartstop " id\fR[1]\fP" +Process has stopped at breakpoint with the given +.I id +.TP +.BI Twaitstop +Unimplemented. See +.BR Tstartstop . +.TP +.BI Rwaitstop +Unused. +.TP +.BI Tkill " pid\fR[4]\fP note\fR[5]\fP" +Kill process +.I pid +with the given textual +.IR note . +Unimplemented. +.TP +.BI Rkill +Reply to successful +.BR Tkill . +Unused. +.PP +.SH SOURCE +.B /os/port/devdbg.c +.br +.B /os/*/*break.c +.br +.B /os/*/trap.c +.SH SEE ALSO +.IR acid (10.1) +.SH BUGS +The protocol is not itself error-detecting let alone error-correcting, although that normally does not +matter for debugging even +over a serial line, provided the connection is reasonably sound. diff --git a/man/3/draw b/man/3/draw new file mode 100644 index 00000000..db909291 --- /dev/null +++ b/man/3/draw @@ -0,0 +1,816 @@ +.TH DRAW 3 +.SH NAME +draw \- screen graphics +.SH SYNOPSIS +.EX +.B bind -a #i /dev + +.B /dev/draw/new + +.BI /dev/draw/ n /ctl +.BI /dev/draw/ n /data +.ig +.BI /dev/draw/ n /colormap +.. +.BI /dev/draw/ n /refresh + +.EE +.SH DESCRIPTION +The +.I draw +device serves a three-level file system +providing an interface to the graphics facilities of the system. +The Limbo Draw module (see +.IR draw-intro (2)) +implements its functions using this device. +Each client of the device connects by opening +.B /dev/draw/new +and reading 12 strings, each 11 characters wide followed by a blank: +the connection number +.RI ( n ), +the image id +.RI ( q.v. ) +of the display image (always zero), +the +channel format +of the image, +the +.BR min.x , +.BR min.y , +.BR max.x , +and +.B max.y +of the display image, +and the +.BR min.x , +.BR min.y , +.BR max.x , +and +.B max.y +of the clipping rectangle. +The channel format string is described in +.IR image (6), +and the other fields are decimal numbers. +.PP +The client can then open the directory +.BI /dev/draw/ n / +to access the +.BR ctl , +.BR data , +.ig +.BR colormap , +.. +and +.B refresh +files associated with the connection. +.PP +Via the +.B ctl +and +.B draw +files, the +.I draw +device provides access to +images and font caches +in its private storage, +as described in +.IR draw-intro (2). +Each image is identified by a 4-byte integer, its +.IR id . +.PP +Reading the +.B ctl +file yields 12 strings formatted as in +.BR /dev/draw/new , +but for the current image rather +than the display image. +The current image may be set by writing a +binary image id to the +.B ctl +file. +.PP +A process can write messages to +.B data +to allocate and free images, fonts, and subfonts; +read or write portions of the images; +and draw line segments and character +strings in the images. +All graphics requests are clipped to their images. +Some messages return a response to be recovered by +reading the +.B data +file. +.PP +The +.B draw +device provides three types of graphical resource: Images, Screens and Fonts. +Resource instances have an identification number. +Screen identifiers are global to the device. +All other identifiers are local to each client. +.PP +Image is the fundamental resource type on which all drawing primitives +are performed. +At client connection the physical display is represented by Image 0. +.PP +A Screen manages a set of (overlapping) Images, handling +Z-order and position manipulation and the refreshing of regions +uncovered by such operations. +When a Screen is created it is associated with an Image on which +to render itself. +New images can be associated with a screen when they are created; they +are then treated as windows on that screen. +Screens can be marked as +.IR public , +meaning that other clients can import their ID and create new windows +on them. +.PP +A Font is an image with associated character data. +The Font image provides the bitmap of all the characters in the +Font; the character data is used by the string command to render +characters from the image. +.SS "Command messages" +.PP +The format of messages written to +.B data +is a single letter +followed by binary parameters; +multibyte integers are transmitted with the low order byte first. +Points are two four-byte numbers: +.IR x , +.IR y . +Rectangles are four four-byte numbers: min +.IR x , +min +.IR y , +max +.IR x , +and max +.IR y . +Images, screens, and fonts have 32-bit identifiers. +In the discussion of the protocol below, +the distinction between identifier and actual image, screen, or font +is not made, so that +``the object +.IR id '' +should be interpreted as +``the object with identifier +.IR id ''. +The definitions of constants used in the description below can be found in +.BR /module/draw.m +or +.BR /include/draw.h . +.PP +The following requests are accepted by the +.B data +file. +The numbers in brackets give the length in bytes of the parameters. +.HP .5i +.B A +.IR id [4] +.IR imageid [4] +.IR fillid [4] +.IR public [1] +.br +Allocate a new +.B Screen +(see +.IR draw-display (2)) +with +screen identifier +.I id +using +backing store image +.IR imageid , +filling it initially +with data from image +.IR fillid . +If the +.I public +byte is non-zero, the screen can +be accessed from other processes +using the +.B publicscreen +interface. +.HP +.B b +.IR id [4] +.IR screenid [4] +.IR refresh [1] +.IR chan [4] +.IR repl [1] +.IR r [4*4] +.IR clipr [4*4] +.IR color [4] +.br +Allocate an image with a given +.I id +on the +screen named by +.IR screenid . +The image will have rectangle +.I r +and clipping rectangle +.IR clipr . +If +.I repl +is non-zero, the image's replicate +bit will be set (see +.IR draw (2)). +.IP +.I Refresh +specifies the method to be used to draw the window +when it is uncovered. +.B Refbackup +causes the server to maintain a backing store, +.B Refnone +does not refresh the image, +and +.B Refmesg +causes a message to be sent via +the +.B refresh +file +.RI ( q.v. ). +.IP +The image format is described by +.IR chan , +a binary version of the channel format string. +Specifically, the image format is the catenation of up to four +8-bit numbers, each describing a particular image channel. +Each of these 8-bit numbers contains a channel type in its +high nibble and a bit count in its low nibble. +The channel type is one of +.BR CRed , +.BR CGreen , +.BR CBlue , +.BR CGrey , +.BR CAlpha , +.BR CMap , +and +.BR CIgnore . +See +.IR image (6). +.IP +.I Color +is the catenation of four 8-bit numbers +specifying the red, green, blue, and alpha +channels of the color that the new image should +be initially filled with. +The red channel is in the highest 8 bits, and +the alpha in the lowest. +Note that color is always in this format, independent of +the image format. +.HP +.B c +.IR dstid [4] +.IR repl [1] +.IR clipr [4*4] +.br +Change the replicate bit and clipping rectangle of the +image +.IR dstid . +This overrides whatever settings were specified in +the allocate message. +.HP +.B d +.IR dstid [4] +.IR srcid [4] +.IR maskid [4] +.IR dstr [4*4] +.IR srcp [2*4] +.IR maskp [2*4] +.br +Use the +.B draw +operator to combine the rectangle +.I dstr +of +image +.I dstid +with a +rectangle of image +.IR srcid , +using a rectangle of image +.IR maskid +as an alpha mask to further control blending. +The three rectangles are congruent and aligned such that +the upper left corner +.I dstr +in image +.I dstid +corresponds to +the point +.I srcp +in image +.I srcid +and +the point +.I maskp +in image +.IR maskid . +See +.IR draw-image (2). +.HP +.B D +.IR debugon [1] +.br +If +.I debugon +is non-zero, enable debugging output. +If zero, disable it. +The meaning of ``debugging output'' is implementation dependent. +.HP +.B e +.IR dstid [4] +.IR srcid [4] +.IR c [2*4] +.IR a [4] +.IR b [4] +.IR thick [4] +.IR sp [2*4] +.IR alpha [4] +.IR phi [4] +.br +Draw an ellipse in image +.I dst +centered on the point +.I c +with horizontal and vertical semiaxes +.I a +and +.IR b . +The ellipse is drawn using the image +.IR src , +with +the point +.I sp +in +.I src +aligned with +.I c +in +.IR dst . +The ellipse is drawn with thickness +.RI 1+2× thick . +.IP +If the high bit of +.I alpha +is set, +only the arc of the ellipse from degree angles +.I alpha +to +.I phi +is drawn. +For the purposes of drawing the arc, +.I alpha +is treated as a signed 31-bit number +by ignoring its high bit. +.HP +.B E +.IR dstid [4] +.IR srcid [4] +.IR center [2*4] +.IR a [4] +.IR b [4] +.IR thick [4] +.IR sp [2*4] +.IR alpha [4] +.IR phi [4] +.br +Draws an ellipse or arc as the +.B e +message, but rather than outlining it, fills +the corresponding sector using the image +.IR srcid . +The +.I thick +field is ignored, but must be non-negative. +.HP +.B f +.IR id [4] +.br +Free the resources associated with the image +.IR id . +.HP +.B F +.IR id [4] +.br +Free the the screen with the specified +.IR id . +Windows on the screen must be freed separately. +.HP +.B i +.IR id [4] +.IR n [4] +.IR ascent [1] +.br +Treat the image +.I id +as a font cache of +.I n +character cells, each with +ascent +.IR ascent . +.HP +.B l +.IR cacheid [4] +.IR srcid [4] +.IR index [2] +.IR r [4*4] +.IR sp [2*4] +.IR left [1] +.IR width [1] +.br +Load a character into the font cache associated with image +.I cacheid +at cache position +.IR index . +The character data is drawn in rectangle +.I r +of the font cache image +and is fetched from +the congruent rectangle in image +.I srcid +with upper left corner +.IR sp . +.I Width +specifies the width of the character\(emthe spacing from this character to the next\(emwhile +.I left +specifies +the horizontal distance from the left side +of the character to the left side of the cache image. +The dimensions of the image of the character are defined by +.IR r . +.HP +.B L +.IR dstid [4] +.IR p0 [2*4] +.IR p1 [2*4] +.IR end0 [4] +.IR end1 [4] +.IR thick [4] +.IR srcid [4] +.IR sp [2*4] +.br +Draw a line of thickness +.RI 1+2× thick +in image +.I dstid +from point +.I p0 +to +.IR p1 . +The line is drawn using the image +.IR srcid , +translated so that point +.I sp +in +.I srcid +aligns with +.I p0 +in +.IR dstid . +The +.I end0 +and +.I end1 +fields specify whether the corresponding +line end should be a square, a disc, +or an arrow head. +See +.I line +in +.IR draw-image (2) +for more details. +.HP +.B N +.IR id [4] +.IR in [1] +.IR j [1] +.IR name [ j ] +.br +If +.I in +is non-zero, associate the image +.I id +with the string +.IR name . +If +.I in +is zero and +.I name +already corresponds to the +image +.IR id , +the association is deleted. +.HP +.B n +.IR id [4] +.IR j [1] +.IR name [ j ] +.br +Introduce the identifier +.I id +to correspond to the image named +by the string +.IR name . +.HP +.B o +.IR id [4] +.IR r.min [2*4] +.IR scr [2*4] +.br +Position the window +.I id +so that its upper left corner is at the +point +.I scr +on its screen. +Simultaneously change its internal (logical) coordinate system +so that the point +.I log +corresponds to the upper left corner of the window. +.HP +.B p +.IR dstid [4] +.IR n [2] +.IR end0 [4] +.IR end1 [4] +.IR thick [4] +.IR srcid [4] +.IR sp [2*4] +.IR dp [2*2*(n+1)] +.br +Draw a polygon of thickness +.RI 1+2× thick . +It is conceptually equivalent to a series of +.I n +line-drawing messages (see +.B L +above) +joining adjacent points in the list of points +.IR dp . +The source image +.I srcid +is translated so that the point +.I sp +in +.I srcid +aligns with the first point +in the list +.IR dp . +The polygon need not be closed: +.I end0 +and +.I end1 +specify the line endings for the first and +last point on the polygon. +All interior lines have rounded ends +to make smooth joins. +.HP +.B P +.IR dstid [4] +.IR n [2] +.IR wind [4] +.IR ignore [2*4] +.IR srcid [4] +.IR sp [2*4] +.IR dp [2*2*(n+1)] +.br +Draw a polygon as the +.B p +message, but +fill it rather than outlining it. +The winding rule parameter +.I wind +resolves ambiguities about what to fill if the polygon is self-intersecting. +If +.I wind +is +.BR ~0 , +a pixel is inside the polygon if the polygon's winding number about the point +is non-zero. +If +.I wind +is +.BR 1 , +a pixel is inside if the winding number is odd. +Complementary values (0 or ~1) cause outside pixels to be filled. +The meaning of other values is undefined. +The polygon is closed with a line if necessary. +.HP +.B r +.IR id [4] +.IR r [4*4] +.br +Cause the next read of the +.B data +file to return the image pixel data corresponding to the +rectangle +.I r +in image +.IR id . +.HP +.B s +.IR dstid [4] +.IR srcid [4] +.IR fontid [4] +.IR p [2*4] +.IR clipr [4*4] +.IR sp [2*4] +.IR n [2] +.IR n*(index [2]) +.br +Draw in the image +.I dstid +the text string specified by the +.I n +cache +.I indices +into font +.IR fontid , +starting with the upper left corner at point +.I p +in image +.IR dstid . +The image drawn is taken from image +.IR srcid , +translated to align +.I sp +in +.I srcid +with +.I dp +in +.IR dstid. +All drawing is confined to the clipping rectangle +.I clipr +in +.IR dstid . +.HP +.B x +.IR dstid [4] +.IR srcid [4] +.IR fontid [4] +.IR dp [2*4] +.IR clipr [4*4] +.IR sp [2*4] +.IR n [2] +.IR bgid [4] +.IR bp [2*4] +.IR n*(index [2]) +.br +Like the string drawing +.B s +command, but fill the background of each character +with pixels from image +.IR bgid . +The image +.I bgid +is translated so that the point +.I bp +aligns with the +point +.I dp +in +.IR dstid . +.HP +.B S +.IR id [4] +.IR chan [4] +Attach to the public screen with the specified +.IR id . +It is an error if the screen does not exist, is not public, or does not +have the channel descriptor +.I chan +for its associated image. +.HP +.B t +.IR top [1] +.IR n [2] +.IR n*id [4] +.br +Send +.I n +windows to the top (if +.I t +is non-zero) or bottom (if +.I t +is zero) of the window stack. +The window is specified by the list of +.I n +image +.IR id s +are moved as a group, maintaining their own order within the stack. +.HP +.B v +.br +Flush changes from a soft screen, if any, to the display buffer. +.HP +.B y +.IR id [4] +.IR r [4*4] +.IR buf [x*1] +.br +.ti -0.5i +.B Y +.IR id [4] +.IR r [4*4] +.IR buf [x*1] +.br +Replace the rectangle +.I r +of pixels in image +.I id +with the pixel data in +.IR buf . +The pixel data must be in the format dictated by +.IR id 's +image channel descriptor (see +.IR image (6)). +The +.B y +message uses uncompressed data, +while the +.B Y +message uses compressed data. +In either case, +it is an error to include more data than necessary. +.ig +.PP +Reading the +.B colormap +returns the system color map used on 8-bit displays. +Each color map entry consists of a single line containing +four space-separated decimal strings. +The first is an index into the map, and the remaining three are +the red, green, and blue values associated with that index. +The color map can be changed by writing entries in the +above format to +the +.B colormap +file. +Note that changing the system color map +does not change the color map used for +calculations involving +.B m8 +images, which is immutable. +.. +.PP +The +.B refresh +file is read-only. +As windows owned by the client are uncovered, +if they cannot be refreshed by the server (such as when they have +refresh functions associated with them), a message is made available +on the +.B refresh +file reporting what needs to be repainted by the client. +The message has five decimal integers formatted as in the +.B ctl +message: the image id of the window and the coordinates of the rectangle +that should be refreshed. +.SH SOURCE +.B /emu/port/devdraw.c +.br +.B /emu/*/win.c +.br +.B /os/port/devdraw.c +.br +.B /os/*/screen.c +.br +.B /libmemdraw +.SH SEE ALSO +.IR draw-intro (2), +.IR colour (6), +.IR image (6), +.IR font (6) +.SH DIAGNOSTICS +Most messages to +.B draw +can return errors; +these can be detected by a system call error +on the +.IR write (see +.IR sys-read (2)) +of the data containing the erroneous message. +The most common error is a failure to allocate +because of insufficient free resources. Most other errors occur +only when the protocol is mishandled by the application. +The error string (see +.IR sys-intro (2)) +will report details. +.SH BUGS +The +.B Refmesg +refresh method is not fully implemented. +.ig +.br +The +.B colormap +files only reference the system color map, and as +such should be called +.B /dev/colormap +rather than +.BI /dev/draw/ n /colormap\f1. +.. diff --git a/man/3/ds b/man/3/ds new file mode 100644 index 00000000..6d766698 --- /dev/null +++ b/man/3/ds @@ -0,0 +1,145 @@ +.TH DS 3 +.SH NAME +ds \- compound device subsystems +.SH SYNOPSIS +.nf +.B bind -b #k /dev + +.B /dev/ds +.B /dev/ds/ctl +.B /dev/ds/... +.fi +.SH DESCRIPTION +.I Ds +builds complex block storage subsystems out of simpler ones. +Inspired by the Plan 9 file server kernel's configuration strings, +it provides device mirroring, partitioning, interleaving, and catenation +for block-oriented file systems. +.PP +It serves a two-level directory. +The top level contains a single directory +.BR ds , +which contains a control file +.B ctl +and one file per configured device. +.PP +The control messages each introduce a new device, here named +.IR new . +The +.I file +arguments are interpreted in the name space of the writer. +.TP +.BI mirror " new files" \fR... +The device +.I new +corresponds to a RAID 1 mirroring of +.IR files . +Writes to +.BI new +are handled by sequentially writing to the +.I files +from right to left (the reverse of +of the order in the control message). +If any write fails, the write is aborted. +Reads from +.BI new +are handled by sequentially reading from the +.I files +from left to right until one succeeds. +The length of the mirror device is the minimum of the lengths of the +.IR files . +.TP +.BI part " new file offset length" +The device +.I new +corresponds to the +.I length +bytes starting at +.I offset +in +.IR file . +If +.IR offset + length +reaches past the end of +.IR file , +.I length +is silently reduced to fit. +.TP +.BI inter " new files" \fR... +The device +.I new +corresponds to the block interleaving of +.IR files ; +an 8192-byte block size is assumed. +.TP +.BI cat " name files" \fR... +The device +.I new +corresponds to the catenation of +.IR files . +.PD +.LP +If the variable +.B fsconfig +is set in +.IR plan9.ini (8) +then +.I ds +will read its configuration from the file +.B $fsconfig +on the first attach. +This is useful when the machine boots +from a local file server that uses +.IR fs . +.SH EXAMPLE +Mirror the two disks +.B /dev/sdC0/data +and +.B /dev/sdD0/data +as +.BR /dev/ds/m0 ; +similarly, mirror +.B /dev/sdC1/data +and +.B /dev/sdD1/data +as +.BR /dev/ds/m1 : +.IP +.EX +echo mirror m0 /dev/sdC0/data /dev/sdD0/data >/dev/ds/ctl +echo mirror m1 /dev/sdC1/data /dev/sdD1/data >/dev/ds/ctl +.EE +.LP +Interleave the two mirrored disks to create +.BR /dev/ds/data : +.IP +.EX +echo inter data /dev/ds/m0 /dev/ds/m1 >/dev/ds/ctl +.EE +.LP +Run +.IR kfs (4) +on the interleaved device: +.IP +.EX +disk/kfs -f /dev/ds/data +.EE +.LP +Save the configuration: +.IP +.EX +cp /dev/ds/ctl /dev/fd0disk +.EE +To load the configuration automatically at boot time, +add this to +.IR plan9.ini : +.IP +.EX +fsconfig=/dev/fd0disk +.EE +.SH "SEE ALSO" +.IR dossrv (4) +.SH SOURCE +.B /os/port/devds.c +.SH BUGS +Should be able to select block size for interleaved devices. diff --git a/man/3/dup b/man/3/dup new file mode 100644 index 00000000..034501dd --- /dev/null +++ b/man/3/dup @@ -0,0 +1,60 @@ +.TH DUP 3 +.SH NAME +dup \- dups of open files +.SH SYNOPSIS +.nf +.B bind #d /fd + +.B /fd/0 +.B /fd/0ctl +.B /fd/1 +.B /fd/1ctl +\&... +.fi +.SH DESCRIPTION +The +.I dup +device serves a one-level directory containing files whose +names are decimal numbers. +Each such file also has an associated control file. +A file of name +.I n +corresponds to open file descriptor +.I n +in the current process. +.PP +A +.IR sys-open (2) +of file +.I n +results in a file descriptor identical to +what would be returned from a system call +.BI sys->dup( n, +.BR -1) . +Note that the result is no longer a file in the +.I dup +device. +.PP +The +.I stat +operation returns information about the device file, not the open file it points to. +A stat of +.BI #d/ n +will contain +.I n +for the name, 0 for the length, and 400, 200, or 600 (octal) +for the mode, depending on whether the dup target is open +for reading, writing, or both. +.PP +A file of name +.IB n ctl +may be read to discover the properties of the associated file descriptor, in format identical to that of the +.B fd +file in +.IR prog (3). +.SH SEE ALSO +.IR sys-dup (2) +.SH SOURCE +.B /usr/inferno/emu/port/devdup.c +.br +.B /usr/inferno/os/port/devdup.c diff --git a/man/3/dynld b/man/3/dynld new file mode 100644 index 00000000..dbd31d8f --- /dev/null +++ b/man/3/dynld @@ -0,0 +1,75 @@ +.TH DYNLD 3 +.SH NAME +dynld \- load kernel module dynamically +.SH SYNOPSIS +.B bind -a #L /dev +.PP +.B /dev/dynld +.br +.B /dev/dynsyms +.SH DESCRIPTION +.I Dynld +serves a directory containing two files that control dynamic loading of modules. +When a module is loaded, +.IR dynld (10.2)), +checks the module's type against a type provided by the driver; +the types must match. +Currently the only supported module type is that of a device driver, +.B Dev +defined in +.IR dev (10.2)). +.PP +The control file +.B dynld +can only be opened by the host owner +(see +.IR eve (10.2)). +It accepts the following commands: +.TP +.BI "load dev" " name file \fR[\fP \fR[\fP tag \fR] dep ... ]\fP" +Load a module for device driver +.I name +from the given +.IR file . +The optional +.I tag +is typically the MD5 or SHA1 hash of the file's contents, to identify a particular version of the driver. +.TP +.BI "unload dev" " name \fR[\fP file \fR[\fP tag \fR] ]\fP" +Unload the device driver identified by the given +.IR name , +optionally qualified by the other parameters. +.PP +When read, +.B dynld +returns a list of the currently-loaded drivers, one per line, most recent first. +Each line contain: the module's device type +.BI # x +used in +.IR bind (1); +its kernel address; +its total text and data size in bytes; +its +.I name +when loaded; +the name of the +.I file +from which it was loaded; +and its +.IR tag . +.PP +.B Dynsyms +is a read-only text file that lists, one per line, +the symbols exported by the running kernel for use by modules it loads. +Each line contains: +the symbol's kernel address, +its type signature, +and its name. +.SH SOURCE +.B /os/port/devdynld.c +.SH SEE ALSO +.IR dynld (10.2), +.IR a.out (10.6), +.SH BUGS +.I Dynld +does not currently check that a driver is no longer in use before unloading it. diff --git a/man/3/eia b/man/3/eia new file mode 100644 index 00000000..2499d320 --- /dev/null +++ b/man/3/eia @@ -0,0 +1,136 @@ +.TH EIA 3 +.SH NAME +eia \- serial communication control +.SH SYNOPSIS +.nf +.B bind -a '#t' /dev + +.B /dev/eia0 +.B /dev/eia0ctl +.B /dev/eia0status +.B /dev/eia1 +.B /dev/eia1ctl +.B /dev/eia1status +\&... +.fi +.SH DESCRIPTION +.PP +The serial line device serves a one-level directory that gives access to the serial ports. +Each file set +.BI eia "n ..." +represents one serial port +and includes a data file +(eg, +.BR eia0 ), +a control file +(eg, +.BR eia0ctl ), +and a status file +(eg, +.BR eia0status ). +.PP +The +.B data +file can be read and written to access the corresponding serial port. +Reads will block until at least one character is available. +.PP +The +.B ctl +file accepts textual commands, via +.I write +(see +.IR sys-read (2)), +that control or condition +the serial port for subsequent IO: +.TP +.BI b n +Set the baud rate to +.IR n . +.TP +.BI c n +If +.I n +is non-zero, cause a hangup if the remote drops DCD. +.TP +.BI d n +Set DTR if +.I n +is non-zero; +otherwise clear it. +.TP +.BI e n +If +.I n +is non-zero, +cause a hangup if the remote drops DSR. +.TP +.B f +Flush the output queue. +.TP +.B h +Hangup both input and output queues. +.TP +.BI k n +Send a break lasting +.I n +milliseconds. +.TP +.BI l n +Set number of bits per byte to +.IR n . +Legal values are 5, 6, 7, or 8. +.TP +.BI m n +Obey modem CTS signal if +.I n +is non-zero; otherwise clear it. +.TP +.BI n n +Set the output queue to non-blocking, if +.I n +is non-zero; otherwise mark it as blocking (the default). +In non-blocking mode, if the output queue is full, new output is discarded +rather than block the writer until the queue drains. +.TP +.BI p c +Set parity to odd if +.I c +is +.BR o , +to even if +.I c +is +.BR e ; +otherwise set no parity. +.TP +.BI q n +Set the limit on input and output queues to +.IR n ; +both queues are initially set to 4k bytes. +.TP +.BI r n +Set RTS if +.I n +is non-zero; otherwise clear it. +.TP +.BI s n +Set number of stop bits to +.IR n . +Legal values are 1 or 2. +.TP +.BI x n +Enable XON/XOFF flow control if +.I n +is non-zero; otherwise disable it (the default). +.PP +Changes to port settings persist between a subsequent close and reopen. +.PP +The +.B status +file can be read for a report of the serial port status. +.SH SOURCE +.B /os/port/devns16552.c +.br +.B /os/*/devuart.c +.br +.B /os/*/devscc.c diff --git a/man/3/env b/man/3/env new file mode 100644 index 00000000..1d3ff79d --- /dev/null +++ b/man/3/env @@ -0,0 +1,48 @@ +.TH ENV 3 +.SH NAME +env \- environment device +.SH SYNOPSIS +.nf +.B bind #e /env + +.BI /env/ name +.fi +.SH DESCRIPTION +The environment device serves a one-level directory giving access to environment variables +and their values. +It is conventionally bound to +.BR /env . +The value of an environment variable +.I name +may be obtained by reading the file +.BI /env/ name. +If the file does not exist, the variable is unset and has the value nil. The +maximum length of a variable name is 127 bytes. +.PP +New environment variables are set by creating the corresponding file +in +.B /env +and writing the required value to that file. Similarly environment variables are destroyed (unset) by +removing the corresponding file. +.PP +Processes sharing an `environment group' see the same files and contents; +changes made by one process are seen by the others. +A process can insulate itself from further changes using the +.L FORKENV +option to +.IR sys-pctl (2), +which creates a new environment group that is a copy of the old, +but further changes in each are independent. +A new empty environment group is created by the +.L NEWENV +option to +.IR sys-pctl (2). +.SH SOURCE +.B /os/port/devenv.c +.br +.B /emu/port/devenv.c +.SH SEE ALSO +.IR env (1), +.IR sh (1), +.IR env (2), +.IR sys-pctl (2) diff --git a/man/3/ether b/man/3/ether new file mode 100644 index 00000000..3a8aa00c --- /dev/null +++ b/man/3/ether @@ -0,0 +1,134 @@ +.TH ETHER 3 +.SH NAME +ether \- Ethernet device +.SH SYNOPSIS +.nf +.BI "bind -a #l" n " /net" + +.BI /net/ether n /clone +.BI /net/ether n /[0-7] +.BI /net/ether n /[0-7]/data +.BI /net/ether n /[0-7]/ctl +.BI /net/ether n /[0-7]/stats +.BI /net/ether n /[0-7]/type +.BI /net/ether n /[0-7]/ifstats +.fi +.SH DESCRIPTION +The Ethernet device +.BI #l n +serves a three-level directory representing a physical Ethernet interface: +AMD LANCE, 3Com 3C509, 3Com 3C905, Intel 82557, and others. +If +.I n +is not given it is taken to be 0. +.PP +The top level directory +has a single directory named +.BI ether n, +where +.I n +is the interface number, starting from 0, +assigned in some platform-dependent way. +That directory contains a conversation directory for each of 8 Ethernet packet types, +and a +.B clone +file. +.PP +Opening the +.B clone +file returns a file descriptor open on the +.B ctl +file of an unused conversation directory. +Reading the +.B ctl +file returns a text +string representing the number of the +connection. +The connection is controlled by writing textual commands to the associated +.B ctl +file: +.TP +.BI connect " type" +Set the +.I type +of Ethernet packets received on the connection; the type is +expressed +as an integer constant +(in hexadecimal if it has a leading +.BR 0x , +octal if it has a leading +.BR 0 , +and otherwise decimal). +For instance, Ethernet packets carrying IP version 4 use type +.BR 0x800 . +The value +.B \-1 +stands for all types. +The value +.B \-2 +causes at most the first 64 bytes of all types of packets to be copied +to the conversation. +If several conversations are assigned the same packet type, +a copy of the packet is given to each. +.TP +.B promiscuous +Set the interface to capture all packets regardless of destination address. +An interface normally receives only packets whose +destination address is that of the interface or is the +broadcast address, +.BR ffffffffffff . +The interface remains promiscuous until the control file is +closed. +The extra packets are received only by conversations of the same type +as the incoming packet (or of type -1). +.TP +.BI addmulti " address" +Add the given MAC multicast +.I address +to the set of multicast addresses accepted by the interface. +.I Address +is a twelve digit MAC address in hexadecimal. +.TP +.BI remmulti " address" +Remove +.I address +from the set of multicast addresses accepted by the interface. +.PP +Incoming Ethernet packets are demultiplexed by destination address and +packet type and queued +for reading by the corresponding open connection(s). +Each read of the +.B data +file returns each packet in turn, including the Ethernet header. +A read will terminate at packet boundaries. +Each write to the +.B data +file causes a packet to be sent. +The Ethernet address of the interface is inserted into +the packet header as the source address. +.PP +Reading the +.B type +file returns the decimal value of the assigned Ethernet packet type. +.PP +Reading the +.B stats +file returns status information, the value +of counters, the `promiscuous' state, +and the Ethernet MAC address of the +interface. +.PP +Reading the +.B ifstats +file returns statistics and status information specific to a given +hardware interface. +.SH SOURCE +.B /os/port/devlance.c +.br +.B /os/port/netif.c +.br +.B /os/*/devether.c +.br +.B /os/*/ether*.c +.SH SEE ALSO +.IR ip (3) diff --git a/man/3/flash b/man/3/flash new file mode 100644 index 00000000..65acf528 --- /dev/null +++ b/man/3/flash @@ -0,0 +1,157 @@ +.TH FLASH 3 +.SH NAME +flash \- flash memory +.SH SYNOPSYS +.nf +.BI "bind -a #F" \fR[\fPn\fR]\fP " /dev" + +.B /dev/flash +.BI /dev/flash/ part +.BI /dev/flash/ part ctl +.fi +.SH DESCRIPTION +The flash memory device serves a two-level directory, +giving access to files representing part or all of a bank of flash memory. +A platform might have more than one bank of flash, numbered starting from 0. +The attach specifier +.I n +is a decimal integer that selects a particular bank of flash (default: 0). +Both NOR and NAND flash is supported. +For both types of flash, the driver gives a read/write/erase interface to the raw flash device, +which can impose constraints on operations beyond those imposed by the driver. +Other drivers such as +.IR ftl (3) +or +.IR logfs (3) +implement any higher-level format required, including ECC for NAND flash, for instance. +.PP +The top level directory contains a single directory named +.B flash +for bank 0, and +.BI flash n +for each other bank +.IR n . +It contains two files for each partition: +a data file +.I part +and an associated control file +.IB part ctl , +where +.I part +is the name of the partition. +Each partition represents a region of flash memory that starts and ends on a flash segment (erase unit) boundary. +The system initially creates a single standard partition +.B flash +representing the whole of flash memory, and the corresponding control file +.BR flashctl . +Other partitions can be created by writing to +.B flashctl +as described below. +.PP +The data file +.I part +provides read and write access to the bytes on the system's flash memory. +Bytes can be read and written on any byte boundary: +the interface hides any alignment restrictions. +A read returns the value of the bytes at the current file offset, where zero is the start of the partition. +A write reprograms the flash to the given byte values, at the current +file offset (relative to the start of the partition), using the physical +device's reprogramming algorithm. +An erased flash byte is logically +.B 16rFF +(regardless of the conventions of the physical flash device). +A write can change a bit with value 1 to a 0, +but cannot change a 0 bit to 1; +that can only be done by erasing one or more flash segments. +NAND flash typically has restrictions on the number of writes allowed to a page before requiring a block erase. +Reads and writes are unbuffered. +.PP +The control file +.BI part ctl +can be read and written. +A read returns several lines containing decimal and hexadecimal numbers +(separated by white space) +revealing the characteristics of memory within the partition. +The first line gives the +the manufacturer ID, the flash device ID, the memory width in bytes, and a string giving the flash type +(currently either +.B nor +or +.BR nand ). +Subsequent lines give characteristics of each group of erase units within the partition, +where the erase units within a group have the same properties. +Each line gives the start and end (as byte addresses) of the erase units in the region +that lie within the partition, followed by the size in bytes of each erase unit, which is followed +for NAND flash by the size in bytes of a page. +The sizes for NAND flash include the extra bytes per page typically used to hold an ECC and block status. +A write contains one of the following textual commands: +.TF erasexx +.TP +.BI add " name start end" +Create a new partition that ranges from +.I start +to +.I end +within the current partition. +Each value must be numeric (decimal, octal or hexadecimal) and a multiple of the erase unit size. +.I Name +must not be the name of an existing partition. +On success, new files +.I name +and +.IB name ctl +will appear in the parent +.B flash +directory. +.TP +.B erase all +Erase the whole flash partition, setting all bytes to +.BR 16rFF , +except those that are hardware write-protected. +.TP +.BI erase " offset" +Erase the segment that begins at the given +.I offset +within the partition, +setting all bytes to +.BR 16rFF , +except those that are hardware write-protected. +The +.I offset +is given in bytes, but must be a multiple +of the segment (erase unit) size. +.TP +.BR protectboot [ " off " ] +By default the system prevents erase unit 0 of the flash from being +erased or written, assuming it +contains the primary bootstrap. +Writing this command with parameter +.B off +removes that protection. +Writing +.B protectboot +with any other parameter (or none) restores the protection. +Note that a manufacturer might also have locked the flash in hardware, +and that protection must be removed in a device-dependent way. +.TP +.B sync +If the underlying device must buffer or cache (current devices do not), flush the buffer(s). +.PD +.PP +The syntax of all numbers is that of +.BR strtoul (10.2) ; +the default base is 10. +.SH SOURCE +.B /os/*/devflash.c +.br +.B /os/*/flash*.c +.SH SEE ALSO +.IR ftl (3) +.SH DIAGNOSTICS +A write will return an error if +an attempt is made to change a 0 bit to 1, +or if the flash memory fails to be programmed correctly. +.SH BUGS +The flash cannot be written if the kernel is executing directly from flash, +because the physical flash cannot be read during programming, +and the driver does not copy the programming code to DRAM. diff --git a/man/3/floppy b/man/3/floppy new file mode 100644 index 00000000..4a424571 --- /dev/null +++ b/man/3/floppy @@ -0,0 +1,52 @@ +.TH FLOPPY 3 +.SH NAME +floppy \- floppy disk interface +.SH SYNOPSIS +.nf +.B bind -a '#f' /dev + +.B /dev/fd0disk +.B /dev/fd0ctl +.B /dev/fd1disk +.B /dev/fd1ctl +.B /dev/fd2disk +.B /dev/fd2ctl +.B /dev/fd3disk +.B /dev/fd3ctl +.fi +.SH DESCRIPTION +.PP +The floppy disk interface serves a one-level directory giving access to up +to four floppy disk drives. +Each drive is represented by a data and control file. +There are no partitions. +.PP +Messages accepted by the +.B ctl +file include: +.TF format +.TP +.B eject +Eject the floppy, if possible. +.TP +.B reset +Reset the drive. +.TP +.BI format " type +Format the floppy. The +.I type +sets the density and +type of disk to be formatted; see +.IR format (8). +.PD +.PP +A read of the +.B ctl +file returns a string describing the form factor of the disk, one of +.BR 3½DD , +.BR 3½HD , +.BR 5¼DD , +or +.BR 5¼HD . +.SH SOURCE +.B /os/pc/devfloppy.c diff --git a/man/3/fpga b/man/3/fpga new file mode 100644 index 00000000..5396ab2a --- /dev/null +++ b/man/3/fpga @@ -0,0 +1,97 @@ +.TH FPGA 3 +.SH NAME +fpga \- interface to on-board FPGA +.SH SYNOPSIS +.B "bind -a #F /dev" +.PP +.B /dev/fpgaclk +.br +.B /dev/fpgactl +.br +.B /dev/fpgamemb +.br +.B /dev/fpgamemw +.br +.B /dev/fpgaprog +.br +.B /dev/fpgastatus +.SH DESCRIPTION +.I Fpga +allows configuration of an on-board FPGA (eg, the Altera Flex6000 on the Bright Star Engineering ip-Engine), +control of its clocks and environment, and raw access to any devices presented in the FPGA address space. +On booting, the FPGA subsystem is normally left powered down and the system's external clocks are not directed to +the processor's output pins, to conserve power if the subsystem is unused. +.PP +The control file +.B fpgactl +accepts the following requests: +.TF "power off" +.TP +.BI bclk " n" +Set BCLK output to +.I n +MHz, +where +.I n +must be a divisor of the system clock frequency (eg, of 48 if the system is running at 48 MHz). +.TP +.BI power +Power up the FPGA subsystem (that is automatically done when +.B fpgaprog +is accessed). +.TP +.B "power off" +Power down the FPGA subsystem. +.TP +.B reset +Reset the FPGA, forcing it into configuration mode (automatically done when +.B fpgaprog +is accessed). +.TP +.BI vclk " n m v r" +Program the clock synthesiser with the given parameters, and enable its output as VCLK. +.TP +.B "vclk off" +Disable output from the clock synthesiser. +.PD +.PP +The files +.B fpgamemb +and +.B fpgamemw +give 8-bit and 16-bit access respectively to the address space interpreted by the FPGA. +The file offset is the address read or written within that space; +offset and count must both be even for +.BR fpgamemw . +The interpretation of the data, including the data format and +whether byte or word access is required, is completely determined +by the program configured into the FPGA. +.PP +The write-only file +.B fpgaprog +configures the device. +A single write provides an FPGA configuration in raw binary format. +The FPGA subsystem is given power, the processor's clocks are made visible externally, and the +device is configured with the data written. +The write returns an error if configuration fails. +.PP +The read-only file +.B fpgastatus +contains a single line of text giving the state of the two status bits in the FPGA interface. +The word +.B config +appears if +.B CONFIG_DONE +is set, and +.B !config +otherwise; the word +.B status +appears if +.B nSTATUS +is set, and +.B !status +otherwise. +.SH SOURCE +.B /os/ipengine/devfpga.c +.SH SEE ALSO +.IR fpgaload (8) diff --git a/man/3/fs b/man/3/fs new file mode 100644 index 00000000..6bcfa6e2 --- /dev/null +++ b/man/3/fs @@ -0,0 +1,114 @@ +.TH FS 3 emu +.SH NAME +fs \- host file system interface +.SH SYNOPSIS +.EX +bind #U\fIspec\fP / + +sys->bind("#U\fIspec\fP", "/", Sys->MAFTER|Sys->MCREATE); +.EE +.SH DESCRIPTION +.I Fs +provides an interface to the host file system when running +.IR emu (1). +The device is automatically bound to the root of the Inferno namespace when +.I emu +starts. +.I Fs +maps filenames from the Inferno namespace to the real host filesystem +namespace. The mapping is determined by the host system directory that +.I emu +serves (see the description of the +.B -r +option in +.IR emu (1)). +.PP +The plain name +.B #U +always refers to the root of the Inferno tree within the host file system. +An optional +.I spec +string can select a different tree using conventions peculiar to the host system type. +Currently, on Unix and Plan 9, a +.I spec +of +.B * +(ie, +.BR #U* ) +refers to the root of the host system; +on Windows, the +.I spec +can give a device letter (eg, +.BR #Uc: ) +to refer to the Windows tree on that device. +.PP +When there is nothing but +.IR root (3) +in the name space, the device can only be bound from Limbo using +.IR sys-bind (2) +as shown above, since there is nothing in the name space +to support either +.IR bind (1) +or +.IR newns (2). +It can later be rebound elsewhere in the name space using +.IR bind (1). +.PP +.I Fs +provides only an approximation to the +file ownership and permissions checking defined in +.IR intro (5) +and other entries in this manual. +.IR Emu (1) +typically runs as the user that starts it, and that user will own all newly-created +files and directories, and that user's host system access rights control access +to any file. +Other details are specific to the host system, as given below. +.SS Unix +When checking owner, group and other permissions, the intent in Inferno is that +each is tried in turn, in that order. +Unix checks just the first that applies, so that if group +permission disallows access but other allows it, the access is still denied. +If +.IR emu (1) +is run as the super-user, Inferno's rules for ownership and permission checking are enforced by +.I fs +itself; otherwise, Unix's permission checking prevails. +.PP +On MacOS X, file names might be case insensitive, depending on file system settings. +.SS FAT file system (Windows9x and Windows/NT) +The values of +.B uid +and +.B gid +are +.BR Everyone . +.PP +Files and directories always have read and execute permission, +which cannot be changed. +Files without write permission cannot be removed. +.SS NTFS file system (Windows/NT, 2000, XP) +Permissions for read, write and execute operates as described in +.IR sys-stat (2). +.IR Emu (1) +attempts to maintain a limited +but consistent map between Inferno and NT worlds, specifically between Inferno names +and NT security IDs. +Special NT group +.B Everyone +represents `other' for file permissions. +The Inferno +.B uid +is the file owner under NT; +the Inferno +.B gid +reported is the first user in the file's ACL +that is neither the owner nor +.BR Everyone ; +failing that, the +.B gid +is the file's owner. +.SH SOURCE +.B /emu/*/devfs.c +.br +.B /emu/port/devfs-posix.c diff --git a/man/3/ftl b/man/3/ftl new file mode 100644 index 00000000..ec3856c4 --- /dev/null +++ b/man/3/ftl @@ -0,0 +1,185 @@ +.TH FTL 3 +.SH NAME +ftl \- flash translation layer +.SH SYNOPSIS +.EX +.B bind -a '#X' /dev + +.B /dev/ftlctl +.B /dev/ftldata +.EE +.SH DESCRIPTION +.PP +The flash translation layer device +provides the interface for management of +rewritable blocks on a flash memory device. +Flash memory differs from normal disc +or memory in that it is organised in large blocks (erase units), +typically 64k bytes or more in size, +and although writes can reset bits they cannot set them; +instead an entire erase unit must be erased at once. +These properties make it unsuitable for direct use by +a conventional block-oriented file system. +The flash translation layer compensates by +implementing a logical to physical +mapping that allows 512-byte blocks to be read or written +in the same way as rewritable disc blocks. +The translation layer manages the details of +block remapping, copying erase units to reclaim obsolete physical versions +of rewritten logical blocks, erase unit load wearing, etc. +.PP +The flash translation device serves a one-level directory, +giving access to two files. +The control file +.B ftlctl +receives commands to format a flash device +or initialise access to an already formatted device. +.B Ftldata +is the data file, giving access to the logical blocks on the formatted flash. +For example, it can be given to +.IR kfs (3) +for use as a file system. +The length of the +.B ftldata +file as returned by +.B Sys->stat +shows the total logical (formatted) space available for +use by the driver's clients. +.PP +The target flash device is identified to this driver +by name +(eg, +.BR #F/flash ) +in a control message defined below. +The flash device must have the following properties: +.IP 1. +It must have a corresponding control file +.IB device ctl +(eg, +.BR #F/flashctl ), +which must be writable. +.IP 2. +The flash control file must accept a command of the +form +.DS +.BI erase " offset" +.DE +which must cause the flash erase unit +starting at the given byte +.I offset +to be erased. +.IP 3. +The device +must allow reads and writes of any number of bytes +on arbitrary byte boundaries (file offset). +(In other words, the flash driver must hide alignment restrictions.) +.IP 4. +A write request +must allow previously-written regions to be updated provided +the new data does not change any 0 bit to 1 +(ie, writes can clear bits to 0 but will not change any 0 bits to 1). +.PP +The following control messages can be written to +.BR ftlctl : +.TP +.BI format " device [ offset [ n [ erasesize ] ] ]" +.br +Erase +.I n +bytes of +the given flash +.I device +starting at the given byte +.IR offset , +and format the erased region +for use by the flash translation layer. Omitting the +optional parameters is equivalent to setting them to +.BR 0xffffffff . +.I Erasesize +is the number of bytes in the flash device's erase unit; setting +to +.B 0xffffffff +takes the value from the underlying device. +If +.I offset +is +.BR 0xffffffff , +then the underlying device is searched from the +start for an existing flash translation layer header, and the remaining +parameters are taken from there. If +.I n +is +.BR 0xffffffff , +then everywhere from +.I offset +to the end of the +underlying device is erased. Otherwise, +.I offset +and +.I n +must be multiples of +.IR erasesize . +Make the newly formatted device's contents available on +.BR ftldata . +.TP +.BI init " device [ offset [ n [ erasesize ] ] ]" +.br +Make available on +.B ftldata +the logical blocks (with existing content) of a previously-formatted +.IR device . +The parameters are as defined for the +.B format +command, above. +.TP +.BI part " name start [ limit ]" +.br +Add a partition. This creates a new data file +.BI ftl name +with similar properties to +.BR ftldata , +but which constrains the range of the formatted data accessed to +begin at +.IR start , +and end at +.IR limit-1 , +or the last byte of the formatted data if +.I limit +is omitted. +.TP +.BI delpart " name" +.br +Removes a partition. +.TP +.B detach +Stop flash translation on +the corresponding flash device, +and close it. +An error results instead if +.B ftldata +is open. +.TP +.B scavenge +Force scavenging of reusable blocks (mainly intended to be used when +testing flash or debugging the driver). +.TP +.BI trace " n" +.br +Trace the actions of the flash translation driver. +No tracing is done if +.I n +is zero. +Larger values of +.I n +increase the level of detail. +.SH SOURCE +.B /os/*/devftl.c +.SH SEE ALSO +.IR flash (3) +.SH BUGS +Reads and writes of +.B ftldata +must be multiples of 512 bytes in length +and start on a 512-byte block boundary. +.br +Only one flash device can be active. diff --git a/man/3/gpio b/man/3/gpio new file mode 100644 index 00000000..73b26a48 --- /dev/null +++ b/man/3/gpio @@ -0,0 +1,94 @@ +.TH GPIO 3 SA1100 +.SH NAME +gpio \- access to GPIO registers +.SH SYNOPSIS +.B bind -a +.B #G +.B /dev +.PP +.nf +.B /dev/gpioclear +.B /dev/gpioctl +.B /dev/gpioedge +.B /dev/gpioset +.B /dev/gpiostatus +.fi +.SH DESCRIPTION +.PP +The GPIO interface +serves a one-level directory with five files +that give access to the GPIO registers in the SA1100. +See the SA1100 handbook for details of the function +of the various registers. +.PP +The control file +.B gpioctl +accepts commands to set individual bits in the edge detect +registers. +Each control message has three space-separated fields: +.IP +.EX +.I "reg pin value" +.EE +.LP +where +.I reg +is a single character +denoting a register, +.I pin +a bit within it, and +.I val +the value (0 or 1) for that bit. +Valid choices for +.I reg +are: +.B d +(GPDR), +.B r +(GRER), +.B f +(GFER), +and +.B a +(GAFR). +For example, the control message +.IP +.EX +d 10 1 +.EE +.LP +sets bit 10 (following the handbook's bit-numbering conventions) in the GPIO pin +direction register GPDR. +.PP +The read-only file +.B gpiostatus +shows the names and values (in hexadecimal) of all GPIO registers. +.PP +The remaining data files +allow bits to be read by +.B Sys->read +requests +and set by +.B Sys->write +requests. +When read, each file returns the value of a given +register as a single 8 digit hexadecimal number: +.B gpioset +and +.B gpioclear +both give the value of the level register, GPLR; +and +.B gpioedge +gives the value of the edge dectect register, GEDR. +Each write request +should present a single number in textual form, which +is assumed to be hexadecimal by default. +The value is written to a GPIO register: +.B gpioset +corresponds to GPSR, +.B gpioclear +corresponds to GPCR, and +.B gpioedge +corresponds to GEDR. +.SH SOURCE +.B /os/sa1100/devgpio.c diff --git a/man/3/i2c b/man/3/i2c new file mode 100644 index 00000000..c321ee02 --- /dev/null +++ b/man/3/i2c @@ -0,0 +1,87 @@ +.TH I2C 3 +.SH NAME +i2c \- basic I2C interface +.SH SYNOPSIS +.B bind -a +.BI #J n +.B /dev +.PP +.BI /dev/i2c. n .ctl +. br +.BI /dev/i2c. n .data +.fi +.SH DESCRIPTION +.I I2c +serves a one-level directory with two files +that give access to the target device with address +.I n +(given in hexadecimal) +on the system's I2C bus. +.I N +is usually determined by the I2C device manufacturer. +I2C gives address 0 special meaning as the `general call' address. +See an I2C specification for details. +.PP +The control file +.BI i2c. n .ctl +accepts commands to set the valid address range and +subaddressing mode for the corresponding data file. +The following control messages can be written to it: +.TP +.B a10 +Force 10-bit addressing instead of 7-bit addressing. +Otherwise 10-bit addressing is used only if the device address +.I n +is bigger than 255. +.TP +.BI size " nbytes" +.br +Set the logical size of the target device to +.IR nbytes . +(By default when opened, it is 256 bytes, enough for most small I2C devices.) +IO requests will be kept within this limit. +This value is also returned by +.B Sys->stat +as the length of the data file. +.TP +.BI subaddress " \fR[\fP n \fR]\fP" +.br +Cause subsequent reads and writes +on the data file to use I2C subaddressing +with +.I n +byte subaddresses (default: 1 byte). +.I N +must be no larger than 4. +The target device must support subaddressing. +By default, the device is not subaddressed. +Setting +.I n +to zero switches off subaddressing. +.PP +When read, +the control file displays the current settings. +.PP +The data file +.BI i2c. n .data +can be read or written to +exchange data with the slave device with address +.I n +(where +.I n +is given in hexadecimal). +Each write request transmits the given data +to the device. +Each read request sends a receive +request to the device and returns the resulting data. +If the I2C target is subaddressed, the current file offset +is used as the subaddress; +otherwise the file offset is ignored, and the device typically starts at 0 for each transfer request. +Read and write requests are trimmed to the declared +size of the device. +.SH SOURCE +.B /os/port/devi2c.c +.br +.B /os/*/i2c.c +.br +.B /os/cerf405/iic.c diff --git a/man/3/i82365 b/man/3/i82365 new file mode 100644 index 00000000..e1ee6c52 --- /dev/null +++ b/man/3/i82365 @@ -0,0 +1,41 @@ +.TH I82365 3 +.SH NAME +i82365 \- Personal Computer Memory Card Interface Association (PCMCIA) device +.SH SYNOPSIS +.nf +.B bind -a #y /dev + +.B /dev/pcm0attr +.B /dev/pcm0ctl +.B /dev/pcm0mem +.B /dev/pcm1attr +.B /dev/pcm1ctl +.B /dev/pcm1mem +.fi +.SH DESCRIPTION +The +.I i82365 +driver provides an interface to an Intel +82365-compatible PCMCIA interface chip. +This chip supports up to 2 PCMCIA slots, 0 +and 1. +Reading +.B pcm[01]attr +returns the contents of attribute memory. +Reading or writing +.B pcm[01]mem +reads or writes RAM on the card. +Reading +.B pcm[01]ctl +returns the card's status. +.PP +This driver must be included to use PCMCIA +devices such as the NE4100 Ethernet card. +The individual card drivers make calls to routines +in the PCMCIA driver. +.SH SOURCE +.B /os/pc/devi82365.c +.SH "SEE ALSO" +.IR plan9.ini (10.8) +.SH BUGS +There is no driver for the Databook PCMCIA interface chip. diff --git a/man/3/indir b/man/3/indir new file mode 100644 index 00000000..04e6386b --- /dev/null +++ b/man/3/indir @@ -0,0 +1,81 @@ +.TH INDIR 3 +.SH NAME +indir \- attach to device indirectly by name +.SH SYNOPSIS +.BI "bind #*" name +[\c +.BI ! spec\c +] +.I " dir" +.SH DESCRIPTION +.I Indir +allows any other device to be referred to by its name instead of its perhaps arbitrary single character type; +.I indir +itself has the type character +.RB ` * '. +It has no name space of its own. +On attach (see +.IR attach (5)) +.I indir +interprets its device specifier string as the +.I name +of a device to which it should attach, optionally followed by specifier +.I spec +for that device, separated from the +.I name +by an exclamation mark. +Attaching to +.I indir +(eg, by +.IR sys-bind (2)), +effectively attaches to the device with the given +.I name +and +.IR spec , +and all subsequent operations in the resulting name space access that +device, not +.I indir +itself. +.PP +For example, to access +.IR cap (3), +one could write: +.IP +.B "bind -a '#*cap' /dev" +.PP +The following commands both list the second instance of +.IR ether (3), +first directly, then using +.IR indir : +.IP +.B "ls '#l1'" +.br +.B "ls '#*ether!1'" +.PP +The file +.B /dev/drivers +(see +.IR cons (3)) +lists the names of currently configured devices. +.SS Credit +Invented by Bruce Ellis for Lucent's internal Research Inferno to help name dynamically-loaded device drivers. +This is a re-implementation. +.SH SOURCE +.B /emu/port/devindir.c +.br +.B /os/port/devindir.c +.SH SEE ALSO +.IR bind (1), +.IR sys-bind (2), +.IR cons (3) +.SH DIAGNOSTICS +If +.I name +is not configured, +.I indir +returns a suitable diagnostic in the error string. +.SH BUGS +Arguably the kernel +could simply look up the +.I name +itself. diff --git a/man/3/ip b/man/3/ip new file mode 100644 index 00000000..e5318691 --- /dev/null +++ b/man/3/ip @@ -0,0 +1,944 @@ +.TH IP 3 +.SH NAME +ip \- network protocols over IP +.SH SYNOPSIS +.nf +.B bind -a #I\f1[\f5\f2ifn\f1]\f5 /net + +.B /net/arp +.B /net/bootp +.B /net/iproute +.B /net/ipselftab +.B /net/iprouter +.B /net/log + +.B /net/ipifc/clone +.B /net/ipifc/stats +.BI /net/ipifc/ n +.BI /net/ipifc/ n /data +.BI /net/ipifc/ n /ctl +.BI /net/ipifc/ n /local +.BI /net/ipifc/ n /status + +.BI /net/ proto /clone +.BI /net/ proto /stats +.BI /net/ proto / n +.BI /net/ proto / n /ctl +.BI /net/ proto / n /data +.BI /net/ proto / n /err +.BI /net/ proto / n /local +.BI /net/ proto / n /remote +.BI /net/ proto / n /status +.BI /net/ proto / n /listen +\&... +.fi +.SH DESCRIPTION +The IP device serves a directory representing a self-contained +collection of IP interfaces. +There may be several instances, identified by the decimal interface number +.IR ifn , +that follows the +.B #I +device name; +.B #I0 +is assumed by default. +Each instance +has a disjoint collection of IP interfaces, routes and address resolution maps. +A physical or virtual device, or +.IR medium , +that produces IP packets is associated +with a logical IP network using the mechanisms described under +.I "Physical and logical interfaces" +below. +Commonly all IP media on a host are assigned to a single +instance of +.BR #I , +which is conventionally bound to +.BR /net , +but other configurations are possible: interfaces might be assigned +to different device instances forming separate +logical IP networks +to partition networks in firewall or +gateway applications. +.PP +Hosted Inferno provides a subset of the interface described here that gives +to the TCP/IP and UDP/IP of the host system's own IP subsystem. +See +.IR "Hosted interfaces" +below for a summary of the differences. +.SS Protocols +Within each instance, +the IP device provides +an interface to each IP protocol configured into the system, such as TCP/IP or UDP/IP. +.PP +Each of the protocols is served by the IP device, which represents a +connection by a set of device files. +The top level directory, +.I proto +in the +.SM SYNOPSIS +above, +is named after a protocol (eg, +.BR tcp , +.BR il , +.BR udp ) +and contains a +.B clone +file, a +.B stats +file, +and subdirectories numbered from zero to the number of connections +configured for this protocol. +.PP +The read-only +.B stats +file contains protocol-specific statistics as one or more lines of text. +There is no particular format, but the values are often a superset +of those required by the SNMP MIB. +.PP +Opening the +.B clone +file reserves a connection, represented by +one of the numbered subdirectories. The resulting file descriptor +will be open on the control file, +.BR ctl , +of the newly allocated connection. +Reading the +.B ctl +file returns a text +string representing the number of the +connection. +Connections may be used either to listen for incoming calls +or to initiate calls to other machines. +.PP +A connection is controlled by writing text strings to the associated +.B ctl +file. +After a connection has been established data may be read from +and written to the data file. +.PP +Before sending data, remote and local addresses must be set for the connection. +For outgoing calls the local port number will be allocated randomly if none is set. +Addresses are set by writing control messages to the +.B ctl +file of the connection. +The connection is not established until the data file is opened. +There are two models depending on the nature of the protocol. +For connection-oriented protocols, the process will block on open +until the remote host has acknowledged the connection, +either accepting it, causing a successful return from open, +or rejecting it, causing open to return an appropriate error. +For connectionless protocols, the open always succeeds; +the `connect' request sets local parameters for the source and destination fields +for use by subsequent read and write requests. +.PP +The following control messages are provided by this interface +to all protocols. +A particular protocol can provide additional commands, or +change the interpretation or even syntax of those below, +as described in the manual page for that protocol. +The description below shows +the standard commands with the default argument syntax and interpretation: +.TP +.BI connect\ ipaddress ! port "[!r]\ [\f2lport\f5]" +Set the remote IP address and port number for the connection. +If the +.B r +flag +is supplied and the optional local port +.I lport +has not been specified the system will allocate +a restricted port number (between 600 and 1024) for the connection to allow communication +with Unix machines' +.B login +and +.B exec +services. +.TP +.BI "announce\ [" ipaddress !] port +Set the local port +number to +.I port +and accept calls to that port. +.I Port +is a decimal port number or +.LR * . +If +.I port +is zero, assign a port number +(the one assigned can be read from the +.B local +address file). +If +.I port +is +.LR * , +accept +calls for any port that no process has explicitly announced. +If the optional +.I ipaddress +is given, set the local IP address for the connection +to that address, and accept only those incoming calls to +.I port +that are addressed to +.IR ipaddress . +.B Announce +fails if the connection is already announced or connected. +.TP +.BI bind\ port +.I Port +is a decimal port number or +.LR * . +Set the local port number to +.IR port . +This request exists to support emulation of +of BSD sockets and is otherwise neither needed nor used in Inferno. +.TP +.BI tos " \f1[\f2 n \f1]\f2" +Set the type-of-service value in outgooing packets to +.I n +(default: 0). +.TP +.BI ttl " \f1[\f2 n \f1]\f2" +Set the time-to-live (TTL) value in packets transmitted on this conversation +to +.I n +(default: 255). +.PP +Port numbers must be in the range 1 to 32767. +.PP +Several read-only files report the status of a +connection. +The +.B remote +and +.B local +files contain the IP address and port number for the remote and local side of the +connection. +The +.B status +file contains protocol-dependent information to help debug network connections. +The first word on the first line gives the status of the +connection. +.PP +Having announced, a process may accept incoming connections by calling +.B open +on the +.B listen +file. +The +.B open +will block until a new connection request arrives; +it will then +return an open file descriptor that points to the control file of the +newly accepted connection. +Repeating this procedure will accept all calls for the +given protocol. +.PP +In general it should not be necessary to use the file system interface to the +networks. +The +.BR dial , +.BR announce , +and +.BR listen +functions described in +.IR sys-dial (2) +perform the necessary I/O to establish and +manipulate network connections. +.SS TCP protocol +The TCP protocol is the standard Internet +protocol for reliable stream communication; it does not preserve +read/write +boundaries. +.PP +A connection is controlled by writing text strings to the associated +.B ctl +file. +After a connection has been established data may be read from +and written to the data file. +The TCP protocol provides a stream connection that does not preserve +read/write +boundaries. +.PP +For outgoing calls the local port number will be allocated randomly if none is set. +Addresses are set by writing control messages to the +.B ctl +file of the connection. +The connection is not established until the data file is opened. +For TCP the +process will block until the remote host has acknowledged the connection. +.PP +As well as the standard control messages above, +TCP accepts the following: +.TP +.BI hangup +Send a TCP reset (RST) to the remote side and end the conversation, +without waiting for untransmitted data to be acknowledged, +unlike a normal close of the device. +.TP +.BI keepalive\ [ "n" ] +Enable `keep alive' +mode: +if no traffic crosses the link within a given period, send a +packet to check that the remote party is still there, and remind +it that the local connection is still live. +The optional value +.I n +gives the keep-alive time in milliseconds (default: 120000). +.PP +The +.B status +file has many lines, each containing a labelled number, giving the values +of parameters and statistics such as: +maximum allowed connections, outgoing calls, incoming calls, established but later reset, +active calls, input segments, output segments, retransmitted segments, retransmitted timeouts, +input errors, transmitted reset. +.SS UDP protocol +.PP +UDP provides the standard Internet +protocol for unreliable datagram +communication. +.PP +UDP opens always succeed. +Before sending data, remote and local addresses must be set for the connection. +Alternatively, the following special control requests can be used: +.TP +.B headers +Set the connection to use an address header with IPv6 addressing +on reads and writes of the data file, +allowing a single connection to send datagrams to converse with +many different destination addresses and ports. +The 52 byte binary header appears before the data +read or written. +It contains: remote IP address, local IP address, interface IP address, remote port, and local port. +The IP addresses are 16 bytes each in IPv6 format, and +the port addresses are 2 bytes each, all written in network (big-endian) order. +On reads, the header gives the values from the incoming datagram, +except that if the remote used a multicast destination address, the IP address +of the receiving interface is substituted. +On writes, the header provides the destination for the resulting datagram, +and if the local IP address corresponds to a valid local unicast interface, +that address is used, otherwise the IP address of the transmitting interface +is substituted. +.TP +.B oldheaders +Set the connection to use an address header with IPv6 addressing +on reads and writes of the data file, +allowing a single connection to send datagrams to converse with +many different destination addresses and ports. +The 36 byte binary header appears before the data +read or written. +It contains: remote IP address, local IP address, remote port, and local port. +The IP addresses are 16 bytes each in IPv6 format, +the port addresses are 2 bytes each, all written in network (big-endian) order. +On reads, the header gives the values from the incoming datagram, +except that if the remote used a multicast destination address, the IP address +of the receiving interface is substituted. +On writes, the header provides the destination for the resulting datagram, +and if the local IP address corresponds to a valid local unicast interface, +that address is used, otherwise the IP address of the transmitting interface +is substituted. +.TP +.B headers4 +Set the connection to use an address header with IPv4 addresses +on reads and writes of the data file, +allowing a single connection to send datagrams to converse with +many different destination addresses and ports. +The 12 byte binary header appears before the data +read or written. +It contains: remote IP address, local IP address, remote port, and local port. +The IP addresses are 4 bytes each, +the port addresses are 2 bytes each, all written in network (big-endian) order. +On reads, the header gives the values from the incoming datagram. +On writes, the header provides the destination for the resulting datagram. +This mode is obsolete and destined for oblivion. +.PP +A read of less than +the size of the datagram will cause the entire datagram to be consumed. +Each write to the data file will send a single datagram on the network. +.PP +In replies, in connection-oriented mode, if the remote address +has not been set, the first arriving packet sets the following +based on the source of the incoming datagram: +the remote address and port for the conversation, +and the local address is set to the destination address in the +datagram unless that is a multicast address, and then the address +of the receiving interface is used. +.PP +If a conversation is in +.B headers +mode, only the local port is relevant. +.PP +Connection-oriented UDP is hungup if an ICMP error (eg, host or port unreachable, +or time exceeded) arrives with matching port. +.PP +The +.I udp +.B status +file contains four lines, each containing a labelled number counting an event: +input datagrams, datagrams on unannounced ports, datagrams with wrong checksum, and output datagrams. +.SS IL Protocol +IL provides a reliable point-to-point datagram service for communication between Plan 9 and +native Inferno machines. +Each read and write transfers a single datagram, as for UDP. +The datagrams are delivered reliably and in order. +Conversations are addressed and established as for TCP. +.SS Routing +.PP +The +.B iproute +file can be read and written. +When read, it returns the contents of the IP routing tables, +one line per entry, +with six fields giving the +destination host or network address, address mask, +gateway address, route type, tag (see below), and the number of the +.B ipifc +interface owning the route +(or +.RB ` - ' +if none). +The route type is up to four characters: +.B 4 +or +.B 6 +(IPv4 or IPv6 route); +.B i +(route is interface); +one of +.B u +(unicast), +.B b +(broadcast), +or +.B m +(multicast); +and lastly +.B p +if the route is point-to-point. +.PP +Commands can also be written to control the routing: +.TP +.BI add " ip mask gw \f1[\f2 tag \f1]\f2" +Add a route via the gateway identified by IP address +.I gw +to the address specified by +.I ip +and subnet mask +.IR mask . +Tag the resulting table entry with the +.I tag +provided, or the current +.I tag +(see +.B tag +below), +or the tag +.BR none . +.TP +.BI flush " \f1[\f2 tag \f1]\f2" +Remove all routes with the given +.I tag +that do not correspond to a local interface. +If +.I tag +is not given, flush all routes. +.TP +.BI remove " ip mask" +Remove routes to the given address. +.TP +.BI tag " tag" +Tag the routes generated by writes on the current file descriptor with +the given +.IR tag +of up to 4 characters. +The default is +.BR none , +set when +.B iproute +is opened. +.PP +The +.B ipselftab +file summarises the addresses and routes that refer to the local host. +It gives an address, the number of logical interfaces, and the interface type +in the same form as the route type of +.BR iproute . +.PP +The +.B iprouter +file is provided for use by a user-level application acting as an IP gateway. +It is effective only when the kernel-level gateway is not enabled +(see the +.B iprouting +interface control request below). +Once opened, packets that are not addressed to a +local address can be read from this device. +The packet contents are preceded by a 16 byte binary header that +gives the IPv6 address of the local interface that received the packet. +.SS Bootstrap +.PP +The read-only +.B bootp +file contains the results of the last BOOTP +request transmitted on any interface (see +.I "Physical and logical interfaces" +below) +as several lines of text, +with two fields each. +The first field names an entity and the second field gives its value in IPv4 address format. +The current entities are: +.IP +.RS +.TF ipaddr +.TP +.B auip +Authentication server address +.TP +.B fsip +File server address +.TP +.B gwip +Address of an IP gateway out of this (sub)net. +.TP +.B ipaddr +Local IP address +.TP +.B ipmask +Subnet mask for the local IP address +.RE +.PD +.PP +If any value is unknown (no reply to BOOTP, or value unspecified), +the value will be zero, represented as +.BR 0.0.0.0 . +.SS Address resolution +The +.B arp +file can be read and written. +When read, +it returns the contents of the current ARP cache as a sequence of lines, +one per map entry, giving +type, state, IP address and corresponding MAC address. +Several textual commands can be written to it: +.TP +.BI add " \f1[\f2 medium \f1]\f2 ip mac" +Add a mapping from IP address +.I ip +to the given +.I mac +address (a sequence of bytes in hexadecimal) +on the given +.IR medium . +It must support address resolution (eg, Ethernet). +If the +.I medium +is not specified, find the one associated with a route to +.I ip +(which must be IPv4). +.TP +.B flush +Clear the cache. +.SS Logging +.PP +The +.B log +file provides protocol tracing and debugging data. +While the file is held open, the system +saves, in a small circular buffer, error messages logged by selected protocols. +When read, it returns data not previously read, +blocking until there is data to read. +The following commands can be written to determine what is logged: +.TP +.BI set " proto ..." +Enable logging of messages from each source +.IR proto , +one or more of: +.BR ppp , +.BR ip , +.BR fs , +.BR tcp , +.BR il , +.BR icmp , +.BR udp , +.BR compress , +.BR ilmsg , +.BR gre , +.BR tcpmsg , +.BR udpmsg , +.BR ipmsg +and +.BR esp . +.TP +.BI clear " proto ..." +Disable logging of messages from the given sources. +.SS Physical and logical interfaces +The configuration of the physical and logical IP interfaces +in a given instance of +.B #I +uses +a virtual protocol +.B ipifc +within that instance, +that adds, controls and removes +IP interfaces. +It is represented by the protocol directory +.BR ipifc . +Each connection corresponds to an interface to a physical or virtual medium on +which IP packets can be sent and received. +It has a set of associated values: +minimum and maximum transfer unit, +MAC address, and a set of logical IP interfaces. +Each logical IP interface has local and remote addresses and an address mask. +.PP +Opening the +.B clone +file returns a file descriptor open on the +.B ctl +file for a new connection. +A medium is then attached using a +.B bind +request; +logical interfaces are associated by +.B connect +or +.BR add ; +they are removed by +.BR remove ; +and finally +.B unbind +detaches the medium from the connection. +For certain types of media, the +.B unbind +is automatic when the connection itself is closed. +With most media, including Ethernet, +the +.B ipifc +connection files can be closed after configuration, and later +reopened if need be to add or remove logical interfaces, +or set other parameters. +.PP +The +.B ctl +file responds to the following text commands, including interface-specific variants +of standard +IP device +requests: +.TP +.BI bind " medium " "[ \f5\f2name\f5 [ \f2arg ...\f5 ]" +Attach device +.I medium +to the interface, which must not already be bound to a device. +The +.I name +and subsequent arguments are interpreted by the driver for the +.IR medium . +The device name associated with the interface is +.IR name , +if given, or a generated name otherwise. +.TP +.BR connect " \f2ip\f5 [\f2mask \f5[\f2remote \f5[\f2mtu \f5]]]" +Remove all existing logical interfaces and create a new one as if by +.B add +(see below). +The connection must be bound to a medium. +.TP +.BR add " \f2ip\f5 [\f2 mask \f5[\f2 remote \f5[\f2 mtu \f5] ] ]" +Add a logical interface with local IP address +.IR ip . +The default for +.I mask +is the mask for +.IR ip 's +address class; +for the +.IR remote +address, +.IR ip 's +network; and for +.IR mtu , +the largest MTU allowed by the medium. +The new interface is registered in the IP routing tables. +.TP +.B bootp +Broadcast a BOOTP packet (using +.BR udp ). +If a valid response is received, set the interface's IP address and mask, +and the IP stack's default gateway to the results obtained from BOOTP. +The results are also available to applications by reading +the +.B bootp +file above. +Note that this mechanism is now deprecated in favour of +.IR dhcpclient (2). +.TP +.BI remove " ip mask" +Remove the logical interface determined by +.I ip +and +.IR mask . +.TP +.BI iprouting\ [ "n" ] +Control the use of IP routing on this +.IR ip (3) +instance. +If +.I n +is missing or non-zero, allow use as a gateway, +rerouting via one interface packets received on another. +By default, +or if +.I n +is zero, use as a gateway is not allowed: if a packet received +is not addressed to any local interface, either pass it to +a gateway application if active (see +.B iprouter +in +.IR ip (3)), +and otherwise drop the packet. +.TP +.BI mtu " n" +.br +Set the maximum transmit unit (MTU) on this interface to +.I n +bytes, which must be valid for the medium. +.TP +.BI addmulti " multi" +Add the multicast address +.I multi +to the interface. +.TP +.BI remmulti " multi" +Remove the multicast address +.I multi +from the interface. +.TP +.BI unbind +Remove any association between +the current medium (device) and the connection: +remove all routes using this interface, detach the device, +stop packet transport, and +remove all logical interfaces. +The connection is ready for re-use. +.PP +The +.B local +file contains one line for each logical interface, of the form: +.IP +.IB local -> self ... +.PP +where +.I local +is the local address associated with the interface and each +.I self +is a broadcast or multicast address that can address that interface, +including subnet addresses, if any. +.PP +The +.B status +file contains many fields: +the first two give the device name and the value of the current MTU, +followed by 7 fields per line for each logical interface: +local address, address mask, remote address, packets in, packets out, input errors, and output errors. +.PP +The following sections describe the media drivers available. +Each is separately configurable into a kernel. +.SS Ethernet medium +Ethernet devices as described in +.IR ether (3) +can be bound to an IP interface. +The bind request has the form: +.IP +.BI "bind ether " device +.PP +The interface opens two conversations on the given Ethernet +.IR device , +for instance +.BR ether0 , +using an internal version of +.BR dial , +with the addresses +.IB device !0x800 +(IPv4) +and +.IB device !0x806 +(ARP). +See +.IR sys-dial (2) +for the interpretation of such addresses. +The interface runs until a process does an explicit +.BR unbind . +Multicast settings made on the interface are propagated to the +.IR device . +.SS Point-to-point medium +An asynchronous serial device as described in +.IR eia (3) +can be bound to an interface as a Point-to-Point protocol (PPP) device. +The bind request has the form: +.IP +.BI "bind ppp " "serial ip remote mtu framing username secret" +.PP +All parameters except +.I serial +are optional. +The character +.RB ` - ' +can appear as a placeholder for any parameter. +Except for authentication data, an attempt is made to negotiate +suitable values for any missing parameter values, including network addresses. +The parameters are interpreted as follows: +.IP +.RS +.TF username +.TP +.I serial +Name of the device that will run PPP. +.TP +.I ip +Local IP address for the interface. +.TP +.I remote +IP address of the other end of the link. +.TP +.I mtu +Initial MTU value for negotiation (default: 1450) +.TP +.I framing +If +.I framing +is zero, do not provide asynch. framing (on by default). +Unimplemented. +.TP +.I username +Identification string used in PAP or CHAP authentication. +.TP +.I secret +Secret used in authentication; with CHAP it never crosses the link. +.PD +.RE +.PP +If the name +.I serial +contains +.RB ` ! ' +a connection will be opened using +.B dial +(see +.IR sys-dial (2)). +Otherwise the name will be opened as-is; +usually it is the name of a serial device +(eg, +.BR "#t/eia0" ). +In the latter case, a companion +.B ctl +file will also be opened if possible, to set serial characteristics for PPP +(flow control, 64kbyte queue size, nonblocking writes). +An attempt is made to start the PPP link immediately. +The write of the +.B bind +control message returns with an error if the link cannot be started, +or if negotiation fails. +The PPP link is automatically unbound if the line hangs up (eg, modem drops carrier), +or an unrecoverable error occurs when reading or writing the connection. +.PP +The PPP implementation can use either PAP and CHAP authentication, +as negotiated, provided an appropriate +.I username +and +.I secret +is given in the +.B bind +request. +It does not yet support the Microsoft authentication scheme. +.SS Packet medium +The packet medium allows an application to be source and sink +for IP packets. +It is bound to an interface by the simple request: +.IP +.B "bind pkt" +.PP +All other interface parameters including its IP address are +set using the standard +.I ipifc +requests described above. +Once that has been done, the application reads the +.B data +file of the interface to receive packets addressed to the interface, +and it writes to the file to inject packets into the IP network. +The interface is automatically unbound when all interface files are closed. +.SS Hosted interfaces +Native Inferno and Plan 9 have related IP implementations. +Plan 9 +.I emu +therefore simply imports Plan 9's +.BR /net , +and in the absence of version-specific differences, what is described +above still applies. +.PP +On all other hosted platforms, +the IP device gives applications +within +.IR emu (1) +a portable interface to TCP/IP and UDP/IP, even through it +is ultimately using the host system's own TCP/IP and UDP/IP implementations +(usually but not always socket based). +The interface remains the same: for instance by +.B /net/tcp +and +.BR /net/udp , +but is currently more limited in the set of services and control requests. +Both IPv4 and IPv6 address syntax may be used, but the IPv6 form must +still map to the IPv4 address space. +Only TCP and UDP are generally available, and a limited interface to ARP on some platforms (see below). +The set of TCP/UDP control requests is limited to: +.BR connect , +.BR announce , +.BR bind , +.BR ttl , +.BR tos , +.BR ignoreadvice , +.BR headers4 , +.BR oldheaders , +.BR headers , +.BR hangup +and +.BR keepalive . +.PP +The write-only +.B arp +file is implemented only on some Unix systems, and +is intended to allow the implementation of +the BOOTP protocol +using Inferno, on hosted systems. +It accepts a single textual control request: +.TP +.BI add " ip ether" +Add a new ARP map entry, or replace an existing one, for IP address +.IR ip , +associating it with the given +.I ether +MAC address. +The +.I ip +address is expressed in the usual dotted address notation; +.I ether +is a 12 digit hexadecimal number. +.PP +An error results if the host system does not allow the ARP map +to be set, or the current user lacks the privileges to set it. +.SH SOURCE +.B /emu/port/devip.c +.br +.B /os/ip/devip.c +.br +.BI /os/ip/ proto .c +.br +.B /os/ip/ipifc.c +.br +.br +.B /os/ip/*medium.c +.SH "SEE ALSO" +.IR sys-dial (2) +.\" joinmulti and leavemulti are unimplemented +.\" many media are only partly implemented diff --git a/man/3/kprof b/man/3/kprof new file mode 100644 index 00000000..fbddc3b0 --- /dev/null +++ b/man/3/kprof @@ -0,0 +1,88 @@ +.TH KPROF 3 +.SH NAME +kprof \- kernel profiling +.SH SYNOPSIS +.nf +.B bind -a #T /dev +.sp +.B /dev/kpctl +.B /dev/kpdata +.fi +.SH DESCRIPTION +The +.I kprof +device provides simple profiling +data for the operating system kernel. The data accumulates by +recording the program counter of the kernel at each `tick' of a +profiling clock. Often this is just the system clock, but may be an +independent higher priority timer which allows profiling of interrupt +handlers, dependent on implementation. +.PP +The file +.B kpdata +holds the accumulated counts in big-endian +byte order. +The size of the file depends on the size of kernel text, and the +size of the individual counts. +The first six counts are 4 bytes in size, and are special. The +first holds the total number of ticks, the second the number of +ticks which fell outside the kernel text, the third the number +of microseconds per tick, the fourth the number of sample buckets, +the fifth the size in bytes of each sample bucket, and sixth the +log base 2 of the sample bucket size. Typically the sample size +is 4, and the log base 2 of the bucket size 3 (8 bytes). The remainder +of the file holds the sample buckets. The entire file has size +.I "sample bucket size" +times +.IR "number of sample buckets" . +That is, the first six sample buckets are replaced with the special +numbers. +.PP +The file +.B kpctl +controls profiling. +Writing the string +.B start +to +.B kpctl +begins profiling; +.B stop +terminates it. The message +.B startclr +restarts profiling after zeroing the array of counts. +.PP +.IR Kprof (10.1) +formats the data for presentation. +.SH EXAMPLE +The following +.IR sh (1) +commands define and invoke a +function +.B sample +that runs a given test program with kernel profiling enabled, +and copies the result to a server presumed to be mounted on +.BR /n/remote . +.sp +.EX +fn sample { + echo start >/dev/kpctl + $1 + echo stop >/dev/kpctl + cp /dev/kpdata /n/remote/tmp/kpdata +} +bind -a '#T' /dev +sample {cp sound /dev/audio} +.EE +.PP +On the server, the +.IR kprof (10.1) +command is used to analyse the data: +.EX + kprof /usr/inferno/os/mpc/impc /tmp/kpdata +.EE +.SH SOURCE +.B /os/port/devkprof.c +.SH SEE ALSO +.IR kprof (10.1) +.SH BUGS +It cannot provide times for each node in the dynamic call graph (dynamic profiling). diff --git a/man/3/logfs b/man/3/logfs new file mode 100644 index 00000000..5e60b308 --- /dev/null +++ b/man/3/logfs @@ -0,0 +1,260 @@ +.TH LOGFS 3 +.SH NAME +logfs \- log-structured file system for flash devices +.SH SYNOPSIS +.B bind -b '#ʟ' /dev +.PP +.B /dev/logfsctl +.br +.B /dev/logfsusers +.br +.BI /dev/logfs name +.br +.BI /dev/logfs name boot +.PP +.B echo fsys +.I name +.B config +.I flash-device +.B "> /dev/logfsctl" +.br +.B echo fsys +.I name +.B format +.I boot-area-size +.B "> /dev/logfsctl" +.br +.B echo fsys +.I name +.B open +.B "> /dev/logfsctl" +.br +.BI "mount -Ac /dev/logfs" name +.I dir +.SH DESCRIPTION +.I Logfs +is a driver level implementation of the Inferno log structured +filesystem, a file system designed with modern flash devices +(such as NAND flash) in mind. +.I Logfs +is itself hardware independent, requiring other +devices to provide the physical medium. Currently only +.IR flash (3) +devices are supported. +.PP +The file system maintains two storage regions on the same medium: +a log-structured hierarchical file system that implements all the +functionality communicable by the Styx protocol +(see +.IR intro (5)), +and a boot +partition that offers a fixed amount of flat storage suitable for +holding such things as a kernel boot image, boot parameters etc. The +boot partition can be accessed and updated without understanding all +but the simplest facts about the hierarchical file system, making it +easy to implement boot loaders with small footprints. +.PP +The physical layout of the file system varies from medium to medium, +so that the specialised features of the medium can be accounted for. +.PP +The user table is maintained in memory; there is one table, shared between +all file systems supported by this driver. There is no distinction between +users and groups: a user is a group with one member. +The user table records a mapping +between uids +and +unames, +as well as recording the leader and members of each group. A +.I uid +is a string naming a user or group that is stored in the file system. A +.I uname +is the string naming a user or group that is used in +file system protocol messages (see +.IR intro (5)). +There is a distinction so that +unames +can be safely reused, even though +uids +cannot. +.PP +Configuration and control of the file systems is by writing commands to +.BR /dev/logfsctl : +.TP +.BI fsys " name" +.br +Sets the current file system to +.IR name , +which must be configured. Subsequent commands, not prefixed with +.BI fsys name\fR, +will by applied to the name file system. +.TP +.BI [fsys " name\f5] config\fI flash-device" +.br +Configures file system +.I name +to be written to +.BI flash (3) +device +.IR flash-device . +This does not initialise or format the filesystem, but simply bind +.I name +to +.IR flash-device . +For each configured +.IR name , +two files appear in the device name space, +.BI /dev/logfs name +and +.BI /dev/logfs name\f5boot\fI. +The former serves the Styx protocol giving access to the hierarchical file system; +the latter is a fixed size file that represents the boot partition. +.TP +.BI [fsys " name\f5] format \fIbootsize" +.br +Formats the underlying medium as a +.I logfs +format file system. Sufficent storage is set aside to create a boot partition of at +least +.I bootsize +bytes. Some medium implementations (eg, for NAND flash) store file system +parameters (eg, location, size and boot partition size) to enable automatic +location of file systems and improve bad block detection. These must +be part of the boot partition so that they are easily accessible to boot loaders, +so such medium implementations may also enforce a minimum size for the +boot partition. +.TP +.BI [fsys " name\f5] open [-P] [-W]" +.br +Initialises the specified file system, and makes it available for use. The file +system structure is verified, bad blocks are repaired and, in the case of the +log structured file system, and the log replayed to regenerate the directory structure. +The +.B -W +option reduces the permission control on +.IR wstat (5) +requests. Specifically it allows the +.BR uid , +.BR gid , +.BR mtime , +and +.B perm +to be changed by anyone. +The +.B -P +option removes all file access controls, allowing anyone to open any file in +any mode. +.TP +.BI [fsys " name\f5] sweep" +.br +Forces the log to be swept, if it has been written to since last being swept. +The log is normally swept automatically when space is low. +.TP +.BI [fsys " name\f5] sync" +.br +Flush any buffered log or data to the underlying device. +Use before shutting down the system if the device is not unmounted. +(See notes below.) +.TP +.BI [fsys " name\f5] trace [\fIlevel\f5]" +.br +If +.I +level +is non-zero, internal diagnostics for the log file system are enabled at the +given level. If +.I level +is zero, or missing, tracing is disabled. +.TP +.BI [fsys " name\f5] unconfig" +.br +removes the configuration. The file system must not be mounted, or the +boot partition open, before doing this. +.TP +.BI uname " uname uid" +.TP +.BI uname " uname \f5:\fPuid" +.br +adds the user with uname +.I uname +and uid +.I uid +to the in-memory table +.TP +.BI uname " uname \f5%\fPnewname" +.br +renames +.I uname +to +.IR newname , +throughout the user table +.TP +.BI uname " uname \f5=\fPleader" +.br +sets the group leader to the uname +.I leader +.TP +.BI uname " uname \f5=" +.br +removes the group leader; then all members are leaders +.TP +.BI uname " uname \f5+\fPmember" +.br +add the uname +.I +member +to the group +.TP +.BI uname " uname \f5-\fPmember" +.br +removes the uname +.I +member +from the group +.SS Notes +The file system log may be subject to a small amount of buffering for efficiency +purposes; therefore, it is necessary to unmount the file system before disconnecting +the power to avoid losing recent updates. Failure to do this does not result in +inconsistencies in the file system, but some recent changes will be lost. +Equivalently, a +.IR wstat (5) +of any file or directory, with all fields set to +.I no change +(also known as a +.I wstat +.IR flush) +will cause the log to be written to disk. Note that during a dismount, and also a +.I wstat +.IR flush , +a +.I wstat +flush +is also applied to the underlying +.IR flash (3) +device. Furthermore, since some buffering is used on the log, +needless use of +.I wstat flush +will consume log space more rapidly than normal, although it will be recovered during +the next sweep. +.PP +The log is automatically swept when space is low, so there is not normally any +need to use the +.B sweep +command. +.SH SOURCE +.B /liblogfs +.br +.B /libnandfs +.br +.B /emu/port/devlogfs.c +.br +.B /os/port/devlogfs.c +.SH SEE ALSO +.IR flash (3), +.IR ftl (3), +.IR kfs (4) +.SH BUGS +The only medium currently supported is NAND flash. This is detected by +recognising the manufacturer and device ids supplied by the status file of +the +.IR flash (3) +device. diff --git a/man/3/lpt b/man/3/lpt new file mode 100644 index 00000000..0d149699 --- /dev/null +++ b/man/3/lpt @@ -0,0 +1,51 @@ +.TH LPT 3 +.SH NAME +lpt \- parallel port interface +.SH SYNOPSIS +.nf +.B bind -a #L[123] /dev + +.B /dev/lpt[123]data +.B /dev/lpt[123]dlr +.B /dev/lpt[123]pcr +.B /dev/lpt[123]psr +.fi +.SH DESCRIPTION +The +.I lpt +driver provides an interface to the parallel +interface normally used for printers. +The specifiers +.BR 1 , +.BR 2 , +and +.BR 3 +correspond to +the parallel interfaces at PC ports 0x378, 0x3bc, and 0x278 +respectively. +.PP +.B Lpt?data +is write only. +Writing to it sends data to the interface. +This file is sufficient for communicating with most printers. +.PP +.BR Lpt?dlr , +.BR lpt?pcr , +and +.B lpt?psr +are used for fine control of the parallel port. +Reading or writing these files corresponds to +reading and writing the data latch register, +printer control register, and printer status +register. +These are used by programs to drive special devices. +The data is written as a hexadecimal +(leading +.BR 0x ), +octal +(leading +.BR 0 ) +or decimal number. +Reads return a hexadecimal number representing the value of the register. +.SH SOURCE +.B /os/*/devlpt.c diff --git a/man/3/mnt b/man/3/mnt new file mode 100644 index 00000000..7efc0c8d --- /dev/null +++ b/man/3/mnt @@ -0,0 +1,84 @@ +.TH MNT 3 +.SH NAME +mnt \- attach to Styx servers +.SH SYNOPSIS +.nf +.B #M +.fi +.SH DESCRIPTION +The +.I mount driver +is used by +.B Sys->mount +(but not +.BR Sys->bind ; +see +.IR sys-bind (2)) +to connect the name space of a process to +the service provided by a Styx server over a communications channel. +After the +.BR mount , +file operations in that portion of the name space will +be converted by the mount driver into the appropriate +Styx messages to the server, and its Styx replies returned +as the status of the system calls. +.PP +Any authentication must precede +.IR mount , +which does none itself; +see +.IR security-intro (2) +for a discussion of the authentication and security +mechanisms provided `ready made' by Inferno, but +any other scheme can be agreed between client and server. +The +.I mount +system call does, however, issue an +.IR attach (5) +message to the server to identify the user of the connection. +Each distinct user of a connection must mount it separately; +the mount driver multiplexes the access of the various users and their +processes to the service. +.PP +File-oriented system calls are converted by the kernel into messages in the Styx protocol. +Within the kernel, Styx is implemented by procedure calls to the +various kernel device drivers, as described in +.IR intro (10) +and +.IR dev (10.2). +The mount driver translates these procedure calls into remote procedure calls +to be transmitted as messages over the communication channel to the server. +Each message is implemented by a write +of the corresponding protocol message to the server channel +followed by a read on the server channel to get the reply. +Errors in the reply message are turned into system call error returns. +.PP +A +.IR sys-read (2) +or +.I Sys->write +system call on a file served by the mount driver +may be translated +into more than one +message, +since there is a maximum data size for a Styx message. +The system call +will return when the specified number of bytes have been transferred +or a short reply is returned. +.PP +The string +.L #M +is an illegal file name, +so this device can be accessed directly only by the kernel. +.SH "SEE ALSO" +.IR bind (1), +.IR sys-bind (2) +.SH SOURCE +.B /emu/port/devmnt.c +.br +.B /os/port/devmnt.c +.SH BUGS +When mounting a service through the mount driver, +that is, when the channel being multiplexed is itself +a file being served by the mount driver, +large messages may be broken in two. diff --git a/man/3/mpeg b/man/3/mpeg new file mode 100644 index 00000000..8fc7bd52 --- /dev/null +++ b/man/3/mpeg @@ -0,0 +1,102 @@ +.TH MPEG 3 +.SH NAME +mpeg \- Boffin mpeg decoder +.SH SYNOPSIS +.B +bind -b #E /dev +.PP +.B /dev/mpeg +.br +.B /dev/mpegctl +.SH DESCRIPTION +The +.I mpeg +device serves two files giving access to a Boffin MPEG-1 decoder. +.PP +The control file +.B mpegctl +when read returns lines of text giving the device's properties. +Each line starts +.B video +or +.B audio +followed by a list of capabilities. +The current device returns a fixed set: +.IP +.EX +video mpeg1,sif +.br +audio musicam,I musicam,II +.EE +.PP +The control file accepts the following commands: +.TF pause +.PD +.TP +.B init +Reinitialise the device's video and audio subsystems; +cancel the effect of +.B stop +or +.B pause +.TP +.B stop +Stop the display immediately. +.TP +.B pause +Suspend display. +.TP +.B video iso11172 mpeg1,sif +Set the output video mode and formats; only this precise setting is valid. +.TP +.BI audio " format rate" +There are two choices for +.IR format : +.B musicam,I +(MPEG audio layer 1), +with +.I rate +from 64000 to 448000 Hz, +and +.B musicam,II +(MPEG audio layer 2) +with +.I rate +from 48000 to 384000. +.TP +.BI window " minx miny maxx maxy" +Sets the overlay window on the screen, in screen coordinates. +If the window size exceeds 320x240, the image is scaled accordingly, +separately in each dimension. +.PP +The data file +.B mpeg +is an exclusive-use device. +Once the device has been initialised and an output window +set using the +.B init +and +.B window +commands to the control file, +and an audio format selected by the +.B audio +command, +MPEG data can be written in the agreed format to the +.B mpeg +file, +for display in the output window. +The driver buffers the data written and implements flow control between application +and the hardware. +When closed, the device waits for the last block of data to display +before returning to the application. +.SH SOURCE +.B /os/pc/devmpeg.c +.SH CONFIGURATION +.B "mpeg0=port=0x1e0 irq=15 dma=6 +.SH SEE ALSO +.IR mpeg (2), +.I stream +in +.IR sys-read (2) +.SH DIAGNOSTICS +An error results on a write to the device once stopped. diff --git a/man/3/pbus b/man/3/pbus new file mode 100644 index 00000000..619cd420 --- /dev/null +++ b/man/3/pbus @@ -0,0 +1,60 @@ +.TH PBUS 3 +.SH NAME +pbus \- USR/3Com Edgeserver packet bus +.SH SYNOPSIS +.B bind -a '#Y' /dev +.PP +.B /dev/pbus +.br +.B /dev/pbusctl +.SH DESCRIPTION +The packet bus driver serves a directory containing two files, +giving MAC-level access to the EPB version of the packet bus +of the US Robotics (3Com) Edgeserver chassis. +.PP +The read-only file +.B pbusctl +contains a single integer that gives the chassis slot occupied by the Edge server +(its address on the packet bus). +.PP +The file +.B pbus +is read and written to communicate on the bus. +Each write +transmits a single packet on the bus. +The driver expects a four byte header in each write: +.IP +.IB "slot chan" " 0 0" +.PP +where +.I slot +is the destination chassis slot number and +.I chan +identifies a logical receiver in that slot. +Including the header, the largest write accepted is 128 bytes. +The driver completes the header as the bus firmware requires; +it also pads each packet with zero bytes to a hardware packet boundary +as it puts it on the bus. +It flashes green in the `Wan TX' LED as packets are transmitted. +.PP +Each read of the +.B pbus +file returns the contents of a single packet received from the bus. +The read will block if necessary until a packet arrives. +The data includes a four byte header +as above, and padding to a hardware packet boundary. +Normally a higher-level protocol will provide its own headers including +an actual length. +.PP +At reset, the driver downloads firmware to the controller if required. +All invalid packets received are quietly discarded. +Packets are also dropped whenever an internal input queue overflows +because the reader has not kept up with arriving traffic. +.SH SOURCE +.B /os/pc/devpbus.c +.SH SEE ALSO +.IR plap (3) +.SH BUGS +The driver detects but does not recover from bus clock loss +.br +The driver cannot be included in the public distribution. diff --git a/man/3/pipe b/man/3/pipe new file mode 100644 index 00000000..494e57db --- /dev/null +++ b/man/3/pipe @@ -0,0 +1,69 @@ +.TH PIPE 3 +.SH NAME +pipe \- two-way interprocess communication +.SH SYNOPSIS +.nf +.BI "bind '#|'" dir +.IB dir /data +.IB dir /data1 +.fi +.SH DESCRIPTION +A pipe provides a mechanism for interprocess I/O by +reading and writing file descriptors (see +.IR sys-read (2)). +An +.IR attach (5), +typically via +.IR sys-pipe (2) +or +.IR sys-bind (2), +allocates two files that are cross-connected: +data written to one can be read back from the other, in the same order. +.PP +Write boundaries are preserved: each read terminates when the read buffer +is full or after reading the last byte of a write, whichever comes first. +In particular, a write of zero bytes will result in a zero-length read, +which is usually interpreted by readers as end-of-file, but could be used +to delimit the data stream for other purposes. +.PP +Written data is buffered by the kernel and stored on internal queues +(see +.IR qio (10.2)). +The maximum block size is 128k bytes; +larger writes will be split across several blocks, which are queued separately. +Each read will return data from at most one block. +Concurrent writers are therefore guaranteed that their data will not be interleaved +with data from other writers (ie, will be written atomically) only when +each write is less than the maximum buffer size. +Writers to pipe interfaces on remotely mounted portions of the namespace have their guarantee of atomicity lowered to +.BR Sys->ATOMICIO +bytes by +.IR mnt (3). +.PP +The system mediates between producer and consumer. +Writers will block when buffered data reaches a high-water mark, currently 32k bytes, +until a reader has reduced it by half. +The length returned by +.IR sys-stat (2) +on each name +gives the number of bytes waiting to be read on the corresponding end of the pipe. +.PP +When all file descriptors on +one side of the pipe have been closed, and after any remaining data has +been read, +a reader on the other side sees end-of-file (count of zero) on a subsequent read. +Once both ends are closed, the pipe can be reused. +.PP +A pipe persists until it is unmounted and no processes have either end open. +.SH SOURCE +.B /emu/port/devpipe.c +.br +.B /os/port/devpipe.c +.SH "SEE ALSO" +.IR sys-file2chan (2), +.IR sys-pipe (2) +.SH DIAGNOSTICS +Writes to a closed pipe generate an exception +.RB ` "write on closed pipe" '. +Persistently reading a closed pipe after reading end-of-file +will result in a read error. diff --git a/man/3/plap b/man/3/plap new file mode 100644 index 00000000..63eb417c --- /dev/null +++ b/man/3/plap @@ -0,0 +1,136 @@ +.TH PLAP 3 +.SH NAME +plap \- USR/3Com Edgeserver packet bus link access protocol +.SH SYNOPSIS +.B bind -a '#X' /net +.PP +.nf +.B /net/plap/clone +.BI /net/plap/ n /ctl +.BI /net/plap/ n /data +.BI /net/plap/ n /local +.BI /net/plap/ n /remote +.BI /net/plap/ n /status +.BI /net/plap/ n /listen +.SH DESCRIPTION +The +.I plap +driver serves a three-level directory giving access to the link level +protocol used by an Edgeserver card to communicate with +other cards in a USR/3Com chassis. +On first +.I attach +(usually by a +.IR bind (1) +to +.BR /net ) +the driver opens a connection to the packet bus device +.B #Y +described in +.IR pbus (3). +It multiplexes that connection using a specialised member of the LAP family +of protocols. +.PP +The top level directory contains a single directory naming the protocol, +.BR plap . +It contains a +.B clone +file and a set of conversation directories numbered from 0 to 127; +only active conversation directories are present. +.PP +Opening the +.B clone +file allocates a new conversation directory +.IR n . +The file descriptor will point to the control file, +.BR ctl , +of that directory. +Reading the file returns a text string giving the conversation number. +.PP +Each conversation directory contains six files. +The connection is controlled by writing text strings to the +.B ctl +file. +Once a connection has been established, data is exchanged with the +remote peer by reading and writing the +.B data +file. +.PP +A +.I plap +address has the form: +.IP +[ +.IB slot . +] +.IB chan ! sap +.PP +where +.I slot +is a chassis slot number, +.I chan +is a logical channel (eg, a modem number), +and +.I sap +is a number representing a `service access point'. +.PP +The following control messages are supported: +.TP +.BI connect " remoteaddr \fP\fR[\fP \fIlocaladdr\fP ]\fI " +Make a connection to the given +remote address (of the form given above). +If a local address is not specified, the +system will assign an unused address dynamically +(the local chassis slot number is of course fixed). +Connect fails if the connection is already announced or connected, +or +.I localaddr +is already in use. +.TP +.BI announce address +Set the local address to +.I address +and accept incoming calls to that address. +If no address is specified, all incoming calls to addresses not explicitly announced +will be accepted by this connection. +Announce fails if the connection is already announced or connected, +or the local +.I address +specified is already in use. +.PP +The +.B remote +and +.B local +files contain the remote and local addresses for the connection +in the full address form +.IB slot . chan ! sap. +The +.B status +file returns a line giving the directory name, number of active opens, and the state +of the connection. +.PP +A process listens for incoming calls by opening the +.B listen +file using +.IR sys-open (2). +The open will block until a call arrives, when it will return a file descriptor +open on the +.B ctl +file of the newly accepted connection, which can be read to find the directory +number and thus the other files. +.PP +The device follows the conventions that allow +.BR dial , +.BR announce +and +.B listen +of +.IR sys-dial (2) +to do the work needed to establish and manipulate network connections. +.SH SOURCE +.B /os/pc/devplap.c +.SH SEE ALSO +.IR pbus (3) +.SH BUGS +The driver cannot be included in the public distribution. diff --git a/man/3/pnp b/man/3/pnp new file mode 100644 index 00000000..f2eab7dc --- /dev/null +++ b/man/3/pnp @@ -0,0 +1,150 @@ +.TH PNP 3 +.SH NAME +pnp, pci \- Plug 'n' Play ISA and PCI Interfaces +.SH SYNOPSIS +.nf +.B bind -a '#$' /dev + +.BI /dev/pci/ bus\fL.\fPdev\fL.\fPfn ctl +.BI /dev/pci/ bus\fL.\fPdev\fL.\fPfn raw + +.BI /dev/pnp/ctl +.BI /dev/pnp/csn n ctl +.BI /dev/pnp/csn n raw +\&... + +.fi +.SH DESCRIPTION +This device provides a limited interface to the PCI bus and +Plug 'n' Play ISA devices. +Both are present on most PC platforms; on others, only the +.B pci +interface is present (because there is no ISA bus). +.SS PCI Interface +.PP +PCI devices are addressed logically by a bus number, +a device number on that bus, and a function number +within the device. +The set of all such device functions may be enumerated +by traversing the +.B /dev/pci +directory; the driver serves two files for each function. +These are a control file +.RL ( /dev/pci/\fIbus\fP.\fIdev\fP.\fIfn\fPctl ) +which may be read for a textual summary of the device function, +and a `raw' file +.RL ( /dev/pci/\fIbus\fP.\fIdev\fP.\fIfn\fPraw ) +which may be read to obtain the raw contents of PCI configuration space. +.PP +The first field of a PCI control file contains the class, sub-class and +programming interface values for the device function, expressed +as 2-digit hexadecimal values, and separated by periods. +The second field yields the vendor ID and device ID, each as 4-digit +hex numbers, separated by a slash. +The third field is the associated interrupt line in decimal. +The remainder of the line enumerates any valid base address +registers for the function, using two fields for each. +In the first field, the index of the register is followed by +a colon, and then the value of the register itself. +The following field gives the associated size of the memory +(or I/O space) that is mapped by the register. +.SS Plug 'n' Play +.PP +Plug 'n' Play ISA devices are discovered by sending a fixed `unlock' sequence +over an I/O port, and then reading back data from another port. +An arbitration algorithm is used to separate out the individual +cards and enumerate them in turn. +Each card is assigned a unique number, called a CSN, in the range 1-255 as a +result of enumeration. +Cards also have a fixed 64 bit identification number, set by the +manufacturer, which is used by the arbitration algorithm to +resolve conflicts. +The first 32 bits describe the type of the card, and the second +32 bits form a serial number for the particular instance of that card type. +When formatted textually, it appears as 3 upper-case letters +(typically representing the manufacturer), +followed by 4 hex digits, then a period, then 8 hex digits. +The substring before the period is the card type, and the substring +after the period is the serial number. +.PP +The enumeration algorithm needs to be enabled by specifying the +port number to write the unlock sequence out on. +This can be configured to take place at boot time by adding a line +like the following to +.IR plan9.ini : +.IP +.EX +pnp0=port=0x203 +.EE +.PP +Here +.B port +should be chosen to not conflict with any existing devices. +It must be in the range +.BR 0x203-0x3ff . +Alternatively, one can use the following command: +.IP +.EX +echo port 0x203 >/dev/pnp/ctl +.EE +.PP +Note that a side-effect of PnP enumeration is to reset the configuration +state of all such cards; any settings made by a Plug and Play BIOS will be lost. +Reading the file +.B /dev/pnp/ctl +returns one of the strings +.B "enabled\fI port\fP" +or +.BR "disabled" . +.PP +For each enumerated card, two files are served in +.BR /dev/pnp . +A control file +.RL ( /dev/pnp/csn\fIn\fPctl ) +may be read to determine the ID of the card, and a raw file +.RL ( /dev/pnp/csn\fIn\fPraw ) +may be read to obtain the configuration data associated with the card. +It is intended that the control file should take commands which set the +various configurable resources of the card, but this has not been +implemented yet. +.PP +A mechanism is provided for configuring cards via +.IR plan9.ini (10.6). +A line of the form +.BI pnp n = "idstring ..." +will cause the driver to look for the card named by +.I idstring +and, if found, assign it the CSN +.IR n . +The intention is that +any additional text after the idstring is interpreted as if it +was written to the card's +.B ctl +file, but this is not yet implemented. +.SH EXAMPLES +.PP +To list all PCI functions: +.IP +.EX +cat /dev/pci/*ctl +.EE +.PP +To find just the PCI video card (class 3): +.IP +.EX +grep '^03' /dev/pci/*ctl +.EE +.SH SOURCE +.B /os/pc/devpnp.c +.br +.B /os/port/devpci.c +.SH BUGS +There is currently no way to write to PCI configuration space, +or to perform reads of less than 32 bits. +Access to the I/O and memory regions of a PCI device is not provided. +.PP +The ability to set a Plug 'n' Play card's configurable settings has not been +implemented. +.PP +There should be a user program for identifying and configuring +Plug 'n' Play cards. diff --git a/man/3/pointer b/man/3/pointer new file mode 100644 index 00000000..3c90fde3 --- /dev/null +++ b/man/3/pointer @@ -0,0 +1,80 @@ +.TH POINTER 3 +.SH NAME +pointer \- mouse and stylus interface +.SH SYNOPSIS +.B "bind -a #m /dev" +.PP +.B /dev/cursor +.br +.B /dev/pointer +.SH DESCRIPTION +The +.I pointer +device is the interface to input from a mouse, stylus, or some other device +for pointing at positions on a display. +On some platforms, the pointer is associated with a cursor +on the display, that is displayed at the current pointer position. +There often are buttons associated with the pointer, whether on +the pointing device or elsewhere. +For instance, some of the buttons on a PDA might be associated +with the stylus not a keypad, to allow modification of stylus actions +when there are are no buttons on the stylus itself. +In the hosted environment of +.IR emu (1), +the pointer is associated with the host system's own pointing device. +.PP +Reading the +.B pointer +file returns the current pointer position and the state of any buttons associated with the pointer. +The read blocks until the state has changed since the last read. +Each read returns a 49 byte record: +.IP +.BI m "x y buttons msec" +.PP +Each record has the letter +.B m +immedlately followed by four 11-character decimal numbers, each number ended by a blank. +.I X +and +.I y +give the coordinates of the pointer in display coordinates; +the value +.I buttons +has bit +.RI "(1<<" b ) +set when button +.I b +is down; and +.I msec +is a time stamp in milliseconds. +.PP +Writing a record of the above form to +.B pointer +moves the displayed cursor to the given +.I x +and +.I y +position; +.I buttons +and +.I msec +are ignored. +.PP +Writing an +.IR image (6) +file to the +.B cursor +file sets the image of the cursor on the display. +Reading +.B cursor +returns the current cursor image, again in +.IR image (6) +format. +.SH SOURCE +.B /emu/port/devpointer.c +.br +.B /os/port/devpointer.c +.SH SEE ALSO +.IR wm (1), +.IR draw-intro (2), +.IR image (6) diff --git a/man/3/prof b/man/3/prof new file mode 100644 index 00000000..db08e07f --- /dev/null +++ b/man/3/prof @@ -0,0 +1,93 @@ +.TH PROF 3 +.SH NAME +prof \- profiling device +.SH SYNOPSIS +.nf +.B bind #P /prof + +.BI /prof/ctl +.BI /prof/ n /name +.BI /prof/ n /path +.BI /prof/ n /histogram +.BI /prof/ n /pctl +.fi +.SH DESCRIPTION +The +.B prof +device serves a two-level directory structure. The first level contains a control file +.B ctl +and zero or more numbered directories each corresponding to a module being +profiled. Inside each of these numbered directories are further files which describe +the particular module being profiled. +.PP +The write-only control file +.B ctl +provides the facilities to profile a module. Messages written to this file initiate and +control the profiling. +.TP 10n +.BI module " name" +Add the module or the module whose path is +.I name +to the list of modules to be profiled. +.TP 10n +.B start +Start profiling all modules in the above list or, if the list is empty, start profiling all +modules loaded by the kernel. The profiling is done by sampling. +.TP 10n +.B startcp +As above but do coverage profiling. All instructions executed in the wanted modules +are counted. +.TP 10n +.B startmp +As above but do memory profiling. All heap memory allocations are associated +with a line of limbo source and all deallocations with the line that did the allocation. +.TP 10n +.B stop +Stop all profiling. +.TP 10n +.B end +Stop all profiling and free all memory associated with the modules being profiled. +The profiler returns to it's initial state with no modules under profile. +.TP 10n +.BI interval " i" +Change the sampling interval to +.I i +ms. The default sampling rate is 100 ms. +.PP +The second level directories contain information about each module under profile. +.PP +The read-only file +.B name +contains the name of the module in the form it appears in it's module source file. +.PP +The read-only file +.B path +contains the path of the dis file that implements the module. +.PP +The write-only control file +.B pctl +allows finer control of the profiling of a module. It is not used at present. +.PP +The read-only file +.B histogram +contains statistics about the profiled module. The file contains a list of pairs +of integers seperated by a space. The first number of the pair is a program counter +value representing the address of a dis instruction. Addresses start from 0 and the +list is in order of increasing address. The +second number is the frequency with which this address was sampled. Each read +of this file returns the next pair in the list. The frequency is guaranteed to be non-zero. +.PP +When coverage profiling the second number of each pair is the number of times +that dis instruction was executed, when memory profiling it's the amount of memory in bytes. +.SH SOURCE +.B /emu/port/devprof.c +.SH BUGS +The device profiles on a global basis and therefore does not distinguish between multiple profilers running at once. +.PP +The coverage profiling can only be done on dis instructions. +.PP +The device can do only one of time, coverage or memory profiling at once. + + + + diff --git a/man/3/prog b/man/3/prog new file mode 100644 index 00000000..675652f2 --- /dev/null +++ b/man/3/prog @@ -0,0 +1,311 @@ +.TH PROG 3 +.SH NAME +prog \- running programs +.SH SYNOPSIS +.nf +.B bind #p /prog + +.BI /prog/ n /ctl +.BI /prog/ n /dbgctl +.BI /prog/ n /exception +.BI /prog/ n /fd +.BI /prog/ n /heap +.BI /prog/ n /ns +.BI /prog/ n /nsgrp +.BI /prog/ n /pgrp +.BI /prog/ n /stack +.BI /prog/ n /status +.BI /prog/ n /text +.BI /prog/ n /wait +\&... +.fi +.SH DESCRIPTION +The +.B prog +device serves a two-level directory structure. +The first level contains numbered directories +corresponding to pids of live Limbo processes; +each such directory contains a set of files +representing the corresponding process. +All files operate on +.I UTF +(see +.IR utf (6)) +strings. +.PP +The read-only +.B status +file contains seven space-separated fields. +The fields are: the process and process group identifiers, each 8 characters right justified; +the user name, at least 10 characters left justified; +cpu time in minutes, seconds and tenths of seconds; +the process state, 10 characters left justified; +the amount of memory used by the process in units of 1024 bytes, +at least 5 characters, right justified, followed by a +.BR K ; +and the name of the current program module, +up to 28 characters, left justified. +.PP +The read-only +.B pgrp +file contains the process group identifier, in decimal. +.PP +The read-only +.B nsgrp +file contains the namespace group identifier, in decimal. +.PP +The read-only +.B ns +file contains a set of mount and bind commands +which describe the +.IR sys-bind (2) +and +.B mount +operations used to construct the name space, in +the format of +.IR namespace (6). +The last +line of the file is a +.B cd +command indicating the working directory. +.PP +The read-only +.B wait +file may be read to recover +information about the exiting children of the process. +A read of +.B wait +will block until a child of the process, created after +.B wait +was opened, exits. +When such a child exits, it produces a string with three fields: +the pid of the exiting process, a space, +module name, enclosed in +.B +\&"\c +\&'s, +and a possibly empty error message. +The error message will contain at most 64 characters. +.PP +The read-only +.B fd +file +describes the open file descriptors in the +file descriptor group of the process. +Each line describes an open file. +The fields are: the file descriptor index, the open mode +.RB ( r , +.BR w , +.BR rw ); +the type and number of the device; +the path, version and type of the file's +.I qid +(see +.IR intro (5)); +the file's atomic I/O unit, as defined in +.IR sys-iounit (2)); +the file I/O offset in bytes; +and the name with which it was opened. +.PP +The read-only +.B exception +file gives details of the last exception to occur in the process, if any. The fields +are the program counter value when the exception occurred, the module it +occurred in and the exception itself, each separated by a space. If none, the +result is the empty string. +.PP +Messages written to the +.B ctl +file control the execution of the process. +.TF killgrp +.PD +.TP +.B kill +Kill the process. +.TP +.B killgrp +Kill all processes in the same group as the process. +A process writing to its own ctl file does not kill itself. +.TP +.B exceptions propagate +Applies to process group leaders only (ie any process that executes a system +call +.I sys->pctl(Sys->NEWPGRP, ... +). +If any process in the same group as the leader incurs an exception which it +does not handle, atomically raise the exception in all processes in the group. +In this case exceptions are generated for killed processes as well. This mechanism allows +all processes in a process group to perfom error recovery when one of them +faults. +.TP +.B exceptions notifyleader +Applies to process group leaders only. +If any process in the same group as the leader incurs an exception which it +does not handle, atomically destroy all processes in the group except for the +leader and raise the exception in the leader. This error recovery mechanism might +be appropriate when a fault occurs amongst a group of processes and the group +leader takes sole responsibilty for recovery. +.TP +.B restricted +Mark all processes that the process spawns in future as restricted. A restricted +process is one which can run out of memory when a configured limit has been +reached and before total memory is exhausted. An unrestricted process can +allocate memory until memory is truly exhausted. Typically a window manager +or server might be unrestricted as they are processes fundamental to the +running of a system. +.PP +The +.B dbgctl +file provides facilities for debugging a process. +Messages written to the file control the execution of the process. +.TP 10n +.BI step " n" +Step the interpreter for at most +.I n +instructions, or until a breakpoint is reached. +.TP 10n +.B toret +Step the interpreter until a return from the current activation frame +or a breakpoint is reached. +.TP 10n +.B cont +Step the interpreter until a breakpoint is reached. +.TP 10n +.B stop +Stop the process as soon as possible. +Do not allow the process to execute again until an +.B unstop +message is received. +.TP 10n +.B unstop +Cancel the effect of any previous +.BR stop . +.TP 10n +.BI "bpt set " "path pc" +Set a breakpoint at +.I pc +for the module given by +.IR path . +.TP 10n +.BI "bpt del " "path pc" +Clear a breakpoint if one exists. +.PP +Reading +.B +dbgctl +gives updates for some state transitions while the process is being debugged. +Each update is terminated by a newline. +.TP 10n +.B exited +The process exited without error. +.TP 10n +.BI broken: " error" +The process died due to +.IR error , +a string with up to 64 characters. +.TP 10n +.B send +The process is blocked sending on a channel. +.TP 10n +.B recv +The process is blocked receiving on a channel. +.TP 10n +.B alt +The process is blocked in an +.B alt +statement. +.TP 10n +.B run +The process is unblocked and now ready to run. +.TP 10n +.BI new " pid" +The process has spawned a new process identified by +.IR pid . +.PP +The read-only +.B stack +file contains the dynamic call stack trace. +Each activation frame is described by one line with six fields, separated by a space: +the frame pointer, program counter, +module data pointer, and module code pointer, +each 8 hexadecimal digits; +the execution method for the module (0 means interpreted, 1 compiled); +and the path name of the module. +The top activation frame starts at offset 0. +.PP +The +.B heap +file may be queried to examine the state of the process. +A data query contains an address, a period, a format character, +and a count. +An instruction query contains a pc, a plus, a mode address, a period, +the format +.BR I , +and a count. +The addresses in the query may be decimal, +hexadecimal preceded by +.B 0x +or +.BR 0X , +or octal preceded by +.BR 0 . +Count gives the number of consecutive +data items retrieved by reading +.B heap +starting at offset 0; +the format varies according to the format character. +All data items other than strings are terminated by a newline. +.TP 10n +.B W +32-bit decimal ints. +.TP 10n +.B B +8-bit unsigned decimal bytes. +.TP 10n +.B V +64-bit decimal bytes. +.TP 10n +.B R +64-bit reals. +.TP 10n +.B I +Disassembled Dis instructions. +.TP 10n +.B P +32-bit hexadecimal address, or +.BR nil . +.PP +The following formats examine properties of specific 32-bit pointers. +.TP 10n +.B L +Examine a list, yielding +a pair of hexadecimal addresses separated by a period, +giving the address of the head and tail of a list. +It is an error to use +.B L +on +.BR nil . +.TP 10n +.B A +Examine an array, yielding +a decimal length, a period, and the address of the 0th element of an array, +or +.BR nil . +.TP 10n +.B C +Examine a string, yielding +the decimal length in characters, a period, and the +.IR utf (6) +representation of the string. +.TP 10n +.B M +Examine a module reference, yielding the address of its global data or +.BR nil . +.PP +The +.B text +file is currently unimplemented. +.SH SOURCE +.B /emu/port/devprog.c +.br +.B /os/port/devprog.c diff --git a/man/3/root b/man/3/root new file mode 100644 index 00000000..c4a0a845 --- /dev/null +++ b/man/3/root @@ -0,0 +1,45 @@ +.TH ROOT 3 +.SH NAME +root \- the root file system +.SH SYNOPSIS +.nf +.B / +.B /chan +.B /dev +.B /env +.B /fd +.B /net +.B /net.alt +.B /nvfs +.B /prog +.B /root +.B /srv +.B /osinit.dis +.fi +.SH DESCRIPTION +This device is set up by the kernel to be the initial root of +the name space. +In the emulation environment, +the names in the one-level tree shown above are mostly just place-holders, +to allow a place on which to +.I bind +(see +.IR sys-bind (2)). +.PP +In the native environment, an arbitrary initial directory structure and +file content can be built-in +when the kernel is configured, but it will typically include at least +the names above, to act as mount points. +The required file +.B /osinit.dis +(not present in the emulation environment) +provides an executable Dis binary when read, +and is the first program invoked when initialising the system. +Other files needed for bootstrap +might also reside in this device. +.SH SOURCE +.B /emu/port/devroot.c +.br +.B /os/port/devroot.c +.SH SEE ALSO +.IR init (8) diff --git a/man/3/rtc b/man/3/rtc new file mode 100644 index 00000000..72d32400 --- /dev/null +++ b/man/3/rtc @@ -0,0 +1,60 @@ +.TH RTC 3 +.SH NAME +rtc \- real-time clock and non-volatile memory +.SH SYNOPSIS +.B bind -b '#r' /dev +.PP +.B /dev/rtc +.br +.B /dev/rtcid +.br +.B /dev/nvram +.SH DESCRIPTION +The +.I rtc +device provides access to the real-time clock and any associated non-volatile memory. +Physical devices supported include the Mostek MK48T12-15 Zeropower/Timekeeper, +the Dallas Semiconductor DS1687 real-time clock, +and the IBM PC real-time clock on various platforms. +.PP +The +.B rtc +file when read returns the time as a decimal number, expressed as the number of seconds since the epoch, +1 January 1970 00:00 GMT. +The clock is set by writing the desired number of seconds since the epoch to the file. +Setting the time in this device has no effect on system time returned by +.B /dev/time +(see +.IR cons (3)), +which must be set separately if desired. +For example, when +.I rtc +is available +.I osinit +(see +.IR init (8)) +uses it to set +.BR /dev/time . +.PP +The +.B nvram +file provides access to the non-volatile memory commonly implemented +by these clock chips. +There are no cross-platform standards for the range of addresses that +can be safely used by Inferno, or for the content and format of the data. +.PP +The +.B rtcid +file holds a decimal number giving the serial number of the device, +set during manufacturing. +The file exists only if a particular device provides such a number. +.SH SOURCE +.B /os/*/devrtc.c +.SH SEE ALSO +.IR cons (3) +.SH BUGS +The +.B rtc +file returns seconds but +.B /dev/time +returns microseconds: it's history. diff --git a/man/3/sd b/man/3/sd new file mode 100644 index 00000000..fb9d4555 --- /dev/null +++ b/man/3/sd @@ -0,0 +1,194 @@ +.TH SD 3 +.SH NAME +sd \- storage device interface +.SH SYNOPSIS +.nf +.B bind #S /dev + +.BI /dev/sd Cu /ctl +.BI /dev/sd Cu /raw +.BI /dev/sd Cu /data +\&... +.fi +.SH DESCRIPTION +The storage device interface serves a two-level directory +giving access to multiple storage units, +typically ATA(PI) or SCSI discs. +Each unit +is accessed via files in the directory named by the controller +to which it is attached, +.IR C , +and by its unit number +.IR u . +The controller naming convention for ATA(PI) units starts +with the first controller being named +.LR C , +the second +.LR D , +etc. up to a maximum of 4 controllers +.RB ([ C-F ]); +legacy controllers are always 'C' and 'D'. +There can be a maximum of 2 units per ATA(PI) controller +.RB ([ 01 ]). +The controller naming convention for SCSI units starts with +the first controller being named +.LR 0 , +the second +.LR 1 , +etc. up to a maximum of 16 controllers +.RB ([ 0-9a-f ]). +There can be a maximum of 16 units per SCSI controller +.RB ([ 0-9a-f ]). +.PP +Units are not accessed before the first attach. +Units may be individually attached using the attach specifier, +for example +.IP +.EX +bind -a '#SsdD0' /dev +.EE +.PP +An attach without a specifier will cause the driver to scan for all possible +units before processing the rest of the name. +.PP +The subdirectory for each unit contains two files, +.I ctl +and +.IR raw . +In addition, +if the unit is a direct-access disc of some type +it may be split into partitions and +the subdirectory may contain a file per partition. +By default, +the partition +.I data +will exist for such media. +.PP +Partitions are added and deleted by writing to the +.I ctl +file +.IP +.EX +part \f2name start-sector end-sector\fP +delpart \f2name\fP +.EE +.PP +The default +.I data +partition may be deleted. +A partition cannot be deleted if a process has it open. +If a change of removable media is detected, +the new media cannot be opened until all open partitions +on the old media are closed. +.PP +Reading the +.I ctl +file returns at least one line of textual information about +the unit. +The first line will always be prefixed by +.B inquiry +and will give a manufacturer and model number if possible. +A line prefixed by +.B config +will be returned for appropriate media, +e.g. for ATA(PI) units the remainder of the line contains +configuration information from the device's +.I identify +command (config and capabilities) +and also the available I/O transfer options; +this is a diagnostic aid. +A line prefixed by +.B geometry +will be returned for appropriate media; +at least two numbers will follow, +the first being the number of sectors contained in the unit +and the second the sector size in bytes. +Any remaining information on the +.B geometry +line is unit-dependent, +for instance, head, +cylinder and sector counts for ATA discs. +If any partitions are defined for the media, +their name, start-sector and end-sector will be returned, +prefixed by +.BR part . +.IP +.EX +% cat /dev/sdD0/ctl +inquiry KENWOOD CD-ROM UCR-421 208E10/20/99 7.39 2 M0 +config 85C0 capabilities 0F00 dma 00550004 dmactl 00000000 +geometry 242725 2352 +part data 0 242725 +% +.EE +.PP +The use of DMA and multi-sector read/write commands may be +enabled and disabled on ATA(PI) units by writing to the +.B ctl +file +.B dma +and +.B rwm +respectively followed by +.B on +or +.BR off . +For example, to enable DMA on a unit that supports it: +.IP +.EX +% echo 'dma on'>/dev/sd00/ctl +.EE +.PP +If supported by the unit, +the standby timer may be enabled: +.IP +.EX +% echo 'standby \f2T\fP'>/dev/sdC0/ctl +.EE +.PP +where +.I T +is the standby timer period in seconds. +.I T +must be between 30 and 1200, +or can be 0 to disable the timer. +.PP +The +.B raw +file is used to execute an arbitrary command on the unit at +a low level. +This is used by programs +to manipulate devices that do not fit the simple storage model +or using special commands for maintenance purposes. +The following steps may be used to execute a command +.IP +\- Write the command to the +.I raw +file; +.IP +\- Read or write data associated with the command, according to the direction of the transfer. +.IP +\- Read the +.I raw +file to retrieve the status of the command, +returned as a text integer. +.SH SOURCE +.B /os/port/devsd.c +.br +.B /os/*/sd*.[hc] +.SH SEE ALSO +.IR ds (3), +.IR floppy (3) +.SH BUGS +.PP +Still in development. +.PP +No LUNs. +.PP +The 4 controller limit for ATA(PI) is not enforced. +.PP +No account is taken of some buggy ATA PCI controllers +such as the CMD640. +.PP +ATA(PI) units come up with DMA and multi-sector read/write +capability disabled. diff --git a/man/3/sign b/man/3/sign new file mode 100644 index 00000000..c992c296 --- /dev/null +++ b/man/3/sign @@ -0,0 +1,92 @@ +.TH SIGN 3 +.SH NAME +sign \- control use of signed modules +.SH SYNOPSIS +.B "bind -a #Σ /dev" +.PP +.B /dev/signerkey +.br +.B /dev/signctl +.SH DESCRIPTION +.I Sign +is a device, still experimental, to +control the use of signed Dis modules. +After system initialisation, any process can load any module. +Using +.IR sign , +.B load +operations can subsequently be restricted for a process and its descendents. +.PP +.B Signerkey +is a file that can be opened for writing only by the host owner +(see +.IR eve (10.2)) +(but any process holding the file descriptor can write to it). +The data written must be the textual representation of a public key in the form produced by +.B Keyring->pktostr +(see +.IR keyring-certtostr (2)). +After a successful write, subsequent +.B load +operations will be limited to Dis modules in any of the following sets: +.IP • +built-in modules +.IP • +unsigned modules found in the kernel's +.IR root (3) +file system +.IP • +currently loaded unsigned modules +.IP • +acceptable signed modules +.PP +A signed Dis module contains a signature in its header, as specified by +.IR dis (6). +The signature contains the result of signing the +remaining data in the file (or more precisely, a cryptographically secure hash of it), using +a configured public key algorithm and the signer's secret key +(for instance using +.BR Keyring->sign , +see +.IR keyring-sha1 (2)). +.PP +A signed module is `acceptable' if it was signed by the secret key corresponding to one +of the public keys written to +.BR signerkey . +There can be up to 8 such keys. +The set of keys and the secured status is shared across +.BR spawn . +.PP +.B Signerkey +is generally readable, and when read yields a list of the keys installed, one per line, +showing +.BR owner , +.BR alg , +and other attributes in +.IB attr = value +format, space separated. +The actual key value is not currently shown. +.PP +.B Signctl +can be read or written only by the host owner. +Each write contains a textual control request. +(Currently there are none such.) +If security is not enabled, it is empty when read. +Otherwise, it contains the number of keys loaded, as a decimal integer. +.SH SOURCE +.B /emu/port/devsign.c +.br +.B /os/port/devsign.c +.SH SEE ALSO +.B wm/rt +in +.IR wm-misc (2), +.IR sys-pctl (2), +.IR dis (6), +.IR createsignerkey (8), +.IR eve (10.2) +.SH DIAGNOSTICS +If the text is not a valid public key or uses an algorithm that is not configured, +a write to +.B signer +fails and sets the error string. diff --git a/man/3/snarf b/man/3/snarf new file mode 100644 index 00000000..810504d1 --- /dev/null +++ b/man/3/snarf @@ -0,0 +1,29 @@ +.TH SNARF 3 hosted +.SH NAME +snarf \- host window system clipboard +.SH SYNOPSIS +.B bind -a #^ /dev +.br +.B bind -b #^ /chan +.PP +.B /dev/snarf +.br +.B /chan/snarf +.SH DESCRIPTION +.I Snarf +serves a single file, +.BR snarf . +Reading the file returns the current +contents of the host window system's own clipboard (equivalent to +the Inferno window system's `snarf buffer'). +If the file is opened for writing, subsequent writes append to an internal buffer; +when the file is closed, that buffer's contents are written to the host window system's clipboard. +.PP +.IR Emu (1) +automatically binds the device to both +.B /dev +and +.B /chan +when it starts up, if a window system is configured. +.SH SEE ALSO +.IR wm (1) diff --git a/man/3/srv b/man/3/srv new file mode 100644 index 00000000..70261be4 --- /dev/null +++ b/man/3/srv @@ -0,0 +1,88 @@ +.TH SRV 3 +.SH NAME +srv \- server registry +.SH SYNOPSIS +.BI "bind #s" +[ +.I spec +] +.B /chan +.PP +.EX +sys->bind("#s\fIspec\fP", "/chan", Sys->MREPL); +.EE +.SH DESCRIPTION +.I Srv +converts between file system operations by applications +and messages on channels, as described in +.IR sys-file2chan (2). +Each attach that does not include a +.I spec +produces a new instance: an empty directory owned +by the current user in which only files +may be created, and then only by +.IR sys-file2chan , +using a special internal interface. +Each such file initially has the same owner as the +directory, and permissions +.B 8r600 +(read-write for the owner only), +but the permissions can be changed by +.BR Sys->wstat +(see +.IR sys-stat (2)) +and thus +.IR chmod (1). +If mode +.B Sys->DMEXCL +is thereby set, the file becomes exclusive-use and can be opened by +only one process at a time. +The file length and +mode bit +.B Sys->DMAPPEND +may also be set by +.B wstat +but are not interpreted by the system. +.PP +Files may be removed, directly using +.IR sys-remove (2) +(and thus +.IR rm (1)), +or indirectly by opening them with mode +.B Sys->ORCLOSE +(see +.IR sys-open (2)). +.I File2chan +also removes the corresponding file when the last references +to the server's read and write channels have gone +(eg, on server exit). +.PP +A +.I spec +may be given to name specific instances of +.IR srv , +so that a new name space can bind in a service created in another. +Only the owner (original creator) of the instance may attach to it, +unless the mode of the service directory is changed +using +.B Sys->wstat +(see +.IR sys-stat (2)) +to have general access. +.SH FILES +.TF /chan +.TP +.B /chan +directory to which +.I srv +is conventionally bound by various applications +.SH SOURCE +.B /emu/port/devsrv.c +.br +.B /os/port/devsrv.c +.SH SEE ALSO +.IR plumb (1), +.IR wm (1), +.IR sys-file2chan (2) +.SH BUGS +A client with a read or write pending can remain blocked if the server exits before reply. diff --git a/man/3/srv9 b/man/3/srv9 new file mode 100644 index 00000000..e6dff525 --- /dev/null +++ b/man/3/srv9 @@ -0,0 +1,108 @@ +.TH SRV9 3 "Plan 9" +.SH NAME +srv9 \- plan 9 server registry +.SH SYNOPSIS +.nf +.B bind -c #₪ /srv + +.BI /srv/ service1 +.BI /srv/ service2 + ... +.fi +.SH DESCRIPTION +On Inferno hosted on Plan 9, +.I srv9 +serves a one-level directory that gives Inferno applications +direct access to Plan 9 services posted in its +.B #s +server registry, +and allows Inferno applications to post services for access by Plan 9 applications. +A service is represented by a file descriptor, usually serving the common file service +protocol described in +.IR intro (5), +allowing it to be mounted (see +.IR bind (1) +and +.IR sys-bind (2)) +in the name space of an application in the other system. +.PP +To access a Plan 9 service in Inferno, open the desired service file; +the resulting file descriptor is connected to the associated Plan 9 service. +When that service is a shared Plan 9 file service, +.I srv9 +automatically starts Plan 9's +.I exportfs +with appropriate options to make the service accessible from Inferno. +It can safely be shared with Plan 9 applications, but note that any path names +mentioned in the attach specifier (see +.IR mount (1) +and +.IR attach (5)) +will be in the Plan 9 application's name space, not the Inferno application's. +(Indeed, a similar caveat applies in Plan 9 itself.) +.PP +To export an Inferno service to Plan 9, create a new file such as +.BR /srv/myserv +using +.B Sys->create +with mode +.B Sys->ORDWR +(see +.IR sys-open (2)) +and any desired permissions for the new service file. +(Note that the +.B #₪ +device must have been bound in with the +.B -c +option, as shown above, to allow file creation.) +If the create is successful, Plan 9's service registry will have a new entry +.BR myserv , +and the file descriptor returned from +.B create +acts as a pipe to any Plan 9 application +that opens the associated service file in Plan 9. +Typically on the Inferno side the file descriptor is passed to +.IR sys-export (2) +or made the standard input of an Inferno file service +(see +.IR intro (4)). +The Plan 9 service file is automatically removed when the Inferno file descriptor is no longer referenced. +.SH EXAMPLES +To make Plan 9's factotum available in Inferno: +.IP +.EX +mount -Aa /srv/factotum /mnt +.EE +.PP +(Note the +.B -A +option to suppress Inferno authentication.) +.PP +To mount the Plan 9 file service from which a Plan 9 machine booted: +.IP +.EX +mount -9 /srv/boot /n/local +.EE +.PP +The +.B -9 +option to +.IR mount (1) +requests Plan 9 authentication; that could also have been used instead of +.B -A +in the previous example. +.PP +To make the environment variables of the current Inferno name space available to Plan 9: +.IP +.EX +fd := sys->create("/srv/infenv", Sys->ORDWR, 8r600); +sys->export(fd, "/env", Sys->EXPWAIT); +.EE +.SH SOURCE +.B /emu/Plan9/devsrv9.c +.SH SEE ALSO +.IR sys-bind (2), +.IR sys-open (2), +.IR sys-export (2), +.IR import (4), +.IR 9srvfs (4) diff --git a/man/3/ssl b/man/3/ssl new file mode 100644 index 00000000..eb53aa2e --- /dev/null +++ b/man/3/ssl @@ -0,0 +1,137 @@ +.TH SSL 3 +.SH NAME +ssl \- secure sockets layer device +.SH SYNOPSIS +.B bind '#D' /n/ssl +.PP +.B /n/ssl/clone +.br +.BI /n/ssl/ n +.br +.BI /n/ssl/ n /data +.br +.BI /n/ssl/ n /ctl +.br +.BI /n/ssl/ n /secretin +.br +.BI /n/ssl/ n /secretout +.SH DESCRIPTION +The +.I ssl +device provides access to a Secure Socket Layer that implements the record layer protocol +of SSLv2. +The device provides encrypting and digesting for many independent connections. +Once associated with a network connection, the +.I ssl +device can be thought of as a filter for the connection. +.I Ssl +can send data in the clear, digested or encrypted. In all cases, if +.I ssl +is associated with both ends of a connection, all messages are delimited. +As long as reads always specify buffers that are of equal or greater lengths than the writes at the other end of the connection, one write will correspond to one read. +.PP +The top-level directory contains a +.B clone +file and numbered directories, each representing a connection. +Opening the +.B clone +file reserves a connection; the file descriptor resulting from the +.IR \%sys-open (2) +will be open on the control file, +.BR ctl , +in the directory that represents the new connection. +Reading the control file will return a text string giving the connection number +(and thus the directory name). +.PP +Writing to +.B ctl +controls the corresponding connection. +The following control messages are possible: +.TP +.BI fd " n" +Associate the network connection on file descriptor +.I n +with the +.I ssl +device. +.TP +.B alg clear +Allow data to pass in the clear with only message delimiters added. The device starts in this mode. +.TP +.B alg sha +Append a SHA digest to each buffer written to +.BR data . +The digest covers the outgoing secret (written to +.BR secretout ), +the message, and a message number which starts at 0 and increments by one for each message. +Messages read have their appended digests compared to a digest computed using the incoming secret (written to +.BR secretin ). +If the comparison fails, so will the read. +.TP +.B alg md4 +Like +.B sha +but using the MD4 message digest algorithm. +.TP +.B alg md5 +Like +.B sha +but using the MD5 message digest algorithm. +.TP +.B alg rc4 +.PD0 +.TP +.B alg rc4_40 +.TP +.B alg rc4_128 +.TP +.B alg rc4_256 +RC4 encrypt each message written to +.B data +with the key written to +.BR secretout , +using the key length as indicated (40-bit keys by default). +.PD +.TP +.B alg des_56_cbc +Encrypt the stream using DES and Cipher Block Chaining (CBC) +.TP +.B alg des_56_ecb +Encrypt the stream using DES and Electronic Code Book (ECB) +.TP +.B alg ideacbc +Encrypt the stream using IDEA and CBC +.TP +.B alg ideaecb +Encrypt the stream using IDEA and ECB +.TP +.BI alg " digest" / crypt +Combine the use of the given +.I digest +algorithm and the stream encryption algorithm +.IR crypt +.PP +Files +.B secretin +and +.B secretout +must be written before digesting or encryption is turned on. If only one is written, they are both assumed to be the same. +.PP +The mode may be changed at any time during a connection. +.PP +The list of algorithms supported by a given implementation of +.I ssl +may be read from the read-only text files +.B encalgs +(encryption algorithms) +and +.B hashalgs +(hashing algorithms for digests). +Each contains a space-separated list of algorithm names. +.PP +.SH "SEE ALSO" +.IR security-ssl (2) +.br +B. Schneier, +.IR "Applied Cryptography , +1996, J. Wiley & Sons, Inc. diff --git a/man/3/switch b/man/3/switch new file mode 100644 index 00000000..4c74db66 --- /dev/null +++ b/man/3/switch @@ -0,0 +1,28 @@ +.TH SWITCH 3 MPC8xx +.SH NAME +switch \- hardware option switch +.SH SYNOPSYS +.nf +.B bind -a '#r' /dev + +.B /dev/switch +.fi +.SH DESCRIPTION +.PP +The switch device serves a one-level directory, +giving access to one read-only file, +.BR switch . +A read returns the value of the development board's +option switch (DS1), represented as a decimal number +from 0 to 15, representing four bits, +each corresponding to one of the four toggles. +Each toggle produces the value 0 when it +is set `ON' and 1 when it is off. +Toggle 1 corresponds to bit +.B 1<<3 +in the number, +toggle 2 corresponds to bit +.BR 1<<2 , +and so on +.SH SOURCE +.B /os/mpc/devrtc.c diff --git a/man/3/tinyfs b/man/3/tinyfs new file mode 100644 index 00000000..cbabe2b5 --- /dev/null +++ b/man/3/tinyfs @@ -0,0 +1,45 @@ +.TH TINYFS 3 +.SH NAME +tinyfs \- file system for miniscule devices +.SH SYNOPSIS +.EX +bind -c #F\fIname\fP /nvfs +.EE +.SH DESCRIPTION +.I Tinyfs +provides file system access to the contents of low-capacity devices, +ranging from several hundred bytes (at least 144 bytes) to at most the order of a kilobyte. +It is provided to support file system access to small non-volatile memories, +as for instance are found in some real-time clock chips, +where IDs, keys, PINs, certificates and the like might be stored by either client or server. +.PP +The file system has only one directory, its root, which can contain only files. +Once created, a write can only append to a file; random updates are not allowed, +although the file could be truncated and rewritten. +.PP +The device specifier following the +.B #F +device name is the +.I name +of a file in +.B /dev +on which the tiny file system will live. +For instance, +.B #Fnvram +refers to +.BR /dev/nvram . +The device must allow seek and write. +During the +.IR attach , +the system scans the device, checking the file system structure +by building a table of files, and checking a checksum stored +in each block; inconsistent structure is reinitialised, and thus +a previously unused device will emerge correctly formatted as an empty tiny file system. +.SH FILES +.TF /nvfs +.TP +.B /nvfs +conventional mount point used by +.IR init (8) +.SH SOURCE +.B /os/port/devtinyfs.c diff --git a/man/3/tls b/man/3/tls new file mode 100644 index 00000000..267afdea --- /dev/null +++ b/man/3/tls @@ -0,0 +1,276 @@ +.TH TLS 3 +.SH NAME +tls \- TLS1 and SSL3 record layer +.SH SYNOPSIS +.nf +.B bind -a #a /net + +.B /net/tls/clone +.B /net/tls/encalgs +.B /net/tls/hashalgs +.BI /net/tls/ n +.BI /net/tls/ n /ctl +.BI /net/tls/ n /data +.BI /net/tls/ n /hand +.BI /net/tls/ n /stats +.BI /net/tls/ n /status +.fi +.SH DESCRIPTION +The TLS device implements the record layer protocols +of Transport Layer Security version 1.0 and Secure Sockets Layer version 3.0. +It does not implement the handshake protocols, which are responsible for +mutual authentication and key exchange. +The +.I tls +device can be thought of as filters providing optional encryption and anti-tampering. +.PP +The top level directory contains a +.B clone +file and subdirectories numbered from zero through at least the last active filter. +Opening the +.B clone +file reserves a filter. +The file descriptor returned from the +.IR sys-open (2) +will point to the control file, +.BR ctl , +of the newly allocated filter. +Reading the +.B ctl +file returns a text string containing the number of the filter directory. +.PP +The filter initially cannot be used to pass messages +and will not encrypt or digest messages. +It is configured and controlled by writing commands to +.BR ctl . +.PP +The following commands are supported: +.TP +.BI fd \ open-fd\ vers +Pass record messages over the communications channel +.IR open-fd . +Initially, outgoing messages use version +.I vers +format records, but incoming messages of either version are accepted. +Valid versions are +.B 0x300 +for SSLv3.0 and +.B 0x301 +for TLSv1.0 (which could be known as SSLv3.01.) +This command must be issued before any other command +and before reading or writing any messages; +it may only be executed once. +.TP +.BI version \ vers +Use +.I vers +format records for all future records, +both outgoing and incoming. +This command may only be executed once. +.TP +.BI secret \ hashalg\ encalg\ isclient\ secretdata +Set up the digesting and encryption algorithms and secrets. +.I Hashalg +and +.I encalg +must be algorithm names returned by the corresponding files. +.I Secretdata +is the base-64 encoded (see +.IR encode (2)) +secret data used for the algorithms. +It must contain at least enough data to populate the +secrets for digesting and encrypting. +These secrets are divided into three categories: digest secrets, keys, and initialization vectors. +The secrets are packed in this order, with no extra padding. +Within each category, the secret for data traveling from the client to the server comes first. +The incoming and outgoing secrets are automatically selected by devtls based on the +.I isclient +argument, which must be non-zero for the client of the TLS handshake, +and zero for the server. +.br +This command must be issued after +.BR version , +and may be issued more than once. +At least one new +.I secret +command must be issued before each +.I changecipher +command; similarly, at least one new +.I secret command +must precede each incoming changecipher message. +.TP +.BI changecipher +Enable outgoing encryption and digesting as configured by the previous +.I secret +command. +This command sends a +.I changecipher +message. +.TP +.BI opened +Enable data messages. +This command may be issued any number of times, +although only the first is significant. +It must follow at least one successful +.I changecipher +command. +.TP +.BI alert \ alertno +Send an alert message. +.I Alertno +may be a valid alert code for either SSLv3.0 or TLSv1.0, +and is mapped to an appropriate code for the protocol in use. +If it is a fatal alert, the filter is set into an error state. +.PP +Application messages and handshake messages are communicated using +.I data +and +.IR hand , +respectively. +Only one +.IR sys-open (2) +of +.I hand +is allowed at a time. +.PP +Any record layer headers and trailers are inserted and +stripped automatically, and are not visible from the outside. +The device tries to synchronize record boundaries with reads and writes. +Each read will return data from exactly one record, +and will return all of the data from the record as long as +the buffer is big enough. +Each write will be converted into an integral number of records, +with all but potentially the last being maximal size. +The maximum record length supported is 16384 bytes. +This behavior is not specified in the protocols, +and may not be followed by other implementations. +.PP +If a fatal alert message is received, or a fatal +.I alert +command issued, the filter is set into an error state. +All further correspondence is halted, +although some pending operations may not be terminated. +Operations on +.I data +will fail with a +.BR "'tls error'" , +and operations on +.I hand +will fail with a textual decoding of the alert. +The current non-fatal alert messages are +.BR "'close notify'" , +.BR "'no renegotiation'" , +and +.BR "'handshake canceled by user'" . +Receipt of one of these alerts cause the next read on +.I hand +to terminate with an error. +If the alert is +.BR "'close notify'", +all future reads will terminate with a +.B "tls hungup" +error. +A +.B "'close notify'" +.I alert +command will terminate all future writes or reads from +.I data +with a +.B "'tls hungup'" +error. +.PP +If an error is encountered while reading or writing +the underlying communications channel, the error is returned +to the offending operation. +If the error is not +.BR "'interrupted'" , +the filter is set into the error state. +In this case, all future operations on +.I hand +will fail with a +.BR "'channel error'" . +.PP +When all file descriptors for a filter have been closed, +the session is terminated and the filter reclaimed for future use. +A +.B "'close notify'" +alert will be sent on the underlying communications channel +unless one has already been sent or the filter is in the error state. +.PP +Reading +.I stats +or +.I status +returns information about the filter. +Each datum is returned on a single line of the form +.IB tag ": " data . +.I Stats +returns the number of bytes communicated by the +.B data +and +.B hand +channels. +The four lines returned are tagged by, in order, +.BR DataIn , +.BR DataOut , +.BR HandIn , +and +.BR HandOut . +.I Status +returns lines following tags: +.BR State , +.BR Version , +.BR EncIn , +.BR HashIn , +.BR NewEncIn , +.BR NewHashIn , +.BR EncOut , +.BR HashOut , +.BR NewEncOut , +and +.BR NewHashOut . +.BR State 's +value is a string describing the status of the connection, +and is one of the following: +.BR 'Handshaking' , +.BR 'Established' , +.BR 'RemoteClosed' , +.BR 'LocalClosed' , +.BR 'Alerting' , +.BR 'Errored' , +or +.BR 'Closed' . +.BR Version 's +give the hexadecimal record layer version in use. +The +.B Enc +and +.B Hash +fields return name of the current algorithms in use +or ready to be used, if any. +.PP +Reading +.I encalgs +and +.I hashalgs +will give the space-separated list of algorithms implemented. +This will always include +.BR clear , +meaning no encryption or digesting. +Currently implemented encryption algorithms are +.B 'rc4_128' +and +.BR '3des_ede_cbc' . +Currently implemented hashing algorithms are +.B 'md5' +and +.BR 'sha1' . +.SH "SEE ALSO" +.IR listen (1), +.IR sys-dial (2), +.IR ssl (3) +\".IR pushtls (2) +.SH SOURCE +.B /emu/port/devtls.c +.br +.B /os/port/devtls.c diff --git a/man/3/touch b/man/3/touch new file mode 100644 index 00000000..d86933d1 --- /dev/null +++ b/man/3/touch @@ -0,0 +1,138 @@ +.TH TOUCH 3 +.SH NAME +touch \- touch screen +.SH SYNOPSIS +.EX +bind -a '#T' /dev + +/dev/touchcal +/dev/touchctl +/dev/touchstat +/dev/touch +.EE +.SH DESCRIPTION +The touch screen driver +serves a one-level directory giving access to a touch panel. +The driver attempts to compensate +for the warped nature of the panels we have used: +amongst other things, +it repeatedly samples the panel to obtain a stable reading, +and applies a transformation to the +.RI ( "x, y" ) +coordinates obtained to account for the peculiar distortions of individual panels. +A panel should be calibrated by +.IR touchcal (8) +before use. +.PP +There are two variants of the driver. +One drives a +DynaPro touch panel +on a York Electronics Centre BRD/98/024 interface (Version A) +accessed via the Motorola MPC8xx SPI interface. +The other drives a different pressure-sensitive touch panel on a webphone reference design. +.PP +The driver initialisation starts a kernel process to read samples from the +touch screen and provide them to the system through the interface used +for mouse events. +The events generated mark +`mouse button' 1 as down as long as the panel is touched and up otherwise. +Other `mouse buttons' are always up. +This is adequate for many applications (but not +.IR acme (1)). +.PP +The data file +.B touch +is read-only. +Each read samples the touch panel +and returns two decimal numbers, separated by a space, +giving the +.I x +and +.I y +coordinates read. +The values are both -1 if a consistent reading could not be made. +This file is used only for debugging; the window system should not be running. +.PP +The control file +.B touchctl +accepts commands to set driver parameters: +.TF "X a b c" +.PD +.TP +.BI X " a b c" +(MPC8xx only) Set the parameters for a transformation of the X-coordinates received from the +panel: +.RS +.IP +.IR "x' = a*x+b*y+c" +.PP +The values are fixed-point: 1.0 is represented by 2\u\s-216\s0\d. +.RE +.TP +.BI Y " d e f" +(MPC8xx only) Set the parameters for a similar transformation of Y-coordinates: +.RS +.IP +.IR "y' = d*x+e*y+f" +.RE +.TP +.BI s n +Sample every +.I n +milliseconds. +.TP +.BI c "p sx sy" +(SA1100) Wait for the screen to be touched and sample parameters for point +.IR p , +0\(<=\fIp\fP\(<=3, +corresponding to one of the four corners of the screen. +Save the sample parameters for calibration. +.TP +.B C +(SA1100) Compute calibration parameters based on previously stored samples. +.TP +.BI r n +Sets delay between touch reads. +.TP +.BI R n +Average +.RI 2 ^n +readings each sample. +.TP +.BI f n +Set the filter level (-1024 \(<=\fIn\fP\(<=1024). +.TP +.BI e "x y" +Set error term for +.I x +and +.IR y ; +normally calculated by +.BR C . +.TP +.BI t "p r" +Set pressure threshold for press and release +.PP +Reads of +.B touchctl +return all current parameters in the same form as the commands +(allowing settings to be read from the file and later restored by simply writing them back). +.PP +The read-only file +.B touchstat +contains four decimal values separated by spaces or newlines: +the number of raw samples, the number of valid samples, +microseconds waiting for samples, and microseconds spent processing samples. +.PP +The SA1100 driver +provides a file +.B /dev/touchcal +that holds the calibration results as a set of +decimal numbers for each of the four sample points, one set per line. +The results can be saved and written back to restore the same calibration. +.SH SOURCE +.B /os/mpc/devtouch.c +.br +.B /os/sa1100/devtouch.c +.SH SEE ALSO +.IR touchcal (8) diff --git a/man/3/tv b/man/3/tv new file mode 100644 index 00000000..bc3fb378 --- /dev/null +++ b/man/3/tv @@ -0,0 +1,179 @@ +.TH TV 3 +.SH NAME +tv \- Hauppage TV device +.SH NAME +.B +bind -b #V /dev +.PP +.B /dev/tv +.br +.B /dev/tvctl +.SH DESCRIPTION +The +.I tv +device serves two files giving access to a Hauppage television card +in NTSC mode (only). +.PP +The control device +.B tvctl +accepts the following commands to control +tuning and image processing: +.TP +.B init +Reset the device to the default settings. +.TP +.BI window " minx miny maxx maxy" +Set the display window size (default: none). +.TP +.BI colorkey " rl rh gl gh bl bh" +Set the key limits for chromakey display to +the given `low' and `high' values for +each of red, green and blue +(default: 15 63 255 15 15 63), and enable +use of the colour key. +The value 255 for a lower limit disables the limit. +.TP +.BI capture " minx miny maxx maxy" +Set the capture window (default: none); +see the description of reading the +.B tv +file, below. +.TP +.BI capbrightness " n" +Set the brightness of a captured frame to +.IR n , +on a scale from 0 to 100 +(default: 13). +.TP +.BI capcontrast " n" +Set the contrast of a captured frame to +.IR n , +on a scale from 0 to 100 +(default: 57). +.TP +.BI capsaturation " n" +Set the saturation of a captured frame to +.IR n , +on a scale from 0 to 100 +(default: 51). +.TP +.BI caphue " n" +Set the hue of a captured frame to +.IR n , +on a scale from 0 to 100 +(default: 0). +.TP +.BI capbw " n" +Capture colour +.RI ( n=0 ) +or monochrome +.RI ( n=1 ); +(default: 0). +.TP +.BI brightness " n" +Set the image brightness to +.IR n , +on a scale from 0 to 100 +(default: 0) +.TP +.BI contrast " n" +Set the image contrast to +.IR n , +on a scale from 0 to 100 +(default: 54) +.TP +.BI saturation " n" +Set image saturation to +.IR n , +on a scale from 0 to 100 +(default: 54) +.TP +.BI source " n" +Set the input source to +.I n +(default: video input 0). +.TP +.BI svideo " n" +If +.I n +is non-zero, set the input capture format to +S-Video. +.TP +.BI format " n" +Set the input format to +.I n +(0, NTSC-M; 1, NTSC-443; 2, external control). +Default: 0. +.TP +.BI channel " c f" +Sets the right frequency for HRC CATV channel +.IR c , +with fine tuning by signed offset +.I f +(in MHz). +.TP +.BI volume " m" [ " n " ] +Set the volume of left and right channels to +.I m +and +.IR n , +on a scale from 0 to 100 +(default: 80). +If only +.I m +is given, set both left and right volumes to +.IR m . +.TP +.BI bass " n" +Set the bass to +.IR n , +on a scale from 0 to 100 (default: 50). +.TP +.BI treble " n" +Set the treble to +.IR n , +on a scale from 0 to 100 (default: 50). +.TP +.BI freeze " n" +If +.I n +is non-zero, freeze the current frame; +if +.I n +is zero, unfreeze the video. +.PP +The data file +.B tv +is read-only. +Reading is valid only after a capture window has been set +(see +.B capture +above). +Each read at file offset 0 causes the contents of the input video image +within the previously-set capture window to be +captured. +The frame data is successively returned +in this and subsequent reads until a short read signals that +all frame data has been transferred. +The data is returned in Plan 9 +.I picfile +format, with a two line textual header followed by an empty +line, followed by the image data in binary format. +The header has the form: +.IP +.B "TYPE=ccir601" +.br +.BI "WINDOW=" "minx miny maxx maxy" +.PP +The +.B WINDOW +coordinates are those of the capture window. +The image data is organised as interleaved scan lines from top to bottom of the window, +with UY0 and VY1 values alternating, with two bytes per value, stored high-order byte +first, encoded according to the IEEE digital component video standard. +.SH SOURCE +.B /os/port/devtv.c +.br +.B /os/pc/tv.h +.SH SEE ALSO +.IR audio (3) diff --git a/man/3/usb b/man/3/usb new file mode 100644 index 00000000..90ebc851 --- /dev/null +++ b/man/3/usb @@ -0,0 +1,143 @@ +.TH USB 3 MPC823 +.SH NAME +usb \- USB device interface +.SH SYNOPSYS +.nf +.B bind -a '#U' /dev + +.B /dev/usbctl +.B /dev/usbdata +.B /dev/usbstat +.B /dev/usbaddr +.B /dev/usbframe +.B /dev/usbsetup +.fi +.SH DESCRIPTION +.PP +The USB device serves a one-level directory, +giving access to six files. +They provide an interface to the device (slave) mode of the 823/850 USB controller, +allowing an Inferno system to provide services to the USB host. +The controller's endpoints are configured as follows. +Endpoint 0 is the default USB control endpoint, as required by the USB standard. +Endpoint 1 responds to bulk output requests from the host; +endpoint 2 responds to bulk input requests from the host; +endpoint 3 is unused. +.PP +The data file +.B usbdata +provides read and write access to endpoints 1 and 2. +When the file is read, it returns data written to endpoint 1 by the USB host. +Data written to the file is provided in response to the host's read requests +on endpoint 2. +Output data is converted to packets limited to the maximum packet +length for the endpoint (see the +.B maxpkt +control request, below), which is 1023 bytes by default. +Note that zero length records can be transmitted and +received on USB. +.PP +The file +.B usbsetup +provides read and write access to endpoint 0. +When the file is read, it returns +SETUP +requests from the host. +If a given request requires a reply, the reply must be written to the file +(host requests will automatically be NAKd until then). +Requests and replies are in binary form as defined in the USB specification, +except for the reset message described below. +The driver itself interprets all +SET_ADDRESS +requests from the host, and sets the controller's address accordingly. +That request will therefore not be visible on the +.B usbsetup +file. +.PP +A USB bus or device reset sets the controller's USB address to zero, +the USB `default address' for configuration. +It also resets all data toggles to DATA0. +A subsequent read of +.B usbsetup +will return the following special 8-byte reset message: +.IP +.EX +byte 16rFF, byte 16rFF, byte 'r', byte 'e', +.br +byte 's', byte 'e', byte 't', byte '\en' +.EE +.PP +which does not resemble a normal SETUP message. +Further reads and writes on +.B usbdata +will return errors until that file has been closed and reopened. +.PP +The control file +.B usbctl +receives textual commands to set device parameters and responses: +.TP +.BI maxpkt "n nb" +Set the maximum packet size for endpoint +.I n +to +.I nb +bytes. +.I Nb +must be between 8 and 64 bytes for the control endpoint 0, +and between 1 and 1023 bytes for the other endpoints. +The default is 8 bytes for endpoint 0 and 1023 bytes for the others. +.TP +.BI rdtog "n t" +Set the data toggle for input in endpoint +.I n +to +.IR t , +which must be either 0 (DATA0) or 1 (DATA1). +.TP +.BI stall "n" +Cause endpoint +.I n +to respond to host IN and OUT tokens by stalling. +.TP +.BI unstall "n" +Cancel the effect of a previous +.B stall +request on endpoint +.IR n . +.TP +.BI wrtog "n t" +Set the data toggle for the next packet output by endpoint +.I n +to +.IR t , +which must be either 0 (DATA0) or 1 (DATA1). +.PP +Stalling an endpoint causes IN and OUT +transactions from the host to return a `stalled' error status. +On the control endpoint (endpoint 0), however, +SETUP transactions will still arrive on +.BR usbsetup , +and the arrival of a SETUP will automatically clear the `stalled' status +for the endpoint, +allowing an application to reject a +control request (by stalling the subsequent status transaction) +without stalling the control endpoint by rejecting subsequent +SETUP transactions. +.PP +The status file +.B usbstat +is a read-only file, +containing one line of statistics for each endpoint, giving: +endpoint number; data toggles; maximum packet size; +count of input and output bytes and packets; and counts +of various error conditions. +.PP +The read-only file +.B usbaddr +contains a single number giving the current device address. +.PP +The read-only file +.B usbframe +contains a single line giving the current USB frame number. +.SH SOURCE +.B /os/mpc/devusb.c diff --git a/man/3/vga b/man/3/vga new file mode 100644 index 00000000..526d5231 --- /dev/null +++ b/man/3/vga @@ -0,0 +1,247 @@ +.TH VGA 3 +.SH NAME +vga \- VGA controller device +.SH SYNOPSIS +.B bind #v /dev +.PP +.B /dev/vgactl +.br +.B /dev/vgaovlctl +.br +.B /dev/vgaovl +.SH DESCRIPTION +The VGA device allows configuration of a graphics controller +on a PC (and any other platform with VGA devices). +.B Vgactl +allows control over higher-level settings such as display height, width, depth, +controller and hardware-cursor type. +Along with the I/O-port registers +provided by +.IR arch (3), +it is used to implement configuration and setup of VGA controller cards. +....This is usually performed by +.....IR vga (8). +.PP +Writing strings to +.B vgactl +configures the VGA device. +The following are valid commands. +.TP +.BI size " X" x Y x "Z chan" +Set the size of the screen image to be +.I X +pixels wide +and +.I Y +pixels high. +Each pixel is +.I Z +bits as specified by +.IR chan , +whose format is described in +.IR image (6). +.TP +.BI actualsize " X" x Y +Set the physical size of the display to be +.I X +pixels wide by +.I Y +pixels high. +This message is optional; +it is used to implement panning and to accommodate +displays that require the in-memory screen image +to have certain alignment properties. +For example, a 1400x1050 screen with a 1408x1050 in-memory image +will use +.B "size 1408x1050 +but +.BR "actualsize 1400x1050" . +.TP +.BI panning " mode" +Depending on whether +.I mode +is +.B on +or +.BR off , +enable or disable panning in a virtual screen. +If panning is on and the screen's +.B size +is larger than its +.BR actualsize , +the displayed portion of the screen will pan to follow the mouse. +Setting the panning mode after the first attach of the +.B #i +driver has no effect. +.TP +.BI type " ctlr" +Set the type of VGA controller being used. +.I Ctlr +is one of +.BR ark200pv , +.BR clgd542x , +.BR clgd546x , +.BR ct65545 , +.BR cyber938x , +.BR hiqvideo , +.BR mach64xx , +.BR mga2164w , +.BR neomagic , +.BR s3 , +and +.BR t2r4 . +.IP +Note that this list does not indicate the full set of VGA chips +supported. For example, +.B s3 +includes the 86C801/5, 86C928, Vision864, and Vision964. +It is the job of a user-level program +....IR vga (8) +to recognise which particular chip is being used and to initialize it +appropriately. +.TP +.BI hwgc " gc" +Set the type of hardware graphics cursor being used. +.I Gc +is one of +.BR ark200pvhwgc , +.BR bt485hwgc , +.BR clgd542xhwgc , +.BR clgd546xhwgc , +.BR ct65545hwgc , +.BR cyber938xhwgc , +.BR hiqvideohwgc , +.BR mach64xxhwgc , +.BR mga2164whwgc , +.BR neomagichwgc , +.BR rgb524hwgc , +.BR s3hwgc , +.BR t2r4hwgc , +.BR tvp3020hwgc , +and +.BR tvp3026hwgc . +A value of +.B off +disables the cursor. +There is no software cursor. +.TP +.BI palettedepth " d" +Set the number of bits of precision used by the +VGA palette to +.IR d , +which must be either +.B 6 +or +.BR 8 . +.TP +.B blank +Blank the screen. +This consists of setting the hardware +color map to all black as well as, on some controllers, setting the +VGA hsync and vsync signals so as to turn off +VESA DPMS-compliant monitors. +The screen also blanks after 30 minutes of inactivity. +The screen can be unblanked by moving the mouse. +.TP +.BI blanktime " minutes" +Set the timeout before the +screen blanks; the default is 30 minutes. +If +.I minutes +is zero, blanking is disabled. +.TP +.BI hwaccel " mode" +Depending on whether +.I mode +is +.B on +or +.BR off , +enable or disable whether hardware acceleration +(currently for rectangle filling and moving) +used by the graphics engine. +The default setting is +.BR on . +.TP +.BI hwblank " mode" +Depending on whether +.I mode +is +.B on +or +.BR off , +enable or disable the use of DPMS blanking +(see +.B blank +above). +.TP +.BI linear " size align" +Use a linear screen aperture of size +.I size +aligned on an +.IR align -byte +boundary. +.TP +.B drawinit +Initialize the graphics hardware. +This must be sent after setting the +.BR type . +.PP +Reading +.B vgactl +returns the current settings, one per line. +.PP +Some VGA cards support overlay graphics. +Writing strings to +.B vgaovlctl +configures such cards. +The following are valid overlay control commands: +.TP +.BI openctl +opens the overlay device. +.TP +.BI configure " w h format" +allocates resources inside the driver to support an overlay area +of width +.I w +and height +.I h +pixels. Currently, the only supported +.I format +is +.B YUYV +packed. +In +.B YUYV +two pixels are encoded by their separate Y values +and their combined U and V values. +The size of the two pixels is 32 bits. +.TP +.BI enable " x y w h" +enables drawing data on the display through the overlay mode. The data +is drawn at position +.IR x , y +and has a width and height of +.IR w , h +respectively. +.TP +.BI closectl +terminates overlay control. +.PP +Overlay data can be written to +.BR vgaovl . +.SH EXAMPLES +The following disables hardware acceleration. +.IP +.EX +echo hwaccel off > /dev/vgactl +.EE +.SH SOURCE +.B /os/pc/devvga.c +.SH SEE ALSO +.IR arch (3) +....IR vga (8) +.SH BUGS +The hardware graphics cursor on the +.B et4000 +does not work in 2x8-bit mode. diff --git a/man/3/vid b/man/3/vid new file mode 100644 index 00000000..e21645e6 --- /dev/null +++ b/man/3/vid @@ -0,0 +1,64 @@ +.TH VID 3 MPC823 +.SH NAME +vid \- Motorola 823 video output +.SH SYNOPSIS +.B bind -b #v /dev +.PP +.B /dev/viddata +.br +.B /dev/vidctl +.br +.B /dev/vidcram +.SH DESCRIPTION +The +.I vid +device serves two +files giving basic access +to the on-chip video output of the Motorola 823. +It assumes a video hardware configuration exactly like that of the 823FADS +board, with an I²C interface to an off-chip ADV7176 NTSC/PAL converter +at I²C address 0x54. +.PP +The control device +.B vidctl +accepts the following commands: +.TP +.B on +Disable LCD panel (if present) and enable output from the video frame buffer. +.TP +.B off +Stop display from the video frame buffer and re-enable the LCD panel (if present). +.TP +.BI mode " m" +Set the video output format to +.IR m , +which is one of: +.BR ntsc , +.BR pal-i , +.B pal-m +or +.BR pal-n . +This command is only effective when video output is off. +When next switched on, the both the video controller RAM and +ADV7176 are reprogrammed to the new format. +.PP +Video data can be written to the video frame buffer +by writes of the +.B viddata +file. +The file offset selects the starting byte within the frame buffer. +Reads return the corresponding data from the frame buffer. +The application is responsible for formatting the data as the 823's video +encoder requires, for the selected video format. +.PP +The file +.B vidcram +gives read and write access to the contents of the +video control RAM. +The file offset addresses bytes in the RAM; values can be read from or +written to the RAM in groups of 4-byte big-endian words. +.SH SOURCE +.B /os/mpc/devvid.c +.SH BUGS +Square pixel mode cannot be used on the FADS board: +no suitable video clock source is available. diff --git a/man/4/0intro b/man/4/0intro new file mode 100644 index 00000000..f7d28560 --- /dev/null +++ b/man/4/0intro @@ -0,0 +1,16 @@ +.TH INTRO 4 +.SH NAME +intro \- introduction to file servers +.SH DESCRIPTION +This section describes programs that serve Styx +(see +.IR intro (5)), +and can therefore +be mounted, generating a new part of the name space. +Some, such as +.IR dossrv , +thereby make the contents of a foreign file format visible directly +to Inferno applications; +others, such as +.IR acme , +provide their own services through operations on files in a name space. diff --git a/man/4/9srvfs b/man/4/9srvfs new file mode 100644 index 00000000..19089931 --- /dev/null +++ b/man/4/9srvfs @@ -0,0 +1,73 @@ +.TH 9SRVFS 4 "Plan 9" +.SH NAME +9srvfs \- add Inferno service to Plan 9 service registry +.SH SYNOPSIS +.B 9srvfs +[ +.BI -p " perm" +] +.I srvname +.I source +.SH DESCRIPTION +.I 9srvfs +is only usable (or indeed of interest) on Inferno hosted under Plan 9. +It uses +.IR srv9 (3) +to make an Inferno service +.I source +available to Plan 9 applications via the Plan 9 service registry. +.I Srv9 (3) +must previously have been bound to +.B /srv +in the current name space, with +.B -c +to allow file creation (see +.IR bind (1)). +.PP +.I Source +may be either a command or the name of a directory. +If +.I source +is surrounded by braces +.RB ( { +and +.BR } ), +it is invoked as a +.IR sh (1) +command, and its standard input (sic) is posted as Plan 9 service +.BI /srv/ srvname +with permissions +.I perm +(default: mode 600). +Otherwise, +.I source +is taken to be a directory that is the root of a name space to export to Plan 9, +an exporting file service is started (see +.IR sys-export (2)), +and again posted as Plan 9 service +.BI /srv/ srvname, +and the export terminates when the Plan 9 service file +has been removed and the last mounted instance goes away in Plan 9. +.SH EXAMPLE +Make the current Inferno environment variables available to Plan 9 applications: +.IP +.EX +bind -c '#₪' /srv # if not already done +9srvfs infenv /env +.EE +.PP +The name space can then be mounted in Plan 9, +allowing variables to be read and written in that Inferno environment: +.IP +.EX +mount -c /srv/infenv /n/ftp +ls /n/ftp +cat /n/ftp/emuargs +echo masked man >/n/ftp/zorro +.EE +.SH SOURCE +.B /appl/cmd/9srvfs.b +.SH SEE ALSO +.IR bind (1), +.IR srv9 (3), +.IR import (4) diff --git a/man/4/INDEX b/man/4/INDEX new file mode 100644 index 00000000..61e69196 --- /dev/null +++ b/man/4/INDEX @@ -0,0 +1,30 @@ +intro 0intro +9srvfs 9srvfs +acme acme +archfs archfs +cpu cpu +dbfs dbfs +rawdbfs dbfs +9660srv dossrv +dossrv dossrv +export export +factotum factotum +feedkey factotum +ftpfs ftpfs +9export import +import import +iostats iostats +keyfs keyfs +keysrv keysrv +kfs kfs +lockfs lockfs +logfile logfile +memfs memfs +mntgen mntgen +namespace namespace +palmsrv palmsrv +ramfile ramfile +registry registry +regquery registry +spree spree +tarfs tarfs diff --git a/man/4/acme b/man/4/acme new file mode 100644 index 00000000..092d01dc --- /dev/null +++ b/man/4/acme @@ -0,0 +1,406 @@ +.TH ACME 4 +.SH NAME +acme \- control files for text windows +.SH SYNOPSIS +.B acme +[ +.B -f +.I varfont +] [ +.B -F +.I fixfont +] +[ +.I file +\&... ] +.SH DESCRIPTION +The text window system +.IR acme (1) +serves a variety of files for reading, writing, and controlling +windows. +Some of them are virtual versions of system files for dealing +with the virtual console; others control operations +of +.I acme +itself. +When a command is run under +.IR acme , +a directory holding these files is mounted on +.B /mnt/acme +(also bound to +.BR /chan ) +and also +.BR /dev/acme ; +the files mentioned here +appear in both these directories. +.PP +Some of these files supply virtual versions of services available from the underlying +environment, in particular the character terminal files +.IR cons (3). +Other files are unique to +.IR acme . +.TP +.B acme +is a subdirectory used by +.B win +(see +.IR acme (1)) +as a mount point for the +.I acme +files associated with the window in which +.B win +is running. +It has no specific function under +.I acme +itself. +.TP +.B cons +is the standard and diagnostic output file for all commands +run under +.IR acme . +(Input for commands is redirected to +.BR /dev/null .) +Text written to +.B cons +appears in a window labelled +.IB dir /+Errors\f1, +where +.I dir +is the directory in which the command +was run. +The window is created if necessary, but not until text is actually written. +.TP +.B consctl +Is an empty unwritable file present only for compatibility. +.TP +.B index +holds a sequence of lines of text, one per window. Each line has 5 decimal numbers, +each formatted in 11 characters plus a blank\(emthe window ID; +number of characters (runes) in the tag; +number of characters in the body; +a 1 if the window is a directory, 0 otherwise; +and a 1 if the window is modified, 0 +otherwise\(emfollowed by the tag up to a newline if present. +Thus at character position 5×12 starts the name of the window. +If a file has multiple zeroxed windows open, +only the most recently used will appear in the +.B index +file. +.TP +.B label +is an empty file, writable without effect, present only for compatibility. +.TP +.B new +A directory analogous to the numbered directories +.RI ( q.v. ). +Accessing any +file in +.B new +creates a new window. Thus to cause text to appear in a new window, +write it to +.BR /dev/new/body . +For more control, open +.BR /dev/new/ctl +and use the interface described below. +.LP +.PP +Each +.I acme +window has associated a directory numbered by its ID. +Window IDs are chosen sequentially and may be discovered by the +.B ID +command, by +reading the +.B ctl +file, or +indirectly through the +.B index +file. The files in the numbered directories are as follows. +.TP +.B addr +may be written with any textual address (line number, regular expression, etc.), +in the format understood by button 3 but without the initial colon, including compound addresses, +to set the address for text accessed through the +.B data +file. +When read, it returns the value of the address that would next be read +or written through the +.B data +file, in the format +.BI # m ,# n +where +.I m +and +.I n +are character (not byte) offsets. If +.I m +and +.I n +are identical, the format is just +.BI # m\f1. +Thus a regular expression may be evaluated by writing it to +.B addr +and reading it back. +The +.B addr +address has no effect on the user's selection of text. +.TP +.B body +holds contents of the window body. It may be read at any byte offset. +Text written to +.B body +is always appended; the file offset is ignored. +.TP +.B ctl +may be read to recover the five numbers as held in the +.B index +file, described above. +Text messages may be written to +.B ctl +to affect the window. +Each message is terminated by a newline and multiple +messages may be sent in a single write. +.RS .5i +.TF "dumpdir\ directory" +.TP +.B addr=dot +Set the +.B addr +address to that of the user's selected text in the window. +.TP +.B clean +Mark the window clean as though it has just been written. +.TP +.B cleartag +Remove all text in the tag after the vertical bar. +.TP +.B del +Equivalent to the +.B Del +interactive command. +.TP +.B delete +Equivalent to the +.B Delete +interactive command. +.TP +.B dot=addr +Set the user's selected text in the window to the text addressed by the +.B addr +address. +.TP +.BI dump " command +Set the command string to recreate the window from a dump file. +.TP +.BI dumpdir " directory +Set the directory in which to run the command to recreate the window from a dump file. +.TP +.B get +Equivalent to the +.B Get +interactive command with no arguments; accepts no arguments. +.TP +.B limit=addr +When the +.B ctl +file is first opened, regular expression context searches in +.B addr +addresses examine the whole file; this message restricts subsequent +searches to the current +.B addr +address. +.TP +.B mark +Cancel +.BR nomark , +returning the window to the usual state wherein each modification to the +body must be undone individually. +.TP +.BI name " name +Set the name of the window to +.IR name . +.TP +.B nomark +Turn off automatic `marking' of changes, so a set of related changes +may be undone in a single +.B Undo +interactive command. +.TP +.B noscroll +Turn off automatic `scrolling' of the window to show text written to the body. +.TP +.B put +Equivalent to the +.B Put +interactive command with no arguments; accepts no arguments. +.TP +.B scroll +Cancel a +.B noscroll +message, returning the window to the default state wherein each write +to the +.B body +file causes the window to `scroll' to display the new text. +.TP +.B show +Guarantee at least some of the selected text is visible on the display. +.TP +.B noecho +Stop echoing characters sent to the window but indicate their presence by +printing an asterisk. +.TP +.B echo +Turns +.BR noecho +off. +.RE +.PD +.TP +.B data +is used in conjunction with +.B addr +for random access to the contents of the body. +The file offset is ignored when writing the +.B body +file, but the character (not byte) offset may be set with +.B addr +and then read from the +.B data +file. +Text, which must contain only whole characters (no `partial runes'), +written to +.B data +replaces the characters addressed by the +.B addr +file and sets the address to the null string at the end of the written text. +A read from +.B data +returns as many whole characters as the read count will permit starting +at the beginning of the +.B addr +address (the end of the address has no effect) +and sets the address to the null string at the end of the returned +characters. +.TP +.B event +When a window's +.B event +file is open, changes to the window occur as always but the +actions are also reported as +messages to the reader of the file. Also, user actions with buttons 2 and 3 +(other than chorded +.B Cut +and +.BR Paste , +which behave normally) have no immediate effect on the window; +it is expected that the program reading the +.B event +file will interpret them. +The messages have a fixed format: +a character indicating the origin or cause of the action, +a character indicating the type of the action, +four free-format blank-terminated decimal numbers, +optional text, and a newline. +The first and second numbers are the character addresses of the action, +the third is a flag, +and the final is a count of the characters in the optional text, which +may itself contain newlines. +The origin characters are +.B E +for writes to the +.B body +or +.B tag +file, +.B F +for actions through the window's other files, +.B K +for the keyboard, and +.B M +for the mouse. +The type characters are +.B D +for text deleted from the body, +.B d +for text deleted from the tag, +.B I +for text inserted to the body, +.B i +for text inserted to the tag, +.B L +for a button 3 action in the body, +.B l +for a button 3 action in the tag, +.B X +for a button 2 action in the body, and +.B x +for a button 2 action in the tag. +.IP +If the relevant text has less than 256 characters, it is included in the message; +otherwise it is elided, the fourth number is 0, and the program must read +it from the +.B data +file if needed. No text is sent on a +.B D +or +.B d +message. +.IP +For +.BR D , +.BR d , +.BR I , +and +.BR i +the flag is always zero. +For +.BR X +and +.BR x , +the flag is a bitwise OR (reported decimally) of the following: +1 if the text indicated is recognized as an +.I acme +built-in command; +2 if the text indicated is a null string that has a non-null expansion; +if so, another complete message will follow describing the expansion +exactly as if it had been indicated explicitly (its flag will always be 0); +8 if the command has an extra (chorded) argument; if so, +two more complete messages will follow reporting the argument (with +all numbers 0 except the character count) and where it originated, in the form of +a fully-qualified button 3 style address. +.IP +For +.B L +and +.BR l , +the flag is the bitwise OR of the following: +1 if +.I acme +can interpret the action without loading a new file; +2 if a second (post-expansion) message follows, analogous to that with +.B X +messages; +4 if the text is a file or window name (perhaps with address) rather than +plain literal text. +.IP +For messages with the 1 bit on in the flag, +writing the message back to the +.B event +file, but with the flag, count, and text omitted, +will cause the action to be applied to the file exactly as it would +have been if the +.B event +file had not been open. +.TP +.B tag +holds contents of the window tag. It may be read at any byte offset. +Text written to +.B tag +is always appended; the file offset is ignored. +.SH SOURCE +.B /appl/acme +.br +.B /appl/acme/acme +.SH SEE ALSO +.IR acme (1), +.IR cons (3) diff --git a/man/4/archfs b/man/4/archfs new file mode 100644 index 00000000..308d95dc --- /dev/null +++ b/man/4/archfs @@ -0,0 +1,64 @@ +.TH ARCHFS 4 +.SH NAME +archfs \- mount a mkfs archive +.SH SYNOPSIS +.B archfs +[ +.B -ab +] [ +.B -s +] [ +.B -m mountpoint +] +.I archfile +[ +.I prefix ... +] +.SH DESCRIPTION +.I Archfs +mounts at +.IR mountpoint +(default: +.BR /mnt/arch ), +a read-only file system representing the contents of +.IR archfile , +which is a file of the format produced by +.IR mkfs (8) +with the +.B -a +option. +Typically the archive file will have been created by +.IR mkfs (8) +or +.IR create (8). +Any +.I prefix +names limit the file system's contents to files and directories in the +archive whose path names start with one of the prefixes. +.PP +The +.B -a +and +.B -b +options cause the archive contents to be mounted after or before the +mount point's existing contents, in a union dirctory (see +.IR bind (1) +for details). +Normally the archive contents replace the contents of +.IR mountpoint . +The +.B -s +option causes the rest of the archive to be skipped once a file is found in the archive which +does not start with any of the given prefixes. This is useful an archive is known to start +with a description of its contents (eg, the +.B /wrap +directory provided by +.IR create (8)), +and that is all that is needed under +.IR mountpoint . +.SH SOURCE +.B /appl/cmd/archfs.b +.SH SEE ALSO +.IR tarfs (4), +.IR mkfs (8), +.IR create (8) diff --git a/man/4/cpu b/man/4/cpu new file mode 100644 index 00000000..e6de49c4 --- /dev/null +++ b/man/4/cpu @@ -0,0 +1,141 @@ +.TH CPU 4 +.SH NAME +cpu \- cpu server resource +.SH SYNOPSIS +.B grid/srv/cpu +.br +.B grid/runcpu +.SH DESCRIPTION +.I Cpu +is a file server that provides a processing resource. This resource imports a namespace from one or more external sources and executes selected commands within it. +.I Cpu +creates its own namespace containing three files +.BR ctl , +.B cmd +and +.B ns +which are used to configure the processing task prior to execution, this namespace is exported and served on +.I stdin. +In order to configure a processing task, a client must first mount the +.I cpu +namespace. Once this is done, reading the +.B cmd +and +.B ns +files will display the current configuration of commands to be executed or directories to be imported respectively. The +.B ctl +file is used to modify the current configuration and accepts the following input: +.IP +.B add cmd +.I command +.IP +.B add ns +.I path address +.IP +.B del [cmd|ns] +.I index +.PP +Where +.I command +is the name (including full path and parameters) of a command to be executed. +.I Path +is the name of a directory to import from the exported namespace available at +.I address +and +.I index +is the index (as shown when reading the +.B cmd +and +.B ns +files) of the command or directory to be removed from the configuration. +.PP +For example, to import +.B /dis +and +.B /dev +from a resource exporting a Styx (see +.IR intro(5)) +namespace at address +.B tcp!200.1.5.53!7003 +and then run +.B ls -l +and +.BR du , +the following commands would be used: +.IP +.B "echo 'add cmd /dis/ls -l' > ctl" +.br +.B "echo 'add cmd /dis/du' > ctl" +.br +.B "echo 'add ns /dis tcp!200.1.5.53!7003' > ctl" +.br +.B "echo 'add ns /dev tcp!200.1.5.53!7003' > ctl" +.PP +Reading the +.B cmd +and +.B ns +files will give the following output: +.IP +.B cmd +.br +.B 1: /dis/ls -l +.br +.B 2: /dis/du +.IP +.B ns +.br +.B 1: /dis (200.1.5.53!7003) +.br +.B 2: /dis (200.1.5.53!7003) +.PP +Once the client disconnects from (unmounts) the cpu, the selected namespaces will be imported and the commands executed. Note: A +.I cpu +does not have +.I any +namespace of its own. All required namespaces +.I must +be imported, for a simple command such as +.BR ls , +the minimum recommended namespace to import would be: +.B /chan /dev /dis /module +.PP +.IR Register (1) +may be used in conjunction with +.I cpu +to register it with a +.IR registry(4) +and to export and serve its namespace across +.IR dial(2) +network connections. Incoming connections may also be displayed visually using +.IR monitor (1). +For example: +.PP +.BI "grid/register [" " options ..." " ] { grid/srv/cpu } | grid/srv/monitor 2 'CPU resource' +.PP +This set of commands is encapsulated within the shell script +.I runcpu +which will automatically register +.I cpu +with a +.IR registry(4) +if possible and start up the graphical display to show connections to the resource. There is no need for the user to execute +.I cpu +outside of +.I runcpu +unless the namespace it provides is required to be accessible in a different way to that provided by +.IR register (1). +.SH SOURCE +.B /appl/grid/srv/cpu.b + +.SH BUGS +At the moment, +.I Cpu +will only import namespaces across an unauthenticated connection as provided by +.IR ns (1). + +.SH "SEE ALSO" +.IR monitor (1), +.IR ns (1), +.IR register (1), +.IR session (1) diff --git a/man/4/dbfs b/man/4/dbfs new file mode 100644 index 00000000..e810ca9b --- /dev/null +++ b/man/4/dbfs @@ -0,0 +1,127 @@ +.TH DBFS 4 +.SH NAME +dbfs, rawdbfs \- simple database file system +.SH SYNOPSIS +.B dbfs +[ +.B -abcer +] +.I file mountpoint +.br +.B rawdbfs +[ +.B -abcelrx +] +[ +.B -u +.I cmd +] +.I file mountpoint +.PP +.IB mountpoint /new +.br +.IB mountpoint /0 +.br +.IB mountpoint /1 +.br +.IB mountpoint /\fR...\fP +.SH DESCRIPTION +.B Dbfs +and +.B rawdbfs +both expose a simple, record-based filesystem stored +in +.IR file . +The +.BR -a , +.BR -b , +.BR -c , +and +.B -r +options have the same meaning as the options accepted by +.IR bind (1). +If the +.B -e +option is given, then +.I file +will be created if it does not already exist. +The filesystem provided by both +.B dbfs +and +.B rawdbfs +is substantially the same: +when started, +.I mountpoint +is populated with numbered files, one for each record found in +.IR file . +A read of one of these files yields the data in the record; +a write stores data in the record. A new record can be created +by opening the +.B new +file; writes to this file write to the new record. The name +of the new file can be discovered by using +.I fstat +in +.IR sys-stat (2). +Records can be removed by removing the appropriate +record file. +.PP +.B Rawdbfs +has additional features for database use: +.BR -x +causes two additional files ("index" and "stats") to appear +in the mounted directory, +.BR -l +specifies that a record can only be opened for writing +by one process at once, and +.BR -u +.I cmd +specifies a +.IR sh (1) +command to be run whenever the contents of the database +change. +The index file is provided as a convenience for database +client applications. Once initialised (by writing an integer value to it), +subsequent reads return an ever-increasing integer value. +Reading the stats file returns counts of database +read, write, create and delete operations as a string of four +integers. +.PP +.B Dbfs +and +.B rawdbfs +differ in the way that they store their data. +.B Dbfs +stores its records in +.I file +in a simple text format: the end of a record is indicated +by an empty line. The file is completely rewritten every time +a record is written. Storing records containing blank lines +will lead to confusion when the database is re-read. +.B Rawdbfs +can store arbitrary data, but the format of the data +storage is known only to itself. It does not rewrite +the whole file on every record change, so can be more +suitable for flash-based storage, where it is important +to minimise the number of writes. +.PP +Note that the record numbers always get their initial +numbering from the order of the records in +.IR file . +You cannot assume that the filename given to a record +will remain the same between runs of +.BR dbfs . +.SH SOURCE +.B /appl/cmd/dbfs.b +.br +.B /appl/cmd/rawdbfs.b +.SH SEE ALSO +.IR memfs (4), +.IR ramfile (4), +.IR wm-calendar (1) +.SH BUGS +Write offsets are ignored, so the maximum amount of data +that can be stored in a record is ATOMICIO bytes (i.e. 8K). +.PP +There is no way to compact a file maintained by +.BR dbfs . diff --git a/man/4/dossrv b/man/4/dossrv new file mode 100644 index 00000000..5fd2cc3a --- /dev/null +++ b/man/4/dossrv @@ -0,0 +1,76 @@ +.TH DOSSRV 4 +.SH NAME +dossrv, 9660srv \- DOS/Windows and ISO 9660 file systems +.SH SYNOPSIS +.B dossrv +.RB [ \-v ] +.RB [ \-s ] +.RB [ \-F ] +.RB [ \-c ] +[ +.BI -f " devicefile" +] +[ +.BI -m " mountpoint" +] +[ +.BI -S " sectors/track" +] +.PP +.B 9660srv +.RB [ \-rab ] +.I cdfile +.I dir +.SH DESCRIPTION +.I Dossrv +makes the contents of a DOS/Windows file system visible in the Inferno name space. +The options are: +.TP +.B -v +print a debugging trace, including Styx messages, on standard error +.TP +.B -F +display FAT information +.TP +.B -c +display cluster data and I/O activity +.TP +.B -s +standard ouput is connected to a client; serve that +.TP +.BI -f " devicefile" +the DOS/Windows file system image; defaults to +.BR /dev/hd0disk . +.TP +.BI -m " mountpoint" +The directory where the contents of the file system should appear; defaults to +.BR /n/dos . +.TP +.BI -S " sectors/track" +The number of sectors per track. The default is 9. +.PP +.I 9660srv +performs a similar function for files (notably CDROMs) in ISO9660 format, +including the Rock Ridge extension and its Plan 9 variant. +It makes the contents of +.I cdfile +visible in the name space at +.IR dir . +The options are those of +.IR bind (1): +.BR \-r , +to replace the contents of +.IR dir ; +.BR \-a , +to make a union directory with the CD contents after the contents of +.IR dir ; +.BR \-b , +to make a union directory with the CD contents before the contents of +.IR dir . +.SH SOURCE +.B /appl/cmd/dossrv.b +.br +.B /appl/cmd/9660srv.b +.SH BUGS +.I Dossrv +cannot handle all the FAT32 extensions. diff --git a/man/4/export b/man/4/export new file mode 100644 index 00000000..ea2fdf39 --- /dev/null +++ b/man/4/export @@ -0,0 +1,69 @@ +.TH EXPORT 4 +.SH NAME +export \- export name space on a connection +.SH SYNOPSIS +.B export +[ +.B \-a +] [ +.B \-n +] +.I dir +[ +.I file +] +.SH DESCRIPTION +.I Export +calls +.B Sys->export +(see +.IR sys-dial (2)) +to serve a name space rooted at +.I dir +over a connection to a Styx client. +.I Export +opens the connection on the given +.IR file , +or uses the standard input by default. +It returns when the client closes the connection. +If the +.B \-a +option is given, however, +.I export +starts an Inferno kernel process +to serve the name space and returns immediately. +.PP +Normally, +.I export +forks the current name space, and makes +.I dir +the root of its copy. +Changes subsequently made to the current name space will +not be visible to clients of +.IR export . +If the +.B \-n +option is given, however, and +.I dir +is the root +.RB (` / '), +.I export +serves the current name space without forking it; changes made to it +will be visible to clients. +.PP +.I Export +starts serving Styx immediately; it assumes that the connection +has been authenticated if required. +.SH EXAMPLE +Start a background process to serve the name space on the serial port. +.IP +.B "export / /dev/eia0 &" +.PP +Although useful when bootstrapping a system, this is unsafe +unless a transport protocol is run on the connection. +.SH SOURCE +.B /appl/cmd/export.b +.SH SEE ALSO +.IR cpu (1), +.IR sys-dial (2), +.IR intro (5) diff --git a/man/4/factotum b/man/4/factotum new file mode 100644 index 00000000..867206b6 --- /dev/null +++ b/man/4/factotum @@ -0,0 +1,717 @@ +.TH FACTOTUM 4 +.SH NAME +factotum, feedkey \- authentication agent +.SH SYNOPSIS +.B auth/factotum +[ +.B -d +.\" ] [ +.\" .B -a authaddr +] [ +.B -s +.I srvname +] [ +.B -m +.I mtpt +] +.B ... +.IB attribute ? +.B ... +.PP +.B auth/feedkey +.SH DESCRIPTION +.I Factotum +is a user-level file system that +acts as the authentication agent for a user. +It does so by managing a set of +.IR keys . +A key is a collection of information used to authenticate a particular action. +Stored as a list of +.IB attribute = value +pairs, a key typically contains a user, an authentication domain, a protocol, and +some secret data. +.PP +.I Factotum +serves +.IR srv (3) +directory +.BR #sfactotum , +which it binds to +.BR /mnt/factotum . +It serves the following files: +.TF needkey +.TP +.B rpc +each open represents a new private channel to +.I factotum +.TP +.B proto +when read lists the protocols available +.\" .TP +.\" .B confirm +.\" for confiming the use of key +.TP +.B needkey +allows external programs to control the addition of new keys +.TP +.B log +a log of actions +.TP +.B ctl +for maintaining keys; when read, it returns a list of keys. +For secret attributes, only the attribute name follow by a +.L ? +is returned. +.PD +.PP +In any authentication, the caller typically acts as a client +and the callee as a server. The server determines +the authentication domain, sometimes after a negotiation with +the client. Authentication always requires the client to +prove its identity to the server. Under some protocols, including the one normally +used by Inferno, the +authentication is mutual. +Proof is accomplished using secret information kept by +.I factotum +in conjunction with a cryptographic protocol. +.PP +.I Factotum +can act in the role of client for any process possessing the +same user id as it. +.\" For select protocols such as +.\" .B p9sk1 +.\" it can also act as a client for other processes provided +.\" its user id may speak for the other process' user id (see +.\" .IR authsrv (6)). +.I Factotum +can act in the role of server for any process. +.PP +.IR Factotum 's +structure is independent of +any particular authentication protocol. +.I Factotum +currently supports the following protocols: +.TF mschap +.TP +.B infauth +Inferno's authentication protocol +.IR auth (6) +.TP +.B p9any +a metaprotocol used to negotiate which actual protocol to use. +.TP +.B p9sk1 +a Plan 9 shared key protocol described in +.I authsrv +in section 6 of Plan 9's Programmer's Manual +.\" .TP +.\" .B p9sk2 +.\" a variant of +.\" .B p9sk1 +.\" described in +.\" .IR authsrv (6)'s +.\" ``Remote Execution'' section. +.\" .TP +.\" .B p9cr +.\" a Plan 9 protocol that can use either +.\" .B p9sk1 +.\" keys or SecureID tokens. +.\" .TP +.\" .B apop +.\" the challenge/response protocol used by POP3 mail servers. +.\" .TP +.\" .B cram +.\" the challenge/response protocol also used by POP3 mail servers. +.\" .TP +.\" .B chap +.\" the challenge/response protocols used by PPP and PPTP. +.\" .TP +.\" .B mschap +.\" a proprietary Microsoft protocol also used by PPP and PPTP. +.\" .TP +.\" .B rsa +.\" RSA public key decryption, used by SSH and TLS. +.TP +.B pass +passwords in the clear. +.\" .TP +.\" .B vnc +.\" .IR vnc (1)'s +.\" challenge/response. +.\" .TP +.\" .B wep +.\" WEP passwords for wireless ethernet cards. +.PD +.PP +The options are: +.\".TP +.\" .B \-a +.\" supplies the address of the authentication server to use. +.\" Without this option, it will attempt to find an authentication server by +.\" querying the connection server +.\" .IR cs (8), +.\" the file +.\" .IB net /ndb , +.\" and finally the network database +.\" .IR ndb (6). +.TP +.B \-m +specifies the mount point to use, by default +.BR /mnt/factotum . +.TP +.B \-s +specifies the service name to use, +by default it is +.BR factotum . +.TP +.B \-d +turns on debugging, written to standard error. +.PD +.PP +.I Feedkey +is a +.IR wm (1) +user interface for +.\" confirming key usage and +entering new keys. It puts its window in the +.IR wm (1) +toolbar, +and waits, reading requests from +.\" .B confirm +.\" and +.BR needkey . +For each request, it pops open a window containing suitable prompts and waits for +user input. +See the sections on key confirmation and key prompting below. +.SS "Key Tuples +.PP +A +.I "key tuple +is a space-delimited list of +.IB attribute = value +pairs. Values containing spaces must be quoted following +the conventions of +.IR sh (1). +An attribute whose name begins with an exclamation point +.RB ( ! ) +is `secret' and +does not appear when reading the +.B ctl +file. +See the `Protocols' section below. +Here are some examples: +.PP +.EX + proto=p9sk1 dom=avayalabs.com user=presotto !password=lucent + proto=pass user=tb !password=does.it.matter +.EE +.PP +The required attributes depend on the authentication protocol. +The `Protocols' section below describes the attributes specific +to each supported protocol. +.PP +All keys can have additional attributes that act either as comments +or as selectors to distinguish them in the +.IR factotum (2) +and other +library calls. +.PP +The factotum owner can use any key stored by factotum. +Any key may have one or more +.B owner +attributes listing the users who can use the key +as though they were the owner. +For example, the TLS and SSH host keys on a server +often have an attribute +.B owner=* +to allow any user (and in particular, +.L none ) +to run the TLS or SSH server-side protocol. +.PP +Any key may have a +.B role +attribute for restricting how it can be used. +If this attribute is missing, the key can be used in any role. +The possible values are: +.TP +.B client +for authenticating outbound calls +.TP +.B server +for authenticating inbound calls +.TP +.B speaksfor +for authenticating processes whose +user id does not match +.IR factotum 's. +.PP +If a key has a +.B disabled +attribute (with any value), the key is not used +during any protocols. +.\" Factotum automatically marks +.\" keys with +.\" .B disabled=by.factotum +.\" when they fail during certain authentication +.\" protocols (in particular, the Plan 9 ones). +.PD +.\" .PP +.\" Whenever +.\" .I factotum +.\" runs as a server, it must have a +.\" .B p9sk1 +.\" key in order to communicate with the authentication +.\" server for validating passwords and challenge/responses of +.\" other users. +.SS "Key Templates +Key templates are used by routines that interface to +.IR factotum , +such as those in +.IR factotum (2), +to specify which key and protocol to use for an authentication. +Like a key tuple, a key template is also a list of +.IB attribute = value +pairs. +It must specify at least the protocol and enough +other attributes to uniquely identify a key, or set of keys, to use. +The keys chosen are those that match all the attributes specified +in the template. The possible attribute/value formats are: +.TP 1i +.IB attr = val +The attribute +.I attr +must exist in the key and its value must exactly +match +.I val +.TP 1i +.IB attr ? +The attribute +.I attr +must exist in the key but its value doesn't matter. +.TP 1i +.I attr +The attribute +.I attr +must exist in the key with a null value +.PD +.PP +Key templates are also used by +.I factotum +to request a key either via +an RPC error or via the +.B needkey +interface. +The possible attribute/value formats are: +.TP 1i +.IB attr = val +This pair must remain unchanged +.TP 1i +.IB attr ? +This attribute needs a value +.TP 1i +.I attr +The pair must remain unchanged +.PD +.SS "Control and Key Management +.PP +A number of messages can be written to the control file. +The messages are: +.TP +.B "key \fIattribute-value-list\fP +add a new key. This will replace any old key whose +public attributes match (ie, non +.B ! +attributes). +.TP +.B "delkey \fIattribute-value-list\fP +delete a key whose attributes match those given. +.TP +.B debug +toggle debugging on and off, i.e., the debugging also +turned on by the +.B \-d +option. +.\" .PP +.\" By default when factotum starts it looks for a +.\" .IR secstore (1) +.\" account on $auth for the user and, if one exists, +.\" prompts for a secstore password in order to fetch +.\" the file +.\" .IR factotum , +.\" which should contain control file commands. +.\" An example would be +.\" .EX +.\" key dom=x.com proto=p9sk1 user=boyd !hex=26E522ADE2BBB2A229 +.\" key proto=rsa service=ssh size=1024 ek=3B !dk=... +.\" .EE +.\" where the first line sets a password for +.\" challenge/response authentication, strong against dictionary +.\" attack by being a long random string, and the second line +.\" sets a public/private keypair for ssh authentication, +.\" generated by +.\" .B ssh_genkey +.\" (see +.\" .IR ssh (1)). +.\" .PD +.\" .SS "Confirming key use +.\" .PP +.\" The +.\" .B confirm +.\" file provides a connection from +.\" .I factotum +.\" to a confirmation server, normally the program +.\" .IR auth/fgui . +.\" Whenever a key with the +.\" .B confirm +.\" attribute is used, +.\" .I factotum +.\" requires confirmation of its use. If no process has +.\" .B confirm +.\" opened, use of the key will be denied. +.\" However, if the file is opened a request can be read from it +.\" with the following format: +.\" .PP +.\" .B confirm +.\" .BI tag= tagno +.\" .I "<key template> +.\" .PP +.\" The reply, written back to +.\" .BR confirm , +.\" consists of string: +.\" .PP +.\" .BI tag= tagno +.\" .BI answer= xxx +.\" .PP +.\" If +.\" .I xxx +.\" is the string +.\" .B yes +.\" then the use is confirmed and the authentication will proceed. +.\" Otherwise, it fails. +.\" .PP +.\" .B Confirm +.\" is exclusive open and can only be opened by a process with +.\" the same user id as +.\" .IR factotum . +.SS "Prompting for keys +.PP +The +.B needkey +file provides a connection from +.I factotum +to a key server, normally the program +.IR auth/fgui . +Whenever +.I factotum +needs a new key, it first checks to see if +.B needkey +is opened. If it isn't, it returns a error to its client. +If the file is opened a request can be read from it +with the following format: +.PP +.B needkey +.BI tag= tagno +.I "<key template> +.PP +It is up to the reader to then query the user for any missing fields, +write the key tuple into the +.B ctl +file, and then reply by writing into the +.B needkey +file the string: +.PP +.BI tag= tagno +.PP +.B Needkey +is exclusive open and can only be opened by a process with +the same user id as +.IR factotum . +.SS "The RPC Protocol +Authentication is performed by +.IP 1) +opening +.BR rpc +.IP 2) +setting up the protocol and key to be used (see the +.B start +RPC below), +.IP 3) +shuttling messages back and forth between +.IR factotum +and the other party (see the +.B read +and +.B write +RPC's) until done +.IP 4) +if successful, reading back an +.I AuthInfo +structure (see +.IR factotum (2)). +.PP +The RPC protocol is normally embodied by one of the +routines in +.IR factotum (2). +We describe it here should anyone want to extend +that module. +.PP +An RPC consists of writing a request message to +.B rpc +followed by reading a reply message back. +RPC's are strictly ordered; requests and replies of +different RPC's cannot be interleaved. +Messages consist of a verb, a single space, and data. +The data format depends on the verb. The request verbs are: +.TP +.B "start \fIattribute-value-list\fP +start a new authentication. +.I Attribute-value-pair-list +must include a +.B proto +attribute, a +.B role +attribute with value +.B client +or +.BR server , +and enough other attibutes to uniquely identify a key to use. +A +.B start +RPC is required before any others. The possible replies are: +.RS +.TP +.B ok +start succeeded. +.TP +.B "error \fIstring\fP +where +.I string +is the reason. +.RE +.PD +.TP +.B read +get data from +.I factotum +to send to the other party. The possible replies are: +.RS +.TP +.B ok +read succeeded, this is zero length message. +.TP +.B "ok \fIdata\fP +read succeeded, the data follows the space and is +unformatted. +.TP +.B "done +authentication has succeeded, no further RPC's are +necessary +.TP +.B "done haveai +authentication has succeeded, an +.B AuthInfo +structure (see +.IR factotum (2)) +can be retrieved with an +.B authinfo +RPC +.TP +.B "phase \fIstring\fP +its not your turn to read, get some data from +the other party and return it with a write RPC. +.TP +.B "error \fIstring\fP +authentication failed, +.I string +is the reason. +.TP +.B "protocol not started +a +.B start +RPC needs to precede reads and writes +.TP +.B "needkey \fIattribute-value-list\fP +a key matching the argument is needed. +This will not appear if the +.B needkey +file is in use. +Otherwise, a suitable key can be written to +.B ctl +and after that, +authentication may proceed (ie, the read restarted). +.PD +.RE +.TP +.B "write \fIdata\fP +send data from the other party to +.IR factotum . +The possible replies are: +.RS +.TP +.B "ok +the write succeeded +.TP +.B "needkey \fIattribute-value-list\fP +see above +.TP +.B "toosmall \fIn\fP +the write is too short, get more data from the +other party and retry the write. +.I n +specifies the maximun total number of bytes. +.TP +.B "phase \fIstring\fP +its not your turn to write, get some data from +.I factotum +first. +.TP +.B "done +see above +.TP +.B "done haveai +see above +.RE +.TP +.B authinfo +retrieve the AuthInfo structure. +The possible replies are: +.RS +.TP +.B "ok \fIdata\fP +.I data +is a marshaled form of the AuthInfo structure. +.TP +.B "error \fIstring\fP +where +.I string +is the reason for the error. +.PD +.RE +.TP +.B attr +retrieve the attributes used in the +.B start +RPC. +The possible replies are: +.RS +.TP +.B "ok \fIattribute-value-list\fP +.TP +.B "error \fIstring\fP +where +.I string +is the reason for the error. +.PD +.RE +.SS Protocols +.I Factotum +can support many authentication protocols, each implemented by a separate +module in the directory +.BR /dis/auth/proto . +Currently only a few are implemented in Inferno: +.PP +.B Infauth +is the Inferno public-key authentication protocol described by +.IR auth (6). +It requires a key with +.BR proto = infauth , +and a +.B !authinfo +attribute providing Inferno authentication data as an S-expression (see +.IR sexprs (6)). +The S-expression has five string elements: +the signer's public key, the certificate for the user's public key, +the user's secret key, and the values for parameters +.I alpha +and +.IR p , +selected by the signer when the key was generated. +The keys and certificates are represented as strings of the form produced by +.IR keyring-certtostr (2); +the parameter values are represented as binary in the form produced by +.B IPint.iptobytes +(see +.IR keyring-ipint (2)). +Normally +.B infauth +checks that the other party's key was signed by the signer in the +.B !authinfo +data, but +if the key has the attribute +.B anysigner +with non-zero integer value, +.B infauth +will accept keys signed by any signer. +The actual signer can be determined by inspecting the data +returned by the +.B authinfo +request; +the option is intended for use by services that support calls from many domains, +each with its own signer. +.PP +.BR P9sk1 +is the shared-secret protocol used to authenticate to various Plan 9 services. +It requires a key with +.BR proto = p9sk1 , +a +.B dom +attribute identifying the authentication domain, a +.B user +name valid in that domain, and either a +.B !password +or +.B !hex +attribute specifying the password or hexadecimal secret +to be used. +.B P9sk1 +normally is invoked by Plan 9's general authentication protocol, +.BR p9any , +which is supported by Inferno's +.IR factotum . +.PP +.B Pass +requires a key with +.B proto=pass +in addition to +.B user +and +.B !password +attributes. +.\" .PP +.\" .B Rsa +.\" requires a key with +.\" .B proto=rsa +.\" in addition to all the hex attributes defining an RSA key: +.\" .BR ek , +.\" .BR n , +.\" .BR !p , +.\" .BR !q , +.\" .BR !kp , +.\" .BR !kq , +.\" .BR !c2 , +.\" and +.\" .BR !dk . +.\" By convention, programs using the RSA protocol also require a +.\" .B service +.\" attribute set to +.\" .BR ssh , +.\" .BR sshserve , +.\" or +.\" .BR tls . +.\" .PP +.\" .B Wep +.\" requires a +.\" .BR key1 , +.\" .BR key2 , +.\" or +.\" .BR key3 +.\" set to the password to be used. +.\" Starting the protocol causes +.\" .I factotum +.\" to configure the wireless ethernet card +.\" .B #l/ether0 +.\" for WEP encryption with the given password. +.SH SOURCE +.B /appl/cmd/auth/factotum +.SH SEE ALSO +.IR factotum (2) diff --git a/man/4/ftpfs b/man/4/ftpfs new file mode 100644 index 00000000..522adb4b --- /dev/null +++ b/man/4/ftpfs @@ -0,0 +1,117 @@ +.TH FTPFS 4 +.SH NAME +ftpfs \- file transfer protocol (FTP) file server +.SH SYNOPSIS +.B ftpfs +[ +.B -/dpq +] [ +.BI -m " mountpoint" +] [ +.BI -a " password" +] +.I ftphost +.SH DESCRIPTION +.I Ftpfs +connects to +.I ftphost +using the Internet's File Transfer Protocol, +and makes the remote files +visible at +.I mountpoint +(default: +.BR /n/ftp ) +in the current name space, +for access by ordinary Inferno file operations. +In other words, it is a protocol translator between FTP and Styx. +The connection is shut down by unmounting the mount point; +see +.IR bind (1). +The +.I ftphost +can be any address acceptable to +.IR cs (8); +the default network is +.BR tcp , +and the default service is +.B ftp +(port 21). +.PP +.I Ftpfs +will prompt for a user name and password as +.I ftphost +demands. +If the FTP host supports `anonymous FTP' (ie, guest access), +it will accept the user name +.L anonymous +and a conventional password (notionally the user's e-mail address). +Given the +.B -a +option, +.I ftpfs +automatically logs in as +.L anonymous +with the +.I password +supplied, +avoiding prompting. +.PP +By default, +.I ftpfs +uses a `passive' connection for file transfer: the remote system gives the local +system a new address to call to fetch the data. +This often works best for local systems behind firewalls that block incoming calls +to arbitrary ports, +but can fail for instance if the remote system does not support passive mode, +or is itself behind such a firewall. +The +.B \-p +option forces `active' connection: the local system gives the remote machine +an address on which to call it back to transfer the data. +.PP +Other options are: +.TP +.B \-/ +Mount the remote machine's root directory on +.IR mountpoint , +not the user's home directory (which is used by default). +.TP +.B \-q +Suppress the printing of chatter (`informational messages') from +the remote server. +.TP +.B \-d +Display all FTP protocol transactions to allow a failure to connect to be debugged. +.\" -/? +.PP +.I Ftpfs +keeps a limited local cache of remote files and directories. +The cache is kept consistent with file and directory operations by the local +user through the current connection, but not with changes made by others on the remote site. +Cached entries for a given directory can be flushed explicitly by +accessing the name +.B .flush.ftpfs +in that directory. +.SH EXAMPLE +Mount a remote machine and copy files from there to here. +.IP +.EX +mkdir here +ftpfs -a 'bloggs@' ftp.vitanuova.com +cp /n/ftp/package.tgz here +unmount /n/ftp +.EE +.SH FILES +.TF /tmp/ftp.* +.TP +.B /tmp/ftp.* +Temporarily cached files +.SH SOURCE +.B /appl/ftpfs +.SH BUGS +Symbolic links are not supported. +.br +.I Ftpfs +does not implement `rename', forcing +.IR mv (1) +to rename by copying. diff --git a/man/4/import b/man/4/import new file mode 100644 index 00000000..e7465edb --- /dev/null +++ b/man/4/import @@ -0,0 +1,148 @@ +.TH IMPORT 4 +.SH NAME +import, 9export \- exchange name spaces with a Plan 9 system +.SH SYNOPSIS +.B import +[ +.B -ab +] [ +.B -c +] [ +.BI -k " keyspec" +] [ +.BI -e " crypt hash" +] +.I host +.I file +[ +.I localfile +] +.PP +.B 9export +[ +.B -A +] [ +.BI -k " keyspec" +] [ +.BI -e " crypt hash" +] +.SH DESCRIPTION +.I Import +dials the Plan 9 +.I host +(which might be the current host) and makes the given +.I file +on that system visible in the local name space as +.I localfile +(if +.I localfile +is not given, +.I file +is used as the local name). +It requires that the user's Plan 9 authentication agent, +.IR factotum , +appear in the Inferno name space at +.BR /mnt/factotum . +(That is why +.I import +is currently limited to use when Inferno is hosted on Plan 9, +until Inferno has an equivalent to +.IR factotum .) +The remote files are accessed with the permissions of the user authenticated +to the remote system by +.IR factotum . +.PP +If the remote +.I file +is a directory, the whole file tree rooted at that +directory is accessible, the local mount point must also be a directory, +and the +.BR -a , +.BR -b , +and +.B -c +options control the creation of union directories just as for +.IR bind (1). +By default, the remote file replaces the local one in the name space. +.PP +If the +.B -e +option is given, the network connection can be encrypted, or provided +with digests to authenticate the contents, or both. +.I Crypt +is an encryption algorithm accepted by +.IR ssl (3); +.I hash +is one of its digest algorithms. +Plan 9's +.I exportfs +normally requires +.B +\&'rc4_256 sha1' +on such connections; +it currently provides no negotiation of algorithms. +.PP +The +.B -k +option gives a string of space separated +.IB attr = value +pairs that control +.IR factotum 's +selection of a suitable key for the remote system. +.PP +.I 9export +serves the Plan 9 +.I exportfs +protocol on its standard input, +allowing a Plan 9 system to import parts of the Inferno name space in which +.I 9export +is run. +If the +.B -A +option is given, the caller is not authenticated, line encryption and message authentication +are not done, +and the Plan 9 +.I exportfs +protocol starts immediately. +Otherwise, the Plan 9 authentication agent +.I factotum +must be accessible via +.B /mnt/factotum +as for +.IR import , +and it is used to run the Plan 9 authentication protocol. +The +.B -e +and +.B -k +options are as for +.IR import . +Normally +.I 9export +returns when the client closes the connection; the +.B -a +option causes +.I 9export +to return immediately, leaving a kernel process to serve the name space. +.I 9export +might be used as follows: +.IP +.EX +listen -Av 'tcp!*!exportfs' {9export&} +.EE +.PP +Beware that currently the name space is served with the permissions of the +person running +.IR 9export , +not those of the caller. +.SH SOURCE +.B /appl/cmd/9export.b +.br +.B /appl/cmd/import.b +.SH SEE ALSO +.IR bind (1), +.IR factotum (2), +.IR export (4), +.IR namespace (6) +.SH BUGS +Temporarily limited to Plan 9 hosted environment only. diff --git a/man/4/iostats b/man/4/iostats new file mode 100644 index 00000000..e4a3b4fb --- /dev/null +++ b/man/4/iostats @@ -0,0 +1,81 @@ +.TH IOSTATS 4 +.SH NAME +iostats \- file system to measure I/O +.SH SYNOPSIS +.B iostats +[ +.B -d +] +[ +.B -f +.I dbfile +] +.I cmd +[ +.I args... +] +.SH DESCRIPTION +.I Iostats +is a file server that interposes itself between a program and a copy of the current name space, +which allows it to gather statistics of file system +use at the level of the file system protocol of +.IR intro (5). +When the program exits, +a report is printed on standard error. +.PP +The report consists of three sections. +The first section reports the amount +of user data in +.B read +and +.B write +messages sent by the program and the average rate at +which the data was transferred. +The +.B protocol +line reports the amount +of data sent as message headers, that is, +protocol overhead. +The +.B rpc +line reports the +total number of file system transactions. +.PP +The second section gives +the number of messages, the fastest, slowest, and average turn around +time and the amount of data involved with each 9P +message type. +The final section gives an I/O summary for each file used +by the program in terms of opens, reads and writes. +.PP +The +.B -d +option causes +.I iostats +to write a debugging log to +.I dbfile +(default: +.BR iostats.out ) +that records all protocol messages. +.SH EXAMPLE +Display summary of file I/O incurred by +.IR ls (1): +.IP +.EX +iostats ls +.EE +.PP +Start a new shell, displaying all Styx traffic caused by the shell or its children: +.IP +.EX +iostats -df /fd/1 sh +.EE +.SH SOURCE +.B /appl/cmd/iostats.b +.SH BUGS +Poor clock resolution means that large amounts of I/O must be done to +get accurate rate figures. +.PP +Can be fooled by programs that do fresh mounts outside its purview. +.PP +Cannot monitor standard input or output. diff --git a/man/4/keyfs b/man/4/keyfs new file mode 100644 index 00000000..51bfb48a --- /dev/null +++ b/man/4/keyfs @@ -0,0 +1,116 @@ +.TH KEYFS 4 +.SH NAME +keyfs \- encrypted key storage +.SH SYNOPSIS +.B auth/keyfs +[ +.B -D +] +[ +.B -m mountpoint +] [ +.I keyfile +] +.SH DESCRIPTION +.I Keyfs +serves a two-level name space for storing authentication data, specifically +the status and secrets of each user to whom +.IR logind (8) +can issue a certificate. +The data is stored in +.I keyfile +(default: +.BR /keydb/keys ), +encrypted by a master key using AES +(see +.IR keyring-crypt (2)). +.I Keyfs +should be started only on the machine acting as authentication server (signer), +before a listener is started for +.IR signer (8). +Note that +.I signer +and +.I keyfs +must share the name space. +Furthermore, no other application except the console should see that name space. +.PP +.I Keyfs +prompts for the master key, reads and decrypts +.IR keyfile , +and serves files representing the contents at +.I mountpoint +in the name space (default: +.BR /mnt/keys ). +.PP +Each +.I user +in +.I keyfile +is represented by a directory +.IB mountpoint / user. +Each such directory has the following files: +.TF status +.TP +.B log +A count of the number of failed authentications. +Writing +.B bad +to the file increments the count; writing +.B good +resets it to 0. +When the count reaches some implementation-defined limit, +the account status is set to +.B disabled +(see the +.B status +file below). +.TP +.B expire +The time in seconds since the epoch when the account will expire, +or the text +.B never +if it has no expiration time. +The string +.B never +or a number can be written to the file to set a new expiry time. +.TP +.B secret +The secret (supposedly) known only to the user and the authentication service. +A secret is any sequence of bytes between 0 and 255 bytes long; +it is initially empty. +The length of the file returned by +.IR sys-stat (2) +is the length of the secret. +If the account has expired or is disabled, an attempt to read the file +will give an error. +.TP +.B status +The current status of the user's account, either +.B ok +or +.BR disabled . +Either string can be written to the file to change the state accordingly. +.PD +.PP +To add a new account, make a directory with that name in +.IR mountpoint . +It must not already exist. +To remove an account, remove the corresponding directory; +to rename an account, rename the directory. +.PP +All changes made via file system operations in +.I mountpoint +result in appropriate changes to +.IR keyfile . +.PD +.PP +The +.B -D +option enables tracing of the file service protocol, for debugging. +.SH SOURCE +.B /appl/cmd/auth/keyfs.b +.SH SEE ALSO +.IR changelogin (8), +.IR login (8), +.IR signer (8) diff --git a/man/4/keysrv b/man/4/keysrv new file mode 100644 index 00000000..2b12d43a --- /dev/null +++ b/man/4/keysrv @@ -0,0 +1,116 @@ +.TH KEYSRV 4 +.SH NAME +keysrv \- secret key server +.SH SYNOPSIS +.B auth/keysrv +.SH DESCRIPTION +.I Keysrv +is a file service run on a connection to an authentication server. +It allows a remote user +to change a secret stored on the server by +.IR keyfs (4), +which must have been started before +.IR keysrv , +in a name space with the authentication data available under +.BR /mnt/keys . +.PP +.I Keysrv +serves a single file, +.BR secret , +on a connection accessed through file descriptor 0 (ie, the standard `input'). +When invoked, it +first authenticates the connection using +.IR security-auth (2), +requiring the client to use +.B sha1 +and +.BR rc4_256 . +If authentication succeeds, +.I keysrv +exports a name space containing a file +.BR secret . +The authentication ensures that only a user that possesses a valid certificate can connect to the service. +.PP +If the authenticated user (ie, the user name in the verified certificate) +has an entry in +.BR /mnt/keys , +as served by +.IR keyfs (4), +and that user has a non-empty secret, +then the file +.B secret +will accept reads and writes. +(Otherwise, every read or write returns an appropriate error.) +Every successful read returns 0 bytes; thus a read can be used to check that the user is known and has a secret key. +Each write contains data of the following form: +.IP +.EX +.fi +.I oldhash +[ +.I newsecret +] +.EE +.PP +.I Oldhash +is the SHA1 hash +(see +.IR keyring-sha1 (2)) +of the user's existing secret, as 20 hexadecimal digits. +If the value of +.I oldhash +does not match that of the stored secret, the write returns an error and suitable diagnostic. +.I Oldhash +is optionally followed by a +.IR newsecret , +in clear text as a sequence of bytes (typically the secret as +.IR utf (6)), +separated from +.I oldhash +by a single space. +If the +.I oldhash +matches that of the secret currently stored, +.I newsecret +replaces it. +The write returns an error if +.I oldhash +does not match the stored value, or if something else goes wrong. +.PP +.I Keysrv +can be invoked via +.IR listen (1): +.IP +.EX +listen -t -A 'tcp!*!infkey' {auth/keysrv} +.EE +.PP +Normally that is done automatically when +starting an authentication service using +.B svc/auth +(see +.IR svc (8)). +.PP +.IR Passwd (1) +dials the service, authenticates, and mounts the resulting connection on +.BR /mnt/keysrv , +where it accesses the +.B secret +file to change the secret. +.SH FILES +.TF /mnt/keysrv +.TP +.B /mnt/keys +mount point for +.IR keyfs (4) +.TP +.B /mnt/keysrv +exported mount point for +.I keysrv +.SH SOURCE +.B /appl/cmd/auth/keysrv.b +.SH SEE ALSO +.IR listen (1), +.IR passwd (1), +.IR keyfs (4), +.IR logind (8) diff --git a/man/4/kfs b/man/4/kfs new file mode 100644 index 00000000..c52c1d3a --- /dev/null +++ b/man/4/kfs @@ -0,0 +1,175 @@ +.TH KFS 4 +.SH NAME +kfs \- disk file system +.SH SYNOPSIS +.BI "mount {disk/kfs" +.RB [ -r +[ +.BI -b " bsize" +] ] +.RB [ -c ] +.RB [ -A ] +.RB [ -P ] +.RB [ -R ] +.RB [ -W ] +[ +.BI -n " name" +] +.IB " file" "} " dir +.SH DESCRIPTION +.I Kfs +implements a hierarchical Inferno file system within an existing +.IR file , +which is typically a disk or flash memory partition. +It gives access to it through the Styx protocol on its standard input, +and the contents can be mounted directly on a given +.I dir +as shown above. +The file system format is the same as that used by the +.I kfs +command of Plan 9, except that the modification user ID is implemented. +.PP +The +.B -r +option causes the file system to be reset to an initially empty state +(`reamed'). +Permission checking is turned off, to allow any desired permissions and +file ownership to be set. +(In other words, the +.B -W +and +.B -P +options are also set by default.) +The file system block size is set to the +.IR bsize +given by the +.B -b +option +(default: 1024 bytes), +which must be a multiple of 512 and not greater than 16k bytes. +The block size is stored in the +.I file +and need not be given again. +The storage representation is always little-endian. +.PP +Otherwise, the file system is checked if required, unless the +.B -c +option is given. +.PP +The contents of the file system can be provided by using commands +such as +.IR mkdir (1), +.IR cp (1) +and +.IR rm (1) +in +.IR dir , +or built from a description using +.IR mkfs (8). +.PP +The mapping between user names and +internal IDs within the file system is established by the file +.BR adm/users +(within the file system itself) +as described by +.IR users (6), +which +.I kfs +reads when it starts. +If no such file exists, as for instance when the file system is initially empty, +.I kfs +uses a minimal set corresponding to the following +.IR users (6) +file: +.IP +.EX +-1:adm:adm: +0:none:adm: +9999:noworld:: +10000:sys:: +10001:upas:upas: +10002:bootes:bootes: +10006:inferno:: +.EE +.PP +Any +.IR users (6) +file used with +.I kfs +should include entries for at least +.BR adm , +.BR none , +and +.BR noworld +as above (although group membership can vary). +.PP +.I Kfs +can optionally serve a control file, for use by +.IR kfscmd (8). +If the +.B -n +option is given, +.I kfs +creates a channel +.BI /chan/kfs. name .cmd +and accepts commands on it from the user that started +.IR kfs . +.PP +Other options are: +.TP +.B -A +do not update access times; useful when running a file system in flash over +.IR ftl (3), +to avoid excessive wear +.TP +.B -P +suppress permission checking +.TP +.B -R +file system is read only +.TP +.B -W +allow +.B wstat +(see +.IR sys-stat (2) +or +.IR stat (5)) +to make arbitrary changes to user and group fields +.SH EXAMPLES +Create an empty file system +in the file +.BR kfs.file . +Because the file system will be no larger than the existing +file's size, and the file is assumed not to be a device file, use +.IR zeros (1) +to prepare a file with 2048 blocks of 1024 bytes each: +.IP +.EX +zeros 1024 2048 >kfs.file +mount -c {disk/kfs -r kfs.file} /n/local +.EE +.PP +The +.B -c +option to +.I mount +allows files to be created in +.BR /n/local . +.SH SOURCE +.B /appl/cmd/disk/kfs.b +.SH SEE ALSO +.IR dd (1), +.IR zeros (1), +.IR flash (3), +.IR ftl (3), +.IR logfs (3), +.IR sd (3), +.IR users (6), +.IR kfscmd (8), +.IR mkfs (8) +.SH BUGS +Because the file system format is the same as Plan 9's +.IR kfs , +this one also does not support file names longer than 27 bytes. +It likewise cannot cope with files bigger than 2ⁱ-1 bytes. diff --git a/man/4/lockfs b/man/4/lockfs new file mode 100644 index 00000000..8914f934 --- /dev/null +++ b/man/4/lockfs @@ -0,0 +1,89 @@ +.TH LOCKFS 4 +.SH NAME +lockfs \- exclusive access file server +.SH SYNOPSIS +.B lockfs +[ +.B -A +] [ +.B -a +.I alg +]... [ +.B -p +.I addr +] +.I dir +[ +.I mountpoint +] +.SH DESCRIPTION +.I Lockfs +acts as a filesystem layer above an existing namespace, +allowing multiple-reader, exclusive writer access to the +files therein. Opening a file served by +.I lockfs +obtains a lock on the file, or blocks until a lock can +be obtained. +.I Lockfs +serves a single-level directory that initially contains the +files in +.IR dir . +If the +.B -p +option is provided, +.I lockfs +will listen for incoming connections on +.IR addr , +authenticating them as required. +Each +.B -a +argument provides an acceptable +algorithm to run on the connection. +The list of all +.IR alg s +is passed to +.B server (see +.IR security-auth (2)). +If no +.B -a +arguments are given, +.B "-a none" +is assumed. +If the +.B -A +option is given, then no authentication +will be performed. +.PP +If the +.B -p +option is not given, the lockfs file system +will be mounted on +.IR mountpoint , +or +.I dir +if +.I mountpoint +is not given. +.SH EXAMPLE +Run a lock server guarding access to +.BR /lib/datafiles : +.IP +.EX +lockfs -p 'tcp!*!32454' /lib/datafiles +.EE +.PP +Mount the above server (where +.I locksrv +was originally run on a server named +.IR machine . +.IP +.EX +mount -c tcp!\fImachine\fP!32454 /n/remote +.EE +.SH SOURCE +.B /appl/cmd/lockfs.b +.SH BUGS +There's no way to break a lock held by a +malingering process. +.PP +Should probably support multi-level directories. diff --git a/man/4/logfile b/man/4/logfile new file mode 100644 index 00000000..ee05f38b --- /dev/null +++ b/man/4/logfile @@ -0,0 +1,45 @@ +.TH LOGFILE 4 +.SH NAME +logfile \- memory-based append-only circular storage buffer +.SH SYNOPSIS +.B logfile +.RB [ \-\fIsize\fP ] +.I \fIfile\fP +.SH DESCRIPTION +.I Logfile +creates a name at +.I file +(the containing directory must already exist). +Each write to +.I file +appends the written data up to a maximum of +.I size +bytes; subsequent writes erase the existing +data in a circular fashion. A read from +.I file +will return any currently stored data, if any; +if there is none, then it will block until more +data becomes available. +Multiple readers will receive the data independently +of one another. If a writing process is consistently +producing data faster than a reading process, then +the data read will have some bytes elided; a write +is never blocked. +.SH SOURCE +.B /appl/cmd/logfile.b +.SH SEE ALSO +.IR wm-logwindow (1), +.IR sys-file2chan (2) +.SH BUGS +Restrictions on +.IR sys-file2chan (2) +mean that the +.I logfile +process will not terminate automatically +when its file is removed or unmounted. +.PP +There is no indication to a reader of any +missing data. +.PP +It is not possible to do a non-blocking +read of the log file. diff --git a/man/4/memfs b/man/4/memfs new file mode 100644 index 00000000..7394fa53 --- /dev/null +++ b/man/4/memfs @@ -0,0 +1,62 @@ +.TH MEMFS 4 +.SH NAME +memfs \- mount a heap based filesystem +.SH SYNOPSIS +.B memfs +.RB [ \-s ] +.RB [ \-rab ] +.RB [ \-m +.IR size ] +.RI [ mountpoint ] +.SH DESCRIPTION +.I Memfs +mounts a newly created heap-based filesystem +on the given +.I mountpoint +directory (default +.BR /tmp ). +.PP +The filesystem is entirely maintained in memory, no external storage is used. +File data is allocated in 512 byte blocks. +If a maximum +.I size +is specified, the actual maximum is rounded down to the nearest +whole number of blocks: +.IP +.EX +actualsize := (size / 512) * 512; +.EE +.PP +The root of the filesystem is owned by the user who invoked memfs and +is created with Read, Write and Execute permissions for the owner and Read and Execute +permissions for everyone else (8r755). +.PP +.SH OPTIONS +.TP +.B \-s +Serve styx on file descriptor 0. +The +.I mountpoint +and other mount options are ignored. +.TP +.B \-r +The default option. +The old +.I mountpoint +directory becomes a union directory consisting of just the root of the new filesystem. +.TP +.B \-a +Add the root of the new filesystem to the end of the union directory +represented by the +.I mountpoint +directory. +.TP +.B \-b +Add the root of the new filesystem to the beginning of the union directory +represented by the +.I mountpoint +directory. +.SH SOURCE +.B /appl/cmd/memfs.b +.SH SEE ALSO +.IR ramfile (4) diff --git a/man/4/mntgen b/man/4/mntgen new file mode 100644 index 00000000..934926f1 --- /dev/null +++ b/man/4/mntgen @@ -0,0 +1,30 @@ +.TH MNTGEN 4 +.SH NAME +mntgen \- dynamically generate mount points +.SH SYNOPSIS +.BI "mount {mntgen} " dir +.SH DESCRIPTION +.I Mntgen +serves a Styx connection on its standard input, providing a name space containing a +single directory that is initially empty, but in which a subdirectory name appears when +is first referenced, and remains only as long as it is needed (referenced). +.I Mntgen +is typically mounted on a directory +.I dir +using +.I mount +(see +.IR bind (1)) +as above. +.I Dir +is commonly +.B /n +or +.BR /mnt , +to generate mount points on demand for file systems or services. +.SH SOURCE +.B /appl/cmd/mntgen.b +.SH SEE ALSO +.IR intro (1), +.IR bind (1), +.IR intro (5) diff --git a/man/4/namespace b/man/4/namespace new file mode 100644 index 00000000..727b0adf --- /dev/null +++ b/man/4/namespace @@ -0,0 +1,332 @@ +.TH NAMESPACE 4 +.SH NAME +namespace \- structure of conventional Inferno name space +.SH SYNOPSIS +none +.SH DESCRIPTION +The list below gives an overview of the Inferno distribution +file tree, organised into related categories. +.TF /appl/cmd +.TP +.B / +The root directory. To programs running outside Inferno, +this corresponds to the directory in which Inferno has been +installed (e.g. +.B C:\einferno +under Windows). +.SS Mount points +The following are all placeholders for filesystems +that are mounted when Inferno is running. They +contain no data files. Although an Inferno namespace +is a dynamic entity, and devices can be mounted anywhere +therein, many programs assume that devices have been +mounted in the standard places, as suggested by the skeleton +directories listed below. +.TF /appl/cmd +.TP +.B /dev +The standard mount point +for devices (e.g. +.IR cons (3)) +.TP +.B /env +The standard mount point for the +.IR env (3) +device. +.TP +.B /mnt +A directory containing mount points for applications. +.TP +.B /chan +An empty directory, used for holding +files created with +.IR sys-file2chan (2). +.TP +.B /net +The standard mount point directory for network interfaces. +.TP +.B /n +A directory containing mount points for file trees on local devices or imported from +remote systems. +.TP +.B /prog +An empty directory, the mount point for the +.IR prog (3) +device. +.TP +.B /nvfs +An empty directory, the mount point for a non-volatile RAM +filesystem on devices that have one. +.TP +.B /tmp +Mount point for private +directory of temporary files (eg, +.BI /usr/ user /tmp\c +). +.TP +.B /mail +Conventional place to mount mailboxes. +.SS Limbo applications +.TF /appl/cmd +.TP +.B /dis +Dis executables (commands) +.TP +.B /dis/lib +Dis libraries +.TP +.B /dis/wm +Dis commands that run under +.IR wm (1). +.TP +.B /man +Manual pages. +.TP +.B /doc +Documentation other than manual pages. +.TP +.B /appl +Source to Limbo applications. +.TP +.B /appl/cmd +Source to the commands in +.BR /dis +(as documented in Section 1). +.TP +.B /appl/wm +Source to the commands in +.B /dis/wm +.TP +.B /appl/lib +Source to the modules in +.B /dis/lib +(as documented in Section 2). +.TP +.B /module +Limbo module declarations +.SS Supporting data +.TF /appl/cmd +.TP +.B /acme +Programs and guide files specific to +.IR acme (1). +.TP +.B /fonts +Font definitions +.TP +.B /locale +Timezone and locale information +.TP +.B /icons +Contains +.IR image (6) +files used by programs. +.TP +.B /icons/tk +Default directory searched by tk's +.B -bitmap +option (see +.IR options (9)). +.TP +.B /lib +Static program-specific data. +.TP +.B /lib/ndb +Network configuration files +used by +.IR cs (8), +.IR dns (8) +and others. +.SS Administration +.TF /appl/cmd +.TP +.B /keydb +Storage of secrets and certificates on signers (authentication servers). +.TP +.B /services +A jungle of program-specific configuration files. +.SS Platform specific +.TF /appl/cmd +.TP +.BI / Platform +Binaries specific to +.IR Platform . +Current platforms include +.B Inferno +(native binaries), +.BR FreeBSD , +.BR Hp , +.BR Irix , +.BR Linux , +.BR Nt , +.BR Plan9 , +.B Solaris +and +.BR Unixware . +.TP +.BI / Platform / arch /bin +.TP +.BI / Platform / arch /lib +.TP +.BI / Platform / arch /include +.I Platform +specific binaries, libraries and include files +respectively. +.I Arch +is the architecture type, as defined +in +.IR 2c (10.1) +and held in the +.B $objtype +environment variable. +.TP +.B /usr +A directory containing user directories. +.SS Inferno source code +.TF /libmemlayerxx +.TP +.B /emu +Directory containing source specific to +.IR emu (1). +.TP +.B /emu/port +Cross-platform source for +.IR emu (1). +.BI /emu/ Platform +.IR Platform -specific +source for +.IR emu (1). +.TP +.B /libkfs +The emu version of +.IR kfs (3). +.TP +.B /libbio +.TP +.B /libregexp +Source to libraries used by hosted commands. +.TP +.B /lib9 +Source to the Plan 9 emulation library, used by +emu and the hosted commands. +.TP +.B /libmemdraw +.TP +.B /libmemlayer +.TP +.B /libprefab +.TP +.B /libkern +.TP +.B /libkeyring +.TP +.B /libdraw +.TP +.B /libinterp +.TP +.B /libtk +Inferno source used by both native and hosted versions of +Inferno. +.TP +.B /asm +.TP +.B /limbo +Source to the two hosted Inferno commands of +the same name. +.TP +.B /utils +Source to hosted utilities run from +.IR emu (1) +via the +.IR cmd (3) +interface. +.TP +.B /tools +A directory containing source directories +for hosted tools used in building Inferno +(e.g. +.IR mk (10.1)). +.TP +.B /os +A directory holding source directories for the native versions of Inferno. +.TP +.B /os/init +Limbo source for platform-specific initialisation procedures. +.TP +.B /os/port +Portable native kernel source. +.TP +.BI /os/ arch +.IR Arch -specific +native kernel source. +.TP +.B /os/kfs +The native kernel version of +.IR kfs (3). +.SS "Minimal name space" +The above is all very well on a system with lots of storage, +but what is actually necessary for the running of Inferno? +The following gives a quick summary of the structure that +must be provided for Inferno to function correctly. +.TF /appl/cmd +.TP +.B /dis +This must contain Dis modules for all the applications +you plan to run, and the modules they depend on. +.IR Disdep (1) +can be useful when trying to determine this set. +.TP +.B /dev +.TP +.B /env +.TP +.B /chan +.TP +.B /net +.TP +.B /prog +.TP +.B /tmp +All empty unwritable directories, place holders for mounted services and +applications. +Often these are provided by the built-in +.IR root (3). +.TP +.B /mnt +A directory containing mount points for applications. +.TP +.B /n +A directory containing mount points for remote file systems. +.SS "Files needed to run as a server" +.TF /appl/cmd +.TP +.B /keydb/keys +See +.IR keyfs (4), +.IR logind (8) +and +.IR signer (8). +.TP +.B /keydb/signerkey +See +.IR createsignerkey (8) +and +.IR logind (8). +.SS "Files needed to run the window manager" +.TF /appl/cmd +.TP +.B /fonts +At least one font must be provided - a default font for Tk +to use. +.TP +.B /icons/tk +This should contain icons used by applications that run within Tk. +.TP +.BI /user/ user +At least one user directory must exist if +.IR logon (1) +is to function correctly. +.SH SEE ALSO +.IR intro (1), +.IR root (3), +.IR namespace (6) diff --git a/man/4/palmsrv b/man/4/palmsrv new file mode 100644 index 00000000..d5718771 --- /dev/null +++ b/man/4/palmsrv @@ -0,0 +1,49 @@ +.TH PALMSRV 4 +.SH NAME +palmsrv \- packet link to Palm device on serial connection +.SH SYNOPSIS +.B palm/palmsrv +[ +.B -D +] [ +.BI -d " device" +] [ +.BI -s " speed" +] +.SH DESCRIPTION +.I Palmsrv +serves packet link connections to a Palm device connected on the given +.I device +(default: +.BR "/dev/eia0" ) +at the given +.I speed +(default: +57600 baud). +Client applications open +.B /chan/palmsrv +to obtain a connection. +Each write must contain the data portion of a single Packet Assembly-Disassembly Protocol message +containing a Desklink protocol request. +If the device rejects the request, the write returns a diagnostic; otherwise, +a subsequent read will retrieve the reply. +.PP +The server can be shut down by writing the text +.B exit +to the file +.BR /chan/palmsrv : +.IP +.EX +echo -n exit >/chan/palmsrv +.EE +.PP +.SH FILES +.B /chan/palmsrv +.SH SOURCE +.B /appl/cmd/palm/palmsrv.b +.SH SEE ALSO +.IR palmfile (2) +.SH BUGS +It does not yet support USB. +.br +It does not tickle the Palm when there are long delays. diff --git a/man/4/ramfile b/man/4/ramfile new file mode 100644 index 00000000..415c3094 --- /dev/null +++ b/man/4/ramfile @@ -0,0 +1,63 @@ +.TH RAMFILE 4 +.SH NAME +ramfile \- synthesise file +.SH SYNOPSIS +.B ramfile +.I file +[ +.I data +] +.SH DESCRIPTION +.I Ramfile +puts a virtual file in the name space at +.IR file , +and services file requests on it. +Data written to the file is stored in +.IR ramfile 's +memory; read requests return the previously stored data. +If the optional +.I data +argument is provided, the file will initially contain that text. +The parent directory of +.I file +must exist; +.I ramfile +creates a union mount on that directory, and if +.I file +previously existed, the synthesised file will hide it. +.PP +.I Ramfile +uses +.IR sys-file2chan (2), +which simplifies implementation but prevents it from knowing +when the file has been truncated. +Instead, it truncates the file on any write to the start of the file +(offset 0), +allowing +.IR cp (1) +to copy in new contents, and +text editors to edit it. +Indeed, the file will be usable by all applications that do +not rely on updating parts of the file in place, or if they do, +do not update the start of the file. +.SH SOURCE +.B /appl/cmd/ramfile.b +.SH SEE ALSO +.IR bind (1), +.IR sys-file2chan (2), +.IR srv (3), +.IR memfs (4) +.SH BUGS +.I Ramfile +cannot tell when the +.I path +has been unmounted; +the only option is to +.IR kill (1) +it. +.br +The +.I file +always appears to have zero length to +.IR sys-stat (2), +which prevents loading a Dis file from it. diff --git a/man/4/registry b/man/4/registry new file mode 100644 index 00000000..c952d3d6 --- /dev/null +++ b/man/4/registry @@ -0,0 +1,196 @@ +.TH REGISTRY 4 +.SH NAME +registry, regquery \- registration of services dynamically +.SH SYNOPSIS +.B ndb/registry +[ +.BI -f " dbfile" +] +.PP +.B ndb/regquery +[ +.BI -m " mntpt" +] +[ +.B -n +] +[ +.I "attr value" +] ... +.SH DESCRIPTION +.I Registry +is a file server that +provides registration and location of services by their attributes +where services come and go. +It was originally intended to register Grid resources +but has much wider use. +.I Registry +serves Styx on its standard input. +That can be mounted in the local name space (see below for an example), +or served over a connection +(eg, via +.IR listen (1)). +The conventional local mount point is +.BR /mnt/registry , +which is where +.IR registries (2) +expects to find the local registry by default. +There can, however, be any number of registries active, +each supporting a different group of users and services, +in different authentication domains. +.PP +.I Registry +serves a one-level directory containing a few control files +and one file per registered service. +All the files are text files with similar format: +zero or more lines of one or more words, separated by white space (blank or tab). +A word can be quoted, using single quotes in the style of +.IR sh (1), +allowing it to contain white space +or represent the empty string +.BR \&'' . +Within a quoted word, a single quote character is represented by two adjacent ones. +(In programs, use +.B String->quoted +from +.IR string (2), +or more simply the +.B %q +string format of +.IR sys-print (2) +to quote strings appropriately.) +.PP +The control files are: +.TF index +.PD +.TP +.B new +A text file that is opened and written to register a new service. +Opening +.B new +returns a file descriptor to a new but anonymous service file. +It must be written to set its name and initial description. +The first write contains one or more words: +.RS +.IP +.IR svcname " [" " attr value " ] ..." +.PP +The first word, +.IR svcname , +is the proposed service name. +The write returns an error if the name duplicates any existing name. +Otherwise, a new file +.I svcname +will appear in the directory. +The optional attribute value pairs form the initial service description. +The service is removed from the register by default when the file is closed. +To advertise a service without having to hold open a file descriptor, include an +.I attr +named +.B persist +with non-zero +.IR value ; +the service will then remain registered until explicitly removed (see below). +.RE +.TP +.B index +A read-only text file containing a list of all the currently-registered services, one per line. +Each line contains a sequence of words. +The first word is the service name and the remaining ones are paired: attribute name then value. +.TP +.B find +A text file which should be opened for reading and writing. +Each write provides a set of attribute/value pairs that acts as a filter, selecting only those +services that possess all the given attributes with the given values; +the value +.B \&"*" +matches any value. +Subsequent reads return a list of services, in the same format +as +.BR index , +but listing only the selected services. +The selection is made from those available at the time of the write. +There is a separate filter for each open instance of +.BR find , +so that several processes can set different filters simultaneously. +(Note that after the write, the file offset must be set to zero using +.IR sys-seek (2) +before reading.) +.PP +A service file created by +.B new +may be read by anyone, but may be written only by its owner. +Each write must contain a set of attribute/value pairs, formatted as above, which adds new attributes to the service +description and changes the value of +existing attributes. +The file remains until the service is struck off the register. +The owner of a service can remove its registration at any time by removing the corresponding +service file (eg, using +.IR rm (1) +or +.IR sys-remove (2)). +.PP +Typically, most services register themselves dynamically, perhaps using their locations (eg, network address) +as their service names. +.RI ( Registry +itself does not interpret the name.) +The +.B -f +option causes +.I registry +to load initially a set of static service descriptions from +.IR dbfile , +which is in +.IR attrdb (6) +format. +The database entry for each service contains the pair +.BI service= svcname, +causing +.I registry +to make an entry for the given +.I svcname +with attribute/value pairs initialised from the rest of that database entry. +For example: +.IP +.EX +service=net!click!1234 + description='snapshot service' auth=none +.EE +.PP +Static entries are regarded as persistent but can be removed explicitly by the registry owner. +.PP +.I Regquery +looks for services in the registry mounted at +.I mntpt +(default: +.BR /mnt/registry ) +that match all the given attribute/value pairs. +It prints the resulting list of services, one per line. +If the +.B -n +option is given, +.I regquery +prints only the service name(s); otherwise it prints the service description as well. +If no attributes are given on the command line, +.I regquery +prompts for successive queries, one per line, and prints each result. +.SH EXAMPLE +Start a registry that appears at the standard location for local registries, +.BR /mnt/registry : +.IP +.EX +mount -A ${pipe to ndb/register} /mnt/registry +.EE +.PP +Make that registry available to the network on authenticated connections: +.IP +.EX +listen -v 'tcp!*!registry' {export /mnt/registry&} +.EE +.SH SOURCE +.B /appl/cmd/ndb/registry.b +.SH SEE ALSO +.IR attrdb (2), +.IR registries (2) +.SH BUGS +It is not currently possible to have two values with the same attribute name in the same service description. diff --git a/man/4/spree b/man/4/spree new file mode 100644 index 00000000..f4541e1d --- /dev/null +++ b/man/4/spree @@ -0,0 +1,195 @@ +.TH SPREE 4 +.SH NAME +spree \- distributed interactive sessions. +.SH SYNOPSIS +.B mount {spree/spree} /n/remote +.PP +.B /n/remote/name +.br +.BI /n/remote/ n +.br +.BI /n/remote/ n /ctl +.SH DESCRIPTION +.B Spree +serves a file system that allows clients to interact +through various types of +.I engine +(see +.IR spree (2) +for an explanation of engines). +It serves styx messages through file descriptor 0; +thus it can be mounted directly with +.IR mount (1), +or made available across the network +with +.I styxlisten +(see +.IR listen (1)). +.PP +Spree serves a name-space consisting of a directory +for each clique that is currently active, and +a file, +.BR name , +that holds the authenticated name of the user that has +mounted the spree namespace. +A clique's directory holds at least one file, +.BR ctl ; +if a client opens this file, it can write to it +communicate with the clique's engine, and read from +it to find updates to the state of the clique. +Messages written to the file are formed as text +and the write yields an error if there is an error +executing the command. +The first message written to the file is the +initial request to join the clique; conventionally it +is the string +.BR join , +but some engines accept other kinds of message +(e.g. +.BR watch ). +If the initial request succeeds, the client will be +informed of the current state of the clique by means +of update messages read from the same file. +Reading from the file will block until an update +is available, whereupon the read request will return +as many updates are available, separated by newline characters. +If there are more updates available than can fit +in the read request, the last two bytes of the buffer +read will be a newline character and an asterisk +.RB ( * ) +respectively, indicating that there are more updates +to come. +.PP +When +.I spree +is first started, it creates one clique, a ``lobby'' +(see +.IR spree-lobby (4)) +that allows other cliques to be created; this +is named +.BR 0 ). +.PP +A client cannot join a particular clique +more than once. +.PP +A zero-length write to the +.B ctl +file causes any reads +of that file from the same file descriptor to yield +EOF (no bytes). +This is necessary to force a hangup under +systems such as Windows, where it is not possible +to interrupt a kproc blocked on a network read. +.PP +The update messages generated by +.I spree +are as follows: +.RS +.TP +.BI create " objid parentid visibility objtype" +Create an object, identified by +.IR objid , +at the end of +.IR parentid 's +children +.RI ( parentid +is +.B -1 +for the root object). +.I Visibility +is non-zero if the object's children are visible +to the member reading the update. +.I Objtype +is the object's type (engine dependent). +.TP +.BI tx " srcid dstid start end index" +Transfer objects from +.I srcid +to +.IR dstid. +Take the objects from the range +.RI [ start ,\ end ) +in the children of +.IR srcid , +and insert them just before +.I index +in +.IR dstid . +When objects are transferred +to an object that conceals its children, +and the object is itself visible, +the objects will first be transferred to the +destination and then deleted; objects transferred +out of such an object will first be created and +.I then +transferred to their destination. +This enables a client to maintain some knowledge +of where an object has been transferred to, even +if the object is no longer visible, and means +that a client is unable to keep track of objects +that are concealed from it. +.TP +.BI del " parentid start end " "" objid\fR... +Delete the range +.RI [ start ,\ end ) +of children from the object identified by +.IR parentid . +.I Spree +guarantees that those objects will themselves +not have any children. +The list of +.IR objid s +gives the actual identifiers of the objects deleted, +for the benefit of clients that do not wish to keep lists of objects' children. +.TP +.BI set " objid attr val" +Set the attribute named +.I attr +on object +.I objid +to +.IR val . +.TP +.BI vis " objid visibility" +The visibility of object to the reading member +.I objid +has changed to +.I visibility +(non-zero if visible). +.TP +.I action +Game engines can generate arbitrary messages +of their own devising; such messages are specific +to particular engine types. +.PP +Note that a given client does not have to interpret +all the above messages \- different client types +have their own conventions. The +.B card +client type uses most of the above functionality, +for example, whereas a client for the +.B chat +engine listed in +.IR spree (2) +can get away with interpreting only one message, the custom action +.BR chat . +.PP +Writes to the opened clique file +are interpreted as clique actions by +the clique that has been loaded, and acted on accordingly. +Invalid actions will draw a write error. +.RE +.SH EXAMPLE +The simplest client! +.PP +.EX +mount tcp!somehost.com!3242 /n/remote +{ + echo create chat >[1=0] + cat & + cat >[1=0] < /dev/cons +} <> /n/remote/new +.SH SOURCE +.B /appl/cmd/cliques/spree.b +.SH SEE ALSO +.IR spree (2) diff --git a/man/4/tarfs b/man/4/tarfs new file mode 100644 index 00000000..7025379b --- /dev/null +++ b/man/4/tarfs @@ -0,0 +1,40 @@ +.TH TARFS 4 +.SH NAME +tarfs \- mount tar archive +.SH SYNOPSIS +.B tarfs +[ +.B -ab +] +.I tarfile +.I mountpt +.SH DESCRIPTION +.I Tarfs +makes the contents of the directories and files archived in the given Unix/POSIX +.I tar +archive +.I tarfile +visible in the name space under +.IR mountpt . +They can then be accessed in an obvious way by other commands +such as +.IR ls (1) +and +.IR cp (1). +Only read access is supported. +User and group names are simply the numeric user and group IDs in the file. +The +.B -a +and +.B -b +options cause the +.IR tarfile 's +name space to be placed after or before the current contents of +.IR mountpt ; +the default is to replace that directory's contents. +.SH SOURCE +.B /appl/cmd/tarfs.b +.SH SEE ALSO +.IR gettar (1), +.IR archfs (4), +.IR intro (5) diff --git a/man/5/0intro b/man/5/0intro new file mode 100644 index 00000000..88be31ac --- /dev/null +++ b/man/5/0intro @@ -0,0 +1,629 @@ +.TH INTRO 5 +.SH NAME +intro \- introduction to the Inferno File Protocol, Styx +.SH SYNOPSIS +.B #include <lib9.h> +.br +.B #include <styx.h> +.SH DESCRIPTION +An Inferno +.I server +is an agent that provides one or more hierarchical file systems +\(em file trees \(em +that may be accessed by Inferno processes. +A server responds to requests by +.I clients +to navigate the hierarchy, +and to create, remove, read, and write files. +The prototypical server is a separate machine that stores +large numbers of user files on permanent media. +Another possibility for a server is to synthesize +files on demand, perhaps based on information on data structures +inside the kernel; the +.IR prog (3) +.I kernel device +is a part of the Inferno kernel that does this. +User programs can also act as servers. +One easy way is to serve a set of files +using the +.IR sys-file2chan (2) +interface. +More complex Limbo file service applications can use +.IR styx (2) +to handle the protocol messages directly, +or use +.IR styxservers (2) +to provide a higher-level framework for file serving. +.PP +A +.I connection +to a server is a bidirectional communication path from the client to the server. +There may be a single client or +multiple clients sharing the same connection. +A server's file tree is attached to a process +group's name space by +.IR bind +and +.I mount +calls; +see +.IR intro (2) +and +.IR sys-bind (2). +Processes in the group are then clients +of the server: +system calls operating on files are translated into requests +and responses transmitted on the connection to the appropriate service. +.PP +The +.IR "Inferno File Protocol" , +Styx, is used for messages between +.I clients +and +.IR servers . +The current version of Styx is identical to Plan 9's 9P2000. +A client transmits +.I requests +.RI ( T-messages ) +to a server, which +subsequently returns +.I replies +.RI ( R-messages ) +to the client. +The combined acts of transmitting (receiving) a request of a particular type, +and receiving (transmitting) +its reply is called a +.I transaction +of that type. +.PP +Each message consists of a sequence of bytes. +Two-, four-, and eight-byte fields hold unsigned +integers represented in little-endian order +(least significant byte first). +Data items of larger or variable lengths are represented +by a two-byte field specifying a count, +.IR n , +followed by +.I n +bytes of data. +Text strings are represented this way, +with the text itself stored as a UTF-8 +encoded sequence of Unicode characters (see +.IR utf (6)). +Text strings in Styx messages are not +.SM NUL\c +-terminated: +.I n +counts the bytes of UTF-8 data, which include no final zero byte. +The +.SM NUL +character is illegal in all text strings in Styx, and is therefore +excluded from file names, user names, and so on. +.PP +Each Styx message begins with a four-byte size field +specifying the length in bytes of the complete message including +the four bytes of the size field itself. +The next byte is the message type, one of the constants +in the module +.IR styx (2), +and in the C include file +.BR <styx.h> +(see +.IR styx (10.2)). +The next two bytes are an identifying +.IR tag , +described below. +The remaining bytes are parameters of different sizes. +In the message descriptions, the number of bytes in a field +is given in brackets after the field name. +The notation +.IR parameter [ n ] +where +.I n +is not a constant represents a variable-length parameter: +.IR n [2] +followed by +.I n +bytes of data forming the +.IR parameter . +The notation +.IR string [ s ] +(using a literal +.I s +character) +is shorthand for +.IR s [2] +followed by +.I s +bytes of UTF-8 text. +(Systems may choose to reduce the set of legal characters +to reduce syntactic problems, +for example to remove slashes from name components, +but the protocol has no such restriction. +Inferno names may contain any printable character (that is, any character +outside hexadecimal 00-1F and 80-9F) +except slash.) +Messages are transported in byte form to allow for machine independence; +.IR styx (10.2) +describes routines that convert to and from this form into a machine-dependent +C structure. +.SH MESSAGES +.ta \w'\fLTsession 'u +.IP +.ne 2v +.IR size [4] +.B Tversion +.IR tag [2] +.IR msize [4] +.IR version [ s ] +.br +.IR size [4] +.B Rversion +.IR tag [2] +.IR msize [4] +.IR version [ s ] +.IP +.ne 2v +.IR size [4] +.B Tauth +.IR tag [2] +.IR afid [4] +.IR uname [ s ] +.IR aname [ s ] +.br +.br +.IR size [4] +.B Rauth +.IR tag [2] +.IR aqid [13] +.IP +.ne 2v +.IR size [4] +.B Rerror +.IR tag [2] +.IR ename [ s ] +.IP +.ne 2v +.IR size [4] +.B Tflush +.IR tag [2] +.IR oldtag [2] +.br +.IR size [4] +.B Rflush +.IR tag [2] +.IP +.ne 2v +.IR size [4] +.B Tattach +.IR tag [2] +.IR fid [4] +.IR afid [4] +.IR uname [ s ] +.IR aname [ s ] +.br +.IR size [4] +.B Rattach +.IR tag [2] +.IR qid [13] +.IP +.ne 2v +.IR size [4] +.B Twalk +.IR tag [2] +.IR fid [4] +.IR newfid [4] +.IR nwname [2] +.IR nwname *( wname [ s ]) +.br +.IR size [4] +.B Rwalk +.IR tag [2] +.IR nwqid [2] +.IR nwqid *( wqid [13]) +.IP +.ne 2v +.IR size [4] +.B Topen +.IR tag [2] +.IR fid [4] +.IR mode [1] +.br +.IR size [4] +.B Ropen +.IR tag [2] +.IR qid [13] +.IR iounit [4] +.IP +.ne 2v +.IR size [4] +.B Tcreate +.IR tag [2] +.IR fid [4] +.IR name [ s ] +.IR perm [4] +.IR mode [1] +.br +.IR size [4] +.B Rcreate +.IR tag [2] +.IR qid [13] +.IR iounit [4] +.IP +.ne 2v +.IR size [4] +.B Tread +.IR tag [2] +.IR fid [4] +.IR offset [8] +.IR count [4] +.br +.IR size [4] +.B Rread +.IR tag [2] +.IR count [4] +.IR data [ count ] +.IP +.ne 2v +.IR size [4] +.B Twrite +.IR tag [2] +.IR fid [4] +.IR offset [8] +.IR count [4] +.IR data [ count ] +.br +.IR size [4] +.B Rwrite +.IR tag [2] +.IR count [4] +.IP +.ne 2v +.IR size [4] +.B Tclunk +.IR tag [2] +.IR fid [4] +.br +.IR size [4] +.B Rclunk +.IR tag [2] +.IP +.ne 2v +.IR size [4] +.B Tremove +.IR tag [2] +.IR fid [4] +.br +.IR size [4] +.B Rremove +.IR tag [2] +.IP +.ne 2v +.IR size [4] +.B Tstat +.IR tag [2] +.IR fid [4] +.br +.IR size [4] +.B Rstat +.IR tag [2] +.IR stat [ n ] +.IP +.ne 2v +.IR size [4] +.B Twstat +.IR tag [2] +.IR fid [4] +.IR stat [ n ] +.br +.IR size [4] +.B Rwstat +.IR tag [2] +.PP +Each T-message has a +.I tag +field, chosen and used by the client to identify the message. +The reply to the message will have the same tag. +Clients must arrange that no two outstanding messages +on the same connection have the same tag. +An exception is the tag +.BR NOTAG , +defined as +.B 16rFFFF +in +.IR styx (2) +and +.IR styx (10.2): +the client can use it, when establishing a connection, +to +override tag matching in +.B version +messages. +.PP +The type of an R-message will either be one greater than the type +of the corresponding T-message or +.BR Rerror , +indicating that the request failed. +In the latter case, the +.I ename +field contains a string describing the reason for failure. +.PP +The +.B version +message identifies the version of the protocol and indicates +the maximum message size the system is prepared to handle. +It also initializes the connection and +aborts all outstanding I/O on the connection. +The set of messages between +.B version +requests is called a +.IR session . +.PP +Most T-messages contain a +.IR fid , +a 32-bit unsigned integer that the client uses to identify +a ``current file'' on the server. +Fids are somewhat like file descriptors in a user process, +but they are not restricted to files open for I/O: +directories being examined, files being accessed by +.IR sys-stat (2) +calls, and so on \(em all files being manipulated by the operating +system \(em are identified by fids. +Fids are chosen by the client. +All requests on a connection share the same fid space; +when several clients share a connection, +the agent managing the sharing must arrange +that no two clients choose the same fid. +.PP +The fid supplied in an +.B attach +message +will be taken by the server to refer to the root of the served file tree. +The +.B attach +identifies the user +to the server and may specify a particular file tree served +by the server (for those that supply more than one). +.PP +Permission to attach to the service is proven by providing a special fid, called +.BR afid , +in the +.B attach +message. This +.B afid +is established by exchanging +.B auth +messages and subsequently manipulated using +.B read +and +.B write +messages to exchange authentication information not defined explicitly by Styx. +Once the authentication protocol is complete, the +.B afid +is presented in the +.B attach +to permit the user to access the service. +.PP +A +.B walk +message causes the server to change the current file associated +with a fid to be a file in the directory that is the old current file, or one of +its subdirectories. +.B Walk +returns a new fid that refers to the resulting file. +Usually, a client maintains a fid for the root, +and navigates by +.B walks +from the root fid. +.PP +A client can send multiple T-messages without waiting for the corresponding +R-messages, but all outstanding T-messages must specify different tags. +The server may delay the response to a request +and respond to later ones; +this is sometimes necessary, for example when the client reads +from a file that the server synthesizes from external events +such as keyboard characters. +.PP +Replies (R-messages) to +.BR auth , +.BR attach , +.BR walk , +.BR open , +and +.B create +requests convey a +.I qid +field back to the client. +The qid represents the server's unique identification for the +file being accessed: +two files on the same server hierarchy are the same if and only if their qids +are the same. +(The client may have multiple fids pointing to a single file on a server +and hence having a single qid.) +The thirteen-byte qid fields hold a one-byte type, +specifying whether the file is a directory, append-only file, etc., +and two unsigned integers: +first the four-byte qid +.IR version , +then the eight-byte qid +.IR path . +The path is an integer unique among all files in the hierarchy. +If a file is deleted and recreated with the +same name in the same directory, the old and new path components of the qids +should be different. +The version is a version number for a file; +typically, it is incremented every time the file is modified. +.PP +An existing file can be +.BR opened , +or a new file may be +.B created +in the current (directory) file. +I/O of a given number of bytes +at a given offset +on an open file is done by +.B read +and +.BR write . +.PP +A client should +.B clunk +any fid that is no longer needed. +The +.B remove +transaction deletes files. +.PP +The +.B stat +transaction retrieves information about the file. +The +.I stat +field in the reply includes the file's +name, +access permissions (read, write and execute for owner, group and public), +access and modification times, and +owner and group identifications +(see +.IR stat (2)). +The owner and group identifications are textual names. +The +.B wstat +transaction allows some of a file's properties +to be changed. +.PP +A request can be aborted with a +flush +request. +When a server receives a +.BR Tflush , +it should not reply to the message with tag +.I oldtag +(unless it has already replied), +and it should immediately send an +.BR Rflush . +The client must wait +until it gets the +.B Rflush +(even if the reply to the original message arrives in the interim), +at which point +.I oldtag +may be reused. +.PP +Because the message size is negotiable and some elements of the +protocol are variable length, it is possible (although unlikely) to have +a situation where a valid message is too large to fit within the negotiated size. +For example, a very long file name may cause a +.B Rstat +of the file or +.B Rread +of its directory entry to be too large to send. +In most such cases, the server should generate an error rather than +modify the data to fit, such as by truncating the file name. +The exception is that a long error string in an +.B Rerror +message should be truncated if necessary, since the string is only +advisory and in some sense arbitrary. +.PP +Most programs do not see the Styx protocol directly; instead calls to library +routines that access files are +translated by the mount driver, +.IR mnt (3), +into Styx messages. +.SH DIRECTORIES +Directories are created by +.B create +with +.B DMDIR +set in the permissions argument (see +.IR stat (5)). +The members of a directory can be found with +.IR read (5). +All directories must support +.B walks +to the directory +.B .. +(dot-dot) +meaning parent directory, although by convention directories +contain no explicit entry for +.B .. +or +.B . +(dot). +The parent of the root directory of a server's tree is itself. +.SH "ACCESS PERMISSIONS" +Each file server maintains a set of user and group names. +Each user can be a member of any number of groups. +Each group has a +.I group leader +who has special privileges (see +.IR stat (5)). +Every file request has an implicit user id (copied from the original +.BR attach ) +and an implicit set of groups (every group of which the user is a member). +.PP +Each file has an associated +.I owner +and +.I group +id and +three sets of permissions: +those of the owner, those of the group, and those of ``other'' users. +When the owner attempts to do something to a file, the owner, group, +and other permissions are consulted, and if any of them grant +the requested permission, the operation is allowed. +For someone who is not the owner, but is a member of the file's group, +the group and other permissions are consulted. +For everyone else, the other permissions are used. +Each set of permissions says whether reading is allowed, +whether writing is allowed, and whether executing is allowed. +A +.B walk +in a directory is regarded as executing the directory, +not reading it. +Permissions are kept in the low-order bits of the file +.IR mode : +owner read/write/execute permission represented as 1 in bits 8, 7, and 6 +respectively (using 0 to number the low order). +The group permissions are in bits 5, 4, and 3, +and the other permissions are in bits 2, 1, and 0. +.PP +The file +.I mode +contains some additional attributes besides the permissions. +If bit 31 +.RB ( DMDIR ) +is set, the file is a directory; +if bit 30 +.RB ( DMAPPEND ) +is set, the file is append-only (offset is ignored in writes); +if bit 29 +.RB ( DMEXCL ) +is set, the file is exclusive-use (only one client may have it +open at a time); +if bit 27 +.RB ( DMAUTH ) +is set, the file is an authentication file established by +.B auth +messages. +(Bit 28 is skipped for historical reasons.) +These bits are reproduced, from the top bit down, in the type byte of the Qid: +.BR QTDIR , +.BR QTAPPEND , +.BR QTEXCL , +and (skipping one bit) +.BR QTAUTH . +The name +.BR QTFILE , +defined to be zero, +identifies the value of the type for a plain file. +.SH SEE ALSO +.IR intro (2), +.IR styx (2), +.IR styxservers (2), +.IR sys-bind (2), +.IR sys-stat (2), +.IR mnt (3), +.IR prog (3), +.IR read (5), +.IR stat (5), +.IR styx (10.2) diff --git a/man/5/INDEX b/man/5/INDEX new file mode 100644 index 00000000..79cae862 --- /dev/null +++ b/man/5/INDEX @@ -0,0 +1,15 @@ +intro 0intro +attach attach +auth attach +clunk clunk +error error +flush flush +create open +open open +read read +write read +remove remove +stat stat +wstat stat +version version +walk walk diff --git a/man/5/attach b/man/5/attach new file mode 100644 index 00000000..ae561d7b --- /dev/null +++ b/man/5/attach @@ -0,0 +1,159 @@ +.TH ATTACH 5 +.SH NAME +attach, auth \- messages to establish a connection +.SH SYNOPSIS +.ta \w'\fLTauth 'u +.IR size [4] +.B Tauth +.IR tag [2] +.IR afid [4] +.IR uname [ s ] +.IR aname [ s ] +.br +.IR size [4] +.B Rauth +.IR tag [2] +.IR aqid [13] +.PP +.IR size [4] +.B Tattach +.IR tag [2] +.IR fid [4] +.IR afid [4] +.IR uname [ s ] +.IR aname [ s ] +.br +.IR size [4] +.B Rattach +.IR tag [2] +.IR qid [13] +.SH DESCRIPTION +.PP +The +.B attach +message serves as a fresh introduction from a user on +the client machine to the server. +The message identifies the user +.RI ( uname ) +and may select +the file tree to access +.RI ( aname ). +The +.I afid +argument specifies a fid previously established by an +.B auth +message, as described below. +.PP +As a result of the +.B attach +transaction, the client will have a connection to the root +directory of the desired file tree, +represented by +.IR fid . +An error is returned if +.I fid +is already in use. +The server's idea of the root of the file tree is represented by the returned +.IR qid . +.PP +If the client does not wish to authenticate the connection, or knows that +authentication is not required, the +.I afid +field in the +.B attach +message should be set to +.BR NOFID , +defined as +.B (u32int)~0 +in +.BR <fcall.h> . +If the client does wish to authenticate, it must acquire and validate an +.I afid +using an +.B auth +message before doing the +.BR attach . +.PP +The +.B auth +message contains +.IR afid , +a new fid to be established for authentication, and the +.I uname +and +.I aname +that will be those of the following +.B attach +message. +If the server does not require authentication, it returns +.B Rerror +to the +.B Tauth +message. +.PP +If the server does require authentication, it returns +.I aqid +defining a file of type +.B QTAUTH +(see +.IR intro (5)) +that may be read and written (using +.B read +and +.B write +messages in the usual way) to execute an authentication protocol. +That protocol's definition is not part of Styx itself. +.PP +Once the protocol is complete, the same +.I afid +is presented in the +.B attach +message for the user, granting entry. +The same validated +.I afid +may be used for multiple +.B attach +messages with the same +.I uname +and +.IR aname . +.SH ENTRY POINTS +An +.B attach +transaction will be generated for kernel devices +(see +.IR intro (3)) +when a system call evaluates a file name +beginning with +.LR # . +.IR Sys-pipe (2) +generates an attach on the kernel device +.IR pipe (3). +The +.B mount +call (see +.IR sys-bind (2)) +generates an +.B attach +message to the remote file server. +When the kernel boots, an +.I attach +is made to the root device, +.IR root (3), +and then an +.B attach +is made to the requested file server machine. +.PP +An +.B auth +transaction is generated by the +.IR fauth (2) +system call or by the first +.B mount +system call on an uninitialized connection. +.SH SEE ALSO +.IR sys-bind (2), +.IR sys-fauth (2), +.IR intro (3), +.IR root (3), +.IR version (5) diff --git a/man/5/clunk b/man/5/clunk new file mode 100644 index 00000000..b21eba0a --- /dev/null +++ b/man/5/clunk @@ -0,0 +1,44 @@ +.TH CLUNK 5 +.SH NAME +clunk \- forget about a fid +.SH SYNOPSIS +.ta \w'\fLTclunk 'u +.IR size [4] +.B Tclunk +.IR tag [2] +.IR fid [4] +.br +.IR size [4] +.B Rclunk +.IR tag [2] +.SH DESCRIPTION +The +.B clunk +request informs the file server +that the current file represented by +.I fid +is no longer needed by the client. +The actual file is not removed on the server unless the fid had been opened with +.BR ORCLOSE . +.PP +Once a fid has been clunked, +the same fid can be reused in a new +.B walk +or +.B attach +request. +.PP +Even if the +.B clunk +returns an error, the +.I fid +is no longer valid. +.SH ENTRY POINTS +A +.B clunk +message is generated when a file descriptor is closed (usually by the garbage collector) +and indirectly by other actions such as failed +.I open +calls. +.SH SEE ALSO +.IR sys-open (2) diff --git a/man/5/error b/man/5/error new file mode 100644 index 00000000..9b6984d3 --- /dev/null +++ b/man/5/error @@ -0,0 +1,25 @@ +.TH ERROR 5 +.SH NAME +error \- return an error +.SH SYNOPSIS +.ta \w'\fLRerror 'u +.IR size [4] +.B Rerror +.IR tag [2] +.IR ename [ s ] +.SH DESCRIPTION +The +.B Rerror +message +(there is no +.BR Terror ) +is used to return an error string +describing the +failure of a transaction. +It replaces the corresponding reply message +that would accompany a successful call; its tag is that +of the failing request. +.PP +By convention, clients may truncate error messages after 128 bytes, +defined as the constant +.BR Sys->ERRMAX . diff --git a/man/5/flush b/man/5/flush new file mode 100644 index 00000000..48c2d306 --- /dev/null +++ b/man/5/flush @@ -0,0 +1,78 @@ +.TH FLUSH 5 +.SH NAME +flush \- abort a message +.SH SYNOPSIS +.ta \w'\fLTflush 'u +.IR size [4] +.B Tflush +.IR tag [2] +.IR oldtag [2] +.br +.IR size [4] +.B Rflush +.IR tag [2] +.SH DESCRIPTION +When the response to a request is no longer needed, such as when +a user interrupts a process doing a +.IR sys-read (2), +a +.B Tflush +request is sent to the server to purge the pending response. +The message being flushed is identified by +.IR oldtag . +The semantics of +.B flush +depends on messages arriving in order. +.PP +The server must answer the +.B flush +message immediately. +If it recognizes +.I oldtag +as the tag of a pending transaction, it should abort any pending response +and discard that tag. +In either case, it should respond with an +.B Rflush +echoing the +.I tag +(not +.IR oldtag ) +of the +.B Tflush +message. +A +.B Tflush +can never be responded to by an +.B Rerror +message. +.PP +When the client sends a +.BR Tflush , +it must wait to receive the corresponding +.B Rflush +before reusing +.I oldtag +for subsequent messages. +If a response to the flushed request is received before the +.BR Rflush , +the client must honor the response +as if it had not been flushed, +since the completed request may signify a state change in the server. +For instance, +.B Tcreate +may have created a file and +.B Twalk +may have allocated a fid. +If no response is received before the +.BR Rflush , +the flushed transaction is considered to have been cancelled, +and should be treated as though it had never been sent. +.PP +Several exceptional conditions are handled correctly by the above specification: +sending multiple flushes for a single tag, +flushing after a transaction is completed, +flushing a +.BR Tflush , +and flushing an invalid tag. +.SH SEE ALSO +.IR sys-read (2). diff --git a/man/5/open b/man/5/open new file mode 100644 index 00000000..5551384e --- /dev/null +++ b/man/5/open @@ -0,0 +1,250 @@ +.TH OPEN 5 +.SH NAME +open, create \- prepare a fid for I/O on an existing or new file +.SH SYNOPSIS +.ta \w'\fLTcreate 'u +.IR size [4] +.B Topen +.IR tag [2] +.IR fid [4] +.IR mode [1] +.br +.IR size [4] +.B Ropen +.IR tag [2] +.IR qid [13] +.IR iounit [4] +.PP +.IR size [4] +.B Tcreate +.IR tag [2] +.IR fid [4] +.IR name [ s ] +.IR perm [4] +.IR mode [1] +.br +.IR size [4] +.B Rcreate +.IR tag [2] +.IR qid [13] +.IR iounit [4] +.SH DESCRIPTION +The +.B open +request asks the file server to check permissions and +prepare a fid for I/O with subsequent +.B read +and +.B write +messages. +The +.I mode +field determines the type of I/O: +0 +(called +.BR OREAD +in +.BR Sys ), +1 +.RB ( OWRITE ), +2 +.RB ( ORDWR ), +and 3 +.RB ( OEXEC ) +mean +.I +read access, write access, read and write access, +and +.I +execute access, +to be checked against the permissions for the file. +In addition, if +.I mode +has the +.B OTRUNC +.RB ( 16r10 ) +bit set, +the file is to be truncated, which requires write permission +(if +the file is append-only, and permission is granted, the +.B open +succeeds but the file will not be truncated); +if the +.I mode +has the +.B ORCLOSE +.RB ( 16r40 ) +bit set, the file is to be removed when the fid +is clunked, which requires permission to remove the file from its directory. +All other bits in +.I mode +should be zero. +It is illegal to write a directory, truncate it, or attempt to remove it on close. +If the file is marked for exclusive use (see +.IR stat (5)), +only one client can have the file open at any time. +That is, after such a file has been opened, +further opens will fail until +.I fid +has been clunked. +All these permissions are checked at the time of the +.B open +request; subsequent changes to the permissions of files do not affect +the ability to read, write, or remove an open file. +.PP +The +.B create +request asks the file server to create a new file +with the +.I name +supplied, in the directory +.RI ( dir ) +represented by +.IR fid , +and requires write permission in the directory. +The owner of the file is the implied user id of the request, +the group of the file is the same as +.IR dir , +and the permissions are the value of +.ce +.B "perm & (~8r666 | (dir.perm & 8r666))" +if a regular file is being created and +.ce +.B "perm & (~8r777 | (dir.perm & 8r777))" +if a directory is being created. +This means, for example, that if the +.B create +allows read permission to others, but the containing directory +does not, then the created file will not allow others to read the file. +.PP +Finally, the newly created file is opened according to +.IR mode , +and +.I fid +will represent the newly opened file. +.I Mode +is not checked against the permissions in +.IR perm . +The +.I qid +for the new file is returned with the +.B create +reply message. +.PP +Directories are created by setting the +.B DMDIR +bit +.RB ( 16r80000000 ) +in the +.IR perm . +.PP +The names +.B . +and +.B .. +are special; it is illegal to create files with these names. +.PP +It is an error for either of these messages if the fid +is already the product of a successful +.B open +or +.B create +message. +.PP +An attempt to +.B create +a file in a directory where the given +.I name +already exists will be rejected; +in this case, the +.I create +system call +(see +.IR sys-open (2)) +uses +.B open +with truncation. +The algorithm used by the +.IR create +system call +is: +first walk to the directory to contain the file. +If that fails, return an error. +Next +.B walk +to the specified file. +If the +.B walk +succeeds, send a request to +.B open +and truncate the file and return the result, successful or not. +If the +.B walk +fails, send a create message. +If that fails, it may be because the file was created by another +process after the previous walk failed, so (once) try the +.B walk +and +.B open +again. +.PP +For the behavior of +.I create +on a union directory, see +.IR sys-bind (2). +.PP +The +.B iounit +field returned by +.B open +and +.B create +may be zero. +If it is not, it is the maximum number of bytes that are guaranteed to +be read from or written to the file without breaking the I/O transfer +into multiple Styx messages; see +.IR read (5). +.SH ENTRY POINTS +.I Open +and +.I create +both generate +.B open +messages; only +.I create +generates a +.B create +message. +The +.B iounit +associated with an open file may be discovered by calling +.IR sys-iounit (2). +.PP +For programs that need atomic file creation, without the race +that exists in the +.B open-create +sequence described above, +the kernel does the following. +If the +.B OEXCL +.RB ( 16r1000 ) +bit is set in the +.I mode +for a +.B create +system call, +the +.B open +message is not sent; the kernel issues only the +.BR create . +Thus, if the file exists, +.B create +will draw an error, but if it doesn't and the +.B create +system call succeeds, the process issuing the +.B create +is guaranteed to be the one that created the file. +.SH SEE ALSO +.IR sys-bind (2), +.IR sys-open (2), +.IR stat (5) diff --git a/man/5/read b/man/5/read new file mode 100644 index 00000000..19a67db4 --- /dev/null +++ b/man/5/read @@ -0,0 +1,124 @@ +.TH READ 5 +.SH NAME +read, write \- transfer data from and to a file +.SH SYNOPSIS +.ta \w'\fLTwrite 'u +.IR size [4] +.B Tread +.IR tag [2] +.IR fid [4] +.IR offset [8] +.IR count [4] +.br +.IR size [4] +.B Rread +.IR tag [2] +.IR count [4] +.IR data [ count ] +.PP +.IR size [4] +.B Twrite +.IR tag [2] +.IR fid [4] +.IR offset [8] +.IR count [4] +.IR data [ count ] +.br +.IR size [4] +.B Rwrite +.IR tag [2] +.IR count [4] +.SH DESCRIPTION +The +.B read +request +asks for +.I count +bytes of data +from the file identified by +.IR fid , +which must be opened for reading, +starting +.I offset +bytes after the beginning of the file. +The bytes are returned with the +.B read +reply message. +.PP +The +.I count +field in the reply indicates the number of bytes returned. +This may be less than the requested amount. +If the +.I offset +field is greater than or equal to the number of bytes in the file, +a count of zero will be returned. +.PP +For directories, +.B read +returns an integral number of +directory entries exactly as in +.B stat +(see +.IR stat (5)), +one for each member of the directory. +The +.B read +request message must have +.B offset +equal to zero or the value of +.B offset +in the previous +.B read +on the directory, plus the number of bytes +returned in the previous +.BR read . +In other words, seeking other than to the beginning +is illegal in a directory (see +.IR seek (2)). +.PP +The +.B write +request asks that +.I count +bytes of data be recorded in the file identified by +.IR fid , +which must be opened for writing, starting +.I offset +bytes after the beginning of the file. +If the file is append-only, +the data will be placed at the end of the file regardless of +.IR offset . +Directories may not be written. +.PP +The +.B write +reply records the number of bytes actually written. +It is usually an error +if this is not the same as requested. +.PP +Because Styx implementations may limit the size of individual +messages, +more than one message may be produced by a single +.I read +or +.I write +call. +The +.I iounit +field returned by +.IR open (5), +if non-zero, reports the maximum size that is guaranteed +to be transferred atomically. +.SH ENTRY POINTS +.B Read +and +.B write +messages are generated by the corresponding calls in +.IR sys-read (2). +Although +.IR sys-seek (2) +affects the offset, it does not generate a message. +.SH SEE ALSO +.IR sys-read (2), +.IR stat (5) diff --git a/man/5/remove b/man/5/remove new file mode 100644 index 00000000..39742375 --- /dev/null +++ b/man/5/remove @@ -0,0 +1,39 @@ +.TH REMOVE 5 +.SH NAME +remove \- remove a file from a server +.SH SYNOPSIS +.ta \w'\fLTremove 'u +.IR size [4] +.B Tremove +.IR tag [2] +.IR fid [4] +.br +.IR size [4] +.B Rremove +.IR tag [2] +.SH DESCRIPTION +The +.B remove +request asks the file server both to remove the file represented by +.I fid +and to +.B clunk +the +.IR fid , +even if the remove fails. +This request will fail if the client does not have write permission +in the parent directory. +.PP +It is correct to consider +.B remove +to be a +.B clunk +with the side effect of removing the file if permissions allow. +.SH ENTRY POINTS +.B Remove +messages are generated by +.B remove +(see +.IR sys-remove (2)). +.SH SEE ALSO +.IR sys-remove (2) diff --git a/man/5/stat b/man/5/stat new file mode 100644 index 00000000..763f5c97 --- /dev/null +++ b/man/5/stat @@ -0,0 +1,309 @@ +.TH STAT 5 +.SH NAME +stat, wstat \- inquire or change file attributes +.SH SYNOPSIS +.ta \w'\fLTwstat 'u +.IR size [4] +.B Tstat +.IR tag [2] +.IR fid [4] +.br +.IR size [4] +.B Rstat +.IR tag [2] +.IR stat [ n ] +.PP +.IR size [4] +.B Twstat +.IR tag [2] +.IR fid [4] +.IR stat [ n ] +.br +.IR size [4] +.B Rwstat +.IR tag [2] +.SH DESCRIPTION +The +.B stat +transaction inquires about the file +identified by +.IR fid . +The reply will contain a +machine-independent +.I directory +.IR entry , +.IR stat , +laid out as follows: +.TP +.I size\f1[2]\fP +total byte count of the following data +.TP +.I type\f1[2]\fP +for kernel use +.TP +.I dev\f1[4]\fP +for kernel use +.TP +.I qid.type\f1[1]\fP +the type of the file (directory, etc.), represented as a bit vector +corresponding to the high 8 bits of the file's mode word. +.TP +.I qid.vers\f1[4]\fP +version number for given path +.TP +.I qid.path\f1[8]\fP +the file server's unique identification for the file +.TP +.I mode\f1[4]\fP +permissions and flags +.TP +.I atime\f1[4]\fP +last access time +.TP +.I mtime\f1[4]\fP +last modification time +.TP +.I length\f1[8]\fP +length of file in bytes +.TP +.I name\f1[ s ]\fP +file name; must be +.B / +if the file is the root directory of the server +.TP +.I uid\f1[ s ]\fP +owner name +.TP +.I gid\f1[ s ]\fP +group name +.TP +.I muid\f1[ s ]\fP +name of the user who last modified the file +.PD +.PP +Integers in this encoding are in little-endian order (least +significant byte first). +The +.B unpackdir +and +.B packdir +functions of +.IR styx (2) +convert between directory entries and the Limbo adt +.BR Sys->Dir . +For C implementations, the +.I convM2D +and +.I convD2M +routines (see +.IR styx (10.2)) +convert between directory entries and a C structure called +.BR Dir . +.PP +The +.I mode +contains permission bits as described in +.IR intro (5) +and the following: +.B 16r80000000 +.RB ( DMDIR , +this file is a directory), +.B 16r40000000 +.RB ( DMAPPEND , +append only), +.B 16r20000000 +.RB ( DMEXCL , +exclusive use), +.B 16r04000000 +.RB ( DMTMP , +temporary); +these are echoed in +.BR Qid.type . +Writes to append-only files always place their data at the +end of the file; the +.I offset +in the +.B write +message is ignored, as is the +.B OTRUNC +bit in an open. +Exclusive use files may be open for I/O by only one fid at a time +across all clients of the server. If a second open is attempted, +it draws an error. Servers may implement a timeout on the lock +on an exclusive use file: if the fid holding the file open has +been unused for an extended period (of order at least minutes), +it is reasonable to break the lock and deny the initial fid +further I/O. +Temporary files are not included in any automatic archives or dumps a server might create. +.PP +The two time fields are measured in seconds since the epoch +(Jan 1 00:00 1970 GMT). +The +.I mtime +field reflects the time of the last change of content (except when later changed by +.BR wstat ). +For a plain file, +.I mtime +is the time of the most recent +.BR create , +.B open +with truncation, +or +.BR write ; +for a directory it is the time of the most recent +.BR remove , +.BR create , +or +.B wstat +of a file in the directory. +Similarly, the +.I atime +field records the last +.B read +of the contents; +also it is set whenever +.I mtime +is set. +In addition, for a directory, it is set by +an +.BR attach , +.BR walk , +or +.BR create , +all whether successful or not. +.PP +The +.I muid +field names the user whose actions most recently changed the +.I mtime +of the file. +.PP +The +.I length +records the number of bytes in the file. +Directories and most files representing devices have a conventional +length of 0. +.PP +The +.B stat +request requires no special permissions. +.PP +The +.B wstat +request can change some of the file status information. +The +.I name +can be changed by anyone with write permission in the parent directory; +it is an error to change the name to that of an existing file. +The +.I length +can be changed (affecting the actual length of the file) by anyone with +write permission on the file. +It is an error to attempt to set the length of a directory to a non-zero value, +and servers may decide to reject length changes for other reasons. +The +.I mode +and +.I mtime +can be changed by the owner of the file or the group leader of the file's current +group. +The directory bit cannot be changed by a +.BR wstat ; +the other defined permission and mode bits can. +The +.I gid +can be changed: by the owner if also a member of the new group; or +by the group leader of the file's current group +if also leader of the new group +(see +.IR intro (5) +for more information about permissions and +.IR users (6) +for users and groups). +None of the other data can be altered by a +.B wstat +and attempts to change them will trigger an error. +In particular, +it is illegal to attempt to change the owner of a file. +(These conditions may be +relaxed when establishing the initial state of a file server.) +.PP +Either all the changes in +.B wstat +request happen, or none of them does: if the request succeeds, +all changes were made; if it fails, none were. +.PP +A +.B wstat +request can avoid modifying some properties of the file +by providing explicit ``don't touch'' values in the +.B stat +data that is sent: zero-length strings for text values and +the maximum unsigned value of appropriate size +for integral values. +As a special case, if +.I all +the elements of the directory entry in a +.B Twstat +message are ``don't touch'' values, the server may interpret it +as a request to guarantee that the contents of the associated +file are committed to stable storage before the +.B Rwstat +message is returned. +(Consider the message to mean, ``make the state of the file +exactly what it claims to be.'') +.PP +A +.I read +of a directory yields an integral number of directory entries in +the machine independent encoding given above +(see +.IR read (5)). +.PP +Note that since the +.B stat +information is sent as a Styx variable-length datum, it is limited to a maximum of +65535 bytes. +.SH ENTRY POINTS +.B Stat +messages are generated by +.I fstat +and +.IR stat . +.PP +.B Wstat +messages are generated by +.I fwstat +and +.IR wstat . +.SH SEE ALSO +.IR sys-stat (2), +.IR intro (5), +.IR read (5), +.IR intro (10), +.IR styx (10.2) +.SH BUGS +To make the contents of a directory, such as returned by +.IR read (5), +easy to parse, each +directory entry begins with a size field. +For consistency, the entries in +.B Twstat +and +.B Rstat +messages also contain +their size, which means the size appears twice. +For example, the +.B Rstat +message is formatted as +.RI ``(4+1+2+2+ n )[4] +.B Rstat +.IR tag [2] +.IR n [2] +.RI ( n -2)[2] +.IR type [2] +.IR dev [4]...,'' +where +.I n +is the value returned by +.BR Styx->packdir . diff --git a/man/5/version b/man/5/version new file mode 100644 index 00000000..ea836cb4 --- /dev/null +++ b/man/5/version @@ -0,0 +1,103 @@ +.TH VERSION 5 +.SH NAME +version \- negotiate protocol version +.SH SYNOPSIS +.ta \w'\fLTversion 'u +.IR size [4] +.B Tversion +.IR tag [2] +.IR msize [4] +.IR version [ s ] +.br +.IR size [4] +.B Rversion +.IR tag [2] +.IR msize [4] +.IR version [ s ] +.SH DESCRIPTION +The +.B version +request negotiates the protocol version and message size +to be used on the connection and initializes the connection for I/O. +.B Tversion +must be the first message sent on the Styx connection, +and the client cannot issue any further requests until it has received the +.B Rversion +reply. +The +.I tag +should be +.B NOTAG +(value +.BR (ushort)~0 ) +for a +.B version +message. +.PP +The client suggests a maximum message size, +.BR msize , +that is the maximum length, in bytes, +it will ever generate or expect to receive in a single Styx message. +This count includes all Styx protocol data, starting from the +.B size +field and extending through the message, +but excludes enveloping transport protocols. +The server responds with its own maximum, +.BR msize , +which must be less than or equal to the client's value. +Thenceforth, both sides of the connection must honor this limit. +.PP +The +.B version +string identifies the level of the protocol. +The string must always begin with the two characters +.RB `` 9P ''. +If the server does not understand the client's version string, +it should respond with an +.B Rversion +message (not +.BR Rerror ) +with the +.B version +string the 7 characters +.RB `` unknown ''. +.PP +The server may respond with the client's version string, +or a version string identifying +an earlier defined protocol version. +Currently, the only defined version is the 6 characters +.RB `` 9P2000 ''. +Version strings are defined such that, if the client string contains +one or more period characters, the initial substring up to but not including +any single period in the version string defines a version of the protocol. +After stripping any such period-separated suffix, the server is allowed to respond +with a string of the form +.BI 9P nnnn\f1, +where +.I nnnn +is less than or equal to the digits sent by the client. +.PP +The client and server will use the protocol version defined by the +server's response for all subsequent communication on the connection. +.PP +A successful +.B version +request initializes the connection. +All outstanding I/O on the connection is aborted; all active fids are freed (`clunked') automatically. +The set of messages between +.B version +requests is called a +.IR session . +.SH ENTRY POINTS +The +.B version +message is generated by +.I sys-fversion (2). +It is also generated automatically, if required, by a +.B mount +or +.B fauth +system call on an uninitialized connection. +.SH SEE ALSO +.IR sys-bind (2), +.IR sys-fversion (2) diff --git a/man/5/walk b/man/5/walk new file mode 100644 index 00000000..135061ce --- /dev/null +++ b/man/5/walk @@ -0,0 +1,186 @@ +.TH WALK 5 +.SH NAME +walk \- descend a directory hierarchy +.SH SYNOPSIS +.ta \w'\fLTwalk 'u +.IR size [4] +.B Twalk +.IR tag [2] +.IR fid [4] +.IR newfid [4] +.IR nwname [2] +.IR nwname *( wname [ s ]) +.br +.IR size [4] +.B Rwalk +.IR tag [2] +.IR nwqid [2] +.IR nwqid *( qid [13]) +.SH DESCRIPTION +The +.B walk +request carries as arguments an existing +.IR fid +and a proposed +.I newfid +(which must not be in use unless it is the same as +.IR fid ) +that the client wishes to associate with +the result of traversing the directory hierarchy +by `walking' the hierarchy using the successive path name +elements +.BR wname . +The +.I fid +must represent a directory unless zero path name elements are specified. +.PP +The +.I fid +must be valid in the current session and must not have been opened for I/O +by an +.B open +or +.B create +message. +If the full sequence of +.B nwname +elements is walked successfully, +.I newfid +will represent the file that results. +If not, +.I newfid +(and +.BR fid ) +will be unaffected. +However, if +.I newfid +is in use or otherwise illegal, an +.B Rerror +is returned. +.PP +The name +.RB `` .. '' +(dot-dot) represents the parent directory. +The name +.RB `` . '' +(dot), meaning the current directory, is not used in the protocol. +.PP +It is legal for +.B nwname +to be zero, in which case +.I newfid +will represent the same file as +.I fid +and the +.B walk +will usually succeed; this is equivalent to walking to dot. +The rest of this discussion assumes +.B nwname +is greater than zero. +.PP +The +.B nwname +path name elements +.B wname +are walked in order, ``elementwise''. +For the first elementwise walk +to succeed, the file identified by +.I fid +must be a directory, +and the implied user of the request must have permission +to search the directory (see +.IR intro (5)). +Subsequent elementwise walks have equivalent restrictions +applied to the implicit fid that results from the preceding elementwise walk. +.PP +If the first element cannot be walked for any reason, +.B Rerror +is returned. +Otherwise, the walk will return an +.B Rwalk +message containing +.I nwqid +qids corresponding, in order, to the files that are visited by the +.I nwqid +successful elementwise walks; +.I nwqid +is therefore either +.B nwname +or the index of the first elementwise walk that failed. +The value of +.I nwqid +cannot be zero unless +.B nwname +is zero. +Also, +.I nwqid +will always be less than or equal to +.BR nwname . +Only if it is equal, however, will +.I newfid +be affected, in which case +.I newfid +will represent the file +reached by the final elementwise walk requested in the message. +.PP +A +.B walk +of the name +.RB `` .. '' +in the root directory of a server is equivalent to a walk with no name elements. +.PP +If +.I newfid +is the same as +.IR fid , +the above discussion applies, with the obvious difference +that if the walk changes the state of +.IR newfid , +it also changes the state of +.IR fid ; +and if +.I newfid +is unaffected, then +.I fid +is also unaffected. +.PP +To simplify the implementation of the servers, a maximum of sixteen name elements or qids +may be packed in a single message. +This constant is called +.B MAXWELEM +in +.IR styx (2) +and +.IR styx (10.2). +Despite this restriction, the system imposes no limit on the number of elements in a file name, +only the number that may be transmitted in a single message. +.SH ENTRY POINTS +A call to +.IR chdir (2) +causes a +.BR walk . +One or more +.B walk +messages may be generated by +any of the following calls, which evaluate file names: +.BR bind , +.BR create , +.BR mount , +.BR open , +.BR remove , +.BR stat , +.BR unmount , +.BR wstat . +The file name element +.B . +(dot) is interpreted locally and +is not transmitted in +.B walk +messages. +.SH SEE ALSO +.IR sys-bind (2), +.IR sys-chdir (2), +.IR sys-open (2), +.IR sys-remove (2), +.IR sys-stat (2), +.IR intro (5) diff --git a/man/6/0intro b/man/6/0intro new file mode 100644 index 00000000..28d23789 --- /dev/null +++ b/man/6/0intro @@ -0,0 +1,7 @@ +.TH INTRO 6 +.SH NAME +intro \- introduction to file formats +.SH DESCRIPTION +This section describes Inferno file formats that are meant to be public +(as opposed to formats that are for a program's internal use). +It also describes a few system conventions. diff --git a/man/6/INDEX b/man/6/INDEX new file mode 100644 index 00000000..8627fab0 --- /dev/null +++ b/man/6/INDEX @@ -0,0 +1,29 @@ +intro 0intro +attrdb attrdb +audio audio +auth auth +colour colour +dis dis +font font +subfont font +image image +keyboard keyboard +keys keys +keytext keytext +login login +man man +namespace namespace +ndb ndb +plumbing plumbing +proto proto +regex regexp +regexp regexp +sbl sbl +scancode scancode +sexprs sexprs +translate translate +ubfa ubfa +users users +ascii utf +unicode utf +utf utf diff --git a/man/6/attrdb b/man/6/attrdb new file mode 100644 index 00000000..d4333de2 --- /dev/null +++ b/man/6/attrdb @@ -0,0 +1,101 @@ +.TH ATTRDB 6 +.SH NAME +attrdb \- data base of attribute-value pairs +.SH DESCRIPTION +An attribute data base is formed from one or more text files, +each containing groups of related attribute-value pairs. +A given data base typically stores data relating to a single logical domain. +For instance, +Inferno uses an attribute data base +.IR ndb (6) +to organise network configuration data. +.I Attrdb (2) +is typically used by applications to search the data. +.PP +Each entry in the data base consists of one or more lines containing +attribute/value pairs, separated by white space. +The first line of an entry starts a line; subsequent lines in the entry +are preceded by white space (spaces or tabs). +Pairs on the same line bind tighter together than others in the same entry. +(This is important when one known pair is used to find another by attribute name.) +The character +.RB ` # ' +causes the rest of the line to be ignored (eg, as commentary). +Empty lines are also ignored. +.PP +Attribute/value pairs are written as +.IB attribute = value, +which can be abbreviated to +.lB attribute = +or simply +.I attribute +if the attribute has no value. +A +.I value +that contains white space, or any of the characters \f5#'"=\fP +must be quoted, using either the single or double quote character. +Within a quoted string, two adjacent quotes can be written to enter a quote in the string. +For example: +.IP +.EX +name='Paul Wilson' business company='Fruitbat Villas Ltd' + title='Key Grip' + address='39 Willis Street, York' tel='+44 1904 20927' + address='On the road' tel='+44 7904 169 704' +name='James Mason' personal= + address='10 St James''s, East Grinstead' tel='01342 7674' +.EE +.PP +Note that the binding rule associates each +.B address +in the first entry most closely with the +.B tel +on the same line. +The attributes +.B business +(first entry) +and +.B personal +(second entry) +are both attributes without value. +.PP +A single logical data base can be formed by concatenating several physical files, +each having the format above. +One of the files must contain an entry (typically first in the file) containing a +.B database +attribute and a sequence of attributes of the form +.BI file= filename. +For example: +.IP +.EX +database= + file=file1 + file=file2 + file=file3 +.EE +.PP +The logical database is formed by (logically) concatenating the contents +of each +.I filename +in the order listed +(ie, +.BR file1 , +.BR file2 , +and +.BR file3 +above). +Typically the file containing the +.B database +attribute +appears in the list as well, at the point where its contents should go; +if it does not appear at all, it is assumed to be first. +The name of that file is also used as the name of the logical database, +for instance when opened by +.IR attrdb (2). +.SH SEE ALSO +.IR cfg (2), +.IR attrdb (2), +.IR ipattr (2), +.IR ndb (6), +.IR cs (8), +.IR dns (8) diff --git a/man/6/audio b/man/6/audio new file mode 100644 index 00000000..3d8e9699 --- /dev/null +++ b/man/6/audio @@ -0,0 +1,79 @@ +.TH AUDIO 6 +.SH NAME +audio \- Inferno audio file format +.SH DESCRIPTION +Inferno audio files accepted by commands such as +.IR auplay (1) +have a simple format. +The file contains a header consisting of +non-empty lines of text specifying the data format and characteristics, +followed by an empty line, +followed by the audio data in binary form. +The data can be copied +directly to a suitable audio device (see +.IR audio (3)) +correctly configured, +using +.BR read , +.B write +or +.B stream +(see +.IR sys-read (2)). +.PP +Each header line corresponds to a command that can be written to +the control file +.B audioctl +of the +.IR audio (3) +device. +The first line of the header must be a +.BR rate +command; +other commands can appear in any order. +The commands available are: +.TP +.BI rate " n" +The data was recorded at +.I n +Hz, typically one of +.BR 44100 , +.BR 22050 , +.BR 11025 +or +.BR 8000 +but other values are legal. +.TP +.BI chans " n" +There are +.I n +channels of audio data (eg, 1 for mono and 2 for stereo). +.TP +.BI bits " n" +Each sample is +.I n +bits (typically 8 or 16). +.TP +.BI enc " e" +.br +The string +.I e +gives the recording format, and +will usually be one of the following: +.BR ulaw , +.BR alaw , +.BR pcm +or +.BR adpcm . +.PP +The audio data is stored with a sample from each channel in turn +(`left' sample first if stereo, regardless of encoding or data size). +Data encoded as +.B pcm +is little-endian, 2's complement if 16-bit, but unsigned if 8 bit. +The +.B adpcm +encoding uses 4-bit samples (two mono samples or one stereo sample per byte, again little-endian). +.SH SEE ALSO +.IR auplay (1), +.IR audio (3) diff --git a/man/6/auth b/man/6/auth new file mode 100644 index 00000000..f0b6b025 --- /dev/null +++ b/man/6/auth @@ -0,0 +1,74 @@ +.TH AUTH 6 +.SH NAME +auth \- authentication using station-to-station protocol +.SH DESCRIPTION +The following protocol, +based on the Station-to-Station +protocol, is used for mutual authentication of two parties, +each possessing a certificate from the same certifying authority (CA). +.PP +In the description below: +.TF CERTx +.PD +.TP +.I alpha +is a Diffie-Hellman base used system wide +.TP +.I p +is a Diffie-Hellman modulus used system wide +.TP +.I Rx +is a random number of the same order as +.IR p . +.TP +.BI PK x +the public key of +.I x +.TP +.BI SK x +the private key of +.I x +.TP +.BI CERT x +the public key +of +.I x +signed by the certifying authority +.TP +.BI sig n ( x ) +represents +.I x +signed with +.IR n 's +private key +.PP +In the following, the parties are labelled 0 and 1. +.PP +Each sends its public key and certificate to the other together with +a computation +.IR "alpha**r0 mod p" +.RI ( "alpha**r1 mod p" ) +based on the Diffie-Hellman parameters contained in the certificate: +.IP +.EX +0 → 1 alpha**r0 mod p, CERTu0, PKu0 +1 → 0 alpha**r1 mod p, CERTu1, PKu1 +.EE +.PP +Each can now use the CA's public key and the certificate received to check +that each has the other's public key. +.PP +Finally, each user signs values known to both that each can then verify: +.IP +.EX +0 → 1 sig0(alpha**r0 mod p, alpha**r1 mod p) +1 → 0 sig1(alpha**r0 mod p, alpha**r1 mod p) +.EE +.PP +At this point 0 and 1 can calculate the shared secret +.BR "alpha**(r0*r1)" , +and can use it to encrypt later communications. +.SH SEE ALSO +.IR keyring-auth (2), +.IR keytext (6), +.IR login (6) diff --git a/man/6/colour b/man/6/colour new file mode 100644 index 00000000..145e5b4b --- /dev/null +++ b/man/6/colour @@ -0,0 +1,187 @@ +.TH COLOUR 6 +.SH NAME +colour \- representation of pixels and colours +.SH DESCRIPTION +An image manipulated by +.IR draw (2) +(via the device +.IR draw (3)), +including the image corresponding to a physical display, +contains a set of pixels. +Each pixel has one or more components: +colour components (red, green, blue); greyscale value; colour-map index; alpha value; and +``don't care'' (for padding). +Each component takes a given number of bits; the sum of the sizes of all components +determines the size of the pixel. +The implementation supports only pixel sizes that are either divisors or multiples of 8 bits. +All pixels in an image have the same structure, corresponding to the +.I channels +of that image (see +.IR image (6)). +.PP +The values of the red, green and blue components are chosen so 0 represents +no intensity (black) and the maximum value (all ones, 255 for an 8-bit component) +represents full intensity (eg, full red). +Common colour physical display depths are 24 bits per pixel, with 8 bits per colour in order +red, green, blue, and 16 bits per pixel, with 5 bits of red, 6 bits of green, and 5 bits of blue. +.PP +Colors may also be created with an opacity factor called +.IR alpha , +which is scaled so 0 represents fully transparent and the maximum value (eg, 255 for +an 8-bit alpha component) represents opaque colour. +The alpha is +.I premultiplied +into the other channels, as described in the paper by Porter and Duff cited in +.IR draw-image (2). +The function +.B Draw->setalpha +(see +.IR draw-intro (2)) +aids the initialisation of colour values with non-trivial alpha. +.PP +Because images are stored in memory managed by +.IR draw (3) +and operated through +.IR draw-image (2), +the details of pixel representation internally can be ignored by many applications. +The representation is visible, however, when using the operations +.B Image.readpixels +and +.B Image.writepixels +(see +.IR draw-image (2)). +The bits representing a pixel's channel components are packed contiguously, and +pixels are stored in contiguous bytes. +The packing of pixels into bytes and words is odd. +For compatibility with VGA frame buffers, the bits within a +pixel byte are in big-endian order (leftmost pixel is most +significant bits in byte), while bytes within a pixel are packed in little-endian order. +This results in unintuitive pixel formats. For example, for the RGB24 format, +the byte ordering is blue, green, red. +.PP +To maintain a constant external representation, the +.IR draw (3) +interface +as well as the +various graphics libraries represent colours +by 32-bit integers, containing red, blue, green and alpha components +as 8-bit values, in that order from most to least significant byte. +The color component values range from 0 (no colour) to 255 (saturated); +alpha ranges from 0 (fully transparent) to 255 (fully opaque). +.PP +On displays with 8 bits per pixel or less, +to address problems of consistency and portability amongst Inferno applications, +Inferno uses a fixed colour map, called +.BR rgbv . +Although this avoids problems caused by multiplexing colour maps between +applications, it requires that the colour map chosen be suitable for most purposes +and usable for all. +Other systems that use fixed colour maps tend to sample the colour cube +uniformly, which has advantages\(emmapping from a (red, green, blue) triple +to the colour map and back again is easy\(embut ignores an important property +of the human visual system: eyes are +much more sensitive to small changes in intensity than +to changes in hue. +Sampling the colour cube uniformly gives a colour map with many different +hues, but only a few shades of each. +Continuous tone images converted into such maps demonstrate conspicuous +artifacts. +.PP +Rather than dice the colour cube into subregions of +size 6\(mu6\(mu6 (as in Netscape Navigator) or 8\(mu8\(mu4 +picking 1 colour in each, +the +.B rgbv +colour map uses a 4\(mu4\(mu4 subdivision, with +4 shades in each subcube. +The idea is to reduce the colour resolution by dicing +the colour cube into fewer cells, and to use the extra space to increase the intensity +resolution. +This results in 16 grey shades (4 grey subcubes with +4 samples in each), 13 shades of each primary and secondary colour (3 subcubes +with 4 samples plus black) and a reasonable selection of colours covering the +rest of the colour cube. +The advantage is better representation of +continuous tones. +.PP +The following function computes the 256 3-byte entries in the colour map: +.IP +.EX +.ta 6n +6n +6n +6n +void +setmaprgbv(uchar cmap[256][3]) +{ + uchar *c; + int r, g, b, v; + int num, den; + int i, j; + + for(r=0,i=0; r!=4; r++) + for(v=0; v!=4; v++,i+=16) + for(g=0,j=v-r; g!=4; g++) + for(b=0; b!=4; b++,j++){ + c = cmap[i+(j&15)]; + den = r; + if(g > den) + den = g; + if(b > den) + den = b; + if(den == 0) /* would divide check; pick grey shades */ + c[0] = c[1] = c[2] = 17*v; + else{ + num = 17*(4*den+v); + c[0] = r*num/den; + c[1] = g*num/den; + c[2] = b*num/den; + } + } +} +.EE +.PP +There are 4 nested loops to pick the (red,green,blue) coordinates of the subcube, +and the value (intensity) within the subcube, indexed by +.BR r , +.BR g , +.BR b , +and +.BR v , +whence +the name +.IR rgbv . +The peculiar order in which the colour map is indexed is designed to distribute the +grey shades uniformly through the map\(emthe +.IR i 'th +grey shade, +.RI 0<= i <=15 +has index +.IR i ×17, +with black going to 0 and white to 255. +Therefore, when a call to +.B Image.draw +(see +.IR draw-image (2)) +converts a 1, 2 or 4 bit-per-pixel picture to 8 bits per pixel (which it does +by replicating the pixels' bits), the converted pixel values are the appropriate +grey shades. +.PP +The +.B rgbv +map is not gamma-corrected, for many reasons. First, photographic +film and television are both normally under-corrected, the former by an +accident of physics and the latter by NTSC's design. +Second, we require extra colour resolution at low intensities because of the +non-linear response and adaptation of the human visual system. +Properly +gamma-corrected displays with adequate low-intensity resolution pack the +high-intensity parts of the colour cube with colours whose differences are +almost imperceptible. +Either of these reasons suggests concentrating +the available intensities at the low end of the range. +Third, the compositing computations underlying the graphics operations in +.IR draw-image (2) +assume a linear colour space. +Finally, the right value for gamma correction is determined in part by the +characteristics of the physical display device, and correction should be done on output. +.SH "SEE ALSO" +.IR draw-intro (2), +.IR draw-image (2) diff --git a/man/6/dis b/man/6/dis new file mode 100644 index 00000000..26a43997 --- /dev/null +++ b/man/6/dis @@ -0,0 +1,487 @@ +.TH DIS 6 +.SH NAME +dis \- Dis object file +.SH DESCRIPTION +.ds Os "\v'0.2m'\s-3\|opt\s+3\^\v'-0.2m' +A Dis object file contains the executable form of a single module, +and conventionally uses the file suffix +.BR .dis . +.PP +The following names are used in the description of the file encoding. +.PP +.TP 10n +.I byte +An unsigned 8-bit byte. +.TP +.I word +A 32-bit integer value represented in exactly 4 bytes. +.TP +.I long +A 64-bit integer value represented in exactly 8 bytes. +.TP +.I operand +An integer stored in a compact variable-length +encoding selected by the two most significant bits as follows: +.IP +.nf +0x signed 7 bits, 1 byte +.br +10 signed 14 bits, 2 bytes +.br +11 signed 30 bits, 4 bytes +.fi +.TP +.I string +A variable length sequence of bytes terminated by a zero byte. +Names thus represented are in +.IR utf (6) +format. +.PP +All integers are encoded in two's complement format, most significant byte first. +.PP +Every object file has a header followed by five sections containing code, data, and several sorts of descriptors: +.IP +.I "header code-section type-section data-section module-name link-section" +.PP +Each section is described in turn below. +.SS Header +The header contains a magic number, +a digital signature, a flag word, +sizes of the other sections, and a description of the entry point. +It has the following format: +.IP +.EX +.ft I +header: + magic signature\*(Os runflag stack-extent + code-size data-size type-size link-size entry-pc entry-type +magic, runflag: + operand +stack-extent, code-size, data-size, type-size, link-size: + operand +entry-pc, entry-type: + operand +.EE +.PP +The magic number is defined as 819248 +(symbolically +.BR XMAGIC ), +for modules that have not been signed cryptographically, and 923426 +(symbolically +.BR "SMAGIC" ), +for modules that contain a signature. +The symbolic names +.B "XMAGIC" +and +.B SMAGIC +are defined by the C include file +.B "/include/isa.h" +and by the Limbo module +.IR dis (2). +.PP +The +.I signature +is present only if the magic number is +.BR "SMAGIC" . +It has the form: +.IP +.EX +.ft I +signature: + length signature-data +length: + operand +signature-data: + byte ... +.EE +.PP +A digital signature is defined by a length, followed by an array of bytes of that +length that contain the signature in some unspecified format. +Data within the signature should identify the signing authority, algorithm, and data to be signed. +.PP +.I Runflag +is a bit mask that +selects various execution options for a Dis module. The flags currently defined are: +.IP +.RS +.TP +.BR MUSTCOMPILE " (1<<0)" +The module must be compiled into native instructions for execution (using a just-in-time compiler); +if the implementation cannot do that, +the +.B load +instruction should given an error. +.TP +.BR DONTCOMPILE " (1<<1)" +The module should not be compiled into native instructions, when that is the default for the runtime environment, but +should be interpreted. +This flag may be set to allow debugging or to save memory. +.TP +.BR SHAREMP " (1<<2)" +Each instance of the module should use the same module data for all instances of the module. There is no implicit synchronisation between threads using the shared data. +.TP +.BR HASLDT " (1<<4)" +The dis file contains a separate import section. On older versions of the system, +this section was within the data section. +.TP +.BR HASEXCEPT " (1<<5)" +The dis file contains an exception handler section. +.RE +.PP +.IR Stack-extent , +if non-zero, gives the number of bytes by which the thread stack of this module should be extended in the event that procedure calls exhaust the allocated stack. +While stack extension is transparent to programs, increasing this value may improve the efficiency of execution at the expense of using more memory. +.PP +.IR Code-size , +.I type-size +and +.I link-size +give the number of entries (instructions, type descriptors, linkage directives) +in the corresponding sections. +.PP +.I Data-size +is the size in bytes of the module's global data area +(not the number of items in +.IR data-section ). +.PP +.I Entry-pc +is an integer index into the instruction stream that is the default entry point for this module. +It should point to the first instruction of a function. +Instructions are numbered from a program counter value of zero. +.PP +.I Entry-type +is the index of the type descriptor in the type section that corresponds to the function entry point set by +.IR entry-pc . +.SS Code Section +.PP +The code section describes a sequence of instructions for the virtual machine. +There are +.I code-size +instructions. +An instruction is encoded as follows: +.IP +.EX +.ft I +instruction: + opcode address-mode middle-data\*(Os source-data\*(Os dest-data\*(Os +opcode, address-mode: + byte +middle-data: + operand +source-data, dest-data: + operand operand\*(Os +.ft R +.EE +.PP +The one byte +.I opcode +specifies the instruction to execute; opcodes are +defined by the virtual machine specification. +.PP +The +.I address-mode +byte specifies the addressing mode of each of the three operands: middle, source and destination. The source and destination operands are encoded by three bits and the middle operand by two bits. The bits are packed as follows: +.IP +.EX +bit 7 6 5 4 3 2 1 0 + m1 m0 s2 s1 s0 d2 d1 d0 +.EE +.PP +The following definitions are used in the description of addressing modes: +.IP +.RS +.TP +.B OP +30 bit integer operand +.PD0 +.TP +.B SO +16 bit unsigned small offset from register +.TP +.B SI +16 bit signed immediate value +.TP +.B LO +30 bit signed large offset from register +.PD +.RE +.PP +The middle operand is encoded as follows: +.IP +.RS +.TF "00 SO(MP)" +.TP +.BI "00 " "none" +no middle operand +.TP +.B "01 $SI" +small immediate +.TP +.B "10 SO(FP)" +small offset indirect from FP +.TP +.B "11 SO(MP)" +small offset indirect from MP +.RE +.PD +.PP +The +.I middle-data +field is present only if the middle operand specifier of the +.I address-mode +is not `none'. +If the field is present it is encoded as an +.IR operand . +.PP +The source and destination operands are encoded as follows: +.IP +.RS +.TF "000 SO(SO(MP))" +.TP +.B "000 LO(MP)" +offset indirect from MP +.TP +.B "001 LO(FP)" +offset indirect from FP +.TP +.B "010 $OP" +30 bit immediate +.TP +.BI "011 " "\fInone\fP" +no operand +.TP +.B "100 SO(SO(MP))" +double indirect from MP +.TP +.B "101 SO(SO(FP))" +double indirect from FP +.TP +.B 110 +\fIreserved\fP +.TP +.B 111 +\fIreserved\fP +.RE +.PD +.PP +The +.I source-data +and +.I dest-data +fields are present only when the corresponding +.I address-mode +field is not `none'. +For offset indirect and immediate modes the field contains a single +.I operand +value. +For double indirect modes the values are encoded as two +.IR operands : +the first is the register indirect offset, and the second is the final indirect offset. +The offsets for double indirect addressing cannot be larger than 16 bits. +.SS Type Section +The type section contains +.I type-size +type descriptors describing the layout of pointers within data types. The format of each descriptor is: +.IP +.EX +.ft I +type-descriptor: + desc-number memsize mapsize map +desc-number, memsize, mapsize: + operand +map: + byte ... +.ft R +.EE +.PP +The +.I desc-number +is a small integer index used to identify the descriptor to instructions such as +.BR "new" . +.I Memsize +is the size in bytes of the memory described by this type. +.PP +The +.I mapsize +field gives the size in bytes of the following +.I "map" +array. +.I Map +is an array of bytes representing +a bit map where each bit corresponds to a word in memory. +The most significant bit corresponds to the lowest address. +For each bit in the map, +the word at the corresponding offset in the type is a pointer iff the bit is set to 1. +.SS Data Section +.PP +The data section encodes the contents of the +data segment for the module, addressed by +.B MP +at run-time. +The section contains a sequence of items of the following form: +.IP +.EX +.ft I +data-item: + code count\*(Os offset data-value ... +code: + byte +count, offset: + operand +.EE +.PP +Each item contains an +.I offset +into the section, followed by one or more data values in +a machine-independent encoding. +As each value is placed in the data segment, the offset is incremented by the size of the datum. +.PP +The +.I code +byte has two 4-bit fields. +The bottom 4 bits of +.I code +gives the number of +.I data-values +if there are between 1 and 15; +if there are more than 15, +the low-order field is zero, and a following +.I operand +gives the count. +.PP +The top 4 bits of +.I code +encode the type of each +.I data-value +in the item, which determines its encoding. +The defined values are: +.IP +.RS +.TF 0000 +.TP +.B 0001 +8 bit bytes +.TP +.B 0010 +32 bit integers, one +.I word +each +.TP +.B 0011 +string value encoded by +.IR utf (6) +in +.I count +bytes +.TP +.B 0100 +real values in IEEE754 canonical representation, 8 bytes each +.TP +.B 0101 +Array, represented by two +.I words +giving type and length +.TP +.B 0110 +Set base for data items: one +.I word +giving an array index +.TP +.B 0111 +Restore base for data items: +no operands +.TP +.B 1000 +64 bit big, 8 bytes each +.RE +.PD +.PP +The loader maintains a current base address and a stack of addresses. +Each item's value is stored at the address formed by adding the current offset +to the current base address. +That address initially is the base of the module's data segment. +The `set base' operation immediately follows +an `array' +.IR data-item . +It stacks the current base address and sets the current base address to the +address of the array element selected by its operand. +The `restore base' operation sets the current base address to the +address on the top of the stack, and pops the stack. +.SS Module name +The module name immediately follows the data section. +It contains the name of the module implemented by the object file, +as a sequence of bytes in +UTF encoding, terminated by a zero byte. +.SS Link Section +The link section contains an array of +.I link-size +external linkage items, +listing the functions exported by this module. +Each variable-length item contains the following: +.IP +.EX +.ft I +link-item: + pc desc sig fn-name +pc, desc: + operand +sig: + word +fn-name: + string +.ft R +.EE +.PP +.I Fn-name +is the name of an exported function. +Adt member functions appear with their +full names: the member name qualified by the adt name, in the form +.IB adt-name . member-name, +for instance +.BR Iobuf.gets . +.PP +.I Pc +is the instruction number of its entry point. +.I Desc +is an index value that selects a type descriptor in the type section, +which gives the type of the function's stack frame. +.I Sig +is an integer hash of the type signature of the function, used in type checking. +.SS Import Section +The optional import section lists all those functions imported from other +modules. This allows type checking at load time. The size of the section in +bytes is given at the start in operand form. For each module imported there +is a list of functions imported from that module. For each function, its type signature (a word) is followed by +a 0 terminated list of bytes representing its name. +.SS Handler Section +The final optional section lists all exception handlers declared in the module. The number +of such handlers is given at the start of the section in operand form. For each one, its format +is: +.IP +.EX +.ft 1 +handler: + offset pc1 pc2 desc nlab exc-tab +offset, pc1, pc2, desc, nlab: + operand +exc-tab: + exc-name pc ... exc-name pc pc +exc-name: + string +pc: + operand +.ft R +.EE +.PP +Each handler specifies the frame offset of its exception structure, the range of pc values it covers (from pc1 up to but not including pc2), the type descriptor of any +memory that needs destroying by the handler (or -1 if none), the number of +exceptions in the handler and then the exception table itself. The latter consists +of a list of exception names and the corresponding pc to jump to when this +exception is raised. This is then followed by the pc to jump to in any wildcard (*) case +or -1 if this is not applicable. +.SH SEE ALSO +.IR asm (1), +.IR dis (2), +.IR sbl (6) +.br +``The Dis Virtual Machine Specification'', Volume 2 diff --git a/man/6/font b/man/6/font new file mode 100644 index 00000000..b118ad6d --- /dev/null +++ b/man/6/font @@ -0,0 +1,102 @@ +.TH FONT 6 +.SH NAME +font, subfont \- external format for character fonts and subfonts +.SH DESCRIPTION +Fonts are constructed as a list defining a range of Unicode characters +and a subfont containing the character images for that range. +Subfonts are not directly accessible from Limbo. +.PP +External fonts are described by a plain text file that can be read using +.BR Font.open ; +.B Font.build +reads the same format from a string rather than a file. +(see +.IR draw-font (2)). +.PP +The format is a header followed by any number of +subfont range specifications. +The header contains two numbers: the height and the ascent, both in pixels. +The height is the inter-line spacing and the ascent is the distance +from the top of the line to the baseline. These numbers should be chosen +to display consistently all the subfonts of the font. +A subfont range specification contains two or three numbers and a file name. +The numbers are the inclusive range of characters covered by the subfont, +with an optional starting position within the subfont, +and the file name names an external file holding the subfont data. +The minimum number of a covered range is mapped to the specified starting position +(default zero) of the +corresponding subfont. +If the subfont file name does not begin with a slash, it is taken relative to the +directory containing the font file. +Each field must be followed by some white space. +Each numeric field may be C-format decimal, octal, or hexadecimal. +.PP +External subfonts are represented in a more rigid format: +an image containing character images, +followed by a subfont header, followed by character information. +The image has the format for external image files described in +.IR image (6). +The subfont header has 3 +decimal strings: +.BR n , +.BR height , +and +.BR ascent . +Each number is right-justified and blank padded in 11 characters, followed by a blank. +The character +.B info +consists of +.BR n +1 +6-byte entries, each giving values called +.B x +(2 bytes, low order byte first), +.BR top , +.BR bottom , +.BR left , +and +.BR width +for the successive characters from left to right (in increasing Unicode order) in the +subfont. +The rectangle holding the character is +.B (x, +.B top, +.B xn, +.BR bottom) , +where +.B xn +is the +.B x +field of the next character. +When the character is to be drawn in an image at point +.BR p , +the rectangle is placed at +.B (p.x+left , +.B p.y) +and the next character to be drawn is placed at +.B (p.x+width , +.B p.y) +The +.B x +field of the last +entry +is used to calculate the image width +of the previous character; the other fields in the last +entry +are irrelevant. +.PP +Note that the convention of using the character with value zero (NUL) to represent +characters of zero width (see the description of +.B Image.text +in +.IR draw-image (2)) +means that fonts should have, as their zeroth character, +one with non-zero width. +.SH FILES +.TF /fonts/* +.TP +.B /fonts/* +font directories +.SH "SEE ALSO" +.IR draw-intro (2), +.IR draw-font (2), +.IR draw (3) diff --git a/man/6/image b/man/6/image new file mode 100644 index 00000000..93e668fa --- /dev/null +++ b/man/6/image @@ -0,0 +1,178 @@ +.TH IMAGE 6 +.SH NAME +image \- external format for images +.SH DESCRIPTION +Images are described in +.IR draw-image (2), +and the definition of pixel values is in +.IR colour (6). +Fonts and images are stored in external files +in machine-independent formats. +.PP +Image files are read and written using +.B Display.readimage +and +.B Display.writeimage +(see +.IR draw-display (2)). +An image is a rectangular array of pixels, +where each pixel is organised as one or more channels, +as determined by the image. +.PP +An uncompressed image file starts with 5 +strings: +.BR chan , +.BR r.min.x , +.BR r.min.y , +.BR r.max.x , +and +.BR r.max.y . +Each is right-justified and blank padded in 11 characters, followed by a blank. +The +.B chan +value is a textual string describing the pixel format +(see below for a discussion of channel descriptors), +and the rectangle coordinates are decimal strings. +The rest of the file contains the +.B r.max.y-r.min.y +rows of pixel data. +A +.I row +consists of the byte containing pixel +.B r.min.x +and all the bytes up to and including the byte containing pixel +.BR r.max.x -1. +For images with depth +.I d +less than eight, a pixel with x-coordinate = +.I x +will appear as +.I d +contiguous bits in a byte, with the pixel's high order bit +starting at the byte's bit number +.if t \fIw\fP\(mu(\fIx\fP mod (8/\fIw\fP)), +.if n w*(x mod (8/w)), +where bits within a byte are numbered 0 to 7 from the +high order to the low order bit. +Rows contain integral number of bytes, so there may be some unused +pixels at either end of a row. +If +.I d +is greater than 8, the definition of images requires that it be a multiple of 8, so +pixel values take up an integral number of bytes. +.PP +The +.B Image.readpixels +and +.B Image.writepixel +operations described in +.IR draw-image (2) +also deal with rows in this format, stored in Limbo arrays of bytes. +.PP +The channel format string is a sequence of two-character channel descriptions, +each comprising a letter +.RB ( r +for red, +.B g +for green, +.B b +for blue, +.B a +for alpha, +.B m +for colour-mapped, +.B k +for greyscale, +and +.B x +for ``don't care'') +followed by a number of bits per pixel. +The sum of the channel bits per pixel is the +depth of the image, which must be either +a divisor or a multiple of eight. +It is an error to have more than +one of any channel but +.BR x . +An image must have either a greyscale channel; a colour-mapped channel; +or red, green, and blue channels. +If the alpha channel is present, it must be at least as deep as any other channel. +.PP +The channel string defines the format of the pixels in the file, +and should not be confused with ordering of bytes in the file, +which is little-endian. +In particular +.B 'r8g8b8' +pixels have byte ordering blue, green, and red within the file. +See +.IR colour (6) +for more details of the pixel format. +.PP +A previous Inferno image format replaces the channel string +with a decimal +.IR ldepth , +which is the base two logarithm of the number +of bits per pixel in the image. +In this case, +.IR ldepth s +0, 1, 2, and 3 +correspond to channel descriptors +.BR k1 , +.BR k2 , +.BR k4 , +and +.BR m8 , +respectively. +Furthermore, the pixel values are inverted compared to the current colour maps; +in particular, an all-zero pixel is white and all-ones is black. +That format is still readable but cannot be written; older files should be converted to the +newer one. +The image file reading operations automatically invert the pixel values to produce correct results. +.PP +A compressed image file begins with the 11 bytes "compressed\en", +immediately followed by a header as described above, followed by the +image data. +(The pixel data once uncompressed has the format described above.) +The rest of the file is a string of compression blocks, each encoding +a number of rows of the image's pixel data. Compression blocks +are at most 6024 bytes long, so that they fit comfortably in a +single Styx message. Since a compression block must encode a +whole number of rows, there is a limit (about 5825 bytes) to the width of images +that may be encoded. Most wide images are in subfonts, +which, at 1 bit per pixel (the usual case for fonts), can be 46600 pixels wide. +.PP +A compression block begins with two decimal strings of twelve bytes each. +The first number is one more than the +.B y +coordinate of the last row in the block. The second is the number +of bytes of compressed data in the block, not including the two decimal strings. +This number must not be larger than 6000. +.PP +Pixels are encoded using a version of Lempel & Ziv's sliding window scheme LZ77, +best described in J A Storer & T G Szymanski +`Data Compression via Textual Substitution', +JACM 29#4, pp. 928-951. +.PP +The compression block is a string of variable-length +code words encoding substrings of the pixel data. A code word either gives the +substring directly or indicates that it is a copy of data occurring +previously in the pixel stream. +.PP +In a code word whose first byte has the high-order bit set, the rest of the +byte indicates the length of a substring encoded directly. +Values from 0 to 127 encode lengths from 1 to 128 bytes. +Subsequent bytes are the literal pixel data. +.PP +If the high-order bit is zero, the next 5 bits encode +the length of a substring copied from previous pixels. Values from 0 to 31 +encode lengths from 3 to 34 bytes. The bottom two bits of the first byte and +the 8 bits of the next byte encode an offset backward from the current +position in the pixel data at which the copy is to be found. Values from +0 to 1023 encode offsets from 1 to 1024. The encoding may be `prescient', +with the length larger than the offset, which works just fine: the new data +is identical to the data at the given offset, even though the two strings overlap. +.SH "SEE ALSO" +.IR draw-intro (2), +.IR draw-image (2), +.IR draw (3), +.IR colour (6), +.IR font (6) diff --git a/man/6/keyboard b/man/6/keyboard new file mode 100644 index 00000000..7662200c --- /dev/null +++ b/man/6/keyboard @@ -0,0 +1,170 @@ +.TH KEYBOARD 6 +.SH NAME +keyboard \- how to type characters +.SH DESCRIPTION +Keyboards are idiosyncratic. +The differing conventions of host operating systems +make them more so for Inferno. +In all implementations, +it should be obvious how to type ordinary +.SM ASCII +characters, +backspace, tab, escape, and newline. +When typing into the Inferno environment, the key labelled +.B Return +or +.B Enter +generates a newline +.RB ( 0x0A ); +if there is a key labelled +.B Line +.BR Feed , +it generates a carriage return +.RB ( 0x0D ); +Inferno eschews CRLFs. +All control characters are typed in the usual way; +in particular, control-J is a line feed and control-M a carriage return. +.PP +In native mode, +on the PC and some other machines, the following +extra conventions might also be used. +The key labelled +.B Caps +.B Lock +acts as an additional control key. +The character erase key generates backspace. +The key labelled +.B Del +or +.B Delete +generates the delete character +.RB ( 0x7F ). +The plethora of function keys generate values in the Unicode +user-defined space, as defined by +.B /include/keyboard.h +and +.BR /module/keyboard.m . +They are fitfully supported by applications, but +.B "Page\ Up" +and +.B "Page\ Down" +are often understood by Tk applications. +.PP +Characters in Inferno are runes (see +.IR utf (6)). +Any 16-bit rune can be typed using a compose key followed by several +other keys. +The compose key is implementation-dependent, and +is also generally near the lower right of the main key area: +either +.B Alt +key on the PC, +and in X11 implementations, whatever X11 regards +as +.B Alt +or +.BR Meta . +After typing the compose key, type a capital +.L X +and exactly four hexadecimal characters (digits and +.L a +to +.LR f ) +to type a single rune with the value represented by +the typed number. +There are shorthands for many characters, comprising +the compose key followed by a two- or three-character sequence. +There are several rules guiding the design of the sequences, as +illustrated by the following examples. +The full list is too long to repeat here, but is contained in the file +.L /lib/keyboard +in a format suitable for +.IR grep (1). +.IP +A repeated symbol gives a variant of that symbol, e.g., +.B ?? +yields ¿\|. +.IP +ASCII digraphs for mathematical operators give the corresponding operator, e.g., +.B <= +yields ≤. +.IP +Two letters give the corresponding ligature, e.g., +.B AE +yields Æ. +.IP +Mathematical and other symbols are given by abbreviations for their names, e.g., +.B pg +yields ¶. +.IP +Chess pieces are given by a +.B w +or +.B b +followed by a letter for the piece +.RB ( k +for king, +.B q +for queen, +.B r +for rook, +.B n +for knight, +.B b +for bishop, or +.B p +for pawn), +e.g., +.B wk +for a white king. +.IP +Greek letters are given by an asterisk followed by a corresponding latin letter, +e.g., +.B *d +yields δ. +.IP +Cyrillic letters are given by an at sign followed by a corresponding latin letter or letters, +e.g., +.B @ya +yields я. +.IP +Script letters are given by a dollar sign followed by the corresponding regular letter, +e.g., +.B $F +yields ℱ. +.IP +A digraph of a symbol followed by a letter gives the letter with an accent that looks like the symbol, e.g., +.B ,c +yields ç. +.IP +Two digits give the fraction with that numerator and denominator, e.g., +.B 12 +yields ½. +.IP +The letter s followed by a character gives that character as a superscript, e.g., +.B s1 +yields ¹. +.IP +Sometimes a pair of characters give a symbol related to the superimposition of the characters, e.g., +.B cO +yields ©. +.IP +A mnemonic letter followed by $ gives a currency symbol, e.g., +.B l$ +yields £. +.PP +Note the difference between ß (ss) and µ (micron) and +the Greek β and μ. +.SH FILES +.TF "/lib/keyboard " +.TP +.B /lib/keyboard +sorted table of characters and keyboard sequences +.SH "SEE ALSO" +.IR acme (1), +.IR wm-brutus (1), +.IR intro (1), +.IR unicode (1), +.IR cons (3), +.IR utf (6), +.IR kbdputc (10.2) diff --git a/man/6/keys b/man/6/keys new file mode 100644 index 00000000..02e7cfee --- /dev/null +++ b/man/6/keys @@ -0,0 +1,52 @@ +.TH KEYS 6 +.SH NAME +keys \- secrets shared with signer +.SH DESCRIPTION +The file +.B /keydb/keys +exists only on a host acting as a `signer' (authentication server, Certifying Authority). +It +holds a password entry +for each user registered with an Inferno server. +Each entry contains a user name, a password, the time at which the entry +expires, and the entry's status. +The password is the secret shared between the user +and signer (authentication server), +allowing the signer to sign a certificate to authenticate a +user's public key to others, using the secret to check the user's identity. +The actual secret is not stored, but rather its SHA-1 hash. +.PP +The file is encrypted with a secret provided by the signer's administrator; +normally that secret is entered once when +authentication services are started by +.B svc/auth +on the host acting as signer +(see +.IR svc (8)). +The file should also be readable and writable only by the user identity +that runs the signing service +(ie, +mode +.BR 600 , +see +.IR chmod (1)). +Entries are usually accessed only through +the name space provided by +.IR keyfs (4), +which decrypts the file into internal data structures given the administrative key, +and makes each entry visible as a separate directory. +Using that name space, +entries are added and updated by an administrator using +.IR changelogin (8), +a user can change a secret using +.IR passwd (1) +via +.IR keysrv (4), +and it is accessed for signing by +.IR logind (8) +to obtain the secret used to verify the identity +of a client requesting a certificate +(typically via +.IR security-login (2)). +.SH FILES +.B /keydb/keys diff --git a/man/6/keytext b/man/6/keytext new file mode 100644 index 00000000..0e9876eb --- /dev/null +++ b/man/6/keytext @@ -0,0 +1,124 @@ +.TH KEYTEXT 6 +.SH NAME +keytext \- textual form of Inferno public/private keys +.SH DESCRIPTION +.IR Keyring-certtostr (2) +defines a set of functions that convert between textual forms of the elements of the +Inferno public-key authentication system and their internal data types. +The textual form is used for key storage and as the transport format for the authentication protocol +.IR auth (6). +In storage and transport each encoded value is encapsulated by the record-oriented +encoding defined in +.IR keyring-getmsg (2). +The format represents public and private keys, and signer's certificates. +In this context a +.I certificate +is a time-limited cryptographically signed hash of some other value +(usually a public key) and contains neither that value nor the signer's key, which is assumed to be +available elsewhere. +.PP +All values are represented by a sequence of newline-separated text fields. +The type of any given value is determined by its context. +Each type of value has a common prefix that includes an algorithm identifier, followed by a sequence of algorithm-dependent fields: +.IP +.EX +.ft R +.ta \w'\f2elgamal-public-keyxx\f1'u +\w'\ ::=\ 'u +.fi +.IR "authinfo" " ::= " "signer-public-key certificate !private-key big-alpha big-p" +.br +.IR certificate " ::= " "sigalg hashalg signer-name exp-time *-sig" +.br +.IR sigalg " ::= " +.BR "rsa" " | " +.BR "dsa" " | " +.BR "elgamal" +.br +.IR hashalg " ::= " +.BR sha1 " | " +.B md5 +.br +.IR "*-key" " ::= " "sigalg owner-name ..." +.sp +.IR "rsa-public-key" " ::= " +.B rsa +.I owner-name +.I "big-n big-ek" +.br +.IR "rsa-private-key" " ::= " +.B rsa +.I owner-name +.I "big-n big-ek" +.br +.I " !big-dk !big-p !big-q !big-kp !big-kq !big-c2" +.br +.IR "dsa-public-key" " ::= " +.B dsa +.I owner-name +.I "big-p big-q big-alpha big-key" +.br +.IR "dsa-private-key" " ::= " +.B dsa +.I owner-name +.I "big-p big-q big-alpha big-key !big-secret" +.sp +.IR rsa-sig " ::= " "big-val" +.br +.IR dsa-sig " ::= " "big-r big-s" +.br +.IR elgamal-sig " ::= " "big-r big-s" +.EE +.PP +Each value labelled as +.RI ` big- ' +is an unsigned multiple-precision integer +from +.IR keyring-ipint (2), +represented as a sequence of bytes with +in big-endian order, +as produced by +.BR IPint->iptobytes +with an extra leading zero byte added if the top bit of the first byte is set, +and then encoded in base-64 (as by +.IR encoding (2)). +Each value labelled +.RI ` -name ' +is +.I utf (6) +text not containing a newline; +it is interpreted by an application and need not be a name. +The expiry time +.I exp-time +is represented in decimal as seconds from the Epoch (1 January 1970 00:00 GMT); +if it is zero, no expiry time is set. +A label prefixed by +.RB ` ! ' +marks a value that should be considered secret. +.PP +The hash of a key is computed over its textual encoding according to the syntax above. +A certificate's signature value is produced by digitally signing using +.I sigalg +the hash (using +.IR hashalg ) +of the concatenation of the value to be authenticated, the +.I signer-name +in +.IR utf (6), +a single space, and the +.I exp-time +in decimal (with no leading zeroes). +When checking a signature, comparisons are done with values in internal multiple-precision form +(ie, as +.BR IPint s), +not in base-64 form. +.SH SEE ALSO +.IR keyring-certtostr (2), +.IR keyring-getmsg (2), +.IR factotum (4), +.IR keys (6), +.IR getauthinfo (8) +.SH BUGS +The byte-array encoding of +.B IPint +should not require the leading zero; +it does so for compatibility with old keys. diff --git a/man/6/login b/man/6/login new file mode 100644 index 00000000..e43d085b --- /dev/null +++ b/man/6/login @@ -0,0 +1,109 @@ +.TH LOGIN 6 +.SH NAME +login \- key exchange protocol +.SH DESCRIPTION +The following encrypted key exchange protocol is used between a client such as +.B login +in +.IR security-login (2), +and a certificate signing process such as +.IR logind (8), +to justify the latter's issuing a certificate that can +later be presented to an Inferno service +to establish credentials. +.PP +A shared secret must previously be agreed between +user and certifying authority (CA). +It is used by the protocol to establish a secure channel between user and CA. +.PP +In the description below: +.TF key(m) +.PD +.TP +.I ivec +is an 8 byte random number (`initialisation vector') chosen for +this conversation. +.TP +.I sha +is the 20 byte secure hash (SHA-1) of the password +.TP +.I key +is an 8 byte secret formed as follows: +.EX +.br +key[0] = ivec[0]^sha[0]^sha[8]^sha[16] +key[1] = ivec[1]^sha[1]^sha[9]^sha[17] +.EE +\&... +.EX +key[5] = ivec[5]^sha[5]^sha[13]; +key[6] = ivec[6]^sha[6]^sha[14]; +key[7] = ivec[7]^sha[7]^sha[15]; +.EE +.TP +.I alpha +is a Diffie-Hellman base used system wide +.TP +.I p +is a Diffie-Hellman modulus used system wide +.TP +.I "key(m)" +is +.I m +encrypted using the RC4 algorithm with +.IR key . +.TP +.I Rx +is a random number of the same order as +.IR p . +.TP +.I "secret" +is the Diffie-Hellman secret +.IR "alpha**(r0*r1) mod p" . +.PP +The protocol follows. ``user→CA xxx'' means that the user +sends the message ``xxx'' to the certifying authority. +Any party can send an error instead of a message at any +point to terminate the protocol. +.IP +.EX +user→CA name +CA→user ACK +.sp 1v +user→CA ivec +CA→user key(alpha**r0 mod p), alpha, p +.sp 1v +user→CA alpha**r1 mod p +CA→user CA's public key, SHA(CA's public key + secret) +.sp 1v +user→CA user's public key, SHA(user's public key + secret) +CA→user user's public key certificate +.EE +.PP +The complexity of this protocol is intended to shield the password. +To start a clear text attack against the password, one +needs to first attack the Diffie-Hellman exponential +to determine +.IR "alpha**r0 mod p" . +A possible weakness is that the encrypted quantity +is base64 encoded, constraining +the possible values of each byte. +This could aid a brute force attack. +.PP +.I Alpha +and +.I p +are sent unprotected, though the user code does a few sanity checks +on the values it receives. +This is another likely point of attack. +We should like to know about any. +.PP +The role of +.I ivec +is to foil any replay attacks by someone spoofing the CA +though this is probably overkill. +.SH SEE ALSO +.IR security-intro (2), +.IR security-login (2), +.IR logind (8), +.IR signer (8) diff --git a/man/6/man b/man/6/man new file mode 100644 index 00000000..142bfe84 --- /dev/null +++ b/man/6/man @@ -0,0 +1,248 @@ +.TH MAN 6 +.SH NAME +man \- manual page format +.SH DESCRIPTION +The Inferno manual pages are stored as text files in a format originally defined for use with the Unix and Plan 9 +.I troff +command, when used with the +.I man +macro package. +Within Inferno, the format is interpreted by the programs of +.IR man (1). +.PP +Except in +.L .LR +and +.L .RL +requests, any text argument denoted +.I t +in the request summary may be zero to six words. +Quotes +\fL"\fP ... \fL"\fP +may be used to include blanks in a `word'. +If +.I t +is empty, +the special treatment is applied to +the next text input line (the next line that doesn't begin with dot). +In this way, for example, +.B .I +may be used to italicize a line of more than 6 words, or +.B .SM +followed by +.B .B +to make small letters in `bold' font. +.PP +A prevailing indent distance is remembered between +successive indented paragraphs, +and is reset to default value upon reaching a non-indented paragraph. +Default units for indents +.I i +are ens. +.PP +The fonts are +.TP +.B R +roman, the main font, preferred for diagnostics +.PD 0 +.TP +.B I +italic, preferred for parameters, short names of commands, +names of manual pages, +and naked function names +.TP +.B B +`bold', actually the constant width font, +preferred for examples, file names, declarations, keywords, names of +.B struct +members, and literals +(numbers are rarely literals) +.TP +.B L +also the constant width font. +For graphical display and printing, +.BR L = B ; +when converted to plain text, the +arguments of the macros +.BR .L , +.BR .LR , +and +.B .RL +are printed in quotes; +preferred only where quotes really help (e.g. lower-case literals and +punctuation). +.PD +.LP +Type font and size are reset to default values +before each paragraph, and after processing +font- or size-setting macros. +.PP +The +.I man +format +admits equations and tables in the style of Unix +.I eqn +(equation setting) +and +.I tbl +(table layout) +preprocessors, +but do not support arguments on +.B .EQ +and +.B .TS +macros. +.PP +These strings are predefined by +.IR man : +.TP +.B \e*R +Trademark symbol +.br +.ns +.TP +.B \e*S +Change to default type size. +.SH FILES +.TF /man/1/INDEX +.TP +.B /man/*/* +Source files of manual pages. +.SH SEE ALSO +.IR man (1) +.SH REQUESTS +.ta \w'.TH n c x 'u +\w'Cause 'u +\w'Argument\ 'u +.if 1 .di xx +.if 1 \ka +.if 1 .br +.if 1 .di +.if 1 .in \nau +.ti0 +Request Cause If no Explanation +.ti0 + Break Argument +.ti0 +\&\fL.B\fR \fIt\fR no \fIt\fR=n.t.l.* Text +.I t +is `bold'. +.ti0 +\&\fL.BI\fR \fIt\fR no \fIt\fR=n.t.l. Join +words of +.I t +alternating bold and italic. +.ti0 +\&\fL.BR\fR \fIt\fR no \fIt\fR=n.t.l. Join +words of +.I t +alternating bold and Roman. +.ti0 +\&\fL.DT\fR no Restore default tabs. +.ti0 +\&\fL.EE\fR yes End displayed example +.ti0 +\&\fL.EX\fR yes Begin displayed example +.ti0 +\&\fL.HP\fR \fIi\fR yes \fIi\fR=p.i.* Set prevailing indent to +.IR i . +Begin paragraph with hanging indent. +.ti0 +\&\fL.I\fR \fIt\fR no \fIt\fR=n.t.l. Text +.I t +is italic. +.ti0 +\&\fL.IB\fR \fIt\fR no \fIt\fR=n.t.l. Join +words of +.I t +alternating italic and bold. +.ti0 +\&\fL.IP\fR \fIx i\fR yes \fIx\fR="" Same as \fL.TP\fP with tag +.IR x . +.ti0 +\&\fL.IR\fR \fIt\fR no \fIt\fR=n.t.l. Join +words of +.I t +alternating italic and Roman. +.ti0 +\&\fL.L\fR \fIt\fR no \fIt\fR=n.t.l. Text +.I t +is literal. +.ti0 +\&\fL.LP\fR yes Same as \fL.PP\fP. +.ti0 +\&\fL.LR\fR \fIt\fR no Join 2 +words of +.I t +alternating literal and Roman. +.ti0 +\&\fL.PD\fR \fId\fR no \fId\fR=\fL.4v\fP Interparagraph distance is +.IR d . +.ti0 +\&\fL.PP\fR yes Begin paragraph. +Set prevailing indent to default. +.ti0 +\&\fL.RE\fR yes End of relative indent. +Set prevailing indent to amount of starting \fL.RS\fP. +.ti0 +\&\fL.RI\fR \fIt\fR no \fIt\fR=n.t.l. Join +words of +.I t +alternating Roman and italic. +.ti0 +\&\fL.RL\fR \fIt\fR no Join 2 or 3 +words of +.I t +alternating Roman and literal. +.ti0 +\&\fL.RS\fR \fIi\fR yes \fIi\fR=p.i. Start relative indent, +move left margin in distance +.IR i . +Set prevailing indent to default for nested indents. +.ti0 +\&\fL.SH\fR \fIt\fR yes \fIt\fR="" Subhead; reset paragraph distance. +.ti0 +\&\fL.SM\fR \fIt\fR no \fIt\fR=n.t.l. Text +.I t +is small. +.ti0 +\&\fL.SS\fR \fIt\fR no \fIt\fR="" Secondary subhead. +.ti0 +\&\fL.TF\fR \fIs\fR yes Prevailing indent is wide as +string +.I s +in font +.BR L ; +paragraph distance is 0. +.ti0 +\&\fL.TH\fR \fIn c x\fR yes Begin page named +.I n +of chapter +.IR c; +.I x +is extra commentary, e.g. `local', for page head. +Set prevailing indent and tabs to default. +.ti0 +\&\fL.TP\fR \fIi\fR yes \fIi\fR=p.i. Set prevailing indent to +.IR i . +Restore default indent if +.IR i =0. +Begin indented paragraph +with hanging tag given by next text line. +If tag doesn't fit, place it on separate line. +.ti0 +\&\fL.1C\fR yes Equalize columns and return to 1-column output +.ti0 +\&\fL.2C\fR yes Start 2-column nofill output +.PP +.ti0 +* n.t.l. = next text line; p.i. = prevailing indent +.SH BUGS +There's no way to include literal double quote marks +.B \&" +in font-alternation macros, such as +.LR .BI . +.br +There is no direct way to suppress column widows in 2-column +output; the column lengths may be adjusted by inserting +.L .sp +requests before the closing +.LR .1C . diff --git a/man/6/namespace b/man/6/namespace new file mode 100644 index 00000000..8eee9376 --- /dev/null +++ b/man/6/namespace @@ -0,0 +1,162 @@ +.TH NAMESPACE 6 +.SH NAME +namespace \- name space description file +.SH DESCRIPTION +Namespace files describe how to construct a name space from scratch, +or add to an existing name space. +The files are interpreted by +.IR newns (2), +invoked by commands such as +.IR logon (1) +and by other system services. +.PP +The name space description file contains one or more +lines each of which specifies one name space operation. +Empty lines and lines with +.B # +as the first non-space character are ignored. +Environment variables of the form +.BI $ name +are expanded within arguments, where +.I name +is a string terminated by white space, or one of the characters +.LR / , +.LR . , +or +.LR $ . +.PP +The known operations and their arguments are: +.TP +.B "bind [-abci] \f2old\fP \f2new\fP" +Use +.I new +as an alias for file or directory +.IR old . +Options +.BR a , +.BR b +and +.BR c +translate to flag values +.BR Sys\->MAFTER , +.B Sys\->MBEFORE +and +.B Sys\->MCREATE +of +.IR sys-bind (2). +If neither +.B a +nor +.B b +are given, the default is +.BR Sys\->MREPL . +Option +.B i +means to ignore errors. +.TP +.B cd \f2directory\fP +Change working directory to +.IR directory . +.TP +.B fork +Split the name space before modification. +This is equivalent to passing a value of +.B Sys->FORKNS +to +.IR sys-pctl (2). +.TP +.B "mount [-abc9i] [-k \f2keyfile\fP] [-C \f2alg\fP] [\f2net\fP!]\f2machine\fP[!\f2svc\fP] \f2dir\fP [\f2spec\fP]" +Mount the file tree of +.I machine +upon directory +.IR dir . +The default service is +.BR styx . +Options +.BR a , +.BR b , +.B c +and +. B i +are the same as for +.BR bind . +The tokens +.I dir +and +.I spec +translate to +.I old +and +.I aname +of +.B mount +as described under +.IR sys-bind (2). +The +.BR -k , +.B -C +and +.B -9 +options are the same as those for the +.I mount +command (see +.IR bind (1)). +.TP +.B "import [-abc9i] [\f2net\fP!]\f2machine\fP[!\f2svc\fP] [\f2remotedir\fP] \f2dir\fP" +Import a directory from a remote Plan 9 +.I machine +and make it appear on directory +.IR dir . +Options +.BR a , +.BR b , +.BR c +and +.B i +are the same as for +.BR mount . +By default, +.I remotedir +is assumed to be the same name as +.IR dir . +The default service is +.BR exportfs . +(Currently this operation works only under native Inferno and Plan 9.) +.TP +.B new +Create a new name space in which the current directory +becomes the root directory; +typically used after +.BR cd . +This is equivalent to passing a value of +.B Sys->NEWNS +to +.IR sys-pctl (2). +.TP +.B nodev +Disallow device attaches. +This is equivalent to passing a value of +.B Sys->NODEVS +to +.IR sys-pctl (2). +.TP +.B unmount [-i] [\f2name\fP] \f2from\fP +If two arguments are given, undo a +.B bind +or +.B mount +with the same arguments. +If only one argument is given, everything bound to or mounted on +.I from +is unmounted. +The +.B -i +option means ignore errors. +.TP +.BI "\&." " path" +Include the name space description file +.IR path . +.SH SEE ALSO +.IR nsbuild (1), +.IR wm (1), +.IR newns (2) diff --git a/man/6/ndb b/man/6/ndb new file mode 100644 index 00000000..c84c33eb --- /dev/null +++ b/man/6/ndb @@ -0,0 +1,219 @@ +.TH NDB 6 +.SH NAME +ndb \- network data base +.SH SYNOPSIS +.B /lib/ndb/local +.br +.B /lib/ndb/inferno +.br +.B /lib/ndb/dns +.br +.B /lib/ndb/common +.SH DESCRIPTION +Network configuration data is stored in one or more files in the directory +.BR /lib/ndb , +in the attribute data base format defined by +.IR attrdb (6). +Most applications that use it start with +.B /lib/ndb/local +by default. +That can refer (using a +.B database +entry) to other files that form part of the same logical database. +They are stored in distinct files to allow different configurations +to avoid duplicating data by sharing some common content. +For example, +.B /lib/ndb/common +associates service names with port numbers for Internet protocols, +and +.B /lib/ndb/inferno +provides the Inferno-specific port mapping. +A database is automatically reread if any component file has +changed since it was last read (based on its modification time). +.PP +A network database gives particular meaning to the following attributes: +.TF dnsdomainxx +.TP +.B auth +name or address of authentication server +.TP +.B bootf +name of the file to send to a device on request when booting +.TP +.B dns +name or address of DNS resolver (see also the +.B ns +attribute below) +.TP +.B dnsdomain +domain in which the local host lives (used to qualify unqualified names) +.TP +.B dom +Internet domain name (host or DNS zone) +.TP +.B ether +Ethernet address in the form accepted by +.IR ether (2) +.TP +.B fs +name or address of file server +.TP +.B il +IL service name +.TP +.B infernosite +empty-valued attribute that labels default site parameters +.TP +.B ip +Internet address +.TP +.B ipgw +name or address of Internet gateway +.TP +.B ipmask +Internet network mask +.TP +.B ipnet +network or subnetwork name +.TP +.B ipv4proto +IPv4 protocol number (see also +.BR protocol ) +.TP +.B mx +mail exchanger +.TP +.B ns +name of a DNS name server for an associated +.B dom +.TP +.B port +port number for a service +.TP +.B protocol +protocol name +.TP +.B soa +start of area (value is empty if locally authoritative, or +.RB ` delegated ' +if another server is authoritative) +.TP +.B sys +system name (short local name for a host) +.TP +.B tcp +TCP service name +.TP +.B udp +UDP service name +.PD +.PP +Internet addresses and masks can be written in any form +accepted by +.IR Ip (2). +Network applications might use other attributes of their own, +which they document on their own pages. +.PP +.I Cs (8) +interprets a host name of the form +.BI $ server +as referring to the set of names and addresses that are values +of the attribute +.I server +in the network data base. +Attributes in general use include some of those above, and the following: +.TF FILESERVER +.TP +.B FILESERVER +older name for file server +.B fs +file server +.TP +.B pop3 +mail reading service using the POP3 protocol +.TP +.B PROXY +firewall proxy for +.IR ftpfs (4) +.TP +.B SIGNER +Inferno authentication server running +.IR logind (8) +and/or +.IR signer (8) +.TP +.B smtp +mail delivery gateway using the SMTP protocol +.PD +.PP +Other such symbolic server names are mentioned in the manual pages for associated applications. +.PP +.IR Dns (8) +interprets +.BR dns +and +.BR dnsdomain +values in any +.B infernosite +entry, and +.BR dom , +.BR ip , +and +.BR ns +values more generally. +When resolving a domain name, +.I dns +looks first in this data base to see if there is a +.B dom +entry for the name, and if so, whether there is either an associated +.B ns +attribute giving a name server to ask, or an +.B ip +attribute giving the name's IP address. +Failing that, it works up the name hierarchy looking for name servers to ask. +Failing that, it looks for a +.B dnsdomain +entry with +.B dns +attributes listing other resolvers to ask. +Bootstrap data is commonly stored in +.BR /lib/ndb/dns ; +by default it defines the root name servers: +.IP +.EX +dom= # root + ns=a.root-servers.net + ns=b.root-servers.net + \f1...\fP +dom=a.root-servers.net ip=198.41.0.4 +dom=b.root-servers.net ip=128.9.0.107 + \f1...\fP +.EE +.SH EXAMPLE +Specify the site's default DNS domain name and resolvers for +.IR dns (8), +and a collection of symbolic service names for +.IR cs (8): +.IP +.EX +infernosite= + dnsdomain=vitanuova.com + dns=200.1.1.11 + dns=158.152.1.58 + dns=158.152.1.43 + SIGNER=doppio + FILESERVER=doppio + smtp=doppio + pop3=doppio + PROXY=doppio + GAMES=vivido + IRMSERVER=vivido +.EE +.SH FILES +.B /lib/ndb/* +.SH SEE ALSO +.IR attrdb (2), +.IR attrdb (6), +.IR bootpd (8), +.IR cs (8), +.IR dns (8) diff --git a/man/6/plumbing b/man/6/plumbing new file mode 100644 index 00000000..d28e26b8 --- /dev/null +++ b/man/6/plumbing @@ -0,0 +1,163 @@ +.TH PLUMBING 6 +.SH NAME +plumbing \- plumbing rules +.SH DESCRIPTION +Plumbing rules tell +.IR plumber (8) +how to route plumbing messages +generated by applications using +.IR plumbmsg (2). +.PP +The file is a set of rules separated by blank lines. +Each +rule +is a set of patterns followed by a set of actions. +The rules are interpreted in order. +The first rule whose patterns all match is applied, and no further +rules are examined. +Comments start with +.B # +and continue to end of line. +Single quotes protect special characters (use +.B '' +to get a single quote). +.PP +A +pattern +has the general form: +.IP +.I "field verb arg" +.PP +Each +.I field +corresponds to a field in the incoming plumbing message: +.RS +.TP +.B src +Source application +.TP +.B dst +Destination port +.TP +.B dir +Working directory +.TP +.B kind +Format of the data (eg, +.B text +or +.BR image ) +.TP +.B attr +A line of +.IB name = value +pairs +.TP +.B data +The message data (an array of bytes) +.RE +.PP +The verbs are: +.RS +.TF matches +.PD +.TP +.B is +Exact string comparison with +.I arg +.TP +.B matches +Regular expression comparison with +.I arg +.TP +.B isdir +.I Arg +must name an existing directory +.TP +.B isfile +.I Arg +must name an existing file +.TP +.B set +Set the value of the +.I field +to +.IR arg . +This verb operates in place, so put it after all other patterns in the rule. +.RE +.PP +The +.I arg +can refer to one of the following variables: +.RS +.TF "$0 to $9 " +.PD +.TP +.BR $0 " to " $9 +Substrings resulting from the most recent regular expression match: +.B $0 +is the entire substring; +.B $1 +the first parenthesised substring, etc. +.TP +.B $file +The file name examined by the last +.B isfile +verb. +.TP +.B $dir +The directory name examined by the last +.B isdir +verb. +.RE +.PP +The following actions are provided: +.RS +.TP +.BI "plumb to" " port" +Route the message to the given plumbing +.IR port . +.TP +.BI "plumb start" " command arg ..." +If no program is currently listening on the current rule's +.IR port , +start the +.I command +with the given arguments. +The +.RB ` $ ' +variables listed above can be used, to include part +of the message in the command line arguments to the program. +They are replaced in the command string by their actual values. +.RE +.PP +For example, the following rule sends the names of module files\- +file names ending with suffix +.RB ` .m '\- +to +.IR wm-brutus (1), +starting it if it is not already running: +.IP +.EX +kind is text +data matches '([a-zA-Z0-9]+\.m)(:[0-9]+)?' +data isfile /module/$1 +data set /module/$0 +plumb to edit +plumb start /dis/wm/brutus.dis $file$2 +.EE +.PP +Note the use of +.B $2 +in the +.B start +action to pass +.B brutus +the line number selected by the second parenthesised +expression in the pattern. +.SH FILES +.BI /usr/ user /lib/plumbing +.SH SEE ALSO +.IR plumb (1), +.IR plumbmsg (2), +.IR plumber (8) diff --git a/man/6/proto b/man/6/proto new file mode 100644 index 00000000..1a324373 --- /dev/null +++ b/man/6/proto @@ -0,0 +1,153 @@ +.TH PROTO 6 +.SH NAME +proto \- file system prototype +.SH DESCRIPTION +A +.I proto +file defines a file system hierarchy, for +programs that create, copy or operate on them, +such as +.IR fs (1) +or +.IR mkfs (8). +The +.I proto +file defines the hierarchy as a set of names relative to an +existing hierarchy, for instance in an existing file system or a list of path names +in an archive. +Files in the existing hierarchy that are not specified in the +.I proto +file +are ignored. +.IR Fsproto (2) +provides functions to read a prototype file and enumerate the names it selects in an +existing hierarchy. +.PP +Each line of the +.I proto +file specifies a file (where the term `file' includes directories). +Indentation is significant, +with each level of indentation corresponding to a level in the file tree. +Each line contains up to five fields separated by white space: +.IP +.EX +.I "name perm uid gid source" +.EE +.PP +.I Name +is the last path element in the resulting file tree. +.I Perm +specifies the permissions, as described below. +.I Uid +is the owner of the file, +and +.I gid +is the group owning the file. +.I Source +is the name of a file in the current name space +(not the source file tree) from which to copy +.IR name 's +content. +All fields except +.I name +are optional. +If a field such as +.I perm +or +.I uid +is not given, or is given as +.LR - , +its value is taken from the existing file. +.PP +A +.I name +starting with +.L $ +is taken as a reference to an environment variable (see +.IR sh (1) +and +.IR env (3)) +and replaced by the value of that variable. +If the first +.I name +in a directory is +.LR + , +all of the files are represented, and all subdirectories recursively. +If the first +.I name +is +.LR * , +all of the names in the corresponding existing directory are represented, +but only the names of subdirectories, not their content. +If the first +.I name +is +.LR % , +only non-directory names are represented excluding both the names and content +of subdirectories. +.PP +.I Perm +has the form: +.IP +.RB [ d ] +.RB [ a ] +.RB [ l ] +.I oct +.PP +where the optional letters set file attributes +.RL ( d +directory, +.L a +append-only, and +.L l +exclusive-use), +and +.I oct +is an octal number giving the permissions for user, group and others +(see +.IR chmod (1)). +.SH EXAMPLES +.PP +Denote all files in a given file system: +.IP +.EX ++ +.EE +.PP +Denote all files in the current user's home directory: +.IP +.EX +usr + $user +.EE +.PP +Specify a subset of files in +.BR /dis : +.IP +.EX +dis + * + install + * + lib + arg.dis + names.dis +.EE +.SH FILES +.TF /lib/proto/portproto +.TP +.B /lib/proto +directory of prototype files +.TP +.B /lib/proto/all +prototype for whole hierarchy (ie, line containing +.LR + ) +.TP +.B /lib/proto/portproto +generic prototype file +.SH "SEE ALSO" +.IR fs (1), +.IR fsproto (2), +.IR kfs (4), +.IR mkfs (8) + diff --git a/man/6/regexp b/man/6/regexp new file mode 100644 index 00000000..09dea814 --- /dev/null +++ b/man/6/regexp @@ -0,0 +1,126 @@ +.TH REGEXP 6 +.SH NAME +regexp, regex \- regular expression notation +.SH DESCRIPTION +A +.I "regular expression" +specifies +a set of strings of characters. +A member of this set of strings is said to be +.I matched +by the regular expression. In many applications +a delimiter character, commonly +.LR / , +bounds a regular expression. +In the following specification for regular expressions +the word `character' means any character (rune) but newline. +.PP +The syntax for a regular expression +.B e0 +is +.IP +.EX +e3: literal | charclass | '.' | '^' | '$' | '(' e0 ')' + +e2: e3 + | e2 REP + +REP: '*' | '+' | '?' + +e1: e2 + | e1 e2 + +e0: e1 + | e0 '|' e1 +.EE +.PP +A +.B literal +is any non-metacharacter, or a metacharacter +(one of +.BR .*+?[]()|\e^$ ), +or the delimiter +preceded by +.LR \e . +.PP +A +.B charclass +is a nonempty string +.I s +bracketed +.BI [ \|s\| ] +(or +.BI [^ s\| ]\fR); +it matches any character in (or not in) +.IR s . +A negated character class never +matches newline. +A substring +.IB a - b\f1, +with +.I a +and +.I b +in ascending +order, stands for the inclusive +range of +characters between +.I a +and +.IR b . +In +.IR s , +the metacharacters +.LR - , +.LR ] , +an initial +.LR ^ , +and the regular expression delimiter +must be preceded by a +.LR \e ; +other metacharacters +have no special meaning and +may appear unescaped. +.PP +A +.L . +matches any character. +.PP +A +.L ^ +matches the beginning of a line; +.L $ +matches the end of the line. +.PP +The +.B REP +operators match zero or more +.RB ( * ), +one or more +.RB ( + ), +zero or one +.RB ( ? ), +instances respectively of the preceding regular expression +.BR e2 . +.PP +A concatenated regular expression, +.BR "e1\|e2" , +matches a match to +.B e1 +followed by a match to +.BR e2 . +.PP +An alternative regular expression, +.BR "e0\||\|e1" , +matches either a match to +.B e0 +or a match to +.BR e1 . +.PP +A match to any part of a regular expression +extends as far as possible without preventing +a match to the remainder of the regular expression. +.SH "SEE ALSO" +.IR acme (1), +.IR sh-regex (1), +.IR regex (2) diff --git a/man/6/sbl b/man/6/sbl new file mode 100644 index 00000000..4b3dad88 --- /dev/null +++ b/man/6/sbl @@ -0,0 +1,385 @@ +.TH SBL 6 +.SH NAME +sbl \- symbol table file +.SH DESCRIPTION +A Limbo symbol table file provides type information for the module +in an associated Dis executable file, +for use by debuggers and similar applications. +They are written by the Limbo compiler +when given the +.B -g +option. +The files conventionally have a +.B .sbl +suffix; they need not be stored in the same directory as +the corresponding Dis file. +.PP +The file consists of a header followed by five tables: +.IP +.I "header file-table pc-table type-table fn-table data-table" +.PP +Each table starts with a line containing a decimal +count of the items in that table. +The count can be zero. The following +sections describe the format of table items in each table. +In the description, the following terminals are used. +.PP +A +.I "string" +is a sequence of letters, digits, and the characters _, ., -, and >. Letters are the Unicode characters a through z and A through Z, and all Unicode characters with encoded values greater than A0 hexadecimal. +.PP +An +.I int +is an optional minus sign followed by a sequence of digits, 0 to 9. +.PP +In the following description, +the presence of a space is represented by +.B • +and a newline by +.BR \en . +There are no other spaces between syntactic elements in the file format. +Other special characters represent themselves. +.SS Header +.PP +The header consists of two items. +.ds Os "\v'0.2m'\s-3\|opt\s+3\^\v'-0.2m' +.IP +.EX +.ft I +.nf +header: + magic\f5\en\fP + module\f5\en\fP +magic: + \f5limbo .sbl 2.0\fP +module: + string +.ft R +.EE +.PP +There have been two previous versions of symbol table format, distinguished +by the number in +.IR magic . +Version +.B 1. +was the original; version +.B 1.1 +added more references back to the source; and version +.B 2.0 +replaced the original +adt table by a type table and added support for Limbo's +.B pick +construction. +Only version 2.0 is described here; the others are obsolete. +.PP +.I Module +is the name of the module implemented in the Dis file. +Symbol file references to identifiers declared by the implementation module are unqualified. +A name referenced that is imported from any other module is preceded by +.IB m -> +where +.I m +is that module's identifier. +.SS File table +The file table is a list of file names referenced by the rest of the tables. Each file name is terminated by a newline character; within the name, any character other than a newline is valid. +.SS PC table +The PC table relates every instruction in the Dis file to the source from which it was compiled. +The table is indexed by Dis PC to obtain a reference to the corresponding source. +Each item consists of a source description +and a statement reference: +.IP +.EX +.ft I +pc-item: + src stmt \f5\en\fP +src: + pos\f5,\fPpos• +pos: + file\f5:\fP\*(Os line\f5.\fP\*(Os char +file, line, char, stmt: + int +.ft R +.EE +.PP +A source description +.I src +selects source text as a range of characters within lines of a source file. +.I File +is an index into the file table (origin 0); +.I "line" +and +.I "char" +are positions within that source file, with line numbers starting at 1 and character positions at 0. If +.I "file" +or +.I "line" +is omitted, it is assumed to have the previous value, or 0 if there is no previous value. +.PP +.I Stmt +is the `statement number' of the instruction. +Despite its name, the scope of a statement number is smaller than a Limbo statement: +it identifies a region marked by the compiler for treatment as a unit when debugging. +For instance, +in a +.B for +statement, the initial expression, increment, test, and body all have unique +statement numbers. +All instructions compiled from the same region in a Limbo program have the same statement number. +The number is that of the innermost region that contains the instruction. +.SS Type table +The type table describes the Limbo adts used in the Dis file, +both locally declared and imported. +Each entry describes a +.IR type : +.IP +.EX +.I "type:" +.ft 5 + @ \fItype-index\fP \en + a \fIadt-item\fP + p \fIadt-item\fP \fItag-table\fP + t \fIsize\fP . \fIid-table\fP + m \fImodule\fP \en \fIsrc\fP + A \fItype\fP + C \fItype\fP + L \fItype\fP + R \fItype\fP + n + N + B + b + i + f + s +.ft I +type-index: + int +.EE +.PP +Each leading character specifies a different Limbo type: +.IP +.RS +.TF N +.TP 5n +.B @ +existing type referenced by type table index (not self-referential) +.TP +.B A +.B array of +.I type +.TP +.B a +.B adt +without +.B pick +.TP +.B B +.B big +.TP +.B b +.B byte +.TP +.B +C +.B chan of +.I type +.TP +.B f +.B real +.TP +.B i +.B int +.TP +.B L +.B list of +.I type +.TP +.B m +.B module +.TP +.B N +.BR nil 's +type +.TP +.B n +no type (eg, function with no return type) +.TP +.B p +.B adt +with +.B pick +.TP +.B R +.B ref +.I type +.TP +.B s +.B string +.TP +.B t +tuple +.PD +.RE +.PP +A +.I type-index +is an offset in the type table, representing the corresponding type. +.I Size +is the size in bytes of a value of the given type. +The size of basic types is known and does not appear explicitly: +.B big +and +.B real +are 64 bits; all others including strings and reference types are 4 bytes. +(Strings are represented internally by a pointer.) +.PP +Each +.I "id-table" +is preceded by a count of the number of entries, followed by +an +.I id-item +for each entry in the table: +.IP +.EX +.ft I +id-table: + count \f5\en\fP id-items +id-item: + id-offset \f5:\fP id-name \f5:\fP src type \f5\en\fP +id-offset: + int +id-name: + string +count: + int +.ft R +.EE +.PP +.I Id-offset +is the number of bytes from the start of the enclosing object to the value of the +object identified by +.IR "id-name" . +.PP +An adt without a +.B pick +clause is described using an +.IR adt-item : +.IP +.EX +.ft I +adt-item: + adt-name • src size \f5\en\fP id-table +adt-name: + string +size: + int +.ft R +.EE +.PP +The +.I id-table +has an entry for every data element of +.IR "adt-name" . +.PP +If an adt has a +.B pick +clause, the adt's type table entry uses the +.B p +type character. +The invariant part of the adt is described by an +.I adt-item +(with zero +.IR size ) +and the variant clause is described by a +.I tag-table +of the following form: +.IP +.EX +.ft I +tag-table: + count \f5\en\fP tag-items +tag-item: + name \f5:\fP src size \f5\en\fP id-table + \f1|\fP name \f5:\fP src \f5\en\fP +.ft R +.EE +.PP +The +.I tag-table +describes the variants of a Limbo adt +that includes a +.B pick +clause. +The +.I name +is the +.B pick +tag for the associated alternative. +If the +.I size +and +.I id-table +are missing, the given variant has the same description +as the previous one. +.PP +A tuple's +.I id-table +contains +.I id-names +of the form +.BI t n, +where +.I n +is the 0-origin index of the item in the tuple. +.PP +.I Src +is as previously defined above in the PC table section. +.SS Fn table +The function table describes each function implemented by the Dis file. +.IP +.EX +.ft I +fn-item: + fn-pc \f5:\fP fn-name \f5\en\fP args locals return +fn-pc: + int +fn-name: + string +args, locals: + id-table +return: + type +.ft R +.EE +.PP +.I Fn-pc +is the starting pc for the Dis instructions for +.IR "fn-name" . +If the function is a member of an adt, +the member name is qualified by the adt name, so that +.I fn-name +has the form +.IB `adt-name . member-name'. +Within the +.I id-tables +for +.I args +and +.IR locals , +the +.I "id-offset" +fields give offsets relative to the function's activation frame. +Furthermore, no table entries are made for +.I args +that are declared +.B nil +(unused). +.SS Data table +The data table describes the global variables in the Dis file. It is an +.IR "id-table" , +with one entry for each global variable. +.SH SEE ALSO +.IR limbo (1), +.IR wm-deb (1), +.IR debug (2), +.IR dis (6) diff --git a/man/6/scancode b/man/6/scancode new file mode 100644 index 00000000..11c6c495 --- /dev/null +++ b/man/6/scancode @@ -0,0 +1,37 @@ +.TH SCANCODE 6 +.SH NAME +scancode \- known formats of scan codes +.SH DESCRIPTION +The +.B scancode +interface of +.IR cons (3) +provides access to scan codes of the primary keyboard. There +are as many scan code formats as keyboards. Here are some +common ones. +.SH Microsoft Windows™ Virtual Key +.PP +The identifier is +.BR emu_win32vk , +and each scan code is encoded in the two byte format specified in +.IR cons(3) . +This format is used by the Microsoft Windows™ implementation of +.IR emu (1E), +and each scan code is a +.IR "Virtual Key" . +See the appropriate Microsoft documentation for the meaning of the +codes. +.SH X11 +.PP +The identifier is +.BR emu_x11 , +and each scan code is encoded in the single byte format specified in +.IR cons(3) . +This format is used by the various Unix/X11 implementations of +.IR emu (1E), +and each scan code is an X11 +.IR keycode . +See the appropriate X11 documentation for the meaning of the +codes. +.SH "SEE ALSO" +.IR cons (3) diff --git a/man/6/sexprs b/man/6/sexprs new file mode 100644 index 00000000..d2a5a7cc --- /dev/null +++ b/man/6/sexprs @@ -0,0 +1,236 @@ +.TH SEXPRS 6 +.SH NAME +sexprs \- symbolic expressions +.SH DESCRIPTION +S-expressions (`symbolic expressions') provide a way for programs to store and +exchange tree-structured text and binary data. +The Limbo module +.IR sexprs (2) +provides the variant defined by +Rivest in Internet Draft +.L draft-rivest-sexp-00.txt +(4 May 1997), +as used for instance by the Simple Public Key Infrastructure (SPKI). +It provides a `canonical' form of S-expression, +and an `advanced' form for display. +They can convey binary data directly and efficiently, unlike some +other schemes such as XML. +The two forms are closely related and all can be read or written by +.IR sexprs (2), +including a variant sometimes used for transport on links that are not 8-bit safe. +.PP +An S-expression is either a sequence of bytes (a byte +.IR string ), +or a parenthesised list of smaller S-expressions. +All forms start with the fundamental rules below, in extended BNF: +.IP +.EX +.ft R +.ta \w'\f2simple-stringxxxxx\f1'u +\w'\ ::=\ 'u +\f2sexpr\fP ::= \f2string\fP | \f2list\fP +\f2list\fP ::= '(' \f2sexpr\fP* ')' +.EE +.DT +.PD +.PP +They give the recursive structure. +The various representations ultimately differ only in how the byte string is represented +and whether white space such as blanks or newlines can appear. +.PP +Furthermore, the definition of +.I string +is also common to all forms: +.IP +.EX +.ft R +.ta \w'\f2simple-stringxxxxx\f1'u +\w'\ ::=\ 'u +\f2string\fP ::= \f2display\fP? \f2simple-string\fP +\f2display\fP ::= '[' \f2simple-string\fP ']' +.EE +.DT +.PD +.PP +The optional bracketed +.I display +string provides information on how to present the associated byte string to a user. +(``It has no other function. Many of the MIME types work here.'') +Although supported by +.IR sexprs (2), +it is largely unused by Inferno applications and is usually left out. +The canonical and advanced forms differ in their definitions of +.IR simple-string . +They always denote sequences of 8-bit bytes, but with different syntax (encodings). +Two +.I strings +are equal iff their +.I simple-strings +encode the same byte strings (for both data and +.IR display ). +.PP +.I Canonical +form must be used when exchanging S-expressions between computers, +and when digitally signing an expression. +It is defined by the complete set of rules below: +.IP +.EX +.ft R +.ta \w'\f2simple-stringxxxxx\f1'u +\w'\ ::=\ 'u +\f2sexpr\fP ::= \f2string\fP | \f2list\fP +\f2list\fP ::= '(' \f2sexpr\fP* ')' +\f2string\fP ::= \f2display\fP? \f2simple-string\fP +\f2display\fP ::= '[' \f2simple-string\fP ']' +\f2simple-string\fP ::= \f2raw\fP +\f2raw\fP ::= \f2nbytes\fP ':' \f2byte*\fP +\f2nbytes\fP ::= \f5[1-9][0-9]\fP+ | \f50\fP +.EE +.DT +.PD +.PP +Its +.I simple-string +is a raw byte string. +The primitive +.I byte +represents an 8-bit byte. +The length of every byte string is given explicitly by a preceding decimal value +.I nbytes +(with no leading zeroes). +There is no white space. +It is `canonical' because it is uniquely defined for each S-expression. +It is efficient to parse even on small computers. +.PP +.I Advanced +form is more elaborate, and has two main differences: +not all byte strings need an explicit length, and binary +data can be represented in printable form, either using hexadecimal or base 64 encodings, +or using quoted strings (with escape sequences similar to those of Limbo or C). +Unquoted text is called a +.IR token , +and is restricted by the standard to a specific alphabet: +it must contain only letters, digits, or characters from the set +.LR "-./_:*+=" , +and must not start with a digit. +The latter restriction is imposed to allow byte counts to be distinguished from tokens without +lookahead, but has the consequence that decimal numbers must be quoted, +as must non-ASCII characters in +.IR utf (6) +encoding. +Upper- and lower-case letters are distinct. +The advanced transport syntax is defined by the complete set of rules below: +.IP +.EX +.ft R +.ta \w'\f2simple-stringxxxxx\f1'u +\w'\ ::=\ 'u +\f2sexpr\fP ::= \f2string\fP | \f2list\fP +\f2list\fP ::= '(' ( \f2sexpr\fP | \f2whitespace\fP )* ')' +\f2string\fP ::= \f2display\fP? \f2simple-string\fP +\f2display\fP ::= '[' \f2simple-string\fP ']' +\f2simple-string\fP ::= \f2raw\fP | \f2token\fP | \f2base-64\fP | \f2hexadecimal\fP | \f2quoted-string\fP +\f2raw\fP ::= \f2nbytes\fP ':' \f2byte*\fP +\f2nbytes\fP ::= \f5[1-9][0-9]\fP+ | \f50\fP +\f2token\fP ::= \f2token-start\fP \f2token-char*\fP +\f2base-64\fP ::= \f2decimal\fP? '|' ( \f2base-64-char\fP | \f2whitespace\fP )* '|' +\f2hexadecimal\fP ::= '#' ( \f2hex-digit\fP | \f2whitespace\fP )* '#' +\f2quoted-string\fP ::= \f2nbytes\fP? \f2quoted-string-body\fP +\f2quoted-string-body\fP ::= '"' \f2byte*\fP '"' +\f2token-start\fP ::= \f5[-./_:*+=a-zA-Z]\fP +\f2token-char\fP ::= \f2token-start\fP | \f5[0-9]\fP +\f2hex-digit\fP ::= \f5[0-9a-fA-F]\fP +\f2base-64-char\fP ::= \f5[a-zA-Z0-9+/=]\fP +.EE +.PD +.DT +.PP +.I Whitespace +is any sequence of blank, tab, newline or carriage-return characters; +note that it can appear only at the places shown. +The +.I bytes +in a +.I quoted-string-body +are interpreted according to the quoting rules for Limbo (or C). +That is, the bytes are enclosed in quotes, and may contain the +escape sequences for the following characters: +backspace +.RB ( \eb ), +form-feed +.RB ( \ef ), +newline +.RB ( \en ), +carriage-return +.RB ( \er ), +tab +.RB ( \et ), +and vertical tab +.RB ( \ev ), +octal escape +.BI \e ooo +(all three digits must be given), +hexadecimal escape +.BI \ex hh +(both digits must be given), +.B \e\e +for backslash, +.B \e' +for single quote, and +and \f5\e"\fP to include a quote in a string. +Note that a quoted string can have an optional +.IR nbytes , +but it gives the length of the byte string resulting +.I after +interpreting character escapes. +.PP +Both canonical and advanced forms can contain binary data verbatim. +Sometimes that is troublesome for storage or transport. +At the lexical level any +.I sexpr +can therefore be replaced by the following: +.IP +.EX +.ft R +\&'{' ( \f2base-64-char\fP | \f2whitespace\fP )* '}' +.EE +.PP +where the text between the braces is the base-64 encoding of the +.I sexpr +expressed in canonical or advanced form. +The S-expression parser will replace the sequence by its decoded, and resume +parsing at the start of that byte string. +Note the difference in syntax and interpretation from rule +.IR base-64 +above, which encodes a +.IR simple-string , +not an +.IR sexpr . +.SH EXAMPLES +The following S-expression is in canonical form: +.IP +.EX +(12:hello world!(5:inner0:)) +.EE +.PP +It is a list of two elements: the string +.BR "hello world!" , +and another list also with two elements, +the string +.BR inner +and an empty string. +All the bytes in the example are printable characters, but they could have been arbitrary binary values. +.PP +The following is an S-expression in advanced form: +.IP +.EX +(hello-world + (* "3" "5.6") + (best-of-3 (5:inner0:))) +.EE +.PP +Note that advanced form contains canonical form as a subset; +here it is used for the innermost list. +.SH SEE ALSO +.IR sexprs (2) +.PP +R. Rivest, ``S-expressions'', Network Working Group Internet Draft +(4 May 1997), +reproduced in +.BR /lib/sexp . diff --git a/man/6/translate b/man/6/translate new file mode 100644 index 00000000..f0f8895c --- /dev/null +++ b/man/6/translate @@ -0,0 +1,55 @@ +.TH TRANSLATE 6 +.SH NAME +translate \- translation dictionary +.SH SYNOPSIS +.BI /locale/dict/ app +.br +.BI /locale/ locale /dict/ app +.SH DESCRIPTION +A dictionary file provides translation text that applications can access using +.IR translate (2). +Each is a Unicode file containing a set of translations, one per line, +each line having the following syntax: +.IP +.EX +"\fIsource-text\fP"\fR [\fP (\fInote-text\fP)\fR ] [ \fP="\fItarget-text\fP" \fR ] \fP +.EE +.PP +which defines +.I target-text +as the translation for +.I source-text . +A missing translation clause defines the identity translation. +The optional +.I note-text +qualifies the context of the +.IR source-text , +when the same phrase in the source language might +translate to different phrases in the target language, +or to distinguish a particular context in the program (eg, particular menus): +For example: +.IP +.EX +"Times"(newspaper) = "La Republicca" +"Times"(timetable) = "L'orario" +"ABC"(keypad) = "abc" +.EE +.PP +Empty lines and lines beginning with +.B # +are ignored. +The quoted strings can contain the Limbo escape sequences +.B "\en" +(newline), +.B "\et" +(tab), +.B "\er" +(carriage return), +and +.B "\e\e" +(backslash). +.PP +The default locale is set by binding one or more specific locales onto +.BR /locale/dict . +.SH FILES +.B /locale/*/dict/* diff --git a/man/6/ubfa b/man/6/ubfa new file mode 100644 index 00000000..61b5705d --- /dev/null +++ b/man/6/ubfa @@ -0,0 +1,129 @@ +.TH UBFA 6 +.SH NAME +ubfa \- universal binary format for data transport +.SH DESCRIPTION +.I UBF(A) +is the data transport encoding for Armstrong's +Universal Binary Format. +It provides four primitive types: atoms (symbolic constants), integers, strings, and binary data. +There are two compound types: fixed-length tuples and variable-length lists. +.IR Ubfa (2) +provides basic support in Limbo for reading and writing streams of UBF(A)-encoded data. +.PP +The +.I input +syntax is defined by the following rules: +.IP +.EX +.ft R +.ta \w'\f2simple-xxx\f1'u +\w'\ ::=\ 'u +\f2input\fP ::= \f2item\fP* '$' +\f2item\fP ::= \f2integer\fP | \f2atom\fP | \f2string\fP | \f2binary\fP | \f2tuple\fP | \f2list\fP | \f2store\fP | \f2push\fP | \f2comment\fP | \f2tag\fP + +\f2integer\fP ::= \f5'-'\fP?\f5[0-9]\fP+ +\f2atom\fP ::= "'" (\f5[^\e']\fP | '\e\e' | "\e'")* "'" +\f2string\fP ::= '"' (\f5[^\e"]\fP | '\e\e' | '\e"')* '"' +\f2binary\fP ::= '~' \f2byte\fP* '~' # preceded by \f2integer\fP byte count + +\f2tuple\fP ::= '{' \f2item\fP* '}' +\f2list\fP ::= '#' (\f2item\fP '&')* + +\f2store\fP ::= '>' \f2reg\fP +\f2push\fP ::= \f2reg\fP +\f2reg\fP ::= \f5[^-%"~'`{}#& \en\er\et,0-9]\fP +\f2comment\fP ::= '%' (\f5[^\e%]\fP | '\e\e' | '\e%')* '%' +\f2tag\fP ::= '`' (\f5[^\e`]\fP | '\e\e' | '\e`')* '`' +.EE +.PD +.DT +.PP +White space is any sequence of blank, tab, newline or carriage-return characters, and can appear +before or after any instance of +.I item +in the grammar. +.PP +The +.I input +data is interpreted by a simple virtual machine. +The machine contains a stack of values of primitive and compound types, and a set of registers also containing +values of those types. +White space and comments are ignored. +Primitive +.IR integer , +.I atom +and +.IR string +values are pushed onto the stack as they are recognised. +Certain input bytes outside any value act as operators: +.TP +.B { +Note the current stack depth. +.TP +.B } +Pop stack values to restore the most recently noted stack depth. +Push a single value +representing a tuple of those items; the left-most value in the tuple is the last one popped +(the first in the original input stream). +.TP +.B ~ +Pop an integer value +.I n +from the stack. +Read +.I n +bytes from the input stream and push a value onto the stack that represents them. +The next byte must be the character +.BR ~ , +which is discarded. +.TP +.B # +Push a value representing an empty list onto the stack. +.TP +.B & +Pop a value +.IR v . +Pop another value +.IR l , +which must represent a list. +Push a value that represents +the list +.IB v :: l . +(Note that the items in a +.I list +therefore appear in reverse order in the input stream.) +.TP +.BI > reg +Pop the top value from the stack and store it in a register labelled by the byte +.IR reg . +.TP +.I reg +Push the value of register +.I reg +(which must be non-null) onto the stack. +.TP +.I tag +Associate the tag string with the value on top of the stack. +The +.IR ubfa (2) +implementation does so by replacing it by a special +.B Tag +tuple. +.TP +.B $ +End-of-input: there must be exactly one value on the stack, +which is the result. +.PP +Applications using UBF(A) typically take turns to exchange +.I input +values on a communication channel. +.SH SEE ALSO +.IR sexprs (2), +.IR ubfa (2), +.IR sexprs (6) +.br +J L Armstrong, ``Getting Erlang to talk to the outside world'', +.I "ACM SIGPLAN Erlang workshop 2002" , +Pittsburg, PA USA +.br +UBF web page, +.B "http://www.sics.se/~joe/ubf/" diff --git a/man/6/users b/man/6/users new file mode 100644 index 00000000..585cf188 --- /dev/null +++ b/man/6/users @@ -0,0 +1,73 @@ +.TH USERS 6 +.SH NAME +users \- kfs file server user list format +.SH DESCRIPTION +The permanent file server +.IR kfs (4) +maintains a private list of users +and groups, in +.B /adm/users +by convention. +Each line in the file has the format +.IP +.IB num : name : leader :\fImembers\fP +.PP +where +.I num +is a decimal integer, +.I name +and +.I leader +are printable strings excluding the characters +.LR ? , +.LR = , +.LR + , +.LR - , +.LR / , +and +.LR : , +and +.I members +is a comma-separated list of such strings. +Such a line defines a user and a group with the given +.IR name ; +the group has a group leader given by +.I leader +and group members given by the user names in +.IR members . +The +.I leader +field may be empty, +in which case any group member is a group leader. +The +.I members +field may be empty. +.PP +Lines beginning with +.L # +are ignored. +.PP +The +.I num +in a line is a number used internally by a file server; +there should be no duplicate +.IR num s +in the file. +A negative +.I num +is special: a user with a negative +.I num +cannot attach to the file server. +The file +.B /adm/users +itself is owned by user +.IR adm , +having a negative +.IR num , +and write protected to others, +so it can only be changed via console commands. +.SH "SEE ALSO" +.IR kfs (4), +.IR intro (5), +.IR stat (5), +.IR kfscmd (8) diff --git a/man/6/utf b/man/6/utf new file mode 100644 index 00000000..0e7f04d3 --- /dev/null +++ b/man/6/utf @@ -0,0 +1,84 @@ +.TH UTF 6 +.SH NAME +UTF, Unicode, ASCII \- character set and format +.SH DESCRIPTION +The Inferno character set and representation are +based on the Unicode Standard and on the ISO multibyte +.SM UTF-8 +encoding (Universal Character +Set Transformation Format, 8 bits wide). +The Unicode Standard represents its characters in 16 +bits; +.SM UTF-8 +represents such +values in an 8-bit byte stream. +Throughout this manual, +.SM UTF-8 +is shortened to +.SM UTF. +.PP +Internally, programs store individual Unicode characters as 16-bit values. +However, any external manifestation of textual information, +in files or at the interface between programs, uses the +machine-independent, byte-stream encoding called +.SM UTF. +.PP +.SM UTF +is designed so the 7-bit +.SM ASCII +set (values hexadecimal 00 to 7F), +appear only as themselves +in the encoding. +Characters with values above 7F appear as sequences of two or more +bytes with values only from 80 to FF. +.PP +The +.SM UTF +encoding of the Unicode Standard is backward compatible with +.SM ASCII\c +: Inferno programs handle +.SM ASCII +text, as well as uninterpreted byte streams, without special arrangement. +However, programs that perform semantic processing on +characters must convert from +.SM UTF +to Unicode +in order to work properly with non-\c +.SM ASCII +input. +Normally, all necessary conversions are done by the Limbo compiler +and execution environment, but sometimes more is necessary, such +as when a program receives +.SM UTF +input one byte at a time; +see +.IR sys-byte2char (2) +for routines to handle such processing. +.PP +Letting numbers be binary, +a Unicode character x +is converted to a multibyte +.SM UTF +sequence +as follows: +.EX +01. x in [00000000.0bbbbbbb] \(-> 0bbbbbbb +10. x in [00000bbb.bbbbbbbb] \(-> 110bbbbb, 10bbbbbb +11. x in [bbbbbbbb.bbbbbbbb] \(-> 1110bbbb, 10bbbbbb, 10bbbbbb +.EE +.PP +Conversion 01 provides a one-byte sequence that spans the +.SM ASCII +character set in a compatible way. +Conversions 10 and 11 represent higher-valued characters +as sequences of two or three bytes with the high bit set. +Inferno does not support the 4-, 5-, and 6-byte sequences proposed by X-Open. +When there are multiple ways to encode a value, for example rune 0, +the shortest encoding is used. +.PP +In the inverse mapping, +any sequence except those described above +is incorrect and is converted to the Unicode value of hexadecimal 0080. +.SH "SEE ALSO" +.IR sys-byte2char (2), +.IR "The Unicode Standard" . diff --git a/man/7/0intro b/man/7/0intro new file mode 100644 index 00000000..5bea6760 --- /dev/null +++ b/man/7/0intro @@ -0,0 +1,6 @@ +.TH INTRO 7 +.SH NAME +intro \- introduction to databases +.SH DESCRIPTION +This manual section describes databases available on Inferno +and the commands and modules that access them. diff --git a/man/7/INDEX b/man/7/INDEX new file mode 100644 index 00000000..0fcedcaf --- /dev/null +++ b/man/7/INDEX @@ -0,0 +1,3 @@ +intro 0intro +db db +dbsrv dbsrv diff --git a/man/7/db b/man/7/db new file mode 100644 index 00000000..99ce1984 --- /dev/null +++ b/man/7/db @@ -0,0 +1,187 @@ +.TH DB 7 +.SH NAME +DB \- database support +.SH SYNOPSIS +.EX +include "security.m"; # need Auth for algorithm names +include "db.m"; +db := load DB DB->PATH; + +DB_Handle: adt { + SQLOpen: fn(oldh: self ref DB_Handle): (int, ref DB_Handle); + SQLClose: fn(dbh: self ref DB_Handle): int; + SQL: fn(handle: self ref DB_Handle, command: string): + (int, string); + columns: fn(handle: self ref DB_Handle): int; + nextRow: fn(handle: self ref DB_Handle): int; + read: fn(handle: self ref DB_Handle, column: int): + (int, array of byte); + write: fn(handle: self ref DB_Handle, param: int, + fld: array of byte): int + columnTitle: fn(handle: self ref DB_Handle, + column: int): string; + errmsg: fn(handle: self ref DB_Handle): string; + + datafd: ref Sys->FD; + sqlconn: int; + sqlstream: int; + lock: chan of int; +}; + +connect: fn(addr, alg: string): (ref Sys->FD, string); +dbopen: fn(fd: ref Sys->FD, username, password, dbname: string): + (ref DB_Handle, list of string); +open: fn(addr, username, password, dbname: string): + (ref DB_Handle, list of string); +.EE +.SH DESCRIPTION +.B DB +allows Limbo programs to connect to data base management systems +that support an ODBC interface. +.PP +.IR Dbsrv (7) +must be running (usually in a hosted +.IR emu (1)) +to service database requests. +.PP +If security features will be used in conjunction with +.BR DB , +the +.B Auth +module definitions (see +.IR security-auth (2)) +from +.B security.m +must be included. +.PP +If authentication is in use, +.B DB +will use the certificate in the file +.IP +.BI /usr/ user /keyring/ net ! machine +.PP +if that file exists. Otherwise, +.I db +will attempt to find a certificate in the file +.IP +.BI /usr/ user /keyring/default . +.PP +.B Connect +establishes a connection to the +.I dbsrv +at +.IR addr . +.I Addr +has the form +.IB machine ! service. +.I Machine +is a symbolic or numeric network address, and +.I service +is a service or port on that machine. +.I Dbsrv +starts a corresponding +.I infdb +process. After some negotiation, +.I infdb +will take the appropriate authentication, digesting, and decryption actions, based on the +.I alg +requested by the client. +If successful, +.B connect +will return a file descriptor required by +.BR dbopen . +.PP +.B Dbopen +initiates a session with a database +.IR dbname , +passing +.I username +and +.I password +down the +.I fd +returned by +.BR connect . +.B Dbopen +returns a reference to an instance of +.B DB_Handle +and an error string, which is nil on success. +On error, the reference is nil, but the string contains a diagnostic. +.B Dbopen +implicitly opens an initial SQL stream via +.BR SQLOpen . +.PP +.B Open +returns the result of a +.B connect +followed (if successful) by a +.BR dbopen . +.TP +.IB oh .SQLOpen +Creates a new +.B DB_Handle +and opens a new SQL stream with which requests can be associated. The new handle shares the connection and transaction context with +.IR oh . +Other characteristics such as the current SQL command, the result set, and cursor position are independent, +which allows the manipulation and interaction of many SQL statements within a transaction. +It returns zero on success, non-zero on error. +.TP +.IB h .SQLClose +Closes the SQL stream opened by +.BR SQLOpen . +Closing all SQL streams associated with a connection causes the connection to be closed. +.TP +.IB h .SQL( command ) +Sends the SQL statement +.I command +to the database. If the call fails, the first element of the returned tuple is non-zero and the second is an error message. +.TP +.IB h .columns() +Returns the number of columns in the result set of the previous SQL select command sent to the database. A returned value of 0 indicates there was a problem with the previous command, or there was no previous select command. +.TP +.IB h .nextRow() +Advances the current row, then returns the current row number of the selection results. A return value of 0 indicates there are no more rows; a negative value is returned in case of an error. The initial current row is 0 following a select, so +.B nextRow +must be called before any data is read. +.TP +.IB h .read( c ) +Returns the data of column +.I c +of the current row. If +.I c +is out of range, there is no current row, or some other error occurred, the first element of the returned tuple will be negative, and the byte array (sic) will contain an error message. Otherwise, it will be the number of bytes in the field requested. This could be greater than the length of the returned array, if the DB module could not allocate enough memory to contain the entire field. In this case the returned array contains the initial portion of the field. +.TP +.IB h .write( p , data ) +.B Write +sends data for a binary field to the server, +in anticipation of a subsequent SQL `update request with placeholders'. +.I Data +is an array of bytes containing the data for placeholder +.I p +(counting from 1). +All binary fields should be set by +.B write +before the SQL request is sent to the server +with +.BR SQL . +It returns the number of bytes saved for the field, or -1 on failure. +.TP +.IB h .columnTitle( n ) +.B ColumnTitle +returns the title of column +.IR n . +It returns nil if +.I n +is out of range. +.TP +.IB h .errmsg() +Returns the error message associated with the failure of a previous +.BR columns , +.BR nextRow , +.B columnTitle +or +.BR read . +.SH SOURCE +.B /appl/lib/db.b +.SH "SEE ALSO" +.IR svc (8) diff --git a/man/7/dbsrv b/man/7/dbsrv new file mode 100644 index 00000000..874a2cf2 --- /dev/null +++ b/man/7/dbsrv @@ -0,0 +1,67 @@ +.TH DBSRV 7 emu +.SH NAME +dbsrv \- ODBC database server +.SH SYNOPSIS +.B lib/dbsrv +.I alg +\&... +.SH DESCRIPTION +.I Dbsrv +is normally configured to be run by +.IR svc (8) +on a machine that acts as database server, +for access through the module +.IR db (7). +.PP +The incoming call is authenticated by +.IR security-auth (2). +After successful authorisation, the client can request that a digest and/or encryption +algorithm be applied to protect the data exchanged with the server. +Each +.I alg +names a digest or encryption algorithm that the server will allow +the client to use, +in any form accepted by +.IR ssl (3); +the special name +.B none +means that +.I ssl +need not be used. +.PP +The implementation of +.I dbsrv +relies on a program external to Inferno, +.BR infdb , +which translates between the +.IR db (7) +internal format for requests, and data base access calls on the host. +.I Dbsrv +invokes +.B infdb +using the +.IR cmd (3) +device. +Currently +.B infdb +is implemented only under Windows/NT, giving +access via ODBC to a Microsoft Access data base. +.SH FILES +.TF /usr/user/keyring/default +.TP +.B /cmd +host command execution +.TP +.B /Nt/386/bin/infdb.exe +Windows executable for ODBC interface +.TP +.BI /usr/ user /keyring/default +server's authentication data when +.IR svc (8) +run as +.I user +.SH SOURCE +.B /appl/lib/dbsrv.b +.SH SEE ALSO +.IR db (7), +.IR svc (8) diff --git a/man/8/0intro b/man/8/0intro new file mode 100644 index 00000000..7ab31322 --- /dev/null +++ b/man/8/0intro @@ -0,0 +1,13 @@ +.TH INTRO 8 +.SH NAME +intro \- introduction to system configuration and administration, and system utilities +.SH DESCRIPTION +This section of the manual describes commands that provide +system configuration and support system administration. +There are commands to start and shut down native and hosted environments, +administer authentication, +build file system images, +initialise disks and flash memory, and +configure devices. +It also documents the commands and interfaces to service +programs, including those providing services on the network. diff --git a/man/8/INDEX b/man/8/INDEX new file mode 100644 index 00000000..c520eacb --- /dev/null +++ b/man/8/INDEX @@ -0,0 +1,59 @@ +intro 0intro +applylog applylog +updatelog applylog +bootpd bootpd +tftpd bootpd +changelogin changelogin +convpasswd changelogin +collabsrv collabsrv +create create +info create +inst create +createsignerkey createsignerkey +cs cs +csquery cs +dhcp dhcp +dns dns +dnsquery dns +fpgaload fpgaload +ftl ftl +getauthinfo getauthinfo +echo httpd +httpd httpd +stats httpd +emuinit init +init init +osinit init +kfscmd kfscmd +logind logind +mangaload mangaload +manufacture manufacture +mkext mkfs +mkfs mkfs +ping ping +plumber plumber +fdisk prep +format prep +mbr prep +prep prep +rdbgsrv rdbgsrv +register register +rip rip +rstyxd rstyxd +styxd rstyxd +shutdown shutdown +countersigner signer +signer signer +verify signer +sntp sntp +srv srv +styxchat styxchat +styxmon styxmon +auth svc +net svc +registry svc +rstyx svc +styx svc +svc svc +touchcal touchcal +virgild virgild diff --git a/man/8/applylog b/man/8/applylog new file mode 100644 index 00000000..19f9c6fe --- /dev/null +++ b/man/8/applylog @@ -0,0 +1,237 @@ +.TH APPLYLOG 8 +.SH NAME +applylog, updatelog \- log-based updates +.SH SYNOPSIS +.B install/applylog +[ +.B -c +] [ +.B -e +] [ +.B -n +] [ +.B -s +] [ +.B -u +] [ +.B -g +] [ +.B -v +] [ +.BI -T " timefile" +] +.I clientlog +.I clientroot +.I serverroot +[ +.I path +\&... +] +.PP +.B install/updatelog +[ +.BI -p " proto" +] [ +.BI -r " root" +] [ +.BI -t " now gen" +] [ +.B -c +] [ +.BI -x " path" +] +.I log +[ +.I path +\&... +] +.SH DESCRIPTION +These two commands allow distribution of updates (eg, to the Inferno tree) +based on a log of changes since a previous update. +Notionally, one +.I server +system is the primary for a set of files, and one or more +.I client +systems maintain replicas of that set, +although in some applications server and client might be the same machine. +.PP +.I Applylog +is run on a client, to update the file tree rooted at +.IR clientroot . +The server's version of the tree is rooted at +.I serverroot +on the client, +typically by being mounted there (see +.IR bind (1)). +.I Applylog +takes the current state of the replica from the entries in +.IR clientlog , +and applies a set of changes represented by log entries read from its standard input. +Those entries are provided by the server. +Each change is examined to see whether the file to which it applies is in the expected state. +If so, the change is applied without comment; otherwise, there is a conflict caused by +a local change to the replica tree independently from the primary. +By default, +.I applylog +diagnoses the conflict and does not apply the change. +It accepts the following options: +.TP +.B -c +Resolve inconsistencies in favour of the client: leave the replica as is. +.TP +.B -e +Exit with an error status on any error, including inconsistency between client and server. +.TP +.B -n +Print on standard output a list of changes that would be made, and list any conflicts, +but do not change the tree or update the log. +.TP +.B -s +Resolve inconsistencies in favour of the server: make the replica match the server's state. +.TP +.B -u +Make file ownership in the replica match that on the server. +.TP +.B -g +Make group ownership in the replica match that on the server. +.TP +.B -v +Print a summary of each log entry as it is examined. +.TP +.BI -T " timefile" +Read a time and sequence number from +.I timefile +and apply only log entries with stamps greater than that. +On successful completion, if the +.B -n +option is not given, update the +.I timefile +with the stamp of the last log entry processed successfully. +.PP +The scope of an update in a tree can be restricted to a particular set of +.I paths +listed on the command line. +They should all be relative path names. +.PP +.I Updatelog +is run on a server to produce a sequence of log entries representing changes +to the primary tree since a previous log was produced. +It can also be run on a client to see how its replica state differs from that recorded in a log. +It accepts the following options: +.TP +.BI -p " proto" +Use +.I proto +as the prototype for the file system, as described by +.IR proto (6) +(default: +.BR /lib/proto/all ). +.TP +.BI -r " root" +The replica is rooted at +.I root +(default: +the current directory, +.BR . ). +.TP +.BI -t " now gen" +Make log entries use time +.I now +and initial sequence number +.IR gen . +The defaults are the current time and 0. +.TP +.B -c +Produce output only for content and metadata changes, not additions or deletions. +.TP +.BI -x " path" +Exclude +.I path +and its subtrees from consideration. +.PP +By default, +.I updatelog +produces log entries describing changes, additions and deletions to all files in +.I root +but the scope can be limited by giving a different +.IR proto , +explicitly listing trees to consider as +.I paths +on the command line, and +by giving one or more +.B -x +options to exclude particular paths, +in any desired combination. +.SS Log file format +.PP +A log file is a text file with one line representing each change to the tree. +Each line has the form: +.IP +.I "time gen verb path serverpath mode uid gid mtime length" +[ +.I sum +\&... +] +.PP +where: +.RS +.TP +.I "time, gen" +are decimal numbers that order the sequence of requests: +.I time +is typically the time in seconds of the epoch at which the entry was made; +.I gen +is a monotonically increasing sequence number +.PD +.TP +.I verb +is an action: +.RS +.PD0 +.TP +.B a +add file +.I path +.TP +.B c +change the contents of file +.I path +.TP +.B d +delete +.I path +.TP +.B m +change the metadata (permissions, ownership) for +.I path +.RE +.PD +.TP +.I path +the name of the file on the client +.TP +.I serverpath +the name of the file on the server with the contents for +.IR path , +or simply +.L - +when the server and client file names are the same +.TP +.I "mode, uid, gid, length, mtime" +the resulting metadata (except for +.B d +where the metadata is that for the file to be deleted) +.TP +.I sum +is the MD5 checksum of the file's contents +.RE +.SH SOURCE +.B /appl/cmd/install/applylog.b +.br +.B /appl/cmd/install/logs.b +.br +.B /appl/cmd/install/updatelog.b +.SH SEE ALSO +.IR fs (1), +.IR kfs (4), +.IR proto (6) diff --git a/man/8/bootpd b/man/8/bootpd new file mode 100644 index 00000000..47e74c09 --- /dev/null +++ b/man/8/bootpd @@ -0,0 +1,163 @@ +.TH BOOTPD 8 +.SH NAME +bootpd, tftpd \- Internet booting +.SH SYNOPSIS +.B ip/bootpd +[ +.B -dsq +] [ +.BI -f " dbfile" +] [ +.BI -x " network" +] +.PP +.B ip/tftpd +.RB [ -dr ] +[ +.BI -p " port" +] [ +.BI -h " homedir" +] [ +.BI -x " network" +] +.SH DESCRIPTION +.I Bootpd +listens for Internet BOOTP requests and broadcasts a suitable reply +to each request that matches an entry +in the network database +.I dbfile +(default: +.BR /lib/ndb/local ). +The BOOTP protocol is typically used by a remote system as it boots, to obtain its Internet address +and other configuration data such as the addresses of servers +(see for instance the +.B bootp +file in +.IR ip (3)). +.PP +.I Dbfile +is in +.IR ndb (6) +format, as interpreted by +.IR attrdb (2). +.I Bootpd +uses the following attributes: +.TF ipmask +.TP +.B auth +authentication server name or address +.TP +.B bootf +name of the client's boot file +.TP +.B dom +fully-qualified domain name +.TP +.B ether +hardware (MAC) address; only Ethernet is supported +.TP +.B fs +file server name or address +.TP +.B ip +client's Internet address +.TP +.B ipgw +gateway from client's subnet (IP address) +.TP +.B ipmask +subnet mask +.TP +.B ipnet +network name +.TP +.B sys +system name (client identifier) +.PD +.PP +.I Bootpd +replies to an incoming request only if its hardware address matches the value of the +.B ether +attribute of an entry in +.I dbfile . +If found, the reply contains all the other requested data that is contained in the entry; +if an item is missing, it is sought in the entries for successively higher networks (described by +.B ipnet +entries) that contain the requesting system's address. +The `vendor specific' part of the reply conveys the file server and authentication server addresses +to Inferno clients. +Before answering a request, +.I bootpd +rereads +.I dbfile +if it has changed since last read. +.PP +The +.B -s +option causes +.I bootpd +to sniff the network for BOOTP traffic and print it, but not reply. +The +.B -d +option prints debugging information; giving it twice prints even more. +The +.B -x +option tells +.I bootpd +to use a +.I network +other than +.BR /net . +Currently +.I bootpd +prints a message to standard output each time it replies; the +.B -q +option keeps it quiet. +.PP +.I Tftpd +is mainly used to send kernels and configuration files to machines booting from the network. +It listens for incoming TFTP file transfer requests on the given UDP +.I port +(default: 69) and responds by sending or receiving a file as requested. +.I Homedir +is the current directory for transfers, +.B /services/tftpd +by default, +and requests that use a relative path name refer to files in or below that directory. +If the +.B -r +option is given, absolute path names are also restricted to +.IR homedir . +.I Tftpd +runs as +.B none +(the least privileged user) and can send only files with general read permission, or write files +that are generally writable. +Normally +.I tftpd +uses the network directory +.BR /net , +but another can be specified with the +.B -x +option. +The +.B -d +option prints a debugging trace on standard output. +.SH FILES +.TF /services/tftpd/xxxxx +.TP +.B /lib/ndb/local +network configuration file +.TP +.B /services/tftpd +default directory for relative pathnames +.SH SOURCE +.B /appl/cmd/ip/bootpd.b +.br +.B /appl/cmd/ip/tftpd.b +.SH SEE ALSO +.IR attrdb (2), +.IR ip (3), +.IR ndb (6), +.IR cs (8), +.IR dns (8) diff --git a/man/8/changelogin b/man/8/changelogin new file mode 100644 index 00000000..57e89145 --- /dev/null +++ b/man/8/changelogin @@ -0,0 +1,113 @@ +.TH CHANGELOGIN 8 +.SH NAME +changelogin, convpasswd \- create/update the password file +.SH SYNOPSIS +.BI auth/changelogin " name" +.PP +.B auth/convpasswd +[ +.B -f +] [ +.B -v +] [ +.BI -m " keydir" +] +[ +.I pwfile +] +.SH DESCRIPTION +.I Changelogin +helps to administer a password file +.B /keydb/keys +(see +.IR keys (6)), +a requirement of `signer' servers +(see +.IR logind (8), +.IR signer (8), +and +.B svc/auth +in +.IR svc (8)). +.I Changelogin +can only be used on the signing host itself, +after +.IR keyfs (4) +has been started (eg, by +.BR svc/auth ) +to make the entries visible in the name space. +.PP +If a password file entry for +.I name +exists, it is modified; otherwise, a new entry is created. +The user is prompted for the following items: +.TP +password +A string at least 8 characters in length. The SHA-1 digest of the entered string is stored in the password file. See +.IR keyring-sha1 (2). +By default, the password for an existing entry is unchanged. +.TP +expiration date +An expiration time in the format +.IR DDMMYYYY . +The user input is checked for valid day, month, and year; moreover, the new date must be later than the current time. +By default, the current value, if any, is unchanged for an existing entry and one year from the current time for a new entry. +.ig +.TP +free form info +Arbitrary administrative information. +.. +.PP +Note that the +password expiration date is also used as the default expiration date +for any certificate later produced; +see +.IR getauthinfo (8). +.PP +.I Convpasswd +converts a Third Edition +password file +to the +.IR keys (6) +file used by the current Edition of the system. +It reads password entries from +.IR pwfile , +.B /keydb/password +by default, +and writes corresponding entries into +a name space served by +.IR keyfs (4), +mounted at +.IR keydir , +.B /mnt/keys +by default. +It copies passwords and expiry times. +The `free form' administrative data is discarded. +If +.I keydir +already has got an entry for a user, it is left as-is, unless +the +.B -f +option is given to force +.I convpasswd +to copy across the entry in +.I pwfile . +The +.B -v +option causes +.I convpasswd +to print each user name after it successfully installs it. +.SH FILES +.TF /keydb/keys +.TP +.B /keydb/keys +.SH SOURCE +.B /appl/cmd/auth/changelogin.b +.SH "SEE ALSO" +.IR passwd (1), +.IR keyfs (4), +.IR keysrv (4), +.IR keys (6), +.IR logind (8), +.IR signer (8), +.IR svc (8) diff --git a/man/8/collabsrv b/man/8/collabsrv new file mode 100644 index 00000000..43939187 --- /dev/null +++ b/man/8/collabsrv @@ -0,0 +1,334 @@ +.TH COLLABSRV 8 +.SH NAME +collabsrv \- multi-user collaboration +.SH SYNOPSIS +.B collabsrv/collabsrv +[ +.BI "-f " keyfile +] [ +.BI "-n " netaddress +] [ +.I dir +] +.PP +.B collabsrv/servers/chatsrv +.PP +.B collabsrv/servers/mpx +.PP +.B collabsrv/servers/wbsrv +.SH DESCRIPTION +.I Collabsrv +listens on network address +.I netaddress +(default: +.BR tcp!*!9999 ) +for incoming requests to attach to services +it offers. +The services are defined by the contents of directory +.IR dir +(default: +.BR /services/collab ). +.I Collabsrv +serves an authenticated Styx connection that exports the contents of +.IB dir /export +(default: +.BR /services/collab/export ). +The exported name space can contain directories from a shared file server, +but it will also contain a directory +.B services +giving access to any collaborative activity services that have been configured. +.PP +The +.B services +directory contains a single +.B ctl +file and a set of subdirectories, numbered +.BR 0 , +.BR 1 +and so on. +The +.B ctl +is used to activate and access services. +Each service instance is identified by a name; +clients connect to a given instance by presenting its name. +Each directory represents one instance of a service. +Each service instance corresponds to a name space; the clients +all share that name space. +The name space is determined by the service. +.PP +A client wishing to make use of the services must first +.IR sys-dial (2) +to connect to +.IR collabsrv, +and authenticate and mount the resulting Styx connection. +It can do so using the +.I mount +command +(see +.IR bind (1)), +or by +using +.IR security-auth (2) +and +.B Sys->mount +(see +.IR sys-bind (2)). +Normally, this is done by +.IR collab (1). +.PP +A new connection to a particular service is requested by opening the +.B ctl +file for reading and writing, +writing a service request to it, and reading back +the number of the directory corresponding to the requested service. +A service request written to +.B ctl +is text of the following form: +.IP +.DS +.I "service id" +.DE +.PP +where +.I service +is a string specifying the type of service (eg, +.BR chat ) +and +.I id +is a string identifying the instance. +The server does not interpret +.IR id ; +it is up to the clients to agree a naming convention (often +using the name of a shared file as an +.IR id ). +.I Collabsrv +will connect to instance +.I id +of the requested +.I service +type +if one is already running, or start one if necessary; +the write request returns an error if the service cannot be started. +Following a successful write to +.BR ctl , +a read will return the number of the service +directory containing the client's private connection to that service instance. +Closing the +.B ctl +file disconnects from the service. +.PP +Available services are defined by a configuration file +.BR /services/collab/services.cfg , +which contains a sequence of configuration +entries of the following form: +.IP +.EX +.I service +.br +\f5 path=\fIdisfile\fP +.EE +.PP +where +.I service +is the name presented in a service request, and +.I disfile +names a Dis file implementing that service; +path names are interpreted relative to +.BR /services/collab , +but usually refer to files in +.BR /dis/collabsrv/servers . +.PP +Each +.I collabsrv +service is represented by a name space peculiar to that service. +The interface to the service is therefore implemented by a service-specific Styx server +.RI ( disfile +in the configuration file). +Current services are described below. +.SS "Chat" +.I Chatsrv +provides a simple service for the exchange of text messages. +It serves a name space containing two files. +The files together represent a single messaging group: +.TF users +.TP +.B users +A read-only file that lists the user names of the current members of the group, one per line. +The version number of the file's Qid +(see +.IR sys-stat (2)) +is incremented each time a client arrives or leaves. +.TP +.B msgs +.RS +A client connects to the messaging group by opening this file. +A message is sent to the group by writing to the file. +Each read returns the next unread message, prefixed by the name of the sender, +or +.B <you> +for a message sent by the current client. +A client sees no messages sent before it connects. +Messages are delivered in the same order to all clients; clients receive their own messages. +Two special messages are generated by the server: +.IP +.EX ++++ \fIname\fP has arrived +--- \fIname\fP has left +.EE +.PP +as clients come and go. +.RE +.SS "Multiplexor" +.I Mpx +offers a general fan-out/fan-in multiplexing service for a tree of processes, +with one controlling or root process at the root of the tree, +and a set of client processes at the leaves of the tree. +It serves three files: +.TF users +.TP +.B root +An exclusive-use file read and written by the root process +to communicate with the leaf processes. +.TP +.B leaf +Client processes read and write this file to communicate with the +root process (each +.B open +of +.B leaf +is independent). +It cannot be opened until a process has opened +.BR root . +After +.B root +has been closed, and any remaining messages on +.B leaf +have been read, +subsequent reads will return zero bytes (end-of-file). +.TP +.B users +A read-only text file that lists the user names of processes that currently have +.B leaf +open. +There is one line per leaf, containing a unique numeric ID for the leaf, a space, and then the users's name. +.PP +A message written to +.B root +is replicated on all instances of +.B leaf +that are currently open. +A message written to any instance of +.B leaf +will be read by the process reading +.BR root . +Data written to both +.B root +and +.B leaf +has a prefix added to identify the sender, causing messages +to have the following format: +.IP +.EX +.I "seq clientid op name data" +.EE +.PP +where +.I seq +is a unique message sequence number; +.I clientid +is a unique number identifying the process amongst currently connected clients, +with 0 identifying the root process; +.I op +is a single character giving the message type (see below); +.I name +is the sending process's user name; and +.I data +is the data written by the process, which can be text or binary (the message header is always text). +.I Mpx +also generates messages as root and leaf processes arrive and leave. +These are identified by +.IR op . +The various +.I op +values and the direction in which they can occur are listed below: +.TP +.B a +New leaf process has arrived (leaf to root) +.TP +.B M +Message from root process (root to leaf) +.TP +.B m +Message from leaf process (leaf to root) +.TP +.B L +Root process has left (root to leaf) +.TP +.B l +Leaf process has left (leaf to root) +.PP +Messages are only ever sent from the root to all leaves, or from a leaf to the root, +never from leaf to leaf; the root process could of course rebroadcast a message from a leaf. +The multiplexor service is used to implement +a real-time poll +(see +.B poll +and +.B poller +in +.IR collab-clients (1)), +but could be used for several other services, such as auctions. +.SS "Whiteboard" +.I Wbsrv +offers a service for sharing a simple line drawing. +It serves two files: +.TP +.B wb.bit +A read-only file containing an uncompressed +.IR image (6) +with the current state of the drawing. +.TP +.B strokes +This file is read and written to exchange strokes with other clients. +A stroke has the following representation: +.RS +.IP +.IR "colour width x0 y0 x1 y1 " ... +.PP +where all values are space-separated decimal numbers: +.I colour +is an index into the +.IR rgbv (6) +colour map; +.I width +is the width of the line in pixels, and +the sequence of coordinate pairs defines the connected line segments to draw. +A stroke is transmitted from one client to all others by writing a stroke description to the file in a single write. +Each read returns a description of a stroke made by another client. +.RE +.PP +A whiteboard client should read the +.B wb.bit +file to obtain its image, then read the +.B strokes +file for instructions to keep it up to date. +.SH FILES +.TF /services/collab/export/services +.TP +.B /services/collab/export/services +active service directory +.TP +.B /services/collab/services.cfg +maps service names to modules +.TP +.B /dis/collabsrv/servers +service implementation modules +.SH SOURCE +.B /appl/collabsrv +.br +.B /appl/collabsrv/servers +.br +.B /appl/collabsrv/lib +.SH SEE ALSO +.IR collab (1), +.IR collab-clients (1) diff --git a/man/8/create b/man/8/create new file mode 100644 index 00000000..7615d481 --- /dev/null +++ b/man/8/create @@ -0,0 +1,204 @@ +.TH CREATE 8 +.SH NAME +create, inst, info \- archive or update a file system +.SH SYNOPSIS +.B install/create +.RB [ -u ] +.RB [ -U ] +.RB [ -v ] +.RB [ -x ] +.RB [ -o ] +.RB [ -p +.IR proto ] +.RB [ -r +.IR root ] +.RB [ -s +.IR source ] +.RB [ -N +.IR uid ] +.RB [ -G +.IR gid ] +.RB [ -d +.IR description ] +.I name +.PP +.B install/inst +.RB [ -c ] +.RB [ -h ] +.RB [ -t ] +.RB [ -u ] +.RB [ -v ] +.RB [ -F ] +.RB [ -r +.IR root ] +.I name +.RI [ prefix +.IR ... ] +.PP +.B install/info +.RB [ -r ] +.I package +.SH DESCRIPTION +.I Create +copies files from the file tree +.I source +(default +.BR / ) +to an output file in archive format appropriate for a software distribution. The name of the output +file is the time that the archive was made. The latter includes wrap headers that describe +the distribution. +.I Name +is typically the name of the product or software package. The +.B -p +option specifies the prototype file +.I proto +to use to build the archive. +.PP +Each line of the +.I proto +file specifies a file to copy. +Indentation is significant, +with each level of indentation corresponding to a level in the file tree. +Fields within a line are separated by white space. +The first field is the last path element in the destination file tree. +The second field specifies the permissions. +The third field is the owner of the file, +and the fourth is the group owning the file. +The fifth field is the name of the file from which to copy; +this file is read from the current name space, +not the source file tree. +All fields except the first are optional. +.PP +Names beginning with a +.L $ +are expanded as environment variables. +If the first file specified in a directory is +.LR * , +all of the files in that directory are copied. +If the first file is +.LR % , +all of the non-directory files in that directory are copied. +If the first file is +.LR + , +all of the files are copied, and all subdirectories +are recursively copied. +.PP +Files in the source tree that are not specified in the +.I proto +file +are not placed in the archive. +.PP +The remaining options to +.I create +are: +.TP 10 +.B -u +Build an update distribution rather than a base distribution. In this case +.I name +should be the name of the previous archive file built for this product. Only files +that are out of date with respect to the latter are included in the archive. Files which +no longer exist will be marked for removal. +.TP +.B -U +Build an update package distribution instead. This is a hybrid of a base +distribution and an update distribution. +.TP +.B -v +Print out the files as they go into the archive. +.TP +.B -x +Print out the files that would go into the archive but do not actually archive them. +.TP +.B -o +Copy the archive file to the standard output rather than putting it in a date stamped output file. +.TP +.B -r root +Specifies the location of any previous archives for this product. +.TP +.B -N uid +Give all the files in the archive the user id specified. +.TP +.B -G gid +Give all the files in the archive the group id specified, +.TP +.B -d description +Give a description of the distribution. This is placed in the wrap header files. +.PD +.PP +.I Inst +installs archive files made by +.I create . +.I Name +is the name of the archive file to install. Any further names after this are treated as path +prefixes and only files in the archive that have one of the given prefixes are actually installed. +The option to +.I inst +are : +.TP 10 +.B -c +Carry on regardless when errors occur. The default behaviour is to exit on encountering an error. +.TP +.B -h +Only print the names of the files in the archive. +.TP +.B -t +Give each installed file the same date stamp as indicated by that file's entry in the archive. +.TP +.B -u +Give each installed file the same date stamp, user id and group id as shown in the archive. +.TP +.B -v +Print out the names of directories as they are installed. +.TP +.B -F +Force the installation of the files in the archive even when the corresponding local file +has apparently been locally updated or already exists. +.TP +.B -r root +Specifies the root of destination tree where the files will be copied to. +.PD +.PP +.I Info +prints information about either a specific file produced by +.I create +or about all files making up a package in the +.B /wrap +tree. In particular base packages, +full updates and partial updates are distinguished. The +.B -r +option +specifies the the root of the tree to look in. This defaults to +.BR / . +.SH EXAMPLES +.PP +Make an archive to establish a new base package for an Inferno distribution: +.IP +.EX +install/create -o -N inferno -G inf -d InfernoOS -p PROTO Inferno.1.0 > inferno.arch +.EE +.PP +Here the name of the product is Inferno.1.0. +.PP +Install that archive on another machine: +.IP +.EX +install/inst -r / inferno.arch +.EE +.PP +Here the product is placed in / with the user and group ids being set to those of the +person doing the installation. +.SH SOURCE +.B /appl/cmd/install/arch.b +.br +.B /appl/cmd/install/create.b +.br +.B /appl/cmd/install/info.b +.br +.B /appl/cmd/install/inst.b +.br +.B /appl/cmd/install/proto.b +.br +.B /appl/cmd/install/wrap.b +.SH "SEE ALSO" +.IR archfs (4) + diff --git a/man/8/createsignerkey b/man/8/createsignerkey new file mode 100644 index 00000000..b40a0f46 --- /dev/null +++ b/man/8/createsignerkey @@ -0,0 +1,67 @@ +.TH CREATESIGNERKEY 8 +.SH NAME +createsignerkey \- create signer key on authentication server +.SH SYNOPSIS +.B auth/createsignerkey +[ +.BI -a " alg" +] [ +.BI -f " keyfile" +] [ +.BI -e " expiry" +] [ +.BI -b " bitsize" +] +.I name +.SH DESCRIPTION +.I Createsignerkey +creates public and private keys that are used by a server acting as `signer' to generate certificates for users. +.I Name +appears as signer in each certificate. +The +.I expiry +date has the form +.IR ddmmyyyy , +is converted to seconds since the epoch +(see +.IR daytime (2)) +and stored in the +.IR keyfile ; +by default the server's certificate never expires. +.PP +The key will be +.I bitsize +long (default: 512 bits) with a minimum of 32 bits and a maximum of 4096 bits. +.I Keyfile +is the file in which the server stores its keys; +the default is +.BR /keydb/signerkey , +and many authentication programs such as +.IR logind (8) +by default expect to find their server key there. +Creating a signer's default key afresh typically invalidates all certificates previously issued by that signer, +because their signatures will not verify. +The mode of the +.I keyfile +should be set to be readable only by the user running +those programs. +.PP +The +.B -a +option specifies the signature algorithm. +Currently +.I alg +can be either +.B elgamal +or +.BR rsa . +RSA keys are now used by default. +.SH FILES +.B /keydb/signerkey +.SH SOURCE +.B /appl/cmd/auth/createsignerkey.b +.SH SEE ALSO +.IR security-auth (2), +.IR keyring-gensk (2), +.IR logind (8), +.IR signer (8) diff --git a/man/8/cs b/man/8/cs new file mode 100644 index 00000000..dbd12c0f --- /dev/null +++ b/man/8/cs @@ -0,0 +1,242 @@ +.TH CS 8 +.SH NAME +cs, csquery \- connection server +.SH SYNOPSYS +.B ndb/cs +[ +.BI -f " database" +] [ +.B -v +] [ +.BI -x " net" +] +.PP +.B ndb/csquery +[ +.B -x +.I net +] [ +.B -s +.I server +] [ +.I address +\&... ] +.SH DESCRIPTION +.I Cs +spawns a process that +serves a single file +.BR /net/cs , +in the current name space, +answering requests by client processes +to translate symbolic network and service names into +instructions for connecting to the given service. +It is normally accessed indirectly by calls to +.IR sys-dial (2). +.PP +The network data is taken from the network database files, +described in +.IR ndb (6). +By default, it is +.B /lib/ndb/local +but the +.B -f +option can specify a different one. +.PP +Each write to +.B /net/cs +makes a query, expressed in one of two forms. +The first form is a network address of the same form +as the +.I addr +parameter to +.IR dial : +.IB network ! netaddr ! service +where +.I service +and +.I network +are optional. +The write returns an error if the address cannot be translated. +Otherwise, the file offset should be reset to 0 using +.IR sys-seek (2) +and each subsequent read will return either +end-of-file (if there are no further translations), +or a single line containing a translation of the form: +.IP +.BI /net/ proto /clone " address" ! port +.PP +The first field is the name of the +.I clone +file for a network protocol or interface. +To make a connection or announce a service, open that file, and write the +text in the second field +preceded by +.B connect +or +.B announce +as required. +(All this activity is normally encapsulated in a call to +.IR sys-dial (2)). +.I Cs +produces a translation for each network and for each network address on which a symbolic +.I netaddr +is found. +When announcing a service, +.I netaddr +can be +.B * +to represent any local interface, and the resulting recipes read +from +.B /net/cs +will not include an +.IB address ! +part. +.PP +.I Cs +interprets a +.I netaddr +of the form +.BI $ server +specially: it looks for an attribute +.I server +in the database in the entry for the current host, then in the entry for +each network that contains it (if specified), and finally in a site-wide +entry labelled with the attribute +.BR infernosite . +If found, the value of the attribute replaces the +.I netaddr +before further translation. +.PP +In the second form of query, the text written contains space-separated attribute/value pairs: +.IP +.IB attr1 = val1 +[ +.IB attr2 = val2 +\& ... +] +.PP +.I Cs +looks for an +.IR ndb (6) +entry that contains attribute/value pairs matching those in the query. +Any value but +.I val1 +may be +.RB ` * ', +to signify that the entry must contain the given attribute but with any value. +As before, the write returns an error if no entry matches. +Otherwise, each subsequent read returns the whole of the next matching entry, in +.IR ndb (6) +form. +.PP +The file +.B /net/cs +persists until it is removed or unmounted from +.BR /net , +or the +.I cs +process is killed +(see +.IR kill (1)). +The +.B \-v +option causes +.I cs +to print each translation request and results (if any) on standard error. +The +.B -x +option gives an alternative mount point for +.IR cs , +when there is more than one network stack +(see +.IR ip (3)). +It causes it +.I cs +to serve +.IB net /cs +instead of +.BR /net/cs . +.PP +.I Cs +is normally started once, +after +.IR dns (8) +if used, but +before most other applications including +the various listeners described in +.IR svc (8). +If another instance of +.IR cs (8) +is started on the same mount point, the file it serves replaces the +earlier one if permissions allow. +(On Plan 9, Plan 9's native connection service will be used by default if Inferno's +.I cs +is not started.) +.PP +.I Csquery +queries the given +.I server +(default: +.BR /net/cs ) +for a translation of each +.I address +and prints the results, one per line. +If no +.I address +is given, +.I csquery +prompts for address(es) to translate which it reads from the standard input, +printing the results of each translation on the standard output. +The +.B -x +option gives an alternative mount point for +.IR cs , +when there is more than one network stack +(see +.IR ip (3)). +.PP +.IR Cs (8) +uses +.IR services (6) +to map protocol and service names to Internet port numbers. +Finally, if all else fails, it applies the built-in +.IR srv (2), +if available. +Consequently, entries in +.IR services (6) +and +.IR dns (6) +take precedence over the host's system-wide configuration. +(This is helpful for adding symbolic names for Inferno services +without requiring administrative privileges on the host system.) +.SH EXAMPLE +Check the translation of the symbolic name +.BR $signer : +.IP +.EX +ndb/csquery +> net!$signer!inflogin +/net/tcp/clone 200.1.1.67!6673 +.EE +.SH FILES +.TF /lib/ndb/inferno +.TP +.B #scs* +service directory +.TP +.B /net/cs +connection service +.TP +.B /net/dns +domain name service +.TP +.B /lib/ndb/local +map from symbolic service names to servers +.SH SOURCE +.B /appl/cmd/ndb/cs.b +.br +.B /appl/cmd/ndb/csquery.b +.SH "SEE ALSO" +.IR sys-dial (2), +.IR db (6), +.IR dns (8) diff --git a/man/8/dhcp b/man/8/dhcp new file mode 100644 index 00000000..ee64935f --- /dev/null +++ b/man/8/dhcp @@ -0,0 +1,117 @@ +.TH DHCP 8 +.SH NAME +dhcp \- configure network interface details using DHCP +.SH SYNOPSIS +.B ip/dhcp +[ +.B -bdmpr +] [ +.BI -g " gateway" +] [ +.BI -h " hostname" +] [ +.BI -x " net +] +.I ifcdir +[ +.I localip +[ +.I localmask +]] +.SH DESCRIPTION +.I Dhcp +uses the Dynamic Host Configuration Protocol (DHCP) to configure the +.IR ip (3) +interface represented by +.I ifcdir +(eg, +.BR /net/ipifc/1 ). +The interface must have a device already bound to it. +.I Dhcp +uses the MAC address of that device in its requests. +.PP +.I Dhcp +broadcasts a DHCP request for an address and various network parameters. +It takes the first acceptable offer, sets the interface to that address, and writes the address and +parameter values, in +.IR ndb (6) +format, to +.BR /net/ndb , +where +.IR cs (8), +.IR dns (8) +and others will find them. +If the address is provided with a limited lease, +.I dhcp +itself returns, but it leaves +a process in the background that periodically renews the lease (or requests a new address if the lease is not renewed). +.PP +If +.I localip +is given, +.I dhcp +attempts to reacquire that address. +If successful, it configures the interface with that address (and mask if supplied), +maintaining any lease as before. +If it cannot reacquire the address, it broadcasts a request for a new address, as above. +.PP +The options are: +.TP +.B -b +Use plain BOOTP without the DHCP options +.TP +.B -d +Enable debugging output on standard output +.TP +.BI -g " gateway" +Suggest +.I gateway +as the default gateway (the server might change it) +.TP +.BI -h " hostname" +Use +.I hostname +as the current host's name in DHCP messages +.TP +.B -m +Monitor the DHCP status and print a summary on standard output whenever it changes +.TP +.B -n +Do not configure the interface +.TP +.B -p +Print the resulting configuration on standard output +.TP +.B -r +Retry DHCP periodically until it succeeds +.TP +.BI -x " net" +Use mount point +.I net +to access the network, +and write the results to +.IB net /ndb +(default: +.BR /net ) +.PD +.SH EXAMPLE +Allocate a new interface, bind an ether device to it, and configure it with +.IR dhcp : +.IP +.EX +x=`{cat /net/ipifc/clone} +echo bind ether /net/ether0 >/net/ipifc/$x/ctl && +ip/dhcp /net/ipifc/$x +.EE +.SH SOURCE +.B /appl/cmd/ip/dhcp.b +.SH SEE ALSO +.IR ip (3), +.IR ndb (6), +.IR cs (8), +.IR dns (8) +.SH DIAGNOSTICS +.I Dhcp +returns an error status if it receives no acceptable reply, unless the +.B -r +option is given to force retries. diff --git a/man/8/dns b/man/8/dns new file mode 100644 index 00000000..a64a0172 --- /dev/null +++ b/man/8/dns @@ -0,0 +1,156 @@ +.TH DNS 8 +.SH NAME +dns, dnsquery \- domain name service +.SH SYNOPSIS +.B ndb/dns +[ +.BI -f " dnsfile" +] [ +.B -h +] [ +.B -r +] [ +.BI -x " net" +] +.PP +.B ndb/dnsquery +[ +.BI -x " net" +] [ +.I "address ..." +] +.SH DESCRIPTION +.I Dns +is an Internet Domain Name Service (DNS) resolver. +By default it serves a file +.BR /net/dns , +that clients such as +.IR cs (8) +write and read to retrieve network data associated with domain names and Internet addresses. +The +.B -f +option specifies the network database that contains the local DNS data (default: +.BR /lib/ndb/local ). +The +.B -x +option specifies an alternative mount point for the network (default: +.BR /net ). +When Inferno is running hosted, +.I dns +normally uses the host's own DNS resolver first (via +.IR srv (2)), +before searching the DNS itself; that way domain names can be +used in Inferno with minimal configuration. +The +.B -h +option stops +.I dns +from using the host data. +In the absence of local data, by default +.I dns +consults the external DNS directly using some bootstrap data, but if +.B -r +is specified and local resolvers are given in the configuration file, +.IR dns (6), +.I dns +will query them first for all addresses, before resorting to external DNS servers. +.PP +.I Dnsquery +queries the given +.I server +(default: +.BR /net/cs ) +for a translation of each +.I address +and prints the results, one per line. +If no +.I address +is given, +.I dnsquery +prompts for something to find in the DNS, one per line on the standard input, +of the form: +.IP +.EX +.IR "name" " [" attribute "]" +.EE +.PP +where +.I name +is the label of something in the DNS, and +.I attribute +is one of its attributes from the list below: +.TF hinfox +.TP +.B all +all data currently known locally for +.I name +.TP +cname +name for which +.I name +is an alias +.TP +hinfo +host and operating system type +.TP +.B ip +for an IP address when +.I name +is a domain name +.TP +.B mx +mail exchanger +.TP +.B ns +for a list of name servers +.TP +.B ptr +for the domain name when +.I name +is an Internet address +.TP +.B soa +statement-of-authority +.PD +.PP +.I Dnsquery +queries the +.I server +for that name/attribute combination and prints the results, one per line. +If an +.I attribute +is not given, +.I dnsquery +uses +.B ip +if +.I name +looks like a domain name, +and +.B ptr +if it looks like an Internet address. +.SH FILES +.TF /lib/ndb/local +.TP +.B #sdns* +service directory +.TP +.B /net/dns +domain name service +.TP +.B /lib/ndb/local +network database +.TP +.B /lib/ndb/dns +DNS bootstrap data +.SH SOURCE +.B /appl/cmd/ndb/dns.b +.br +.B /appl/cmd/ndb/dnsquery.b +.SH "SEE ALSO" +.IR dns (6), +.IR cs (8) +.SH BUGS +.I Dns +does not yet offer an external DNS server, mainly +for lack of a suitable database for local zone data. diff --git a/man/8/fpgaload b/man/8/fpgaload new file mode 100644 index 00000000..c6cf440a --- /dev/null +++ b/man/8/fpgaload @@ -0,0 +1,24 @@ +.TH FPGALOAD 8 +.SH NAME +fpgaload \- configure FPGA +.SH SYNOPSIS +.B auxi/fpgaload +[ +.BI -c " clk" +] +.I file.rbf +.SH DESCRIPTION +.I Fpgaload +configures the directly-attached Altera Flex6000 FPGA on the Bright Star Engineering ip-Engine. +It enables the FPGA and output of the external system clocks, then loads the FPGA with the contents of +.IR file.rbf +which should be in the `raw binary format' produced for example by the Altera tools. +After successful configuration, the BCLK is set to +.I clk +MHz; +.I clk +must be a divisor of the ip-Engine's system clock (currently 48 MHz). +.SH SOURCE +.B /appl/cmd/auxi/fpgaload.b +.SH SEE ALSO +.IR fpga (3) diff --git a/man/8/ftl b/man/8/ftl new file mode 100644 index 00000000..dad34bc9 --- /dev/null +++ b/man/8/ftl @@ -0,0 +1,63 @@ +.TH FTL 8 +.SH NAME +ftl \- Flash Translation Layer formatter +.SH SYNOPSIS +.B disk/ftl +.I flashsize +.I secsize +.I kfsfile +.I output +.SH DESCRIPTION +.I Ftl +reads a file system image in +.IR kfs (3) +format from +.I kfsfile +and adds the data structures needed to make it a valid image for +the Flash Translation Layer driver +.IR ftl (3). +The result is written to the +.I output +file, which can be copied to initialise the +flash memory of a suitable device +(see +.IR flash (3)). +.PP +The other arguments describe the characteristics of the flash memory: +.TF \fIflashsize\fP +.PD +.TP +.I flashsize +The size in bytes of the flash memory to which +.I output +will be copied; exactly +.I flashsize +bytes will be written to +.IR output . +.TP +.I secsize +The effective erase unit (sector) size in bytes of the flash memory, as seen +by the processor, having +allowed for bus width. +For example, a bank of flash +formed from byte-wide flash chips, each with 16kbyte sectors, +wired across a 4 byte bus, might have an effective erase unit size of +64kbytes. +.PP +The +.I kfsfile +must not be larger than the size (length) of the +.B ftldata +file provided by +.IR ftl (3) +for the target flash device or partition. +(That size is invariably less than the size of the raw flash, +owing to the overhead of FTL data structures +and a reserve pool of 5% to reduce the number of erase cycles; see +.IR ftl (3)). +.SH SOURCE +.B /appl/cmd/disk/ftl.b +.SH SEE ALSO +.IR flash (3), +.IR ftl (3), +.IR kfs (3) diff --git a/man/8/getauthinfo b/man/8/getauthinfo new file mode 100644 index 00000000..3e8bd56f --- /dev/null +++ b/man/8/getauthinfo @@ -0,0 +1,127 @@ +.TH GETAUTHINFO 8 +.SH NAME +getauthinfo \- obtain a certificate for authentication +.SH SYNOPSIS +.BI getauthinfo " keyname" +.PP +.B wm/getauthinfo +.SH DESCRIPTION +.I Getauthinfo +makes contact with +.IR logind (8) +on a `signer', or certifying authority, with which the user +has previously been registered using +.IR changelogin (8), +to obtain a certificate that +can later be presented to other Inferno services to authenticate the user. +If +.I keyname +starts with a `/', the certificate is stored there; otherwise, it is stored in the file +.BI /usr/ user /keyring/ keyname, +where +.I user +is the name in +.B /dev/user +(see +.IR cons (3)). +The directory +.BI /usr/ user /keyring +must exist. +.PP +The user is prompted for the following: +.TP +signer +The name of the signing server, for example +.BR signer.froop.com . +The default is the default signer for the site: +the value of +.B SIGNER +in the local network configuration database +(see +.IR ndb (6)). +.TP +remote user name +The name of the user for whom a certificate is to be obtained. The default is the current user name in +.BR /dev/user . +.TP +password +The user's password. The password entered on the client must match the password +previously stored on the server using +.IR changelogin (8), +or a certificate will be refused. +.TP +save in file? +The default is `no'. If the user responds `yes', the certificate is written directly to the file. +Otherwise, +.I getauthinfo +becomes a file server, serving +a secure temporary file bound over +the file name above (because that is where applications look for it). +The temporary will disappear if the name is unmounted, or Inferno is rebooted. +.PP +Note that the certificate will expire at or before expiry of the password entry +on the signer. +.PP +The signer needs its own key to endorse the certificates that it gives to clients. +If a user requests a certificate with +.IR getauthinfo (8) +before the signer's key is created on the signer (eg, +using +.IR createsignerkey (8)), +then the request will be rejected with a suitable diagnostic +by +.IR logind (8). +.SS "File servers" +.PP +Machines that will be file servers must obtain a certificate and save the certificate in a key file named +.BR default , +thus: +.IP +.B "getauthinfo default" +.PP +The user invoking +.I getauthinfo +must be the same user who later runs +.IR svc (8) +to start the machine's services. +.SS "File server clients" +Machines that wish to be authenticated clients of file servers must obtain a certificate and store the certificate in a file named +.IB net ! machine. +The file name must match exactly the +server address given to +.I mount +(see +.IR bind (1)). +To set the key, use +.IP +.BI getauthinfo " net" ! host +.SS Window system interface +.I Getauthinfo +has a visual counterpart +.B wm/getauthinfo +for use under +.IR wm (1). +It takes no arguments. +It displays a window prompting for all the information it needs, +and offering apparently sensible defaults. +Apart from the different interface, its function is otherwise +the same as the command line version. +.SH FILES +.TF /usr/username/keyring/net!machine +.TP +.BI /usr/ user /keyring/ net ! machine +where a certificate is stored on a client machine +.TP +.BI /usr/ user /keyring/default +where a certificate is stored on a file server +.TP +.B /lib/ndb/local +contains the default host name of the signer +.SH SOURCE +.B /appl/cmd/getauthinfo.b +.br +.B /appl/wm/getauthinfo.b +.SH "SEE ALSO" +.IR bind (1), +.IR changelogin (8), +.IR createsignerkey (8) diff --git a/man/8/httpd b/man/8/httpd new file mode 100644 index 00000000..414bb304 --- /dev/null +++ b/man/8/httpd @@ -0,0 +1,112 @@ +.TH HTTPD 8 +.SH NAME +httpd, echo, stats \- HTTP server +.SH SYNOPSIS +.B svc/httpd/httpd +[ +.BI -c cachesize +] [ +.B -D +] [ +.BI -p port +] +.PP +.BI svc/httpd/echo " meth vers uri search" +.PP +.BI svc/httpd/stats " meth vers uri search" +.SH DESCRIPTION +.I Httpd +is a simple HTTP daemon, serving version 1.0 of the HTTP protocol. +It listens for incoming calls on a given TCP/IP +.I port +(default: 80). +It serves content rooted at +.L /services/httpd/root +in its name space. +.PP +The +.I httpd +program supports only the +.L GET +and +.L HEAD +methods of the HTTP protocol. The +.L Content-type +(default +.LR application/octet-stream ) +and +.L Content-encoding +(default +.LR binary ) +of a file are determined by looking for suffixes of the file name in +.BR /services/http/http.suff . +.PP +If the requested URI begins with +.BR /magic/ , +.I httpd +loads the module associated with the remaining part of the URI. +Take care to configure the name space sensibly. +Simple servers +.I echo +and +.I stats +are provided (see below). +.PP +.I Httpd +has the following options: +.TP +.BI -c cachesize +Set the size of the daemon's cache to +.I cachesize +kilobytes. The default is a five megabyte cache. +.TP +.B -D +Debugging information is written to the file +.BR /services/httpd/httpd.debug . +.TP +.BI -p port +Listen for requests on the given +.IR port . +.PP +.I Echo +is a trivial server that just returns the method, URI, any search, and the headers sent by the client. +.PP +.I Stats +is an equally simple server that queries the cache and returns information to the user about pages stored in the cache. +.PP +More complex services can be written to +.IR httpd 's +private interface. +The file +.B httpd.m +(in +.BR /appl/svc/httpd ) +defines constants and adts used by +.IR httpd . +The file +.B cgi.m +defines the +module +.L Cgi +which is the interface for programs called using the URI +.BR /magic/ . +.SH FILES +.TF "/services/httpd/httpd.rewrite " +.TP +.B /services/httpd/root +Root of the served web content. +.TP +.B /services/httpd/httpd.debug +Logfile for debugging information. +.TP +.B /services/httpd/httpd.log +.I httpd +logfile. +.TP +.B /services/httpd/httpd.rewrite +File to redirect specific URI requests. +.TP +.B /services/httpd/httpd.suff +File of recognizable suffixes and their content type. +.SH SOURCE +.B /appl/svc/httpd diff --git a/man/8/init b/man/8/init new file mode 100644 index 00000000..d39aa348 --- /dev/null +++ b/man/8/init @@ -0,0 +1,99 @@ +.TH INIT 8 +.SH NAME +init: emuinit, osinit \- Inferno initialisation +.SH SYNOPSIS +.EX +Init: module +{ + init: fn(); +}; +.EE +.PP +.B /dis/emuinit.dis +.PP +.B #/./osinit.dis +.SH DESCRIPTION +Both +.IR emu (1) +and the native kernels run a Dis program to initialise the system. +.PP +.I Emuinit +is the default initialisation +program for +.IR emu (1). +.I Emu +sets the environment variable +(see +.IR env (3)) +.B /env/emuargs +to the command line originally given to +.IR emu , +which has the following form: +.IP +.B emu +.RB [ \-d ] +[ +.I command +.RI [ " arg ..." ] +] +.PP +.I Emuinit +uses the value of +.B emuargs +to decide which command to start and its arguments. +The default +.I command +is +.BR /dis/sh.dis , +unless the +.B \-d +option is given, in which case +.B /dis/lib/srv.dis +is used by default instead, to cause +.I emu +to run on the host system as a server (`daemon' mode). +.PP +.I Osinit +is built-in to the +.IR root (3) +of native kernels. +Although the kernel uses the fixed name +.B #/./osinit.dis +the contents are taken from one of the files in +.B /os/init +selected by the +.B init +section of the kernel configuration file. +.IR Osinit 's +action is platform-specific in detail, but might include: +building an initial +.B /dev +by mounting device drivers; +binding the physical network driver (eg, +.IR ether (3)) +into +.B /net +and initialising +.IR ip (3), +usually setting addresses and routes using +.BR bootp ; +attaching to a remote file system; +setting up flash translation using +.IR ftl (3); +starting +.I dossrv +or +.I 9660srv +(see +.IR dossrv (4)), +or +.IR kfs (3) +to serve local files from disk or flash memory. +.SH FILES +.B /env/emuargs +.SH SOURCE +.B /appl/cmd/emuinit.b +.br +.B /os/init/*.b +.SH SEE ALSO +.IR emu (1) diff --git a/man/8/kfscmd b/man/8/kfscmd new file mode 100644 index 00000000..50756164 --- /dev/null +++ b/man/8/kfscmd @@ -0,0 +1,142 @@ +.TH KFSCMD 8 +.SH NAME +kfscmd \- kfs administration +.SH SYNOPSIS +.B disk/kfscmd +.RB [ -n +.IR name ] +.IR cmd " ..." +.SH DESCRIPTION +.I Kfscmd +issues commands to a +.IR kfs (4) +server that was started with the +.B -n +option to create a control file. +.IR Kfscmd 's +own +.B -n +option names the file system to which the +.I cmd +applies; it is +.B main +by default. +.PP +The known commands are described below. +Note that some commands are multiple words (eg, +.B check +and its flags) and +should be quoted to appear as a single argument to +.IR sh (1). +.TP \w'\fLallowoff\ \fIn'u +.B allow +Turn permission checking off (to simplify administration). +Equivalent to the +.B -P +and +.B -W +options to +.IR kfs (4). +.TP +.B allowoff +.PD 0 +.TP +.B disallow +Turn permission checking on (again). +.PD +.ig +.TP +.B halt +write all changed blocks and stop the file system. +.TP +.B help +print the list of commands. +.TP +.BI "rename " "file name" +Change the name of +.I file +to +.IR name . +.TP +.BI "newuser " user +Add +.I user +to +.B /adm/users +and make the standard directories needed for booting. +.TP +.BI "remove " file +Remove +.I file +and place its blocks on the free list. +.TP +.BI "clri " file +Remove +.I file +but do not place the blocks on the free list. +This command can be used to remove files that have duplicated blocks. +The non-duplicate blocks can be retrieved by checking the file system +with option +.B f +(see below). +.TP +.BI create \ file\ owner\ group\ mode\ [adl] +Create the file. Owner and group are users in +.B /adm/users +and mode is an octal number. +If present, +.L a +creates an append only file, +.L d +creates a directory, and +.L l +creates a file that is exclusive-use. +.. +.TP +.B sync +write to disk all of the dirty blocks in the memory cache. +.TP +.B users +Reinitialise authentication information by reading +.BR /adm/users . +.TP +.B check [cdfpPqrtw] +Check the file system and print summary information. +The options are +.PD 0 +.RS +.TP +.B c +fix bad tags and clear the contents of the block. +.TP +.B d +delete redundant references to a block. +.TP +.B f +rebuild the list of free blocks. +.TP +.B p +print the names of directories as they are checked. +.TP +.B P +print the names of all files as they are checked. +.TP +.B q +quiet mode: report errors, but suppress summary information. +.TP +.B r +read all of the data blocks and check the tags. +.TP +.B t +fix bad tags. +.TP +.B w +write all of the blocks that are touched. +.RE +.PD +.SH SOURCE +.B /appl/cmd/disk/kfscmd.b +.SH "SEE ALSO" +.IR sd (3), +.IR kfs (4), +.IR mkfs (8) diff --git a/man/8/logind b/man/8/logind new file mode 100644 index 00000000..bb914be0 --- /dev/null +++ b/man/8/logind @@ -0,0 +1,52 @@ +.TH LOGIND 8 +.SH NAME +logind \- login daemon +.SH SYNOPSIS +.B auth/logind +.SH DESCRIPTION +.I Logind +is normally started by +.IR svc (8) +to service requests on the +.B inflogin +TCP/IP port, +to provide a `signing' service (identity authentication) for a network. +Ultimately, the client receives a certificate that can be used to establish its identity +with any host that is willing to honour certificates from the certificate's signer. +.PP +The signer constructs the certificate from the contents +of the signer's key file +.BR /keydb/signerkey , +typically created by +.IR createsignerkey (8), +and +the ID string and password supplied by the client (which are used to access +.IR keyfs (4) +to check identity). +.PP +The protocol involves an exchange of information between the client and server, +as summarised in +.IR login (6). +The client side of this exchange can be managed by the +.B Login +module; see +.IR security-login (2). +.PP +Client and server communicate over the Secure Socket Layer device +.IR ssl (3). +.SH FILES +.TF /keydb/signerkey +.TP +.B /keydb/keys +.TP +.B /keydb/signerkey +.SH SOURCE +.B /appl/cmd/auth/logind.b +.SH "SEE ALSO" +.IR security-login (2), +.IR ssl (3), +.IR keyfs (4), +.IR keys (6), +.IR changelogin (8), +.IR createsignerkey (8), +.IR svc (8) diff --git a/man/8/mangaload b/man/8/mangaload new file mode 100644 index 00000000..5a39a876 --- /dev/null +++ b/man/8/mangaload @@ -0,0 +1,49 @@ +.TH MANGALOAD 8 +.SH NAME +mangaload \- send new kernel to MANGA bootstrap +.SH SYNOPSIS +.B auxi/mangaload +[ +.B -48dr +] +.I host +.I image +.SH DESCRIPTION +.I Mangaload +uses an ICMP protocol unique to the Peplink MANGA™ firewall to send a new kernel +.I image +to the MANGA bootstrap monitor to burn into flash, replacing +the existing kernel image. +To start the loading process, connect to the device's console on its serial port +(38400 baud, 8 bits, no parity, 1 stop bit, no flow control), +power the device off then on again, and when the +.B MANGA +prompt appears, quickly type the letter +.BR f . +Then run +.I mangaload +to load the kernel; the device should give status updates as the kernel loads, +and as it burns the image into flash. +When it has finished, power the device off and on again to start the new kernel. +.PP +By default, +.I mangaload +assumes a 4 Mbyte flash on the device; the +.B -8 +option sets it to 8 Mbytes. +The +.B -r +option causes the +.I image +to be loaded into another, larger flash region, used by Linux for its initial root, +which can be used by Inferno for general storage. +The +.B -d +option prints a trace of the protocol, for debugging. +.SH SOURCE +.B /appl/cmd/auxi/mangaload.b +.br +.B /os/manga +.SH SEE ALSO +.IR bootpd (8), +.IR tftpd (8) diff --git a/man/8/manufacture b/man/8/manufacture new file mode 100644 index 00000000..1684de0c --- /dev/null +++ b/man/8/manufacture @@ -0,0 +1,31 @@ +.TH MANUFACTURE 8 mux +.SH NAME +manufacture \- command to emulate set-top-box-id in ROM +.SH SYNOPSIS +.BI manufacture box-id +.SH DESCRIPTION +.I Manufacture +initialises the file +.B /nvfs/ID +with the string +.IR box-id . +The file emulates the serial number that the manufacturer of a real set top box would +normally burn into ROM +(see also +.B rtcid +in +.IR rtc (3)). +The +.I box-id +is used by +.IR register (8). +.SH FILES +.TF /nvfs/ID +.TP +.B /nvfs/ID +.TP +.B /nvfs/default +.SH SOURCE +.B /appl/cmd/manufacture.b +.SH "SEE ALSO" +.IR register (8) diff --git a/man/8/mkfs b/man/8/mkfs new file mode 100644 index 00000000..9c4bad8a --- /dev/null +++ b/man/8/mkfs @@ -0,0 +1,181 @@ +.TH MKFS 8 +.SH NAME +mkfs, mkext \- archive or update a file system +.SH SYNOPSIS +.B disk/mkfs +.RB [ -aprvx ] +.RB [ -n +.IR name ] +.RB [ -s +.IR source ] +.RB [ -u +.IR users ] +.RB [ -z +.IR n ] +.I proto ... +.PP +.B disk/mkext +.RB [ -d +.IR name ] +.RB [ -u ] +.RB [ -h ] +.RB [ -v ] +.I file ... +.SH DESCRIPTION +.I Mkfs +copies files from the file tree +.I source +(default +.BR / ) +to a +.B kfs +file system (see +.IR kfs (4)). +The kfs service is mounted on +.BR /n/kfs , +and +.BR /adm/users , +if it exists, is copied to +.BR /n/kfs/adm/users . +The +.I proto +files are read, +and any files specified in them that are out of date are copied to +.BR /n/kfs . +See +.IR proto (6) +for the description of file system prototype files. +.PP +.I Mkfs +copies only those files that are out of date. +Such a file is first copied into a temporary +file in the appropriate destination directory +and then moved to the destination file. +Files in the +.I kfs +file system that are not specified in the +.I proto +file +are not updated and not removed. +.PP +The options to +.I mkfs +are: +.TF "s source" +.TP +.B a +Instead of writing to a +.B kfs +file system, write an archive file to standard output, suitable for +.IR mkext . +All files in +.IR proto , +not just those out of date, are archived. +.TP +.B x +For use with +.BR -a , +this option writes a list of file names, dates, and sizes to standard output +rather than producing an archive file. +.TP +.BI "n " name +Use +.RI kfs. name +as the name of the kfs service (default +.BR kfs ). +.TP +.B p +Update the permissions of a file even if it is up to date. +.TP +.B r +Copy all files. +.TP +.BI "s " source +Copy from files rooted at the tree +.IR source . +.TP +.BI "u " users +Copy file +.I users +into +.B /adm/users +in the new system. +.TP +.B v +Print the names of all of the files as they are copied. +.TP +.BI "z " n +Copy files assuming kfs block +.I n +(default 1024) +bytes long. +If a block contains only 0-valued bytes, it is not copied. +.PD +.PP +.I Mkext +unpacks archive files made by the +.B -a +option of +.IR mkfs . +The +.B -d +option specifies a directory (default +.BR /n/kfs ) +to serve as the root of the unpacked file system. +The +.B -u +option, to be used only when initializing a new +.IR kfs (4) +file system, sets the owners of the files created to correspond to +those in the archive and restores the modification times of the files. +(This is only permitted at the initial load of the files into a file +system.) +Each file on the command line is unpacked in one pass through the archive. +If the file is a directory, +all files and subdirectories of that directory are also unpacked. +When a file is unpacked, the entire path is created if it +does not exist. +If no files are specified, the entire archive is unpacked; +in this case, missing intermediate directories are not created. +The +.B -v +option prints the names and sizes of files as they are extracted; +.B -h +prints headers for the files on standard output +instead of unpacking the files. +.SH EXAMPLES +.PP +Make an archive to establish a new file system +(assuming that the output file +.B arch +is not referenced by +.BR proto ): +.IP +.EX +bind '#U' /n/local +disk/mkfs -a -u files/adm.users -s /n/local proto > arch +.EE +.PP +Unpack that archive on another machine: +.IP +.EX +mount tcp!server /n/remote +disk/mkext -u -d /n/remote < arch +.EE +.SH FILES +.TF /lib/proto/portproto +.TP +.B /lib/proto +directory of prototype files. +.TP +.B /lib/proto/portproto +generic prototype file. +.SH SOURCE +.B /appl/cmd/disk/mkfs.b +.br +.B /appl/cmd/disk/mkext.b +.SH "SEE ALSO" +.IR fs (1), +.IR kfs (4), +.IR proto (6), +.IR kfscmd (8) diff --git a/man/8/ping b/man/8/ping new file mode 100644 index 00000000..441ff0f2 --- /dev/null +++ b/man/8/ping @@ -0,0 +1,64 @@ +.TH 8 PING +.SH NAME +ping \- probe the Internet +.SH SYNOPSIS +.B ip/ping +.RB [ -alq ] +[ +.BI -i " interval" +] [ +.BI -s " size" +] [ +.BI -n " nping" +] +.I destination +.SH DESCRIPTION +.I Ping +sends ICMP echo requests to a network +.I destination +(which has the syntax accepted by +.IR sys-dial (2)). +The target host, if up, should send a corresponding reply. +By default, one line is printed for each reply, +containing the sequence number (starting at 0) of the message it answers, +the round trip time for that reply, the average round trip time so far, +and the `time to live' value from the reply packet. +.PP +The options are: +.TP +.B -a +include source and destination IP addresses in the output +.TP +.BI -i " interval" +send requests with the given +.I interval +between messages, +in milliseconds (default: 1 second) +.TP +.B -l +list only lost messages +.TP +.BI -n " nping" +send +.I nping +messages in all (default: 32) +.TP +.B -q +suppress per-packet output, giving summary data only +.TP +.BI -s " size" +send request packets of the given +.I size +in bytes +(default: 64, minimum 32) +.SH SOURCE +.B /appl/cmd/ip/ping.b +.SH SEE ALSO +.IR sys-dial (2), +.IR ip (3) +.SH DIAGNOSTICS +.I Ping +yields an error status if any request had no corresponding reply. +.SH BUGS +Works only on native Inferno and when hosted on Plan 9, owing to the lack of +access to ICMP on other hosted systems. diff --git a/man/8/plumber b/man/8/plumber new file mode 100644 index 00000000..3c691991 --- /dev/null +++ b/man/8/plumber @@ -0,0 +1,94 @@ +.TH PLUMBER 8 +.SH NAME +plumber \- plumber for interapplication message routing +.SH SYNOPSIS +.B plumber +[ +.B -v +] [ +.B -w +] [ +.BI -c " wmchan" +] [ +.I rulefile +\&... +] +.SH DESCRIPTION +.I Plumber +provides high-level message-passing between applications. +In a plumbed environment, +applications can receive messages on an input port, which is given a logical name. +Messages are not sent directly between applications but are routed via +the plumber, following user-specified rules. +.PP +.I Plumber +is typically started by +.IR wm (1)'s +startup script. +It reads each +.I rulefile +(default: +.BI /usr/ user /lib/plumbing ) +in turn. +Each file has the form described in +.IR plumbing (6); +the rules direct the routing of each message +.I plumber +receives. +.I Plumber +then lurks in the background with its mate, +awaiting plumbing requests sent by +.IR plumbmsg (2), +by windowing applications in response to events such as button clicks or drag-and-drop, +or by +.IR plumb (1). +.PP +When a message arrives, +.I plumber +applies the rules to decide how to route it. +It forwards the message to the selected application's input port, starting it if necessary. +If no rule applies (or some other error occurs), +.I plumber +returns an error to the message's sender. +The +.B -v +option causes +.I plumber +to log the contents of messages it receives, to help debug plumbing rules and applications. +.PP +.I Plumber +normally starts applications directly. +For use on devices that have specialised +window managers, not +.IR wm (1), +the +.B -w +option causes +.I plumber +to start applications indirectly, by sending a message to +a window manager listening on +.BR /chan/wm , +allowing +the window manager to track every application started. +The +.B -c +option can select an alternative +.I wmchan +to +.BR /chan/wm . + +.SH FILES +.TF /usr/user/lib/plumbing +.TP +.BI /usr/ user /lib/plumbing +default plumbing rules for +.I user +.SH SOURCE +.B /appl/cmd/plumber.b +.br +.B /appl/lib/plumbing.b +.SH SEE ALSO +.IR plumb (1), +.IR wm (1), +.IR plumbmsg (2), +.IR plumbing (6) diff --git a/man/8/prep b/man/8/prep new file mode 100644 index 00000000..d9775a6f --- /dev/null +++ b/man/8/prep @@ -0,0 +1,710 @@ +.TH PREP 8 +.SH NAME +prep, fdisk, format, mbr \- prepare hard and floppy diskettes, flashes +.SH SYNOPSIS +.B disk/prep +[ +.B -bcfnprw +] +[ +.B -a +.I name +]... +[ +.B -s +.I sectorsize +] +.I plan9partition +.PP +.B disk/fdisk +[ +.B -abfprw +] +[ +.B -s +.I sectorsize +] +.I disk +.PP +.B disk/format +[ +.B -dfvx +] +[ +.B -b +.I bootblock +] +[ +.B -c +.I csize +] +[ +.B -l +.I label +] +[ +.B -r +.I nresrv +] +[ +.B -t +.I type +] +.I disk +[ +.IR file ... +] +.PP +.B disk/mbr +[ +.B -9 +] +[ +.B -m +.I mbrfile +] +.SH DESCRIPTION +A partition table is stored on a hard disk to specify the division of +the physical disk into a set of logical units. +On PCs, the partition table is stored at the end of the master boot record +of the disk. +Partitions of type +.B 0x39 +are Plan 9 partitions. +Inferno uses the same type and follows other Plan 9 conventions described here. +The names of PC partitions are chosen by convention from the type: +.BR dos , +.BR plan9 , +etc. +Second and subsequent partitions of the same type on a given disk are given +unique names by appending a number (or a period and a number if the name +already ends in a number). +.PP +Plan 9 partitions (and Plan 9 disks on non-PCs) are +themselves divided, using a textual partition table, called the Plan 9 partition table, in the second +sector of the partition (the first is left for architecture-specific boot data, such as PC boot blocks). +Inferno again uses the same conventions. +The table is a sequence of lines of the format +.BI part " name start end" \fR, +where +.I start +and +.I end +name the starting and ending sector. +Sector 0 is the first sector of the Plan 9 partition or disk, +regardless of its position in a larger disk. +Partition extents do not contain the ending sector, +so a partition from 0 to 5 and a partition from 5 to 10 +do not overlap. +.PP +The Plan 9 partition often contains a number of +conventionally named subpartitions. +Only +.BR 9fat , +.BR fs +and +.BR nvram +are currently used by Inferno, but the others are included for reference. +They include: +.TF arenas +.TP +.B 9fat +A small FAT file system used to hold +configuration information +(such as +.B plan9.ini +and +.BR plan9.nvr ) +and kernels. +This typically begins in the first sector +of the partition, and contains the partition +table as a ``reserved'' sector. +See the discussion of the +.B -r +option to +.IR format . +.TP +.B arenas +A Plan 9 +.IR venti +arenas partition. +.TP +.B cache +A Plan 9 +.IR cfs +file system cache. +.TP +.B fossil +A Plan 9 +.IR fossil +file system. +.TP +.B fs +A +.IR kfs (4) +file system. +.TP +.B fscfg +A one-sector partition used to store a +.IR ds (3) +configuration. +.TP +.B isect +A Plan 9 +.IR venti +index section. +.TP +.B nvram +A one-sector partition used to simulate non-volatile RAM on PCs. +.TP +.B other +A non-archived Plan 9 +.IR fossil +file system. +.TP +.B swap +A Plan 9 +swap partition. +.PD +.PP +.I Fdisk +edits the PC partition table and is usually +invoked with a disk like +.B /dev/sdC0/data +as its argument, while +.I prep +edits the Plan 9 partition table +and is usually invoked with a disk partition +like +.B /dev/sdC0/plan9 +as its argument. +.I Fdisk +works in units of disk ``cylinders'': the cylinder +size in bytes is printed when +.I fdisk +starts. +.I Prep +works in units of disk sectors, which are almost always 512 bytes. +.I Fdisk +and +.I prep +share most of their options: +.TP +.B -a +Automatically partition the disk. +.I Fdisk +will create a Plan 9 +partition in the largest unused area on the disk, +doing nothing if a +Plan 9 partition already exists. +If no other partition on the disk is marked active (i.e. marked as the boot partition), +.I fdisk +will mark the new partition active. +.IR Prep 's +.B -a +flag takes the name of a partition to create. +(See the list above for partition names.) +It can be repeated to specify a list of partitions to create. +If the disk is currently unpartitioned, +.I prep +will create the named partitions on the disk, +attempting to use the entire disk in a sensible manner. +The partition names must be from the list given above. +.TP +.B -b +Start with a blank disk, ignoring any extant partition table. +.TP +.B -p +Print a sequence of commands that when sent to the disk device's +.B ctl +file +will bring the partition +table information kept by +the +.IR sd (3) +driver up to date. +Then exit. +.I Prep +will check to see if it is being called with a disk partition +(rather than an entire disk) as its argument; if so, it +will translate the printed sectors by the partition's offset +within the disk. +Since +.I fdisk +operates on a table of unnamed partitions, +it assigns names based on the partition type +(e.g., +.BR plan9 , +.BR dos , +.BR ntfs , +.BR linux , +.BR linuxswap ) +and resolves collisions by appending a numbered suffix. +(e.g., +.BR dos , +.BR dos1 , +.BR dos2 ). +.TP +.B -r +In the absence of the +.B -p +and +.B -w +flags, +.I prep +and +.I fdisk +enter an interactive partition editor; +the +.B -r +flag runs the editor in read-only mode. +.TP +.BI -s " sectorsize" +Specify the disk's sector size. +In the absence of this flag, +.I prep +and +.I fdisk +look for a disk +.B ctl +file and read it to find the disk's sector size. +If the +.B ctl +file cannot be found, a message is printed and +a sector size of 512 bytes is assumed. +.TP +.B -w +Write the partition table to the disk and exit. +This is useful when used in conjunction with +.B -a +or +.BR -b . +.PP +If neither the +.B -p +flag nor the +.B -w +flag is given, +.I prep +and +.I fdisk +enter an interactive partition editor that +operates on named partitions. +The PC partition table distinguishes between +primary partitions, which can be listed in the boot +sector at the beginning of the disk, +and secondary (or extended) partitions, arbitrarily +many of which may be chained together in place +of a primary partition. +Primary partitions are named +.BR p \fIn\fR, +secondary partitions +.BR s \fIn\fR. +The number of primary partitions plus number of contiguous chains of +secondary partitions cannot exceed four. +.PP +The commands are as follows. +In the descriptions, read ``sector'' as ``cylinder'' when using +.IR fdisk . +.TP +.B "a\fR \fIname\fR [ \fIstart\fR [ \fIend\fR ] ]" +Create a partition named +.I name +starting at sector offset +.I start +and ending at offset +.IR end . +The new partition will not be created if +it overlaps an extant partition. +If +.I start +or +.I end +are omitted, +.I prep +and +.I fdisk +will prompt for them. +In +.IR fdisk , +the newly created partition has type +.RB `` PLAN9 ;'' +to set a different type, use the +.B t +command (q.v.). +.I Start +and +.I end +may be expressions using the operators +.BR + , +.BR - , +.BR * , +and +.BR / , +numeric constants, and the +pseudovariables +.B . +and +.BR $ . +At the start of the program, +.B . +is set to zero; each time a partition is +created, it is set to the end sector +of the new partition. +It can also be explicitly set using the +.B . +command. +When evaluating +.IR start , +.B $ +is set to one past the last disk sector. +When evaluating +.IR end , +.B $ +is set to the maximum value that +.I end +can take on without running off the disk +or into another partition. +Finally, the expression +.IB n % +evaluates to +.RI ( n × disksize )/100. +As an example, +.B a +.B . +.B .+20% +creates a new partition starting at +.B . +that takes up a fifth of the disk, +and +.B a +.B 1000 +.B $ +creates a new partition starting at +sector 1000 and +extending as far as possible. +.TP +.B ".\fR \fInewdot" +Set the value of the variable +.B . +to +.IR newdot , +which is an arithmetic expression as described +in the discussion of the +.B a +command. +.TP +.BI d " name" +Delete the named partition. +.TP +.B h +Print a help message listing command synopses. +.TP +.B p +Print the disk partition table. +Unpartitioned regions are also listed. +The table consists of a number of lines containing +partition name, beginning and ending sectors, +and total size. +A +.B ' +is prefixed to the names of partitions +whose entries have been modified but not written to disk. +.I Fdisk +adds to the end of each line a textual partition type, +and places a +.B * +next to the name of the active partition +(see the +.B A +command below). +.TP +.B P +Print the partition table in the format accepted by the disk's +.B ctl +file, which is also the format of the output of the +.B -p +option. +.TP +.B w +Write the partition table to disk. +.I Prep +will also inform the kernel of the changed +partition table. +The write will fail if any programs have any +of the disk's partitions open. +If the write fails (for this or any other reason), +.I prep +and +.I fdisk +will attempt to restore the partition table to +its former state. +.TP +.B q +Quit the program. +If the partition table has been modified but not written, +a warning is printed. +Typing +.B q +again will quit the program. +.PP +.I Fdisk +also has the following commands. +.TP +.BI A " name +Set the named partition active. +The active partition is the one whose boot block is used +when booting a PC from disk. +.TP +.B e +Print the names of empty slots in the partition table, i.e., the +valid names to use when creating a new partition. +.TP +.BI t " \fR[\fI type \fR] +Set the partition type. If it is not given, +.I fdisk +will display a list of choices and then prompt for it. +.PD +.PP +.I Format +prepares for use the floppy diskette or hard disk partition in the file named +.IR disk , +for example +.B /dev/fd0disk +or +.BR /dev/sdC0/9fat . +The options are: +.TP +.B -f +Do not physically format the disc. Used +to install a FAT file system on a +previously formatted disc. If +.I disk +is not a floppy device, this flag is a no-op. +.TP +.B -t +specify a density and type of disk to be prepared. +The possible +.I types +are: +.RS +.TP +.B 3½DD +3½" double density, 737280 bytes +.TP +.B 3½HD +3½" high density, 1474560 bytes +.TP +.B 5¼DD +5¼" double density, 368640 bytes +.TP +.B 5¼HD +5¼" high density, 1146880 bytes +.TP +.B hard +fixed disk +.PD +.PP +The default when +.I disk +is a floppy drive is the highest possible on the device. +When +.I disk +is a regular file, the default is +.BR 3½HD . +When +.I disk +is an +.IR sd (3) +device, the default is +.BR hard . +.RE +.TP +.B -d +initialize a FAT file system on the +.IR disk . +.TP +.B -b +use the contents of +.I bootblock +as a bootstrap block +to be installed in sector 0. +.PD +.PP +The remaining options have effect only when +.B -d +is specified: +.TP +.B -c +use a FAT cluster size of +.I csize +sectors when creating the FAT. +.TP +.B -l +add a +.I label +when creating the FAT file system. +.TP +.BI -r +mark the first +.I nresrv +sectors of the partition as ``reserved''. +Since the first sector always contains the +FAT parameter block, this really marks +the +.IR nresrv -1 +sectors starting at sector 1 as ``reserved''. +When formatting the +.B 9fat +partition, +.B -r +.B 2 +should be used to jump over the partition table sector. +.PD +.PP +Again under +.BR -d , +any +.I files +listed are added, in order, +to the root +directory of the FAT file system. The files are +contiguously allocated. +If a file is named +.BR 9load , +it will be created with the +.B SYSTEM +attribute set so that +.IR dossrv (4) +keeps it contiguous when modifying it. +.PP +.I Format +checks for a number of common mistakes; in particular, +it will refuse to format a +.B 9fat +partition unless +.B -r +is specified with +.I nresrv +larger than two. +It also refuses to format a raw +.IR sd (3) +partition that begins at offset zero in the disk. +(The beginning of the disk should contain an +.I fdisk +partition table with master boot record, +not a FAT file system or boot block.) +Both checks are disabled by the +.B -x +option. +The +.B -v +option prints debugging information. +.PP +The file +.B /Inferno/386/pbs +is an example of a suitable +.I bfile +to make the disk a boot disk. +It gets loaded by the BIOS at 0x7C00, +reads the root directory into address 0x7E00, and looks at +the first root directory entry. +If that file is called +.BR 9LOAD , +it uses +single sector reads to load the file into address 0x10000 and then +jumps to the loaded file image. +The file +.B /Inferno/386/pbslba +is similar, but because it uses LBA addressing (not supported +by all BIOSes), it can access more than the first 8.5GB of the disk. +.PP +.I Mbr +installs a new boot block in sector 0 (the master boot record) +of a disk such as +.BR /dev/sdC0/data . +This boot block should not be confused with the +boot block used by +.IR format , +which goes in sector 0 of a partition. +Typically, the boot block in the master boot record +scans the PC partition table to find an active +partition and then executes the boot block for +that partition. +The partition boot block then loads a bootstrap +program such as +.IR 9load (10.8), +which then loads the operating system. +If MS-DOS or Windows 9[58] is already installed +on your hard disk, the master boot record +already has a suitable boot block. +Otherwise, +.B /Inferno/386/mbr +is an appropriate +.IR mbrfile . +It detects and uses LBA addressing when available +from the BIOS (the same could not +be done in the case of +.B pbs +due to space considerations). +If the +.I mbrfile +is not specified, a boot block is installed that +prints a message explaining that the disk is not bootable. +The +.B -9 +option initialises the partition table to consist of one +.BR plan9 +partition which spans the entire disc starting at the end of the +first track. +.SH EXAMPLES +Initialize the kernel disk driver with the partition information +from the FAT boot sectors. +If Plan 9 partitions exist, pass that partition information as well. +.IP +.EX +for(disk in /dev/sd??) { + if(ftest -f $disk/data && ftest -f $disk/ctl){ + disk/fdisk -p $disk/data >$disk/ctl + } + for(part in $disk/plan9*){ + if(ftest -f $part){ + disk/prep -p $part >$disk/ctl + } + } +} +.EE +.PP +Create a boot floppy on a previously formatted diskette: +.IP +.EX +disk/format -b /Inferno/386/pbs -df /dev/fd0disk /Inferno/386/9load /tmp/plan9.ini +.EE +.PP +Initialize the blank hard disk +.BR /dev/sdC0/data . +.IP +.EX +disk/mbr -m /Inferno/386/mbr /dev/sdC0/data +disk/fdisk -baw /dev/sdC0/data +disk/prep -bw -a^(9fat fs) /dev/sdC0/plan9 +disk/format -b /Inferno/386/pbslba -d -r 2 /dev/sdC0/9fat 9load 9pcdisk plan9.ini +.EE +.PP +.SH SOURCE +.B /appl/cmd/disk/prep +.br +.B /appl/cmd/disk/format.b +.br +.B /os/boot/pc +.SH SEE ALSO +.IR floppy (3), +.IR sd (3), +.IR 9load (10.8), +.IR plan9.ini (10.8) +.SH BUGS +.I Format +can create FAT12 and FAT16 +file systems, but not FAT32 file systems. +The boot block can only read from +FAT12 and FAT16 file systems. diff --git a/man/8/rdbgsrv b/man/8/rdbgsrv new file mode 100644 index 00000000..139cd4c5 --- /dev/null +++ b/man/8/rdbgsrv @@ -0,0 +1,111 @@ +.TH RDBGSRV 8 +.SH NAME +rdbgsrv \- remote debug server +.SH SYNOPSIS +.B "bind -b '#t' /dev" +.PP +.B auxi/rdbgsrv +[ +.BI \-d n +] [ +.BI \-s baud +] [ +.BI \-f dev +] +.I mountpoint +.SH DESCRIPTION +.I Rdbgsrv +is intended for use with versions of +.IR sboot (10.8) +that do not use +.IR styxmon (10.8), +but serve Styx directly. +.I Rdbgsrv +interposes itself between +.I dev +(default: +.BR /dev/eia0 ) +and +.I mountpoint +to convey Styx messages via the serial port to and from a Styx server program +running on a board running native Inferno. +The +.B \-f +option specifies the serial device; the default is +.BR /dev/eia0 . +The +.B \-s +option sets the line speed; the default is 38400 baud. +The +.B \-d +option selects debugging options by a bit mask: +1, print trace of Styx message types; +2, print actual Styx message contents. +.PP +The monitor program on the board must be started first. +.I Rdbgsrv +writes the two byte message +.BR go , +and keeps reading the device until it sees the reply +.BR ok . +It then attempts to mount the exported name space, and +copies Styx messages to and from the device. +.PP +Once +.I rdbgsrv +is running, several device files provided by the program +will be visible at +.IR mountpoint . +The files include flash partitions, a console file, and a file representing +temporary storage in the device's memory: +.TF sbootconsole +.PD +.TP +.B sbootconsole +Accepts +.IR sboot (10.8) +commands. +When read, it returns output from recent commands. +.TP +.B tmp +Temporary memory buffer that accepts data to be copied to the flash. +.TP +.BI F! partition +Represents the flash partition with the name +.IR partition . +.PP +The following example +Inferno +session on the host mounts the serial device on +.BR /n/rdbg , +and sends commands by writing to +.BR /n/rdbg/sbootconsole . +.IP +.EX +% bind -b '#t' /dev # ensure /dev/eia0 is visible +% auxi/rdbgsrv /n/rdbg +% ls /n/rdbg +/n/rdbg/F!kern +/n/rdbg/F!fs +/n/rdbg/sbootconsole +/n/rdbg/tmp +% cp /os/sa1100/isword.p9.gz /n/rdbg/F!kern # copy kernel +% cp /tmp/fs.tgz /n/rdbg/tmp # copy compressed file system +% echo c/u T! F!fs >/n/rdbg/sbootconsole +% cat /n/rdbg/sbootconsole +% echo P >/n/rdbg/sbootconsole +% echo b F!kern >/n/rdbg/sbootconsole # boot from F!kern +.EE +.PP +Copying a file containing +.I sboot +commands to +.B /n/rdbg/sbootconsole +has the same effect as writing the individual commands to the console. +.SH SOURCE +.B /appl/auxi/rdbgsrv.b +.SH SEE ALSO +.IR sboot (10.8), +.IR styxmon (10.8) +.SH BUGS +No error recovery is applied, let alone error correction. diff --git a/man/8/register b/man/8/register new file mode 100644 index 00000000..daa0998b --- /dev/null +++ b/man/8/register @@ -0,0 +1,85 @@ +.TH REGISTER 8 mux +.SH NAME +register \- command to register set-top-box identity with signer +.SH SYNOPSIS +.B mux/register +[ +.I signer +] +.SH DESCRIPTION +.I Register +is intended for use on a set top box (or similar device). +It connects to +.IR signer , +a machine configured to sign certificates, +and obtains an authenticated certificate based on the contents of +.L /nvfs/ID +(the set top box ID in non-volatile memory). +The certificate is saved in the file +.L /nvfs/default +for later use. +If no +.I signer +is named explicitly, the +.B $SIGNER +named in +.IR db (6) +is used instead. +.PP +There are several phases to obtaining the certificate. +.IP 1. +The register command interacts with +.IR signer (8) +on the signing host +to construct the certificate. This certificate is `blinded' by a random bit mask, sent back to +.I register +which displays it in textual or graphical form to +the user. +.IP 2. +The user running +.I register +must use an independent, +secure mechanism (for example, an untapped telephone call) +to communicate with a human agent at the +site acting as +.IR signer . +That agent runs +.I verify +(see +.IR signer (8)) +to display the same `blinded' certificate that was +shown to +.IR register 's +user at the client. +Once the agent is convinced that the `blinded' certificate has been delivered to the correct party, the agent tells +.I verify +to accept the identity of the caller. +.IP 3. +.I Register +then connects to the +.I countersigner +process (see +.IR signer (8)) +to obtain the bitmask needed to `unblind' the previously received certificate. +This step can only validly be performed after the successful +completion of +.I verify +on the +.I signer. +.SH FILES +.TF /services/cs/db +.TP +.B /nvfs/ID +File emulating set top box-id in ROM. +.TP +.B /nvfs/default +Repository of authenticated certificate. +.TP +.B /services/cs/db +Default definition of `signer' host. +.SH SOURCE +.B /appl/mux/register.b +.SH "SEE ALSO" +.IR db (6), +.IR manufacture (8), +.IR signer (8) diff --git a/man/8/rip b/man/8/rip new file mode 100644 index 00000000..11937f86 --- /dev/null +++ b/man/8/rip @@ -0,0 +1,98 @@ +.TH RIP 8 +.SH NAME +rip \- routing information protocol +.SH SYNOPSIS +.B ip/rip +.RB [ -2 ] +.RB [ -b ] +.RB [ -d ] +.RB [ -n ] +[ +.BI -x " mntpt" +] [ +.I net +\&... +] +.B & +.SH DESCRIPTION +.I Rip +implements the Internet RIP routing protocol +described by RFC1058 and RFC2453. +It watches the network and makes appropriate changes +to the machine's Internet routing table +(see +.B iproute +in +.IR ip (3)), +based on routing packets +broadcast by gateways on the network. +.I Rip +is only used when a single default gateway is inadequate, +typically because a machine sits on a network directly connected to +several others, +having no common gateway or router. +On networks where there is just one gateway, it is usually simpler and more efficient +to configure that statically using +.IR ndb (6) +or dynamically using DHCP/BOOTP, +rather than running +.IR rip . +.PP +.I Rip +serves the network on +.I mntpt +(default: +.BR /net ). +When it starts, +.I rip +learns its own interfaces and directly attached networks by reading +.IB mntpt /ipifc , +and notes any routes currently in +.IB mntpt /iproute . +.PP +By default, +.I rip +neither broadcasts routes nor replies to requests for its route table. +If the +.B \-b +option is given, +.I rip +periodically broadcasts changes to its routing table to each of its interfaces. +If at least one explicit +.I net +address is given, the broadcasts are restricted to just the interfaces listed +(and +.B \-b +is implied). +.PP +The +.B \-d +option causes +.I routed +to record changes it makes to the routing tables. +This can be helpful when locating misleading announcements +from rogue gateways. +A second +.B \-d +will include detailed information about every packet. +The +.B \-n +option tells +.I rip +not to change the local routing table, but only say what changes it would have made. +.PP +.I Rip +understands both version1 and version 2 of the protocol, +and interprets updates from gateways appropriately. +By default, it transmits updates using version 1; if the +.B -2 +option is given, it uses version 2 instead, which is preferable when +the network has subnets. +.\".SH FILES +.\".LR /sys/log/iproute " debugging information" +.SH SOURCE +.B /appl/cmd/ip/rip.b +.SH "SEE ALSO" +.IR ip (3), +.IR ndb (6) +.\" .IR ipconfig (8) diff --git a/man/8/rstyxd b/man/8/rstyxd new file mode 100644 index 00000000..9ee6254b --- /dev/null +++ b/man/8/rstyxd @@ -0,0 +1,104 @@ +.TH RSTYXD 8 +.SH NAME +rstyxd, styxd \- Styx-based remote execution and file service +.SH SYNOPSIS +.B auxi/rstyxd +.I alg +\&... +.PP +.B auxi/styxd +.I alg +\&... +.SH DESCRIPTION +These services are normally started by +.IR svc (8) +in response to incoming network calls. +Each expects the standard input to be connected to the client; +unusually, it is both read and written. +.PP +Both commands first authenticate the incoming call using +.IR keyring-auth (2) +via +.IR security-auth (2). +On successful authorisation, the server sets +its user identity to that of the caller, +and the client can request that a digest and/or encryption +algorithm be applied using +.IR ssl (3) +to protect the data exchanged with the server. +Each +.I alg +names a digest or encryption algorithm that the server will allow +the client to use, +in any form accepted by +.IR ssl ; +the special name +.B none +is usually listed, to allow the client to choose not to use +.IR ssl . +.PP +.I Styxd +provides Styx file service to its client. +Having authorised the client and optionally established +.IR ssl , +as described above, +it exports its name space (usually the name space inherited from +.IR svc (8)) +on the connection using +.B Sys->export +(see +.IR sys-dial (2)). +.PP +.I Rstyxd +provides a remote-execution service. +Having authorised the client and optionally established +.IR ssl , +as described above, +it reads a single line from its standard input. +The line contains a decimal value that is the count of the number +of bytes that follow, +which +.I rstyxd +reads as a +.IR utf (6)-encoded +string. +The string contains a command, which is parsed into arguments, +following the quoting +conventions of +.IR sh (1). +The first argument is the command name. +.I Rstyxd +prepares a modified name space in which +to run the command. +It mounts the connection (standard input) on +.BR /n/client , +binds +.BR /n/client/dev +onto +.BR /dev , +and opens the new +.B /dev/cons +(ie, the remote client's +.BR /dev/cons ) +on file descriptors 0, 1 and 2. +Finally, it executes the command. +.SH FILES +.TF /usr/user/keyring/default +.TP +.B /n/client +mount point used by +.I rstyxd +.TP +.BI /usr/ user /keyring/default +server's authentication data when +.IR svc (8) +run as given +.I user +.SH SOURCE +.B /appl/cmd/auxi/rstyxd.b +.br +.B /appl/cmd/auxi/styxd.b +.SH SEE ALSO +.IR keyring-auth (2), +.IR security-auth (2), +.IR getauthinfo (8) diff --git a/man/8/shutdown b/man/8/shutdown new file mode 100644 index 00000000..5385f91e --- /dev/null +++ b/man/8/shutdown @@ -0,0 +1,26 @@ +.TH SHUTDOWN 8 +.SH NAME +shutdown \- shut down system/emulator +.SH SYNOPSIS +.B shutdown +.B -h +.PP +.B shutdown +.B -r +.SH DESCRIPTION +.I Shutdown +halts +.RB ( -h ) +or restarts +.RB ( -r ) +.IR emu (1) +or a native kernel. +If restarted, +.IR emu (1) +will be given the same options as were given it when it started. +.SH FILES +.B /dev/sysctl +.SH SOURCE +.B /appl/cmd/shutdown.b +.SH "SEE ALSO" +.IR cons (3) diff --git a/man/8/signer b/man/8/signer new file mode 100644 index 00000000..1cb9d8e1 --- /dev/null +++ b/man/8/signer @@ -0,0 +1,117 @@ +.TH SIGNER 8 +.SH NAME +signer, verify, countersigner \- set-top box authentication +.SH SYNOPSIS +.B auth/signer +.PP +.BI auth/verify " set-top-box-id" +.PP +.B auth/countersigner +.SH DESCRIPTION +.I Signer +and +.I countersigner +listen for requests on the service ports +.B infsigner +and +.BR infcsigner , +respectively. +They are typically run via +.IR svc (8) +on a machine acting as authentication server for a network. +.I Verify +is invoked on the same server, after +.I signer +but before +.IR countersigner , +following an independent check of a caller's credentials. +.PP +.I Signer +constructs an authentication certificate from the signer's key (in +.BR /keydb/signerkey ) +and information from the requesting client, including +the set top box ID. +The signer's key can be created using +.IR createsignerkey (8), +but if the key does not yet exist, +.I signer +creates and initialises +.B /keydb/signerkey +itself, with an owner name of +.LR * . +.PP +.I Signer +`blinds' +the certificate by XOR-ing it with a random bit mask, then sends the result to the requesting client. +The client machine's user uses that information to establish identity with a human agent on the +signing machine. +.I Signer +also saves the both the `blinded' and `unblinded' result from the input in +.BI /keydb/signed/ set-top-box-id +for +.I verify +(see below). +.PP +.I Verify +is run on the signing server +by the agency running the authentication server, in response to +a call from a remote user who has invoked +.IR register (8) +or an equivalent. +.I Verify +checks a caller's identity using information from the file +.BI /keydb/signed/ set-top-box-id +created by +.IR signer . +The file contains the previously crafted authentication certificate and the `blinded' version of the certificate that was sent to the requesting client. +.PP +.I Verify +displays the `blinded' version textually or graphically, as appropriate, so that it can be compared to that reported by the set-top-box owner over a secure independent mechanism (for example, telephone). If the operator of +.I verify +is convinced of the identity of the caller, the operator should accept when prompted by +.IR verify . +.I Verify +then writes the authentication certificate to +.BI /keydb/countersigned/ set-top-box-id, +as input for +.I countersigner +(see +.IR signer (8)). +.PP +.I Note: +if the operator of +.I verify +accepts the identity, the set-top-box owner should be requested +to answer `yes' to the prompt displayed by +.IR register (8). +The order of +acceptance\-first on the signer, then on the client\-is essential, +to produce the countersigned certificate before invoking +.I countersigner +to read it. +.PP +.I Countersigner +sends the blinding data in +.BI /keydb/countersigned/ set-top-box-id +to the requesting client. +.SH FILES +.TF /keydb/countersigned/set-top-box-id +.TP +.B /keydb/signerkey +Secret key of the `signer' host. +.TP +.BI /keydb/signed/ set-top-box-id +Repository of `blinded' and clear certificates. +.TP +.BI /keydb/countersigned/ set-top-box-id +Repository of `unblinded' certificates. +.SH SOURCE +.B /appl/cmd/auth/signer.b +.br +.B /appl/cmd/auth/verify.b +.br +.B /appl/cmd/auth/countersigner.b +.SH SEE ALSO +.IR createsignerkey (8), +.IR register (8), +.IR svc (8) diff --git a/man/8/sntp b/man/8/sntp new file mode 100644 index 00000000..be21fab9 --- /dev/null +++ b/man/8/sntp @@ -0,0 +1,41 @@ +.TH SNTP 8 +.SH NAME +sntp \- simple network time protocol client +.SH SYNOPSIS +.B ip/sntp +[ +.B -di +] +[ +.I server +] +.SH DESCRIPTION +.I Sntp +is a simple client for the Simple Network Time Protocol (RFC1361). +It requests the time from the SNTP service on +.I server +(default: +.BR udp!$ntp!ntp ), +and if it receives a plausible reply, +sets the local time accordingly, in both +.IR rtc (3) +and +.BR /dev/time . +The +.B -d +option prints debugging text, including the time received; +the +.B -i +option stops +.I sntp +from actually updating the local time. +.SH FILES +.B #r/rtc +.br +.B /dev/time +.SH SOURCE +.B /appl/cmd/ip/sntp.b +.SH SEE ALSO +.IR date (1), +.IR cons (3) + diff --git a/man/8/srv b/man/8/srv new file mode 100644 index 00000000..b1f5984a --- /dev/null +++ b/man/8/srv @@ -0,0 +1,112 @@ +.TH SRV 8 obsolete +.SH NAME +srv \- start services +.SH SYNOPSIS +.B lib/srv +[ +.BI -n " nsfile" +] +[ +.B -v +] +[ +.B -s +] +.SH DESCRIPTION +.I Srv +starts listeners for local network services. +It is now considered obsolete: see +.IR svc (8), +which replaces it using +.IR sh (1) +and +.IR listen (1). +.PP +If the file +.B /services/namespace +exists, +.I srv +builds a new name space using +.IR newns (2). +The +.B -n +option may be used to supply a different file. +.I Srv +then starts a listener for each service configured in +.BR /services/server/config . +.PP +The configuration file is a text file. +Empty lines and lines beginning +.B # +are comments, and ignored. +Each non-comment line has at least four fields: +the server type, the service name, the network name on which to announce the service +(typically +.B tcp +or +.BR udp ), +and the path name of the service command (module). +Any further arguments are passed as arguments to that command. +.PP +Normally the server type field contains the letter +.BR S , +and +.I srv +announces the service on the network itself, listens for incoming calls, +and on each call invokes the command with any arguments given. +The standard input and output of the command are set to refer to the +network connection. +If the server type field contains the letter +.BR M , +however, +.I srv +starts the given command once during its own initialisation, and leaves the server +to announce and manage its incoming calls. +This is typically used to start self-contained services such as +.B bootp +and +.BR tftpd . +The diagnostics from all servers will appear on the standard +error of +.I srv +itself. +.PP +For example, the default configuration file includes the following lines: +.PP +.EX +.ps -2 +S infsigner tcp /dis/auth/signer.dis +S infcsigner tcp /dis/auth/countersigner.dis +S inflogin tcp /dis/auth/logind.dis +S styx tcp /dis/lib/styxd.dis none clear sha md5 rc4 sha/rc4 md5/rc4 +S rstyx tcp /dis/lib/rstyxd.dis none clear sha md5 rc4 sha/rc4 md5/rc4 +S infdb tcp /dis/lib/dbsrv.dis none clear sha md5 rc4 sha/rc4 md5/rc4 +S virgil udp /dis/lib/virgild.dis +.ps +2 +.EE +.PP +The arguments to +.IR rstyxd +and +.IR stxyd +(see +.IR rstyxd (8)), +and +.IR dbsrv (7) +should list the security algorithms supported by the server's +.IR ssl (3). +.SH FILES +.B /services/namespace +.br +.B /services/server/config +.SH SOURCE +.B /appl/lib/srv.b +.SH SEE ALSO +.IR listen (1), +.IR services (6), +.IR cs (8), +.IR dbsrv (7), +.IR rstyxd (8), +.IR svc (8) +.SH BUGS +Each service should arguably start in a minimal name space. diff --git a/man/8/styxchat b/man/8/styxchat new file mode 100644 index 00000000..11fdb378 --- /dev/null +++ b/man/8/styxchat @@ -0,0 +1,244 @@ +.TH STYXCHAT 8 +.SH NAME +styxchat \- exchange Styx messages with a server or client +.SH SYNOPSIS +.B styxchat +[ +.RI -m " messagesize" +] [ +.B -s +] [ +.B -v +] [ +.B -n +] [ +.I destination +] +.SH DESCRIPTION +.I Styxchat +exchanges messages with a Styx service. +See +.IR intro (5) +for the protocol definition. +It makes a connection to a given +.IR destination , +(or waits for a connection on +.IR destination, +if the +.B -s +option is specified), +then reads a textual representation of Styx T-messages from the standard +input and writes them on the connection, with a copy on standard output, +simultaneously reading Styx R-messages from the connection and printing a representation of them +on standard output. +Each message is represented by one line +on the standard output in the form of a literal of either +.B Tmsg +or +.B Rmsg +types defined in +.IR styx (2). +The +.B -v +option causes a second line to be written for +.B Rmsg.Read +and +.B Tmsg.Write +that shows the data transmitted, as text or binary as appropriate; +if +.B -v +appears a second time, a third line is written that +shows the text equivalent of apparently binary data (useful to see text that is surrounded by binary data). +.PP +By default, +.I destination +is the name of a file, typically one end of a named pipe. +The +.B \-n +option causes +.I destination +to be interpreted as a network address, as accepted by +.IR sys-dial (2) +(or +.I listen +with +.BR -s ). +If +.I destination +is not provided, +.B styxchat +reads and writes Styx messages on its standard input, +using +.B /dev/cons +where it would usually use its standard input and output. +.PP +Each line of standard input has the form: +.IP +.br +.BI Tversion " messagesize version" +.br +.BI Tauth " afid uname aname" +.br +.BI Tflush " oldtag" +.br +.BI Tattach " fid afid uname aname" +.br +.BI Twalk " fid newfid \f1[\fP name \f1... ]\fP" +.br +.BI Topen " fid mode" +.br +.BI Tcreate " fid name perm mode" +.br +.BI Tread " fid offset count" +.br +.BI Twrite " fid offset data" +.br +.BI Tclunk " fid" +.br +.BI Tremove " fid" +.br +.BI Tstat " fid" +.br +.BI Twstat " fid name uid gid mode mtime length" +.br +.BI nexttag " \f1[\fP tag \f1]\fP" +.br +.B dump +.PD +.PP +The input is interpreted as space-separated fields +using the quoting conventions of +.IR sh (1), +allowing fields to contain spaces. +Empty lines and lines beginning with +.B # +are ignored. +The first field on each line is normally the name of a T-message. +Subsequent fields provide parameter values for +the corresponding message. +Integers are given in the format accepted for integers +by the Limbo compiler (e.g. +.BR 16rffff ): +a +.I tag +is 16 bits, +.I offset +and +.I length +are 64 bits, and all others are 32-bit integers. +If the an integer parameter field contains +.BR ~0 , +it is taken to be the `all ones' value of appropriate size for that parameter; +this is particularly useful with +.BR Twstat , +where that value represents `no change'. +In the ``mode'' field of a qid, letters can be given, representing +mode bits: +.B d +for +.BR QTDIR , +.B l +for +.BR QTEXCL , +.B a +for +.BR QTAPPEND , +and +.B u +for +.BR QTAUTH . +In an +.B Rstat +message, the qid mode bits are copied into the +.B Rstat +mode field in the appropriate place. +.PP +Following the +.IR sh (1) +quoting rules, +an empty string is represented by a field containing \f5''\f1. +The +.I data +field is sent as its UTF-8 representation as an array of bytes. +The value for +.I fid +can be +.B nofid +(or +.BR NOFID ) +to represent the `no fid' value in the protocol. +The +.I tag +for each message is automatically supplied by +.IR styxchat , +starting from 1, and incremented with each successful message transmission. +The +.B nexttag +command will cause subsequent tags to start from +.IR tag ; +if none is given, it will print the next tag value. +The +.I tag +may be +.B notag +to represent the `no tag' value +.RB ( 16rFFFF ). +.PP +The +.B dump +command has the same effect as a +.B -v +option, allowing data display to be enabled later. +.PP +By default, +.I styxchat +sends a Styx client's T-messages and prints a server's R-messages. +The +.B -s +option causes it to present a server's view: it prints the T-messages from Styx clients, and sends R-messages +as it reads a textual representation of them from standard input: +.IP +.br +.BI Rversion " tag messagesize version" +.br +.BI Rauth " tag aqid" +.br +.BI Rflush " tag" +.br +.BI Rerror " tag ename" +.br +.BI Rattach " tag qid" +.br +.BI Rwalk " tag qid ..." +.br +.BI Ropen " tag qid iounit" +.br +.BI Rcreate " tag qid iounit" +.br +.BI Rread " tag data" +.br +.BI Rwrite " tag count" +.br +.BI Rclunk " tag" +.br +.BI Rremove " tag" +.br +.BI Rstat " tag qid mode atime mtime length name uid gid muid" +.br +.BI Rwstat " tag" +.br +.B dump +.PD +.PP +The input conventions are as above, except that tags +are required. +A +.I qid +is a single field of the form \fIpath\f1\f5.\f1\fIvers\f1[\f5.\f1\fItype\f1], +where the three values are decimal integers. +.SH SOURCE +.B /appl/cmd/styxchat.b +.SH SEE ALSO +.IR styx (2), +.IR intro (5), +.IR styxmon (8) diff --git a/man/8/styxmon b/man/8/styxmon new file mode 100644 index 00000000..48012736 --- /dev/null +++ b/man/8/styxmon @@ -0,0 +1,50 @@ +.TH STYXMON 8 +.SH NAME +styxmon \- monitor a Styx conversation +.SH SYNOPSIS +.B styxmon +[ +.B -r +] [ +.B -t +] +.I cmd +[ +.IR arg ... +] +.SH DESCRIPTION +.I Styxmon +allows the monitoring of styx messages sent and received +by +.IR cmd , +which should serve Styx through its standard input. +.I Styxmon +in its turn serves Styx through its standard input, +and writes information on the Styx messages that +it sees to the standard error. +The +.B -r +and +.B -t +options restrict the messages printed to R-messages +and T-messages respectively. +.SH EXAMPLE +Mount an instance of +.IR export (4) +of the current name space through +.I styxmon +on +.B /n/remote +to monitor all access to it through that name: +.IP +.EX +mount {styxmon {export /}} /n/remote +ls /n/remote +cp /n/remote/lib/unicode /n/remote/dev/null +.EE +.SH SOURCE +.B /appl/cmd/styxmon.b +.SH SEE ALSO +.IR styx (2), +.IR intro (5), +.IR styxchat (8) diff --git a/man/8/svc b/man/8/svc new file mode 100644 index 00000000..38d00c55 --- /dev/null +++ b/man/8/svc @@ -0,0 +1,137 @@ +.TH SVC 8 +.SH NAME +svc: auth, net, registry, rstyx, styx \- start Inferno network services +.SH SYNOPSIS +.B svc/net +.br +.B svc/auth +.br +.B svc/registry +.br +.B svc/rstyx +.br +.B svc/styx +.SH DESCRIPTION +The directory +.B /dis/svc +contains several +.IR sh (1) +scripts to start network listeners (see +.IR listen (1)) +that give remote hosts access to specific Inferno services on the current host. +The scripts can be edited to suit (or configure themselves to suit) the +requirements of a particular site. +.PP +A host that is not an authentication server and wishes to start the usual network services +can simply invoke +.BR svc/net , +which runs all the others +.I except +authentication. +Authentication servers should normally run +.B svc/auth +instead, to start local name and authentication services, and a listener +for each authentication service but +.I not +file service or remote execution. +.PP +.I Auth +must be run (only) on a host that is to act as an authentication server, +providing signing and other authentication services to itself and the network. +The files +.BR /keydb/signerkey , +created by +.IR createsignerkey (8), +and +.BR /keydb/keys , +managed by +.IR changelogin (8), +must exist. +If so, +.I auth +starts +.IR keyfs (4), +which prompts for the password that protects +.BR /keydb/keys , +the file of secrets shared +with registered users. +If the key file is empty, the confirmed password will be used in future to encrypt and decrypt the file; +otherwise the password must match the one used to encrypt the key file. +If the password is valid, listeners are started for +.IR keysrv (4), +to allow passwords to be changed remotely, +.IR logind (8), +to provide signed certificates, +and +.IR signer (8). +Note that although an authentication server must be present to run +.IR getauthinfo (8) +to obtain credentials to access another service, once those have been +issued, the recipient can subsequently present them (if still valid) to +access that service without further involvement by the service (ie, it +need not then be running). +See +.IR changelogin (8) +for the user registration program, which can be used once +.I auth +has started. +.PP +.I Registry +starts the dynamic service registry (see +.IR registry (4)) +if it is not already running, +putting it at the conventional location for the local registry, +.BR /mnt/registry . +Initial (static) service descriptions are taken from +.B /lib/ndb/registry +if it exists. +It then starts a listener to give other hosts access to the registry as a Styx +service at +.BR tcp!*!registry , +normally port 6675. +.PP +.I Rstyx +listens for incoming calls to the +.B rstyx +service, and invokes +.IR rstyxd (8) +to deal with each one. +.PP +.I Styx +listens for incoming calls to the +.B styx +service, +and for each one, authenticates the caller, then calls +.IR export (4) +to export the current root. +.SH FILES +.TF /keydb/signerkey +.TP +.B /keydb/keys +encrypted file containing user secrets +.TP +.B /keydb/signerkey +private key of authentication server +.SH SOURCE +.B /appl/svc/auth.sh +.br +.B /appl/svc/net.sh +.br +.B /appl/svc/registry.sh +.br +.B /appl/svc/rstyx.sh +.br +.B /appl/svc/styx.sh +.SH SEE ALSO +.IR listen (1), +.IR export (4), +.IR keyfs (4), +.IR keysrv (4), +.IR registry (4), +.IR changelogin (8), +.IR createsignerkey (8), +.IR cs (8), +.IR dns (8), +.IR logind (8), +.IR rstyxd (8), +.IR signer (8) diff --git a/man/8/touchcal b/man/8/touchcal new file mode 100644 index 00000000..d18bc35e --- /dev/null +++ b/man/8/touchcal @@ -0,0 +1,39 @@ +.TH TOUCHCAL 8 +.SH NAME +touchcal \- touch screen calibration +.SH SYNOPSIS +.B touchcal +.SH DESCRIPTION +.I Touchcal +draws a cross-hair in each corner of the screen in turn (clockwise from the lower left hand corner), +and waits each time for the user to touch the centre of the cross-hair with the stylus. +It then prompts with a final cross-hair in the centre of the screen, and waits once +more for the user to touch its centre with the stylus. +The process is repeated until +.I touchcal +can calculate a transformation matrix that consistently maps the touch panel to screen +coordinates. +It then writes corresponding calibration commands for +.IR touch (3) +on its standard output, which +can be saved in a file on the device, perhaps +provided in NVRAM by +.IR tinyfs (3) +or a file system in +.IR ftl (3). +.PP +.I Touchcal +can be used both inside and outside the +.IR wm (1) +environment, +allowing calibration when the system is initialised, and whilst +the window system is running. +.SH FILES +.TF "/dev/touchctl " +.TP +.B /dev/touchctl +reset or read existing settings +.SH SOURCE +.B /appl/cmd/touchcal.b +.SH SEE ALSO +.IR touch (3) diff --git a/man/8/virgild b/man/8/virgild new file mode 100644 index 00000000..30a61f10 --- /dev/null +++ b/man/8/virgild @@ -0,0 +1,55 @@ +.TH VIRGILD 8 +.SH NAME +virgild \- connection service for remote clients +.SH SYNOPSIS +.B ndb/cs +.br +.B ip/virgild +.SH DESCRIPTION +.I Virgild +receives requests for name service on UDP/IP +port +.BR virgil , +defined as +2202 by +.IR services (6), +and hard-coded in +.IR virgil (2). +Each request has the form: +.IP +.IB userid ? machine-name +.PP +.I Virgild +translates the +.I machine-name +using the local connection server +(see +.IR cs (8)), +and sends a response of the following form to the requesting client: +.IP +.IB userid ? machine-name = network-address +.PP +If the +.I machine-name +cannot be translated, +.I virgild +makes no response; +unless another server replies, the client's request will time out. +.PP +.I Virgild +requires that +.IR cs (8) +be running before it is started. +.SH SOURCE +.B /appl/cmd/ip/virgild.b +.SH "SEE ALSO" +.IR rcmd (1), +.IR cs (8) +.SH BUGS +The +.I userid +part is currently unused but must still be included. +.br +.I Virgild +is single threaded: a delay in translating a name for one client will delay response +to any subsequent clients. diff --git a/man/9/0intro b/man/9/0intro new file mode 100644 index 00000000..4b7cd4fd --- /dev/null +++ b/man/9/0intro @@ -0,0 +1,134 @@ +.TH INTRO 9 +.SH NAME +intro \- introduction to Inferno Tk +.SH DESCRIPTION +This section of the manual provides a reference for the Inferno +Tk implementation, +which is accessed by Limbo programs via +.IR tk (2), +and from +.IR sh (1) +via +.IR sh-tk (1). +.PP +The following pages were derived by Vita Nuova from documentation that is +.IP +Copyright © 1990 The Regents of the University of California +.br +Copyright © 1994-1996 Sun Microsystems, Inc. +.br +See +.IR copyright (9) +for the full copyright notice. +.PP +The format of the pages has changed to follow the format of the rest of +this manual, but more important, the content has been changed +(typically in small ways) to reflect the variant of Tk implemented by +Inferno. +.SS Programming Interface +The interface to Inferno Tk is exclusively through the +.IR tk (2) +module; all the Tk commands described in this section of +the manual are excecuted by passing them as strings to the +.B cmd +function in that module. +The Inferno Tk implementation is based on the Tk 4.0 documentation, +but there are many differences, probably the greatest of which is that +there is no associated Tcl implementation, so almost every +Inferno application using Tk will need to have some Limbo code +associated with it (the +.IR sh-tk (1) +shell module can also fulful this rôle). See ``An Overview of Limbo/Tk'' +in Volume 2 for a tutorial-style introduction to the use of Inferno Tk +which summarises the differences from Tk 4.0. +.SS Tk Commands +The command string passed to +.B tk->cmd +may contain one or more Tk commands, separated by semicolons. +A semicolon is not a command separator when it is nested in braces +.RB ( {} ) +or brackets +.RB ( [] ) +or it is escaped by a backslash +.RB ( \e ). +Each command is divided into +.IR words : +sequences of characters separated by one or more +blanks and tabs. +.PP +There is also a `super quote' convention: at any point in the command +string a single quote mark +.RB ( ' ) +means that the entire rest of the string should be treated as one word. +.PP +A word beginning with an opening brace +.RB ( { ) +continues until the balancing closing brace +.RB ( } ) +is reached. The outer brace characters are stripped. A backslash +can be used to escape a brace in this context. Backslash +characters not used to escape braces are left unchanged. +.PP +A word beginning with an opening bracket +.RB ( [ ) +continues until the balancing closing bracket +.RB ( ] ) +is reached. The enclosed string is then evaluated as if it +were a command string, and the resulting value +is used as the contents of the word. +.PP +Single commands are executed in order until they are all done +or an error is encountered. By convention, an error is signaled by a +return value starting with an exclamation mark +.RB ( ! ). +The return value from +.B tk->cmd +is the return value of the first error-producing +command or else the return value of the final single command. +.PP +To execute a single command, the first word is examined. It +must either begin with dot +.RB ( . ) +in which case it must name an existing widget, which will +interpret the rest of the command according to its type, +or one of the following words, each of which is +documented in a manual page of that name in this section: +.EX + +bind focus lower scrollbar +button frame menu see +canvas grab menubutton send +checkbutton grid pack text +cursor image radiobutton update +destroy label raise variable +entry listbox scale +.EE +.SS Widget Options +Each manual page in this section documents the options +that a particular command will accept. A number of options +are common to several of the widgets and are named as +``standard options'' near the beginning of the manual page +for each widget. These options are documented in +.IR options (9). +The types of value required as arguments to options within +Inferno Tk are documented under +.IR types (9). +.SH SEE ALSO +.IR options (9), +.IR types (9), +.IR tk (2), +.IR sh-tk (1), +.IR tkcmd (1), +.IR wmlib (2), +.IR draw-intro (2), +``An Overview of Limbo/Tk'' in Volume 2. +.SH BUGS +The bracket +.RB ( [] ) +command interpretation is not applied consistently throughout +the Inferno Tk commands (notably, the argument to +the +.IR send (9) +command will not interpret this correctly). +Moreover, if the string to be substituted is significantly bigger +than the command it was substituting, then it will be truncated. diff --git a/man/9/1copyright b/man/9/1copyright new file mode 100644 index 00000000..a4087032 --- /dev/null +++ b/man/9/1copyright @@ -0,0 +1,55 @@ +.TH COPYRIGHT 9 +.SH NAME +copyright \- copyright notice for Tk documentation +.SH DESCRIPTION +The following pages were derived by Vita Nuova from documentation that is +.IP +Copyright © 1990 The Regents of the University of California +.br +Copyright © 1994-1996 Sun Microsystems, Inc. +.PP +and was made available on the following terms: +.IP +.ps -1 +.vs -1 +This software is copyrighted by the Regents of the University of +California, Sun Microsystems, Inc., and other parties. The following +terms apply to all files associated with the software unless explicitly +disclaimed in individual files. + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY +FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY +DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE +IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE +NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR +MODIFICATIONS. + +GOVERNMENT USE: If you are acquiring this software on behalf of the +U.S. government, the Government shall have only "Restricted Rights" +in the software and related documentation as defined in the Federal +Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you +are acquiring the software on behalf of the Department of Defense, the +software shall be classified as "Commercial Computer Software" and the +Government shall have only "Restricted Rights" as defined in Clause +252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the +authors grant the U.S. Government and others acting in its behalf +permission to use and distribute the software in accordance with the +terms specified in this license. +.ps +1 +.vs +1 diff --git a/man/9/INDEX b/man/9/INDEX new file mode 100644 index 00000000..1444c3a8 --- /dev/null +++ b/man/9/INDEX @@ -0,0 +1,34 @@ +intro 0intro +1copyright 1copyright +copyright 1copyright +bind bind +button button +canvas canvas +checkbutton checkbutton +choicebutton choicebutton +cursor cursor +destroy destroy +entry entry +focus focus +frame frame +grab grab +grid grid +image image +label label +listbox listbox +lower lower +menu menu +menubutton menubutton +options options +pack pack +panel panel +radiobutton radiobutton +raise raise +scale scale +scrollbar scrollbar +see see +send send +text text +types types +update update +variable variable diff --git a/man/9/bind b/man/9/bind new file mode 100644 index 00000000..103e61a3 --- /dev/null +++ b/man/9/bind @@ -0,0 +1,194 @@ +.TH BIND 9 +.SH NAME +bind \- Arrange for events to invoke Tk scripts +.SH SYNOPSIS +\f5bind\fI tag sequence script\fR +.sp +\f5bind\fI tag sequence \f5+\fIscript\fR +.SH INTRODUCTION +The \f5bind\fR command associates Tk scripts with window events. +If all three arguments are specified, \f5bind\fR will +arrange for \fIscript\fR (a Tk script) to be evaluated whenever +the event(s) given by \fIsequence\fR occur in the window(s) +identified by \fItag\fR. +If \fIscript\fR is prefixed with a ``+'', then it is appended to +any existing binding for \fIsequence\fR; otherwise \fIscript\fR replaces +any existing binding. +If \fIscript\fR is an empty string then the current binding for +\fIsequence\fR is destroyed, leaving \fIsequence\fR unbound. +In all of the cases where a \fIscript\fR argument is provided, +\f5bind\fR returns an empty string. +If \fIscript\fR is prefixed with a ``-'', then any existing binding for +\fIsequence\fR, whose script is exactly the same as \fIscript\fR, is removed. +The \fItag\fR argument gives the pathname of the window +to which \fIsequence\fR is bound. +.SH "EVENT PATTERNS" +The \fIsequence\fR argument specifies a sequence of one or more +event patterns, with optional white space between the patterns. Each +event pattern may +take one of two forms. In the simplest case it is a single +printing ASCII character, such as \f5a\fR or \f5[\fR. The character +may not be a space character or the character \f5<\fR. This form of +pattern matches a \f5KeyPress\fR event for the particular +character. The second form of pattern is longer but more general. +It has the following syntax: +.RS +.EX +\f5<\fIevent\f5-\fIevent\f5-\fR...\f5-\fIevent\f5>\fR +.EE +.RE +The following events are accepted: +.TP +.BR Key \ or\ Keypress +This represents the press of the character in the following +.IR event . +If there is no following event, this represents the press of +any key. The key letter may be escaped with a backslash +.RB ( \e ) +to prevent any character (e.g. +.BR > ) +from being treated specially. +.TP +.B Configure +This event occurs whenever the widget is configured +such that its requested size changes. +.TP +.B Control +This represents the press of the character in the following +.I +event +with the Control key pressed. The character may be quoted +as for +.BR Key . +.TP +.BR ButtonPress \ or\ Button +This represents the pressed state of the mouse button given by +the following event, which should be 1, 2, or 3. If there is no +following event, this represents the press of any button. +If the mouse is moved with a button pressed, the +Button event is delivered in combination with a Motion event +so long as the button remains pressed. +.TP +.B ButtonRelease +Like +.BR ButtonPress , +but represents the release of any button. +.TP +.B Motion +Mouse movement. +.TP +.B Double +Any events in the sequence representing button presses must +be double-clicked for the sequence to match. +.TP +.B Map +The event that a toplevel widget is mapped onto the screen. +.TP +.B Unmap +The event that a toplevel widget is unmapped from the screen. +.TP +.B Enter +The event of the mouse entering the widget from outside. +.TP +.B Leave +The event of the mouse leaving the boundaries of the widget. +.TP +.B FocusIn +The event of the widget getting the keyboard focus. +.TP +.B FocusOut +The event of the widget losing the keyboard focus. +.RE +The event sequence can contain any combination of the above +events. They are treated independently, and if any of the +events occur, the sequence matches. You cannot combine +key presses of more than one key. Events will not be combined +on delivery, except that +.B Motion +events may be combined with button presses (possibly doubled). +.TP +.B Destroy +The event of the widget being destroyed. +See +.IR destroy (9) +for details of widget destruction. + +.SH "BINDING SCRIPTS AND SUBSTITUTIONS" +The \fIscript\fR argument to \f5bind\fR is a Tk script, +which will be executed whenever the given event sequence occurs. +If \fIscript\fR contains +any \f5%\fR characters, then the script will not be +executed directly. Instead, a new script will be +generated by replacing each \f5%\fR, and the character following +it, with information from the current event. The replacement +depends on the character following the \f5%\fR, as defined in the +list below. Unless otherwise indicated, the +replacement string is the decimal value of the given field from +the current event. +Some of the substitutions are only valid for +certain types of events; if they are used for other types of events +the value substituted is undefined. +.IP \f5%%\fR 5 +Replaced with a single percent. +.IP \f5%b\fR 5 +The number of the button that was pressed or released. Valid only +for \f5ButtonPress\fR and \f5ButtonRelease\fR events. +.IP \f5%h\fR 5 +For +.B Configure +events, this is +the old requested height of the widget. +.IP \f5%s\fR 5 +For mouse events, this is the logical OR of the mouse buttons; +for keyboard events, it is the decimal value of the pressed character. +.IP \f5%w\fR 5 +For +.B Configure +events, this is the old requested width of the widget. +.IP \f5%x\fR 5 +The x coordinate from the event, relative to the origin +of the toplevel window. Valid only for +.BR Enter , +.BR Leave , +and mouse events. +.IP \f5%y\fR 5 +The y coordinate from the event, relative to the origin +of the toplevel window. Valid only for +.BR Enter , +.BR Leave , +and mouse events. +.IP \f5%A\fR 5 +The ASCII character corresponding to a \f5Key\fP event. +.IP \f5%K\fR 5 +The pressed character for the event, as four hexadecimal digits. +Valid only for \f5Key\fP events. +.IP \f5%W\fR 5 +The path name of the window to which the event was reported (the +\fIwindow\fR field from the event). Valid for all event types. +.IP \f5%X\fR 5 +Same as +.B %x +except that the screen coordinate system is used. +.IP \f5%Y\fR 5 +Same as +.B %y +except that the screen coordinate system is used. +.LP +The replacement string for a %-replacement is formatted as a proper +Tk list element. +This means that it will be surrounded with braces +if it contains spaces, or special characters such as \f5$\fR and +\f5{\fR may be preceded by backslashes. +This guarantees that the string will be passed through the Tk +parser when the binding script is evaluated. +.SH BUGS +The above scheme is not ideal, and will probably be fixed +in the future. +Quoting is a mess - in particular, the quoting provided for the +.B %A +substitution does not work correctly when a quoted character +is re-interpreted by Tk. +.LP +The length of binding scripts is limited to +128 characters. + diff --git a/man/9/button b/man/9/button new file mode 100644 index 00000000..57ba93c7 --- /dev/null +++ b/man/9/button @@ -0,0 +1,133 @@ +.TH BUTTON 9 +.SH NAME +button \- Create and manipulate button widgets +.SH SYNOPSIS +\f5button\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -disabledcolor -justify +-activeforeground -font -relief +-anchor -foreground -takefocus +-background -highlightcolor -text +-bitmap -highlightthickness -underline +-borderwidth -image +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -command \fItkcmd\fP +Specifies a Tk command to associate with the button. This command +is typically invoked when mouse button 1 is released over the button +window. +.TP +.B -height \fIdist\fP +Specifies a desired height for the button. +If this option isn't specified, the button's desired height is computed +from the size of the image or bitmap or text being displayed in it. +.TP +.B -state \fIstate\fP +Specifies one of three states for the button: \f5normal\fR, \f5active\fR, +or \f5disabled\fR. In normal state the button is displayed using the +\f5foreground\fR and \f5background\fR options. The active state is +typically used when the pointer is over the button. In active state +the button is displayed using the \f5activeForeground\fR and +\f5activeBackground\fR options. Disabled state means that the button +should be insensitive: the default bindings will refuse to activate +the widget and will ignore mouse button presses. +In this state the \f5background\fR option determines how the button is +displayed. +.TP +.B -width \fIdist\fP +Specifies a desired width for the button. +If this option isn't specified, the button's desired width is computed +from the size of the image or bitmap or text being displayed in it. +.SH DESCRIPTION +The \f5button\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a button widget. +Additional +options, described above, may be specified on the command line. +to configure aspects of the button such as its colours, font, +text, and initial relief. The \f5button\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A button is a widget that displays a textual string, bitmap or image. +If text is displayed, it must all be in a single font, but it +can occupy multiple lines on the screen (if it contains newlines) and +one of the characters may optionally be underlined using the +\f5underline\fR option. +It can display itself in either of three different ways, according +to +the \f5state\fR option; +it can be made to appear raised, sunken, or flat. When a user invokes the +button (by pressing mouse button 1 with the cursor over the +button), then the Tk command specified in the \f5-command\fR +option is invoked. +.SH "WIDGET COMMAND" +The \f5button\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for button widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5button\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5button\fR +command. +.TP +\fIpathName \f5invoke\fR +Invoke the Tk command associated with the button, if there is one. +The return value is the return value from the Tk command, or an +empty string if there is no command associated with the button. +This command is ignored if the button's state is \f5disabled\fR. + +.SH "DEFAULT BINDINGS" +Tk automatically creates bindings for buttons that give them +the following default behaviour: +.IP [1] +A button activates whenever the mouse passes over it and deactivates +whenever the mouse leaves the button. +.IP [2] +A button's relief is changed to sunken whenever mouse button 1 is +pressed over the button, and the relief is restored to its original +value when button 1 is later released. +.IP [3] +If mouse button 1 is pressed over a button and later released over +the button, the button is invoked. However, if the mouse is not +over the button when button 1 is released, then no invocation occurs. +.IP [4] +If the +.B Enter +or +.B Space +key is pressed when the button has keyboard focus, +the button is invoked. +.PP +If the button's state is \f5disabled\fR then none of the above +actions occur: the button is completely non-responsive. +.PP +The behaviour of buttons can be changed by defining new bindings for +individual widgets. +.SH SEE ALSO +.IR checkbutton (9), +.IR choicebutton (9), +.IR options (9), +.IR radiobutton (9), +.IR types (9) diff --git a/man/9/canvas b/man/9/canvas new file mode 100644 index 00000000..6941cba0 --- /dev/null +++ b/man/9/canvas @@ -0,0 +1,1358 @@ +.TH CANVAS 9 +.SH NAME +canvas \- Create and manipulate canvas widgets +.SH SYNOPSIS +\f5canvas\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-background -selectbackground -takefocus +-borderwidth -selectborderwidth -xscrollcommand +-relief -selectforeground -yscrollcommand +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -closeenough \fIdist\fP +Specifies a floating-point value indicating how close the mouse cursor +must be to an item before it is considered to be ``inside'' the item. +Defaults to 1.0. +.TP +.B -confine \fIboolean\fP +Specifies a boolean value that indicates whether or not it should be +allowable to set the canvas's view outside the region defined by the +\f5scrollRegion\fR argument. +Defaults to true, which means that the view will +be constrained within the scroll region. +.TP +.B -height \fIdist\fP +Specifies a desired window height that the canvas widget should request from +its geometry manager. The value may be specified in any +of the forms described in the COORDINATES section below. +.TP +.B -scrollregion \fIlist\fP +Specifies a list with four \fIdist\fP coordinates describing the left, top, right, and +bottom coordinates of a rectangular region. +This region is used for scrolling purposes and is considered to be +the boundary of the information in the canvas. +Each of the coordinates may be specified +in any of the forms given in the COORDINATES section below. +.TP +.B -width \fIdist\fP +Specifies a desired window width that the canvas widget should request from +its geometry manager. The value may be specified in any +of the forms described in the COORDINATES section below. +.br +.TP +.B -xscrollincrement \fIdist\fP +Specifies an increment for horizontal scrolling, in any of the usual forms +permitted for screen distances. If the value of this option is greater +than zero, the horizontal view in the window will be constrained so that +the canvas x coordinate at the left edge of the window is always an even +multiple of \f5xscrollicrement\fR; furthermore, the units for scrolling +(e.g., the change in view when the left and right arrows of a scrollbar +are selected) will also be \f5xscrollicrement\fR. If the value of +this option is less than or equal to zero, then horizontal scrolling +is unconstrained. +.TP +.B -yscrollincrement \fIdist\fP +Specifies an increment for vertical scrolling, in any of the usual forms +permitted for screen distances. If the value of this option is greater +than zero, the vertical view in the window will be constrained so that +the canvas y coordinate at the top edge of the window is always an even +multiple of \f5yscrollicrement\fR; furthermore, the units for scrolling +(e.g., the change in view when the top and bottom arrows of a scrollbar +are selected) will also be \f5yscrollicrement\fR. If the value of +this option is less than or equal to zero, then vertical scrolling +is unconstrained. +.TP +.B -buffer \fIwhat\fP +Specifies how much of the canvas region will be +backed by an offscreen bitmap buffer. +\fIWhat\fP can be one of \f5all\fP (the entire scroll region +will be buffered), \f5visible\fP (only the visible area), \f5none\fP +(no buffering) or \f5auto\fP (equivalent to either \f5none\fP +or \f5visible\fP depending on whether the canvas is packed inside +another canvas or not). + +.SH INTRODUCTION +The \f5canvas\fR command creates a new window (given +by the \fIpathName\fR argument) and makes it into a canvas widget. +Additional options, described above, may be specified on the +command line +to configure aspects of the canvas such as its colours and 3-D relief. +The \f5canvas\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +Canvas widgets implement structured graphics. +A canvas displays any number of \fIitems\fR, which may be things like +rectangles, circles, lines, and text. +Items may be manipulated (e.g. moved or re-coloured) and commands may +be associated with items in much the same way that the \f5bind\fR +command allows commands to be bound to widgets. For example, +a particular command may be associated with the <Button-1> event +so that the command is invoked whenever button 1 is pressed with +the mouse cursor over an item. +This means that items in a canvas can have behaviours defined by +the Tk scripts bound to them. + +.SH "DISPLAY LIST" +The items in a canvas are ordered for purposes of display, +with the first item in the display list being displayed +first, followed by the next item in the list, and so on. +Items later in the display list obscure those that are +earlier in the display list and are sometimes referred to +as being ``on top'' of earlier items. +When a new item is created it is placed at the end of the +display list, on top of everything else. +Widget commands may be used to re-arrange the order of the +display list. + +.SH "ITEM IDS AND TAGS" +Items in a canvas widget may be named in either of two ways: +by id or by tag. +Each item has a unique identifying number which is assigned to +that item when it is created. The id of an item never changes +and id numbers are never re-used within the lifetime of a +canvas widget. +.PP +Each item may also have any number of \fItags\fR associated +with it. A tag is just a string of characters, and it may +take any form except that of an integer. +For example, ``x123'' is OK but ``123'' isn't. +The same tag may be associated with many different items. +This is commonly done to group items in various interesting +ways; for example, all selected items might be given the +tag ``selected''. +.PP +The tag \f5all\fR is implicitly associated with every item +in the canvas; it may be used to invoke operations on +all the items in the canvas. +.PP +The tag \f5current\fR is managed automatically by Tk; +it applies to the \fIcurrent item\fR, which is the +topmost item whose drawn area covers the position of +the mouse cursor. +If the mouse is not in the canvas widget or is not over +an item, then no item has the \f5current\fR tag. +.PP +When specifying items in canvas widget commands, if the +specifier is an integer then it is assumed to refer to +the single item with that id. +If the specifier is not an integer, then it is assumed to +refer to all of the items in the canvas that have a tag +matching the specifier. +The symbol \fItagOrId\fR is used below to indicate that +an argument specifies either an id that selects a single +item or a tag that selects zero or more items. +Some widget commands only operate on a single item at a +time; if \fItagOrId\fR is specified in a way that +names multiple items, then the normal behaviour is for +the command to use the first (lowest) of these items in +the display list that is suitable for the command. +Exceptions are noted in the widget command descriptions +below. +.SH COORDINATES +All coordinates related to canvases are stored as fixed-point +numbers. +Coordinates and distances are specified as documented +in the +.I dist +section of +.IR types (9). +.SH TRANSFORMATIONS +Normally the origin of the canvas coordinate system is at the +upper-left corner of the window containing the canvas. +It is possible to adjust the origin of the canvas +coordinate system relative to the origin of the window using the +\f5xview\fR and \f5yview\fR widget commands; this is typically used +for scrolling. +Canvases do not support scaling or rotation of the canvas coordinate +system relative to the window coordinate system. +.PP +Individual items may be moved or scaled using widget commands +described below, but they may not be rotated. + +.SH INDICES +Text items support the notion of an \fIindex\fR for identifying +particular positions within the item. +Indices are used for commands such as inserting text, deleting +a range of characters, and setting the insertion cursor position. +An index may be specified in any of a number of ways, and +different types of items may support different forms for +specifying indices. +Text items support the following forms for an index. +Note that it is possible to refer to the character just after +the last one in the text item; this is necessary for such +tasks as inserting new text at the end of the item. +.TP 10 +\fInumber\fR +A decimal number giving the position of the desired character +within the text item. +0 refers to the first character, 1 to the next character, and +so on. +A number less than 0 is treated as if it were zero, and a +number greater than the length of the text item is treated +as if it were equal to the length of the text item. +.TP 10 +\f5end\fR +Refers to the character just after the last one in the item +(same as the number of characters in the item). +.TP 10 +\f5insert\fR +Refers to the character just before which the insertion cursor +is drawn in this item. +.TP 10 +\f5sel.first\fR +Refers to the first selected character in the item. +If the selection isn't in this item then this form is illegal. +.TP 10 +\f5sel.last\fR +Refers to the last selected character in the item. +If the selection isn't in this item then this form is illegal. +.TP 10 +\f5@\fIx,y\fR +Refers to the character at the point given by \fIx\fR and +\fIy\fR, where \fIx\fR and \fIy\fR are specified in the coordinate +system of the canvas. +If \fIx\fR and \fIy\fR lie outside the coordinates covered by the +text item, then they refer to the first or last character in the +line that is closest to the given point. + +.SH "WIDGET COMMAND" +The \f5canvas\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. +The following widget commands are possible for canvas widgets: +.TP +\fIpathName \f5addtag \fItag searchSpec \fR?\fIarg arg ...\fR? +For each item that meets the constraints specified by +\fIsearchSpec\fR and the \fIarg\fRs, add +\fItag\fR to the list of tags associated with the item if it +isn't already present on that list. +It is possible that no items will satisfy the constraints +given by \fIsearchSpec and \fIarg\fRs, in which case the +command has no effect. +This command returns an empty string as result. +\fISearchSpec\fR and \fIarg\fR's may take any of the following +forms: +.RS +.TP +\f5above \fItagOrId\fR +Selects the item just after (above) the one given by \fItagOrId\fR +in the display list. +If \fItagOrId\fR denotes more than one item, then the last (topmost) +of these items in the display list is used. +.TP +\f5all\fR +Selects all the items in the canvas. +.TP +\f5below \fItagOrId\fR +Selects the item just before (below) the one given by \fItagOrId\fR +in the display list. +If \fItagOrId\fR denotes more than one item, then the first (lowest) +of these items in the display list is used. +.TP +\f5closest \fIx y \fR?\fIhalo\fR? ?\fIstart\fR? +Selects the item closest to the point given by \fIx\fR and \fIy\fR. +If more than one item is at the same closest distance (e.g. two +items overlap the point), then the top-most of these items (the +last one in the display list) is used. +If \fIhalo\fR is specified, then it must be a non-negative +value. +Any item closer than \fIhalo\fR to the point is considered to +overlap it. +The \fIstart\fR argument may be used to step circularly through +all the closest items. +If \fIstart\fR is specified, it names an item using a tag or id +(if by tag, it selects the first item in the display list with +the given tag). +Instead of selecting the topmost closest item, this form will +select the topmost closest item that is below \fIstart\fR in +the display list; if no such item exists, then the selection +behaves as if the \fIstart\fR argument had not been specified. +.TP +\f5enclosed\fR \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR +Selects all the items completely enclosed within the rectangular +region given by \fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR. +\fIX1\fR must be no greater then \fIx2\fR and \fIy1\fR must be +no greater than \fIy2\fR. +.TP +\f5overlapping\fR \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR +Selects all the items that overlap or are enclosed within the +rectangular region given by \fIx1\fR, \fIy1\fR, \fIx2\fR, +and \fIy2\fR. +\fIX1\fR must be no greater then \fIx2\fR and \fIy1\fR must be +no greater than \fIy2\fR. +.TP +\f5withtag \fItagOrId\fR +Selects all the items given by \fItagOrId\fR. +.RE +.TP +\fIpathName \f5bbox \fItagOrId\fR ?\fItagOrId tagOrId ...\fR? +Returns a list with four elements giving an approximate bounding box +for all the items named by the \fItagOrId\fR arguments. +The list has the form ``\fIx1 y1 x2 y2\fR'' such that the drawn +areas of all the named elements are within the region bounded by +\fIx1\fR on the left, \fIx2\fR on the right, \fIy1\fR on the top, +and \fIy2\fR on the bottom. +The return value may overestimate the actual bounding box by +a few pixels. +If no items match any of the \fItagOrId\fR arguments or if the +matching items have empty bounding boxes (i.e. they have nothing +to display) +then an empty string is returned. +.TP +\fIpathName \f5bind \fItagOrId\fR ?\fIsequence\fR? ?\fIcommand\fR? +This command associates \fIcommand\fR with all the items given by +\fItagOrId\fR such that whenever the event sequence given by +\fIsequence\fR occurs for one of the items the command will +be invoked. +This widget command is similar to the \f5bind\fR command except that +it operates on items in a canvas rather than entire widgets. +See the \f5bind\fR manual entry for complete details +on the syntax of \fIsequence\fR and the substitutions performed +on \fIcommand\fR before invoking it. +If all arguments are specified then a new binding is created, replacing +any existing binding for the same \fIsequence\fR and \fItagOrId\fR +(if the first character of \fIcommand\fR is ``+'' then \fIcommand\fR +augments an existing binding rather than replacing it). +In this case the return value is an empty string. +If \fIcommand\fR is omitted then the command returns the \fIcommand\fR +associated with \fItagOrId\fR and \fIsequence\fR (an error occurs +if there is no such binding). +If both \fIcommand\fR and \fIsequence\fR are omitted then the command +returns a list of all the sequences for which bindings have been +defined for \fItagOrId\fR. +.RS +.PP +The only events for which bindings may be specified are those related +to the mouse and keyboard, such as \f5Enter\fR, \f5Leave\fR, +\f5ButtonPress\fR, \f5Motion\fR, and \f5KeyPress\fR. +The handling of events in canvases uses the current item defined +in ITEM IDS AND TAGS above. +\f5Enter\fR and \f5Leave\fR events trigger for an item when it +becomes the current item or ceases to be the current item; note +that these events are different than \f5Enter\fR and \f5Leave\fR +events for windows. +Mouse-related events are directed to the current item, if any. +Keyboard-related events are directed to the focus item, if any +(see the \f5focus\fR widget command below for more on this). +.PP +It is possible for multiple bindings to match a particular event. +This could occur, for example, if one binding is associated with the +item's id and another is associated with one of the item's tags. +When this occurs, all of the matching bindings are invoked. +A binding associated with the \f5all\fR tag is invoked first, +followed by one binding for each of the item's tags (in order), +followed by a binding associated with the item's id. +If there are multiple matching bindings for a single tag, +then only the most specific binding is invoked. +A \f5continue\fR command in a binding script terminates that +script, and a \f5break\fR command terminates that script +and skips any remaining scripts for the event, just as for the +\f5bind\fR command. +.PP +If bindings have been created for a canvas window using the \f5bind\fR +command, then they are invoked in addition to bindings created for +the canvas's items using the \f5bind\fR widget command. +The bindings for items will be invoked before any of the bindings +for the window as a whole. +.RE +.TP +\fIpathName \f5canvasx \fIscreenx\fR ?\fIgridspacing\fR? +Given a window x-coordinate in the canvas \fIscreenx\fR, this command returns +the canvas x-coordinate that is displayed at that location. +If \fIgridspacing\fR is specified, then the canvas coordinate is +rounded to the nearest multiple of \fIgridspacing\fR units. +.TP +\fIpathName \f5canvasy \fIscreeny\fR ?\fIgridspacing\fR? +Given a window y-coordinate in the canvas \fIscreeny\fR this command returns +the canvas y-coordinate that is displayed at that location. +If \fIgridspacing\fR is specified, then the canvas coordinate is +rounded to the nearest multiple of \fIgridspacing\fR units. +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5canvas\fR +command. +.TP +\fIpathName \f5configure ?\fIoption\fR? ?\fIvalue\fR? ?\fIoption value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5canvas\fR +command. +.TP +\fIpathName\fR \f5coords \fItagOrId \fR?\fIx0 y0 ...\fR? +Query or modify the coordinates that define an item. +If no coordinates are specified, this command returns a list +whose elements are the coordinates of the item named by +\fItagOrId\fR. +If coordinates are specified, then they replace the current +coordinates for the named item. +If \fItagOrId\fR refers to multiple items, then +the first one in the display list is used. +.TP +\fIpathName \f5create \fItype x y \fR?\fIx y ...\fR? ?\fIoption value ...\fR? +Create a new item in \fIpathName\fR of type \fItype\fR. +The exact format of the arguments after \f5type\fR depends +on \f5type\fR, but usually they consist of the coordinates for +one or more points, followed by specifications for zero or +more item options. +See the subsections on individual item types below for more +on the syntax of this command. +This command returns the id for the new item. +.TP +\fIpathName \f5dchars \fItagOrId first \fR?\fIlast\fR? +For each item given by \fItagOrId\fR, delete the characters +in the range given by \fIfirst\fR and \fIlast\fR, +inclusive. +If some of the items given by \fItagOrId\fR don't support +text operations, then they are ignored. +\fIFirst\fR and \fIlast\fR are indices of characters +within the item(s) as described in INDICES above. +If \fIlast\fR is omitted, it defaults to \fIfirst\fR. +This command returns an empty string. +.TP +\fIpathName \f5delete \fR?\fItagOrId tagOrId ...\fR? +Delete each of the items given by each \fItagOrId\fR, and return +an empty string. +.TP +\fIpathName \f5dtag \fItagOrId \fR?\fItagToDelete\fR? +For each of the items given by \fItagOrId\fR, delete the +tag given by \fItagToDelete\fR from the list of those +associated with the item. +If an item doesn't have the tag \fItagToDelete\fR then +the item is unaffected by the command. +If \fItagToDelete\fR is omitted then it defaults to \fItagOrId\fR. +This command returns an empty string. +.TP +\fIpathName \f5find \fIsearchCommand \fR?\fIarg arg ...\fR? +This command returns a list consisting of all the items that +meet the constraints specified by \fIsearchCommand\fR and +\fIarg\fR's. +\fISearchCommand\fR and \fIargs\fR have any of the forms +accepted by the \f5addtag\fR command. +If \fIsearchCommand\fR is \f5enclosed\fR, \f5overlapping\fR, +or \f5all\fR, the items are returned in display-list order, +i.e. bottommost first. +.TP +\fIpathName \f5focus \fR?\fItagOrId\fR? +Set the keyboard focus for the canvas widget to the item given by +\fItagOrId\fR. +If \fItagOrId\fR refers to several items, then the focus is set +to the first such item in the display list that supports the +insertion cursor. +If \fItagOrId\fR doesn't refer to any items, or if none of them +support the insertion cursor, then the focus isn't changed. +If \fItagOrId\fR is an empty +string, then the focus item is reset so that no item has the focus. +If \fItagOrId\fR is not specified then the command returns the +id for the item that currently has the focus, or an empty string +if no item has the focus. +.RS +.PP +Once the focus has been set to an item, the item will display +the insertion cursor and all keyboard events will be directed +to that item. +The focus item within a canvas and the focus window on the +screen (set with the \f5focus\fR command) are totally independent: +a given item doesn't actually have the input focus unless (a) +its canvas is the focus window and (b) the item is the focus item +within the canvas. +In most cases it is advisable to follow the \f5focus\fR widget +command with the \f5focus\fR command to set the focus window to +the canvas (if it wasn't there already). +.RE +.TP +\fIpathName \f5gettags\fR \fItagOrId\fR +Return a list whose elements are the tags associated with the +item given by \fItagOrId\fR. +If \fItagOrId\fR refers to more than one item, then the tags +are returned from the first such item in the display list. +If \fItagOrId\fR doesn't refer to any items, then an error is returned. If the item +contains no tags, then an empty string is returned. +.TP +\fIpathName \f5grab\fR \fIwhat\fR \fItagOrId\fR +Does for canvas widgets what \fIgrab\fR(9) does for +normal tk widgets: mouse events will only be delivered +to \fItagOrId\fR. If \fItagOrId\fR refers to more than one item, +then the first such item in the display list is grabbed. +\fIWhat\fR is as described in +.IR grab (9). +.PP +Note that the canvas grab item, as set by this command, +and the tk grab item, as set by +.IR grab (9) +are totally independent; a canvas item doesn't actually grab +the mouse unless a) the canvas itself has grabbed the mouse +or b) the mouse events are being delivered to the canvas as +a matter of course. +.TP +\fIpathName \f5icursor \fItagOrId index\fR +Set the position of the insertion cursor for the item(s) +given by \fItagOrId\fR +to just before the character whose position is given by \fIindex\fR. +If some or all of the items given by \fItagOrId\fR don't support +an insertion cursor then this command has no effect on them. +See INDICES above for a description of the +legal forms for \fIindex\fR. +Note: the insertion cursor is only displayed in an item if +that item currently has the keyboard focus (see the widget +command \f5focus\fR, below), but the cursor position may +be set even when the item doesn't have the focus. +This command returns an empty string. +.TP +\fIpathName \f5index \fItagOrId index\fR +This command returns a decimal string giving the numerical index +within \fItagOrId\fR corresponding to \fIindex\fR. +\fIIndex\fR gives a textual description of the desired position +as described in INDICES above. +The return value is guaranteed to lie between 0 and the number +of characters within the item, inclusive. +If \fItagOrId\fR refers to multiple items, then the index +is processed in the first of these items that supports indexing +operations (in display list order). +.TP +\fIpathName \f5insert \fItagOrId beforeThis string\fR +For each of the items given by \fItagOrId\fR, if the item supports +text insertion then \fIstring\fR is inserted into the item's +text just before the character whose index is \fIbeforeThis\fR. +See INDICES above for information about the forms allowed +for \fIbeforeThis\fR. +This command returns an empty string. +.TP +\fIpathName \f5itemcget\fR \fItagOrId\fR \fIoption\fR +Returns the current value of the configuration option for the +item given by \fItagOrId\fR whose name is \fIoption\fR. +This command is similar to the \f5cget\fR widget command except that +it applies to a particular item rather than the widget as a whole. +\fIOption\fR may have any of the values accepted by the \f5create\fR +widget command when the item was created. +If \fItagOrId\fR is a tag that refers to more than one item, +the first (lowest) such item is used. +.TP +\fIpathName \f5itemconfigure \fItagOrId\fR ?\fIoption\fR? ?\fIvalue\fR? ?\fIoption value ...\fR? +This command is similar to the \f5configure\fR widget command except +that it modifies item-specific options for the items given by +\fItagOrId\fR instead of modifying options for the overall +canvas widget. +If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s) in +each of the items given by \fItagOrId\fR; in +this case the command returns an empty string. +The \fIoption\fRs and \fIvalue\fRs are the same as those permissible +in the \f5create\fR widget command when the item(s) were created; +see the sections describing individual item types below for details +on the legal options. +.TP +\fIpathName \f5lower \fItagOrId \fR?\fIbelowThis\fR? +Move all of the items given by \fItagOrId\fR to a new position +in the display list just before the item given by \fIbelowThis\fR. +If \fItagOrId\fR refers to more than one item then all are moved +but the relative order of the moved items will not be changed. +\fIBelowThis\fR is a tag or id; if it refers to more than one +item then the first (lowest) of these items in the display list is used +as the destination location for the moved items. +This command returns an empty string. +.TP +\fIpathName \f5move \fItagOrId xAmount yAmount\fR +Move each of the items given by \fItagOrId\fR in the canvas coordinate +space by adding \fIxAmount\fR to the x-coordinate of each point +associated with the item and \fIyAmount\fR to the y-coordinate of +each point associated with the item. +This command returns an empty string. +.TP +\fIpathName \f5raise \fItagOrId \fR?\fIaboveThis\fR? +Move all of the items given by \fItagOrId\fR to a new position +in the display list just after the item given by \fIaboveThis\fR. +If \fItagOrId\fR refers to more than one item then all are moved +but the relative order of the moved items will not be changed. +\fIAboveThis\fR is a tag or id; if it refers to more than one +item then the last (topmost) of these items in the display list is used +as the destination location for the moved items. +This command returns an empty string. +.TP +\fIpathName \f5scale \fItagOrId xOrigin yOrigin xScale yScale\fR +Rescale all of the items given by \fItagOrId\fR in canvas coordinate +space. +\fIXOrigin\fR and \fIyOrigin\fR identify the origin for the scaling +operation and \fIxScale\fR and \fIyScale\fR identify the scale +factors for x- and y-coordinates, respectively (a scale factor of +1.0 implies no change to that coordinate). +For each of the points defining each item, the x-coordinate is +adjusted to change the distance from \fIxOrigin\fR by a factor +of \fIxScale\fR. +Similarly, each y-coordinate is adjusted to change the distance +from \fIyOrigin\fR by a factor of \fIyScale\fR. +This command returns an empty string. +.TP +\fIpathName \f5screenx \fIcanvasx\fR +Given an x-coordinate \fIcanvasx\fR in the canvas, this command returns +the equivalent screen x-coordinate. +.TP +\fIpathName \f5screeny \fIcanvasy\fR +Given an x-coordinate \fIcanvasy\fR in the canvas, this command returns +the equivalent screen y-coordinate. +.TP +\fIpathName \f5see \fIx1 y1\fR ?\fIx2 y2\fR? +Adjusts the view in the window such that, if possible +the point [\fIx1\fR, \fIy1\fR] (and, if given, the point +[\fIx2\fR, \fIy2\fR]) are made visible. +.TP +\fIpathName \f5select \fIoption\fR ?\fItagOrId arg\fR? +Manipulates the selection in one of several ways, depending on +\fIoption\fR. +The command may take any of the forms described below. +In all of the descriptions below, \fItagOrId\fR must refer to +an item that supports indexing and selection; if it refers to +multiple items then the first of +these that supports indexing and the selection is used. +\fIIndex\fR gives a textual description of a position +within \fItagOrId\fR, as described in INDICES above. +.RS +.TP +\fIpathName \f5select adjust \fItagOrId index\fR +Locate the end of the selection in \fItagOrId\fR nearest +to the character given by \fIindex\fR, and adjust that +end of the selection to be at \fIindex\fR (i.e. including +but not going beyond \fIindex\fR). +The other end of the selection is made the anchor point +for future \f5select to\fR commands. +If the selection isn't currently in \fItagOrId\fR then +this command behaves the same as the \f5select to\fR widget +command. +Returns an empty string. +.TP +\fIpathName \f5select clear\fR +Clear the selection if it is in this widget. +If the selection isn't in this widget then the command +has no effect. +Returns an empty string. +.TP +\fIpathName \f5select from \fItagOrId index\fR +Set the selection anchor point for the widget to be just +before the character +given by \fIindex\fR in the item given by \fItagOrId\fR. +This command doesn't change the selection; it just sets +the fixed end of the selection for future \f5select to\fR +commands. +Returns an empty string. +.TP +\fIpathName \f5select item\fR +Returns the id of the selected item, if the selection is in an +item in this canvas. +If the selection is not in this canvas then an empty string +is returned. +.TP +\fIpathName \f5select to \fItagOrId index\fR +Set the selection to consist of those characters of \fItagOrId\fR +between the selection anchor point and +\fIindex\fR. +The new selection will include the character given by \fIindex\fR; +it will include the character given by the anchor point only if +\fIindex\fR is greater than or equal to the anchor point. +The anchor point is determined by the most recent \f5select adjust\fR +or \f5select from\fR command for this widget. +If the selection anchor point for the widget isn't currently in +\fItagOrId\fR, then it is set to the same character given +by \fIindex\fR. +Returns an empty string. +.RE +.TP +\fIpathName \f5type\fI tagOrId\fR +Returns the type of the item given by \fItagOrId\fR, such as +\f5rectangle\fR or \f5text\fR. +If \fItagOrId\fR refers to more than one item, then the type +of the first item in the display list is returned. +If \fItagOrId\fR doesn't refer to any items at all then +an empty string is returned. +.TP +\fIpathName \f5xview \fR?\fIargs\fR? +This command is used to query and change the horizontal position of the +information displayed in the canvas's window. +It can take any of the following forms: +.RS +.TP +\fIpathName \f5xview\fR +Returns a list containing two elements. +Each element is a real fraction between 0 and 1; together they describe +the horizontal span that is visible in the window. +For example, if the first element is .2 and the second element is .6, +20% of the canvas's area (as defined by the \f5-scrollregion\fR option) +is off-screen to the left, the middle 40% is visible +in the window, and 40% of the canvas is off-screen to the right. +These are the same values passed to scrollbars via the \f5-xscrollcommand\fR +option. +.TP +\fIpathName \f5xview moveto\fI fraction\fR +Adjusts the view in the window so that \fIfraction\fR of the +total width of the canvas is off-screen to the left. +\fIFraction\fR must be a fraction between 0 and 1. +.TP +\fIpathName \f5xview scroll \fInumber what\fR +This command shifts the view in the window left or right according to +\fInumber\fR and \fIwhat\fR. +\fINumber\fR must be an integer. +\fIWhat\fR must be either \f5units\fR or \f5pages\fR. +If \fIwhat\fR is \f5units\fR, the view adjusts left or right in units +of the \f5xscrollicrement\fR option, if it is greater than zero, +or in units of one-tenth the window's width otherwise. +If \fIwhat is \f5pages\fR then the view +adjusts in units of nine-tenths the window's width. +If \fInumber\fR is negative then information farther to the left +becomes visible; if it is positive then information farther to the right +becomes visible. +.RE +.TP +\fIpathName \f5yview \fI?args\fR? +This command is used to query and change the vertical position of the +information displayed in the canvas's window. +It can take any of the following forms: +.RS +.TP +\fIpathName \f5yview\fR +Returns a list containing two elements. +Each element is a real fraction between 0 and 1; together they describe +the vertical span that is visible in the window. +For example, if the first element is .6 and the second element is 1.0, +the lowest 40% of the canvas's area (as defined by the \f5-scrollregion\fR +option) is visible in the window. +These are the same values passed to scrollbars via the \f5-yscrollcommand\fR +option. +.TP +\fIpathName \f5yview moveto\fI fraction\fR +Adjusts the view in the window so that \fIfraction\fR of the canvas's +area is off-screen to the top. +\fIFraction\fR is a fraction between 0 and 1. +.TP +\fIpathName \f5yview scroll \fInumber what\fR +This command adjusts the view in the window up or down according to +\fInumber\fR and \fIwhat\fR. +\fINumber\fR must be an integer. +\fIWhat\fR must be either \f5units\fR or \f5pages\fR. +If \fIwhat\fR is \f5units\fR, the view adjusts up or down in units +of the \f5yscrollicrement\fR option, if it is greater than zero, +or in units of one-tenth the window's height otherwise. +If \fIwhat\fR is \f5pages\fR then +the view adjusts in units of nine-tenths the window's height. +If \fInumber\fR is negative then higher information becomes +visible; if it is positive then lower information +becomes visible. +.RE + +.SH "OVERVIEW OF ITEM TYPES" +The sections below describe the various types of items supported +by canvas widgets. Each item type is characterized by two things: +first, the form of the \f5create\fR command used to create +instances of the type; and second, a set of configuration options +for items of that type, which may be used in the +\f5create\fR and \f5itemconfigure\fR widget commands. +Most items don't support indexing or selection or the commands +related to them, such as \f5index\fR and \f5insert\fR. +Where items do support these facilities, it is noted explicitly +in the descriptions below (at present, only text items provide +this support). + +.SH "ARC ITEMS" +Items of type \f5arc\fR appear on the display as arc-shaped regions. +An arc is a section of an oval delimited by two angles (specified +by the \f5-start\fR and \f5-extent\fR options) and displayed in +one of several ways (specified by the \f5-style\fR option). +Arcs are created with widget commands of the following form: +.RS +.EX +\fIpathName \f5create arc \fIx1 y1 x2 y2 \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR give +the coordinates of two diagonally opposite corners of a +rectangular region enclosing the oval that defines the arc. +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for arcs: +.TP +\f5-extent \fIdegrees\fR +Specifies the size of the angular range occupied by the arc. +The arc's range extends for \fIdegrees\fR degrees counter-clockwise +from the starting angle given by the \f5-start\fR option. +\fIDegrees\fR may be negative. +If it is greater than 360 or less than -360, then \fIdegrees\fR +modulo 360 is used as the extent. +.TP +\f5-fill \fIcolour\fR +Fill the region of the arc with \fIcolour\fR. +If \fIcolour\fR is an empty string (the default), then +the arc will not be filled. +.TP +\f5-outline \fIcolour\fR +\fIColour\fR specifies a colour to use for drawing the arc's +outline. +This option defaults to \f5black\fR. If \fIcolour\fR is specified +as an empty string then no outline is drawn for the arc. +.TP +\f5-start \fIdegrees\fR +Specifies the beginning of the angular range occupied by the +arc. +\fIDegrees\fR is given in units of degrees measured counter-clockwise +from the 3-o'clock position; it may be either positive or negative. +.TP +\f5-stipple \fIbitmap\fR +Indicates that the arc should be filled in a stipple pattern; +\fIbitmap\fR specifies the stipple pattern to use. +If the \f5-fill\fR option hasn't been specified then this option +has no effect. +If \fIbitmap\fR is an empty string (the default), then filling is done +in a solid fashion. +The results are undefined if \fIbitmap\fR is not +a 1-bit image. +.TP +\f5-style \fItype\fR +Specifies how to draw the arc. If \fItype\fR is \f5pieslice\fR +(the default) then the arc's region is defined by a section +of the oval's perimeter plus two line segments, one between the center +of the oval and each end of the perimeter section. +If \fItype\fR is \f5chord\fR then the arc's region is defined +by a section of the oval's perimeter plus a single line segment +connecting the two end points of the perimeter section. +This type is not implemented at the moment. It behaves as \f5arc\fR. +If \fItype\fR is \f5arc\fR then the arc's region consists of +a section of the perimeter alone. +In this last case the \f5-fill\fR option is ignored. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. +.TP +\f5-width \fIoutlineWidth\fR +Specifies the width of the outline to be drawn around +the arc's region, in any of the forms described in the COORDINATES +section above. +If the \f5-outline\fR option has been specified as an empty string +then this option has no effect. +Wide outlines will be drawn centered on the edges of the arc's region. +This option defaults to 1.0. + +.SH "BITMAP ITEMS" +Items of type \f5bitmap\fR appear on the display as images with +two colours, foreground and background. +Bitmaps are created with widget commands of the following form: +.RS +.EX +\fIpathName \f5create bitmap \fIx y \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx\fR and \fIy\fR specify the coordinates of a +point used to position the bitmap on the display (see the \f5-anchor\fR +option below for more information on how bitmaps are displayed). +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for bitmaps: +.TP +\f5-anchor \fIanchorPos\fR +\fIAnchorPos\fR tells how to position the bitmap relative to the +positioning point for the item. For example, if \fIanchorPos\fR +is \f5center\fR then the bitmap is centered on the point; if +\fIanchorPos\fR is \f5n\fR then the bitmap will be drawn so that +its top center point is at the positioning point. +This option defaults to \f5center\fR. +.TP +\f5-bitmap \fIbitmap\fR +Specifies the bitmap to display in the item. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. + +.SH "IMAGE ITEMS" +Items of type \f5image\fR are used to display images on a +canvas. +Images are created with widget commands of the following form: +.RS +.EX +\fIpathName \f5create image \fIx y \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx\fR and \fIy\fR specify the coordinates of a +point used to position the image on the display (see the \f5-anchor\fR +option below for more information). +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for images: +.TP +\f5-anchor \fIanchorPos\fR +\fIAnchorPos\fR tells how to position the image relative to the +positioning point for the item. For example, if \fIanchorPos\fR +is \f5center\fR then the image is centered on the point; if +\fIanchorPos\fR is \f5n\fR then the image will be drawn so that +its top center point is at the positioning point. +This option defaults to \f5center\fR. +.TP +\f5-image \fIname\fR +Specifies the name of the image to display in the item. +This image must have been created previously with the +\f5image create\fR command. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item; it may be an empty list. + +.SH "LINE ITEMS" +Items of type \f5line\fR appear on the display as one or more connected +line segments or curves. +Lines are created with widget commands of the following form: +.RS +.EX +\fIpathName \f5create line \fIx1 y1... xn yn \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx1\fR through \fIyn\fR give +the coordinates for a series of two or more points that describe +a series of connected line segments. +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for lines: +.TP +\f5-arrow \fIwhere\fR +Indicates whether or not arrowheads are to be drawn at one or both +ends of the line. +\fIWhere\fR must have one of the values \f5none\fR (for no arrowheads), +\f5first\fR (for an arrowhead at the first point of the line), +\f5last\fR (for an arrowhead at the last point of the line), or +\f5both\fR (for arrowheads at both ends). +This option defaults to \f5none\fR. +.TP +\f5-arrowshape \fIshape\fR +This option indicates how to draw arrowheads. +The \fIshape\fR argument must be a list with three elements, each +specifying a distance in any of the forms described in +the COORDINATES section above. +The first element of the list gives the distance along the line +from the neck of the arrowhead to its tip. +The second element gives the distance along the line from the +trailing points of the arrowhead to the tip, and the third +element gives the distance from the outside edge of the line to the +trailing points. +If this option isn't specified then Tk picks a ``reasonable'' shape. +.TP +\f5-capstyle \fIstyle\fR +Specifies the ways in which caps are to be drawn at the endpoints +of the line. +\fIStyle\fR may one of +\f5butt\fR, \f5projecting\fR, or \f5round\fR. +If this option isn't specified then it defaults to \f5butt\fR. +Where arrowheads are drawn the cap style is ignored. Note that the first two options +currently have the same effect. +.TP +\f5-fill \fIcolour\fR +\fIColour\fR specifies a colour to use for drawing the line. It may also be an +empty string, in which case the line will be transparent. +This option defaults to \f5black\fR. +.TP +\f5-smooth \fIboolean\fR +\fIBoolean\fR indicates whether or not the line should be drawn as a curve. +If so, the line is rendered as a set of Bezier splines: one spline +is drawn for the first and second line segments, one for the second +and third, and so on. Straight-line segments can be generated within +a curve by duplicating the end-points of the desired line segment. +.TP +\f5-stipple \fIbitmap\fR +Indicates that the line should be filled in a stipple pattern; +\fIbitmap\fR specifies the stipple pattern to use. +If \fIbitmap\fR is an empty string (the default), then filling is +done in a solid fashion. +The results are undefined if \fIbitmap\fR is not +a 1-bit image. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. +.TP +\f5-width \fIlineWidth\fR +\fILineWidth\fR specifies the width of the line, in any of the forms +described in the COORDINATES section above. +Wide lines will be drawn centered on the path specified by the +points. +If this option isn't specified then it defaults to 1.0. + +.SH "OVAL ITEMS" +Items of type \f5oval\fR appear as circular or oval regions on +the display. Each oval may have an outline, a fill, or +both. Ovals are created with widget commands of the +following form: +.RS +.EX +\fIpathName \f5create oval \fIx1 y1 x2 y2 \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR give +the coordinates of two diagonally opposite corners of a +rectangular region enclosing the oval. +The oval will include the top and left edges of the rectangle +not the lower or right edges. +If the region is square then the resulting oval is circular; +otherwise it is elongated in shape. +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for ovals: +.TP +\f5-fill \fIcolour\fR +Fill the area of the oval with \fIcolour\fR. +If \fIcolour\fR is an empty string (the default), then +then the oval will not be filled. +.TP +\f5-outline \fIcolour\fR +\fIColour\fR specifies a colour to use for drawing the oval's +outline. +This option defaults to \f5black\fR. +If \fIcolour\fR is an empty string then no outline will be +drawn for the oval. +.TP +\f5-stipple \fIbitmap\fR +Indicates that the oval should be filled in a stipple pattern; +\fIbitmap\fR specifies the stipple pattern to use. +If the \f5-fill\fR option hasn't been specified then this option +has no effect. +If \fIbitmap\fR is an empty string (the default), then filling is done +in a solid fashion. +The results are undefined if \fIbitmap\fR is not +a 1-bit image. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. +.TP +\f5-width \fIoutlineWidth\fR +\fIoutlineWidth\fR specifies the width of the outline to be drawn around +the oval, in any of the forms described in the COORDINATES section above. +If the \f5-outline\fR option hasn't been specified then this option +has no effect. +Wide outlines are drawn centered on the oval path defined by +\fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR. +This option defaults to 1.0. + +.SH "POLYGON ITEMS" +Items of type \f5polygon\fR appear as polygonal or curved filled regions +on the display. +Polygons are created with widget commands of the following form: +.RS +.EX +\fIpathName \f5create polygon \fIx1 y1 ... xn yn \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx1\fR through \fIyn\fR specify the coordinates for +three or more points that define a closed polygon. +The first and last points may be the same; whether they are or not, +Tk will draw the polygon as a closed polygon. +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for polygons: +.TP +\f5-fill \fIcolour\fR +\fIColour\fR specifies a colour to use for filling the area of the +polygon. +If \fIcolour\fR is an empty string then the polygon will be +transparent. +This option defaults to the empty string (transparent). +.TP +\f5-outline \fIcolour\fR +\fIColour\fR specifies a colour to use for drawing the polygon's +outline. +If \fIcolour\fR is an empty string then no outline will be +drawn for the polygon. +This option defaults to black. +.TP +\f5-smooth \fIboolean\fR +\fIBoolean\fP indicates whether or not the polygon should be drawn with a +curved perimeter. +If so, the outline of the polygon becomes a set of Bezier splines, +one spline for the first and second line segments, one for the second +and third, and so on. Straight-line segments can be generated in a +smoothed polygon by duplicating the end-points of the desired line segment. +.TP +\f5-stipple \fIbitmap\fR +Indicates that the polygon should be filled in a stipple pattern; +\fIbitmap\fR specifies the stipple pattern to use. +If \fIbitmap\fR is an empty string (the default), then filling is +done in a solid fashion. +The results are undefined if \fIbitmap\fR is not +a 1-bit image. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. +.TP +\f5-winding \fItype\fR +Specifies the winding rule to use when filling the polygon. +\fIType\fR can be either \f5nonzero\fR (the default) +or \f5odd\fR +See \f5fillpoly\fR in +.IR draw-image(2) +for an explanation. +.TP +\f5-width \fIoutlineWidth\fR +\fIOutlineWidth\fR specifies the width of the outline to be drawn around +the polygon, in any of the forms described in the COORDINATES section above. +If the \f5-outline\fR option hasn't been specified then this option +has no effect. This option defaults to 1.0. +.PP +Polygon items are different from other items such as rectangles, ovals +and arcs in that interior points are considered to be ``inside'' a +polygon (e.g. for purposes of the \f5find closest\fR and +\f5find overlapping\fR widget commands) even if it is not filled. +For most other item types, an +interior point is considered to be inside the item only if the item +is filled or if it has neither a fill nor an outline. If you would +like an unfilled polygon whose interior points are not considered +to be inside the polygon, use a line item instead. + +.SH "RECTANGLE ITEMS" +Items of type \f5rectangle\fR appear as rectangular regions on +the display. Each rectangle may have an outline, a fill, or +both. Rectangles are created with widget commands of the +following form: +.RS +.EX +\fIpathName \f5create rectangle \fIx1 y1 x2 y2 \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR give +the coordinates of two diagonally opposite corners of the rectangle +(the rectangle will include its upper and left edges but not +its lower or right edges). +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for rectangles: +.TP +\f5-fill \fIcolour\fR +Fill the area of the rectangle with \fIcolour\fR. +If \fIcolour\fR is an empty string (the default), +then the rectangle will not be filled. +.TP +\f5-outline \fIcolour\fR +Draw an outline around the edge of the rectangle in \fIcolour\fR. +This option defaults to \f5black\fR. +If \fIcolour\fR is an empty string then no outline will be +drawn for the rectangle. +.TP +\f5-stipple \fIbitmap\fR +Indicates that the rectangle should be filled in a stipple pattern; +\fIbitmap\fR specifies the stipple pattern to use. +If the \f5-fill\fR option hasn't been specified then this option +has no effect. +If \fIbitmap\fR is an empty string (the default), then filling +is done in a solid fashion. +The results are undefined if \fIbitmap\fR is not +a 1-bit image. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. +.TP +\f5-width \fIoutlineWidth\fR +\fIOutlineWidth\fR specifies the width of the outline to be drawn around +the rectangle, in any of the forms described in the COORDINATES section above. +If the \f5-outline\fR option hasn't been specified then this option +has no effect. +Wide outlines are drawn centered on the rectangular path +defined by \fIx1\fR, \fIy1\fR, \fIx2\fR, and \fIy2\fR. +This option defaults to 1.0. + +.SH "TEXT ITEMS" +A text item displays a string of characters on the screen in one +or more lines. +Text items support indexing and selection, along with the +following text-related canvas widget commands: \f5dchars\fR, +\f5focus\fR, \f5icursor\fR, \f5index\fR, \f5insert\fR, +\f5select\fR. +Text items are created with widget commands of the following +form: +.RS +.EX +\fIpathName \f5create text \fIx y \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx\fR and \fIy\fR specify the coordinates of a +point used to position the text on the display (see the options +below for more information on how text is displayed). +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for text items: +.TP +\f5-anchor \fIanchorPos\fR +\fIAnchorPos\fR tells how to position the text relative to the +positioning point for the text. For example, if \fIanchorPos\fR +is \f5center\fR then the text is centered on the point; if +\fIanchorPos\fR is \f5n\fR then the text will be drawn such that +the top center point of the rectangular region occupied by the +text will be at the positioning point. +This option defaults to \f5center\fR. +.TP +\f5-fill \fIcolour\fR +\fIColour\fR specifies a colour to use for filling the text characters. +If this option isn't specified then it defaults to \f5black\fR. +.TP +\f5-font \fIfont\fR +Specifies the font to use for the text item. +If this option isn't specified, it defaults to a system-dependent +font. +.TP +\f5-justify \fIhow\fR +Specifies how to justify the text within its bounding region. +\fIHow\fR must be one of the values \f5left\fR, \f5right\fR, +or \f5center\fR. +This option will only matter if the text is displayed as multiple +lines. +If the option is omitted, it defaults to \f5left\fR. +.TP +\f5-stipple \fIbitmap\fR +Indicates that the text should be drawn in a stippled pattern +rather than solid; +\fIbitmap\fR specifies the stipple pattern to use. +If \fIbitmap\fR is an empty string (the default) then the text +is drawn in a solid fashion. +The results are undefined if \fIbitmap\fR is not +a 1-bit image. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. +.TP +\f5-text \fIstring\fR +\fIString\fR specifies the characters to be displayed in the text item. +Newline characters cause line breaks. +The characters in the item may also be changed with the +\f5insert\fR and \f5delete\fR widget commands. +This option defaults to an empty string. +.TP +\f5-width \fIlineLength\fR +Specifies a maximum line length for the text, in any of the forms +described in the COORDINATES section above. +If this option is zero (the default) the text is broken into +lines only at newline characters. +However, if this option is non-zero then any line that would +be longer than \fIlineLength\fR is broken just before a space +character to make the line shorter than \fIlineLength\fR; the +space character is treated as if it were a newline +character. + +.SH "WINDOW ITEMS" +Items of type \f5window\fR cause a particular window to be displayed +at a given position on the canvas. +Window items are created with widget commands of the following form: +.RS +.EX +\fIpathName \f5create window \fIx y \fR?\fIoption value option value ...\fR? +.EE +.RE +The arguments \fIx\fR and \fIy\fR specify the coordinates of a +point used to position the window on the display (see the \f5-anchor\fR +option below for more information on how bitmaps are displayed). +After the coordinates there may be any number of \fIoption\fR-\fIvalue\fR +pairs, each of which sets one of the configuration options +for the item. These same \fIoption\fR-\fIvalue\fR pairs may be +used in \f5itemconfigure\fR widget commands to change the item's +configuration. +The following options are supported for window items: +.TP +\f5-anchor \fIanchorPos\fR +\fIAnchorPos\fR tells how to position the window relative to the +positioning point for the item. For example, if \fIanchorPos\fR +is \f5center\fR then the window is centered on the point; if +\fIanchorPos\fR is \f5n\fR then the window will be drawn so that +its top center point is at the positioning point. +This option defaults to \f5center\fR. +.TP +\f5-height \fIdist\fR +Specifies the height to assign to the item's window. +\fIDist\fR may have any of the +forms described in the COORDINATES section above. +If this option isn't specified, or if it is specified as an empty +string, then the window is given whatever height it requests internally. +.TP +\f5-tags \fItagList\fR +Specifies a set of tags to apply to the item. +\fITagList\fR consists of a list of tag names, which replace any +existing tags for the item. +\fITagList\fR may be an empty list. +.TP +\f5-width \fIdist\fR +Specifies the width to assign to the item's window. +\fIDist\fR may have any of the +forms described in the COORDINATES section above. +If this option isn't specified, or if it is specified as an empty +string, then the window is given whatever width it requests internally. +.TP +\f5-window \fIpathName\fR +Specifies the window to associate with this item. +The window specified by \fIpathName\fR must either be a child of +the canvas widget or a child of some ancestor of the canvas widget. +\fIPathName\fR may not refer to a top-level window. + +.SH BINDINGS +In the current implementation, new canvases are not given any +default behaviour: you'll have to execute explicit Tk commands +to give the canvas its behaviour. + +.SH CREDITS +Tk's canvas widget is a blatant ripoff of ideas from Joel Bartlett's +\fIezd\fR program. \fIEzd\fR provides structured graphics in a Scheme +environment and preceded canvases by a year or two. Its simple +mechanisms for placing and animating graphical objects inspired the +functions of canvases. + +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/checkbutton b/man/9/checkbutton new file mode 100644 index 00000000..dfc71001 --- /dev/null +++ b/man/9/checkbutton @@ -0,0 +1,193 @@ +.TH CHECKBUTTON 9 +.SH NAME +checkbutton \- Create and manipulate checkbutton widgets +.SH SYNOPSIS +\f5checkbutton\fI pathname \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -disabledcolor -justify +-activeforeground -font -relief +-anchor -foreground -takefocus +-background -highlightcolor -text +-bitmap -highlightthickness -underline +-borderwidth -image +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -command \fIcommand\fP +Specifies a Tk command to associate with the button. This command +is typically invoked when mouse button 1 is released over the button +window. The button's global variable (\f5-variable\fR option) will +be updated before the command is invoked. +.TP +.B -height \fIdist\fP +Specifies a desired height for the button. +If this option isn't specified, the button's desired height is computed +from the size of the image or bitmap or text being displayed in it. +.TP +.B -indicatoron \fIboolean\fP +Specifies whether or not the indicator should be drawn. +If false, the \f5relief\fP option is ignored and the widget's +relief is always \f5sunken\fP if the widget is selected +and \f5raised\fP otherwise. +.TP +.B -offvalue \fIstring\fP +Specifies value to store in the button's associated variable whenever +this button is deselected. Defaults to ``0''. +.TP +.B -onvalue \fIstring\fP +Specifies value to store in the button's associated variable whenever +this button is selected. Defaults to ``1''. +.TP +.B -selectcolor \fIcolour\fP +Specifies a background colour to use when the button is selected. +If \f5indicatoron\fR is true then the colour applies to the indicator. +If \f5indicatoron\fR is false, this colour is used as the background +for the entire widget, in place of \f5background\fR or \f5activebackground\fR, +whenever the widget is selected. +If specified as an empty string then no special colour is used for +displaying when the widget is selected. +.ig +.TP +.B -selectimage \fIimage\fP +Specifies an image to display (in place of the \f5image\fR option) +when the checkbutton is selected. +This option is ignored unless the \f5image\fR option has been +specified. +.. +.TP +.B -state \fIstate\fP +Specifies one of three states for the checkbutton: \f5normal\fR, \f5active\fR, +or \f5disabled\fR. In normal state the checkbutton is displayed using the +\f5foreground\fR and \f5background\fR options. The active state is +typically used when the pointer is over the checkbutton. In active state +the checkbutton is displayed using the \f5activeforeground\fR and +\f5activebackground\fR options. Disabled state means that the checkbutton +should be insensitive: the default bindings will refuse to activate +the widget and will ignore mouse button presses. +In this state the \f5disabledcolor\fR and +\f5background\fR options determine how the checkbutton is displayed. +.TP +.B -variable \fIstring\fP +Specifies name of global variable to set whenever this button is +selected. Changes in this variable also cause the button to select +or deselect itself. +.TP +.B -width \fIdist\fP +Specifies a desired width for the button. +If this option isn't specified, the button's desired width is computed +from the size of the image or bitmap or text being displayed in it. +.SH DESCRIPTION +The \f5checkbutton\fR command creates a new window (given by the +\fIpathname\fR argument) and makes it into a checkbutton widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the checkbutton such as its colours, font, +text, and initial relief. The \f5checkbutton\fR command returns its +\fIpathname\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathname\fR. +.PP +A checkbutton is a widget +that displays a textual string, bitmap or image +and a square called an \fIindicator\fR. +If text is displayed, it must all be in a single font, but it +can occupy multiple lines on the screen (if it contains newlines) and +one of the characters may optionally be underlined using the +\f5underline\fR option. +A checkbutton has +all of the behaviour of a simple button, including the +following: it can display itself in either of three different +ways, according to the \f5state\fR option; +it can be made to appear +raised, sunken, or flat; and it invokes +a Tk command whenever mouse button 1 is clicked over the +checkbutton. +.PP +In addition, checkbuttons can be \fIselected\fR. +If a checkbutton is selected then the indicator is normally +drawn with a sunken relief and a special colour, and +a Tk variable associated with the checkbutton is set to the +.B onvalue +(normally 1). +If the checkbutton is not selected, then the indicator is drawn with a +raised relief and no special colour, and the associated variable is +set to the +.B offvalue +(normally 0). +The variable name +may be modified with options on the command line (\f5-variable\fR option). +Configuration options may also be used to modify the way the +indicator is displayed (or whether it is displayed at all). +By default a checkbutton is configured to select and deselect +itself on alternate button clicks. +.SH "WIDGET COMMAND" +The \f5checkbutton\fR command creates a new Tk command whose +name is \fIpathname\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathname option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for checkbutton widgets: +.TP +\fIpathname \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5checkbutton\fR +command. +.TP +\fIpathname \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathname\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5checkbutton\fR +command. +.TP +\fIpathname \f5deselect\fR +Deselects the checkbutton and sets the associated variable to its ``off'' +value. +.TP +\fIpathname \f5invoke\fR +Does just what would have happened if the user invoked the checkbutton +with the mouse: toggle the selection state of the button and invoke +the Tk command associated with the checkbutton, if there is one. +The return value is the return value from the Tk command, or an +empty string if there is no command associated with the checkbutton. +This command is ignored if the checkbutton's state is \f5disabled\fR. +.TP +\fIpathname \f5select\fR +Selects the checkbutton and sets the associated variable to 1. +.TP +\fIpathname \f5toggle\fR +Toggles the selection state of the button, redisplaying it and +modifying its associated variable to reflect the new state. + +.SH BINDINGS +Tk automatically creates bindings for checkbuttons that give them +the following default behaviour: +.IP [1] +A checkbutton activates whenever the mouse passes over it and deactivates +whenever the mouse leaves the checkbutton. +.IP [2] +When mouse button 1 is pressed over a checkbutton it is invoked (its +selection state toggles and the command associated with the button is +invoked, if there is one). +.PP +If the checkbutton's state is \f5disabled\fR then none of the above +actions occur: the checkbutton is completely non-responsive. +.PP +The behaviour of checkbuttons can be changed by defining new bindings for +individual widgets. +.SH SEE ALSO +.IR button (9), +.IR choicebutton (9), +.IR options (9), +.IR radiobutton (9), +.IR types (9) diff --git a/man/9/choicebutton b/man/9/choicebutton new file mode 100644 index 00000000..b9702d3b --- /dev/null +++ b/man/9/choicebutton @@ -0,0 +1,148 @@ +.TH CHOICEBUTTON 9 +.SH NAME +choicebutton \- create and manipulate choicebutton widgets +.SH SYNOPSIS +\f5choicebutton\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -borderwidth -relief +-activeforeground -font -text +-anchor -foreground +-background -image +-bitmap -justify +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -command \fIcommand\fP +Specifies a Tk command to associate with the button. This command +is typically invoked when mouse button 1 is released over the button +window. The button's global variable (\f5-variable\fR option) will +be updated before the command is invoked. +.TP +.B -height \fIdist\fP +Specifies a desired height for the button. +If this option isn't specified, the button's desired height is computed +from the size of the highest item in the +.B -values +list. +.TP +.B -selectcolor \fIcolour\fP +Specifies a background colour to use when the button is selected. +If specified as an empty string, no special colour is used for +displaying when the widget is selected. +.TP +.B -values \fIlist\fP +Specifies a list of all the values the choicebutton can choose from. +.TP +.B -variable \fIstring\fP +Specifies name of global variable to set whenever this button is +selected. The variable will be set to the index of the currently +selected item. Changes in this variable also cause the button to +choose the appropriate item (provided it is an integer and within +range). +.TP +.B -width \fIdist\fP +Specifies a desired width for the button. +If this option isn't specified, the button's desired width is computed +from the size of the widest item in the +.B -values +list. +.SH DESCRIPTION +The \f5choicebutton\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a choicebutton widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the choicebutton such as its colours, font, +text, and initial relief. The \f5choicebutton\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A choicebutton is a widget that displays a textual string, +one of the items given in the +.I list +argument to the +.B -values +option. +When clicked on, the choicebutton displays a menu showing +all the available choices, allowing the user to change +the choice by selecting an item. +In the description below, an +.I index +is a zero-based index into the set of values specified with +the +.B -values +option. +.SH "WIDGET COMMAND" +The \f5choicebutton\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for choicebutton widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5choicebutton\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5choicebutton\fR +command. +.TP +\fIpathName \f5get\fR ?\fIvalue\fR? +Get the index of the first item with +.IR value . +If +.I value +is not given, get the index of the currently selected item. +.TP +\fIpathName \f5set\fR \fIindex\fR +Sets the current item to the +.IR index th +value. +.TP +\fIpathName \f5getvalue\fR ?\fIindex\fR? +Get the value of the +.IR index th +item. If +.I index +is not given, get the value of the currently selected item. +.TP +\fIpathName \f5setvalue\fR \fIvalue\fR +Set the current item to the first item having +.IR value . +If no item has that value, no change is made, +and an error is returned. +.TP +\fIpathName \f5invoke\fR \fIindex\fR +Does just what would have happened if the user invoked the choicebutton +with the mouse and selected the item at +.IR index : +sets the current item to +.I index +and runs +its associated Tk command, if there is one. +The return value is that from invoking the Tk command, or an +empty string if there is no associated command. +.TP +\fIpathName \f5valuecount\fR +Returns the number of values configured in the choicebutton. +.SH SEE ALSO +.IR button (9), +.IR checkbutton (9), +.IR options (9), +.IR radiobutton (9), +.IR types (9) diff --git a/man/9/cursor b/man/9/cursor new file mode 100644 index 00000000..0f8ae601 --- /dev/null +++ b/man/9/cursor @@ -0,0 +1,47 @@ +.TH CURSOR 9 +.SH NAME +cursor \- change the current mouse cursor +.SH SYNOPSIS +.B cursor +?\fIoptions\fP? +.SH INTRODUCTION +.B Cursor +changes the image displayed at the current mouse position. +The following options are supported: +.TP +\f5-image \fIimage\fR +.I Image +gives a name created using the +.IR image (9) +command; the image must conform to the rules +given for +.B Display.cursor +(see +.IR draw-display (2)). +.TP +\f5-bitmap \fIbitmap\fR +Similar to +.B -image +but using the +.I bitmap +syntax (see +.IR types (9)). +.TP +\f5-x \fIdist\fP +The cursor will be drawn +.I dist +to the right of the actual position of the mouse. +.TP +\f5-y \fIdist\fP +The cursor will be drawn +.I dist +below the actual position of the mouse. +.TP +.B -default +Revert the cursor to its default image. +.SH BUGS +A cursor image should have some inherent association with +its hot-spot offset. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/destroy b/man/9/destroy new file mode 100644 index 00000000..caaf5f47 --- /dev/null +++ b/man/9/destroy @@ -0,0 +1,24 @@ +.TH DESTROY 9 +.SH NAME +destroy \- Destroy one or more windows +.SH SYNOPSIS +\f5destroy \fR?\fIwindow window ...\fR? + +.SH DESCRIPTION +This command deletes the windows given by the +\fIwindow\fR arguments, plus all of their descendants. +The \fIwindow\fRs are destroyed in order, and if an error occurs +in destroying a window the command aborts without destroying the +remaining windows. +.PP +The +.B Destroy +event is fired for each window destroyed, including descendants. +.PP +If the window ``.'' is specified, it is unmapped rather than destroyed +and the +.B Destroy +event is not fired on it. +However, all of its decendants are destroyed as normal. +.SH SEE ALSO +.IR bind (9) diff --git a/man/9/entry b/man/9/entry new file mode 100644 index 00000000..2913be53 --- /dev/null +++ b/man/9/entry @@ -0,0 +1,316 @@ +.TH ENTRY 9 +.SH NAME +entry \- Create and manipulate entry widgets +.SH SYNOPSIS +\f5entry\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-background -highlightcolor -selectbackground +-borderwidth -highlightthickness -selectforeground +-font -justify -takefocus +-foreground -relief -xscrollcommand +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -show \fIstring\fP +If this option is specified, then the true contents of the entry +are not displayed in the window. +Instead, each character in the entry's value will be displayed as +the first character in the value of this option, such as ``*''. +This is useful, for example, if the entry is to be used to enter +a password. +.TP +.B -state \fIstate\fP +Specifies one of two states for the entry: \f5normal\fR or \f5disabled\fR. +If the entry is disabled then the value may not be changed using widget +commands and no insertion cursor will be displayed, even if the input focus is +in the widget. +.TP +.B -width \fIdist\fP +Specifies an integer value indicating the desired width of the entry window. + +.SH DESCRIPTION +The \f5entry\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into an entry widget. +Additional options, described above, may be specified on the +command line +to configure aspects of the entry such as its colours, font, +and relief. The \f5entry\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +An entry is a widget that displays a one-line text string and +allows that string to be edited using widget commands described below, which +are typically bound to keystrokes and mouse actions. +When first created, an entry's string is empty. +A portion of the entry may be selected as described below. +Entries observe the standard Tk rules for dealing with the +input focus. When an entry has the input focus it displays an +\fIinsertion cursor\fR to indicate where new characters will be +inserted. +.PP +Entries are capable of displaying strings that are too long to +fit entirely within the widget's window. In this case, only a +portion of the string will be displayed; commands described below +may be used to change the view in the window. Entries use +the standard \f5xscrollcommand\fR mechanism for interacting with +scrollbars (see the description of the \f5xscrollcommand\fR option +for details). + +.SH "WIDGET COMMAND" +The \f5entry\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. +.PP +Many of the widget commands for entries take one or more indices as +arguments. An index specifies a particular character in the entry's +string, in any of the following ways: +.TP 12 +\fInumber\fR +Specifies the character as a numerical index, where 0 corresponds +to the first character in the string. +.TP 12 +\f5anchor\fR +Indicates the anchor point for the selection, which is set with the +\f5select from\fR and \f5select adjust\fR widget commands. +.TP 12 +\f5end\fR +Indicates the character just after the last one in the entry's string. +This is equivalent to specifying a numerical index equal to the length +of the entry's string. +.TP 12 +\f5insert\fR +Indicates the character adjacent to and immediately following the +insertion cursor. +.TP 12 +\f5sel.first\fR +Indicates the first character in the selection. It is an error to +use this form if the selection isn't in the entry window. +.TP 12 +\f5sel.last\fR +Indicates the character just after the last one in the selection. +It is an error to use this form if the selection isn't in the +entry window. +.TP 12 +\f5@\fInumber\fR +In this form, \fInumber\fR is treated as an x-coordinate in the +entry's window; the character spanning that x-coordinate is used. +For example, ``\f5@0\fR'' indicates the left-most character in the +window. +.PP +The following commands are possible for entry widgets: +.TP +\fIpathName \f5bbox \fIindex\fR +Returns a list of four numbers describing the bounding box of the +character given by \fIindex\fR. +The first two elements of the list give the x and y coordinates of +the upper-left corner of the screen area covered by the character +(in pixels relative to the widget) and the last two elements give +the width and height of the character, in pixels. +The bounding box may refer to a region outside the visible area +of the window. +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5entry\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5entry\fR +command. +.TP +\fIpathName \f5delete \fIfirst \fR?\fIlast\fR? +Delete one or more elements of the entry. +\fIFirst\fR is the index of the first character to delete, and +\fIlast\fR is the index of the character just after the last +one to delete. +If \fIlast\fR isn't specified it defaults to \fIfirst\fR+1, +i.e. a single character is deleted. +This command returns an empty string. +.TP +\fIpathName \f5get\fR +Returns the entry's string. +.TP +\fIpathName \f5icursor \fIindex\fR +Arrange for the insertion cursor to be displayed just before the character +given by \fIindex\fR. Returns an empty string. +.TP +\fIpathName \f5index\fI index\fR +Returns the numerical index corresponding to \fIindex\fR. +.TP +\fIpathName \f5insert \fIindex string\fR +Insert the characters of \fIstring\fR just before the character +indicated by \fIindex\fR. Returns an empty string. +.TP +\fIpathName \f5see \fIindex\fR +Adjusts the view in the window so that the character given by \fIindex\fR +is completely visible. +.TP +\fIpathName \f5selection \fIoption arg\fR +This command is used to adjust the selection within an entry. It +has several forms, depending on \fIoption\fR: +.RS +.TP +\fIpathName \f5selection adjust \fIindex\fR +Locate the end of the selection nearest to the character given by +\fIindex\fR, and adjust that end of the selection to be at \fIindex\fR +(i.e including but not going beyond \fIindex\fR). The other +end of the selection is made the anchor point for future +\f5select to\fR commands. If the selection +isn't currently in the entry, then a new selection is created to +include the characters between \fIindex\fR and the most recent +selection anchor point, inclusive. +Returns an empty string. +.TP +\fIpathName \f5selection clear\fR +Clear the selection if it is currently in this widget. If the +selection isn't in this widget then the command has no effect. +Returns an empty string. +.TP +\fIpathName \f5selection from \fIindex\fR +Set the selection anchor point to just before the character +given by \fIindex\fR. Doesn't change the selection. +Returns an empty string. +.TP +\fIpathName \f5selection present\fR +Returns 1 if there are characters selected in the entry, +0 if nothing is selected. +.TP +\fIpathName \f5selection range \fIstart\fR \fIend\fR +Sets the selection to include the characters starting with +the one indexed by \fIstart\fR and ending with the one just +before \fIend\fR. +If \fIend\fR refers to the same character as \fIstart\fR or an +earlier one, then the entry's selection is cleared. +.TP +\fIpathName \f5selection to \fIindex\fR +If \fIindex\fR is before the anchor point, set the selection +to the characters from \fIindex\fR up to but not including +the anchor point. +If \fIindex\fR is the same as the anchor point, do nothing. +If \fIindex\fR is after the anchor point, set the selection +to the characters from the anchor point up to but not including +\fIindex\fR. +The anchor point is determined by the most recent \f5select from\fR +or \f5select adjust\fR command in this widget. +If the selection isn't in this widget then a new selection is +created using the most recent anchor point specified for the widget. +Returns an empty string. +.RE +.TP +\fIpathName \f5xview \fIargs\fR +This command is used to query and change the horizontal position of the +text in the widget's window. It can take any of the following +forms: +.RS +.TP +\fIpathName \f5xview\fR +Returns a list containing two elements. +Each element is a real fraction between 0 and 1; together they describe +the horizontal span that is visible in the window. +For example, if the first element is .2 and the second element is .6, +20% of the entry's text is off-screen to the left, the middle 40% is visible +in the window, and 40% of the text is off-screen to the right. +These are the same values passed to scrollbars via the \f5-xscrollcommand\fR +option. +.TP +\fIpathName \f5xview\fR \fIindex\fR +Adjusts the view in the window so that the character given by \fIindex\fR +is displayed at the left edge of the window. +.TP +\fIpathName \f5xview moveto\fI fraction\fR +Adjusts the view in the window so that the character \fIfraction\fR of the +way through the text appears at the left edge of the window. +\fIFraction\fR must be a fraction between 0 and 1. +.TP +\fIpathName \f5xview scroll \fInumber what\fR +This command shifts the view in the window left or right according to +\fInumber\fR and \fIwhat\fR. +\fINumber\fR must be an integer. +\fIWhat\fR must be either \f5units\fR or \f5pages\fR. +If \fIwhat\fR is \f5units\fR, the view adjusts left or right by +\fInumber\fR average-width characters on the display; if it is +\f5pages\fR then the view adjusts by \fInumber\fR screenfuls. +If \fInumber\fR is negative then characters farther to the left +become visible; if it is positive then characters farther to the right +become visible. +.RE + +.SH "DEFAULT BINDINGS" +Tk automatically creates bindings for entries that give them +the following default behaviour. +In the descriptions below, ``word'' refers to a contiguous group +of letters, digits, or ``_'' characters, or any single character +other than these. +.IP [1] +Clicking mouse button 1 positions the insertion cursor +just before the character underneath the mouse cursor, sets the +input focus to this widget, and clears any selection in the widget. +Dragging with mouse button 1 strokes out a selection between +the insertion cursor and the character under the mouse. +.IP [2] +Double-clicking with mouse button 1 selects the word under the mouse +and positions the insertion cursor at the beginning of the word. +.IP [3] +If any normal printing characters are typed in an entry, the current +selection is deleted, and they are +inserted at the point of the insertion cursor +.IP [4] +The view in the entry can be adjusted by dragging with mouse button 2. +.IP [5] +The Left and Right keys move the insertion cursor one character to the +left or right; they also clear any selection in the entry and set +the selection anchor. +Control-b and Control-f behave the same as Left and Right, respectively. +.IP [6] +The Home key, or Control-a, will move the insertion cursor to the +beginning of the entry and clear any selection in the entry. +.IP [7] +The End key, or Control-e, will move the insertion cursor to the +end of the entry and clear any selection in the entry. +.IP [8] +Control-/ selects all the text in the entry. +.IP [9] +Control-\e clears any selection in the entry. +.IP [10] +The Delete key deletes the selection, if there is one in the entry. +If there is no selection, it deletes the character to the right of +the insertion cursor. +.IP [11] +The BackSpace key and Control-h delete the selection, if there is one +in the entry. +If there is no selection, it deletes the character to the left of +the insertion cursor. +.IP [12] +Control-d deletes the character to the right of the insertion cursor. +.IP [13] +Control-k deletes all the characters to the right of the insertion +cursor. +.IP [14] +Control-w deletes the word to the left of the insertion cursor. +.PP +If the entry is disabled using the \f5-state\fR option, then the entry's +view can still be adjusted and text in the entry can still be selected, +but no insertion cursor will be displayed and no text modifications will +take place. +.PP +The behaviour of entries can be changed by defining new bindings for +individual widgets. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/focus b/man/9/focus new file mode 100644 index 00000000..36284864 --- /dev/null +++ b/man/9/focus @@ -0,0 +1,21 @@ +.TH FOCUS 9 +.SH NAME +focus \- change or query keyboard focus +.SH SYNOPSIS +\f5focus \fR?\fIwhat\fR? +.SH DESCRIPTION +With no arguments, \f5focus\fP returns the +name of the widget to which keyboard events +are currently delivered, known as the +.IR "keyboard focus" . +When given an argument, +\f5focus\fP changes the keyboard focus. +If \fIwhat\fP is the name of a widget, that +widget will be made the keyboard focus. +If \fIwhat\fP is \f5next\fP, the keyboard focus +will be changed to the next item in the +focus order for that window. If \fIwhat\fP is +\f5previous\fP, the keyboard focus will be +changed to the previous item in the focus order +for that window. The focus order is determined +automatically by Tk. diff --git a/man/9/frame b/man/9/frame new file mode 100644 index 00000000..fe38e8ce --- /dev/null +++ b/man/9/frame @@ -0,0 +1,79 @@ +.TH FRAME 9 +.SH NAME +frame \- Create and manipulate frame widgets +.SH SYNOPSIS +\f5frame\fI \fIpathName ?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-borderwidth -relief +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -background \fIcolour\fP +This option is the same as the standard \f5background\fR option +except that its value may also be specified as an empty string. +In this case, the widget will display no background or border, and +no colours will be consumed from its colourmap for its background +and border. +.TP +.B -height \fIdist\fP +Specifies the desired height for the window. +If this option is less than or equal to zero then the window will +not request any size at all. +.TP +.B -width \fIdist\fP +Specifies the desired width for the window. +If this option is less than or equal to zero then the window will +not request any size at all. + +.SH DESCRIPTION +The \f5frame\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a frame widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the frame such as its background colour +and relief. The \f5frame\fR command returns the +path name of the new window. +.PP +A frame is a simple widget. Its primary purpose is to act as a +spacer or container for complex window layouts. The only features +of a frame are its background colour and an optional 3-D border to make the +frame appear raised or sunken. + +.SH "WIDGET COMMAND" +The \f5frame\fR command creates a new Tk command whose +name is \fIpathName\fR.. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIPathName\fR is the name of the command, which is the same as +the frame widget's path name. \fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for frame widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5frame\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? \fI?value option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5frame\fR +command. + +.SH BINDINGS +When a new frame is created, it has no default event bindings: +frames are not intended to be interactive. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/grab b/man/9/grab new file mode 100644 index 00000000..fab349fc --- /dev/null +++ b/man/9/grab @@ -0,0 +1,58 @@ +.TH GRAB 9 +.SH NAME +grab \- Confine pointer and keyboard events to a window sub-tree +.SH SYNOPSIS +\f5grab \fIwhat \fR?\fIarg arg \fR...? +.SH DESCRIPTION +This command implements simple pointer grabbing for Tk. +When a grab is set for a particular window, Tk restricts all pointer +events to the grab window and its descendants in Tk's window hierarchy. +Whenever the pointer is within the grab window's subtree, the pointer +will behave exactly the same as if there had been no grab at all +and all events will be reported in the normal fashion. +When the pointer is outside \fIwindow\fR's tree, button presses and +releases and +mouse motion events are reported to \fIwindow\fR, and window entry +and window exit events are ignored. +The grab subtree ``owns'' the pointer: +windows outside the grab subtree will be visible on the screen +but they will be insensitive until the grab is released. +The tree of windows underneath the grab window can include top-level +windows, in which case all of those top-level windows +and their descendants will continue to receive mouse events +during the grab. +.PP +A grab locks out all applications on the screen, +so that only the given subtree of the grabbing application will be +sensitive to pointer events (mouse button presses, mouse button releases, +pointer motions, window entries, and window exits). +During grabs the window manager will not receive pointer +events either (which means that if the grab is not released +the whole GUI will freeze, so be careful!). +.PP +The \f5grab\fR command can take any of the following forms: +.TP +\f5grab release \fIwindow\fR +Releases the grab on \fIwindow\fR if there is one, otherwise does +nothing. Returns an empty string. +.TP +\f5grab set \fIwindow\fR +If a grab was already in effect for this application on +\fIwindow\fR's display then it is automatically released. +If there is already a grab on \fIwindow\fR then the command +does nothing. Returns an empty string. +.TP +\f5grab ifunset \fIwindow\fR +Same as +.B grab set +except that \fIwindow\fR is only grabbed if there is no +other grab currently in effect. +.TP +\f5grab status \fIwindow\fR +Returns \f5none\fR if no grab is currently set on \fIwindow\fR, +or +\fIwindow\fR if it has the grab. +.SH BUGS +The current application-exclusive nature of +.B grab +is a problem which will be adressed in the future. diff --git a/man/9/grid b/man/9/grid new file mode 100644 index 00000000..95b84204 --- /dev/null +++ b/man/9/grid @@ -0,0 +1,332 @@ +.TH GRID 9 +'\" Note: do not modify the .SH NAME line immediately below! +.SH NAME +grid \- Geometry manager that arranges widgets in a grid +.SH SYNOPSIS +\f5grid \fIoption arg \fR?\fIarg ...\fR? + +.SH DESCRIPTION +.PP +The \f5grid\fR command is used to communicate with the grid +geometry manager that arranges widgets in rows and columns inside +of another window, called the geometry master (or master window). +The \f5grid\fR command can have any of several forms, depending +on the \fIoption\fR argument: +.TP +\f5grid bbox \fImaster\fR ?\fIcolumn row\fR? ?\fIcolumn2 row2\fR? +With no arguments, +the bounding box (in pixels) of the grid is returned. +The return value consists of 4 integers. The first two are the pixel +offset from the master window (x then y) of the top-left corner of the +grid, and the second two integers are the bottom-right corner of the grid, +also in pixels. If a single \fIcolumn\fP and \fIrow\fP is specified on +the command line, then the bounding box for that cell is returned, where the +top left cell is numbered from zero. If both \fIcolumn\fP and \fIrow\fP +arguments are specified, then the bounding box spanning the rows and columns +indicated is returned. +.TP +\f5grid cellinfo \fImaster column row\fR +Returns a list giving information about the slave +currently held in the grid cell specified by +\fIcolumn\fP and \fIrow\fP. +The first element of the list is the name of the slave, +and the rest have the same option-value form that +might be specified to \f5grid configure\fR +(the same form as returned by \f5grid info\fR). +.TP +\f5grid columnconfigure \fImaster index \fR?\fI-option value...\fR? +Set the column properties of the \fIindex\fP column of the +geometry master, \fImaster\fP. +The valid options are \f5-minsize\fP, \f5-weight\fP, \f5-pad\fP and \f5-name\fP. +If one or more options are provided, then \fIindex\fP may be given as +a list of column indices to which the configuration options will operate on. +The \f5-minsize\fP option sets the minimum size, in screen units, +that will be permitted for this column. +The \f5-weight\fP option (an integer value) +sets the relative weight for apportioning +any extra spaces among +columns. +A weight of zero (0) indicates the column will not deviate from its requested +size. A column whose weight is two will grow at twice the rate as a column +of weight one when extra space is allocated to the layout. +The \f5-pad\fP option specifies a pad distance that will be +added either side of the column; adjacent columns merge their padding, +creating a pad sized to the larger of the pads on either column. +The \f5-name\fP option associates a name with the column, which can +then be used as an index to refer to that column. +.TP +\f5grid \fIslave \fR?\fIslave ...\fR? ?\fIoptions\fR? +The arguments consist of the names of one or more slave windows +followed by pairs of arguments that specify how +to manage the slaves. +The characters \f5-\fP, \f5x\fP and \f5^\fP, +can be specified instead of a window name to alter the default +location of a \fIslave\fP, as described in the ``RELATIVE PLACEMENT'' +section, below. +The following options are supported: +.RS +.TP +\f5-column \fIindex\fR +Insert the slave so that it occupies the \fIindex\fPth column in the grid. +Column numbers start with 0. If this option is not supplied, then the +slave is arranged just to the right of previous slave specified on this +call to \fIgrid\fP, or column "0" if it is the first slave. For each +\f5x\fP that immediately precedes the \fIslave\fP, the column position +is incremented by one. Thus the \f5x\fP represents a blank column +for this row in the grid. +.TP +\f5-columnspan \fIn\fR +Insert the slave so that it occupies \fIn\fP columns in the grid. +The default is one column, unless the window name is followed by a +\f5-\fP, in which case the columnspan is incremented once for each immediately +following \f5-\fP. +.TP +\f5-in \fIother\fR +Insert the slave(s) in the master +window given by \fIother\fR. The default is the first slave's +parent window. +.TP +\f5-ipadx \fIamount\fR +The \fIamount\fR specifies how much horizontal internal padding to +leave on each side of the slave(s). This is space is added +inside the slave(s) border. +The \fIamount\fR must be a valid screen distance, such as \f52\fR or \f5.5c\fR. +It defaults to 0. +.TP +\f5-ipady \fIamount\fR +The \fIamount\fR specifies how much vertical internal padding to +leave on on the top and bottom of the slave(s). +This space is added inside the slave(s) border. +The \fIamount\fR defaults to 0. +.TP +\f5-padx \fIamount\fR +The \fIamount\fR specifies how much horizontal external padding to +leave on each side of the slave(s), in screen units. +The \fIamount\fR defaults to 0. +This space is added outside the slave(s) border. +.TP +\f5-pady \fIamount\fR +The \fIamount\fR specifies how much vertical external padding to +leave on the top and bottom of the slave(s), in screen units. +The \fIamount\fR defaults to 0. +This space is added outside the slave(s) border. +.TP +\f5-row \fIindex\fR +Insert the slave so that it occupies the \fIindex\fPth row in the grid. +Row numbers start with 0. If this option is not supplied, then the +slave is arranged on the same row as the previous slave specified on this +call to \f5grid\fP, or the first unoccupied row if this is the first slave. +.TP +\f5-rowspan \fIn\fR +Insert the slave so that it occupies \fIn\fP rows in the grid. +The default is one row. If the next \f5grid\fP command contains +\f5^\fP characters instead of \fIslaves\fP that line up with the columns +of this \fIslave\fP, then the \f5rowspan\fP of this \fIslave\fP is +extended by one. +.TP +\f5-sticky \fIstyle\fR +If a slave's cell is larger than its requested dimensions, this +option may be used to position (or stretch) the slave within its cell. +\fIStyle\fR is a string that contains zero or more of the characters +\f5n\fP, \f5s\fP, \f5e\fP or \f5w\fP. +The string can optionally contains spaces or +commas, but they are ignored. Each letter refers to a side (north, south, +east, or west) that the slave will "stick" to. If both \f5n\fP and \f5s\fP (or +\f5e\fP and \f5w\fP) are specified, the slave will be stretched to fill the entire +height (or width) of its cavity. The \f5sticky\fP option subsumes the +combination of \f5-anchor\fP and \f5-fill\fP that is used by \f5pack\fP. +The default is \f5{}\fP, which causes the slave to be centered in its cavity, +at its requested size. +.LP +If any of the slaves are already managed by the geometry manager +then any unspecified options for them retain their previous values rather +than receiving default values. +.LP +It is an error if any \fIslave\fP covers an area already covered by an +existing slave of the grid. +.RE +.TP +\f5grid columndelete \fImaster index0 \fR?\fIindex1\fR? +Deletes columns from \fIindex0\fP up to but not including \fIindex1\fP, +If \fIindex1\fP is not given, it defaults to \fIindex0\fP+1. +The deleted columns may not contain cells spanned by +slaves outside the deleted columns. +.TP +\f5grid columnindex \fImaster index\fP +Returns \fIindex\fP as a numerical index into the column. +.TP +\f5grid columninsert \fImaster index \fR?\fIcount\fR? +Inserts \fIcount\fP (default 1) new columns just before \fIindex\fP. +The inserted rows may not split a spanning cell. +.TP +\f5grid forget \fIslave \fR?\fIslave ...\fR? +Removes each of the \fIslave\fRs from grid for its +master and unmaps their windows. +The slaves will no longer be managed by the grid geometry manager. +The configuration options for that window are forgotten, so that if the +slave is managed once more by the grid geometry manager, the initial +default settings are used. +.TP +\f5grid info \fIslave\fR +Returns a list whose elements are the current configuration state of +the slave given by \fIslave\fR in the same option-value form that +might be specified to \f5grid configure\fR. +The first two elements of the list are ``\f5-in \fImaster\fR'' where +\fImaster\fR is the slave's master. +.TP +\f5grid location \fImaster x y\fR +Given \fIx\fP and \fIy\fP values in screen units relative to the master window, +the column and row number at that \fIx\fP and \fIy\fP location is returned. +For locations that are above or to the left of the grid, \f5-1\fP is returned. +.TP +\f5grid propagate \fImaster\fR ?\fIboolean\fR? +If \fIboolean\fR has a true boolean value such as \f51\fR or \f5on\fR +then propagation is enabled for \fImaster\fR, which must be a window +name (see ``GEOMETRY PROPAGATION'' below). +If \fIboolean\fR has a false boolean value then propagation is +disabled for \fImaster\fR. +In either of these cases an empty string is returned. +If \fIboolean\fR is omitted then the command returns \f50\fR or +\f51\fR to indicate whether propagation is currently enabled +for \fImaster\fR. +Propagation is enabled by default. +.TP +\f5grid rowconfigure \fImaster index \fR?\fI-option value...\fR? +Set the row properties of the \fIindex\fP row of the +geometry master, \fImaster\fP. +The valid options are \f5-minsize\fP, \f5-weight\fP, \f5-pad\fP and \f5-name\fP. +If one or more options are provided, then \fIindex\fP may be given as +a list of row indices to which the configuration options will operate on. +The \f5-minsize\fP option sets the minimum size, in screen units, +that will be permitted for this row. +The \f5-weight\fP option (an integer value) +sets the relative weight for apportioning +any extra spaces among +rows. +A weight of zero (0) indicates the row will not deviate from its requested +size. A row whose weight is two will grow at twice the rate as a row +of weight one when extra space is allocated to the layout. +The \f5-pad\fP option specifies a pad distance that will be +added either side of the row; adjacent rows merge their padding, +creating a pad sized to the larger of the pads on either row. +The \f5-name\fP option associates a name with the row, which can +then be used as an index to refer to that row. +.TP +\f5grid rowdelete \fImaster index0 \fR?\fIindex1\fR? +Deletes rows from \fIindex0\fP up to but not including \fIindex1\fP, +If \fIindex1\fP is not given, it defaults to \fIindex0\fP+1. +The deleted rows may not contain cells spanned by +slaves outside the deleted columns. +.TP +\f5grid rowindex \fImaster index\fP +Returns \fIindex\fP as a numerical index into the row. +.TP +\f5grid rowinsert \fImaster index \fR?\fIcount\fR? +Inserts \fIcount\fP (default 1) new rows just before \fIindex\fP. +The inserted rows may not split a spanning cell. +.TP +\f5grid size \fImaster\fR +Returns the size of the grid (in columns then rows) for \fImaster\fP. +The size is determined either by the largest row or column that has +been occupied by a slave, or the largest column or row that has been explicitly +configured. +.TP +\f5grid slaves \fImaster\fR ?\fI-option value\fR? +If no options are supplied, a list of all of the slaves in \fImaster\fR +are returned, most recently manages first. +\fIOption\fP can be either \f5-row\fP or \f5-column\fP which +causes only the slaves in the row (or column) specified by \fIvalue\fP +to be returned. +.SS INDICES +.PP +An index is either a non-negative integer value, the string +\f5end\fP, (one beyond the last index in the row or column in question), +or a name identifying a row or column previously named with +the \f5-name\fP option to \f5rowconfigure\fP or \f5columnconfigure\fP. +.SS "RELATIVE PLACEMENT" +.PP +The \f5grid\fP command contains a limited set of capabilities that +permit layouts to be created without specifying the row and column +information for each slave. This permits slaves to be rearranged, +added, or removed without the need to explicitly specify row and +column information. +When no column or row information is specified for a \fIslave\fP, +default values are chosen for +\f5column\fP, \f5row\fP, \f5columnspan\fP and \f5rowspan\fP +at the time the \fIslave\fP is managed. The values are chosen +based upon the current layout of the grid, the position of the \fIslave\fP +relative to other \fIslave\fPs in the same grid command, and the presence +of the characters \f5-\fP, \f5^\fP, and \f5^\fP in \f5grid\fP +command where \fIslave\fP names are normally expected. +.RS +.TP +\f5-\fP +This increases the columnspan of the \fIslave\fP to the left. Several +\f5-\fP's in a row will successively increase the columnspan. A \f5-\fP +may not follow a \f5^\fP or a \f5x\fP. +.TP +\f5x\fP +This leaves an empty column between the \fIslave\fP on the left and +the \fIslave\fP on the right. +.TP +\f5^\fP +This extends the \f5rowspan\fP of the \fIslave\fP above the \f5^\fP's +in the grid. The number of \f5^\fP's in a row must match the number of +columns spanned by the \fIslave\fP above it. +.RE +.SS "THE GRID ALGORITHM" +.PP +The grid geometry manager lays out its slaves in three steps. +In the first step, the minimum size needed to fit all of the slaves +is computed, then (if propagation is turned on), a request is made +of the master window to become that size. +In the second step, the requested size is compared against the actual size +of the master. If the sizes are different, then spaces is added to or taken +away from the layout as needed. +For the final step, each slave is positioned in its row(s) and column(s) +based on the setting of its \fIsticky\fP flag. +.PP +To compute the minimum size of a layout, the grid geometry manager +first looks at all slaves whose columnspan and rowspan values are one, +and computes the nominal size of each row or column to be either the +\fIminsize\fP for that row or column, or the sum of the \fIpad\fPding +plus the size of the largest slave, whichever is greater. Then the +slaves whose rowspans or columnspans are greater than one are +examined. If a group of rows or columns need to be increased in size +in order to accommodate these slaves, then extra space is added to each +row or column in the group according to its \fIweight\fP. For each +group whose weights are all zero, the additional space is apportioned +equally. +.PP +For masters whose size is larger than the requested layout, the additional +space is apportioned according to the row and column weights. If all of +the weights are zero, the layout is centered within its master. +For masters whose size is smaller than the requested layout, space is taken +away from columns and rows according to their weights. However, once a +column or row shrinks to its minsize, its weight is taken to be zero. +If more space needs to be removed from a layout than would be permitted, as +when all the rows or columns are at their minimum sizes, the layout is +clipped on the bottom and right. +.SS "GEOMETRY PROPAGATION" +.PP +The grid geometry manager normally computes how large a master must be to +just exactly meet the needs of its slaves, and it sets the +requested width and height of the master to these dimensions. +This causes geometry information to propagate up through a +window hierarchy to a top-level window so that the entire +sub-tree sizes itself to fit the needs of the leaf windows. +However, the \f5grid propagate\fR command may be used to +turn off propagation for one or more masters. +If propagation is disabled then grid will not set +the requested width and height of the master window. +This may be useful if, for example, you wish for a master +window to have a fixed size that you specify. +.SS CREDITS +.PP +The \f5grid\fP command is based on ideas taken from the \fIGridBag\fP +geometry manager written by Doug. Stein, and the \f5blt_table\fR geometry +manager, written by George Howlett. +.SH "SEE ALSO" +.IR pack (9), +.IR types (9), +.IR options (9) diff --git a/man/9/image b/man/9/image new file mode 100644 index 00000000..d6603606 --- /dev/null +++ b/man/9/image @@ -0,0 +1,75 @@ +.TH IMAGE 9 +.SH NAME +image \- Create and manipulate images +.SH SYNOPSIS +\f5image\fR \fIoption \fR?\fIarg arg ...\fR? +.SH DESCRIPTION +The \f5image\fR command is used to create, delete, and query images. +It can take several different forms, depending on the +\fIoption\fR argument. The legal forms are: +.TP +\f5image create bitmap \fR?\fIname\fR? ?\fIoption value ...\fR? +Creates a new image and returns its name. +\fIname\fR specifies the name for the image; if it is omitted then +Tk picks a name of the form \f5image\fIx\fR, where \fIx\fR is +an integer. +The following options are supported: +.RS +.TP +\f5-file \fIname\fR +\fIname\fR gives the name of a file whose contents define the +source bitmap. +The file must be in +.IR image (6) +format. +.TP +\f5-maskfile \fIname\fR +\fIname\fR gives the name of a file whose contents define the +mask. The file must be in +.IR image (6) +format. +.RE +.PP +If an image already exists by the given name then it is replaced +with the new image. +.PP +Transparency effects can be achieved by either the source image including an alpha channel +or by specifying a mask image. +If a mask is specified then the resultant image is generated by rendering the source +through the mask onto a transparent destination image. +.PP +The following commands are posible for images: +.TP +\f5image delete \fR?\fIname name\fR ...? +Deletes each of the named images and returns an empty string. +Each image name is invalidated. +If there are instances of the images displayed in widgets, +the images won't actually be deleted until all of the instances +are released. +.TP +\f5image height \fIname\fR +Returns a decimal string giving the height of image \fIname\fR +in pixels. +.TP +\f5image names\fR +Returns a list containing the names of all existing images. +.TP +\f5image type \fIname\fR +Returns ``bitmap'' if +.I name +is an existing image, or an error otherwise. +.TP +\f5image width \fIname\fR +Returns a decimal string giving the width of image \fIname\fR +in pixels. +.SH BUGS +When an image is reconfigured the widgets that refer to it +will continue to render the original image until their +.B -image +option is reconfigured. +.SH SEE ALSO +.IR options (9), +.IR types (9), +.B imageput +in +.IR tk (2), diff --git a/man/9/label b/man/9/label new file mode 100644 index 00000000..f837d8e9 --- /dev/null +++ b/man/9/label @@ -0,0 +1,79 @@ +.TH LABEL 9 +.SH NAME +label \- Create and manipulate label widgets +.SH SYNOPSIS +\f5label\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-anchor -font -justify +-background -foreground -relief +-bitmap -highlightcolor -takefocus +-borderwidth -highlightthickness -text +-disabledcolor -image -underline +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -height \fIdist\fP +Specifies a desired height for the label. +If this option isn't specified, the label's desired height is computed +from the size of the image or bitmap or text being displayed in it. +.TP +.B -width \fIdist\fP +Specifies a desired width for the label. +If this option isn't specified, the label's desired width is computed +from the size of the image or bitmap or text being displayed in it. + +.SH DESCRIPTION +The \f5label\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a label widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the label such as its colours, font, +text, and initial relief. The \f5label\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A label is a widget that displays a textual string, bitmap or image. +If text is displayed, it must all be in a single font, but it +can occupy multiple lines on the screen (if it contains newlines) and +one of the characters may optionally be underlined using the +\f5underline\fR option. +The label can be manipulated in a few simple ways, such as +changing its relief or text, using the commands described below. + +.SH "WIDGET COMMAND" +The \f5label\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for label widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5label\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5label\fR +command. + +.SH BINDINGS +When a new label is created, it has no default event bindings: +labels are not intended to be interactive. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/listbox b/man/9/listbox new file mode 100644 index 00000000..5c1e1b30 --- /dev/null +++ b/man/9/listbox @@ -0,0 +1,304 @@ +.TH LISTBOX 9 +.SH NAME +listbox \- Create and manipulate listbox widgets +.SH SYNOPSIS +\f5listbox\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-background -highlightcolor -selectforeground +-borderwidth -highlightthickness -takefocus +-font -relief -width +-foreground -selectbackground -xscrollcommand +-height -selectborderwidth -yscrollcommand +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -height \fIdist\fP +Specifies the desired height for the window. +.TP +.B -selectmode \fIval\fP +Specifies one of several styles for manipulating the selection. +The value of the option may be arbitrary, but the default bindings +expect it to be either \f5single\fR, \f5browse\fR, \f5multiple\fR, +or \f5extended\fR; the default value is \f5single\fR. +.TP +.B -width \fIdist\fP +Specifies the desired width for the window. +.SH DESCRIPTION +The \f5listbox\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a listbox widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the listbox such as its colours, font, +text, and relief. The \f5listbox\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A listbox is a widget that displays a list of strings, one per line. +When first created, a new listbox has no elements. +Elements may be added or deleted using widget commands described +below. In addition, one or more elements may be selected as described +below. +.PP +It is not necessary for all the elements to be +displayed in the listbox window at once; commands described below +may be used to change the view in the window. Listboxes allow +scrolling in both directions using the standard \f5-xscrollcommand\fR +and \f5-yscrollcommand\fR options. +.SH INDICES +Many of the widget commands for listboxes take one or more indices +as arguments. +An index specifies a particular element of the listbox, in any of +the following ways: +.TP 12 +\fInumber\fR +Specifies the element as a numerical index, where 0 corresponds +to the first element in the listbox. +.TP 12 +\f5active\fR +Indicates the element that has the location cursor. This element +will be displayed with a highlight rectangle when the listbox has the +keyboard focus, and it is specified with the \f5activate\fR +widget command. +.TP 12 +\f5anchor\fR +Indicates the anchor point for the selection, which is set with the +\f5selection anchor\fR widget command. +.TP 12 +\f5end\fR +Indicates the end of the listbox. +For some commands this means just after the last element; +for other commands it means the last element. +.TP 12 +\f5@\fIx\f5,\fIy\fR +Indicates the element that covers the point in the listbox window +specified by \fIx\fR and \fIy\fR (in pixel coordinates). If no +element covers that point, then the closest element to that +point is used. +.LP +In the widget command descriptions below, arguments named \fIindex\fR, +\fIfirst\fR, and \fIlast\fR always contain text indices in one of +the above forms. + +.SH "WIDGET COMMAND" +The \f5listbox\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for listbox widgets: +.TP +\fIpathName \f5activate\fR \fIindex\fR +Sets the active element to the one indicated by \fIindex\fR. +The active element is drawn with an underline when the widget +has the input focus, and its index may be retrieved with the +index \f5active\fR. +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5listbox\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5listbox\fR +command. +.TP +\fIpathName \f5curselection\fR +Returns a list containing the numerical indices of +all of the elements in the listbox that are currently selected. +If there are no elements selected in the listbox then an empty +string is returned. +.TP +\fIpathName \f5delete \fIfirst \fR?\fIlast\fR? +Deletes one or more elements of the listbox. \fIFirst\fR and \fIlast\fR +are indices specifying the first and last elements in the range +to delete. If \fIlast\fR isn't specified it defaults to +\fIfirst\fR, i.e. a single element is deleted. +.TP +\fIpathName \f5get \fIfirst\fR ?\fIlast\fR? +If \fIlast\fR is omitted, returns the contents of the listbox +element indicated by \fIfirst\fR. +If \fIlast\fR is specified, the command returns a list whose elements +are all of the listbox elements between \fIfirst\fR and \fIlast\fR, +inclusive. +Both \fIfirst\fR and \fIlast\fR may have any of the standard +forms for indices. +.TP +\fIpathName \f5index \fIindex\fR +Returns a decimal string giving the integer index value that +corresponds to \fIindex\fR. +.TP +\fIpathName \f5insert \fIindex \fR?\fIelement element ...\fR? +Inserts zero or more new elements in the list just before the +element given by \fIindex\fR. If \fIindex\fR is specified as +\f5end\fR then the new elements are added to the end of the +list. Returns an empty string. +.TP +\fIpathName \f5nearest \fIy\fR +Given a y-coordinate within the listbox window, this command returns +the index of the (visible) listbox element nearest to that y-coordinate. +.TP +\fIpathName \f5see \fIindex\fR +Adjust the view in the listbox so that the element given by \fIindex\fR +is visible. +If the element is already visible then the command has no effect; +if the element is near one edge of the window then the listbox +scrolls to bring the element into view at the edge; otherwise +the listbox scrolls to center the element. +.TP +\fIpathName \f5selection \fIoption arg\fR +This command is used to adjust the selection within a listbox. It +has several forms, depending on \fIoption\fR: +.RS +.TP +\fIpathName \f5selection anchor \fIindex\fR +Sets the selection anchor to the element given by \fIindex\fR. +The selection anchor is the end of the selection that is fixed +while dragging out a selection with the mouse. +The index \f5anchor\fR may be used to refer to the anchor +element. +.TP +\fIpathName \f5selection clear \fIfirst \fR?\fIlast\fR? +If any of the elements between \fIfirst\fR and \fIlast\fR +(inclusive) are selected, they are deselected. +The selection state is not changed for elements outside +this range. +.TP +\fIpathName \f5selection includes \fIindex\fR +Returns 1 if the element indicated by \fIindex\fR is currently +selected, 0 if it isn't. +.TP +\fIpathName \f5selection set \fIfirst \fR?\fIlast\fR? +Selects all of the elements in the range between +\fIfirst\fR and \fIlast\fR, inclusive, without affecting +the selection state of elements outside that range. +.RE +.TP +\fIpathName \f5size\fR +Returns a decimal string indicating the total number of elements +in the listbox. +.TP +\fIpathName \f5xview \fIargs\fR +This command is used to query and change the horizontal position of the +information in the widget's window. It can take any of the following +forms: +.RS +.TP +\fIpathName \f5xview\fR +Returns a list containing two elements. +Each element is a real fraction between 0 and 1; together they describe +the horizontal span that is visible in the window. +For example, if the first element is .2 and the second element is .6, +20% of the listbox's text is off-screen to the left, the middle 40% is visible +in the window, and 40% of the text is off-screen to the right. +These are the same values passed to scrollbars via the \f5-xscrollcommand\fR +option. +.TP +\fIpathName \f5xview\fR \fIindex\fR +Adjusts the view in the window so that the character position given by +\fIindex\fR is displayed at the left edge of the window. +Character positions are defined by the width of the character \f50\fR. +.TP +\fIpathName \f5xview moveto\fI fraction\fR +Adjusts the view in the window so that \fIfraction\fR of the +total width of the listbox text is off-screen to the left. +\fIfraction\fR must be a fraction between 0 and 1. +.TP +\fIpathName \f5xview scroll \fInumber what\fR +This command shifts the view in the window left or right according to +\fInumber\fR and \fIwhat\fR. +\fINumber\fR must be an integer. +\fIWhat\fR must be either \f5units\fR or \f5pages\fR. +If \fIwhat\fR is \f5units\fR, the view adjusts left or right by +\fInumber\fR character units (the width of the \f50\fR character) +on the display; if it is \f5pages\fR then the view adjusts by +\fInumber\fR screenfuls. +If \fInumber\fR is negative then characters farther to the left +become visible; if it is positive then characters farther to the right +become visible. +.RE +.TP +\fIpathName \f5yview \fI?args\fR? +This command is used to query and change the vertical position of the +text in the widget's window. +It can take any of the following forms: +.RS +.TP +\fIpathName \f5yview\fR +Returns a list containing two elements, both of which are real fractions +between 0 and 1. +The first element gives the position of the listbox element at the +top of the window, relative to the listbox as a whole (0.5 means +it is halfway through the listbox, for example). +The second element gives the position of the listbox element just after +the last one in the window, relative to the listbox as a whole. +These are the same values passed to scrollbars via the \f5-yscrollcommand\fR +option. +.TP +\fIpathName \f5yview\fR \fIindex\fR +Adjusts the view in the window so that the element given by +\fIindex\fR is displayed at the top of the window. +.TP +\fIpathName \f5yview moveto\fI fraction\fR +Adjusts the view in the window so that the element given by \fIfraction\fR +appears at the top of the window. +\fIFraction\fR is a fraction between 0 and 1; 0 indicates the first +element in the listbox, 0.33 indicates the element one-third the +way through the listbox, and so on. +.TP +\fIpathName \f5yview scroll \fInumber what\fR +This command adjusts the view in the window up or down according to +\fInumber\fR and \fIwhat\fR. +\fINumber\fR must be an integer. +\fIWhat\fR must be either \f5units\fR or \f5pages\fR. +If \fIwhat\fR is \f5units\fR, the view adjusts up or down by +\fInumber\fR lines; if it is \f5pages\fR then +the view adjusts by \fInumber\fR screenfuls. +If \fInumber\fR is negative then earlier elements +become visible; if it is positive then later elements +become visible. +.RE +.SH "DEFAULT BINDINGS" +If the selection mode is \f5single\fR or \f5browse\fR, at most one +element can be selected in the listbox at once. +In both modes, clicking button 1 on an element selects +it and deselects any other selected item. +In \f5browse\fR mode it is also possible to drag the selection +with button 1. +.PP +If the selection mode is \f5multiple\fR or \f5extended\fR, +any number of elements may be selected at once, including discontiguous +ranges. In \f5multiple\fR mode, clicking button 1 on an element +toggles its selection state without affecting any other elements. +In \f5extended\fR mode, pressing button 1 on an element selects +it, deselects everything else, and sets the anchor to the element +under the mouse; dragging the mouse with button 1 +down extends the selection to include all the elements between +the anchor and the element under the mouse, inclusive. +.PP +Most people will probably want to use \f5browse\fR mode for +single selections and \f5extended\fR mode for multiple selections; +the other modes appear to be useful only in special situations. +.PP +The behaviour of listboxes can be changed by defining new bindings for +individual widgets. The default bindings do a grab set when button 1 is pressed +and a grab release when button 1 is released. Care must be taken when overriding +either or both of these defaults to ensure that grabbing is consistent. +.SH BUGS +At least one entry is required for the widget to indicate that it has keyboard focus. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/lower b/man/9/lower new file mode 100644 index 00000000..5c066b3f --- /dev/null +++ b/man/9/lower @@ -0,0 +1,12 @@ +.TH LOWER 9 +.SH NAME +lower \- Change a window's position in the stacking order +.SH SYNOPSIS +\f5lower \fIwindow +.SH DESCRIPTION +\f5Lower\fR lowers +\fIwindow\fR so that it is below all of its siblings in the stacking +order (it will be obscured by any siblings that overlap it and +will not obscure any siblings). +.SH "SEE ALSO" +.IR raise (9) diff --git a/man/9/menu b/man/9/menu new file mode 100644 index 00000000..3a69b85d --- /dev/null +++ b/man/9/menu @@ -0,0 +1,461 @@ +.TH MENU 9 +.SH NAME +menu \- Create and manipulate menu widgets +.SH SYNOPSIS +\f5menu\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -borderwidth -foreground +-activeforeground -disabledcolor -relief +-background -font +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -postcommand \fIcommand\fP +If this option is specified then it provides a Tk command to execute +each time the menu is posted. The command is invoked by the \f5post\fR +widget command before posting the menu. +.TP +.B -selectcolor \fIcolour\fP +For menu entries that are check buttons or radio buttons, this option +specifies the colour to display in the indicator when the check button +or radio button is selected. +.SH INTRODUCTION +The \f5menu\fR command creates a new top-level window (given +by the \fIpathName\fR argument) and makes it into a menu widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the menu such as its colours and font. +The \f5menu\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A menu is a widget that displays a collection of one-line entries arranged +in a column. There exist several different types of entries, +each with different properties. Entries of different types may be +combined in a single menu. Menu entries are not the same as +entry widgets. In fact, menu entries are not even distinct widgets; +the entire menu is one widget. +.PP +Menu entries are displayed with up to three separate fields. +The main field is a label in the form of a text string, +a bitmap, or an image, controlled by the \f5-label\fR, +\f5-bitmap\fR, and \f5-image\fR options for the entry. +The second field is a marker for cascade entries, +showing that the entry will post a cascade menu. +It is displayed at the right-hand edge of the entry. +The third field is an \fIindicator\fR. The indicator is present only for +checkbutton or radiobutton entries. It indicates whether the entry +is selected or not, and is displayed to the left of the entry's +string. +.PP +In normal use, an entry becomes active (displays itself differently) +whenever the mouse pointer is over the entry. If a mouse +button is released over the entry then the entry is \fIinvoked\fR. +The effect of invocation is different for each type of entry; +these effects are described below in the sections on individual +entries. +.PP +Entries may be \fIdisabled\fR, which causes their labels +and accelerators to be displayed +with dimmer colours. +The default menu bindings will not allow +a disabled entry to be activated or invoked. +Disabled entries may be re-enabled, at which point it becomes +possible to activate and invoke them again. + +.SH "COMMAND ENTRIES" +The most common kind of menu entry is a command entry, which +behaves much like a button widget. When a command entry is +invoked, a Tk command is executed. The Tk +command is specified with the \f5-command\fR option. + +.SH "SEPARATOR ENTRIES" +A separator is an entry that is displayed as a horizontal dividing +line. A separator may not be activated or invoked, and it has +no behaviour other than its display appearance. + +.SH "CHECKBUTTON ENTRIES" +A checkbutton menu entry behaves much like a checkbutton widget. +When it is invoked it toggles back and forth between the selected +and deselected states. When the entry is selected, the value +``1'' is stored in a particular global variable (as determined by +\f5-variable\fR option for the entry); when +the entry is deselected the value ``0'' is stored in the global variable. +An indicator box is displayed to the left of the label in a checkbutton +entry. If the entry is selected then the indicator's center is displayed +in the colour given by the \f5-selectcolor\fR option for the entry; +otherwise the indicator's center is displayed in the background colour for +the menu. If a \f5-command\fR option is specified for a checkbutton +entry, then its value is evaluated as a Tk command each time the entry +is invoked; this happens after toggling the entry's +selected state. + +.SH "RADIOBUTTON ENTRIES" +A radiobutton menu entry behaves much like a radiobutton widget. +Radiobutton entries are organized in groups of which only one +entry may be selected at a time. Whenever a particular entry +becomes selected it stores a particular value into a particular +global variable (as determined by the \f5-value\fR and +\f5-variable\fR options for the entry). This action +causes any previously-selected entry in the same group +to deselect itself. +Once an entry has become selected, any change to the entry's +associated variable will cause the entry to deselect itself. +Grouping of radiobutton entries is determined by their +associated variables: if two entries have the same associated +variable then they are in the same group. +An indicator diamond is displayed to the left of the label in each +radiobutton entry. If the entry is selected then the indicator's +center is displayed in the colour given by the \f5-selectcolor\fR option +for the entry; +otherwise the indicator's center is displayed in the background colour for +the menu. If a \f5-command\fR option is specified for a radiobutton +entry, then its value is evaluated as a Tk command each time the entry +is invoked; this happens after selecting the entry. + +.SH "CASCADE ENTRIES" +A cascade entry is one with an associated menu (determined +by the \f5-menu\fR option). Cascade entries allow the construction +of cascading menus. +The \f5postcascade\fR widget command can be used to post and unpost +the associated menu just to the right of the cascade entry. +The associated menu must be a child of the menu containing +the cascade entry (this is needed in order for menu traversal to +work correctly). +.PP +A cascade entry posts its associated menu by invoking a +Tk command of the form +.RS +.EX +\fImenu\f5 post \fIx y\fR +.EE +.RE +where \fImenu\fR is the path name of the associated menu, and \fIx\fR +and \fIy\fR are the screen coordinates of the upper-right +corner of the cascade entry. +The lower-level menu is unposted by executing a Tk command with +the form +.RS +.EX +\fImenu\f5 unpost\fR +.EE +.RE +where \fImenu\fR is the name of the associated menu. +.PP +If a \f5-command\fR option is specified for a cascade entry then it is +evaluated as a Tk command whenever the entry is invoked. + +.SH "WIDGET COMMAND" +The \f5menu\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. +.PP +Many of the widget commands for a menu take as one argument an +indicator of which entry of the menu to operate on. These +indicators are called \fIindex\fRes and may be specified in +any of the following forms: +.TP 12 +\fInumber\fR +Specifies the entry numerically, where 0 corresponds +to the top-most entry of the menu, 1 to the entry below it, and +so on. +.TP 12 +\f5active\fR +Indicates the entry that is currently active. If no entry is +active then this form is equivalent to \f5none\fR. This form may +not be abbreviated. +.TP 12 +\f5end\fR +Indicates the bottommost entry in the menu. If there are no +entries in the menu then this form is equivalent to \f5none\fR. +This form may not be abbreviated. +.TP 12 +\f5none\fR +Indicates ``no entry at all''; this is used most commonly with +the \f5activate\fR option to deactivate all the entries in the +menu. In most cases the specification of \f5none\fR causes +nothing to happen in the widget command. +This form may not be abbreviated. +.TP 12 +\f5@\fInumber\fR +In this form, \fInumber\fR is treated as a y-coordinate in the +menu's window; the entry closest to that y-coordinate is used. +For example, ``\f5@0\fR'' indicates the top-most entry in the +window. +.PP +The following widget commands are possible for menu widgets: +.TP +\fIpathName \f5activate \fIindex\fR +Change the state of the entry indicated by \fIindex\fR to \f5active\fR +and redisplay it using its active colours. +Any previously-active entry is deactivated. If \fIindex\fR +is specified as \f5none\fR, or if the specified entry is +disabled, then the menu ends up with no active entry. +Returns an empty string. +.TP +\fIpathName \f5add \fItype \fR?\fIoption value option value ...\fR? +Add a new entry to the bottom of the menu. The new entry's type +is given by \fItype\fR and must be one of \f5cascade\fR, +\f5checkbutton\fR, \f5command\fR, \f5radiobutton\fR, or \f5separator\fR. +If additional arguments +are present, they specify any of the following options: +.RS +.TP +\f5-activebackground \fIvalue\fR +Specifies a background colour to use for displaying this entry when it +is active. +If this option is not specified then the +\f5activebackground\fR option for the overall menu is used. +This option is not available for separator entries. +.TP +\f5-activeforeground \fIvalue\fR +Specifies a foreground colour to use for displaying this entry when it +is active. +If this option is not specified then the +\f5activeforeground\fR option for the overall menu is used. +This option is not available for separator entries. +.TP +\f5-background \fIvalue\fR +Specifies a background colour to use for displaying this entry when it +is in the normal state (neither active nor disabled). +If this option is not specified then the +\f5background\fR option for the overall menu is used. +This option is not available for separator entries. +.TP +\f5-bitmap \fIbitmap\fR +Specifies a bitmap to display in the menu instead of a textual +label. +This option overrides the \f5-label\fR option but may be reset +to an empty string to enable a textual label to be displayed. +If a \f5-image\fR option has been specified, it overrides +\f5-bitmap\fR. +This option is not available for separator entries. +.TP +\f5-command \fIvalue\fR +Specifies a Tk command to execute when the menu entry is invoked. +Not available for separator entries. +.TP +\f5-font \fIvalue\fR +Specifies the font to use when drawing the label or accelerator +string in this entry. +If this option is not specified then +the \f5font\fR option for the overall menu is used. +This option is not available for separator entries. +.TP +\f5-foreground \fIvalue\fR +Specifies a foreground colour to use for displaying this entry when it +is in the normal state (neither active nor disabled). +If this option is not specified then the +\f5foreground\fR option for the overall menu is used. +This option is not available for separator entries. +.TP +\f5-image \fIvalue\fR +Specifies an image to display in the menu instead of a text string +or bitmap +The image must have been created by some previous invocation of +\f5image create\fR. +This option overrides the \f5-label\fR and \f5-bitmap\fR options +but may be reset to an empty string to enable a textual or +bitmap label to be displayed. +This option is not available for separator entries. +.TP +\f5-label \fIvalue\fR +Specifies a string to display as an identifying label in the menu +entry. Not available for separator entries. +.TP +\f5-menu \fIvalue\fR +Available only for cascade entries. Specifies the path name of +the submenu associated with this entry. +The submenu must be a child of the menu. +.TP +\f5-selectcolor \fIvalue\fR +Available only for checkbutton and radiobutton entries. +Specifies the colour to display in the indicator when the entry is +selected. +If this option is not specified then the \f5selectcolor\fR +option for the menu determines the indicator colour. +.TP +\f5-selectimage \fIvalue\fR +Available only for checkbutton and radiobutton entries. +Specifies an image to display in the entry (in place of +the \f5-image\fR option) when it is selected. +\fIValue\fR is the name of an image, which must have been created +by some previous invocation of \f5image create\fR. +This option is ignored unless the \f5-image\fR option has +been specified. +.TP +\f5-state \fIvalue\fR +Specifies one of three states for the entry: \f5normal\fR, \f5active\fR, +or \f5disabled\fR. In normal state the entry is displayed using the +\f5foreground\fR and \f5background\fR +colours. +The active state is typically used when the pointer is over the entry. +In active state the entry is displayed using the \f5activeforeground\fR +and \f5activebackground\fR colours. +Disabled state means that the entry +should be insensitive: the default bindings will refuse to activate +or invoke the entry. +In this state the entry is displayed according to the +\f5disabledcolor\fR and \f5background\fR colours. +This option is not available for separator entries. +.TP +\f5-underline \fIvalue\fR +Specifies the integer index of a character to underline in the entry. +This option is also queried by the default bindings and used to +implement keyboard traversal. +0 corresponds to the first character of the text displayed in the entry, +1 to the next character, and so on. +If a bitmap or image is displayed in the entry then this option is ignored. +This option is not available for separator entries. +.TP +\f5-value \fIvalue\fR +Available only for radiobutton entries. Specifies the value to +store in the entry's associated variable when the entry is selected. +If an empty string is specified, then the \f5-label\fR option +for the entry as the value to store in the variable. +.TP +\f5-variable \fIvalue\fR +Available only for checkbutton and radiobutton entries. Specifies +the name of a global value to set when the entry is selected. +For checkbutton entries the variable is also set when the entry +is deselected. For radiobutton entries, changing the variable +causes the currently-selected entry to deselect itself. +.LP +The \f5add\fR widget command returns an empty string. +.RE +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5menu\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5menu\fR +command. +.TP +\fIpathName \f5delete \fIindex1\fR ?\fIindex2\fR? +Delete all of the menu entries between \fIindex1\fR and +\fIindex2\fR inclusive. +If \fIindex2\fR is omitted then it defaults to \fIindex1\fR. +.TP +\fIpathName \f5entrycget\fR \fIindex option\fR +Returns the current value of a configuration option for +the entry given by \fIindex\fR. +\fIOption\fR may have any of the values accepted by the \f5add\fR +widget command. +.TP +\fIpathName \f5entryconfigure \fIindex \fR?\fIoptions\fR? +This command is similar to the \f5configure\fR command, except that +it applies to the options for an individual entry, whereas \f5configure\fR +applies to the options for the menu as a whole. +\fIOptions\fR may have any of the values accepted by the \f5add\fR +widget command. If \fIoptions\fR are specified, options are modified +as indicated +in the command and the command returns an empty string. +.TP +\fIpathName \f5index \fIindex\fR +Returns the numerical index corresponding to \fIindex\fR, or +\f5none\fR if \fIindex\fR was specified as \f5none\fR. +.TP +\fIpathName \f5insert \fIindex\fR \fItype \fR?\fIoption value option value ...\fR? +Same as the \f5add\fR widget command except that it inserts the new +entry just before the entry given by \fIindex\fR, instead of appending +to the end of the menu. The \fItype\fR, \fIoption\fR, and \fIvalue\fR +arguments have the same interpretation as for the \f5add\fR widget +command. +.TP +\fIpathName \f5invoke \fIindex\fR +Invoke the action of the menu entry. See the sections on the +individual entries above for details on what happens. If the +menu entry is disabled then nothing happens. If the +entry has a command associated with it then the result of that +command is returned as the result of the \f5invoke\fR widget +command. Otherwise the result is an empty string. Note: invoking +a menu entry does not automatically unpost the menu; the default +bindings normally take care of this before invoking the \f5invoke\fR +widget command. +.TP +\fIpathName \f5post \fIx y\fR +Arrange for the menu to be displayed on the screen at the screen +coordinates given by \fIx\fR and \fIy\fR. These coordinates are +adjusted if necessary to guarantee that the entire menu is visible on +the screen. This command normally returns an empty string. +If the \f5postcommand\fR option has been specified, then its value is +executed as a Tk script before posting the menu and the result of +that script is returned as the result of the \f5post\fR widget +command. +If an error returns while executing the command, then the error is +returned without posting the menu. +.TP +\fIpathName \f5postcascade \fIindex\fR +Posts the submenu associated with the cascade entry given by +\fIindex\fR, and unposts any previously posted submenu. +If \fIindex\fR doesn't correspond to a cascade entry, +or if \fIpathName\fR isn't posted, +the command has no effect except to unpost any currently posted +submenu. +.TP +\fIpathName \f5type \fIindex\fR +Returns the type of the menu entry given by \fIindex\fR. +This is the \fItype\fR argument passed to the \f5add\fR widget +command when the entry was created, such as \f5command\fR +or \f5separator\fR. +.TP +\fIpathName \f5unpost\fR +Unmap the window so that it is no longer displayed. If a +lower-level cascaded menu is posted, unpost that menu. Returns an +empty string. +.TP +\fIpathName \f5yposition \fIindex\fR +Returns a decimal string giving the y-coordinate within the menu +window of the topmost pixel in the entry specified by \fIindex\fR. + +.SH "DEFAULT BINDINGS" +Tk automatically creates bindings for menus that give them +the following default behaviour: +.IP [1] +When the mouse enters a menu, the entry underneath the mouse +cursor activates; as the mouse moves around the menu, the active +entry changes to track the mouse. +.IP [2] +When the mouse leaves a menu all of the entries in the menu +deactivate, except in the special case where the mouse moves from +a menu to a cascaded submenu. +.IP [3] +When a button is released over a menu, the active entry (if any) is invoked. +The menu also unposts unless it is a torn-off menu. +.IP [4] +If any of the entries in a menu have letters underlined with +with \f5-underline\fR option, then pressing one of the underlined +letters (or its upper-case or lower-case equivalent) invokes that +entry and unposts the menu. +.PP +Disabled menu entries are non-responsive: they don't activate and +they ignore mouse button presses and releases. +.PP +The behaviour of menus can be changed by defining new bindings for +individual widgets. +.SH BUGS +The first time any colour option of an entry is configured, +all of the menu colour option values are captured and set in the entry. +Any subsequent changes to the menu's colour options +will not be reflected in the entry. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/menubutton b/man/9/menubutton new file mode 100644 index 00000000..e3683563 --- /dev/null +++ b/man/9/menubutton @@ -0,0 +1,134 @@ +.TH MENUBUTTON 9 +.SH NAME +menubutton \- Create and manipulate menubutton widgets +.SH SYNOPSIS +\f5menubutton\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -disabledcolor -justify +-activeforeground -font -relief +-anchor -foreground -takefocus +-background -highlightcolor -text +-bitmap -highlightthickness -underline +-borderwidth -image +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.BI -height \ state +Specifies a desired height for the menubutton. +If this option is not specified, the menubutton's desired height is computed +from the size of the image or bitmap or text being displayed in it. +.TP +.BI -menu \ widgetname +Specifies the path name of the menu associated with this menubutton. +The menu must be a child of the menubutton. +.TP +.BI -state \ state +Specifies one of three states for the menubutton: \f5normal\fR, \f5active\fR, +or \f5disabled\fR. In normal state the menubutton is displayed using the +\f5foreground\fR and \f5background\fR options. The active state is +typically used when the pointer is over the menubutton. In active state +the menubutton is displayed using the \f5activeforeground\fR and +\f5activebackground\fR options. Disabled state means that the menubutton +should be insensitive: the default bindings will refuse to activate +the widget and will ignore mouse button presses. +In this state the \f5disabledcolor\fR and +\f5background\fR options determine how the button is displayed. +.TP +.BI -width \ dist +Specifies a desired width for the menubutton. +If this option is not specified, the menubutton's desired width is computed +from the size of the image or bitmap or text being displayed in it. +.SH INTRODUCTION +.PP +The \f5menubutton\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a menubutton widget. +Additional +options, described above, may be specified to configure aspects of the +menubutton such as its colors, font, text, and initial relief. +The \f5menubutton\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A menubutton is a widget that displays a textual string, bitmap, or image +and is associated with a menu widget. +If text is displayed, it must all be in a single font, but it +can occupy multiple lines on the screen (if it contains newlines) and +one of the characters may optionally be underlined using the +\f5underline\fR option. +In normal usage, pressing +mouse button 1 over the menubutton causes the associated menu to +be posted just underneath the menubutton. +If the mouse button is released over the menubutton then the menu +remains posted; clicking on the menubutton again unposts the menu. +Releasing the mouse button over a menu entry invokes the entry, while +releasing mouse button elsewhere unposts the menu. +.PP +Menubuttons are typically organized into groups called menu bars +that allow scanning: +if the mouse button is pressed over one menubutton (causing it +to post its menu) and the mouse is moved over another menubutton +without releasing the mouse button, then the +menu of the first menubutton is unposted and the menu of the +new menubutton is posted instead. +.SH "WIDGET COMMAND" +.PP +The \f5menubutton\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for menubutton widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5menubutton\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. +If one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5menubutton\fR +command. +.SH "DEFAULT BINDINGS" +Tk automatically creates class bindings for menubuttons that give them +the following default behaviour: +.IP [1] +A menubutton activates whenever the mouse passes over it and deactivates +whenever the mouse leaves it. +.IP [2] +Pressing mouse button 1 over a menubutton posts the menu specified by the +.B -menu +option. +If the menu is already posted then it is unposted. +.IP [3] +Releasing mouse button 1 over the menubutton leaves the menu posted. +Releasing the button over a menu entry, if the menu is posted, invokes that entry. +Releaseing the button anywhere else unposts the menu. +.IP [4] +When a menubutton is posted, its associated menu claims the input +focus to allow keyboard traversal of the menu and its submenus. +See the +.IR menu (9) +manual entry for details on these bindings. +.PP +If the menubutton's state is \f5disabled\fR then none of the above +actions occur: the menubutton is completely non-responsive. +.PP +The behaviour of menubuttons can be changed by defining new bindings for +individual widgets or by redefining the class bindings. +.SH SEE ALSO +.IR menu (9), +.IR options (9), +.IR types (9) diff --git a/man/9/options b/man/9/options new file mode 100644 index 00000000..47abfb41 --- /dev/null +++ b/man/9/options @@ -0,0 +1,244 @@ +.TH OPTIONS 9 +.SH NAME +options \- Standard options supported by widgets +.SH DESCRIPTION +This manual entry describes the common configuration options supported +by widgets in the Tk toolkit. Every widget does not necessarily support +every option (see the manual entries for individual widgets for a list +of the standard options supported by that widget), but if a widget does +support an option with one of the names listed below, then the option +has exactly the effect described below. +For a description of kinds of values that can passed to the various +options, see +.IR types (9). +.PP +In the descriptions below, the name refers to the +switch used in class commands and \f5configure\fR widget commands to +set this value. For example, if an option's command-line switch is set to +\f5-foreground\fR and there exists a widget \f5.a.b.c\fR, then the +command +.RS +.EX +\&.a.b.c configure -foreground black +.EE +.RE +may be used to specify the value \f5black\fR for the option in the +the widget \f5.a.b.c\fR. +.TP +.BI -activebackground " colour" +Specifies background colour to use when drawing active elements. +An element (a widget or portion of a widget) is active if the +mouse cursor is positioned over the element and pressing a mouse button +will cause some action to occur. +.TP +.BI -activeforeground " colour" +Specifies foreground colour to use when drawing active elements. +See above for definition of active elements. +.TP +.BI -actx +Returns the current x position of the widget in screen coordinates. +.TP +.BI -acty +Returns the current y position of the widget in screen coordinates. +.TP +.BI -actwidth +Returns the current allocated width of the widget. +.TP +.BI -actheight +Returns the current allocated height of the widget. +.TP +.BI -anchor " val" +Specifies how the information in a widget (e.g. text or a bitmap) +is to be displayed in the widget. +.I Val +must be one of the values \f5n\fR, \f5ne\fR, \f5e\fR, \f5se\fR, +\f5s\fR, \f5sw\fR, \f5w\fR, \f5nw\fR, or \f5center\fR. +For example, \f5nw\fR means display the information such that its +top-left corner is at the top-left corner of the widget. +.TP +.B -background \fIcolour\fP \fRor\fP -bg \fIcolour\fP +Specifies the normal background colour to use when displaying the +widget. +.TP +.BI -bitmap " bitmap" +Specifies a bitmap to display in the widget. +The exact way in which the bitmap is displayed may be affected by +other options such as \f5anchor\fR or \f5justify\fR. +Typically, if this option is specified then it overrides other +options that specify a textual value to display in the widget; +the \f5bitmap\fR option may be reset to an empty string to re-enable +a text display. +In widgets that support both \f5bitmap\fR and \f5image\fR options, +\f5image\fR will usually override \f5bitmap\fR. +For those widgets that support the \f5foreground\fR option, if the bitmap is +monochrome it is displayed using the foreground colour. +.TP +.B -borderwidth \fIdist\fP \fRor\fP -bd \fIdist\fP +Specifies a non-negative value indicating the width +of the 3-D border to draw around the outside of the widget (if such a +border is being drawn; the \f5relief\fR option typically determines +this). The value may also be used when drawing 3-D effects in the +interior of the widget. +.TP +.B -disabledcolor \fIcolour\fP +Specifies the foreground colour to use when drawing disabled widgets. +Certain widgets can be disabled by use of their +.B -state +option. +.TP +.B -font \fIfont\fP +Specifies the font to use when drawing text inside the widget. +.TP +.B -foreground \fIcolour\fP or -fg \fIcolour\fP +Specifies the normal foreground colour to use when displaying the widget. +.TP +.B -highlightcolor \fIcolour\fP +Specifies the colour to use for the traversal highlight rectangle that is +drawn around the widget when it has the input focus. +.TP +.B -highlightthickness \fIdist\fP +Specifies a non-negative value indicating the width of the highlight +rectangle to draw around the outside of the widget when it has the +input focus. +If the value is zero, no focus highlight is drawn around the widget. +.TP +.B -image \fIimage\fP +Specifies an image to display in the widget, which must have been +created with the \f5image create\fR command. +Typically, if the \f5image\fR option is specified then it overrides other +options that specify a bitmap or textual value to display in the widget; +the \f5image\fR option may be reset to an empty string to re-enable +a bitmap or text display. +For those widgets that support the \f5foreground\fR option, if the image is +monochrome it is displayed using the foreground colour. +.TP +.B -jump \fIboolean\fP +For widgets with a slider that can be dragged to adjust a value, +such as scrollbars, this option determines when +notifications are made about changes in the value. +If the value is false, updates are made continuously as the +slider is dragged. +If the value is true, updates are delayed until the mouse button +is released to end the drag; at that point a single notification +is made (the value ``jumps'' rather than changing smoothly). +.TP +.B -justify \fIval\fP +When there are multiple lines of text displayed in a widget, this +option determines how the lines line up with each other. +.I Val +must be one of \f5left\fR, \f5center\fR, or \f5right\fR. +\f5Left\fR means that the lines' left edges all line up, \f5center\fR +means that the lines' centers are aligned, and \f5right\fR means +that the lines' right edges line up. +.TP +.B -orient \fIorientation\fP +For widgets that can lay themselves out with either a horizontal +or vertical orientation, such as scrollbars, this option specifies +which orientation should be used. +.I Orientation +must be either \f5horizontal\fR +or \f5vertical\fR. +.TP +.B -padx \fIdist\fP +Specifies a non-negative value indicating how much extra space +to request for the widget in the X-direction. +When computing how large a window it needs, the widget will +add this amount to the width it would normally need (as determined +by the width of the things displayed in the widget); if the geometry +manager can satisfy this request, the widget will end up with extra +internal space to the left and/or right of what it displays inside. +Most widgets only use this option for padding text: if they are +displaying a bitmap or image, then they usually ignore padding +options. +.TP +.B -pady \fIdist\fP +Specifies a non-negative value indicating how much extra space +to request for the widget in the Y-direction. +When computing how large a window it needs, the widget will add +this amount to the height it would normally need (as determined by +the height of the things displayed in the widget); if the geometry +manager can satisfy this request, the widget will end up with extra +internal space above and/or below what it displays inside. +Most widgets only use this option for padding text: if they are +displaying a bitmap or image, then they usually ignore padding +options. +.TP +.B -relief \fIval\fP +Specifies the 3-D effect desired for the widget. Acceptable +values for +.I val are \f5raised\fR, \f5sunken\fR, \f5flat\fR, \f5ridge\fR, +and \f5groove\fR. +The value +indicates how the interior of the widget should appear relative +to its exterior; for example, \f5raised\fR means the interior of +the widget should appear to protrude from the screen, relative to +the exterior of the widget. +.TP +.B -selectbackground \fIcolour\fP +Specifies the background colour to use when displaying selected +items. +.TP +.B -selectborderwidth \fIdist\fP +Specifies a non-negative value indicating the width +of the 3-D border to draw around selected items. +.TP +.B -selectforeground \fIcolour\fP +Specifies the foreground colour to use when displaying selected +items. +.TP +.B -takefocus \fIboolean\fP +Determines whether clicking on the widget will automatically +give it the keyboard focus, and also whether the widget +will become part of the keyboard focus list and made accessible +by keyboard navigation. +.TP +.B -text \fIval\fP +Specifies a string, +.IR val , +to be displayed inside the widget. The way in which +the string is displayed depends on the particular widget and may be +determined by other options, such as \f5anchor\fR or \f5justify\fR. +.TP +.B -underline \fIinteger\fP +Specifies the integer index of a character to underline in the widget. +This option is used by the default bindings to implement keyboard +traversal for menu buttons and menu entries. +0 corresponds to the first character of the text displayed in the +widget, 1 to the next character, and so on. +.TP +.B -xscrollcommand \fIcommand\fP +Specifies the prefix for a command used to communicate with horizontal +scrollbars. +When the view in the widget's window changes (or +whenever anything else occurs that could change the display in a +scrollbar, such as a change in the total size of the widget's +contents), the widget will +generate a Tk command by concatenating +.I command +and +two numbers. +Each of the numbers is a fraction between 0 and 1, which indicates +a position in the document. 0 indicates the beginning of the document, +1 indicates the end, .333 indicates a position one third the way through +the document, and so on. +The first fraction indicates the first information in the document +that is visible in the window, and the second fraction indicates +the information just after the last portion that is visible. +The command is +then passed to the Tk interpreter for execution. Typically the +\f5-xscrollcommand\fR option consists of the path name of a scrollbar +widget followed by +.RB `` set '', +e.g. +.RB `` ".x.scrollbar set" '': +this will cause +the scrollbar to be updated whenever the view in the window changes. +If this option is not specified, then no command will be executed. +.TP +.B -yscrollcommand \fIcommand\fP +Specifies the prefix for a command used to communicate with vertical +scrollbars. This option is treated in the same way as the +\f5-xscrollcommand\fR option, except that it is used for vertical +scrollbars and is provided by widgets that support vertical scrolling. +See the description of \f5-xscrollcommand\fR for details +on how this option is used. diff --git a/man/9/pack b/man/9/pack new file mode 100644 index 00000000..4ac3014e --- /dev/null +++ b/man/9/pack @@ -0,0 +1,227 @@ +.TH PACK 9 +.SH NAME +pack \- Geometry manager that packs around edges of cavity +.SH SYNOPSIS +\f5pack \fIoption arg \fR?\fIarg ...\fR? + +.SH DESCRIPTION +The \f5pack\fR command is used to communicate with the packer, +a geometry manager that arranges the children of a parent by +packing them in order around the edges of the parent. +The \f5pack\fR command can have any of several forms, depending +on the \fIoption\fR argument: +.TP +\f5pack \fIslave \fR?\fIslave ...\fR? ?\fIoptions\fR? +If the first argument to \f5pack\fR is a window name (any value +starting with ``.''), then the command is processed in the same +way as \f5pack configure\fR. +.TP +\f5pack configure \fIslave \fR?\fIslave ...\fR? ?\fIoptions\fR? +The arguments consist of the names of one or more slave windows +followed by pairs of arguments that specify how +to manage the slaves. +See ``THE PACKER ALGORITHM'' below for details on how the options +are used by the packer. +The following options are supported: +.RS +.TP +\f5-after \fIother\fR +\fIOther\fR must be the name of another window. +Use its master as the master for the slaves, and insert +the slaves just after \fIother\fR in the packing order. +.TP +\f5-anchor \fIanchor\fR +\fIAnchor\fR must be a valid anchor position such as \f5n\fR +or \f5sw\fR; it specifies where to position each slave in its +parcel. +Defaults to \f5center\fR. +.TP +\f5-before \fIother\fR +\fIOther\fR must be the name of another window. +Use its master as the master for the slaves, and insert +the slaves just before \fIother\fR in the packing order. +.TP +\f5-expand \fIboolean\fR +Specifies whether the slaves should be expanded to consume +extra space in their master. +\fIBoolean\fR may have any proper boolean value, such as \f51\fR +or \f5no\fR. +Defaults to 0. +.TP +\f5-fill \fIstyle\fR +If a slave's parcel is larger than its requested dimensions, this +option may be used to stretch the slave. +\fIStyle\fR must have one of the following values: +.RS +.TP +\f5none\fR +Give the slave its requested dimensions plus any internal padding +requested with \f5-ipadx\fR or \f5-ipady\fR. This is the default. +.TP +\f5x\fR +Stretch the slave horizontally to fill the entire width of its +parcel (except leave external padding as specified by \f5-padx\fR). +.TP +\f5y\fR +Stretch the slave vertically to fill the entire height of its +parcel (except leave external padding as specified by \f5-pady\fR). +.TP +\f5both\fR +Stretch the slave both horizontally and vertically. +.RE +.TP +\f5-in \fIother\fR +Insert the slave(s) at the end of the packing order for the master +window given by \fIother\fR. +.TP +\f5-ipadx \fIdist\fR +\fIDist\fR specifies how much horizontal internal padding to +leave on each side of the slave(s). +\fIDist\fR must be a valid screen distance, such as \f52\fR or \f5.5c\fR. +It defaults to 0. +.TP +\f5-ipady \fIdist\fR +\fIDist\fR specifies how much vertical internal padding to +leave on each side of the slave(s). +\fIDist\fR defaults to 0. +.TP +\f5-padx \fIdist\fR +\fIDist\fR specifies how much horizontal external padding to +leave on each side of the slave(s). +\fIDist\fR defaults to 0. +.TP +\f5-pady \fIdist\fR +\fIDist\fR specifies how much vertical external padding to +leave on each side of the slave(s). +\fIDist\fR defaults to 0. +.TP +\f5-side \fIside\fR +Specifies which side of the master the slave(s) will be packed against. +Must be \f5left\fR, \f5right\fR, \f5top\fR, or \f5bottom\fR. +Defaults to \f5top\fR. +.LP +If no \f5-in\fR, \f5-after\fR or \f5-before\fR option is specified +then each of the slaves will be inserted at the end of the packing list +for its parent unless it is already managed by the packer (in which +case it will be left where it is). +If one of these options is specified then all the slaves will be +inserted at the specified point. +If any of the slaves are already managed by the geometry manager +then any unspecified options for them retain their previous values rather +than receiving default values. +.RE +.TP +\f5pack forget \fIslave \fR?\fIslave ...\fR? +Removes each of the \fIslave\fRs from the packing order for its +master and unmaps their windows. +The slaves will no longer be managed by the packer. +.TP +\f5pack propagate \fImaster\fR ?\fIboolean\fR? +If \fIboolean\fR has a true boolean value such as \f51\fR or \f5on\fR +then propagation is enabled for \fImaster\fR, which must be a window +name (see ``GEOMETRY PROPAGATION'' below). +If \fIboolean\fR has a false boolean value then propagation is +disabled for \fImaster\fR. +In either of these cases an empty string is returned. +If \fIboolean\fR is omitted then the command returns \f50\fR or +\f51\fR to indicate whether propagation is currently enabled +for \fImaster\fR. +Propagation is enabled by default. +.TP +\f5pack slaves \fImaster\fR +Returns a list of all of the slaves in the packing order for \fImaster\fR. +The order of the slaves in the list is the same as their order in +the packing order. +If \fImaster\fR has no slaves then an empty string is returned. + +.SH "THE PACKER ALGORITHM" +For each master the packer maintains an ordered list of slaves +called the \fIpacking list\fR. +The \f5-in\fR, \f5-after\fR, and \f5-before\fR configuration +options are used to specify the master for each slave and the slave's +position in the packing list. +If none of these options is given for a slave then the slave +is added to the end of the packing list for its parent. +.PP +The packer arranges the slaves for a master by scanning the +packing list in order. +At the time it processes each slave, a rectangular area within +the master is still unallocated. +This area is called the \fIcavity\fR; for the first slave it +is the entire area of the master. +.PP +For each slave the packer carries out the following steps: +.IP [1] +The packer allocates a rectangular \fIparcel\fR for the slave +along the side of the cavity given by the slave's \f5-side\fR option. +If the side is top or bottom then the width of the parcel is +the width of the cavity and its height is the requested height +of the slave plus the \f5-ipady\fR and \f5-pady\fR options. +For the left or right side the height of the parcel is +the height of the cavity and the width is the requested width +of the slave plus the \f5-ipadx\fR and \f5-padx\fR options. +The parcel may be enlarged further because of the \f5-expand\fR +option (see ``EXPANSION'' below) +.IP [2] +The packer chooses the dimensions of the slave. +The width will normally be the slave's requested width plus +twice its \f5-ipadx\fR option and the height will normally be +the slave's requested height plus twice its \f5-ipady\fR +option. +However, if the \f5-fill\fR option is \f5x\fR or \f5both\fR +then the width of the slave is expanded to fill the width of the parcel, +minus twice the \f5-padx\fR option. +If the \f5-fill\fR option is \f5y\fR or \f5both\fR +then the height of the slave is expanded to fill the width of the parcel, +minus twice the \f5-pady\fR option. +.IP [3] +The packer positions the slave over its parcel. +If the slave is smaller than the parcel then the \f5-anchor\fR +option determines where in the parcel the slave will be placed. +If \f5-padx\fR or \f5-pady\fR is non-zero, then the given +amount of external padding will always be left between the +slave and the edges of the parcel. +.PP +Once a given slave has been packed, the area of its parcel +is subtracted from the cavity, leaving a smaller rectangular +cavity for the next slave. +If a slave doesn't use all of its parcel, the unused space +in the parcel will not be used by subsequent slaves. +If the cavity should become too small to meet the needs of +a slave then the slave will be given whatever space is +left in the cavity. +If the cavity shrinks to zero size, then all remaining slaves +on the packing list will be unmapped from the screen until +the master window becomes large enough to hold them again. + +.SH EXPANSION +If a master window is so large that there will be extra space +left over after all of its slaves have been packed, then the +extra space is distributed uniformly among all of the slaves +for which the \f5-expand\fR option is set. +Extra horizontal space is distributed among the expandable +slaves whose \f5-side\fR is \f5left\fR or \f5right\fR, +and extra vertical space is distributed among the expandable +slaves whose \f5-side\fR is \f5top\fR or \f5bottom\fR. + +.SH "GEOMETRY PROPAGATION" +The packer normally computes how large a master must be to +just exactly meet the needs of its slaves, and it sets the +requested width and height of the master to these dimensions. +This causes geometry information to propagate up through a +window hierarchy to a top-level window so that the entire +sub-tree sizes itself to fit the needs of the leaf windows. +However, the \f5pack propagate\fR command may be used to +turn off propagation for one or more masters. +If propagation is disabled then the packer will not set +the requested width and height of the packer. +This may be useful if, for example, you wish for a master +window to have a fixed size that you specify. + +.SH "RESTRICTIONS ON MASTER WINDOWS" +The master for each slave must be a frame widget or the top-level window (``.''). +Widgets of other types can be specifed as the master window +but will give rise to unpredictable results. + +.SH SEE ALSO +.IR types (9) diff --git a/man/9/panel b/man/9/panel new file mode 100644 index 00000000..27552f7b --- /dev/null +++ b/man/9/panel @@ -0,0 +1,121 @@ +.TH PANEL 9 +.SH NAME +panel \- embedded graphics +.SH SYNOPSIS +\f5panel\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-anchor -borderwidth -background -relief +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -height \fIdist\fP +Specifies a desired height for the panel. +If this option isn't specified, the panel's desired height is computed +from the image and mask images. If these are replicated, +the default is zero. +.TP +.B -width \fIdist\fP +Specifies a desired width for the panel. +If this option isn't specified, the panel's desired height is computed +from the image and mask images. If these are replicated, +the default is zero. +.SH DESCRIPTION +The \f5panel\fR command creates a new window (given by the \fIpathName\fR +argument) and makes it into a panel widget. +Additional options, described above, may be specified on the +command line +to configure aspects of the panel such as its background colour and 3-D relief. +The \f5panel\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A panel is a widget that displays arbitrary graphics drawn outside +of Tk. An application is free to use any image or mask that it +chooses to create; the panel will display the contents of the image +through the mask (see +.IR draw (2)). +.PP +A panel widget will not display anything until its image has been +set using +.B putimage +(see +.IR tk (2)). + +.SH "WIDGET COMMAND" +The \f5panel\fR command creates a new Tk command whose name +is \fIpathName\fR. This command may be used to invoke various +operations on the widget: It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for panel widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5panel\fR +function. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5panel\fR +function +.TP +\fIpathName \f5dirty\fR ?\fIminx miny maxx maxy\fR? +Mark the area inside the given rectangle +((\fIminx\fP, \fIminy\fP), (\fImaxx\fP, \fImaxy\fP)) +to be flushed to the screen. If the rectangle is not +given, the whole area will be marked. +The coordinates are relative to the image's origin. +.TP +\fIpathName \f5origin\fR ?\fIx y\fR? +Set the point within the image that will be displayed +at the top left of the panel's rectangle. +If the area allocated to the panel is more than +the area drawn by the image, the ``top left'' will +positioned with respect to the value of the +.B -anchor +option. +If the point is not given, the current origin +is returned. +.TP +\fIpathName \f5panelx\fR ?\fIscreenx\fR? +Given a screen x-coordinate, +.IR screenx , +this command returns the image x-coordinate displayed +at that location. +.TP +\fIpathName \f5panely\fR ?\fIscreeny\fR? +Given a screen y-coordinate, +.IR screeny , +this command returns the image y-coordinate displayed +at that location. +.TP +\fIpathName \f5screenx\fR ?\fIpanelx\fR? +Given an image x-coordinate, +.IR panelx , +this command returns the +equivalent screen x-coordinate. +.TP +\fIpathName \f5screeny\fR ?\fIpanely\fR? +Given an image y-coordinate, +.IR panely , +this command returns the +equivalent screen y-coordinate. +.SH BINDINGS +When a new panel is created, it has no default event bindings. +.SH SEE ALSO +.IR draw (2), +.IR tk (2), +.IR options (9), +.IR types (9) diff --git a/man/9/radiobutton b/man/9/radiobutton new file mode 100644 index 00000000..a439e224 --- /dev/null +++ b/man/9/radiobutton @@ -0,0 +1,192 @@ +.TH RADIOBUTTON 9 +.SH NAME +radiobutton \- Create and manipulate radiobutton widgets +.SH SYNOPSIS +\f5radiobutton\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -disabledcolor -justify +-activeforeground -font -relief +-anchor -foreground -takefocus +-background -highlightcolor -text +-bitmap -highlightthickness -underline +-borderwidth -image +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -command \fIcommand\fP +Specifies a Tk command to associate with the button. This command +is typically invoked when mouse button 1 is released over the button +window. The button's global variable (\f5-variable\fR option) will +be updated before the command is invoked. +.TP +.B -height \fIdist\fP +Specifies a desired height for the button. +If this option isn't specified, the button's desired height is computed +from the size of the image or bitmap or text being displayed in it. +.TP +.B -indicatoron \fIboolean\fP +Specifies whether or not the indicator should be drawn. +If false, the \f5relief\fP option is ignored and the widget's +relief is always \f5sunken\fP if the widget is selected +and \f5raised\fP otherwise. +.TP +.B -selectcolor \fIcolour\fP +Specifies a background colour to use when the button is selected. +If \f5indicatoron\fR is true, the colour applies to the indicator. +If \f5indicatoron\fR is false, this colour is used as the background +for the entire widget, in place of \f5background\fR or \f5activebackground\fR, +whenever the widget is selected. +If specified as an empty string, no special colour is used for +displaying when the widget is selected. +.ig +.TP +.B -selectimage \fIimage\fP +Specifies an image to display (in place of the \f5image\fR option) +when the radiobutton is selected. +This option is ignored unless the \f5image\fR option has been +specified. +.. +.TP +.B -state \fIstate\fP +Specifies one of three states for the radiobutton: \f5normal\fR, \f5active\fR, +or \f5disabled\fR. In normal state the radiobutton is displayed using the +\f5foreground\fR and \f5background\fR options. The active state is +typically used when the pointer is over the radiobutton. In active state +the radiobutton is displayed using the \f5activeforeground\fR and +\f5activebackground\fR options. Disabled state means that the radiobutton +should be insensitive: the default bindings will refuse to activate +the widget and will ignore mouse button presses. +In this state the \f5disabledcolor\fR and +\f5background\fR options determine how the radiobutton is displayed. +.TP +.B -value \fIstring\fP +Specifies value to store in the button's associated variable whenever +this button is selected. +.TP +.B -variable \fIstring\fP +Specifies name of global variable to set whenever this button is +selected. Changes in this variable also cause the button to select +or deselect itself. +Defaults to the value \f5selectedButton\fR. +.TP +.B -width \fIdist\fP +Specifies a desired width for the button. +If this option isn't specified, the button's desired width is computed +from the size of the image or bitmap or text being displayed in it. +.SH DESCRIPTION +The \f5radiobutton\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a radiobutton widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the radiobutton such as its colours, font, +text, and initial relief. The \f5radiobutton\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A radiobutton is a widget that displays a textual string, bitmap or image +and a diamond called an \fIindicator\fR. +If text is displayed, it must all be in a single font, but it +can occupy multiple lines on the screen (if it contains newlines) and +one of the characters may optionally be underlined using the +\f5underline\fR option. A radiobutton has +all of the behaviour of a simple button: it can display itself in either +of three different ways, according to the \f5state\fR option; +it can be made to appear +raised, sunken, or flat; and it invokes +a Tk command whenever mouse button 1 is clicked over the +check button. +.PP +In addition, radiobuttons can be \fIselected\fR. +If a radiobutton is selected, the indicator is normally +drawn with a sunken relief and a special colour, and +a Tk variable associated with the radiobutton is set to a particular +value. +If the radiobutton is not selected, the indicator is drawn with a +raised relief and no special colour. +Typically, several radiobuttons share a single variable and the +value of the variable indicates which radiobutton is to be selected. +When a radiobutton is selected it sets the value of the variable to +indicate that fact; each radiobutton also monitors the value of +the variable and automatically selects and deselects itself when the +variable's value changes. +By default the variable \f5selectedButton\fR +is used; its contents give the name of the button that is +selected, or the empty string if no button associated with that +variable is selected. +The name of the variable for a radiobutton, +plus the variable to be stored into it, may be modified with options +on the command line. +Configuration options may also be used to modify the way the +indicator is displayed (or whether it is displayed at all). +By default a radiobutton is configured to select itself on button clicks. +.SH "WIDGET COMMAND" +The \f5radiobutton\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for radiobutton widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5radiobutton\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5radiobutton\fR +command. +.TP +\fIpathName \f5deselect\fR +Deselects the radiobutton and sets the associated variable to an +empty string. +If this radiobutton was not currently selected, the command has +no effect. +.TP +\fIpathName \f5invoke\fR +Does just what would have happened if the user invoked the radiobutton +with the mouse: selects the button and invokes +its associated Tk command, if there is one. +The return value is the return value from the Tk command, or an +empty string if there is no command associated with the radiobutton. +This command is ignored if the radiobutton's state is \f5disabled\fR. +.TP +\fIpathName \f5select\fR +Selects the radiobutton and sets the associated variable to the +value corresponding to this widget. + +.SH BINDINGS +Tk automatically creates bindings for radiobuttons that give them +the following default behaviour: +.IP [1] +The radiobutton activates whenever the mouse passes over it and deactivates +whenever the mouse leaves the radiobutton. +.IP [2] +When mouse button 1 is pressed over a radiobutton it is invoked (it +becomes selected and the command associated with the button is +invoked, if there is one). +.PP +If the radiobutton's state is \f5disabled\fR then none of the above +actions occur: the radiobutton is completely non-responsive. +.PP +The behaviour of radiobuttons can be changed by defining new bindings for +individual widgets. +.SH SEE ALSO +.IR button (9), +.IR checkbutton (9), +.IR choicebutton (9), +.IR options (9), +.IR types (9) diff --git a/man/9/raise b/man/9/raise new file mode 100644 index 00000000..8e9f7951 --- /dev/null +++ b/man/9/raise @@ -0,0 +1,13 @@ +.TH RAISE 9 +.SH NAME +raise \- Change a window's position in the stacking order +.SH SYNOPSIS +\f5raise \fIwindow +.SH DESCRIPTION +.B Raise +raises +\fIwindow\fR so that it is above all of its siblings in the stacking +order (it will not be obscured by any siblings and will obscure +any siblings that overlap it). +.SH "SEE ALSO" +.IR lower (9) diff --git a/man/9/scale b/man/9/scale new file mode 100644 index 00000000..85d2e48d --- /dev/null +++ b/man/9/scale @@ -0,0 +1,198 @@ +.TH SCALE 9 +.SH NAME +scale \- Create and manipulate scale widgets +.SH SYNOPSIS +\f5scale\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -font -orient +-background -foreground -relief +-borderwidth -highlightcolor -takefocus +-disabledcolor -highlightthickness +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -bigincrement \fIdist\fR +Some interactions with the scale cause its value to change by +``large'' increments; this option specifies the size of the +large increments. If specified as 0, the large increments default +to 1/10 the range of the scale. +.TP +.B -command \fIcommand\fR +Specifies the prefix of a Tk command to invoke whenever the scale's +value is changed via a widget command. +The actual command consists +of this option followed by a space and a real number indicating the +new value of the scale. +.TP +.B -from \fIfrac\fR +A real value corresponding to the left or top end of the scale. +.TP +.B -height \fIdist\fP +Specifies a desired height for the scale. +If this option isn't specified, the scale is given a default height. +.TP +.B -label \fIstring\fR +A string to display as a label for the scale. If the option is specified +as an empty string, no label is displayed. +.TP +.B -resolution \fIfrac\fR +A real value specifying the resolution for the scale. +If this value is greater than zero then the scale's value will always be +rounded to an even multiple of this value, as will tick marks and +the endpoints of the scale. If the value is less than zero then no +rounding occurs. Defaults to 1 (i.e., the value will be integral). +.TP +.B -showvalue \fIboolean\fR +Specifies a boolean value indicating whether or not the current +value of the scale is to be displayed. +.TP +.B -sliderlength \fIdist\fR +Specfies the size of the slider along the slider's +long dimension.. +.TP +.B -sliderrelief \fIrelief\fI +Specifies the relief to use when drawing the slider. +.TP +.B -state \fIstate\fR +Specifies one of three states for the scale: \f5normal\fR, +\f5active\fR, or \f5disabled\fR. +If the scale is disabled then the value may not be changed and the scale +won't activate. +If the scale is active, the slider is displayed using the colour +specified by the \f5activebackground\fR option. +.TP +.B -tickinterval \fIfrac\fR +Must be a real value. +Determines the spacing between numerical +tick marks displayed below or to the left of the slider. +If 0, no tick marks will be displayed. +.TP +.B -to \fIfrac\fR +Specifies a real value corresponding +to the right or bottom end of the scale. +This value may be either less than or greater than the \f5from\fR option. +.TP +.B -width \fIdist\fP +Specifies a desired width for the scale. +If this option isn't specified, the scale is given a default width. +.SH DESCRIPTION +The \f5scale\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a scale widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the scale such as its colours, orientation, +and relief. The \f5scale\fR command returns its +\fIpathName\fR argument. At the time this command is invoked, +there must not exist a window named \fIpathName\fR. +.PP +A scale is a widget that displays a rectangular \fItrough\fR and a +small \fIslider\fR. The trough corresponds to a range +of real values (determined by the \f5from\fR, \f5to\fR, and +\f5resolution\fR options), +and the position of the slider selects a particular real value. +The slider's position (and hence the scale's value) may be adjusted +with the mouse or keyboard as described in the BINDINGS +section below. Whenever the scale's value is changed, a Tk +command is invoked (using the \f5command\fR option) to notify +other interested widgets of the change. +.PP +Three annotations may be displayed in a scale widget: a label +appearing at the top right of the widget (top left for horizontal +scales), a number displayed just to the left of the slider +(just above the slider for horizontal scales), and a collection +of numerical tick marks just to the right of the trough +(just below the trough for horizontal scales). Each of these three +annotations may be enabled or disabled using the +configuration options. + +.SH "WIDGET COMMAND" +The \f5scale\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for scale widgets: +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5scale\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5scale\fR +command. +.TP +\fIpathName \f5coords \fR?\fIvalue\fR? +Returns a list whose elements are the x and y coordinates of +the point along the centreline of the trough that corresponds +to \fIvalue\fR. +If \fIvalue\fR is omitted then the scale's current value is used. +.TP +\fIpathName \f5get\fR ?\fIx y\fR? +If \fIx\fR and \fIy\fR are omitted, returns the current value +of the scale. If \fIx\fR and \fIy\fR are specified, they give +pixel coordinates within the widget; the command returns +the scale value corresponding to the given pixel. +Only one of \fIx\fR or \fIy\fR is used: for horizontal scales +\fIy\fR is ignored, and for vertical scales \fIx\fR is ignored. +.TP +\fIpathName \f5identify\fR \fIx y\fR +Returns a string indicating what part of the scale lies under +the coordinates given by \fIx\fR and \fIy\fR. +A return value of \f5slider\fR means that the point is over +the slider; \f5trough1\fR means that the point is over the +portion of the slider above or to the left of the slider; +and \f5trough2\fR means that the point is over the portion +of the slider below or to the right of the slider. +If the point isn't over one of these elements, an empty string +is returned. +.TP +\fIpathName \f5set\fR \fIvalue\fR +This command is invoked to change the current value of the scale, +and hence the position at which the slider is displayed. \fIValue\fR +gives the new value for the scale. +The command has no effect if the scale is disabled. +.SH BINDINGS +Tk automatically creates bindings for scales that give them +the following default behaviour. +Where the behaviour is different for vertical and horizontal scales, +the horizontal behaviour is described in parentheses. +.IP [1] +If button 1 is pressed in the trough, the scale's value will +be incremented or decremented by the value of the \f5bigincrement\fR +option so that the slider moves in the direction of the cursor. +If the button is held down, the action auto-repeats. +.IP [2] +If button 1 is pressed over the slider, the slider can be dragged +with the mouse. +.IP [3] +If the widget receives Up-arrow or Left-arrow key events, the scale's value +will be incremented or decremented so as to adjust the value towards the +.BR from value . +.IP [4] +If the widget receives Down-arrow or Right-arrow key events, the scale's value +will be incremented or decremented so as to adjust the value towards the +.BR to value . +.PP +If the scale is disabled using the \f5state\fR option then +none of the above bindings have any effect. +.PP +The behaviour of scales can be changed by defining new bindings for +individual widgets. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/scrollbar b/man/9/scrollbar new file mode 100644 index 00000000..b7fe9ea4 --- /dev/null +++ b/man/9/scrollbar @@ -0,0 +1,252 @@ +.TH SCROLLBAR 9 +.SH NAME +scrollbar \- Create and manipulate scrollbar widgets +.SH SYNOPSIS +\f5scrollbar\fI pathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-activebackground -borderwidth -orient +-background -jump -relief +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -activerelief \fIrelief\fP +Specifies the relief to use when displaying the element that is +active, if any. +Elements other than the active element are always displayed with +a raised relief. +.TP +.B -command \fIcommand\fP +Specifies the prefix of a Tk command to invoke to change the view +in the widget associated with the scrollbar. When a user requests +a view change by manipulating the scrollbar, a Tk command is +invoked. The actual command consists of this option followed by +additional information as described later. This option almost always has +a value such as \f5.t xview\fR or \f5.t yview\fR, consisting of the +name of a widget and either \f5xview\fR (if the scrollbar is for +horizontal scrolling) or \f5yview\fR (for vertical scrolling). +All scrollable widgets have \f5xview\fR and \f5yview\fR commands +that take exactly the additional arguments appended by the scrollbar +as described in SCROLLING COMMANDS below. +.ig +DEPRECATED +.TP +.B -elementborderwidth \fIdist\fP +Specifies the width of borders drawn around the internal elements +of the scrollbar (the two arrows and the slider). +If this value is less than zero, the value of the \f5borderwidth\fR +option is used in its place. +.. +.TP +.B -height \fIdist\fP +Specifies a desired height for the scrollbar. +If this option isn't specified, a suitable default height is chosen. +.TP +.B -width \fIdist\fP +Specifies a desired width for the scrollbar. +If this option isn't specified, a suitable default width is chosen. +.SH DESCRIPTION +The \f5scrollbar\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a scrollbar widget. +Additional options, described above, may be specified on the command +line to configure aspects of the scrollbar +such as its colours, orientation, and relief. +The \f5scrollbar\fR command returns its \fIpathName\fR argument. +At the time this command is invoked, there must not exist a window +named \fIpathName\fR. +.PP +A scrollbar is a widget that displays two arrows, one at each end of +the scrollbar, and a \fIslider\fR in the middle portion of the +scrollbar. +It provides information about what is visible in an \fIassociated window\fR +that displays a document of some sort (such as a file being edited or +a drawing). +The position and size of the slider indicate which portion of the +document is visible in the associated window. For example, if the +slider in a vertical scrollbar covers the top third of the area +between the two arrows, it means that the associated window displays +the top third of its document. +.PP +Scrollbars can be used to adjust the view in the associated window +by clicking or dragging with the mouse. See the BINDINGS section +below for details. + +.SH ELEMENTS +A scrollbar displays five elements, which are referred to in the +widget commands for the scrollbar: +.TP 12 +\f5arrow1\fR +The top or left arrow in the scrollbar. +.TP 12 +\f5trough1\fR +The region between the slider and \f5arrow1\fR. +.TP 12 +\f5slider\fR +The rectangle that indicates what is visible in the associated widget. +.TP 12 +\f5trough2\fR +The region between the slider and \f5arrow2\fR. +.TP 12 +\f5arrow2\fR +The bottom or right arrow in the scrollbar. + +.SH "WIDGET COMMAND" +The \f5scrollbar\fR command creates a new Tk command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for scrollbar widgets: +.TP +\fIpathName \f5activate \fR?\fIelement\fR? +Marks the element indicated by \fIelement\fR as active, which +causes it to be displayed as specified by the \f5activebackground\fR option. +The only element values understood by this command are \f5arrow1\fR, +\f5slider\fR, or \f5arrow2\fR. +If any other value is specified then no element of the scrollbar +will be active. +If \fIelement\fR is not specified, the command returns +the name of the element that is currently active, or an empty string +if no element is active. +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5scrollbar\fR +command. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5scrollbar\fR +command. +.TP +\fIpathName \f5delta \fIdeltaX deltaY\fR +Returns a real number indicating the fractional change in +the scrollbar setting that corresponds to a given change +in slider position. For example, if the scrollbar is horizontal, +the result indicates how much the scrollbar setting must change +to move the slider \fIdeltaX\fR pixels to the right (\fIdeltaY\fR is +ignored in this case). +If the scrollbar is vertical, the result indicates how much the +scrollbar setting must change to move the slider \fIdeltaY\fR pixels +down. The arguments and the result may be zero or negative. +.TP +\fIpathName \f5fraction \fIx y\fR +Returns a real number between 0 and 1 indicating where the point +given by \fIx\fR and \fIy\fR lies in the trough area of the scrollbar. +The value 0 corresponds to the top or left of the trough, the +value 1 corresponds to the bottom or right, 0.5 corresponds to +the middle, and so on. +\fIX\fR and \fIy\fR must be pixel coordinates relative to the scrollbar +widget. +If \fIx\fR and \fIy\fR refer to a point outside the trough, the closest +point in the trough is used. +.TP +\fIpathName \f5get\fR +Returns the scrollbar settings in the form of a list whose +elements are the arguments to the most recent \f5set\fR widget command. +.TP +\fIpathName \f5identify\fR \fIx y\fR +Returns the name of the element under the point given by \fIx\fR and +\fIy\fR (such as \f5arrow1\fR), or an empty string if the point does +not lie in any element of the scrollbar. +\fIX\fR and \fIy\fR must be pixel coordinates relative to the scrollbar +widget. +.TP +\fIpathName \f5set\fR \fIfirst last\fR +This command is invoked by the scrollbar's associated widget to +tell the scrollbar about the current view in the widget. +The command takes two arguments, each of which is a real fraction +between 0 and 1. +The fractions describe the range of the document that is visible in +the associated widget. +For example, if \fIfirst\fR is 0.2 and \fIlast\fR is 0.4, it means +that the first part of the document visible in the window is 20% +of the way through the document, and the last visible part is 40% +of the way through. + +.SH "SCROLLING COMMANDS" +When the user interacts with the scrollbar, for example by dragging +the slider, the scrollbar notifies the associated widget that it +must change its view. +The scrollbar makes the notification by evaluating a Tk command +generated from the scrollbar's \f5-command\fR option. +The command may take any of the following forms. +In each case, \fIprefix\fR is the contents of the +\f5-command\fR option, which usually has a form like \f5.t yview\fR +.TP +\fIprefix \f5moveto \fIfraction\fR +\fIFraction\fR is a real number between 0 and 1. +The widget should adjust its view so that the point given +by \fIfraction\fR appears at the beginning of the widget. +If \fIfraction\fR is 0 it refers to the beginning of the +document. 1.0 refers to the end of the document, 0.333 +refers to a point one-third of the way through the document, +and so on. +.TP +\fIprefix \f5scroll \fInumber \f5unit\fR +The widget should adjust its view by \fInumber\fR units. +The units are defined in whatever way makes sense for the widget, +such as characters or lines in a text widget. +\fINumber\fR is either 1, which means one unit should scroll off +the top or left of the window, or -1, which means that one unit +should scroll off the bottom or right of the window. +.TP +\fIprefix \f5scroll \fInumber \f5page\fR +The widget should adjust its view by \fInumber\fR pages. +It is up to the widget to define the meaning of a page; typically +it is slightly less than what fits in the window, so that there +is a slight overlap between the old and new views. +\fINumber\fR is either 1, which means the next page should +become visible, or -1, which means that the previous page should +become visible. + +.SH BINDINGS +Tk automatically creates bindings for scrollbars that give them +the following default behaviour. +If the behaviour is different for vertical and horizontal scrollbars, +the horizontal behaviour is described in parentheses. + +.IP [1] +Pressing button 1 over \f5arrow1\fR causes the view in the +associated widget to shift up (left) by one unit so that the +document appears to move down (right) one unit. +If the button is held down, the action auto-repeats. +.IP [2] +Pressing button 1 over \f5trough1\fR causes the view in the +associated widget to shift up (left) by one screenful so that the +document appears to move down (right) one screenful. +.IP [3] +Pressing button 1 over the slider and dragging causes the view +to drag with the slider. +If the \f5jump\fR option is true, then the view doesn't drag along +with the slider; it changes only when the mouse button is released. +.IP [4] +Pressing button 1 over \f5trough2\fR causes the view in the +associated widget to shift down (right) by one screenful so that the +document appears to move up (left) one screenful. +.IP [5] +Pressing button 1 over \f5arrow2\fR causes the view in the +associated widget to shift down (right) by one unit so that the +document appears to move up (left) one unit. +If the button is held down, the action auto-repeats. +.IP [6] +If button 2 is pressed over the trough or the slider, it sets +the view to correspond to the mouse position; dragging the +mouse with button 2 down causes the view to drag with the mouse. +If button 2 is pressed over one of the arrows, it causes the +same behaviour as pressing button 1. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/see b/man/9/see new file mode 100644 index 00000000..cd849073 --- /dev/null +++ b/man/9/see @@ -0,0 +1,37 @@ +.TH SEE 9 +.SH NAME +see \- Make a portion of a widget visible. +.SH SYNOPSIS +\f5see \fIoption\fP ?\fIpathName\fR? +.SH DESCRIPTION +\f5See\fP makes sure that a portion of a widget +is visible in its containing view; for instance, it will +scroll a canvas or text widget to ensure that the +specified portion is in view. The following options +are supported: +.TP +\f5-rectangle\fP \fIlist\fP +Specifies a list with four \fIdist\fP coordinates describing the left, top, +right, and bottom coordinates of the rectangular region, +in coordinates relative to the widget origin, of the area +that should be made visible. +.TP +\f5-point\fP \fIlist\P +Specifies a list with two \fIdist\fP coordinates describing +a point within the widget that should be made visible +by preference if the entirety of the above-specified +rectangle cannot be shown. Defaults to the top left of +the specified rectangle. +.TP +\f5-where\fP +If this option is given, \f5see\fP returns a list containing +the left, top, right and bottom coordinates of +the currently visible portion of +.IR pathName . +.PP +If neither the \f5-rectangle\fP or the \f5-point\fP +options are given, then the entire area of \fIpathName\fP +will be made visible. +.SH SEE ALSO +.IR options (9), +.IR types (9) diff --git a/man/9/send b/man/9/send new file mode 100644 index 00000000..2f1cee9a --- /dev/null +++ b/man/9/send @@ -0,0 +1,38 @@ +.TH SEND 9 +.SH NAME +send \- send a value down a Tk channel +.SH SYNOPSIS +\f5send \fIchan\fP \fIstring\fP +.SH DESCRIPTION +.B Send +is the gateway from the Tk world into the Limbo world. +It sends +.I string +down +.IR chan , +which should previously have been named with a call to +.B namechan +(see +.IR tk (2)). +Tk channels are non blocking, so the call will return immediately, +whether the message has been sent or not. If too many messages +have been queued on the +.IR chan , +then the message will be +discarded, and a warning printed on the console. +.I String +is not subject to interpretation by the usual Tk quoting rules. +.SH BUGS +.I String +is not subject to interpretation by the usual Tk quoting rules. +This means, for example that: +.EX + radiobutton .x -text X -variable x -value x + radiobutton .y -text Y -variable y -value y + button .z -text Submit {send chan submit [variable X]} +.EE +will not work as expected. Instead, one must interrogate values +directly in Limbo. +.PP +The specialised queued channels will be replaced by buffered channels in Limbo in +a future edition of Inferno. diff --git a/man/9/text b/man/9/text new file mode 100644 index 00000000..f530e358 --- /dev/null +++ b/man/9/text @@ -0,0 +1,1188 @@ +.TH TEXT 9 +.SH NAME +text \- Create and manipulate text widgets +.SH SYNOPSIS +\f5text\fI \fIpathName \fR?\fIoptions\fR? +.SH STANDARD OPTIONS +.EX +-background -pady -takefocus +-borderwidth -relief -xscrollcommand +-font -selectbackground -yscrollcommand +-foreground -selectborderwidth +-padx -selectforeground +.EE +.SH "WIDGET-SPECIFIC OPTIONS" +.TP +.B -height \fIdist\fP +Specifies the desired height for the window. +.TP +.B -spacing1 \fIdist\fP +Requests additional space above each text line in the widget, +using any of the standard forms for screen distances. +If a line wraps, this option only applies to the first line +on the display. +This option may be overriden with \f5-spacing1\fR options in +tags. +.TP +.B -spacing2 \fIdist\fP +For lines that wrap (so that they cover more than one line on the +display) this option specifies additional space to provide between +the display lines that represent a single line of text. +The value may have any of the standard forms for screen distances. +This option may be overriden with \f5-spacing2\fR options in +tags. +.TP +.B -spacing3 \fIdist\fP +Requests additional space below each text line in the widget, +using any of the standard forms for screen distances. +If a line wraps, this option only applies to the last line +on the display. +This option may be overriden with \f5-spacing3\fR options in +tags. +.TP +.B -state \fPstate\fP +Specifies one of two states for the text: \f5normal\fR or \f5disabled\fR. +If the text is disabled then characters may not be inserted or deleted +and no insertion cursor will be displayed, even if the input focus is +in the widget. +.TP +.B -tabs \fIdist\fP +Specifies a set of tab stops for the window. The option's value consists +of a list of \fIdist\fP values giving the positions of the tab stops. Each +\fIdist\fP may optionally be followed in the next list element +by one of the keywords \f5left\fR, \f5right\fR, \f5center\fR, +or \f5numeric\fR, which specifies how to justify +text relative to the tab stop. \f5Left\fR is the default; it causes +the text following the tab character to be positioned with its left edge +at the tab position. \f5Right\fR means that the right edge of the text +following the tab character is positioned at the tab position, and +\f5center\fR means that the text is centered at the tab position. +\f5Numeric\fR means that the decimal point in the text is positioned +at the tab position; if there is no decimal point then the least +significant digit of the number is positioned just to the left of the +tab position; if there is no number in the text then the text is +right-justified at the tab position. +For example, \f5-tabs {2c left 4c 6c center}\fR creates three +tab stops at two-centimeter intervals; the first two use left +justification and the third uses center justification. +If the list of tab stops does not have enough elements to cover all +of the tabs in a text line, then Tk extrapolates new tab stops using +the spacing and alignment from the last tab stop in the list. +The value of the \f5tabs\fR option may be overridden by \f5-tabs\fR +options in tags. +If no \f5-tabs\fR option is specified, or if it is specified as +an empty list, then Tk uses default tabs spaced every eight +(average size) characters. +.TP +.B -width \fIdist\fP +Specifies the desired width for the window. +.TP +.B -wrap \fIval\fP +Specifies how to handle lines in the text that are too long to be +displayed in a single line of the text's window. +The value must be \f5none\fR or \f5char\fR or \f5word\fR. +A wrap mode of \f5none\fR means that each line of text appears as +exactly one line on the screen; extra characters that don't fit +on the screen are not displayed. +In the other modes each line of text will be broken up into several +screen lines if necessary to keep all the characters visible. +In \f5char\fR mode a screen line break may occur after any character; +in \f5word\fR mode a line break will only be made at word boundaries. + +.SH DESCRIPTION +The \f5text\fR command creates a new window (given by the +\fIpathName\fR argument) and makes it into a text widget. +Additional +options, described above, may be specified on the command line +to configure aspects of the text such as its default background colour +and relief. The \f5text\fR command returns the +path name of the new window. +.PP +A text widget displays one or more lines of text and allows that +text to be edited. +Text widgets support three different kinds of annotations on the +text, called tags, marks, and embedded windows. +Tags allow different portions of the text +to be displayed with different fonts and colours. +In addition, Tk commands can be associated with tags so +that scripts are invoked when particular actions such as keystrokes +and mouse button presses occur in particular ranges of the text. +See TAGS below for more details. +.PP +The second form of annotation consists of marks, which are floating +markers in the text. +Marks are used to keep track of various interesting positions in the +text as it is edited. +See MARKS below for more details. +.PP +The third form of annotation allows arbitrary windows to be +embedded in a text widget. +See EMBEDDED WINDOWS below for more details. + +.SH INDICES +Many of the widget commands for texts take one or more indices +as arguments. +An index is a string used to indicate a particular place within +a text, such as a place to insert characters or one endpoint of a +range of characters to delete. +Indices have the syntax +.RS +.EX +\fIbase modifier modifier modifier ...\fR +.EE +.RE +Where \fIbase\fR gives a starting point and the \fImodifier\fRs +adjust the index from the starting point (e.g. move forward or +backward one character). Every index must contain a \fIbase\fR, +but the \fImodifier\fRs are optional. +.PP +The \fIbase\fR for an index must have one of the following forms: +.TP 12 +\fIline\f5.\fIchar\fR +Indicates \fIchar\fR'th character on line \fIline\fR. +Lines are numbered from 1 for consistency with other UNIX programs +that use this numbering scheme. +Within a line, characters are numbered from 0. +If \fIchar\fR is \f5end\fR then it refers to the newline character +that ends the line. +.TP 12 +\f5@\fIx\f5,\fIy\fR +Indicates the character that covers the pixel whose x and y coordinates +within the text's window are \fIx\fR and \fIy\fR. +.TP 12 +\f5end\fR +Indicates the end of the text (the character just after the last +newline). +.TP 12 +\fImark\fR +Indicates the character just after the mark whose name is \fImark\fR. +.TP 12 +\fItag\f5.first\fR +Indicates the first character in the text that has been tagged with +\fItag\fR. +This form generates an error if no characters are currently tagged +with \fItag\fR. +.TP 12 +\fItag\f5.last\fR +Indicates the character just after the last one in the text that has +been tagged with \fItag\fR. +This form generates an error if no characters are currently tagged +with \fItag\fR. +.TP 12 +\fIpathName\fR +Indicates the position of the embedded window whose name is +\fIpathName\fR. +This form generates an error if there is no embedded window +by the given name. +.PP +If modifiers follow the base index, each one of them must have one +of the forms listed below. +.TP +\f5+ \fIcount\f5 chars\fR +Adjust the index forward by \fIcount\fR characters, moving to later +lines in the text if necessary. If there are fewer than \fIcount\fR +characters in the text after the current index, then set the index +to the last character in the text. +Spaces on either side of \fIcount\fR are optional. +.TP +\f5\- \fIcount\f5 chars\fR +Adjust the index backward by \fIcount\fR characters, moving to earlier +lines in the text if necessary. If there are fewer than \fIcount\fR +characters in the text before the current index, then set the index +to the first character in the text. +Spaces on either side of \fIcount\fR are optional. +.TP +\f5+ \fIcount\f5 lines\fR +Adjust the index forward by \fIcount\fR lines, retaining the same +character position within the line. If there are fewer than \fIcount\fR +lines after the line containing the current index, then set the index +to refer to the same character position on the last line of the text. +Then, if the line is not long enough to contain a character at the indicated +character position, adjust the character position to refer to the last +character of the line (the newline). +Spaces on either side of \fIcount\fR are optional. +.TP +\f5\- \fIcount\f5 lines\fR +Adjust the index backward by \fIcount\fR lines, retaining the same +character position within the line. If there are fewer than \fIcount\fR +lines before the line containing the current index, then set the index +to refer to the same character position on the first line of the text. +Then, if the line is not long enough to contain a character at the indicated +character position, adjust the character position to refer to the last +character of the line (the newline). +Spaces on either side of \fIcount\fR are optional. +.TP +\f5linestart\fR +Adjust the index to refer to the first character on the line. +.TP +\f5lineend\fR +Adjust the index to refer to the last character on the line (the newline). +.TP +\f5wordstart\fR +Adjust the index to refer to the first character of the word containing +the current index. A word consists of any number of adjacent characters +that are letters, digits, or underscores, or a single character that +is not one of these. +.TP +\f5wordend\fR +Adjust the index to refer to the character just after the last one of the +word containing the current index. If the current index refers to the last +character of the text then it is not modified. +.PP +If more than one modifier is present then they are applied in +left-to-right order. For example, the index ``\f5end \- 1 chars\fR'' +refers to the next-to-last character in the text and the index +``\f5insert wordstart \- 1 c\fR'' refers to the character just before +the first one in the word containing the insertion cursor. + +.SH TAGS +The first form of annotation in text widgets is a tag. +A tag is a textual string that is associated with some of the characters +in a text. +Tags may contain arbitrary characters, but it is probably best to +avoid using the the characters `` '' (space), \f5+\fR, or \f5-\fR: +these characters have special meaning in indices, so tags containing +them can't be used as indices. The tag name may not begin with a digit. +There may be any number of tags associated with characters in a +text. +Each tag may refer to a single character, a range of characters, or +several ranges of characters. +An individual character may have any number of tags associated with it. +.PP +A priority order is defined among tags, and this order is used in +implementing some of the tag-related functions described below. +When a tag is defined (by associating it with characters or setting +its display options or binding commands to it), it is given +a priority higher than any existing tag. +The priority order of tags may be redefined using the +``\fIpathName \f5tag raise\fR'' and ``\fIpathName \f5tag lower\fR'' +widget commands. +.PP +Tags serve three purposes in text widgets. +First, they control the way information is displayed on the screen. +By default, characters are displayed as determined by the +\f5background\fR, \f5font\fR, and \f5foreground\fR options for the +text widget. +However, display options may be associated with individual tags +using the ``\fIpathName \f5tag configure\fR'' widget command. +If a character has been tagged, then the display options associated +with the tag override the default display style. +The following options are currently supported for tags: +.TP +\f5-background \fIcolour\fR +\fIColor\fR specifies the background colour to use for characters +associated with the tag. +.TP +\f5-borderwidth \fIdist\fR +\fIDist\fR specifies the width of a 3-D border to draw around +the background. +This option is used in conjunction with the \f5-relief\fR +option to give a 3-D appearance to the background for characters; +it is ignored unless the \f5-background\fR option +has been set for the tag. +.TP +\f5-font \fIfont\fR +\fIFont\fR is the name of a font to use for drawing characters. +.TP +\f5-foreground \fIcolour\fR +\fIColor\fR specifies the colour to use when drawing text and other +foreground information such as underlines. +.TP +\f5-justify \fIjustify\fR +If the first character of a display line has a tag for which this +option has been specified, then \fIjustify\fR determines how to +justify the line. +It must be one of \f5left\fR, \f5right\fR, or \f5center\fR. +If a line wraps, then the justification for each line on the +display is determined by the first character of that display line. +.TP +\f5-lmargin1 \fIdist\fR +If the first character of a text line has a tag for which this +option has been specified, then \fIdist\fR specifies how +much the line should be indented from the left edge of the +window. +\fIDist\fR may have any of the standard forms for screen +distances. +If a line of text wraps, this option only applies to the +first line on the display; the \f5-lmargin2\fR option controls +the indentation for subsequent lines. +.TP +\f5-lmargin2 \fIdist\fR +If the first character of a display line has a tag for which this +option has been specified, and if the display line is not the +first for its text line (i.e., the text line has wrapped), then +\fIdist\fR specifies how much the line should be indented from +the left edge of the window. +\fIDist\fR may have any of the standard forms for screen +distances. +This option is only used when wrapping is enabled, and it only +applies to the second and later display lines for a text line. +.TP +\f5-offset \fIdist\fR +\fIDist\fR specifies an amount by which the text's baseline +should be offset vertically from the baseline of the overall +line, in pixels. +For example, a positive offset can be used for superscripts +and a negative offset can be used for subscripts. +\fIDist\fR may have any of the standard forms for screen +distances. +.TP +\f5-overstrike \fIboolean\fR +Specifies whether or not to draw a horizontal rule through +the middle of characters. +.TP +\f5-relief \fIrelief\fR +\fIRelief\fR specifies the 3-D relief to use for drawing backgrounds. +This option is used in conjunction with the \f5-borderwidth\fR +option to give a 3-D appearance to the background for characters; +it is ignored unless the \f5-background\fR option +has been set for the tag. +.TP +\f5-rmargin \fIdist\fR +If the first character of a display line has a tag for which this +option has been specified, then \fIdist\fR specifies how wide +a margin to leave between the end of the line and the right +edge of the window. +This option is only used when wrapping is enabled. +If a text line wraps, the right margin for each line on the +display is determined by the first character of that display +line. +.TP +\f5-spacing1 \fIdist\fR +\fIDist\fR specifies how much additional space should be +left above each text line, using any of the standard forms for +screen distances. +If a line wraps, this option only applies to the first +line on the display. +.TP +\f5-spacing2 \fIdist\fR +For lines that wrap, this option specifies how much additional +space to leave between the display lines for a single text line. +\fIDist\fR may have any of the standard forms for screen +distances. +.TP +\f5-spacing3 \fIdist\fR +\fIDist\fR specifies how much additional space should be +left below each text line, using any of the standard forms for +screen distances. +If a line wraps, this option only applies to the last +line on the display. +.TP +\f5-tabs \fItabList\fR +\fITabList\fR specifies a set of tab stops in the same form +as for the \f5-tabs\fR option for the text widget. This +option only applies to a display line if it applies to the +first character on that display line. +If this option is specified as an empty string, it cancels +the option, leaving it unspecified for the tag (the default). +If the option is specified as a non-empty string that is +an empty list, such as \f5-tags\0{\0}\fR, then it requests +default 8-character tabs as described for the \f5tabs\fR +widget option. +.TP +\f5-underline \fIboolean\fR +\fIBoolean\fR specifies whether or not to draw an underline underneath +characters. +.TP +\f5-wrap \fImode\fR +\fIMode\fR specifies how to handle lines that are wider than the +text's window. +It has the same legal values as the \f5-wrap\fR option +for the text widget: \f5none\fR, \f5char\fR, or \f5word\fR. +If this tag option is specified, it overrides the \f5-wrap\fR option +for the text widget. +.PP +If a character has several tags associated with it, and if their +display options conflict, then the options of the highest priority +tag are used. +If a particular display option hasn't been specified for a +particular tag, or if it is specified as an empty string, then +that option will never be used; the next-highest-priority +tag's option will be used instead. +If no tag specifies a particular display option, then the default +style for the widget will be used. +.PP +The second purpose for tags is event bindings. +You can associate bindings with a tag in much the same way you can +associate bindings with a widget class: whenever particular +events occur on characters with the given tag, a given +Tk command will be executed. +Tag bindings can be used to give behaviours to ranges of characters; +among other things, this allows hypertext-like +features to be implemented. +For details, see the description of the \f5tag bind\fR widget +command below. +.PP +The third use for tags is in managing the selection. +See THE SELECTION below. + +.SH MARKS +The second form of annotation in text widgets is a mark. +Marks are used for remembering particular places in a text. +They are something like tags, in that they have names and +they refer to places in the file, but a mark isn't associated +with particular characters. +Instead, a mark is associated with the gap between two characters. +Only a single position may be associated with a mark at any given +time. +If the characters around a mark are deleted the mark will still +remain; it will just have new neighbour characters. +In contrast, if the characters containing a tag are deleted then +the tag will no longer have an association with characters in +the file. +Marks may be manipulated with the ``\fIpathName \f5mark\fR'' widget +command, and their current locations may be determined by using the +mark name as an index in widget commands. +.PP +Each mark also has a \fIgravity\fR, which is either \f5left\fR or +\f5right\fR. +The gravity for a mark specifies what happens to the mark when +text is inserted at the point of the mark. +If a mark has left gravity, then the mark is treated as if it +were attached to the character on its left, so the mark will +remain to the left of any text inserted at the mark position. +If the mark has right gravity, new text inserted at the mark +position will appear to the right of the mark. The gravity +for a mark defaults to \f5right\fR. +.PP +The name space for marks is different from that for tags: the +same name may be used for both a mark and a tag, but they will refer +to different things. +.PP +Two marks have special significance. +First, the mark \f5insert\fR is associated with the insertion cursor, +as described under THE INSERTION CURSOR below. +Second, the mark \f5current\fR is associated with the character +closest to the mouse and is adjusted automatically to track the +mouse position and any changes to the text in the widget (one +exception: \f5current\fR is not updated in response to mouse +motions if a mouse button is down; the update will be deferred +until all mouse buttons have been released). +Neither of these special marks may be deleted. + +.SH EMBEDDED WINDOWS +The third form of annotation in text widgets is an embedded window. +Each embedded window annotation causes a window to be displayed +at a particular point in the text. +There may be any number of embedded windows in a text widget, +and any widget may be used as an embedded window. +The embedded window's position on the screen will be updated as the +text is modified or scrolled. +Each embedded window occupies one character's worth of index space +in the text widget, and it may be referred to either by the name +of its embedded window or by its position in the widget's +index space. +If the range of text containing the embedded window is deleted and the +window is a child of the text widget then the window is destroyed. +.PP +When an embedded window is added to a text widget with the +\f5window create\fR widget command, several configuration +options may be associated with it. +These options may be modified later with the \f5window configure\fR +widget command. +The following options are currently supported: +.TP +\f5-align \fIwhere\fR +If the window is not as tall as the line in which it is displayed, +this option determines where the window is displayed in the line. +\fIWhere\fR must have one of the values \f5top\fR (align the top of the window +with the top of the line), \f5center\fR (center the window +within the range of the line), \f5bottom\fR (align the bottom of the +window with the bottom of the line's area), +or \f5baseline\fR (align the bottom of the window with the baseline +of the line). +.TP +\f5-padx \fIdist\fR +\fIDist\fR specifies the amount of extra space to leave on +each side of the embedded window. +It may have any of the usual forms defined for a screen distance. +.TP +\f5-pady \fIdist\fR +\fIDist\fR specifies the amount of extra space to leave on +the top and on the bottom of the embedded window. +It may have any of the usual forms defined for a screen distance. +.TP +\f5-stretch \fIboolean\fR +If the requested height of the embedded window is less than the +height of the line in which it is displayed, this option can be +used to specify whether the window should be stretched vertically +to fill its line. +If the \f5-pady\fR option has been specified as well, then the +requested padding will be retained even if the window is +stretched. +.TP +\f5-window \fIpathName\fR +Specifies the name of a window to display in the annotation. + +.SH THE SELECTION +Selection support is implemented via tags. +The \f5sel\fR tag is automatically defined when a text widget is +created, and it may not be deleted with the ``\fIpathName \f5tag delete\fR'' +widget command. Furthermore, the \f5selectbackground\fR, +\f5selectborderwidth\fR, and \f5selectforeground\fR options for +the text widget are tied to the \f5background\fR, +\f5borderwidth\fR, and \f5foreground\fR options for the \f5sel\fR +tag: changes in either will automatically be reflected in the +other. + +.SH THE INSERTION CURSOR +The mark named \f5insert\fR has special significance in text widgets. +It is defined automatically when a text widget is created and it +may not be unset with the ``\fIpathName \f5mark unset\fR'' widget +command. +The \f5insert\fR mark represents the position of the insertion +cursor, and the insertion cursor will automatically be drawn at +this point whenever the text widget has the input focus. + +.SH "WIDGET COMMAND" +The \f5text\fR command creates a new Tk command whose +name is the same as the path name of the text's window. This +command may be used to invoke various +operations on the widget. It has the following general form: +.RS +.EX +\fIpathName option \fR?\fIarg arg ...\fR? +.EE +.RE +\fIPathName\fR is the name of the command, which is the same as +the text widget's path name. \fIOption\fR and the \fIarg\fRs +determine the exact behaviour of the command. The following +commands are possible for text widgets: +.TP +\fIpathName \f5bbox \fIindex\fR +Returns a list of four elements describing the screen area +of the character given by \fIindex\fR. +The first two elements of the list give the x and y coordinates +of the upper-left corner of the area occupied by the +character, and the last two elements give the width and height +of the area. +If the character is only partially visible on the screen, then +the return value reflects just the visible part. +If the character is not visible on the screen then the return +value is an empty list. +.TP +\fIpathName \f5cget\fR \fIoption\fR +Returns the current value of the configuration option given +by \fIoption\fR. +\fIOption\fR may have any of the values accepted by the \f5text\fR +command. +.TP +\fIpathName \f5compare\fR \fIindex1 op index2\fR +Compares the indices given by \fIindex1\fR and \fIindex2\fR according +to the relational operator given by \fIop\fR, and returns 1 if +the relationship is satisfied and 0 if it isn't. +\fIOp\fR must be one of the operators <, <=, ==, >=, >, or !=. +If \fIop\fR is == then 1 is returned if the two indices refer to +the same character, if \fIop\fR is < then 1 is returned if \fIindex1\fR +refers to an earlier character in the text than \fIindex2\fR, and +so on. +.TP +\fIpathName \f5configure\fR ?\fIoption\fR? \fI?value option value ...\fR? +Query or modify the configuration options of the widget. +If no \fIoption\fR is specified, returns a list of all of +the available options for \fIpathName\fR. If +one or more \fIoption-value\fR pairs are specified, then the command +modifies the given widget option(s) to have the given value(s); in +this case the command returns an empty string. +\fIOption\fR may have any of the values accepted by the \f5text\fR +command. +.TP +\fIpathName \f5debug \fR?\fIboolean\fR? +If the value is a true one then internal consistency checks will be +turned on in the code associated with text widgets. +If \fIboolean\fR has a false value then the debugging checks will +be turned off. +In either case the command returns an empty string. +If \fIboolean\fR is not specified then the command returns \f5on\fR +or \f5off\fR to indicate whether or not debugging is turned on. +There is a single debugging switch shared by all text widgets: turning +debugging on or off in any widget turns it on or off for all widgets. +For widgets with large amounts of text, the consistency checks may +cause a noticeable slow-down. +.TP +\fIpathName \f5delete \fIindex1 \fR?\fIindex2\fR? +Delete a range of characters from the text. +If both \fIindex1\fR and \fIindex2\fR are specified, then delete +all the characters starting with the one given by \fIindex1\fR +and stopping just before \fIindex2\fR (i.e. the character at +\fIindex2\fR is not deleted). +If \fIindex2\fR doesn't specify a position later in the text +than \fIindex1\fR then no characters are deleted. +If \fIindex2\fR isn't specified then the single character at +\fIindex1\fR is deleted. +It is not allowable to delete characters in a way that would leave +the text without a newline as the last character. +The command returns an empty string. +.TP +\fIpathName \f5dlineinfo \fIindex\fR +Returns a list with five elements describing the area occupied +by the display line containing \fIindex\fR. +The first two elements of the list give the x and y coordinates +of the upper-left corner of the area occupied by the +line, the third and fourth elements give the width and height +of the area, and the fifth element gives the position of the baseline +for the line, measured down from the top of the area. +All of this information is measured in pixels. +If the current wrap mode is \f5none\fR and the line extends beyond +the boundaries of the window, +the area returned reflects the entire area of the line, including the +portions that are out of the window. +If the line is shorter than the full width of the window then the +area returned reflects just the portion of the line that is occupied +by characters and embedded windows. +If the display line containing \fIindex\fR is not visible on +the screen then the return value is an empty list. +.TP +\fIpathName \f5get \fIindex1 \fR?\fIindex2\fR? +Return a range of characters from the text. +The return value will be all the characters in the text starting +with the one whose index is \fIindex1\fR and ending just before +the one whose index is \fIindex2\fR (the character at \fIindex2\fR +will not be returned). +If \fIindex2\fR is omitted then the single character at \fIindex1\fR +is returned. +If there are no characters in the specified range (e.g. \fIindex1\fR +is past the end of the file or \fIindex2\fR is less than or equal +to \fIindex1\fR) then an empty string is returned. +If the specified range contains embedded windows, no information +about them is included in the returned string. +.TP +\fIpathName \f5index \fIindex\fR +Returns the position corresponding to \fIindex\fR in the form +\fIline.char\fR where \fIline\fR is the line number and \fIchar\fR +is the character number. +\fIIndex\fR may have any of the forms described under INDICES above. +.TP +\fIpathName \f5insert \fIindex chars \fR?\fItagList chars tagList ...\fR? +Inserts all of the \fIchars\fR arguments just before the character at +\fIindex\fR. +If \fIindex\fR refers to the end of the text (the character after +the last newline) then the new text is inserted just before the +last newline instead. +If there is a single \fIchars\fR argument and no \fItagList\fR, then +the new text will receive any tags that are present on both the +character before and the character after the insertion point; if a tag +is present on only one of these characters then it will not be +applied to the new text. +If \fItagList\fR is specified then it consists of a list of +tag names; the new characters will receive all of the tags in +this list and no others, regardless of the tags present around +the insertion point. +If multiple \fIchars\fR-\fItagList\fR argument pairs are present, +they produce the same effect as if a separate \f5insert\fR widget +command had been issued for each pair, in order. +The last \fItagList\fR argument may be omitted. +.TP +\fIpathName \f5mark \fIoption \fR?\fIarg arg ...\fR? +This command is used to manipulate marks. The exact behaviour of +the command depends on the \fIoption\fR argument that follows +the \f5mark\fR argument. The following forms of the command +are currently supported: +.RS +.TP +\fIpathName \f5mark gravity \fImarkName\fR ?\fIdirection\fR? +If \fIdirection\fR is not specified, returns \f5left\fR or \f5right\fR +to indicate which of its adjacent characters \fImarkName\fR is attached +to. +If \fIdirection\fR is specified, it must be \f5left\fR or \f5right\fR; +the gravity of \fImarkName\fR is set to the given value. +.TP +\fIpathName \f5mark names\fR +Returns a list whose elements are the names of all the marks that +are currently set. +.TP +\fIpathName \f5mark next \fIindex\fR +Returns the name of the next mark at or after \fIindex\fR. +If \fIindex\fR is specified in numerical form, then the search for +the next mark begins at that index. +If \fIindex\fR is the name of a mark, then the search for +the next mark begins immediately after that mark. +This can still return a mark at the same position if +there are multiple marks at the same index. +If a mark has been set to the special \f5end\fP index, +then it appears to be \fIafter\fP \f5end\fP with respect to the \f5mark next\fP operation. +An empty string is returned if there are no marks after \fIindex\fP. +.TP +\fIpathName \f5mark previous \fIindex\fR +Returns the name of the mark at or before \fIindex\fR. +If \fIindex\fR is specified in numerical form, then the search for +the previous mark begins with the character just before that index. +If \fIindex\fR is the name of a mark, then the search for +the next mark begins immediately before that mark. +This can still return a mark at the same position if +there are multiple marks at the same index. +An empty string is returned if there are no marks before \fIindex\fR. +.TP +\fIpathName \f5mark set \fImarkName index\fR +Sets the mark named \fImarkName\fR to a position just before the +character at \fIindex\fR. +If \fImarkName\fR already exists, it is moved from its old position; +if it doesn't exist, a new mark is created. +This command returns an empty string. +.TP +\fIpathName \f5mark unset \fImarkName \fR?\fImarkName markName ...\fR? +Remove the mark corresponding to each of the \fImarkName\fR arguments. +The removed marks will not be usable in indices and will not be +returned by future calls to ``\fIpathName \f5mark names\fR''. +This command returns an empty string. +.RE +.TP +\fIpathName \f5scan\fR \fIoption args\fR +This command is used to implement scanning on texts. It has +two forms, depending on \fIoption\fR: +.RS +.TP +\fIpathName \f5scan mark \fIx y\fR +Records \fIx\fR and \fIy\fR and the current view in the text window, +for use in conjunction with later \f5scan dragto\fR commands. +Typically this command is associated with a mouse button press in +the widget. It returns an empty string. +.TP +\fIpathName \f5scan dragto \fIx y\fR +This command computes the difference between its \fIx\fR and \fIy\fR +arguments and the \fIx\fR and \fIy\fR arguments to the last +\f5scan mark\fR command for the widget. +It then adjusts the view by 10 times the difference in coordinates. +This command is typically associated +with mouse motion events in the widget, to produce the effect of +dragging the text at high speed through the window. The return +value is an empty string. +.RE +.TP +\fIpathName \f5search \fR?\fIswitches\fR? \fIpattern index \fR?\fIstopIndex\fR? +Searches the text in \fIpathName\fR starting at \fIindex\fR for a range +of characters that matches \fIpattern\fR. +If a match is found, the index of the first character in the match is +returned as result; otherwise an empty string is returned. +One or more of the following switches +may be specified to control the search: +.RS +.TP +\f5-backwards\fR +The search will proceed backward through the text, finding the +matching range closest to \fIindex\fR whose first character +is before \fIindex\fR. +.TP +\f5-nocase\fR +Ignore case differences between the pattern and the text. +.TP +\f5-\|-\fR +This switch has no effect except to terminate the list of switches: +the next argument will be treated as \fIpattern\fR even if it starts +with \f5-\fR. +.LP +The matching range must be entirely within a single line of text. +If \fIstopIndex\fR is specified, the search stops at that index: +for forward searches, no match at or after \fIstopIndex\fR will +be considered; for backward searches, no match earlier in the +text than \fIstopIndex\fR will be considered. +If \fIstopIndex\fR is omitted, the entire text will be searched: +when the beginning or end of the text is reached, the search +continues at the other end until the starting location is reached +again; if \fIstopIndex\fR is specified, no wrap-around will occur. +.RE +.TP +\fIpathName \f5see \fIindex\fR +Adjusts the view in the window so that the character given by \fIindex\fR +is completely visible. +If \fIindex\fR is already visible then the command does nothing. +If \fIindex\fR is a short distance out of view, the command +adjusts the view just enough to make \fIindex\fR visible at the +edge of the window. +If \fIindex\fR is far out of view, then the command centers +\fIindex\fR in the window. +.TP +\fIpathName \f5tag \fIoption \fR?\fIarg arg ...\fR? +This command is used to manipulate tags. The exact behaviour of the +command depends on the \fIoption\fR argument that follows the +\f5tag\fR argument. The following forms of the command are currently +supported: +.RS +.TP +\fIpathName \f5tag add \fItagName index1 \fR?\fIindex2 index1 index2 ...\fR? +Associate the tag \fItagName\fR with all of the characters starting +with \fIindex1\fR and ending just before +\fIindex2\fR (the character at \fIindex2\fR isn't tagged). +A single command may contain any number of \fIindex1\fR-\fIindex2\fR +pairs. +If the last \fIindex2\fR is omitted then the single character at +\fIindex1\fR is tagged. +If there are no characters in the specified range (e.g. \fIindex1\fR +is past the end of the file or \fIindex2\fR is less than or equal +to \fIindex1\fR) then the command has no effect. +.TP +\fIpathName \f5tag bind \fItagName\fR ?\fIsequence\fR? ?\fIscript\fR? +This command associates \fIscript\fR with the tag given by +\fItagName\fR. +Whenever the event sequence given by \fIsequence\fR occurs for a +character that has been tagged with \fItagName\fR, +the script will be invoked. +This widget command is similar to the \f5bind\fR command except that +it operates on characters in a text rather than entire widgets. +See the \f5bind\fR manual entry for complete details +on the syntax of \fIsequence\fR and the substitutions performed +on \fIscript\fR before invoking it. +If all arguments are specified then a new binding is created, replacing +any existing binding for the same \fIsequence\fR and \fItagName\fR +(if the first character of \fIscript\fR is ``+'' then \fIscript\fR +augments an existing binding rather than replacing it). +In this case the return value is an empty string. +.RS +.PP +The only events for which bindings may be specified are those related +to the mouse and keyboard, such as \f5Enter\fR, \f5Leave\fR, +\f5ButtonPress\fR, \f5Motion\fR, and \f5KeyPress\fR. +Event bindings for a text widget use the \f5current\fR mark +described under MARKS above. +An \f5Enter\fR event triggers for a tag when the tag first +becomes present on the current character, and a \f5Leave\fR +event triggers for a tag when it ceases to be present on +the current character. +\f5Enter\fR and \f5Leave\fR events can happen either because the +\f5current\fR mark moved or because the character at that +position changed. +Note that these events are different than \f5Enter\fR and \f5Leave\fR +events for windows. +Mouse and keyboard events are directed to the current character. +.PP +It is possible for the current character to have multiple tags, +and for each of them to have a binding for a particular event +sequence. +When this occurs, one binding is invoked for each tag, in order +from lowest-priority to highest priority. +If there are multiple matching bindings for a single tag, then +the most specific binding is chosen (see the manual entry for +the \f5bind\fR command for details). +.PP +If bindings are created for the widget as a whole using the +\f5bind\fR command, then those bindings will supplement the +tag bindings. +The tag bindings will be invoked first, followed by bindings +for the window as a whole. +.RE +.TP +\fIpathName \f5tag cget\fR \fItagName option\fR +This command returns the current value of the option named \fIoption\fR +associated with the tag given by \fItagName\fR. +\fIOption\fR may have any of the values accepted by the \f5tag configure\fR +widget command. +.TP +\fIpathName \f5tag configure \fItagName\fR ?\fIoption\fR? ?\fIvalue\fR? ?\fIoption value ...\fR? +This command is similar to the \f5configure\fR widget command except +that it modifies options associated with the tag given by \fItagName\fR +instead of modifying options for the overall text widget. +If one or more \fIoption-value\fR pairs are specified, then the command +modifies the given option(s) to have the given value(s) in \fItagName\fR. +See TAGS above for details on the options available for tags. +.TP +\fIpathName \f5tag delete \fItagName \fR?\fItagName ...\fR? +Deletes all tag information for each of the \fItagName\fR +arguments. +The command removes the tags from all characters in the file +and also deletes any other information associated with the tags, +such as bindings and display information. +The command returns an empty string. +.TP +\fIpathName\f5 tag lower \fItagName \fR?\fIbelowThis\fR? +Changes the priority of tag \fItagName\fR so that it is just lower +in priority than the tag whose name is \fIbelowThis\fR. +If \fIbelowThis\fR is omitted, then \fItagName\fR's priority +is changed to make it lowest priority of all tags. +.TP +\fIpathName \f5tag names \fR?\fIindex\fR? +Returns a list whose elements are the names of all the tags that +are active at the character position given by \fIindex\fR. +If \fIindex\fR is omitted, then the return value will describe +all of the tags that exist for the text (this includes all tags +that have been named in a ``\fIpathName \f5tag\fR'' widget +command but haven't been deleted by a ``\fIpathName \f5tag delete\fR'' +widget command, even if no characters are currently marked with +the tag). +The list will be sorted in order from highest priority to lowest +priority. +.TP +\fIpathName \f5tag nextrange \fItagName index1 \fR?\fIindex2\fR? +This command searches the text for a range of characters tagged +with \fItagName\fR where the first character of the range is +no earlier than the character at \fIindex1\fR and no later than +the character just before \fIindex2\fR (a range starting at +\fIindex2\fR will not be considered). +If several matching ranges exist, the first one is chosen. +The command's return value is a list containing +two elements, which are the index of the first character of the +range and the index of the character just after the last one in +the range. +If no matching range is found then the return value is an +empty string. +If \fIindex2\fR is not given then it defaults to the end of the text. +.TP +\fIpathName \f5tag prevrange \fItagName index1 \fR?\fIindex2\fR? +This command searches the text for a range of characters tagged +with \fItagName\fR where the first character of the range is +before the character at \fIindex1\fR and no earlier than +the character at \fIindex2\fR (a range starting at +\fIindex2\fR will be considered). +If several matching ranges exist, the one closest to \fIindex1\fR is chosen. +The command's return value is a list containing +two elements, which are the index of the first character of the +range and the index of the character just after the last one in +the range. +If no matching range is found then the return value is an +empty string. +If \fIindex2\fR is not given then it defaults to the beginning of the text. +.TP +\fIpathName\f5 tag raise \fItagName \fR?\fIaboveThis\fR? +Changes the priority of tag \fItagName\fR so that it is just higher +in priority than the tag whose name is \fIaboveThis\fR. +If \fIaboveThis\fR is omitted, then \fItagName\fR's priority +is changed to make it highest priority of all tags. +.TP +\fIpathName \f5tag ranges \fItagName\fR +Returns a list describing all of the ranges of text that have been +tagged with \fItagName\fR. +The first two elements of the list describe the first tagged range +in the text, the next two elements describe the second range, and +so on. +The first element of each pair contains the index of the first +character of the range, and the second element of the pair contains +the index of the character just after the last one in the +range. +If there are no characters tagged with \fItag\fR then an +empty string is returned. +.TP +\fIpathName \f5tag remove \fItagName index1 \fR?\fIindex2 index1 index2 ...\fR? +Remove the tag \fItagName\fR from all of the characters starting +at \fIindex1\fR and ending just before +\fIindex2\fR (the character at \fIindex2\fR isn't affected). +A single command may contain any number of \fIindex1\fR-\fIindex2\fR +pairs. +If the last \fIindex2\fR is omitted then the single character at +\fIindex1\fR is tagged. +If there are no characters in the specified range (e.g. \fIindex1\fR +is past the end of the file or \fIindex2\fR is less than or equal +to \fIindex1\fR) then the command has no effect. +This command returns an empty string. +.RE +.TP +\fIpathName \f5window \fIoption \fR?\fIarg arg ...\fR? +This command is used to manipulate embedded windows. +The behaviour of the command depends on the \fIoption\fR argument +that follows the \f5window\fR argument. +The following forms of the command are currently supported: +.RS +.TP +\fIpathName \f5window cget\fR \fIindex option\fR +Returns the value of a configuration option for an embedded window. +\fIIndex\fR identifies the embedded window, and \fIoption\fR +specifies a particular configuration option, which must be one of +the ones listed in the section EMBEDDED WINDOWS. +.TP +\fIpathName \f5window configure \fIindex\fR ?\fIoption value ...\fR? +Query or modify the configuration options for an embedded window. +If one or more \fIoption-value\fR pairs are specified, then the command +modifies the given option(s) to have the given value(s). +See EMBEDDED WINDOWS for information on the options that +are supported. +.TP +\fIpathName \f5window create \fIindex\fR ?\fIoption value ...\fR? +This command creates a new window annotation, which will appear +in the text at the position given by \fIindex\fR. +Any number of \fIoption-value\fR pairs may be specified to +configure the annotation. +See EMBEDDED WINDOWS for information on the options that +are supported. +Returns an empty string. +.TP +\fIpathName \f5window names\fR +Returns a list whose elements are the names of all windows currently +embedded in \fIwindow\fR. +.RE +.TP +\fIpathName \f5xview \fIoption args\fR +This command is used to query and change the horizontal position of the +text in the widget's window. It can take any of the following +forms: +.RS +.TP +\fIpathName \f5xview\fR +Returns a list containing two elements. +Each element is a real fraction between 0 and 1; together they describe +the portion of the document's horizontal span that is visible in +the window. +For example, if the first element is .2 and the second element is .6, +20% of the text is off-screen to the left, the middle 40% is visible +in the window, and 40% of the text is off-screen to the right. +The fractions refer only to the lines that are actually visible in the +window: if the lines in the window are all very short, so that they +are entirely visible, the returned fractions will be 0 and 1, +even if there are other lines in the text that are +much wider than the window. +These are the same values passed to scrollbars via the \f5-xscrollcommand\fR +option. +.TP +\fIpathName \f5xview moveto\fI fraction\fR +Adjusts the view in the window so that \fIfraction\fR of the horizontal +span of the text is off-screen to the left. +\fIFraction\fR is a fraction between 0 and 1. +.TP +\fIpathName \f5xview scroll \fInumber what\fR +This command shifts the view in the window left or right according to +\fInumber\fR and \fIwhat\fR. +\fINumber\fR must be an integer. +\fIWhat\fR must be either \f5units\fR or \f5pages\fR. +If \fIwhat\fR is \f5units\fR, the view adjusts left or right by +\fInumber\fR average-width characters on the display; if it is +\f5pages\fR then the view adjusts by \fInumber\fR screenfuls. +If \fInumber\fR is negative then characters farther to the left +become visible; if it is positive then characters farther to the right +become visible. +.RE +.TP +\fIpathName \f5yview \fI?args\fR? +This command is used to query and change the vertical position of the +text in the widget's window. +It can take any of the following forms: +.RS +.TP +\fIpathName \f5yview\fR +Returns a list containing two elements, both of which are real fractions +between 0 and 1. +The first element gives the position of the first character in the +top line in the window, relative to the text as a whole (0.5 means +it is halfway through the text, for example). +The second element gives the position of the character just after +the last one in the bottom line of the window, +relative to the text as a whole. +These are the same values passed to scrollbars via the \f5-yscrollcommand\fR +option. +.TP +\fIpathName \f5yview moveto\fI fraction\fR +Adjusts the view in the window so that the character given by \fIfraction\fR +appears on the top line of the window. +\fIFraction\fR is a fraction between 0 and 1; 0 indicates the first +character in the text, 0.33 indicates the character one-third the +way through the text, and so on. +.TP +\fIpathName \f5yview scroll \fInumber what\fR +This command adjust the view in the window up or down according to +\fInumber\fR and \fIwhat\fR. +\fINumber\fR must be an integer. +\fIWhat\fR must be either \f5units\fR or \f5pages\fR. +If \fIwhat\fR is \f5units\fR, the view adjusts up or down by +\fInumber\fR lines on the display; if it is \f5pages\fR then +the view adjusts by \fInumber\fR screenfuls. +If \fInumber\fR is negative then earlier positions in the text +become visible; if it is positive then later positions in the text +become visible. +.TP +\fIpathName \f5yview \fR?\f5-pickplace\fR? \fIindex\fR +Changes the view in the widget's window to make \fIindex\fR visible. +If the \f5-pickplace\fR option isn't specified then \fIindex\fR will +appear at the top of the window. +If \f5-pickplace\fR is specified then the widget chooses where +\fIindex\fR appears in the window: +.RS +.IP [1] +If \fIindex\fR is already visible somewhere in the window then the +command does nothing. +.IP [2] +If \fIindex\fR is only a few lines off-screen above the window then +it will be positioned at the top of the window. +.IP [3] +If \fIindex\fR is only a few lines off-screen below the window then +it will be positioned at the bottom of the window. +.IP [4] +Otherwise, \fIindex\fR will be centered in the window. +.LP +The \f5-pickplace\fR option has been made obsolete by the \f5see\fR widget +command (\f5see\fR handles both x- and y-motion to make a location +visible, whereas \f5-pickplace\fR only handles motion in y). +.RE +.RE + +.SH BINDINGS +Tk automatically creates bindings for texts that give them +the following default behaviour. +In the descriptions below, ``word'' refers to a contiguous group +of letters, digits, or ``_'' characters, or any single character +other than these. +.IP [1] +Clicking mouse button 1 positions the insertion cursor +just before the character underneath the mouse cursor, sets the +input focus to this widget, and clears any selection in the widget. +Dragging with mouse button 1 strokes out a selection between +the insertion cursor and the character under the mouse. +.IP [2] +Double-clicking with mouse button 1 selects the word under the mouse +and positions the insertion cursor at the beginning of the word. +Dragging after a double click is ignored. +.IP [3] +If any normal printing characters are typed, they are +inserted at the point of the insertion cursor, replacing the +current selection. +.IP [4] +If the mouse is dragged out of the widget +while button 1 is pressed, the entry will automatically scroll to +make more text visible (if there is more text off-screen on the side +where the mouse left the window). +.IP [5] +The Left and Right keys move the insertion cursor one character to the +left or right; they also clear any selection in the text. +Control-b and Control-f behave the same as Left and Right, respectively. +.IP [6] +The Up and Down keys move the insertion cursor one line up or +down and clear any selection in the text. +Control-p and Control-n behave the same as Up and Down, respectively. +.IP [7] +The Page-up and Page-down keys move the view up or down +one screenful without moving the insertion cursor or adjusting the selection. +IControl-v behaves the same as Page-down. +.IP [8] +Home, Control-a and Control-< move the insertion cursor to the +beginning of its line and clear any selection in the widget. +.IP [9] +End, Control-e and Control-> move the insertion cursor to the +end of the line and clear any selection in the widget. +.IP [10] +The Delete key deletes the selection, if there is one in the widget. +If there is no selection, it deletes the character to the right of +the insertion cursor. +.IP [11] +Backspace and Control-h delete the selection, if there is one +in the widget. +If there is no selection, they delete the character to the left of +the insertion cursor. +.IP [12] +Control-d deletes the character to the right of the insertion cursor. +.IP [13] +Control-k deletes from the insertion cursor to the end of its line; +if the insertion cursor is already at the end of a line, then +Control-k deletes all of the next line. +.IP [14] +Control-o opens a new line by inserting a newline character in +front of the insertion cursor without moving the insertion cursor. +.IP [15] +Control-u deletes from the insertion cursor to the start of its line; +if the insertion cursor is already at the start of the line, then +the current line is joined with the previous one. +.IP [16] +Control-w deletes from the insertion cursor to the start of the word +that contains it; +if the insertion cursor is at the start of the line, then +the current line is joined with the previous one. +.PP +If the widget is disabled using the \f5-state\fR option, then its +view can still be adjusted and text can still be selected, +but no insertion cursor will be displayed and no text modifications will +take place. +.PP +The behaviour of texts can be changed by defining new bindings for +individual widgets. +.SH BUGS +Tab alignment doesn't work correctly. +.PP +The \f5-stretch\fR option on embedded windows is not implemented. +.SH SEE ALSO +.IR entry (9), +.IR options (9), +.IR types (9) diff --git a/man/9/types b/man/9/types new file mode 100644 index 00000000..33346c15 --- /dev/null +++ b/man/9/types @@ -0,0 +1,147 @@ +.TH TYPES 9 +.SH NAME +types \- Standard types required by widget options. +.SH DESCRIPTION +This manual entry describes the the standard types +that can be given as arguments to Inferno Tk widget +options. When an option is documented, the type +of argument that it accepts is either documented +there, or the name of the argument refers to one of the +names documented below. +.TP +.I anchorPos +One of the values \f5n\fR, \f5ne\fR, \f5e\fR, \f5se\fR, +\f5s\fR, \f5sw\fR, \f5w\fR, \f5nw\fR, or \f5center\fR. +See +.B -anchor +in +.IR options (9). +.TP +.I boolean +A true or false value, one of the following: +\f50\fP, \f5no\fP, \f5off\fP, +\f5false\fP (false), +\f51\fP, \f5yes\fP, \f5on\fP, +\f5true\fP (true). +.TP +.I bitmap +Identifies an image which can be drawn, or used as a mask +through which something else is drawn. If +.I bitmap +begins with a +.RB ` @ ', +the remaining characters must be the path name of +an Inferno image file. If +.I bitmap +begins with the character +.RB ` < ', +the remaining characters must be a decimal integer +giving the file descriptor number of an open file (see +.IR sys-open (2)) +from which the bitmap can be loaded. Otherwise, +.I bitmap +should be the name of a bitmap file in the directory +.BR /icons/tk . +.TP +.I color +A +.I color +parameter can be a colour name or an RGB (red, green and blue +luminance) value. The colour names recognized are: +.EX + aqua yellow red teal white + fuchsia black blue darkblue transparent + maroon gray green lime + purple navy olive orange +.EE +For RGB values, either +.BI # rgb +or +.BI # rrggbb +can be used, where +.IR r , +.IR rr , +etc. are hexadecimal values for the corresponding colour +components. +The notation +.BI #rrggbbaa +can be used to describe a colour with alpha (transparency) component +.IR aa ; +the +.IR rr , +.IR gg , +and +.IR bb +values should be pre-multiplied appropriately. This is the +canonical form for colour values. Alternatively, transparency +can be applied to any other colour using a suffix +.BI * alpha +where +.I alpha +is either +.BI #aa +(two hex digits representing an alpha value between 0 and 255) +or +.I f +(a decimal fixed point number between 0 and 1). +For example, +.B red*0.5 +gives half transparent red; +.B #007f007f*#7f +gives 0.75 transparent green (canonically +.B #003f003f). +.TP +.I dist +.I Dist +specifies a distance on the screen, in the following form: +an optional minus sign +.RB ( - ), +then one or more decimal digits (with possible +embedded decimal point), then an optional units +specifier. The unit specifiers are the following: +.RS +.TP +.B c +centimetres +.TP +.B m +millimetres +.TP +.B i +inches +.TP +.B p +points (1/72th inch) +.TP +.B h +height of widget's font (only applicable if the widget +has an associated font, and if the font has previously been set). +.TP +.B w +width of the zero +.RB ( 0 ) +character in widget's font. (see above). +.TP +Measurements are converted into pixels assuming 100 dots +per inch on an average CRT display. +.RE +.TP +.I font +A +.I font +parameter gives the full path name of an Inferno font file; +for example, +.BR /fonts/pelm/unicode.9.font . +.TP +.I frac +A numeric, possibly fractional, value. +.TP +.I relief +One of \f5raised\fR, \f5sunken\fR, \f5flat\fR, \f5ridge\fR, +or \f5groove\fR. See +.B -relief +in +.IR options (9). +.SH SEE ALSO +.IR intro (9), +.IR options (9) diff --git a/man/9/update b/man/9/update new file mode 100644 index 00000000..7428e60c --- /dev/null +++ b/man/9/update @@ -0,0 +1,24 @@ +.TH UPDATE 9 +.SH NAME +update \- flush graphics +.SH SYNOPSIS +\f5update\fP ?\fIoptions\fP? +.SH DESCRIPTION +Changes made via Tk commands do not become +visible until a call to +.BR update . +.B Update +flushes any pending changes to the screen. +The following options are supported: +.TP +\f5-disable\fP +If this option is given, all updates are disabled. +This is useful to enable a program to +stop mouse movement causing +automatic updates while it is making changes to the window. +.TP +\f5-enable\fP +This reverses a previous \f5update -enable\fP invocation. +.PP +.SH BUGS +Changes that affect window sizes are visible immediately. diff --git a/man/9/variable b/man/9/variable new file mode 100644 index 00000000..b1bcc141 --- /dev/null +++ b/man/9/variable @@ -0,0 +1,25 @@ +.TH VARIABLE 9 +.SH NAME +variable \- interrogate a button variable +.SH SYNOPSIS +\f5variable \fIvar\fR ?\fIvalue\fR? +.SH DESCRIPTION +.B Variable +queries or sets the value of a Tk radiobutton, checkbutton or choicebutton variable. +An error diagnostic will be returned if +the variable is of the wrong type (if for instance +it is the name of a named channel). +.PP +If \fIvalue\fR is given, the value of the variable is set +to that value, and any associated buttons +will subsequently reflect this in their appearance. +Omitting the \fIvalue\fR argument returns the current value of the variable. +.PP +The special variable +.B lasterror +holds the text of the last Tk error encountered. +It resets when queried. +.SH SEE ALSO +.IR checkbutton (9) +.IR choicebutton (9) +.IR radiobutton (9), diff --git a/man/index b/man/index new file mode 100644 index 00000000..f4141471 --- /dev/null +++ b/man/index @@ -0,0 +1,62662 @@ +0,0,qtdir /man/10/devattach +0,nil /man/2/sys-dirread +00.txt /man/2/sexprs +00.txt /man/6/sexprs +00000000.0bbbbbbb /man/6/utf +00000bbb.bbbbbbbb /man/6/utf +003f003f /man/9/types +007f007f /man/9/types +0:0:0:0:0:ffff /man/2/ip +0:0:0:0:0:ffff:127.0.0.1 /man/2/ip +0:none:adm /man/4/kfs +0bbbbbbb /man/6/utf +0ctl /man/3/dup +0th /man/3/prog +0x0a /man/6/keyboard +0x0d /man/6/keyboard +0x14,r29 /man/10/acid +0x16c8,r29 /man/10/acid +0x1e0 /man/3/mpeg +0x2f8 /man/10/plan9.ini +0x337,0x430 /man/10/plan9.ini +0x3bc /man/3/lpt +0x3e8 /man/10/plan9.ini +0x3f8 /man/10/plan9.ini +0x3ff /man/3/pnp +0x43f /man/10/plan9.ini +0x7c00 /man/10/9load +0x7c00 /man/8/prep +0x7e00 /man/8/prep +0x7f /man/6/keyboard +0xa00 /man/1/fc +0xd0000 /man/10/plan9.ini +0xffffffff /man/3/ftl +1,yy /man/2/draw-example +1.dis /man/1/mash-make +10000:sys /man/4/kfs +10001:upas:upas /man/4/kfs +10002:bootes:bootes /man/4/kfs +10006:inferno /man/4/kfs +100base /man/10/plan9.ini +100basefx /man/10/plan9.ini +100basetx /man/10/plan9.ini +100mbit /man/10/plan9.ini +100ms /man/2/prof +1024x768x8 /man/10/plan9.ini +10base /man/10/plan9.ini +10base2 /man/10/plan9.ini +10baset /man/10/plan9.ini +10bbbbbb /man/6/utf +110bbbbb /man/6/utf +1110bbbb /man/6/utf +11:certificate /man/2/sexprs +12:hello /man/6/sexprs +1600x1200x8 /man/10/plan9.ini +16kbyte /man/8/ftl +16mb /man/10/9load +16mb /man/10/plan9.ini +16r000000ff /man/2/draw-display +16r000055ff /man/2/draw-display +16r000099ff /man/2/draw-display +16r0000bbff /man/2/draw-display +16r0000ffff /man/2/draw-display +16r005dbbff /man/2/draw-display +16r008888ff /man/2/draw-display +16r00ff00ff /man/2/draw-display +16r00ffffff /man/2/draw-display +16r3fff /man/1/fc +16r448844ff /man/2/draw-display +16r4993ddff /man/2/draw-display +16r55aaaaff /man/2/draw-display +16r7f /man/2/draw-0intro +16r7f00007f /man/2/draw-0intro +16r8888ccff /man/2/draw-display +16r88cc88ff /man/2/draw-display +16r99994cff /man/2/draw-display +16r9eeeeeff /man/2/draw-display +16raaffaaff /man/2/draw-display +16raaffffff /man/2/draw-display +16redb88320 /man/2/crc +16reeee9eff /man/2/draw-display +16reeeeeeff /man/2/draw-display +16rff /man/3/flash +16rff /man/3/usb +16rff00007f /man/2/draw-0intro +16rff0000ff /man/2/draw-display +16rff00ffff /man/2/draw-display +16rfffd /man/2/convcs +16rffff /man/2/dis +16rffff /man/2/string +16rffff /man/2/styx +16rffff /man/5/0intro +16rffff /man/8/styxchat +16rffff00ff /man/2/draw-display +16rffffaaff /man/2/draw-display +16rffffff00 /man/2/draw-display +16rffffffff /man/2/crc +16rffffffff /man/2/draw-display +1::2::5::nil /man/2/sets +1:adm:adm /man/4/kfs +1ctl /man/3/dup +1immediately /man/10/qio +1pp /man/1/alphabet-fs +1pp /man/1/fs +2000ad /man/2/daytime +20th /man/1/cal +2fd /man/1/alphabet-main +2gb /man/10/9load +2nd /man/1/charon +3com /man/10/plan9.ini +3com /man/3/ether +3com /man/3/pbus +3com /man/3/plap +3des /man/3/tls +3½dd /man/3/floppy +3½dd /man/8/prep +3½hd /man/3/floppy +3½hd /man/8/prep +48dr /man/8/mangaload +53c8xx /man/10/plan9.ini +5:inner0 /man/6/sexprs +5coff /man/10/5coff +5cv /man/10/5coff +5cv /man/10/5cv +5cv /man/10/ms2 +5cv /man/10ti925/epocimg +5cv /man/10ti925/tihost +5¼dd /man/3/floppy +5¼dd /man/8/prep +5¼hd /man/3/floppy +5¼hd /man/8/prep +64kbyte /man/3/ip +64kbytes /man/8/ftl +6:issuer3:bob /man/2/sexprs +72th /man/9/types +7:subject7:alice /man/2/sexprs +8.5gb /man/10/9load +8.5gb /man/8/prep +8.out /man/10/ksize +823fads /man/3/vid +82543gc /man/10/plan9.ini +91cxx /man/10/plan9.ini +9660srv /man/4/dossrv +9660srv /man/8/init +9660srv.b /man/4/dossrv +9999:noworld /man/4/kfs +9cpu /man/1/9win +9export /man/4/import +9export.b /man/4/import +9fat /man/10/9load +9fat /man/8/prep +9fs.org /man/10ti925/tihost +9load /man/10/9load +9load /man/10/plan9.ini +9load /man/8/prep +9pcdisk /man/8/prep +9pxeload /man/10/9load +9srvfs /man/3/srv9 +9srvfs /man/4/9srvfs +9srvfs.b /man/4/9srvfs +9win /man/1/9win +9win.b /man/1/9win +a&b /man/2/sets +a'b /man/1/tiny +a,b,c /man/2/draw-image +a,b,c,d /man/2/draw-image +a.b /man/1/mk +a.b.c /man/9/options +a.b.c.d /man/10/plan9.ini +a.c /man/10/mk +a.out /man/10/5coff +a.out /man/10/5cv +a.out /man/10/a.out +a.out /man/10/dynld +a.out /man/10/inm +a.out /man/10/ksize +a.out /man/10/kstrip +a.out /man/10/srclist +a.out /man/3/dynld +a.out.h /man/10/a.out +a.out.h /man/10/dynld +a.root /man/6/ndb +a10076795.gz /man/1/idea +a10076795.gz.id /man/1/idea +aa /man/10/2c +aa /man/3/srv9 +aa /man/9/types +aabbccdd /man/2/regex +aaccess /man/10/newchan +aancestor /man/2/w3c-xpointers +aatopb /man/1/alphabet-fs +aatopb /man/1/fs +aattribute /man/2/w3c-xpointers +ab /man/1/tiny +ab /man/4/archfs +ab /man/4/import +ab /man/4/tarfs +abandon /man/10/panic +abbccd /man/2/regex +abbreviated /man/1/diff +abbreviated /man/2/w3c-xpointers +abbreviated /man/6/attrdb +abbreviated /man/9/menu +abbreviations /man/1/miniterm +abbreviations /man/1/units +abbreviations /man/2/w3c-xpointers +abbreviations /man/6/keyboard +abc /man/1/alphabet-abc +abc /man/1/alphabet-main +abc /man/1/asm +abc /man/10/5coff +abc /man/2/alphabet-intro +abc /man/2/sexprs +abc /man/6/translate +abc.coff /man/10/5coff +abc.dis /man/1/asm +abc9i /man/6/namespace +abcb /man/2/regex +abcd2345 /man/1/idea +abcdefghijklmn /man/10/styxserver +abcdeghijklmn /man/10/styxserver +abcelrx /man/4/dbfs +abcer /man/4/dbfs +abci /man/6/namespace +abfprw /man/8/prep +ability /man/1/sh +ability /man/10/plan9.ini +ability /man/3/pnp +ability /man/5/open +able /man/1/blur +able /man/1/mash-make +able /man/1/wm +able /man/10/plan9.ini +able /man/2/asn1 +able /man/2/format +able /man/2/ida +able /man/2/security-0intro +able /man/2/spree-objstore +able /man/3/ds +abort /man/10/memory +abort /man/5/flush +aborted /man/2/spree +aborted /man/3/ds +aborted /man/5/0intro +aborted /man/5/version +aborts /man/5/0intro +aborts /man/9/destroy +about.b /man/1/wm-misc +abovethis /man/9/canvas +abovethis /man/9/text +abreviation /man/1/tktester +abs /man/1/mathcalc +abs /man/1/mc +abs /man/10/mk +abs /man/2/w3c-xpointers +absence /man/10/strcat +absence /man/2/ir +absence /man/2/prof +absence /man/3/ip +absence /man/8/dns +absence /man/8/prep +absent /man/1/acme +absent /man/1/alphabet-fs +absent /man/1/fs +absent /man/2/sets +absolute /man/1/acme +absolute /man/1/gettar +absolute /man/1/mc +absolute /man/1/passwd +absolute /man/1/tiny +absolute /man/10/a.out +absolute /man/10/conf +absolute /man/2/math-fp +absolute /man/2/sys-millisec +absolute /man/2/w3c-xpointers +absolute /man/8/bootpd +absolutely /man/1/chmod +absolutely /man/2/tkclient +absolutely /man/2/wmclient +abstract /man/2/0intro +abstract /man/2/asn1 +abstract /man/2/draw-0intro +abstract /man/2/sys-dup +abstract /man/2/w3c-css +abstract /man/2/w3c-xpointers +abstraction /man/1/emu +abstracts /man/2/w3c-css +abut /man/2/prefab-element +abv /man/1/tktester +ac /man/3/logfs +acceleration /man/1/units +acceleration /man/3/vga +accelerator /man/9/menu +accelerators /man/9/menu +accent /man/6/keyboard +accept /man/1/dmview +accept /man/1/sh-file2chan +accept /man/1/tiny +accept /man/10/2c +accept /man/10/allocb +accept /man/10ti925/epocimg +accept /man/2/arg +accept /man/2/dhcpclient +accept /man/2/ip +accept /man/2/sexprs +accept /man/2/spree-gather +accept /man/3/cmd +accept /man/3/ftl +accept /man/3/ip +accept /man/3/plap +accept /man/4/factotum +accept /man/4/ftpfs +accept /man/4/keysrv +accept /man/4/spree +accept /man/8/register +accept /man/8/signer +accept /man/9/0intro +acceptable /man/1/alphabet-main +acceptable /man/1/miniterm +acceptable /man/1/sh-arg +acceptable /man/1/sh-expr +acceptable /man/1/telnet +acceptable /man/2/secstore +acceptable /man/2/security-auth +acceptable /man/2/spki-verifier +acceptable /man/2/styx +acceptable /man/2/sys-fversion +acceptable /man/2/wmclient +acceptable /man/3/sign +acceptable /man/4/ftpfs +acceptable /man/4/lockfs +acceptable /man/8/dhcp +acceptable /man/9/options +acceptance /man/8/signer +accepted /man/1/charon +accepted /man/1/collab-clients +accepted /man/1/listen +accepted /man/1/sh-std +accepted /man/10/2c +accepted /man/2/ip +accepted /man/2/security-login +accepted /man/2/spree-gather +accepted /man/3/draw +accepted /man/3/ether +accepted /man/3/floppy +accepted /man/3/ip +accepted /man/3/pbus +accepted /man/3/plap +accepted /man/3/tls +accepted /man/4/dbfs +accepted /man/4/import +accepted /man/6/audio +accepted /man/6/ndb +accepted /man/7/dbsrv +accepted /man/8/ping +accepted /man/8/prep +accepted /man/8/rstyxd +accepted /man/8/styxchat +accepted /man/9/bind +accepted /man/9/button +accepted /man/9/canvas +accepted /man/9/checkbutton +accepted /man/9/choicebutton +accepted /man/9/entry +accepted /man/9/frame +accepted /man/9/label +accepted /man/9/listbox +accepted /man/9/menu +accepted /man/9/menubutton +accepted /man/9/panel +accepted /man/9/radiobutton +accepted /man/9/scale +accepted /man/9/scrollbar +accepted /man/9/text +accepting /man/3/ip +accepts /man/1/acme +accepts /man/1/collab +accepts /man/1/crypt +accepts /man/1/dmview +accepts /man/1/du +accepts /man/1/grid-monitor +accepts /man/1/mash +accepts /man/1/mdb +accepts /man/1/sh +accepts /man/1/sh-alphabet +accepts /man/1/sh-arg +accepts /man/1/tkcmd +accepts /man/1/wm +accepts /man/1/wm-sh +accepts /man/2/dbm +accepts /man/2/spki +accepts /man/2/virgil +accepts /man/3/boot +accepts /man/3/cmd +accepts /man/3/dbg +accepts /man/3/dynld +accepts /man/3/eia +accepts /man/3/fpga +accepts /man/3/gpio +accepts /man/3/i2c +accepts /man/3/ip +accepts /man/3/mpeg +accepts /man/3/touch +accepts /man/3/tv +accepts /man/3/vid +accepts /man/4/acme +accepts /man/4/cpu +accepts /man/4/kfs +accepts /man/8/applylog +accepts /man/8/rdbgsrv +accepts /man/8/signer +accepts /man/9/types +access /man/1/0intro +access /man/1/alphabet-abc +access /man/1/alphabet-fs +access /man/1/alphabet-grid +access /man/1/chmod +access /man/1/collab +access /man/1/ebook +access /man/1/fs +access /man/1/listen +access /man/1/ls +access /man/1/sh +access /man/1/sh-regex +access /man/1/sh-std +access /man/1/sh-tk +access /man/1/tktester +access /man/1/yacc +access /man/10/devattach +access /man/10/dmainit +access /man/10/dynld +access /man/10/iar +access /man/10/inb +access /man/10/lock +access /man/10/mk +access /man/10/newchan +access /man/10/plan9.ini +access /man/10/qio +access /man/10/qlock +access /man/10/sleep +access /man/10/styxserver +access /man/2/alphabet-intro +access /man/2/bufio +access /man/2/daytime +access /man/2/dbm +access /man/2/dhcpclient +access /man/2/diskblocks +access /man/2/draw-image +access /man/2/draw-screen +access /man/2/hash +access /man/2/lock +access /man/2/math-linalg +access /man/2/palmfile +access /man/2/readdir +access /man/2/registries +access /man/2/security-0intro +access /man/2/sh +access /man/2/spree +access /man/2/srv +access /man/2/styxpersist +access /man/2/styxservers +access /man/2/styxservers-nametree +access /man/2/sys-0intro +access /man/2/sys-dup +access /man/2/sys-fauth +access /man/2/sys-fd2path +access /man/2/sys-open +access /man/2/sys-pctl +access /man/2/sys-read +access /man/2/sys-stat +access /man/2/translate +access /man/2/venti +access /man/2/volume +access /man/2/wmlib +access /man/3/audio +access /man/3/cons +access /man/3/draw +access /man/3/eia +access /man/3/env +access /man/3/flash +access /man/3/floppy +access /man/3/fpga +access /man/3/fs +access /man/3/ftl +access /man/3/gpio +access /man/3/i2c +access /man/3/indir +access /man/3/logfs +access /man/3/mnt +access /man/3/mpeg +access /man/3/pbus +access /man/3/plap +access /man/3/pnp +access /man/3/rtc +access /man/3/sd +access /man/3/srv +access /man/3/srv9 +access /man/3/ssl +access /man/3/switch +access /man/3/tinyfs +access /man/3/touch +access /man/3/tv +access /man/3/usb +access /man/3/vid +access /man/4/acme +access /man/4/ftpfs +access /man/4/kfs +access /man/4/lockfs +access /man/4/tarfs +access /man/5/0intro +access /man/5/attach +access /man/5/open +access /man/5/stat +access /man/6/scancode +access /man/6/translate +access /man/7/0intro +access /man/7/dbsrv +access /man/8/collabsrv +access /man/8/dhcp +access /man/8/logind +access /man/8/ping +access /man/8/prep +access /man/8/styxmon +access /man/8/svc +accessed /man/1/0intro +accessed /man/1/du +accessed /man/10/acid +accessed /man/10/allocb +accessed /man/10/newchan +accessed /man/10/qlock +accessed /man/10/styxserver +accessed /man/2/0intro +accessed /man/2/bufio +accessed /man/2/command +accessed /man/2/crc +accessed /man/2/readdir +accessed /man/2/security-auth +accessed /man/2/srv +accessed /man/2/styxservers +accessed /man/2/sys-stat +accessed /man/2/ubfa +accessed /man/2/wmsrv +accessed /man/3/arch +accessed /man/3/cmd +accessed /man/3/draw +accessed /man/3/fpga +accessed /man/3/ftl +accessed /man/3/logfs +accessed /man/3/mnt +accessed /man/3/sd +accessed /man/3/touch +accessed /man/4/acme +accessed /man/4/import +accessed /man/4/keysrv +accessed /man/4/tarfs +accessed /man/5/0intro +accessed /man/6/keys +accessed /man/8/cs +accessed /man/9/0intro +accesses /man/10/dev +accesses /man/2/dbm +accesses /man/2/sys-dial +accesses /man/4/keysrv +accessible /man/1/alphabet-main +accessible /man/1/grid-ns +accessible /man/2/0intro +accessible /man/2/draw-screen +accessible /man/2/pop3 +accessible /man/3/logfs +accessible /man/3/srv9 +accessible /man/4/cpu +accessible /man/4/import +accessible /man/6/font +accessible /man/9/options +accessing /man/2/sh +accessing /man/2/sys-dial +accessing /man/2/sys-stat +accessing /man/4/acme +accessing /man/4/ftpfs +accident /man/6/colour +accidents /man/2/disks +accommodate /man/2/prefab-element +accommodate /man/3/vga +accommodate /man/9/grid +accomodate /man/10/ms2 +accompany /man/5/error +accompanying /man/2/filter-deflate +accomplished /man/2/security-0intro +accomplished /man/4/factotum +accordance /man/9/1copyright +accordingly /man/3/mpeg +accordingly /man/3/usb +accordingly /man/4/keyfs +accordingly /man/4/spree +accordingly /man/8/sntp +account /man/10/memory +account /man/10/qio +account /man/2/bufio +account /man/2/keyring-rc4 +account /man/2/palmfile +account /man/2/secstore +account /man/2/styxservers +account /man/2/wmclient +account /man/3/sd +account /man/3/touch +account /man/4/keyfs +accounted /man/3/logfs +accounts /man/2/scsiio +accton /man/10/plan9.ini +accumulate /man/1/cprof +accumulate /man/1/tail +accumulated /man/10/kprof +accumulated /man/2/math-fp +accumulated /man/3/kprof +accumulates /man/3/kprof +accumulation /man/1/mprof +accurate /man/1/alphabet-fs +accurate /man/1/fs +accurate /man/1/timestamp +accurate /man/1/units +accurate /man/1/wm-misc +accurate /man/2/srv +accurate /man/4/iostats +accurately /man/1/deb +accurately /man/1/ps +ace /man/2/spree-cardlib +acentre /man/2/spree-cardlib +acentreleft /man/2/spree-cardlib +acentreright /man/2/spree-cardlib +acg /man/2/string +achieved /man/1/charon +achieved /man/9/image +achieves /man/10/5cv +achild /man/2/w3c-xpointers +acid /man/10/2c +acid /man/10/a.out +acid /man/10/acid +acid /man/10/inm +acid /man/3/dbg +acidinit /man/10/acid +ack /man/1/math-misc +ack /man/1/mc +ack /man/6/login +ack'd /man/10/allocb +ack.b /man/1/math-misc +ackermann's /man/1/math-misc +acknowledge /man/10/intrenable +acknowledge /man/2/dialog +acknowledged /man/1/sh-file2chan +acknowledged /man/10/qio +acknowledged /man/2/filter +acknowledged /man/3/ip +acknowledgement /man/10/intrenable +acknowledgement /man/2/draw-context +acknowledging /man/2/wmsrv +acl /man/3/fs +acm /man/2/ubfa +acm /man/6/ubfa +acme /man/1/0intro +acme /man/1/acme +acme /man/1/brutus +acme /man/1/env +acme /man/1/wm-misc +acme /man/1/wm-sh +acme /man/2/pop3 +acme /man/2/prof +acme /man/2/smtp +acme /man/3/touch +acme /man/4/0intro +acme /man/4/acme +acme /man/4/namespace +acme /man/6/keyboard +acme /man/6/regexp +acme's /man/1/acme +acme.dump /man/1/acme +acmeaddr /man/1/acme +acos /man/1/mathcalc +acos /man/1/mc +acos /man/2/math-elem +acosh /man/1/mc +acosh /man/2/math-elem +acquire /man/1/acme +acquire /man/10/lock +acquire /man/2/draw-screen +acquire /man/2/hash +acquire /man/2/sys-0intro +acquire /man/2/sys-self +acquire /man/5/attach +acquired /man/10/lock +acquired /man/10/malloc +acquired /man/10/qlock +acquired /man/2/prefab-compound +acquires /man/10/kproc +acquires /man/10/qlock +acquiring /man/10/lock +acquiring /man/9/1copyright +acquisition /man/10/error +acquisition /man/9/1copyright +acreate /man/10/newchan +acronym /man/10/c2l +acted /man/4/spree +actheight /man/9/options +acting /man/1/bind +acting /man/10/dev +acting /man/2/security-0intro +acting /man/3/ip +acting /man/4/keyfs +acting /man/6/keys +acting /man/8/createsignerkey +acting /man/8/register +acting /man/8/signer +acting /man/9/1copyright +actions /man/1/acme +actions /man/1/collab +actions /man/1/ebook +actions /man/1/mash-tk +actions /man/1/mk +actions /man/1/sh-tk +actions /man/10/devattach +actions /man/10/error +actions /man/10/eve +actions /man/10/mk +actions /man/10/plan9.ini +actions /man/10/styxserver +actions /man/2/ir +actions /man/2/secstore +actions /man/2/spree-allow +actions /man/2/styxservers +actions /man/2/sys-0intro +actions /man/3/ftl +actions /man/3/pointer +actions /man/4/acme +actions /man/4/factotum +actions /man/4/spree +actions /man/5/clunk +actions /man/5/stat +actions /man/6/plumbing +actions /man/7/db +actions /man/9/button +actions /man/9/checkbutton +actions /man/9/entry +actions /man/9/menubutton +actions /man/9/radiobutton +actions /man/9/text +activate /man/2/prefab-0intro +activate /man/8/collabsrv +activate /man/9/button +activate /man/9/checkbutton +activate /man/9/listbox +activate /man/9/menu +activate /man/9/menubutton +activate /man/9/radiobutton +activate /man/9/scale +activate /man/9/scrollbar +activated /man/1/miniterm +activated /man/1/wm-sh +activated /man/2/spree-cardlib +activated /man/9/menu +activates /man/1/collab-clients +activates /man/9/button +activates /man/9/checkbutton +activates /man/9/menu +activates /man/9/menubutton +activates /man/9/radiobutton +activation /man/1/wm-sh +activation /man/10/error +activation /man/3/prog +activation /man/6/sbl +active /man/10/9load +active /man/10/acid +active /man/10/dev +active /man/10/intrenable +active /man/10/odbc +active /man/10/xalloc +active /man/2/disks +active /man/2/math-linalg +active /man/2/plumbmsg +active /man/2/popup +active /man/2/registries +active /man/2/styxservers +active /man/2/sys-file2chan +active /man/2/tftp +active /man/2/translate +active /man/2/venti +active /man/3/ftl +active /man/3/ip +active /man/3/plap +active /man/3/tls +active /man/4/ftpfs +active /man/4/registry +active /man/4/spree +active /man/5/version +active /man/8/collabsrv +active /man/8/prep +active /man/9/button +active /man/9/checkbutton +active /man/9/listbox +active /man/9/menu +active /man/9/menubutton +active /man/9/options +active /man/9/radiobutton +active /man/9/scale +active /man/9/scrollbar +active /man/9/text +activebackground /man/9/button +activebackground /man/9/checkbutton +activebackground /man/9/choicebutton +activebackground /man/9/menu +activebackground /man/9/menubutton +activebackground /man/9/options +activebackground /man/9/radiobutton +activebackground /man/9/scale +activebackground /man/9/scrollbar +activeforeground /man/9/button +activeforeground /man/9/checkbutton +activeforeground /man/9/choicebutton +activeforeground /man/9/menu +activeforeground /man/9/menubutton +activeforeground /man/9/options +activeforeground /man/9/radiobutton +activerelief /man/9/scrollbar +activities /man/1/collab +activities /man/1/collab-clients +activities /man/10/2l +activity /man/1/collab-clients +activity /man/2/sys-read +activity /man/4/dossrv +activity /man/8/collabsrv +activity /man/8/cs +acts /man/1/miniterm +acts /man/1/mk +acts /man/10/9load +acts /man/10/mk +acts /man/2/spree +acts /man/2/spree-gather +acts /man/2/styx +acts /man/2/sys-dial +acts /man/2/wmsrv +acts /man/3/srv9 +acts /man/4/factotum +acts /man/4/lockfs +acts /man/4/registry +acts /man/5/0intro +acts /man/6/keyboard +acts /man/7/dbsrv +actual /man/1/cprof +actual /man/1/listen +actual /man/1/math-misc +actual /man/1/mprof +actual /man/1/prof +actual /man/1/sh-tk +actual /man/10/allocb +actual /man/10/ar +actual /man/10/print +actual /man/10/styxserver +actual /man/2/alphabet-intro +actual /man/2/asn1 +actual /man/2/convcs +actual /man/2/dbm +actual /man/2/exception +actual /man/2/format +actual /man/2/palmfile +actual /man/2/spki-verifier +actual /man/2/spree-cardlib +actual /man/2/spree-gather +actual /man/2/sys-dial +actual /man/2/sys-millisec +actual /man/2/sys-print +actual /man/2/sys-sleep +actual /man/2/tk +actual /man/2/w3c-xpointers +actual /man/2/wmsrv +actual /man/3/draw +actual /man/3/pbus +actual /man/3/sign +actual /man/4/factotum +actual /man/4/memfs +actual /man/4/spree +actual /man/5/clunk +actual /man/5/stat +actual /man/6/keys +actual /man/6/plumbing +actual /man/8/rdbgsrv +actual /man/9/canvas +actual /man/9/cursor +actual /man/9/grid +actual /man/9/scale +actual /man/9/scrollbar +actually /man/1/deb +actually /man/1/filename +actually /man/1/sh-alphabet +actually /man/1/sum +actually /man/10/dev +actually /man/10/devattach +actually /man/10/dynld +actually /man/10/qio +actually /man/2/alphabet-intro +actually /man/2/command +actually /man/2/convcs +actually /man/2/filter +actually /man/2/prefab-compound +actually /man/2/secstore +actually /man/2/spree-gather +actually /man/2/sys-dirread +actually /man/2/sys-read +actually /man/2/tk +actually /man/4/acme +actually /man/4/namespace +actually /man/5/read +actually /man/6/man +actually /man/8/create +actually /man/8/sntp +actually /man/9/canvas +actually /man/9/image +actually /man/9/text +actualsize /man/3/vga +actualsize /man/4/memfs +actwidth /man/9/options +actx /man/2/tk +actx /man/9/options +acty /man/9/options +ad /man/10/plan9.ini +adaptation /man/6/colour +adaptec /man/10/plan9.ini +adapter /man/10/plan9.ini +adapters /man/10/plan9.ini +adcs /man/3/audio +add /man/1/bind +add /man/1/chmod +add /man/1/grid-monitor +add /man/1/mathcalc +add /man/1/mc +add /man/1/units +add /man/10/acid +add /man/10/iar +add /man/10/ntsrv +add /man/10/plan9.ini +add /man/10/styxserver +add /man/2/dict +add /man/2/draw-point +add /man/2/filter-deflate +add /man/2/keyring-ipint +add /man/2/math-0intro +add /man/2/popup +add /man/2/security-0intro +add /man/2/sets +add /man/2/sh +add /man/2/spree-allow +add /man/2/sys-bind +add /man/2/translate +add /man/3/ds +add /man/3/ether +add /man/3/flash +add /man/3/ftl +add /man/3/ip +add /man/3/logfs +add /man/3/prof +add /man/4/9srvfs +add /man/4/cpu +add /man/4/factotum +add /man/4/keyfs +add /man/4/memfs +add /man/6/namespace +add /man/8/applylog +add /man/8/kfscmd +add /man/8/prep +add /man/9/canvas +add /man/9/menu +add /man/9/options +add /man/9/text +addbuiltin /man/2/sh +addclock0link /man/10/delay +addclock0link /man/10/kbdputc +added /man/1/acme +added /man/1/cprof +added /man/1/dd +added /man/1/grid-query +added /man/1/mash +added /man/1/mk +added /man/1/mprof +added /man/1/prof +added /man/1/session +added /man/1/sh +added /man/1/sh-alphabet +added /man/1/sh-file2chan +added /man/1/stack +added /man/1/tiny +added /man/1/tktester +added /man/10/0intro +added /man/10/a.out +added /man/10/mk +added /man/10/ntsrv +added /man/10/plan9.ini +added /man/10/styxserver +added /man/2/draw-display +added /man/2/draw-image +added /man/2/sets +added /man/2/spree-cardlib +added /man/3/sd +added /man/3/ssl +added /man/6/keys +added /man/6/keytext +added /man/6/sbl +added /man/8/collabsrv +added /man/8/prep +added /man/9/grid +added /man/9/listbox +added /man/9/pack +added /man/9/text +addethercard /man/10/conf +addictive /man/1/wm-misc +addindex /man/2/spree-cardlib +adding /man/1/mash +adding /man/1/sh-alphabet +adding /man/10/devattach +adding /man/10/plan9.ini +adding /man/10/strcat +adding /man/3/pnp +adding /man/6/dis +adding /man/8/cs +adding /man/9/canvas +addition /man/1/acme +addition /man/1/bind +addition /man/1/fc +addition /man/1/mdb +addition /man/1/sh-expr +addition /man/1/wm-sh +addition /man/1/xd +addition /man/2/itslib +addition /man/2/sys-bind +addition /man/3/sd +addition /man/4/factotum +addition /man/5/open +addition /man/5/stat +addition /man/9/canvas +addition /man/9/checkbutton +addition /man/9/listbox +addition /man/9/radiobutton +addition /man/9/text +additional /man/1/avr +additional /man/1/mk +additional /man/1/sh-alphabet +additional /man/1/wc +additional /man/1/wm-sh +additional /man/10/mk +additional /man/10/ntsrv +additional /man/10ti925/tihost +additional /man/3/ip +additional /man/3/pnp +additional /man/4/dbfs +additional /man/4/factotum +additional /man/5/0intro +additional /man/6/keyboard +additional /man/9/button +additional /man/9/canvas +additional /man/9/checkbutton +additional /man/9/choicebutton +additional /man/9/entry +additional /man/9/frame +additional /man/9/grid +additional /man/9/label +additional /man/9/listbox +additional /man/9/menu +additional /man/9/menubutton +additional /man/9/panel +additional /man/9/radiobutton +additional /man/9/scale +additional /man/9/scrollbar +additional /man/9/text +additionally /man/1/charon +additionally /man/1/mash +additionally /man/1/sh-alphabet +additionally /man/2/venti +additions /man/1/tktester +additions /man/8/applylog +addlayframe /man/2/spree-cardlib +addlayobj /man/2/spree-cardlib +addlist /man/2/sets +addmodule /man/2/sh +addmulti /man/3/ether +addmulti /man/3/ip +addpt /man/2/draw-rect +addr /man/1/alphabet-abc +addr /man/1/alphabet-grid +addr /man/1/alphabet-main +addr /man/1/grid-monitor +addr /man/1/listen +addr /man/10/dynld +addr /man/10/ms2 +addr /man/10ti925/epocimg +addr /man/2/bufio +addr /man/2/dis +addr /man/2/diskblocks +addr /man/2/ether +addr /man/2/registries +addr /man/2/secstore +addr /man/2/security-login +addr /man/2/srv +addr /man/2/sys-dial +addr /man/3/dbg +addr /man/4/acme +addr /man/4/lockfs +addr /man/7/db +addr /man/8/cs +addr&amask /man/2/dis +address /man/1/acme +address /man/1/alphabet-abc +address /man/1/alphabet-grid +address /man/1/alphabet-main +address /man/1/bind +address /man/1/charon +address /man/1/collab +address /man/1/deb +address /man/1/dmview +address /man/1/grid-monitor +address /man/1/grid-register +address /man/1/listen +address /man/1/mdb +address /man/1/miniterm +address /man/1/netstat +address /man/1/ns +address /man/1/secstore +address /man/1/webgrab +address /man/10/2l +address /man/10/5coff +address /man/10/5cv +address /man/10/9load +address /man/10/a.out +address /man/10/acid +address /man/10/c2l +address /man/10/conf +address /man/10/dmainit +address /man/10/dynld +address /man/10/inb +address /man/10/inm +address /man/10/lock +address /man/10/ms2 +address /man/10/plan9.ini +address /man/10/readnum +address /man/10/styxserver +address /man/10/xalloc +address /man/10ti925/epocimg +address /man/10ti925/tihost +address /man/2/debug +address /man/2/dhcpclient +address /man/2/dis +address /man/2/diskblocks +address /man/2/disks +address /man/2/ether +address /man/2/format +address /man/2/ip +address /man/2/registries +address /man/2/secstore +address /man/2/security-login +address /man/2/srv +address /man/2/sys-0intro +address /man/2/sys-dial +address /man/2/virgil +address /man/3/arch +address /man/3/boot +address /man/3/dbg +address /man/3/dynld +address /man/3/ether +address /man/3/fpga +address /man/3/i2c +address /man/3/ip +address /man/3/pbus +address /man/3/plap +address /man/3/pnp +address /man/3/prof +address /man/3/prog +address /man/3/usb +address /man/3/vid +address /man/4/acme +address /man/4/cpu +address /man/4/ftpfs +address /man/4/registry +address /man/6/attrdb +address /man/6/colour +address /man/6/dis +address /man/6/ndb +address /man/7/db +address /man/8/bootpd +address /man/8/collabsrv +address /man/8/cs +address /man/8/dhcp +address /man/8/dns +address /man/8/getauthinfo +address /man/8/prep +address /man/8/rip +address /man/8/styxchat +address /man/8/virgild +addressable /man/2/draw-display +addressed /man/1/mdb +addressed /man/1/telnet +addressed /man/10/c2l +addressed /man/2/venti +addressed /man/3/ip +addressed /man/3/pnp +addressed /man/4/acme +addressed /man/6/dis +addresses /man/1/acme +addresses /man/1/charon +addresses /man/1/xd +addresses /man/10/2l +addresses /man/10/9load +addresses /man/10/acid +addresses /man/10/allocb +addresses /man/10/plan9.ini +addresses /man/2/dhcpclient +addresses /man/2/ether +addresses /man/2/ip +addresses /man/2/srv +addresses /man/2/sys-dial +addresses /man/3/boot +addresses /man/3/dbg +addresses /man/3/ether +addresses /man/3/flash +addresses /man/3/ip +addresses /man/3/plap +addresses /man/3/prof +addresses /man/3/prog +addresses /man/3/rtc +addresses /man/3/vid +addresses /man/4/acme +addresses /man/6/dis +addresses /man/6/ndb +addresses /man/8/bootpd +addresses /man/8/dns +addresses /man/8/init +addresses /man/8/ping +addressing /man/10/9load +addressing /man/10/dmainit +addressing /man/2/dis +addressing /man/2/ip +addressing /man/3/i2c +addressing /man/3/ip +addressing /man/6/dis +addressing /man/8/prep +addressof /man/2/ether +addrs /man/2/ip +adds /man/1/acme +adds /man/1/alphabet-main +adds /man/1/auplay +adds /man/1/man +adds /man/1/sh-alphabet +adds /man/1/stack +adds /man/1/webgrab +adds /man/10/allocb +adds /man/10/ar +adds /man/10/delay +adds /man/10/panic +adds /man/10/srclist +adds /man/2/dict +adds /man/2/filter-slip +adds /man/2/hash +adds /man/2/popup +adds /man/2/sh +adds /man/2/spree-allow +adds /man/2/spree-cardlib +adds /man/3/ip +adds /man/3/logfs +adds /man/4/registry +adds /man/8/ftl +adds /man/8/prep +addsbuiltin /man/2/sh +addsrcdir /man/10/acid +addsym /man/2/debug +addtag /man/9/canvas +adequate /man/10/sleep +adequate /man/3/touch +adequate /man/6/colour +adescendant /man/2/w3c-xpointers +adhere /man/1/tktester +adhere /man/10/error +adhere /man/2/command +adhered /man/1/0intro +adheres /man/2/sh +adhering /man/2/sh +adhoc /man/10/plan9.ini +adiff /man/1/acme +adir /man/10/styxserver +adjacent /man/1/uniq +adjacent /man/10/acid +adjacent /man/10/getfields +adjacent /man/2/draw-image +adjacent /man/3/draw +adjacent /man/4/registry +adjacent /man/6/attrdb +adjacent /man/9/entry +adjacent /man/9/grid +adjacent /man/9/text +adjcenter /man/2/prefab-element +adjdown /man/2/prefab-element +adjequal /man/2/prefab-element +adjfill /man/2/prefab-element +adjleft /man/2/prefab-element +adjpack /man/2/prefab-element +adjright /man/2/prefab-element +adjup /man/2/prefab-element +adjust /man/1/tktester +adjust /man/2/prefab-element +adjust /man/9/canvas +adjust /man/9/entry +adjust /man/9/listbox +adjust /man/9/options +adjust /man/9/scale +adjust /man/9/scrollbar +adjust /man/9/text +adjustable /man/10/qio +adjustblock /man/10/allocb +adjusted /man/1/acme +adjusted /man/10/ar +adjusted /man/10/dynld +adjusted /man/2/sys-export +adjusted /man/6/man +adjusted /man/9/canvas +adjusted /man/9/entry +adjusted /man/9/menu +adjusted /man/9/scale +adjusted /man/9/text +adjusting /man/1/collab +adjusting /man/2/tkclient +adjusting /man/2/wmclient +adjusting /man/9/text +adjustment /man/10/a.out +adjustment /man/2/sys-0intro +adjustments /man/1/date +adjusts /man/10/2c +adjusts /man/9/canvas +adjusts /man/9/entry +adjusts /man/9/listbox +adjusts /man/9/text +adl /man/8/kfscmd +adm /man/1/acme +adm /man/4/kfs +adm /man/6/users +adm /man/8/kfscmd +adm /man/8/mkfs +adm.users /man/8/mkfs +administer /man/8/0intro +administer /man/8/changelogin +administration /man/4/namespace +administration /man/8/0intro +administration /man/8/kfscmd +administrative /man/1/0intro +administrative /man/1/cp +administrative /man/6/keys +administrative /man/8/changelogin +administrative /man/8/cs +administrator /man/6/keys +admit /man/10/acid +admits /man/6/man +adopted /man/1/charon +adopted /man/2/security-0intro +adpcm /man/3/audio +adpcm /man/6/audio +adressed /man/9/grab +adt /man/1/deb +adt /man/1/wm +adt /man/1/yacc +adt /man/10/c2l +adt /man/10/devattach +adt /man/2/0intro +adt /man/2/alphabet-intro +adt /man/2/asn1 +adt /man/2/attrdb +adt /man/2/bufio +adt /man/2/cfg +adt /man/2/crc +adt /man/2/daytime +adt /man/2/dbm +adt /man/2/debug +adt /man/2/dhcpclient +adt /man/2/dict +adt /man/2/dis +adt /man/2/diskblocks +adt /man/2/disks +adt /man/2/dividers +adt /man/2/draw-context +adt /man/2/draw-display +adt /man/2/draw-font +adt /man/2/draw-image +adt /man/2/draw-point +adt /man/2/draw-pointer +adt /man/2/draw-rect +adt /man/2/draw-screen +adt /man/2/factotum +adt /man/2/filter +adt /man/2/format +adt /man/2/geodesy +adt /man/2/hash +adt /man/2/ida +adt /man/2/imagefile +adt /man/2/ip +adt /man/2/itslib +adt /man/2/keyring-0intro +adt /man/2/keyring-crypt +adt /man/2/keyring-ipint +adt /man/2/lock +adt /man/2/palmfile +adt /man/2/plumbmsg +adt /man/2/prefab-compound +adt /man/2/prefab-element +adt /man/2/prefab-environ +adt /man/2/prefab-style +adt /man/2/print +adt /man/2/prof +adt /man/2/registries +adt /man/2/scsiio +adt /man/2/security-login +adt /man/2/security-ssl +adt /man/2/sets +adt /man/2/sexprs +adt /man/2/sh +adt /man/2/spki +adt /man/2/spki-verifier +adt /man/2/spree +adt /man/2/spree-cardlib +adt /man/2/stringinttab +adt /man/2/styx +adt /man/2/styxservers +adt /man/2/styxservers-nametree +adt /man/2/sys-dial +adt /man/2/sys-file2chan +adt /man/2/sys-self +adt /man/2/sys-stat +adt /man/2/timers +adt /man/2/tk +adt /man/2/translate +adt /man/2/ubfa +adt /man/2/venti +adt /man/2/w3c-css +adt /man/2/w3c-xpointers +adt /man/2/wmclient +adt /man/2/wmsrv +adt /man/2/xml +adt /man/5/stat +adt /man/6/dis +adt /man/6/sbl +adt /man/7/db +adt's /man/6/sbl +adts /man/2/debug +adts /man/2/devpointer +adts /man/2/keyring-0intro +adts /man/2/keyring-certtostr +adts /man/2/plumbmsg +adts /man/2/w3c-css +adts /man/6/sbl +adts /man/8/httpd +adv7176 /man/3/vid +advance /man/2/sys-0intro +advanced /man/1/deb +advanced /man/10/plan9.ini +advanced /man/2/keyring-crypt +advanced /man/2/sexprs +advanced /man/2/sys-dirread +advanced /man/2/sys-read +advanced /man/6/sexprs +advances /man/1/mdb +advances /man/2/security-0intro +advances /man/7/db +advancing /man/1/mdb +advantage /man/1/0intro +advantage /man/1/cpu +advantage /man/1/dd +advantage /man/6/colour +advantages /man/6/colour +advert /man/2/ip +advertise /man/4/registry +adverts /man/2/ip +advisable /man/9/canvas +advised /man/2/styx +advised /man/9/1copyright +advisory /man/5/0intro +ae /man/6/keyboard +aes /man/1/crypt +aes /man/2/keyring-0intro +aes /man/2/keyring-crypt +aes /man/4/keyfs +aesbsize /man/2/keyring-crypt +aescbc /man/1/crypt +aescbc /man/2/keyring-crypt +aescbc.b /man/1/crypt +aessetup /man/2/keyring-crypt +aesstate /man/2/keyring-crypt +afd /man/2/factotum +afd /man/2/sys-bind +afd /man/2/sys-fauth +affect /man/1/emu +affect /man/2/draw-screen +affect /man/2/env +affect /man/2/sys-pctl +affect /man/4/acme +affect /man/5/open +affect /man/9/update +affected /man/1/alphabet-fs +affected /man/1/charon +affected /man/1/diff +affected /man/1/fs +affected /man/1/sort +affected /man/2/command +affected /man/2/draw-image +affected /man/5/walk +affected /man/9/options +affected /man/9/text +affecting /man/2/spree +affecting /man/2/sys-chdir +affecting /man/5/stat +affecting /man/9/listbox +affects /man/1/emu +affects /man/2/draw-0intro +affects /man/2/draw-image +affects /man/2/sys-0intro +affects /man/2/sys-pctl +affects /man/5/read +affixes /man/1/basename +afid /man/10/styx +afid /man/2/styx +afid /man/2/styxservers +afid /man/5/0intro +afid /man/5/attach +afid /man/8/styxchat +afile /man/10/iar +afollowing /man/2/w3c-xpointers +afp /man/2/dis +afresh /man/8/createsignerkey +ag /man/2/keyring-crypt +agency /man/8/signer +agent /man/1/bind +agent /man/2/factotum +agent /man/4/factotum +agent /man/4/import +agent /man/5/0intro +agent /man/8/register +agent /man/8/signer +aggregate /man/1/mk +aggregate /man/10/mk +aggregates /man/1/mk +aggregates /man/10/mk +aghnsu /man/10/inm +agp /man/10/plan9.ini +agree /man/2/disks +agree /man/2/ida +agree /man/8/collabsrv +agreed /man/1/collab-clients +agreed /man/2/factotum +agreed /man/2/spki-verifier +agreed /man/2/styx +agreed /man/3/mnt +agreed /man/3/mpeg +agreed /man/6/login +agreement /man/1/diff +agreement /man/9/1copyright +agrees /man/10/qlock +agrep /man/1/acme +aha1542 /man/10/plan9.ini +ai /man/2/factotum +ai /man/2/security-auth +aid /man/10/plan9.ini +aid /man/3/sd +aid /man/6/login +aids /man/6/colour +aif /man/10/5cv +aimm /man/2/dis +ainb /man/1/alphabet-fs +ainb /man/1/fs +aind /man/2/dis +aindex /man/2/dis +al /man/10/ar +alarm /man/10/mk +alaw /man/3/audio +alaw /man/6/audio +albeit /man/2/translate +alef /man/10/acid +alef /man/10/mk +alen /man/1/sh-string +alert /man/3/tls +alerting /man/3/tls +alertno /man/3/tls +alerts /man/3/tls +alg /man/1/alphabet-main +alg /man/1/bind +alg /man/1/collab +alg /man/1/cpu +alg /man/1/crypt +alg /man/1/listen +alg /man/1/math-misc +alg /man/2/keyring-crypt +alg /man/2/security-auth +alg /man/2/spki +alg /man/3/sign +alg /man/3/ssl +alg /man/4/lockfs +alg /man/6/namespace +alg /man/7/db +alg /man/7/dbsrv +alg /man/8/createsignerkey +alg /man/8/rstyxd +algebra /man/2/draw-image +algebra /man/2/math-0intro +algebra /man/2/math-linalg +algname /man/2/keyring-gensk +algorithm /man/1/alphabet-main +algorithm /man/1/bind +algorithm /man/1/charon +algorithm /man/1/collab +algorithm /man/1/cpu +algorithm /man/1/crypt +algorithm /man/1/diff +algorithm /man/1/gzip +algorithm /man/1/idea +algorithm /man/1/listen +algorithm /man/1/math-misc +algorithm /man/1/netkey +algorithm /man/1/rcmd +algorithm /man/1/sum +algorithm /man/1/wm-misc +algorithm /man/10/2l +algorithm /man/10/a.out +algorithm /man/2/crc +algorithm /man/2/filter +algorithm /man/2/ida +algorithm /man/2/keyring-0intro +algorithm /man/2/keyring-certtostr +algorithm /man/2/keyring-crypt +algorithm /man/2/keyring-gensk +algorithm /man/2/keyring-rc4 +algorithm /man/2/keyring-sha1 +algorithm /man/2/rand +algorithm /man/2/security-0intro +algorithm /man/2/security-auth +algorithm /man/2/security-login +algorithm /man/2/spki +algorithm /man/2/spree-cardlib +algorithm /man/2/sys-0intro +algorithm /man/3/flash +algorithm /man/3/pnp +algorithm /man/3/sign +algorithm /man/3/ssl +algorithm /man/3/tls +algorithm /man/4/import +algorithm /man/4/lockfs +algorithm /man/5/open +algorithm /man/6/dis +algorithm /man/6/keytext +algorithm /man/6/login +algorithm /man/7/db +algorithm /man/7/dbsrv +algorithm /man/8/createsignerkey +algorithm /man/8/rstyxd +algorithm /man/9/grid +algorithm /man/9/pack +algorithms /man/1/bind +algorithms /man/1/collab +algorithms /man/1/cpu +algorithms /man/1/crypt +algorithms /man/1/rcmd +algorithms /man/2/keyring-0intro +algorithms /man/2/keyring-crypt +algorithms /man/2/security-0intro +algorithms /man/3/ssl +algorithms /man/3/tls +algorithms /man/4/import +algorithms /man/8/srv +algs /man/2/security-auth +alias /man/1/bind +alias /man/2/convcs +alias /man/2/sys-bind +alias /man/6/namespace +alias /man/8/dns +aliased /man/2/draw-image +aliases /man/1/tcs +aliases /man/2/convcs +aliases /man/2/print +aliasing /man/2/convcs +aliasing /man/2/draw-image +alice /man/2/sexprs +align /man/10/xalloc +align /man/3/draw +align /man/3/vga +align /man/9/text +aligned /man/10/allocb +aligned /man/10/malloc +aligned /man/10/xalloc +aligned /man/2/draw-image +aligned /man/3/draw +aligned /man/3/vga +aligned /man/9/options +alignment /man/10/dmainit +alignment /man/10/xalloc +alignment /man/2/draw-image +alignment /man/3/flash +alignment /man/3/ftl +alignment /man/3/vga +alignment /man/9/text +aligns /man/2/draw-image +aligns /man/3/draw +alive /man/3/ip +allbits /man/2/ip +allfids /man/2/styxservers +alloc /man/1/mk +alloc /man/10/mk +allocate /man/10/allocb +allocate /man/10/devattach +allocate /man/10/malloc +allocate /man/10/newchan +allocate /man/10/styxserver +allocate /man/10/xalloc +allocate /man/2/diskblocks +allocate /man/2/dividers +allocate /man/2/draw-0intro +allocate /man/2/draw-display +allocate /man/2/draw-screen +allocate /man/2/prefab-0intro +allocate /man/3/draw +allocate /man/3/ip +allocate /man/3/prog +allocate /man/7/db +allocate /man/8/dhcp +allocated /man/1/mprof +allocated /man/10/9load +allocated /man/10/allocb +allocated /man/10/dev +allocated /man/10/devattach +allocated /man/10/dmainit +allocated /man/10/malloc +allocated /man/10/newchan +allocated /man/10/odbc +allocated /man/10/parsecmd +allocated /man/10/print +allocated /man/10/qlock +allocated /man/2/bufio +allocated /man/2/bufio-chanfill +allocated /man/2/diskblocks +allocated /man/2/draw-0intro +allocated /man/2/draw-context +allocated /man/2/draw-display +allocated /man/2/draw-image +allocated /man/2/draw-screen +allocated /man/2/keyring-sha1 +allocated /man/2/prefab-element +allocated /man/2/prefab-style +allocated /man/2/spree +allocated /man/2/tk +allocated /man/2/wmclient +allocated /man/3/cmd +allocated /man/3/ip +allocated /man/3/tls +allocated /man/4/memfs +allocated /man/5/flush +allocated /man/6/dis +allocated /man/8/prep +allocated /man/9/grid +allocated /man/9/options +allocated /man/9/panel +allocates /man/10/allocb +allocates /man/10/dmainit +allocates /man/10/xalloc +allocates /man/2/diskblocks +allocates /man/2/disks +allocates /man/2/draw-screen +allocates /man/2/security-ssl +allocates /man/2/sys-0intro +allocates /man/2/sys-pipe +allocates /man/3/cmd +allocates /man/3/pipe +allocates /man/3/plap +allocates /man/3/vga +allocates /man/9/pack +allocating /man/1/mprof +allocating /man/10/xalloc +allocating /man/2/draw-display +allocating /man/2/prefab-compound +allocation /man/1/emu +allocation /man/10/allocb +allocation /man/10/dev +allocation /man/10/malloc +allocation /man/10/plan9.ini +allocation /man/10/xalloc +allocation /man/2/draw-display +allocation /man/2/draw-font +allocation /man/2/draw-screen +allocation /man/2/prefab-style +allocation /man/3/cons +allocation /man/3/prof +allocations /man/2/0intro +allocations /man/3/cons +allocations /man/3/prof +allocators /man/10/malloc +allocators /man/10/xalloc +allocb /man/10/allocb +allocb /man/10/dev +allocb /man/10/devattach +allocb /man/10/qio +allotted /man/2/prefab-element +allow /man/1/0intro +allow /man/1/acme +allow /man/1/alphabet-fs +allow /man/1/blur +allow /man/1/deb +allow /man/1/dmview +allow /man/1/emu +allow /man/1/fs +allow /man/1/grid-query +allow /man/1/kill +allow /man/1/listen +allow /man/1/miniterm +allow /man/1/secstore +allow /man/1/tiny +allow /man/1/tktester +allow /man/1/wm-misc +allow /man/10/acid +allow /man/10/dev +allow /man/10/devattach +allow /man/10/dynld +allow /man/10/inb +allow /man/10/lock +allow /man/10/qio +allow /man/10/styxserver +allow /man/2/alphabet-intro +allow /man/2/arg +allow /man/2/command +allow /man/2/dividers +allow /man/2/draw-0intro +allow /man/2/draw-display +allow /man/2/draw-image +allow /man/2/keyring-0intro +allow /man/2/keyring-getmsg +allow /man/2/keyring-sha1 +allow /man/2/palmfile +allow /man/2/plumbmsg +allow /man/2/prof +allow /man/2/sets +allow /man/2/sh +allow /man/2/spki +allow /man/2/spki-verifier +allow /man/2/spree +allow /man/2/spree-allow +allow /man/2/spree-cardlib +allow /man/2/spree-objstore +allow /man/2/styx +allow /man/2/styxservers +allow /man/2/sys-stat +allow /man/2/sys-werrstr +allow /man/2/translate +allow /man/3/cons +allow /man/3/ftl +allow /man/3/gpio +allow /man/3/ip +allow /man/3/plap +allow /man/3/pointer +allow /man/3/prog +allow /man/3/root +allow /man/3/srv9 +allow /man/3/ssl +allow /man/3/tinyfs +allow /man/4/9srvfs +allow /man/4/factotum +allow /man/4/ftpfs +allow /man/4/kfs +allow /man/5/0intro +allow /man/5/open +allow /man/5/remove +allow /man/6/dis +allow /man/6/ndb +allow /man/6/sexprs +allow /man/7/dbsrv +allow /man/8/applylog +allow /man/8/cs +allow /man/8/kfscmd +allow /man/8/rstyxd +allow /man/8/svc +allow /man/9/listbox +allow /man/9/menu +allow /man/9/menubutton +allow /man/9/text +allow.b /man/2/spree-allow +allow.m /man/2/spree-allow +allowable /man/2/keyring-0intro +allowable /man/9/canvas +allowable /man/9/text +allowance /man/2/prefab-compound +allowing /man/1/avr +allowing /man/1/collab-clients +allowing /man/1/grid-monitor +allowing /man/1/listen +allowing /man/1/logon +allowing /man/1/sh +allowing /man/1/toolbar +allowing /man/10/devattach +allowing /man/2/alphabet-intro +allowing /man/2/dbm +allowing /man/2/disks +allowing /man/2/dividers +allowing /man/2/ip +allowing /man/2/math-export +allowing /man/2/readdir +allowing /man/2/regex +allowing /man/2/spki +allowing /man/2/spree +allowing /man/2/sys-pctl +allowing /man/2/timers +allowing /man/2/wmsrv +allowing /man/3/cmd +allowing /man/3/ip +allowing /man/3/logfs +allowing /man/3/srv9 +allowing /man/3/touch +allowing /man/3/usb +allowing /man/4/9srvfs +allowing /man/4/import +allowing /man/4/lockfs +allowing /man/4/ramfile +allowing /man/4/registry +allowing /man/6/keys +allowing /man/8/plumber +allowing /man/8/styxchat +allowing /man/8/touchcal +allowing /man/9/choicebutton +allowoff /man/8/kfscmd +allows /man/1/0intro +allows /man/1/acme +allows /man/1/alphabet-abc +allows /man/1/alphabet-grid +allows /man/1/collab-clients +allows /man/1/cprof +allows /man/1/deb +allows /man/1/ebook +allows /man/1/filename +allows /man/1/grid-query +allows /man/1/grid-register +allows /man/1/keyboard +allows /man/1/mash +allows /man/1/mdb +allows /man/1/session +allows /man/1/sh-std +allows /man/1/sh-tk +allows /man/1/tkcmd +allows /man/1/wm-misc +allows /man/1/wm-sh +allows /man/10/2c +allows /man/10/5cv +allows /man/10/eve +allows /man/10/ntsrv +allows /man/10/qio +allows /man/10/qlock +allows /man/10/styxserver +allows /man/2/alphabet-intro +allows /man/2/asn1 +allows /man/2/bufio +allows /man/2/debug +allows /man/2/dhcpclient +allows /man/2/diskblocks +allows /man/2/draw-0intro +allows /man/2/draw-context +allows /man/2/draw-display +allows /man/2/draw-image +allows /man/2/ip +allows /man/2/keyring-0intro +allows /man/2/keyring-crypt +allows /man/2/lock +allows /man/2/palmfile +allows /man/2/plumbmsg +allows /man/2/prefab-element +allows /man/2/regex +allows /man/2/selectfile +allows /man/2/spree +allows /man/2/styxservers-nametree +allows /man/2/sys-dial +allows /man/2/wait +allows /man/3/arch +allows /man/3/cap +allows /man/3/cons +allows /man/3/dbg +allows /man/3/fpga +allows /man/3/fs +allows /man/3/ftl +allows /man/3/indir +allows /man/3/ip +allows /man/3/kprof +allows /man/3/logfs +allows /man/3/prof +allows /man/3/prog +allows /man/3/srv9 +allows /man/3/vga +allows /man/4/factotum +allows /man/4/iostats +allows /man/4/keysrv +allows /man/4/kfs +allows /man/4/spree +allows /man/5/0intro +allows /man/5/open +allows /man/6/dis +allows /man/7/db +allows /man/8/styxmon +allows /man/9/canvas +allows /man/9/entry +allows /man/9/text +alltarget /man/1/mk +alltarget /man/10/mk +alone /man/10ti925/tihost +alone /man/2/prefab-element +alone /man/3/dbg +alone /man/8/rdbgsrv +alone /man/9/canvas +alongside /man/1/charon +alongside /man/1/mux +alowercentre /man/2/spree-cardlib +alowerleft /man/2/spree-cardlib +alowerright /man/2/spree-cardlib +alpha /man/10/2c +alpha /man/10/a.out +alpha /man/2/draw-0intro +alpha /man/2/draw-display +alpha /man/2/draw-image +alpha /man/2/keyring-0intro +alpha /man/2/keyring-auth +alpha /man/2/math-linalg +alpha /man/3/draw +alpha /man/4/factotum +alpha /man/6/auth +alpha /man/6/colour +alpha /man/6/image +alpha /man/6/keytext +alpha /man/6/login +alpha /man/9/image +alpha /man/9/types +alphabet /man/1/alphabet-abc +alphabet /man/1/alphabet-fs +alphabet /man/1/alphabet-grid +alphabet /man/1/alphabet-main +alphabet /man/1/sh-alphabet +alphabet /man/2/alphabet-intro +alphabet /man/2/draw-font +alphabet /man/2/sexprs +alphabet /man/6/sexprs +alphabet.b /man/1/alphabet-main +alphabetical /man/2/filepat +alphabetically /man/10/inm +alphabetically /man/2/readdir +alphabetics /man/1/dd +alphabetics /man/1/tr +alphanumeric /man/1/mash +alphanumeric /man/1/sh +alphanumerics /man/1/acme +alq /man/8/ping +alt /man/1/limbo +alt /man/1/sh-tk +alt /man/10/9load +alt /man/2/0intro +alt /man/2/popup +alt /man/2/timers +alt /man/2/tkclient +alt /man/2/wait +alt /man/3/prog +alt /man/6/keyboard +alter /man/1/mash +alter /man/1/wm-misc +alter /man/10/iar +alter /man/10/strcat +alter /man/2/spree +alter /man/9/grid +altera /man/3/fpga +altera /man/8/fpgaload +altered /man/5/stat +altering /man/1/wm-misc +alternate /man/10/print +alternate /man/2/security-0intro +alternate /man/9/checkbutton +alternating /man/3/tv +alternating /man/6/man +alternation /man/6/man +alternative /man/1/collab-clients +alternative /man/1/mash +alternative /man/1/sh-expr +alternative /man/10/5cv +alternative /man/10/delay +alternative /man/2/dis +alternative /man/2/encoding +alternative /man/2/print +alternative /man/2/styx +alternative /man/2/sys-print +alternative /man/6/regexp +alternative /man/6/sbl +alternative /man/8/cs +alternative /man/8/dns +alternative /man/8/plumber +alternatively /man/1/collab-clients +alternatively /man/2/prefab-element +alternatively /man/3/ip +alternatively /man/3/pnp +alternatively /man/9/types +alternatives /man/1/tiny +alternatives /man/2/dialog +alternatives /man/2/dis +alternatives /man/2/styx +alters /man/2/geodesy +altmodule /man/1/mash-make +altogether /man/2/prof +am79c970 /man/10/plan9.ini +amask /man/2/dis +ambiguities /man/1/yacc +ambiguities /man/2/draw-image +ambiguities /man/3/draw +ambiguity /man/1/unicode +ambiguity /man/2/0intro +ambiguity /man/2/sys-print +ambiguous /man/1/mc +ambiguous /man/1/mk +ambiguous /man/1/sh-alphabet +ambiguous /man/1/sh-csv +ambiguous /man/1/yacc +ambiguous /man/10/mk +amd /man/10/a.out +amd /man/10/plan9.ini +amd /man/3/ether +amd64 /man/10/2c +amd79c970 /man/10/plan9.ini +amexit /man/2/ir +amode /man/10/newchan +amongst /man/1/bind +amongst /man/1/chgrp +amongst /man/1/collab-clients +amongst /man/10/conf +amongst /man/10/dev +amongst /man/10/dmainit +amongst /man/2/keyring-auth +amongst /man/2/spree-cardlib +amongst /man/3/prog +amongst /man/3/touch +amongst /man/6/colour +amongst /man/8/collabsrv +amount /man/1/charon +amount /man/1/grid-register +amount /man/1/mdb +amount /man/1/mprof +amount /man/1/prof +amount /man/1/ps +amount /man/1/sh-file2chan +amount /man/1/wm-misc +amount /man/1/yacc +amount /man/10/allocb +amount /man/10/newchan +amount /man/10/styx +amount /man/2/draw-rect +amount /man/2/prof +amount /man/2/scsiio +amount /man/2/styx +amount /man/2/sys-fauth +amount /man/3/cons +amount /man/3/logfs +amount /man/3/prof +amount /man/3/prog +amount /man/4/dbfs +amount /man/4/iostats +amount /man/5/read +amount /man/6/man +amount /man/9/grid +amount /man/9/options +amount /man/9/pack +amount /man/9/text +amounts /man/1/deb +amounts /man/2/sys-iounit +amounts /man/4/iostats +amounts /man/9/text +amp /man/2/dis +ampersand /man/1/mash +ampersand /man/1/mk +ampersand /man/1/tiny +ampersand /man/10/mk +ampersand /man/2/spree-allow +ampersands /man/1/sh +amstartinput /man/2/ir +analogous /man/1/acme +analogous /man/10/rune +analogous /man/10/styx +analogous /man/2/draw-display +analogous /man/4/acme +analogue /man/1/wm-misc +analogues /man/2/cfg +analyse /man/1/yacc +analyse /man/3/kprof +analyser /man/1/yacc +analysis /man/1/blur +analysis /man/2/math-0intro +aname /man/1/alphabet-main +aname /man/1/listen +aname /man/10/styx +aname /man/10/styxserver +aname /man/2/factotum +aname /man/2/styx +aname /man/2/styxservers +aname /man/2/sys-bind +aname /man/2/sys-fauth +aname /man/3/0intro +aname /man/5/0intro +aname /man/5/attach +aname /man/6/namespace +aname /man/8/styxchat +anamespace /man/2/w3c-xpointers +ancestor /man/1/alphabet-fs +ancestor /man/1/fs +ancestor /man/9/canvas +ancestors /man/2/spree +anchor /man/2/spree-cardlib +anchor /man/9/button +anchor /man/9/canvas +anchor /man/9/checkbutton +anchor /man/9/choicebutton +anchor /man/9/entry +anchor /man/9/grid +anchor /man/9/label +anchor /man/9/listbox +anchor /man/9/menubutton +anchor /man/9/options +anchor /man/9/pack +anchor /man/9/panel +anchor /man/9/radiobutton +anchor /man/9/types +anchored /man/2/spree-cardlib +anchorpos /man/9/canvas +anchorpos /man/9/types +anded /man/2/sys-open +angle /man/1/yacc +angle /man/2/draw-image +angle /man/2/w3c-css +angle /man/9/canvas +angles /man/1/mc +angles /man/2/draw-image +angles /man/3/draw +angles /man/9/canvas +angular /man/9/canvas +animate /man/1/charon +animated /man/1/charon +animating /man/9/canvas +anmd /man/1/mk +annot /man/1/ebook +annotate /man/1/limbo +annotates /man/10/2l +annotation /man/1/ebook +annotation /man/9/text +annotations /man/1/ebook +annotations /man/9/scale +annotations /man/9/text +announce /man/1/grid-register +announce /man/1/listen +announce /man/10/styxserver +announce /man/2/sys-dial +announce /man/3/ip +announce /man/3/plap +announce /man/8/cs +announce /man/8/srv +announced /man/1/grid-localreg +announced /man/1/listen +announced /man/1/secstore +announced /man/3/ip +announced /man/3/plap +announcement /man/1/listen +announcement /man/2/sys-dial +announcements /man/8/rip +announces /man/1/collab-clients +announces /man/10/qlock +announces /man/8/srv +announcing /man/1/listen +announcing /man/8/cs +annoyances /man/1/charon +annoying /man/1/charon +annoyingly /man/1/wm-misc +anon /man/10/c2l +anonymous /man/10/c2l +anonymous /man/4/ftpfs +anonymous /man/4/registry +ansi /man/10/0intro +ansi /man/10/2c +ansi /man/10/c2l +ansi /man/10/error +ansi /man/10/memory +ansi /man/10/print +ansi /man/10/strcat +ansi /man/2/security-0intro +anstu /man/1/du +answer /man/2/styxservers +answer /man/2/translate +answer /man/2/virgil +answer /man/5/flush +answer /man/8/signer +answering /man/2/translate +answering /man/8/bootpd +answering /man/8/cs +answers /man/1/collab-clients +answers /man/8/ping +antecedent /man/1/mdb +anti /man/1/wm-misc +anti /man/2/draw-image +anti /man/3/tls +anticipation /man/7/db +anybody /man/1/ls +anymore /man/2/disks +anyone /man/10/styxserver +anyone /man/2/security-0intro +anyone /man/2/sys-stat +anyone /man/3/logfs +anyone /man/4/factotum +anyone /man/4/registry +anyone /man/5/stat +anysigner /man/4/factotum +anyway /man/2/sys-print +anywhere /man/1/acme +anywhere /man/1/sh +anywhere /man/4/namespace +anywhere /man/9/menubutton +aopen /man/10/newchan +aopen /man/2/bufio +aoutb /man/1/alphabet-fs +aoutb /man/1/fs +aoverb /man/1/alphabet-fs +aoverb /man/1/fs +ap /man/10/styx +aparent /man/2/w3c-xpointers +apart /man/1/ftest +apart /man/1/grid-ns +apart /man/2/convcs +apart /man/2/prof +apart /man/8/getauthinfo +aperture /man/3/vga +aphorism /man/1/fortune +api /man/10/odbc +apid /man/1/sh +apid /man/1/sh-file2chan +apm /man/10/plan9.ini +apm0 /man/10/plan9.ini +apostrophes /man/2/math-linalg +app /man/1/mux +app /man/2/translate +app /man/6/translate +apparent /man/2/dbm +apparently /man/1/wm-misc +apparently /man/2/dbm +apparently /man/2/keyset +apparently /man/2/palmfile +apparently /man/8/create +apparently /man/8/getauthinfo +apparently /man/8/styxchat +appdata /man/2/palmfile +appearance /man/1/brutus +appearance /man/1/unicode +appearance /man/2/draw-font +appearance /man/2/prefab-0intro +appearance /man/2/prefab-compound +appearance /man/2/prefab-style +appearance /man/2/spree-cardlib +appearance /man/9/menu +appearance /man/9/text +appearance /man/9/variable +appearing /man/1/wm-sh +appearing /man/2/cfg +appearing /man/9/scale +append /man/1/acme +append /man/1/chmod +append /man/1/limbo +append /man/1/ls +append /man/1/tiny +append /man/10/2a +append /man/10/2c +append /man/10/acid +append /man/10/iar +append /man/10/styxserver +append /man/2/attrdb +append /man/2/palmfile +append /man/2/prefab-element +append /man/2/string +append /man/2/styx +append /man/2/styxpersist +append /man/2/sys-open +append /man/2/sys-stat +append /man/3/snarf +append /man/3/ssl +append /man/3/tinyfs +append /man/4/logfile +append /man/5/0intro +append /man/5/open +append /man/5/read +append /man/5/stat +append /man/6/proto +append /man/8/kfscmd +appended /man/1/acme +appended /man/1/alphabet-main +appended /man/1/gzip +appended /man/1/sh +appended /man/1/tail +appended /man/1/tee +appended /man/1/wm-sh +appended /man/10/9load +appended /man/10/c2l +appended /man/2/security-0intro +appended /man/2/tk +appended /man/3/ssl +appended /man/4/acme +appended /man/9/bind +appended /man/9/scrollbar +appending /man/1/asm +appending /man/1/limbo +appending /man/1/sh +appending /man/2/attrdb +appending /man/2/security-0intro +appending /man/8/prep +appending /man/9/menu +appends /man/1/acme +appends /man/1/mash +appends /man/1/sendmail +appends /man/1/sh +appends /man/10/print +appends /man/10/strcat +appends /man/2/string +appends /man/2/sys-print +appends /man/4/logfile +appi /man/2/palmfile +appinfo /man/2/palmfile +appl /man/1/9win +appl /man/1/acme +appl /man/1/alphabet-abc +appl /man/1/alphabet-fs +appl /man/1/alphabet-grid +appl /man/1/alphabet-main +appl /man/1/asm +appl /man/1/auplay +appl /man/1/avr +appl /man/1/basename +appl /man/1/bind +appl /man/1/blur +appl /man/1/brutus +appl /man/1/cal +appl /man/1/calendar +appl /man/1/cat +appl /man/1/cd +appl /man/1/charon +appl /man/1/chgrp +appl /man/1/chmod +appl /man/1/cleanname +appl /man/1/cmp +appl /man/1/collab +appl /man/1/collab-clients +appl /man/1/comm +appl /man/1/cook +appl /man/1/cp +appl /man/1/cprof +appl /man/1/cpu +appl /man/1/crypt +appl /man/1/date +appl /man/1/dd +appl /man/1/deb +appl /man/1/diff +appl /man/1/disdep +appl /man/1/dmview +appl /man/1/du +appl /man/1/ebook +appl /man/1/echo +appl /man/1/env +appl /man/1/filename +appl /man/1/fmt +appl /man/1/fortune +appl /man/1/freq +appl /man/1/fs +appl /man/1/ftest +appl /man/1/ftree +appl /man/1/gettar +appl /man/1/grep +appl /man/1/grid-localreg +appl /man/1/grid-monitor +appl /man/1/grid-ns +appl /man/1/grid-query +appl /man/1/grid-register +appl /man/1/gzip +appl /man/1/idea +appl /man/1/itest +appl /man/1/keyboard +appl /man/1/kill +appl /man/1/lc +appl /man/1/limbo +appl /man/1/listen +appl /man/1/logon +appl /man/1/logwindow +appl /man/1/look +appl /man/1/ls +appl /man/1/man +appl /man/1/mash +appl /man/1/mash-make +appl /man/1/mash-tk +appl /man/1/math-misc +appl /man/1/mathcalc +appl /man/1/mc +appl /man/1/mdb +appl /man/1/miniterm +appl /man/1/mk +appl /man/1/mkdir +appl /man/1/mprof +appl /man/1/mux +appl /man/1/mv +appl /man/1/netkey +appl /man/1/netstat +appl /man/1/ns +appl /man/1/nsbuild +appl /man/1/os +appl /man/1/p +appl /man/1/passwd +appl /man/1/plumb +appl /man/1/prof +appl /man/1/ps +appl /man/1/pwd +appl /man/1/rcmd +appl /man/1/read +appl /man/1/rm +appl /man/1/runas +appl /man/1/secstore +appl /man/1/sendmail +appl /man/1/session +appl /man/1/sh +appl /man/1/sh-alphabet +appl /man/1/sh-arg +appl /man/1/sh-csv +appl /man/1/sh-expr +appl /man/1/sh-file2chan +appl /man/1/sh-regex +appl /man/1/sh-sexprs +appl /man/1/sh-std +appl /man/1/sh-string +appl /man/1/sh-tk +appl /man/1/sleep +appl /man/1/spree-join +appl /man/1/stack +appl /man/1/stream +appl /man/1/strings +appl /man/1/sum +appl /man/1/tcs +appl /man/1/tee +appl /man/1/telnet +appl /man/1/time +appl /man/1/timestamp +appl /man/1/tiny +appl /man/1/tkcmd +appl /man/1/tktester +appl /man/1/toolbar +appl /man/1/touch +appl /man/1/tr +appl /man/1/tsort +appl /man/1/unicode +appl /man/1/uniq +appl /man/1/units +appl /man/1/uuencode +appl /man/1/wc +appl /man/1/webgrab +appl /man/1/wish +appl /man/1/wm +appl /man/1/wm-misc +appl /man/1/wm-sh +appl /man/1/xd +appl /man/1/yacc +appl /man/1/zeros +appl /man/10/c2l +appl /man/2/alphabet-intro +appl /man/2/arg +appl /man/2/asn1 +appl /man/2/attrdb +appl /man/2/bloomfilter +appl /man/2/bufio +appl /man/2/cfg +appl /man/2/convcs +appl /man/2/crc +appl /man/2/daytime +appl /man/2/dbm +appl /man/2/debug +appl /man/2/dhcpclient +appl /man/2/dialog +appl /man/2/dict +appl /man/2/dis +appl /man/2/diskblocks +appl /man/2/disks +appl /man/2/dividers +appl /man/2/encoding +appl /man/2/env +appl /man/2/ether +appl /man/2/exception +appl /man/2/factotum +appl /man/2/filepat +appl /man/2/filter-deflate +appl /man/2/filter-slip +appl /man/2/format +appl /man/2/fsproto +appl /man/2/geodesy +appl /man/2/hash +appl /man/2/ida +appl /man/2/imagefile +appl /man/2/ip +appl /man/2/ir +appl /man/2/keyset +appl /man/2/lock +appl /man/2/mpeg +appl /man/2/names +appl /man/2/newns +appl /man/2/palmfile +appl /man/2/plumbmsg +appl /man/2/pop3 +appl /man/2/popup +appl /man/2/print +appl /man/2/prof +appl /man/2/pslib +appl /man/2/rand +appl /man/2/readdir +appl /man/2/regex +appl /man/2/scsiio +appl /man/2/secstore +appl /man/2/security-auth +appl /man/2/security-login +appl /man/2/security-random +appl /man/2/security-ssl +appl /man/2/selectfile +appl /man/2/sexprs +appl /man/2/sh +appl /man/2/smtp +appl /man/2/spki +appl /man/2/spki-verifier +appl /man/2/spree +appl /man/2/spree-allow +appl /man/2/spree-cardlib +appl /man/2/string +appl /man/2/stringinttab +appl /man/2/styx +appl /man/2/styxconv +appl /man/2/styxpersist +appl /man/2/styxservers +appl /man/2/styxservers-nametree +appl /man/2/tabs +appl /man/2/tftp +appl /man/2/tkclient +appl /man/2/translate +appl /man/2/ubfa +appl /man/2/venti +appl /man/2/virgil +appl /man/2/volume +appl /man/2/w3c-css +appl /man/2/w3c-xpointers +appl /man/2/wmclient +appl /man/2/wmlib +appl /man/2/wmsrv +appl /man/2/workdir +appl /man/2/xml +appl /man/4/9srvfs +appl /man/4/acme +appl /man/4/archfs +appl /man/4/cpu +appl /man/4/dbfs +appl /man/4/dossrv +appl /man/4/export +appl /man/4/factotum +appl /man/4/ftpfs +appl /man/4/import +appl /man/4/iostats +appl /man/4/keyfs +appl /man/4/keysrv +appl /man/4/kfs +appl /man/4/lockfs +appl /man/4/logfile +appl /man/4/memfs +appl /man/4/mntgen +appl /man/4/namespace +appl /man/4/palmsrv +appl /man/4/ramfile +appl /man/4/registry +appl /man/4/spree +appl /man/4/tarfs +appl /man/7/db +appl /man/7/dbsrv +appl /man/8/applylog +appl /man/8/bootpd +appl /man/8/changelogin +appl /man/8/collabsrv +appl /man/8/create +appl /man/8/createsignerkey +appl /man/8/cs +appl /man/8/dhcp +appl /man/8/dns +appl /man/8/fpgaload +appl /man/8/ftl +appl /man/8/getauthinfo +appl /man/8/httpd +appl /man/8/init +appl /man/8/kfscmd +appl /man/8/logind +appl /man/8/mangaload +appl /man/8/manufacture +appl /man/8/mkfs +appl /man/8/ping +appl /man/8/plumber +appl /man/8/prep +appl /man/8/rdbgsrv +appl /man/8/register +appl /man/8/rip +appl /man/8/rstyxd +appl /man/8/shutdown +appl /man/8/signer +appl /man/8/sntp +appl /man/8/srv +appl /man/8/styxchat +appl /man/8/styxmon +appl /man/8/svc +appl /man/8/touchcal +appl /man/8/virgild +applets /man/1/charon +applicable /man/1/ls +applicable /man/2/dis +applicable /man/2/styxservers +applicable /man/3/audio +applicable /man/6/dis +applicable /man/9/types +application /man/1/0intro +application /man/1/avr +application /man/1/brutus +application /man/1/disdep +application /man/1/emu +application /man/1/logon +application /man/1/mux +application /man/1/tktester +application /man/1/toolbar +application /man/1/wm +application /man/10/error +application /man/2/0intro +application /man/2/asn1 +application /man/2/attrdb +application /man/2/bufio +application /man/2/cfg +application /man/2/command +application /man/2/dbm +application /man/2/dividers +application /man/2/draw-0intro +application /man/2/draw-context +application /man/2/draw-display +application /man/2/drawmux +application /man/2/ir +application /man/2/palmfile +application /man/2/plumbmsg +application /man/2/popup +application /man/2/prefab-element +application /man/2/prefab-environ +application /man/2/prefab-style +application /man/2/security-0intro +application /man/2/selectfile +application /man/2/styxservers +application /man/2/sys-0intro +application /man/2/sys-pctl +application /man/2/sys-read +application /man/2/tk +application /man/2/tkclient +application /man/2/translate +application /man/2/ubfa +application /man/2/wmclient +application /man/2/wmlib +application /man/3/draw +application /man/3/ip +application /man/3/mpeg +application /man/3/srv9 +application /man/3/tls +application /man/3/usb +application /man/3/vid +application /man/4/keyfs +application /man/6/keytext +application /man/6/plumbing +application /man/8/httpd +application /man/8/plumber +application /man/9/0intro +application /man/9/grab +application /man/9/panel +application's /man/2/plumbmsg +application's /man/2/styxservers +application's /man/3/srv9 +application's /man/8/plumber +applications /man/1/acme +applications /man/1/cpu +applications /man/1/emu +applications /man/1/mash-tk +applications /man/1/math-misc +applications /man/1/mux +applications /man/1/tiny +applications /man/1/wish +applications /man/1/wm +applications /man/1/wm-misc +applications /man/10/dev +applications /man/10/kproc +applications /man/10/splhi +applications /man/2/bufio +applications /man/2/command +applications /man/2/dialog +applications /man/2/draw-pointer +applications /man/2/ether +applications /man/2/imagefile +applications /man/2/ir +applications /man/2/keyring-certtostr +applications /man/2/palmfile +applications /man/2/plumbmsg +applications /man/2/prefab-0intro +applications /man/2/security-0intro +applications /man/2/srv +applications /man/2/styx +applications /man/2/styxservers +applications /man/2/sys-chdir +applications /man/2/sys-open +applications /man/2/sys-pipe +applications /man/2/sys-self +applications /man/2/tkclient +applications /man/2/ubfa +applications /man/2/venti +applications /man/2/w3c-css +applications /man/2/wmclient +applications /man/2/wmlib +applications /man/3/cmd +applications /man/3/ip +applications /man/3/srv +applications /man/3/srv9 +applications /man/3/touch +applications /man/4/0intro +applications /man/4/9srvfs +applications /man/4/dbfs +applications /man/4/namespace +applications /man/4/palmsrv +applications /man/4/ramfile +applications /man/5/0intro +applications /man/6/attrdb +applications /man/6/colour +applications /man/6/keyboard +applications /man/6/ndb +applications /man/6/plumbing +applications /man/6/regexp +applications /man/6/sbl +applications /man/6/sexprs +applications /man/6/translate +applications /man/6/ubfa +applications /man/8/applylog +applications /man/8/cs +applications /man/8/getauthinfo +applications /man/8/plumber +applications /man/9/grab +applied /man/1/acme +applied /man/1/alphabet-main +applied /man/1/fs +applied /man/1/sh +applied /man/1/sh-alphabet +applied /man/1/tiny +applied /man/10/dev +applied /man/10/dynld +applied /man/2/asn1 +applied /man/2/keyring-0intro +applied /man/2/math-0intro +applied /man/2/math-elem +applied /man/2/security-0intro +applied /man/2/sexprs +applied /man/2/tk +applied /man/2/tkclient +applied /man/2/ubfa +applied /man/3/logfs +applied /man/3/ssl +applied /man/4/acme +applied /man/5/walk +applied /man/6/man +applied /man/6/plumbing +applied /man/7/dbsrv +applied /man/8/applylog +applied /man/8/rdbgsrv +applied /man/8/rstyxd +applied /man/9/0intro +applied /man/9/text +applied /man/9/types +applies /man/1/cp +applies /man/1/sh-regex +applies /man/10/kproc +applies /man/2/draw-image +applies /man/2/security-0intro +applies /man/2/spree +applies /man/2/wait +applies /man/3/fs +applies /man/3/ip +applies /man/3/prog +applies /man/3/srv9 +applies /man/3/touch +applies /man/5/walk +applies /man/8/applylog +applies /man/8/cs +applies /man/8/kfscmd +applies /man/8/plumber +applies /man/9/canvas +applies /man/9/checkbutton +applies /man/9/menu +applies /man/9/radiobutton +applies /man/9/text +apply /man/1/acme +apply /man/1/mash-make +apply /man/1/mc +apply /man/1/plumb +apply /man/1/read +apply /man/1/sh-std +apply /man/1/wm-misc +apply /man/10/dev +apply /man/10/inb +apply /man/2/dbm +apply /man/2/draw-display +apply /man/2/imagefile +apply /man/2/math-linalg +apply /man/2/print +apply /man/2/styxconv +apply /man/2/sys-print +apply /man/2/w3c-xpointers +apply /man/3/audio +apply /man/8/applylog +apply /man/9/1copyright +apply /man/9/canvas +applycfg /man/2/dhcpclient +applying /man/1/acme +applying /man/1/alphabet-main +applying /man/1/diff +applying /man/1/fs +applying /man/1/mash-make +applying /man/2/plumbmsg +applying /man/2/readdir +applying /man/2/secstore +applylog /man/8/applylog +applylog.b /man/8/applylog +apportioned /man/9/grid +apportioning /man/9/grid +appreciate /man/10/devattach +approach /man/2/sh +appropriately /man/1/ftree +appropriately /man/1/sh-tk +appropriately /man/10/2c +appropriately /man/10/9load +appropriately /man/10/kbdputc +appropriately /man/10/plan9.ini +appropriately /man/2/bufio-chanfill +appropriately /man/2/dhcpclient +appropriately /man/2/dividers +appropriately /man/2/draw-context +appropriately /man/2/prefab-compound +appropriately /man/2/spree +appropriately /man/2/spree-cardlib +appropriately /man/2/styxservers +appropriately /man/3/vga +appropriately /man/4/registry +appropriately /man/8/rip +appropriately /man/9/types +approximate /man/1/sh-file2chan +approximate /man/2/geodesy +approximate /man/9/canvas +approximately /man/2/bloomfilter +approximation /man/3/fs +apreceding /man/2/w3c-xpointers +april /man/2/ida +aprvx /man/8/mkfs +apx /man/10/2c +aqid /man/10/styx +aqid /man/2/styx +aqid /man/5/0intro +aqid /man/5/attach +aqid /man/8/styxchat +aqua /man/9/types +ar /man/1/alphabet-fs +ar /man/1/fs +ar /man/10/ar +ar /man/10/iar +ar /man/10/mk +ar.h /man/10/ar +arbitrarily /man/1/acme +arbitrarily /man/2/dict +arbitrarily /man/2/draw-display +arbitrarily /man/2/sys-0intro +arbitrarily /man/8/prep +arbitrary /man/1/mk +arbitrary /man/10/dynld +arbitrary /man/10/mk +arbitrary /man/2/alphabet-intro +arbitrary /man/2/bufio +arbitrary /man/2/dbm +arbitrary /man/2/draw-screen +arbitrary /man/2/filter +arbitrary /man/2/format +arbitrary /man/2/keyring-getmsg +arbitrary /man/2/keyring-getstring +arbitrary /man/2/keyring-ipint +arbitrary /man/2/prefab-element +arbitrary /man/2/sets +arbitrary /man/2/spree-allow +arbitrary /man/2/spree-cardlib +arbitrary /man/2/styxservers +arbitrary /man/2/sys-0intro +arbitrary /man/2/sys-millisec +arbitrary /man/2/timers +arbitrary /man/2/tk +arbitrary /man/2/wmsrv +arbitrary /man/3/ftl +arbitrary /man/3/indir +arbitrary /man/3/root +arbitrary /man/3/sd +arbitrary /man/4/dbfs +arbitrary /man/4/ftpfs +arbitrary /man/4/kfs +arbitrary /man/4/spree +arbitrary /man/5/0intro +arbitrary /man/6/sexprs +arbitrary /man/8/changelogin +arbitrary /man/9/listbox +arbitrary /man/9/panel +arbitrary /man/9/text +arbitration /man/3/pnp +arc /man/1/mk +arc /man/10/mk +arc /man/2/draw-image +arc /man/3/draw +arc /man/9/canvas +arc's /man/9/canvas +arcane /man/2/disks +arch /man/10/ar +arch /man/3/arch +arch /man/3/vga +arch /man/4/archfs +arch /man/4/namespace +arch /man/8/mkfs +arch.b /man/8/create +archfile /man/4/archfs +archfs /man/4/archfs +archfs /man/4/tarfs +archfs /man/8/create +archfs.b /man/4/archfs +architecture /man/10/2a +architecture /man/10/2c +architecture /man/10/2l +architecture /man/10/5cv +architecture /man/10/acid +architecture /man/10/ar +architecture /man/10/conf +architecture /man/10/dynld +architecture /man/10/iar +architecture /man/10/kbdputc +architecture /man/10/mk +architecture /man/3/arch +architecture /man/4/namespace +architecture /man/8/prep +architectures /man/1/0intro +architectures /man/10/2a +architectures /man/10/2l +architectures /man/10/a.out +architectures /man/10/inb +archival /man/1/alphabet-fs +archival /man/1/fs +archival /man/2/spree-cardlib +archival /man/2/spree-gather +archival /man/2/spree-objstore +archival /man/2/venti +archive /man/1/alphabet-fs +archive /man/1/fs +archive /man/1/gettar +archive /man/10/0intro +archive /man/10/ar +archive /man/10/iar +archive /man/10/inm +archive /man/2/palmfile +archive /man/2/spree +archive /man/2/spree-allow +archive /man/2/spree-cardlib +archive /man/2/spree-gather +archive /man/2/spree-objstore +archive /man/4/archfs +archive /man/4/tarfs +archive /man/6/proto +archive /man/8/create +archive /man/8/mkfs +archivearray /man/2/spree-cardlib +archived /man/1/chmod +archived /man/2/spree +archived /man/2/spree-cardlib +archived /man/2/spree-gather +archived /man/4/tarfs +archived /man/8/mkfs +archived /man/8/prep +archiveobj /man/2/spree-allow +archives /man/1/gettar +archives /man/10/2l +archives /man/10/ar +archives /man/10/mk +archives /man/2/spree +archives /man/2/spree-objstore +archives /man/5/stat +archives /man/8/create +archiving /man/2/spree-cardlib +archiving /man/2/spree-objstore +arcop /man/2/draw-image +arcs /man/1/tsort +arcs /man/9/canvas +arctan /man/2/math-elem +aren't /man/1/alphabet-fs +aren't /man/1/fs +aren't /man/2/sets +arena /man/1/emu +arenas /man/8/prep +arestore /man/2/dis +arfmag /man/10/ar +arg /man/1/9win +arg /man/1/alphabet-abc +arg /man/1/alphabet-grid +arg /man/1/alphabet-main +arg /man/1/cprof +arg /man/1/cpu +arg /man/1/echo +arg /man/1/emu +arg /man/1/fs +arg /man/1/ftest +arg /man/1/listen +arg /man/1/mash +arg /man/1/mprof +arg /man/1/os +arg /man/1/prof +arg /man/1/rcmd +arg /man/1/runas +arg /man/1/sh +arg /man/1/sh-alphabet +arg /man/1/sh-arg +arg /man/1/sh-expr +arg /man/1/sh-regex +arg /man/1/sh-std +arg /man/1/stack +arg /man/1/time +arg /man/1/wm +arg /man/10/kproc +arg /man/10/ntsrv +arg /man/10/print +arg /man/10/qio +arg /man/10/sleep +arg /man/2/arg +arg /man/2/convcs +arg /man/2/factotum +arg /man/2/prefab-element +arg /man/2/tk +arg /man/2/w3c-css +arg /man/2/w3c-xpointers +arg /man/3/ip +arg /man/6/plumbing +arg /man/8/init +arg /man/8/styxmon +arg /man/9/button +arg /man/9/canvas +arg /man/9/checkbutton +arg /man/9/choicebutton +arg /man/9/entry +arg /man/9/frame +arg /man/9/grab +arg /man/9/grid +arg /man/9/image +arg /man/9/label +arg /man/9/listbox +arg /man/9/menu +arg /man/9/menubutton +arg /man/9/pack +arg /man/9/panel +arg /man/9/radiobutton +arg /man/9/scale +arg /man/9/scrollbar +arg /man/9/text +arg.b /man/1/sh-arg +arg.b /man/2/arg +arg.dis /man/6/proto +arg.m /man/2/arg +arg0 /man/3/cmd +arg1 /man/1/mk +arg1 /man/10/mk +arg2 /man/1/mk +arg2 /man/10/mk +argc /man/10/styxserver +argpos /man/10/2c +args /man/1/deb +args /man/1/mash +args /man/1/mk +args /man/1/session +args /man/1/sh-arg +args /man/1/sh-tk +args /man/1/wm-sh +args /man/1/yacc +args /man/10/acid +args /man/10/getfields +args /man/10/mk +args /man/2/alphabet-intro +args /man/2/arg +args /man/2/command +args /man/2/debug +args /man/2/sexprs +args /man/2/sh +args /man/2/spki +args /man/2/string +args /man/2/styxservers-nametree +args /man/2/translate +args /man/2/ubfa +args /man/2/virgil +args /man/2/w3c-css +args /man/2/w3c-xpointers +args /man/3/cmd +args /man/4/iostats +args /man/6/sbl +args /man/9/canvas +args /man/9/entry +args /man/9/listbox +args /man/9/text +argtype /man/1/sh-alphabet +arguably /man/1/wish +arguably /man/3/indir +arguably /man/8/srv +argv /man/1/stack +argv /man/10/acid +argv /man/10/styxserver +argv /man/2/arg +argv /man/2/debug +argv /man/2/draw-example +argv /man/2/ir +argv /man/2/itslib +argv /man/2/security-auth +argv /man/2/sh +argv /man/2/spree +argv /man/2/spree-gather +argv /man/2/styxservers-nametree +argv0 /man/10/acid +argxxx /man/1/mathcalc +arising /man/1/yacc +arising /man/9/1copyright +arithmetic /man/1/mc +arithmetic /man/1/sh-expr +arithmetic /man/10/2c +arithmetic /man/2/keyring-0intro +arithmetic /man/2/math-0intro +arithmetic /man/2/math-fp +arithmetic /man/8/prep +arity /man/2/ubfa +ark200pv /man/3/vga +ark200pvhwgc /man/3/vga +arm /man/10/2c +arm /man/10/5cv +arm /man/10/a.out +arm /man/10/acid +arm /man/2/alphabet-intro +arm /man/2/dis +armag /man/10/ar +armpit /man/10/plan9.ini +armstrong /man/2/ubfa +armstrong /man/6/ubfa +armstrong's /man/2/ubfa +armstrong's /man/6/ubfa +arp /man/3/ip +arrange /man/1/acme +arrange /man/2/dividers +arrange /man/2/styxpersist +arrange /man/2/wmsrv +arrange /man/5/0intro +arrange /man/9/bind +arrange /man/9/canvas +arrange /man/9/entry +arrange /man/9/menu +arranged /man/1/acme +arranged /man/10/kproc +arranged /man/2/dividers +arranged /man/9/grid +arranged /man/9/menu +arrangement /man/2/draw-image +arrangement /man/6/utf +arranges /man/1/alphabet-abc +arranges /man/1/alphabet-grid +arranges /man/1/tiny +arranges /man/2/spree +arranges /man/9/grid +arranges /man/9/pack +array /man/1/collab-clients +array /man/1/kill +array /man/1/miniterm +array /man/1/sh-string +array /man/1/tktester +array /man/10/2c +array /man/10/a.out +array /man/10/acid +array /man/10/c2l +array /man/10/dev +array /man/10/devattach +array /man/10/dynld +array /man/10/getfields +array /man/10/newchan +array /man/10/parsecmd +array /man/10/print +array /man/10/strcat +array /man/2/0intro +array /man/2/asn1 +array /man/2/bloomfilter +array /man/2/bufio +array /man/2/bufio-chanfill +array /man/2/convcs +array /man/2/crc +array /man/2/dbm +array /man/2/debug +array /man/2/devpointer +array /man/2/dhcpclient +array /man/2/dis +array /man/2/diskblocks +array /man/2/disks +array /man/2/draw-image +array /man/2/draw-screen +array /man/2/encoding +array /man/2/ether +array /man/2/factotum +array /man/2/filter +array /man/2/format +array /man/2/ida +array /man/2/imagefile +array /man/2/ip +array /man/2/keyring-0intro +array /man/2/keyring-auth +array /man/2/keyring-crypt +array /man/2/keyring-getmsg +array /man/2/keyring-getstring +array /man/2/keyring-ipint +array /man/2/keyring-rc4 +array /man/2/keyring-sha1 +array /man/2/math-export +array /man/2/math-linalg +array /man/2/palmfile +array /man/2/plumbmsg +array /man/2/popup +array /man/2/prof +array /man/2/readdir +array /man/2/regex +array /man/2/scsiio +array /man/2/secstore +array /man/2/security-random +array /man/2/security-ssl +array /man/2/sets +array /man/2/sexprs +array /man/2/spki +array /man/2/spree +array /man/2/spree-cardlib +array /man/2/spree-gather +array /man/2/stringinttab +array /man/2/styx +array /man/2/styxconv +array /man/2/styxservers +array /man/2/sys-byte2char +array /man/2/sys-dirread +array /man/2/sys-file2chan +array /man/2/sys-pipe +array /man/2/sys-read +array /man/2/sys-utfbytes +array /man/2/tabs +array /man/2/translate +array /man/2/ubfa +array /man/2/venti +array /man/2/wmsrv +array /man/3/arch +array /man/3/cap +array /man/3/dbg +array /man/3/kprof +array /man/3/prog +array /man/6/dis +array /man/6/image +array /man/6/keytext +array /man/6/plumbing +array /man/6/sbl +array /man/7/db +array /man/8/styxchat +array's /man/2/dis +arrays /man/1/charon +arrays /man/1/deb +arrays /man/1/limbo +arrays /man/10/c2l +arrays /man/10/memory +arrays /man/2/crc +arrays /man/2/dbm +arrays /man/2/dis +arrays /man/2/draw-image +arrays /man/2/encoding +arrays /man/2/hash +arrays /man/2/keyring-0intro +arrays /man/2/keyring-getmsg +arrays /man/2/keyring-getstring +arrays /man/2/math-export +arrays /man/2/math-linalg +arrays /man/2/palmfile +arrays /man/2/secstore +arrays /man/2/styx +arrays /man/2/sys-0intro +arrays /man/6/image +arrg /man/1/mathcalc +arrival /man/1/collab-clients +arrival /man/3/usb +arrive /man/1/sh-tk +arrive /man/2/timers +arrive /man/2/wmsrv +arrive /man/3/usb +arrive /man/8/collabsrv +arrived /man/10/rune +arrived /man/2/pop3 +arrived /man/8/collabsrv +arrives /man/1/sh-file2chan +arrives /man/10/qio +arrives /man/3/ip +arrives /man/3/pbus +arrives /man/3/plap +arrives /man/5/0intro +arrives /man/8/collabsrv +arrives /man/8/plumber +arriving /man/1/sh-tk +arriving /man/2/wmsrv +arriving /man/3/ip +arriving /man/3/pbus +arriving /man/5/flush +arrow /man/1/cprof +arrow /man/2/draw-image +arrow /man/2/prefab-compound +arrow /man/3/draw +arrow /man/9/canvas +arrow /man/9/scale +arrow /man/9/scrollbar +arrow1 /man/9/scrollbar +arrow2 /man/9/scrollbar +arrowhead /man/2/draw-image +arrowhead /man/9/canvas +arrowheads /man/2/draw-image +arrowheads /man/9/canvas +arrows /man/1/ebook +arrows /man/9/canvas +arrows /man/9/scrollbar +arrowshape /man/9/canvas +artifacts /man/6/colour +artist /man/1/collab-clients +artists /man/1/collab-clients +asc /man/2/scsiio +ascending /man/10/dynld +ascending /man/6/regexp +ascent /man/2/draw-font +ascent /man/3/draw +ascent /man/6/font +ascertain /man/1/diff +ascii /man/1/charon +ascii /man/1/dd +ascii /man/1/sh-string +ascii /man/1/strings +ascii /man/1/tr +ascii /man/1/uuencode +ascii /man/1/xd +ascii /man/10/print +ascii /man/2/convcs +ascii /man/2/draw-0intro +ascii /man/2/draw-font +ascii /man/2/sexprs +ascii /man/2/sys-0intro +ascii /man/6/keyboard +ascii /man/6/sexprs +ascii /man/6/utf +ascii /man/9/bind +ascom /man/2/keyring-crypt +ascq /man/2/scsiio +asdata /man/2/sexprs +aself /man/2/w3c-xpointers +aside /man/3/logfs +asin /man/1/mathcalc +asin /man/1/mc +asin /man/2/math-elem +asinh /man/1/mc +asinh /man/2/math-elem +ask /man/1/blur +ask /man/6/ndb +asking /man/2/registries +asking /man/2/sys-open +asks /man/1/tktester +asks /man/2/dhcpclient +asks /man/2/sys-file2chan +asks /man/5/open +asks /man/5/read +asks /man/5/remove +asm /man/1/asm +asm /man/1/limbo +asm /man/10/acid +asm /man/2/dis +asm /man/4/namespace +asm /man/6/dis +asn.1 /man/2/asn1 +asn1 /man/2/asn1 +asn1.b /man/2/asn1 +asn1.m /man/2/asn1 +aspects /man/1/bind +aspects /man/9/button +aspects /man/9/canvas +aspects /man/9/checkbutton +aspects /man/9/choicebutton +aspects /man/9/entry +aspects /man/9/frame +aspects /man/9/label +aspects /man/9/listbox +aspects /man/9/menu +aspects /man/9/menubutton +aspects /man/9/panel +aspects /man/9/radiobutton +aspects /man/9/scale +aspects /man/9/scrollbar +aspects /man/9/text +assemble /man/10/2a +assembled /man/2/spree-gather +assembler /man/1/asm +assembler /man/10/2a +assembler /man/10/2c +assembler's /man/10/2a +assemblers /man/10/2a +assembly /man/1/asm +assembly /man/1/limbo +assembly /man/10/2c +assembly /man/10/2l +assembly /man/10/conf +assembly /man/2/dis +assembly /man/4/palmsrv +assertion /man/2/0intro +assign /man/1/chmod +assign /man/1/mc +assign /man/2/dhcpclient +assign /man/2/palmfile +assign /man/3/ip +assign /man/3/plap +assign /man/3/pnp +assign /man/9/canvas +assigned /man/1/charon +assigned /man/1/mash +assigned /man/1/sh +assigned /man/1/sh-file2chan +assigned /man/1/sh-tk +assigned /man/1/yacc +assigned /man/10/styxserver +assigned /man/2/dhcpclient +assigned /man/2/palmfile +assigned /man/2/sys-0intro +assigned /man/2/sys-dial +assigned /man/2/sys-self +assigned /man/3/arch +assigned /man/3/dbg +assigned /man/3/ether +assigned /man/3/ip +assigned /man/3/pnp +assigned /man/9/canvas +assigning /man/2/bufio +assigning /man/2/draw-0intro +assigning /man/2/palmfile +assigning /man/2/sys-stat +assignment /man/1/env +assignment /man/1/mash +assignment /man/1/mc +assignment /man/1/mk +assignment /man/1/sh +assignment /man/1/sh-std +assignment /man/10/mk +assignment /man/2/dhcpclient +assignments /man/1/mc +assignments /man/1/mk +assignments /man/1/sh +assignments /man/10/acid +assignments /man/10/mk +assigns /man/1/sh +assigns /man/10/devattach +assigns /man/2/asn1 +assigns /man/2/draw-screen +assigns /man/2/palmfile +assigns /man/3/dbg +assigns /man/8/prep +assistance /man/2/styxservers +assists /man/2/styxservers +associate /man/1/mash +associate /man/1/yacc +associate /man/2/prefab-environ +associate /man/2/styxservers +associate /man/2/sys-stat +associate /man/3/draw +associate /man/3/ssl +associate /man/5/walk +associate /man/6/ubfa +associate /man/9/button +associate /man/9/canvas +associate /man/9/checkbutton +associate /man/9/choicebutton +associate /man/9/radiobutton +associate /man/9/text +associates /man/1/mash +associates /man/10/2c +associates /man/10/a.out +associates /man/2/bufio +associates /man/2/spree-cardlib +associates /man/2/ubfa +associates /man/6/attrdb +associates /man/6/ndb +associates /man/9/bind +associates /man/9/canvas +associates /man/9/grid +associates /man/9/text +associating /man/3/ip +associating /man/9/text +association /man/1/deb +association /man/1/stack +association /man/2/asn1 +association /man/2/dict +association /man/3/draw +association /man/3/i82365 +association /man/3/ip +association /man/9/cursor +association /man/9/text +associations /man/1/stack +associative /man/1/mc +assorted /man/10/devattach +asssumed /man/1/os +assume /man/1/alphabet-fs +assume /man/1/mk +assume /man/10/acid +assume /man/10/mk +assume /man/10/qlock +assume /man/2/0intro +assume /man/2/math-0intro +assume /man/2/math-fp +assume /man/2/math-linalg +assume /man/2/pop3 +assume /man/2/security-0intro +assume /man/4/dbfs +assume /man/4/namespace +assume /man/6/colour +assumed /man/1/acme +assumed /man/1/alphabet-abc +assumed /man/1/alphabet-grid +assumed /man/1/bind +assumed /man/1/brutus +assumed /man/1/collab-clients +assumed /man/1/cprof +assumed /man/1/du +assumed /man/1/look +assumed /man/1/mash +assumed /man/1/mdb +assumed /man/1/mprof +assumed /man/1/prof +assumed /man/1/rcmd +assumed /man/1/sendmail +assumed /man/1/sh-file2chan +assumed /man/1/sort +assumed /man/1/wc +assumed /man/10/a.out +assumed /man/10/devattach +assumed /man/10/qio +assumed /man/2/0intro +assumed /man/2/disks +assumed /man/2/filter-deflate +assumed /man/2/palmfile +assumed /man/2/sexprs +assumed /man/2/spree +assumed /man/2/spree-cardlib +assumed /man/2/styx +assumed /man/2/styxservers-nametree +assumed /man/3/boot +assumed /man/3/ds +assumed /man/3/gpio +assumed /man/3/ip +assumed /man/3/ssl +assumed /man/4/kfs +assumed /man/4/lockfs +assumed /man/6/attrdb +assumed /man/6/keytext +assumed /man/6/namespace +assumed /man/6/sbl +assumed /man/8/prep +assumed /man/9/canvas +assumes /man/1/cook +assumes /man/1/lc +assumes /man/1/listen +assumes /man/10/qlock +assumes /man/10/styx +assumes /man/2/ida +assumes /man/2/security-login +assumes /man/2/venti +assumes /man/3/vid +assumes /man/4/export +assumes /man/5/walk +assumes /man/8/mangaload +assuming /man/2/styxservers +assuming /man/3/flash +assuming /man/8/mkfs +assuming /man/9/types +assumption /man/1/disdep +assumption /man/1/mdb +assumption /man/10/2c +assumptions /man/10/iar +asterisk /man/1/sh-arg +asterisk /man/1/sh-std +asterisk /man/1/xd +asterisk /man/10/plan9.ini +asterisk /man/2/alphabet-intro +asterisk /man/2/filepat +asterisk /man/2/spree-allow +asterisk /man/4/acme +asterisk /man/4/spree +asterisk /man/6/keyboard +astext /man/2/sexprs +astronomical /man/1/units +async /man/10/plan9.ini +asynch /man/3/ip +asynchronous /man/1/stream +asynchronous /man/2/mpeg +asynchronous /man/3/ip +asynchronously /man/1/mash +asynchronously /man/1/sh +asynchronously /man/1/sh-std +asynchronously /man/2/draw-0intro +asynchronously /man/2/sh +ata /man/2/disks +ata /man/3/sd +atactlrwait /man/10/seconds +atan /man/1/mathcalc +atan /man/1/mc +atan /man/2/math-elem +atan2 /man/1/mathcalc +atan2 /man/1/mc +atan2 /man/2/math-elem +atanh /man/1/mc +atanh /man/2/math-elem +atapi /man/2/scsiio +atime /man/10/devattach +atime /man/2/readdir +atime /man/2/styxservers +atime /man/2/sys-stat +atime /man/5/stat +atime /man/8/styxchat +atm /man/1/units +atmark /man/2/xml +atmega128 /man/1/avr +atmel /man/1/avr +atodir /man/10/newchan +atoi /man/10/atoi +atol /man/10/atoi +atol.c /man/10/atoi +atom /man/2/sexprs +atom /man/2/ubfa +atom /man/6/ubfa +atomic /man/1/sh-alphabet +atomic /man/2/sys-iounit +atomic /man/2/sys-open +atomic /man/3/prog +atomic /man/5/open +atomically /man/10/ref +atomically /man/3/pipe +atomically /man/3/prog +atomically /man/5/read +atomicio /man/1/stream +atomicio /man/3/pipe +atomicio /man/4/dbfs +atomicity /man/2/sys-0intro +atomicity /man/3/pipe +atoms /man/2/sexprs +atoms /man/2/ubfa +atoms /man/6/ubfa +atop /man/1/sh-alphabet +ats /man/1/listen +att /man/10/a.out +attach /man/1/0intro +attach /man/1/alphabet-main +attach /man/1/bind +attach /man/1/deb +attach /man/1/listen +attach /man/1/wm-sh +attach /man/10/dev +attach /man/10/devattach +attach /man/10/plan9.ini +attach /man/10/styxserver +attach /man/2/draw-display +attach /man/2/registries +attach /man/2/styx +attach /man/2/styxservers +attach /man/2/sys-fauth +attach /man/3/0intro +attach /man/3/draw +attach /man/3/ds +attach /man/3/flash +attach /man/3/indir +attach /man/3/ip +attach /man/3/mnt +attach /man/3/pipe +attach /man/3/plap +attach /man/3/sd +attach /man/3/srv +attach /man/3/srv9 +attach /man/3/tinyfs +attach /man/3/vga +attach /man/5/0intro +attach /man/5/attach +attach /man/5/clunk +attach /man/5/stat +attach /man/6/users +attach /man/8/collabsrv +attached /man/1/0intro +attached /man/1/ebook +attached /man/10/acid +attached /man/10/plan9.ini +attached /man/2/draw-screen +attached /man/2/keyset +attached /man/2/registries +attached /man/2/sys-bind +attached /man/2/sys-pctl +attached /man/3/ip +attached /man/3/sd +attached /man/5/0intro +attached /man/8/fpgaload +attached /man/8/rip +attached /man/9/text +attaches /man/1/0intro +attaches /man/1/listen +attaches /man/1/logon +attaches /man/10/newchan +attaches /man/2/debug +attaches /man/3/indir +attaches /man/6/namespace +attaching /man/1/deb +attaching /man/2/styxservers +attaching /man/3/indir +attaching /man/8/init +attachment /man/1/0intro +attachment /man/2/sys-stat +attack /man/2/security-0intro +attack /man/6/login +attacking /man/2/security-0intro +attacks /man/2/security-0intro +attacks /man/6/login +attain /man/1/alphabet-main +attempt /man/1/charon +attempt /man/1/dmview +attempt /man/1/listen +attempt /man/1/miniterm +attempt /man/1/tiny +attempt /man/1/touch +attempt /man/1/wm +attempt /man/10/9load +attempt /man/10/c2l +attempt /man/10/devattach +attempt /man/10/lock +attempt /man/2/0intro +attempt /man/2/debug +attempt /man/2/dhcpclient +attempt /man/2/dict +attempt /man/2/plumbmsg +attempt /man/2/prefab-element +attempt /man/2/registries +attempt /man/2/scsiio +attempt /man/2/security-0intro +attempt /man/2/sh +attempt /man/2/styxservers-nametree +attempt /man/2/sys-bind +attempt /man/2/sys-dial +attempt /man/3/cmd +attempt /man/3/flash +attempt /man/3/ip +attempt /man/4/keyfs +attempt /man/5/open +attempt /man/5/stat +attempt /man/7/db +attempt /man/8/prep +attempted /man/2/styxservers +attempted /man/5/stat +attempting /man/10/lock +attempting /man/2/sys-0intro +attempting /man/8/prep +attempts /man/1/blur +attempts /man/1/cd +attempts /man/1/charon +attempts /man/1/collab-clients +attempts /man/1/deb +attempts /man/1/grid-ns +attempts /man/1/tiny +attempts /man/1/touch +attempts /man/10/9load +attempts /man/10/dev +attempts /man/10/lock +attempts /man/10/qio +attempts /man/2/dhcpclient +attempts /man/2/disks +attempts /man/2/keyring-auth +attempts /man/2/newns +attempts /man/2/registries +attempts /man/2/scsiio +attempts /man/2/security-0intro +attempts /man/2/styx +attempts /man/2/sys-0intro +attempts /man/2/sys-bind +attempts /man/2/tftp +attempts /man/2/timers +attempts /man/3/cmd +attempts /man/3/cons +attempts /man/3/fs +attempts /man/3/touch +attempts /man/5/0intro +attempts /man/5/stat +attempts /man/8/dhcp +attempts /man/8/rdbgsrv +attention /man/1/acme +attention /man/1/cprof +attention /man/1/mprof +attention /man/1/prof +attery /man/10/plan9.ini +attibutes /man/4/factotum +attr /man/1/mk +attr /man/10/mk +attr /man/2/attrdb +attr /man/2/cfg +attr /man/2/factotum +attr /man/2/palmfile +attr /man/2/plumbmsg +attr /man/2/registries +attr /man/3/i82365 +attr /man/3/sign +attr /man/4/factotum +attr /man/4/import +attr /man/4/registry +attr /man/4/spree +attr /man/6/plumbing +attr1 /man/8/cs +attr2 /man/8/cs +attr2string /man/2/plumbmsg +attrdb /man/2/attrdb +attrdb /man/2/registries +attrdb /man/4/registry +attrdb /man/6/attrdb +attrdb /man/6/ndb +attrdb /man/8/bootpd +attrdb.b /man/2/attrdb +attrdb.m /man/2/attrdb +attrib /man/2/w3c-css +attribute /man/1/ftest +attribute /man/1/grid-query +attribute /man/1/grid-register +attribute /man/1/mk +attribute /man/1/plumb +attribute /man/10/mk +attribute /man/10/plan9.ini +attribute /man/2/attrdb +attribute /man/2/cfg +attribute /man/2/convcs +attribute /man/2/plumbmsg +attribute /man/2/registries +attribute /man/2/spree +attribute /man/2/spree-cardlib +attribute /man/2/spree-objstore +attribute /man/2/styxpersist +attribute /man/2/sys-dial +attribute /man/2/xml +attribute /man/3/i82365 +attribute /man/4/factotum +attribute /man/4/registry +attribute /man/4/spree +attribute /man/6/attrdb +attribute /man/6/ndb +attribute /man/8/bootpd +attribute /man/8/cs +attribute /man/8/dns +attribute /man/8/prep +attributed /man/10/acid +attributed /man/2/styxservers +attributes /man/1/ftest +attributes /man/1/grid-query +attributes /man/1/grid-register +attributes /man/1/mk +attributes /man/1/session +attributes /man/1/wm-misc +attributes /man/10/5cv +attributes /man/10/dev +attributes /man/10/kproc +attributes /man/10/mk +attributes /man/10/ntsrv +attributes /man/2/attrdb +attributes /man/2/cfg +attributes /man/2/convcs +attributes /man/2/dhcpclient +attributes /man/2/factotum +attributes /man/2/ip +attributes /man/2/palmfile +attributes /man/2/plumbmsg +attributes /man/2/registries +attributes /man/2/spree +attributes /man/2/spree-allow +attributes /man/2/spree-cardlib +attributes /man/2/styxservers +attributes /man/2/sys-0intro +attributes /man/2/sys-stat +attributes /man/2/xml +attributes /man/3/audio +attributes /man/3/sign +attributes /man/4/factotum +attributes /man/4/registry +attributes /man/5/0intro +attributes /man/5/stat +attributes /man/6/attrdb +attributes /man/6/ndb +attributes /man/6/proto +attributes /man/8/bootpd +attributes /man/8/dns +attributes.new /man/2/registries +attrs /man/2/cfg +attrs /man/2/palmfile +attrs /man/2/plumbmsg +attrs /man/2/registries +attrs /man/2/xml +attrs2string /man/2/plumbmsg +atttributes /man/2/xml +au /man/1/units +au /man/2/security-auth +auctions /man/8/collabsrv +audience /man/1/collab-clients +audio /man/1/auplay +audio /man/1/mux +audio /man/10/kproc +audio /man/2/volume +audio /man/3/audio +audio /man/3/kprof +audio /man/3/mpeg +audio /man/3/tv +audio /man/6/audio +audio0 /man/10/plan9.ini +audioctl /man/1/auplay +audioctl /man/1/mux +audioctl /man/3/audio +audioctl /man/6/audio +audiox /man/10/plan9.ini +augmented /man/1/mk +augmented /man/1/yacc +augmented /man/10/mk +augments /man/9/canvas +augments /man/9/text +august /man/2/palmfile +auhdr /man/1/auplay +aui /man/10/plan9.ini +auip /man/3/ip +auplay /man/1/auplay +auplay /man/3/audio +auplay /man/6/audio +auplay.b /man/1/auplay +auppercentre /man/2/spree-cardlib +aupperleft /man/2/spree-cardlib +aupperright /man/2/spree-cardlib +ausers /man/3/cap +auth /man/1/alphabet-fs +auth /man/1/alphabet-main +auth /man/1/bind +auth /man/1/collab +auth /man/1/cpu +auth /man/1/crypt +auth /man/1/fs +auth /man/1/listen +auth /man/1/passwd +auth /man/1/rcmd +auth /man/1/secstore +auth /man/10/odbc +auth /man/10/plan9.ini +auth /man/2/factotum +auth /man/2/keyring-0intro +auth /man/2/keyring-auth +auth /man/2/keyring-getmsg +auth /man/2/keyset +auth /man/2/secstore +auth /man/2/security-0intro +auth /man/2/security-auth +auth /man/2/security-login +auth /man/2/security-ssl +auth /man/2/spki +auth /man/2/styx +auth /man/2/styxservers +auth /man/2/sys-export +auth /man/2/sys-fauth +auth /man/4/factotum +auth /man/4/keyfs +auth /man/4/keysrv +auth /man/4/lockfs +auth /man/4/registry +auth /man/5/0intro +auth /man/5/attach +auth /man/6/auth +auth /man/6/keys +auth /man/6/keytext +auth /man/6/ndb +auth /man/7/db +auth /man/7/dbsrv +auth /man/8/bootpd +auth /man/8/changelogin +auth /man/8/collabsrv +auth /man/8/createsignerkey +auth /man/8/logind +auth /man/8/rstyxd +auth /man/8/signer +auth /man/8/srv +auth /man/8/svc +auth.b /man/2/security-auth +auth.sh /man/8/svc +authenticate /man/1/bind +authenticate /man/1/listen +authenticate /man/1/netkey +authenticate /man/1/secstore +authenticate /man/10/odbc +authenticate /man/2/factotum +authenticate /man/2/keyring-0intro +authenticate /man/2/keyring-auth +authenticate /man/2/secstore +authenticate /man/2/styxpersist +authenticate /man/2/sys-fauth +authenticate /man/4/factotum +authenticate /man/4/import +authenticate /man/5/attach +authenticate /man/6/keys +authenticate /man/8/collabsrv +authenticate /man/8/getauthinfo +authenticate /man/8/rstyxd +authenticated /man/1/alphabet-main +authenticated /man/1/bind +authenticated /man/1/listen +authenticated /man/2/secstore +authenticated /man/2/security-0intro +authenticated /man/2/security-auth +authenticated /man/2/spree +authenticated /man/2/styxservers +authenticated /man/2/sys-export +authenticated /man/4/export +authenticated /man/4/import +authenticated /man/4/keysrv +authenticated /man/4/registry +authenticated /man/4/spree +authenticated /man/6/keytext +authenticated /man/7/dbsrv +authenticated /man/8/collabsrv +authenticated /man/8/getauthinfo +authenticated /man/8/register +authenticates /man/1/alphabet-main +authenticates /man/2/keyring-0intro +authenticates /man/2/secstore +authenticates /man/2/security-auth +authenticates /man/4/keysrv +authenticates /man/8/svc +authenticating /man/1/bind +authenticating /man/1/collab +authenticating /man/1/passwd +authenticating /man/2/factotum +authenticating /man/2/security-0intro +authenticating /man/4/factotum +authenticating /man/4/lockfs +authentication /man/1/bind +authentication /man/1/collab +authentication /man/1/cpu +authentication /man/1/listen +authentication /man/1/ls +authentication /man/1/netkey +authentication /man/1/passwd +authentication /man/1/rcmd +authentication /man/1/secstore +authentication /man/10/odbc +authentication /man/10/plan9.ini +authentication /man/10/styxserver +authentication /man/2/dhcpclient +authentication /man/2/factotum +authentication /man/2/keyring-0intro +authentication /man/2/keyring-auth +authentication /man/2/keyring-getmsg +authentication /man/2/keyset +authentication /man/2/registries +authentication /man/2/secstore +authentication /man/2/security-0intro +authentication /man/2/security-auth +authentication /man/2/spki-verifier +authentication /man/2/styx +authentication /man/2/styxpersist +authentication /man/2/styxservers +authentication /man/2/sys-bind +authentication /man/2/sys-fauth +authentication /man/2/sys-stat +authentication /man/3/cons +authentication /man/3/ip +authentication /man/3/mnt +authentication /man/3/srv9 +authentication /man/3/tls +authentication /man/4/factotum +authentication /man/4/import +authentication /man/4/keyfs +authentication /man/4/keysrv +authentication /man/4/lockfs +authentication /man/4/namespace +authentication /man/4/registry +authentication /man/5/0intro +authentication /man/5/attach +authentication /man/6/auth +authentication /man/6/keys +authentication /man/6/keytext +authentication /man/6/ndb +authentication /man/7/db +authentication /man/7/dbsrv +authentication /man/8/0intro +authentication /man/8/bootpd +authentication /man/8/createsignerkey +authentication /man/8/getauthinfo +authentication /man/8/kfscmd +authentication /man/8/logind +authentication /man/8/rstyxd +authentication /man/8/signer +authentication /man/8/svc +authentications /man/4/keyfs +authenticity /man/2/security-0intro +authinfo /man/2/factotum +authinfo /man/2/keyring-0intro +authinfo /man/2/keyring-auth +authinfo /man/2/security-auth +authinfo /man/2/security-login +authinfo /man/4/factotum +authinfo /man/6/keytext +author /man/1/charon +author /man/1/cook +authorisation /man/2/spki +authorisation /man/7/dbsrv +authorisation /man/8/rstyxd +authorised /man/2/spki +authorised /man/8/rstyxd +authoritative /man/6/ndb +authorities /man/2/keyring-0intro +authority /man/2/keyring-0intro +authority /man/2/keyring-auth +authority /man/2/keyring-certtostr +authority /man/2/security-0intro +authority /man/2/security-login +authority /man/2/spki +authority /man/2/tk +authority /man/6/auth +authority /man/6/dis +authority /man/6/keys +authority /man/6/login +authority /man/8/dns +authority /man/8/getauthinfo +authorized /man/9/1copyright +authors /man/1/charon +authors /man/10/0intro +authors /man/9/1copyright +authrpcmax /man/2/factotum +authsrv /man/2/sys-fauth +authsrv /man/4/factotum +auto /man/1/alphabet-main +auto /man/1/sh-alphabet +auto /man/10/9load +auto /man/10/odbc +auto /man/10ti925/epocimg +auto /man/9/canvas +auto /man/9/scale +auto /man/9/scrollbar +autoconvert /man/1/alphabet-abc +autoconvert /man/1/alphabet-fs +autoconvert /man/1/alphabet-grid +autoconvert /man/1/sh-alphabet +autodeclare /man/1/sh-alphabet +autodetected /man/10/plan9.ini +autoexec.bat /man/10/plan9.ini +automate /man/1/wm-sh +automate /man/2/styxservers +automatic /man/1/acme +automatic /man/1/fs +automatic /man/1/sh-alphabet +automatic /man/1/sh-file2chan +automatic /man/1/tkcmd +automatic /man/10/2c +automatic /man/10/a.out +automatic /man/10/inm +automatic /man/10/plan9.ini +automatic /man/2/draw-image +automatic /man/2/plumbmsg +automatic /man/2/spree-gather +automatic /man/3/ip +automatic /man/3/logfs +automatic /man/4/acme +automatic /man/5/stat +automatic /man/9/update +automatically /man/1/acme +automatically /man/1/cprof +automatically /man/1/fortune +automatically /man/1/grid-ns +automatically /man/1/mash +automatically /man/1/mk +automatically /man/1/mprof +automatically /man/1/mux +automatically /man/1/prof +automatically /man/1/session +automatically /man/1/sh +automatically /man/1/sh-alphabet +automatically /man/1/sh-file2chan +automatically /man/1/stack +automatically /man/1/tktester +automatically /man/1/webgrab +automatically /man/1/wm-misc +automatically /man/1/wm-sh +automatically /man/10/2l +automatically /man/10/9load +automatically /man/10/a.out +automatically /man/10/acid +automatically /man/10/ar +automatically /man/10/c2l +automatically /man/10/conf +automatically /man/10/mk +automatically /man/10/ntsrv +automatically /man/10/odbc +automatically /man/10/plan9.ini +automatically /man/10/styxserver +automatically /man/2/alphabet-intro +automatically /man/2/asn1 +automatically /man/2/dhcpclient +automatically /man/2/diskblocks +automatically /man/2/draw-0intro +automatically /man/2/srv +automatically /man/2/styxservers +automatically /man/2/sys-0intro +automatically /man/2/sys-export +automatically /man/2/volume +automatically /man/3/0intro +automatically /man/3/ds +automatically /man/3/fpga +automatically /man/3/fs +automatically /man/3/ip +automatically /man/3/logfs +automatically /man/3/snarf +automatically /man/3/srv9 +automatically /man/3/tls +automatically /man/3/usb +automatically /man/4/cpu +automatically /man/4/ftpfs +automatically /man/4/keysrv +automatically /man/4/logfile +automatically /man/5/version +automatically /man/6/image +automatically /man/6/ndb +automatically /man/8/prep +automatically /man/8/styxchat +automatically /man/9/button +automatically /man/9/canvas +automatically /man/9/checkbutton +automatically /man/9/entry +automatically /man/9/focus +automatically /man/9/grab +automatically /man/9/menu +automatically /man/9/menubutton +automatically /man/9/options +automatically /man/9/radiobutton +automatically /man/9/scale +automatically /man/9/scrollbar +automatically /man/9/text +automation /man/1/charon +autoprobing /man/10/plan9.ini +autosense /man/10/5cv +aux1 /man/3/audio +aux2 /man/3/audio +auxi /man/1/alphabet-fs +auxi /man/8/fpgaload +auxi /man/8/mangaload +auxi /man/8/rdbgsrv +auxi /man/8/rstyxd +auxiliary /man/10/conf +auxiliary /man/10/devattach +auxiliary /man/2/crc +auxiliary /man/2/w3c-css +auxilliary /man/1/wm +av /man/4/import +availability /man/1/wm-sh +avanstar /man/10/plan9.ini +avayalabs.com /man/4/factotum +average /man/3/touch +average /man/4/iostats +average /man/8/ping +average /man/9/entry +average /man/9/text +average /man/9/types +avogadro's /man/1/units +avoid /man/1/fc +avoid /man/1/sh-arg +avoid /man/1/sh-expr +avoid /man/1/unicode +avoid /man/10/dev +avoid /man/2/dbm +avoid /man/2/sh +avoid /man/2/sys-print +avoid /man/2/sys-read +avoid /man/3/logfs +avoid /man/4/kfs +avoid /man/5/stat +avoid /man/6/ndb +avoid /man/9/text +avoiding /man/4/ftpfs +avoids /man/1/sh-file2chan +avoids /man/10/iar +avoids /man/2/crc +avoids /man/6/colour +avr /man/1/avr +avrs /man/1/avr +await /man/1/sh-std +awaiting /man/10/sleep +awaiting /man/8/plumber +aware /man/1/charon +aware /man/1/sh-std +aware /man/10/qio +aware /man/2/spree +awk /man/1/mk +awk /man/10/mk +aximm /man/2/dis +axinf /man/2/dis +axinm /man/2/dis +axis /man/1/wm-misc +axis /man/2/draw-image +axis /man/2/w3c-xpointers +axisname /man/2/w3c-xpointers +axnon /man/2/dis +axorb /man/1/alphabet-fs +axorb /man/1/fs +axxx /man/2/dis +azerty /man/1/miniterm +b.b /man/1/mk +b.c /man/10/mk +b.hit /man/2/tk +b.root /man/6/ndb +b40f04 /man/1/stack +b419a4 /man/1/stack +b64text /man/2/sexprs +b64toip /man/2/keyring-ipint +backed /man/2/palmfile +backed /man/9/canvas +background /man/1/cprof +background /man/1/sh +background /man/1/tiny +background /man/1/tktester +background /man/2/draw-display +background /man/2/draw-image +background /man/2/draw-screen +background /man/2/prefab-style +background /man/2/sys-export +background /man/3/draw +background /man/4/export +background /man/8/dhcp +background /man/8/plumber +background /man/9/button +background /man/9/canvas +background /man/9/checkbutton +background /man/9/choicebutton +background /man/9/entry +background /man/9/frame +background /man/9/label +background /man/9/listbox +background /man/9/menu +background /man/9/menubutton +background /man/9/options +background /man/9/panel +background /man/9/radiobutton +background /man/9/scale +background /man/9/scrollbar +background /man/9/text +backgrounds /man/1/ebook +backgrounds /man/1/listen +backgrounds /man/2/prefab-0intro +backgrounds /man/9/text +backing /man/2/draw-screen +backing /man/3/draw +backing:int /man/2/draw-screen +backquote /man/1/sh +backquoted /man/1/mk +backquoted /man/10/mk +backslash /man/1/acme +backslash /man/1/mash +backslash /man/1/mdb +backslash /man/1/mk +backslash /man/1/sh-regex +backslash /man/1/wish +backslash /man/10/mk +backslash /man/6/sexprs +backslash /man/6/translate +backslash /man/9/0intro +backslash /man/9/bind +backslashes /man/1/acme +backslashes /man/3/cmd +backslashes /man/9/bind +backspace /man/1/wish +backspace /man/3/cons +backspace /man/6/keyboard +backspace /man/6/sexprs +backspace /man/9/entry +backspace /man/9/text +backspacing /man/1/acme +backup /man/2/palmfile +backward /man/1/acme +backward /man/1/diff +backward /man/6/image +backward /man/6/utf +backward /man/9/text +backwards /man/1/acme +backwards /man/1/brutus +backwards /man/1/charon +backwards /man/1/ebook +backwards /man/2/keyring-rc4 +backwards /man/9/text +bad /man/1/mathcalc +bad /man/1/sh +bad /man/1/sh-std +bad /man/1/sh-tk +bad /man/10/error +bad /man/10/styxserver +bad /man/2/format +bad /man/3/dbg +bad /man/3/logfs +bad /man/4/keyfs +bad /man/8/kfscmd +badel /man/2/spki-verifier +balancing /man/2/ida +balancing /man/9/0intro +band /man/2/keyring-0intro +bang /man/1/sh-tk +bank /man/3/flash +bank /man/8/ftl +banking /man/2/security-0intro +bar /man/1/acme +bar /man/1/charon +bar /man/1/collab-clients +bar /man/1/cprof +bar /man/1/deb +bar /man/1/keyboard +bar /man/1/mash-tk +bar /man/1/mk +bar /man/1/sh-alphabet +bar /man/1/tiny +bar /man/1/tktester +bar /man/1/wm-misc +bar /man/1/wm-sh +bar /man/10/mk +bar /man/2/ir +bar /man/2/tkclient +bar /man/2/wmclient +bar /man/4/acme +barb /man/2/draw-image +bare /man/1/ls +bare /man/10/2l +bars /man/1/wm-misc +bars /man/2/dividers +bars /man/2/palmfile +bars /man/9/menubutton +bartlett's /man/9/canvas +base /man/1/fc +base /man/1/mc +base /man/1/sh-expr +base /man/1/wm-misc +base /man/10/2l +base /man/10/a.out +base /man/10/allocb +base /man/10/atoi +base /man/10/dynld +base /man/10/plan9.ini +base /man/2/dbm +base /man/2/dis +base /man/2/disks +base /man/2/draw-screen +base /man/2/drawmux +base /man/2/encoding +base /man/2/keyring-0intro +base /man/2/keyring-ipint +base /man/2/math-elem +base /man/2/math-fp +base /man/2/palmfile +base /man/2/prefab-style +base /man/2/print +base /man/2/sexprs +base /man/2/string +base /man/2/sys-dial +base /man/3/flash +base /man/3/kprof +base /man/3/pnp +base /man/3/tls +base /man/6/attrdb +base /man/6/auth +base /man/6/dis +base /man/6/image +base /man/6/keytext +base /man/6/login +base /man/6/ndb +base /man/6/sexprs +base /man/7/db +base /man/7/dbsrv +base /man/8/create +base /man/9/text +base16 /man/2/encoding +base16path /man/2/encoding +base32 /man/2/encoding +base32a /man/2/encoding +base32apath /man/2/encoding +base32path /man/2/encoding +base64 /man/2/encoding +base64 /man/6/login +base64path /man/2/encoding +based /man/1/0intro +based /man/1/acme +based /man/1/charon +based /man/1/ftree +based /man/1/netkey +based /man/1/ns +based /man/1/sh-file2chan +based /man/1/uuencode +based /man/10/2c +based /man/10/5cv +based /man/10/plan9.ini +based /man/10/styxserver +based /man/10ti925/epocimg +based /man/10ti925/tihost +based /man/2/dividers +based /man/2/draw-font +based /man/2/format +based /man/2/keyring-auth +based /man/2/lock +based /man/2/newns +based /man/2/prefab-compound +based /man/2/readdir +based /man/2/styxconv +based /man/2/styxservers +based /man/2/tk +based /man/2/w3c-xpointers +based /man/2/wmclient +based /man/3/ip +based /man/3/tls +based /man/3/touch +based /man/4/dbfs +based /man/4/logfile +based /man/4/memfs +based /man/5/0intro +based /man/6/auth +based /man/6/ndb +based /man/6/utf +based /man/7/db +based /man/8/applylog +based /man/8/prep +based /man/8/register +based /man/8/rip +based /man/8/rstyxd +based /man/9/0intro +based /man/9/choicebutton +based /man/9/grid +baseline /man/2/draw-font +baseline /man/2/imagefile +baseline /man/6/font +baseline /man/9/text +basename /man/1/basename +basename /man/1/cleanname +basename /man/1/diff +basename /man/2/names +basename.b /man/1/basename +basic /man/1/alphabet-main +basic /man/1/auplay +basic /man/1/mux +basic /man/1/sh-alphabet +basic /man/10/xalloc +basic /man/2/0intro +basic /man/2/alphabet-intro +basic /man/2/asn1 +basic /man/2/dhcpclient +basic /man/2/dialog +basic /man/2/draw-0intro +basic /man/2/draw-display +basic /man/2/draw-example +basic /man/2/math-0intro +basic /man/2/math-elem +basic /man/2/math-linalg +basic /man/2/security-0intro +basic /man/2/sexprs +basic /man/2/spki-verifier +basic /man/2/spree +basic /man/2/sys-0intro +basic /man/2/wmlib +basic /man/3/i2c +basic /man/3/vid +basic /man/6/sbl +basic /man/6/ubfa +basis /man/2/convcs +basis /man/3/prof +basis /man/9/1copyright +bass /man/3/tv +batopa /man/1/alphabet-fs +batopa /man/1/fs +battery /man/10/plan9.ini +baud /man/10/9load +baud /man/10/plan9.ini +baud /man/3/dbg +baud /man/3/eia +baud /man/4/palmsrv +baud /man/8/mangaload +baud /man/8/rdbgsrv +baw /man/8/prep +bb /man/9/types +bbaabb /man/2/regex +bbbbbbbb.bbbbbbbb /man/6/utf +bbox /man/9/canvas +bbox /man/9/entry +bbox /man/9/grid +bbox /man/9/text +bc /man/1/sh-arg +bc /man/2/arg +bc /man/2/dhcpclient +bcfnprw /man/8/prep +bclk /man/3/fpga +bclk /man/8/fpgaload +bcmflnve123 /man/1/mprof +bd /man/9/options +bdata /man/10/2l +bdmpr /man/8/dhcp +beamed /man/2/palmfile +bear /man/2/disks +bears /man/2/asn1 +bebytestoip /man/2/keyring-ipint +becomes /man/1/bind +becomes /man/1/logwindow +becomes /man/1/sh +becomes /man/1/tktester +becomes /man/10/c2l +becomes /man/10/devattach +becomes /man/10/qio +becomes /man/10ti925/tihost +becomes /man/2/bufio-chanfill +becomes /man/2/sys-bind +becomes /man/3/srv +becomes /man/4/logfile +becomes /man/4/memfs +becomes /man/6/namespace +becomes /man/8/getauthinfo +becomes /man/9/canvas +becomes /man/9/menu +becomes /man/9/pack +becomes /man/9/radiobutton +becomes /man/9/text +becoming /man/2/spree +bed /man/10/plan9.ini +beforehand /man/2/styx +beforethis /man/9/canvas +beg /man/2/regex +beg:end /man/2/regex +begun /man/1/acme +behalf /man/2/spki-verifier +behalf /man/2/sys-file2chan +behalf /man/9/1copyright +behave /man/1/mc +behave /man/10/atoi +behave /man/2/draw-0intro +behave /man/2/filter +behave /man/2/math-elem +behave /man/2/styx +behave /man/4/acme +behave /man/9/entry +behave /man/9/grab +behave /man/9/text +behaved /man/2/tkclient +behaves /man/1/0intro +behaves /man/1/acme +behaves /man/1/cp +behaves /man/2/draw-image +behaves /man/2/prefab-compound +behaves /man/9/canvas +behaves /man/9/menu +behaves /man/9/text +behavior /man/10/iar +behavior /man/10/plan9.ini +behavior /man/2/draw-image +behavior /man/3/tls +behavior /man/5/open +behaviour /man/1/acme +behaviour /man/1/emu +behaviour /man/1/ftree +behaviour /man/1/sh +behaviour /man/1/sh-alphabet +behaviour /man/1/wm-sh +behaviour /man/1/yacc +behaviour /man/2/draw-image +behaviour /man/2/sets +behaviour /man/2/sh +behaviour /man/2/sys-read +behaviour /man/2/wmsrv +behaviour /man/8/create +behaviour /man/9/button +behaviour /man/9/canvas +behaviour /man/9/checkbutton +behaviour /man/9/choicebutton +behaviour /man/9/entry +behaviour /man/9/frame +behaviour /man/9/label +behaviour /man/9/listbox +behaviour /man/9/menu +behaviour /man/9/menubutton +behaviour /man/9/panel +behaviour /man/9/radiobutton +behaviour /man/9/scale +behaviour /man/9/scrollbar +behaviour /man/9/text +behaviours /man/9/canvas +behaviours /man/9/text +belgiumfranc /man/1/units +believes /man/1/acme +believes /man/1/blur +bell /man/10/0intro +belong /man/2/prefab-element +belonging /man/1/grid-register +belonging /man/10/conf +belonging /man/2/secstore +belongs /man/2/asn1 +belongs /man/2/security-0intro +belowthis /man/9/canvas +belowthis /man/9/text +beneath /man/1/ftree +beneath /man/2/tk +beneath /man/2/w3c-xpointers +benefit /man/1/deb +benefit /man/4/spree +ber /man/2/asn1 +besides /man/2/draw-0intro +besides /man/5/0intro +bessel /man/2/math-elem +beta /man/2/math-linalg +beware /man/1/cal +beware /man/1/cat +beware /man/2/sys-stat +beware /man/4/import +beyond /man/1/wm-sh +beyond /man/10/devattach +beyond /man/10/odbc +beyond /man/10/qio +beyond /man/2/ether +beyond /man/2/regex +beyond /man/2/styxservers +beyond /man/3/flash +beyond /man/9/canvas +beyond /man/9/entry +beyond /man/9/grid +beyond /man/9/text +bezier /man/2/draw-image +bezier /man/9/canvas +bezierop /man/2/draw-image +bezspline /man/2/draw-image +bezsplineop /man/2/draw-image +bfile /man/8/prep +bflag /man/1/sh-arg +bflag /man/2/arg +bflnve /man/1/prof +bg /man/2/draw-image +bg /man/9/options +bgid /man/3/draw +bgp /man/2/draw-image +bh /man/3/tv +bi /man/6/man +biased /man/2/geodesy +bidirectional /man/1/sh-std +bidirectional /man/5/0intro +bigger /man/2/spree-cardlib +bigger /man/2/tkclient +bigger /man/2/wmclient +bigger /man/3/i2c +bigger /man/4/kfs +bigger /man/9/0intro +bigincrement /man/9/scale +bigint /man/2/asn1 +bigrand /man/2/rand +bigs /man/2/dis +bigs /man/2/rand +bill /man/10/styxserver +billion /man/2/dbm +bin /man/1/acme +bin /man/1/grid-ns +bin /man/10/2c +bin /man/10/acid +bin /man/10/mk +bin /man/10/ntsrv +bin /man/10/plan9.ini +bin /man/3/cmd +bin /man/4/namespace +bin /man/7/dbsrv +bina /man/1/alphabet-fs +bina /man/1/fs +binaries /man/1/mash-make +binaries /man/4/namespace +binary /man/1/fc +binary /man/1/look +binary /man/1/mdb +binary /man/1/sh-file2chan +binary /man/1/sh-sexprs +binary /man/1/strings +binary /man/10/2l +binary /man/10/a.out +binary /man/10/ms2 +binary /man/10/print +binary /man/10ti925/epocimg +binary /man/10ti925/tihost +binary /man/2/dbm +binary /man/2/encoding +binary /man/2/factotum +binary /man/2/math-0intro +binary /man/2/math-export +binary /man/2/math-fp +binary /man/2/palmfile +binary /man/2/sexprs +binary /man/2/stringinttab +binary /man/2/ubfa +binary /man/2/w3c-xpointers +binary /man/3/cmd +binary /man/3/dbg +binary /man/3/draw +binary /man/3/fpga +binary /man/3/ip +binary /man/3/root +binary /man/3/tv +binary /man/3/usb +binary /man/4/factotum +binary /man/6/audio +binary /man/6/sexprs +binary /man/6/ubfa +binary /man/6/utf +binary /man/7/db +binary /man/8/collabsrv +binary /man/8/fpgaload +binary /man/8/httpd +binary /man/8/styxchat +bind /man/1/0intro +bind /man/1/acme +bind /man/1/bind +bind /man/1/collab-clients +bind /man/1/deb +bind /man/1/ns +bind /man/1/nsbuild +bind /man/1/os +bind /man/1/ps +bind /man/1/pwd +bind /man/1/stack +bind /man/1/tiny +bind /man/10/dev +bind /man/10/devattach +bind /man/10/odbc +bind /man/2/factotum +bind /man/2/keyset +bind /man/2/newns +bind /man/2/styxconv +bind /man/2/sys-0intro +bind /man/2/sys-bind +bind /man/2/sys-export +bind /man/2/sys-fauth +bind /man/2/sys-fd2path +bind /man/2/sys-file2chan +bind /man/2/sys-fversion +bind /man/2/sys-open +bind /man/2/sys-pipe +bind /man/3/0intro +bind /man/3/arch +bind /man/3/audio +bind /man/3/boot +bind /man/3/cap +bind /man/3/cmd +bind /man/3/cons +bind /man/3/dbg +bind /man/3/draw +bind /man/3/ds +bind /man/3/dup +bind /man/3/dynld +bind /man/3/eia +bind /man/3/env +bind /man/3/ether +bind /man/3/flash +bind /man/3/floppy +bind /man/3/fpga +bind /man/3/fs +bind /man/3/ftl +bind /man/3/gpio +bind /man/3/i2c +bind /man/3/i82365 +bind /man/3/indir +bind /man/3/ip +bind /man/3/kprof +bind /man/3/logfs +bind /man/3/lpt +bind /man/3/mnt +bind /man/3/mpeg +bind /man/3/pbus +bind /man/3/pipe +bind /man/3/plap +bind /man/3/pnp +bind /man/3/pointer +bind /man/3/prof +bind /man/3/prog +bind /man/3/root +bind /man/3/rtc +bind /man/3/sd +bind /man/3/sign +bind /man/3/snarf +bind /man/3/srv +bind /man/3/srv9 +bind /man/3/ssl +bind /man/3/switch +bind /man/3/tinyfs +bind /man/3/tls +bind /man/3/touch +bind /man/3/tv +bind /man/3/usb +bind /man/3/vga +bind /man/3/vid +bind /man/4/9srvfs +bind /man/4/archfs +bind /man/4/dbfs +bind /man/4/dossrv +bind /man/4/ftpfs +bind /man/4/import +bind /man/4/mntgen +bind /man/4/ramfile +bind /man/5/0intro +bind /man/5/attach +bind /man/5/open +bind /man/5/version +bind /man/5/walk +bind /man/6/attrdb +bind /man/6/namespace +bind /man/8/applylog +bind /man/8/collabsrv +bind /man/8/dhcp +bind /man/8/getauthinfo +bind /man/8/mkfs +bind /man/8/rdbgsrv +bind /man/9/0intro +bind /man/9/bind +bind /man/9/canvas +bind /man/9/destroy +bind /man/9/text +bind.b /man/1/bind +binding /man/1/bind +binding /man/1/deb +binding /man/2/spki +binding /man/2/sys-bind +binding /man/2/sys-file2chan +binding /man/2/translate +binding /man/6/attrdb +binding /man/6/translate +binding /man/8/init +binding /man/9/bind +binding /man/9/canvas +binding /man/9/text +bindings /man/1/tktester +bindings /man/2/tk +bindings /man/9/button +bindings /man/9/canvas +bindings /man/9/checkbutton +bindings /man/9/entry +bindings /man/9/frame +bindings /man/9/label +bindings /man/9/listbox +bindings /man/9/menu +bindings /man/9/menubutton +bindings /man/9/options +bindings /man/9/panel +bindings /man/9/radiobutton +bindings /man/9/scale +bindings /man/9/scrollbar +bindings /man/9/text +binds /man/1/acme +binds /man/1/collab +binds /man/2/prof +binds /man/3/0intro +binds /man/3/cmd +binds /man/3/snarf +binds /man/4/factotum +binds /man/8/rstyxd +bio /man/10/print +bios /man/10/9load +bios /man/10/plan9.ini +bios /man/2/disks +bios /man/3/pnp +bios /man/8/prep +bioses /man/10/9load +bioses /man/2/disks +bioses /man/8/prep +bioss /man/10/9load +bishop /man/6/keyboard +bit /man/1/charon +bit /man/1/emu +bit /man/1/fc +bit /man/1/ls +bit /man/1/mathcalc +bit /man/1/mux +bit /man/1/sh-expr +bit /man/1/sh-std +bit /man/1/sum +bit /man/1/tr +bit /man/10/2c +bit /man/10/9load +bit /man/10/a.out +bit /man/10/c2l +bit /man/10/devattach +bit /man/10/dmainit +bit /man/10/kbdputc +bit /man/10/malloc +bit /man/10/newchan +bit /man/10/plan9.ini +bit /man/10/readnum +bit /man/10/styx +bit /man/2/asn1 +bit /man/2/bloomfilter +bit /man/2/crc +bit /man/2/daytime +bit /man/2/dbm +bit /man/2/dis +bit /man/2/draw-0intro +bit /man/2/draw-display +bit /man/2/draw-image +bit /man/2/draw-pointer +bit /man/2/draw-screen +bit /man/2/keyring-0intro +bit /man/2/keyring-crypt +bit /man/2/math-export +bit /man/2/math-fp +bit /man/2/palmfile +bit /man/2/scsiio +bit /man/2/security-0intro +bit /man/2/sets +bit /man/2/sexprs +bit /man/2/string +bit /man/2/styxservers +bit /man/2/styxservers-nametree +bit /man/2/sys-open +bit /man/2/sys-seek +bit /man/2/sys-stat +bit /man/2/tk +bit /man/3/arch +bit /man/3/audio +bit /man/3/cons +bit /man/3/dbg +bit /man/3/draw +bit /man/3/flash +bit /man/3/fpga +bit /man/3/ftl +bit /man/3/gpio +bit /man/3/i2c +bit /man/3/pnp +bit /man/3/pointer +bit /man/3/prog +bit /man/3/srv +bit /man/3/ssl +bit /man/3/switch +bit /man/3/vga +bit /man/4/acme +bit /man/5/0intro +bit /man/5/open +bit /man/5/stat +bit /man/6/audio +bit /man/6/colour +bit /man/6/dis +bit /man/6/image +bit /man/6/keyboard +bit /man/6/keytext +bit /man/6/sexprs +bit /man/6/utf +bit /man/8/mangaload +bit /man/8/rdbgsrv +bit /man/8/register +bit /man/8/signer +bit /man/8/styxchat +bit /man/9/canvas +bit16sz /man/10/styx +bit32sz /man/10/styx +bit64sz /man/10/styx +bit8sz /man/10/styx +bitmap /man/1/mash-tk +bitmap /man/1/mux +bitmap /man/1/wm-misc +bitmap /man/2/convcs +bitmap /man/2/dis +bitmap /man/3/draw +bitmap /man/4/namespace +bitmap /man/9/button +bitmap /man/9/canvas +bitmap /man/9/checkbutton +bitmap /man/9/choicebutton +bitmap /man/9/cursor +bitmap /man/9/image +bitmap /man/9/label +bitmap /man/9/menu +bitmap /man/9/menubutton +bitmap /man/9/options +bitmap /man/9/radiobutton +bitmap /man/9/types +bitmaps /man/9/canvas +bitmask /man/1/sh-std +bitmask /man/2/sh +bitmask /man/2/spree-cardlib +bitmask /man/2/tk +bitmask /man/8/register +bits /man/1/auplay +bits /man/1/chmod +bits /man/10/ar +bits /man/10/devattach +bits /man/2/asn1 +bits /man/2/bloomfilter +bits /man/2/convcs +bits /man/2/dis +bits /man/2/disks +bits /man/2/draw-0intro +bits /man/2/draw-display +bits /man/2/draw-image +bits /man/2/draw-pointer +bits /man/2/drawmux +bits /man/2/encoding +bits /man/2/ip +bits /man/2/keyring-crypt +bits /man/2/keyring-gensk +bits /man/2/keyring-ipint +bits /man/2/math-0intro +bits /man/2/math-fp +bits /man/2/palmfile +bits /man/2/sets +bits /man/2/sh +bits /man/2/sys-open +bits /man/2/sys-stat +bits /man/3/audio +bits /man/3/cons +bits /man/3/dbg +bits /man/3/draw +bits /man/3/eia +bits /man/3/fpga +bits /man/3/ftl +bits /man/3/gpio +bits /man/3/pnp +bits /man/3/switch +bits /man/3/vga +bits /man/5/0intro +bits /man/5/open +bits /man/5/stat +bits /man/6/audio +bits /man/6/colour +bits /man/6/dis +bits /man/6/image +bits /man/6/sbl +bits /man/6/utf +bits /man/8/createsignerkey +bits /man/8/mangaload +bits /man/8/styxchat +bitsize /man/8/createsignerkey +bitstring /man/2/asn1 +bitwise /man/1/fc +bitwise /man/1/mdb +bitwise /man/1/sh-expr +bitwise /man/2/sets +bitwise /man/2/tkclient +bitwise /man/2/wmclient +bitwise /man/4/acme +bl /man/3/tv +black /man/1/acme +black /man/1/wm-misc +black /man/2/draw-display +black /man/2/draw-example +black /man/2/draw-image +black /man/2/print +black /man/3/vga +black /man/6/colour +black /man/6/image +black /man/9/canvas +black /man/9/options +black /man/9/types +blackdepth /man/2/print +blackresmult /man/2/print +blanc /man/10/odbc +blank /man/1/acme +blank /man/1/mash +blank /man/1/mk +blank /man/1/sh +blank /man/1/strings +blank /man/1/tiny +blank /man/1/xd +blank /man/10/ar +blank /man/10/conf +blank /man/10/mk +blank /man/10/parsecmd +blank /man/10/readnum +blank /man/2/string +blank /man/3/cons +blank /man/3/draw +blank /man/3/pointer +blank /man/3/vga +blank /man/4/acme +blank /man/4/dbfs +blank /man/4/registry +blank /man/6/font +blank /man/6/image +blank /man/6/plumbing +blank /man/6/sexprs +blank /man/6/ubfa +blank /man/8/prep +blank /man/9/grid +blanking /man/10/plan9.ini +blanking /man/3/vga +blanks /man/1/dd +blanks /man/1/diff +blanks /man/1/echo +blanks /man/1/look +blanks /man/1/mash +blanks /man/1/mk +blanks /man/1/sh +blanks /man/1/wc +blanks /man/10/inm +blanks /man/10/mk +blanks /man/10/print +blanks /man/2/sys-print +blanks /man/3/cons +blanks /man/3/vga +blanks /man/6/man +blanks /man/6/sexprs +blanks /man/9/0intro +blanktime /man/3/vga +blas /man/2/math-0intro +blas /man/2/math-linalg +blas2 /man/2/math-linalg +blas3 /man/2/math-linalg +blaster /man/10/plan9.ini +blatant /man/9/canvas +blen /man/10/allocb +blending /man/3/draw +blinded /man/2/keyring-0intro +blinded /man/2/security-0intro +blinded /man/8/register +blinded /man/8/signer +blinding /man/2/keyring-0intro +blinding /man/8/signer +blinds /man/8/signer +block /man/1/blur +block /man/1/charon +block /man/1/crypt +block /man/1/dd +block /man/1/fs +block /man/1/sh +block /man/1/sh-alphabet +block /man/1/sh-file2chan +block /man/1/sh-std +block /man/1/sh-tk +block /man/1/tee +block /man/1/wm-sh +block /man/1/zeros +block /man/10/9load +block /man/10/acid +block /man/10/allocb +block /man/10/dev +block /man/10/devattach +block /man/10/error +block /man/10/malloc +block /man/10/odbc +block /man/10/plan9.ini +block /man/10/qio +block /man/10/xalloc +block /man/2/dbm +block /man/2/diskblocks +block /man/2/disks +block /man/2/draw-image +block /man/2/filter-slip +block /man/2/ida +block /man/2/keyring-crypt +block /man/2/lock +block /man/2/security-0intro +block /man/2/sh +block /man/2/venti +block /man/2/wmsrv +block /man/3/ds +block /man/3/eia +block /man/3/flash +block /man/3/ftl +block /man/3/ip +block /man/3/logfs +block /man/3/mpeg +block /man/3/pbus +block /man/3/pipe +block /man/3/plap +block /man/3/prog +block /man/3/ssl +block /man/3/tinyfs +block /man/4/ftpfs +block /man/4/kfs +block /man/4/logfile +block /man/4/spree +block /man/6/image +block /man/8/kfscmd +block /man/8/mkfs +block /man/8/prep +block's /man/10/qio +block.0.a /man/1/blur +block.1.a /man/1/blur +block.b /man/1/blur +blocked /man/1/deb +blocked /man/10/qlock +blocked /man/2/command +blocked /man/2/styxpersist +blocked /man/3/prog +blocked /man/3/srv +blocked /man/4/logfile +blocked /man/4/spree +blocking /man/1/sh-file2chan +blocking /man/1/sh-tk +blocking /man/10/lock +blocking /man/10/qio +blocking /man/10/qlock +blocking /man/2/sys-stat +blocking /man/3/eia +blocking /man/3/ip +blocking /man/4/logfile +blocking /man/9/send +blocklen /man/10/allocb +blocks /man/1/blur +blocks /man/1/cat +blocks /man/1/cp +blocks /man/1/dd +blocks /man/1/sh +blocks /man/1/sh-file2chan +blocks /man/1/tail +blocks /man/1/wm-misc +blocks /man/1/zeros +blocks /man/10/acid +blocks /man/10/allocb +blocks /man/10/dev +blocks /man/10/plan9.ini +blocks /man/10/qio +blocks /man/10/sleep +blocks /man/2/crc +blocks /man/2/dbm +blocks /man/2/diskblocks +blocks /man/2/draw-0intro +blocks /man/2/keyring-crypt +blocks /man/2/keyring-sha1 +blocks /man/2/prefab-element +blocks /man/2/sys-export +blocks /man/2/sys-file2chan +blocks /man/2/tftp +blocks /man/2/venti +blocks /man/3/cmd +blocks /man/3/cons +blocks /man/3/ftl +blocks /man/3/logfs +blocks /man/3/pipe +blocks /man/3/pointer +blocks /man/4/kfs +blocks /man/4/lockfs +blocks /man/4/memfs +blocks /man/6/image +blocks /man/8/kfscmd +blocks /man/8/prep +blocksize /man/1/du +blocksize /man/1/wm-misc +blocksize /man/1/zeros +bloggs /man/4/ftpfs +blood /man/1/charon +bloom /man/2/bloomfilter +bloomfilter /man/2/bloomfilter +bloomfilter.b /man/2/bloomfilter +bloomfilter.m /man/2/bloomfilter +blt /man/9/grid +blue /man/1/wm-sh +blue /man/2/draw-0intro +blue /man/2/draw-display +blue /man/2/draw-example +blue /man/2/draw-image +blue /man/3/draw +blue /man/3/tv +blue /man/6/colour +blue /man/6/image +blue /man/9/types +bluegreen /man/2/draw-display +blunders /man/10/lock +blur /man/1/blur +blur.b /man/1/blur +blurs /man/1/blur +bmpstring /man/2/asn1 +bnf /man/2/w3c-css +bnf /man/6/sexprs +board's /man/3/switch +boards /man/10/plan9.ini +bob /man/1/mk +bob /man/10/mk +bob /man/2/sexprs +boffin /man/3/mpeg +bol /man/2/regex +bold /man/1/brutus +bold /man/1/cook +bold /man/6/man +book /man/1/ebook +book /man/2/keyring-crypt +book /man/2/palmfile +book /man/2/security-0intro +book /man/2/tabs +book /man/3/ssl +bookmark /man/1/charon +books /man/2/palmfile +bool /man/2/asn1 +boolean /man/1/sh-expr +boolean /man/2/asn1 +boolean /man/2/draw-0intro +boolean /man/2/draw-image +boolean /man/2/prof +boolean /man/2/sets +boolean /man/9/canvas +boolean /man/9/checkbutton +boolean /man/9/grid +boolean /man/9/options +boolean /man/9/pack +boolean /man/9/radiobutton +boolean /man/9/scale +boolean /man/9/text +boolean /man/9/types +booleans /man/1/limbo +boost /man/10/lock +boot /man/1/sh +boot /man/10/2l +boot /man/10/5cv +boot /man/10/9load +boot /man/10/plan9.ini +boot /man/10/seconds +boot /man/2/disks +boot /man/2/tftp +boot /man/3/boot +boot /man/3/cons +boot /man/3/dbg +boot /man/3/ds +boot /man/3/logfs +boot /man/3/pnp +boot /man/3/srv9 +boot /man/8/bootpd +boot /man/8/prep +boot /man/8/rdbgsrv +bootable /man/10/conf +bootable /man/2/disks +bootable /man/8/prep +bootblock /man/8/prep +bootconf /man/2/dhcpclient +bootconf.bootf /man/2/dhcpclient +bootconf.bootip /man/2/dhcpclient +bootconf.dom /man/2/dhcpclient +bootconf.ipgw /man/2/dhcpclient +bootconf.ipmask /man/2/dhcpclient +bootconf.lease /man/2/dhcpclient +bootconf.sys /man/2/dhcpclient +booted /man/10/9load +booted /man/3/srv9 +bootf /man/2/dhcpclient +bootf /man/6/ndb +bootf /man/8/bootpd +bootfile /man/10/9load +bootfile /man/10/plan9.ini +booting /man/10/9load +booting /man/10/plan9.ini +booting /man/2/tftp +booting /man/3/fpga +booting /man/6/ndb +booting /man/8/bootpd +booting /man/8/kfscmd +booting /man/8/prep +bootip /man/2/dhcpclient +bootp /man/10/9load +bootp /man/2/dhcpclient +bootp /man/3/ip +bootp /man/8/bootpd +bootp /man/8/dhcp +bootp /man/8/init +bootp /man/8/rip +bootp /man/8/srv +bootpd /man/2/dhcpclient +bootpd /man/2/ether +bootpd /man/2/tftp +bootpd /man/6/ndb +bootpd /man/8/bootpd +bootpd /man/8/mangaload +bootpd.b /man/8/bootpd +boots /man/2/sys-chdir +boots /man/2/workdir +boots /man/3/ds +boots /man/5/attach +boots /man/8/bootpd +bootsize /man/3/logfs +bootstrap /man/10/0intro +bootstrap /man/10/5cv +bootstrap /man/10/9load +bootstrap /man/10/plan9.ini +bootstrap /man/3/flash +bootstrap /man/3/ip +bootstrap /man/3/root +bootstrap /man/6/ndb +bootstrap /man/8/dns +bootstrap /man/8/mangaload +bootstrap /man/8/prep +bootstrapping /man/4/export +border /man/2/draw-0intro +border /man/2/draw-image +border /man/2/prefab-compound +border /man/2/prefab-element +border /man/2/tk +border /man/2/wmclient +border /man/9/frame +border /man/9/grid +border /man/9/options +border /man/9/text +borderop /man/2/draw-image +borders /man/1/ebook +borders /man/2/prefab-style +borders /man/9/scrollbar +borderwidth /man/2/tk +borderwidth /man/2/translate +borderwidth /man/9/button +borderwidth /man/9/canvas +borderwidth /man/9/checkbutton +borderwidth /man/9/choicebutton +borderwidth /man/9/entry +borderwidth /man/9/frame +borderwidth /man/9/label +borderwidth /man/9/listbox +borderwidth /man/9/menu +borderwidth /man/9/menubutton +borderwidth /man/9/options +borderwidth /man/9/panel +borderwidth /man/9/radiobutton +borderwidth /man/9/scale +borderwidth /man/9/scrollbar +borderwidth /man/9/text +bottom /man/1/acme +bottom /man/1/charon +bottom /man/1/collab-clients +bottom /man/1/miniterm +bottom /man/1/mux +bottom /man/1/session +bottom /man/1/tktester +bottom /man/1/wm +bottom /man/1/wm-misc +bottom /man/2/draw-display +bottom /man/2/draw-image +bottom /man/2/prefab-compound +bottom /man/2/prefab-element +bottom /man/2/wmsrv +bottom /man/3/cons +bottom /man/3/draw +bottom /man/3/tv +bottom /man/6/dis +bottom /man/6/font +bottom /man/6/image +bottom /man/9/canvas +bottom /man/9/grid +bottom /man/9/menu +bottom /man/9/pack +bottom /man/9/scale +bottom /man/9/scrollbar +bottom /man/9/see +bottom /man/9/text +bottommost /man/9/canvas +bottommost /man/9/menu +bound /man/1/acme +bound /man/1/bind +bound /man/1/cpu +bound /man/1/deb +bound /man/1/logwindow +bound /man/1/netstat +bound /man/1/os +bound /man/1/ps +bound /man/1/tiny +bound /man/10/plan9.ini +bound /man/2/ip +bound /man/2/sys-0intro +bound /man/2/sys-bind +bound /man/2/sys-file2chan +bound /man/3/0intro +bound /man/3/cmd +bound /man/3/env +bound /man/3/fs +bound /man/3/ip +bound /man/3/srv +bound /man/3/srv9 +bound /man/4/9srvfs +bound /man/4/acme +bound /man/6/namespace +bound /man/8/dhcp +bound /man/8/getauthinfo +bound /man/9/bind +bound /man/9/canvas +bound /man/9/entry +boundaries /man/1/acme +boundaries /man/1/brutus +boundaries /man/2/disks +boundaries /man/2/keyring-getmsg +boundaries /man/2/sexprs +boundaries /man/3/ether +boundaries /man/3/ftl +boundaries /man/3/ip +boundaries /man/3/pipe +boundaries /man/3/tls +boundaries /man/9/bind +boundaries /man/9/text +boundary /man/10/allocb +boundary /man/10/ar +boundary /man/10/dmainit +boundary /man/10/malloc +boundary /man/10/readnum +boundary /man/10/xalloc +boundary /man/3/flash +boundary /man/3/ftl +boundary /man/3/pbus +boundary /man/3/vga +boundary /man/9/canvas +bounded /man/1/brutus +bounded /man/1/ebook +bounded /man/1/wm-sh +bounded /man/10/memory +bounded /man/9/canvas +bounding /man/1/wm +bounding /man/2/tk +bounding /man/9/canvas +bounding /man/9/entry +bounding /man/9/grid +bounds /man/1/charon +bounds /man/1/kill +bounds /man/1/sh-string +bounds /man/10/allocb +bounds /man/2/0intro +bounds /man/2/sys-byte2char +bounds /man/2/sys-utfbytes +bounds /man/6/regexp +bouta /man/1/alphabet-fs +bouta /man/1/fs +bovera /man/1/alphabet-fs +bovera /man/1/fs +box /man/1/acme +box /man/1/mash-tk +box /man/1/session +box /man/1/tktester +box /man/1/wm +box /man/1/wm-misc +box /man/2/dialog +box /man/2/keyring-0intro +box /man/2/pop3 +box /man/2/popup +box /man/2/prefab-compound +box /man/2/security-0intro +box /man/8/manufacture +box /man/8/register +box /man/8/signer +box /man/9/canvas +box /man/9/entry +box /man/9/grid +box /man/9/menu +boxed /man/2/sys-byte2char +boxes /man/1/wm-misc +boxes /man/2/dialog +boxes /man/2/popup +boxes /man/2/prefab-compound +boxes /man/2/security-0intro +boxes /man/9/canvas +bp /man/10/devattach +bp /man/3/draw +bpdel /man/10/acid +bph /man/10/allocb +bpset /man/10/acid +bpt /man/3/prog +bptab /man/10/acid +bquote /man/1/mk +bquote /man/1/sh +bquote /man/10/mk +br /man/1/fs +br /man/6/man +brace /man/1/acme +brace /man/1/bind +brace /man/1/brutus +brace /man/1/sh +brace /man/1/wm-sh +brace /man/9/0intro +braced /man/1/fs +braced /man/1/sh +braced /man/1/sh-std +braced /man/10/odbc +braced /man/2/sh +braces /man/1/acme +braces /man/1/brutus +braces /man/1/mash +braces /man/1/mc +braces /man/1/sh +braces /man/1/sh-std +braces /man/2/sexprs +braces /man/2/tk +braces /man/4/9srvfs +braces /man/6/sexprs +braces /man/9/0intro +braces /man/9/bind +bracket /man/1/acme +bracket /man/1/wm-sh +bracket /man/1/yacc +bracket /man/9/0intro +bracketed /man/1/brutus +bracketed /man/6/regexp +bracketed /man/6/sexprs +brackets /man/1/acme +brackets /man/1/math-misc +brackets /man/1/mc +brackets /man/1/sh +brackets /man/1/sh-alphabet +brackets /man/1/sh-std +brackets /man/1/yacc +brackets /man/10/2c +brackets /man/3/draw +brackets /man/5/0intro +brackets /man/9/0intro +branch /man/2/asn1 +brd /man/3/touch +bread /man/10/dev +break /man/1/0intro +break /man/1/deb +break /man/1/mc +break /man/1/mk +break /man/1/sh-csv +break /man/1/sh-regex +break /man/1/sh-sexprs +break /man/1/sh-std +break /man/1/yacc +break /man/10/getfields +break /man/10/mk +break /man/10/parsecmd +break /man/2/debug +break /man/2/ir +break /man/2/security-0intro +break /man/3/eia +break /man/4/lockfs +break /man/5/stat +break /man/6/man +break /man/9/canvas +break /man/9/text +break.c /man/3/dbg +breaking /man/2/prefab-element +breaking /man/2/sys-iounit +breaking /man/5/open +breakmsg /man/2/spree +breakpoint /man/1/deb +breakpoint /man/10/acid +breakpoint /man/2/debug +breakpoint /man/3/dbg +breakpoint /man/3/prog +breakpoints /man/1/deb +breakpoints /man/10/acid +breakpoints /man/2/debug +breaks /man/1/deb +breaks /man/10/getfields +breaks /man/2/ida +breaks /man/2/math-fp +breaks /man/2/prefab-element +breaks /man/2/sys-tokenize +breaks /man/9/canvas +brethren /man/10/styx +brgallon /man/1/units +bridging /man/10/plan9.ini +brief /man/2/asn1 +briefly /man/2/ip +briefly /man/2/w3c-xpointers +bright /man/3/fpga +bright /man/8/fpgaload +brightness /man/3/tv +bring /man/1/diff +bring /man/1/session +bring /man/1/tktester +bring /man/1/wm +bring /man/2/scsiio +bring /man/2/tkclient +bring /man/2/wmclient +bring /man/8/prep +bring /man/9/listbox +brings /man/1/deb +brings /man/1/grid-query +britain /man/2/geodesy +britainpound /man/1/units +british /man/1/units +broad /man/1/0intro +broadcast /man/2/ip +broadcast /man/2/virgil +broadcast /man/3/ether +broadcast /man/3/ip +broadcast /man/8/rip +broadcasts /man/8/bootpd +broadcasts /man/8/dhcp +broadcasts /man/8/rip +broadly /man/3/audio +broke /man/1/kill +broke.b /man/1/kill +broken /man/1/deb +broken /man/1/emu +broken /man/1/kill +broken /man/2/draw-image +broken /man/2/keyring-sha1 +broken /man/2/sh +broken /man/2/sys-iounit +broken /man/3/cons +broken /man/3/dbg +broken /man/3/mnt +broken /man/3/prog +broken /man/9/canvas +broken /man/9/text +browse /man/1/grid-query +browse /man/2/selectfile +browse /man/9/listbox +browse.b /man/1/grid-query +browse.b /man/1/session +browsed /man/1/charon +browser /man/1/charon +browser /man/1/ebook +browser /man/1/filename +browser /man/1/ftree +browser /man/1/mux +browser /man/1/wm-misc +browser /man/2/selectfile +browsers /man/1/charon +browsing /man/1/deb +browsing /man/1/wm-misc +bruce /man/2/security-0intro +bruce /man/3/indir +brush /man/1/collab-clients +brush /man/2/draw-example +brush.fillellipse /man/2/draw-example +brute /man/6/login +brutus /man/1/brutus +brutus /man/1/cook +brutus /man/6/keyboard +brutus /man/6/plumbing +brutus.b /man/1/brutus +brutus.dis /man/6/plumbing +bs /man/1/dd +bsd /man/3/ip +bsize /man/2/keyring-crypt +bsize /man/4/kfs +bsrc /man/10/acid +bss /man/10/2l +bss /man/10/a.out +bss /man/10/dynld +bss /man/10/inm +bss /man/10ti925/tihost +bsssize /man/10/ksize +bst /man/2/daytime +bt /man/10/plan9.ini +bt485hwgc /man/3/vga +btime /man/2/palmfile +btos /man/2/convcs +btos.b /man/2/convcs +btos.dis /man/2/convcs +bucket /man/3/kprof +buckets /man/3/kprof +buf /man/1/stack +buf /man/10/dev +buf /man/10/dynld +buf /man/10/parsecmd +buf /man/10/print +buf /man/10/qio +buf /man/10/readnum +buf /man/10/styx +buf /man/10/styxserver +buf /man/2/crc +buf /man/2/devpointer +buf /man/2/disks +buf /man/2/filter +buf /man/2/keyring-crypt +buf /man/2/keyring-getmsg +buf /man/2/keyring-ipint +buf /man/2/keyring-rc4 +buf /man/2/keyring-sha1 +buf /man/2/sys-byte2char +buf /man/2/sys-read +buf /man/2/sys-utfbytes +buf /man/2/tkclient +buf /man/2/venti +buf /man/2/wmclient +buf /man/2/wmlib +buf /man/3/draw +buffer /man/1/acme +buffer /man/1/brutus +buffer /man/1/dd +buffer /man/1/logwindow +buffer /man/1/mash-tk +buffer /man/1/wm-misc +buffer /man/1/wm-sh +buffer /man/1/xd +buffer /man/10/allocb +buffer /man/10/dev +buffer /man/10/devattach +buffer /man/10/dmainit +buffer /man/10/parsecmd +buffer /man/10/readnum +buffer /man/10/styx +buffer /man/10/styxserver +buffer /man/2/bufio +buffer /man/2/bufio-chanfill +buffer /man/2/draw-context +buffer /man/2/draw-image +buffer /man/2/filter +buffer /man/2/keyring-crypt +buffer /man/2/styx +buffer /man/2/sys-byte2char +buffer /man/2/sys-fversion +buffer /man/2/sys-read +buffer /man/2/tkclient +buffer /man/2/wmclient +buffer /man/2/wmlib +buffer /man/2/wmsrv +buffer /man/3/cons +buffer /man/3/draw +buffer /man/3/flash +buffer /man/3/ip +buffer /man/3/pipe +buffer /man/3/snarf +buffer /man/3/ssl +buffer /man/3/tls +buffer /man/3/vid +buffer /man/4/logfile +buffer /man/4/spree +buffer /man/8/rdbgsrv +buffer /man/9/canvas +buffer's /man/3/snarf +buffered /man/1/cat +buffered /man/1/math-misc +buffered /man/10/print +buffered /man/2/bufio +buffered /man/2/bufio-chanfill +buffered /man/2/dhcpclient +buffered /man/2/sexprs +buffered /man/2/sys-pipe +buffered /man/3/cons +buffered /man/3/logfs +buffered /man/3/pipe +buffered /man/9/canvas +buffered /man/9/send +buffering /man/10/allocb +buffering /man/10/qio +buffering /man/10/readnum +buffering /man/2/sys-pipe +buffering /man/3/logfs +buffering /man/9/canvas +buffers /man/1/stream +buffers /man/10/styx +buffers /man/10/xalloc +buffers /man/2/bufio +buffers /man/2/draw-image +buffers /man/2/wmsrv +buffers /man/3/mpeg +buffers /man/3/ssl +buffers /man/6/colour +bufio /man/1/yacc +bufio /man/2/attrdb +bufio /man/2/bufio +bufio /man/2/bufio-chanfill +bufio /man/2/format +bufio /man/2/imagefile +bufio /man/2/pslib +bufio /man/2/sexprs +bufio /man/2/spki +bufio /man/2/sys-read +bufio /man/2/sys-seek +bufio /man/2/sys-self +bufio /man/2/ubfa +bufio.b /man/2/bufio +bufio.m /man/1/yacc +bufio.m /man/2/attrdb +bufio.m /man/2/bufio +bufio.m /man/2/bufio-chanfill +bufio.m /man/2/format +bufio.m /man/2/palmfile +bufio.m /man/2/sexprs +bufio.m /man/2/spki +bufio.m /man/2/spki-verifier +bufiofill /man/2/bufio +bufiofill /man/2/bufio-chanfill +bufiofill /man/2/sys-self +bufsiz /man/2/sys-read +bufsize /man/1/stream +bufsize /man/2/sys-fversion +bug /man/10/plan9.ini +bug /man/10/print +bug /man/10/ref +buggy /man/3/sd +bugs /man/1/9win +bugs /man/1/acme +bugs /man/1/asm +bugs /man/1/cal +bugs /man/1/cat +bugs /man/1/charon +bugs /man/1/chmod +bugs /man/1/cprof +bugs /man/1/cpu +bugs /man/1/deb +bugs /man/1/diff +bugs /man/1/disdep +bugs /man/1/ebook +bugs /man/1/env +bugs /man/1/fc +bugs /man/1/filename +bugs /man/1/ftest +bugs /man/1/grid-query +bugs /man/1/lc +bugs /man/1/listen +bugs /man/1/logwindow +bugs /man/1/man +bugs /man/1/mdb +bugs /man/1/miniterm +bugs /man/1/mk +bugs /man/1/mprof +bugs /man/1/mux +bugs /man/1/nsbuild +bugs /man/1/prof +bugs /man/1/ps +bugs /man/1/secstore +bugs /man/1/sh +bugs /man/1/sh-alphabet +bugs /man/1/sh-csv +bugs /man/1/sh-expr +bugs /man/1/sh-std +bugs /man/1/sort +bugs /man/1/time +bugs /man/1/tktester +bugs /man/1/units +bugs /man/1/uuencode +bugs /man/1/webgrab +bugs /man/1/wish +bugs /man/1/xd +bugs /man/1/yacc +bugs /man/10/2c +bugs /man/10/9load +bugs /man/10/a.out +bugs /man/10/acid +bugs /man/10/allocb +bugs /man/10/ar +bugs /man/10/c2l +bugs /man/10/iar +bugs /man/10/mk +bugs /man/10/plan9.ini +bugs /man/10/print +bugs /man/10/strcat +bugs /man/10/styxserver +bugs /man/10ti925/epocimg +bugs /man/10ti925/tihost +bugs /man/2/asn1 +bugs /man/2/bufio +bugs /man/2/daytime +bugs /man/2/dbm +bugs /man/2/debug +bugs /man/2/dict +bugs /man/2/dividers +bugs /man/2/draw-display +bugs /man/2/draw-image +bugs /man/2/geodesy +bugs /man/2/hash +bugs /man/2/ip +bugs /man/2/keyring-sha1 +bugs /man/2/newns +bugs /man/2/plumbmsg +bugs /man/2/pslib +bugs /man/2/rand +bugs /man/2/smtp +bugs /man/2/spree +bugs /man/2/spree-cardlib +bugs /man/2/stringinttab +bugs /man/2/styxpersist +bugs /man/2/sys-bind +bugs /man/2/sys-dial +bugs /man/2/sys-file2chan +bugs /man/2/sys-fversion +bugs /man/2/sys-print +bugs /man/2/venti +bugs /man/2/virgil +bugs /man/2/xml +bugs /man/3/audio +bugs /man/3/cmd +bugs /man/3/cons +bugs /man/3/dbg +bugs /man/3/draw +bugs /man/3/ds +bugs /man/3/dynld +bugs /man/3/flash +bugs /man/3/ftl +bugs /man/3/i82365 +bugs /man/3/indir +bugs /man/3/kprof +bugs /man/3/logfs +bugs /man/3/mnt +bugs /man/3/pbus +bugs /man/3/plap +bugs /man/3/pnp +bugs /man/3/prof +bugs /man/3/rtc +bugs /man/3/sd +bugs /man/3/srv +bugs /man/3/vga +bugs /man/3/vid +bugs /man/4/cpu +bugs /man/4/dbfs +bugs /man/4/dossrv +bugs /man/4/ftpfs +bugs /man/4/import +bugs /man/4/iostats +bugs /man/4/kfs +bugs /man/4/lockfs +bugs /man/4/logfile +bugs /man/4/palmsrv +bugs /man/4/ramfile +bugs /man/4/registry +bugs /man/5/stat +bugs /man/6/keytext +bugs /man/6/man +bugs /man/8/dns +bugs /man/8/ping +bugs /man/8/prep +bugs /man/8/rdbgsrv +bugs /man/8/srv +bugs /man/8/virgild +bugs /man/9/0intro +bugs /man/9/bind +bugs /man/9/cursor +bugs /man/9/grab +bugs /man/9/image +bugs /man/9/listbox +bugs /man/9/menu +bugs /man/9/send +bugs /man/9/text +bugs /man/9/update +build /man/1/0intro +build /man/1/mash-make +build /man/1/mk +build /man/1/nsbuild +build /man/1/session +build /man/1/webgrab +build /man/1/yacc +build /man/10/lock +build /man/10/mk +build /man/10/srclist +build /man/2/draw-font +build /man/2/newns +build /man/2/prefab-0intro +build /man/2/prefab-compound +build /man/2/prefab-element +build /man/2/spki +build /man/2/styx +build /man/8/0intro +build /man/8/create +building /man/1/mash-tk +building /man/1/mk +building /man/10/mk +building /man/2/draw-0intro +building /man/2/draw-image +building /man/2/prefab-0intro +building /man/2/prefab-compound +building /man/2/prefab-element +building /man/2/tk +building /man/3/tinyfs +building /man/4/namespace +building /man/8/init +builds /man/1/nsbuild +builds /man/10/devattach +builds /man/2/filepat +builds /man/2/newns +builds /man/2/prefab-element +builds /man/3/ds +builds /man/8/srv +built /man/1/acme +built /man/1/charon +built /man/1/mash +built /man/1/mash-make +built /man/1/mc +built /man/1/sh +built /man/1/stack +built /man/1/toolbar +built /man/10/5coff +built /man/10/conf +built /man/10/devattach +built /man/10/plan9.ini +built /man/2/draw-0intro +built /man/2/draw-font +built /man/2/draw-image +built /man/2/keyring-0intro +built /man/2/math-linalg +built /man/2/prefab-compound +built /man/2/spree +built /man/2/srv +built /man/2/sys-0intro +built /man/2/sys-pctl +built /man/2/sys-self +built /man/3/cmd +built /man/3/root +built /man/3/sign +built /man/4/acme +built /man/4/kfs +built /man/4/namespace +built /man/8/create +built /man/8/cs +built /man/8/init +builtin /man/1/0intro +builtin /man/1/mash +builtin /man/1/mash-make +builtin /man/1/mash-tk +builtin /man/1/sh +builtin /man/1/sh-regex +builtin /man/1/sh-std +builtin /man/1/sh-string +builtin /man/1/sh-tk +builtin /man/1/wm-sh +builtin /man/10/conf +builtin /man/2/sh +builtins /man/1/mash +builtins /man/1/mk +builtins /man/1/sh +builtins /man/1/sh-std +builtins /man/1/sh-string +builtins /man/10/mk +builtins /man/2/sh +builtins.b /man/1/mash +bulk /man/3/usb +bundle /man/1/alphabet-fs +bundle /man/1/fs +bundled /man/1/alphabet-fs +bundled /man/1/fs +bundled /man/2/styxservers +burden /man/1/charon +burgundy /man/10/odbc +burn /man/1/avr +burn /man/8/mangaload +burn /man/8/manufacture +burn.b /man/1/avr +burns /man/8/mangaload +bus /man/10/dmainit +bus /man/10/intrenable +bus /man/10/plan9.ini +bus /man/3/i2c +bus /man/3/pbus +bus /man/3/plap +bus /man/3/pnp +bus /man/3/usb +bus /man/8/ftl +buslogic /man/10/plan9.ini +busy /man/1/charon +busy /man/10/delay +busy /man/10ti925/tihost +buts /man/2/tkclient +buts /man/2/wmclient +butt /man/9/canvas +button /man/1/0intro +button /man/1/acme +button /man/1/brutus +button /man/1/charon +button /man/1/collab-clients +button /man/1/deb +button /man/1/emu +button /man/1/ftree +button /man/1/grid-monitor +button /man/1/grid-query +button /man/1/keyboard +button /man/1/mash-tk +button /man/1/miniterm +button /man/1/session +button /man/1/tktester +button /man/1/wm-misc +button /man/1/wm-sh +button /man/2/dialog +button /man/2/draw-pointer +button /man/2/ir +button /man/2/popup +button /man/2/spree-cardlib +button /man/2/tk +button /man/2/tkclient +button /man/2/wmclient +button /man/3/cons +button /man/3/pointer +button /man/3/touch +button /man/4/acme +button /man/8/plumber +button /man/9/0intro +button /man/9/bind +button /man/9/button +button /man/9/canvas +button /man/9/checkbutton +button /man/9/choicebutton +button /man/9/entry +button /man/9/grab +button /man/9/listbox +button /man/9/menu +button /man/9/menubutton +button /man/9/options +button /man/9/radiobutton +button /man/9/scale +button /man/9/scrollbar +button /man/9/send +button /man/9/text +button /man/9/variable +button's /man/2/popup +button's /man/9/button +button's /man/9/checkbutton +button's /man/9/choicebutton +button's /man/9/radiobutton +buttonpress /man/9/bind +buttonpress /man/9/canvas +buttonpress /man/9/text +buttonrelease /man/9/bind +buttons /man/1/0intro +buttons /man/1/acme +buttons /man/1/charon +buttons /man/1/collab-clients +buttons /man/1/deb +buttons /man/1/ebook +buttons /man/1/grid-monitor +buttons /man/1/mash-tk +buttons /man/1/miniterm +buttons /man/1/session +buttons /man/1/tktester +buttons /man/1/wm-misc +buttons /man/1/wm-sh +buttons /man/2/dialog +buttons /man/2/draw-pointer +buttons /man/2/ir +buttons /man/2/tkclient +buttons /man/2/wmclient +buttons /man/3/cons +buttons /man/3/pointer +buttons /man/3/touch +buttons /man/4/acme +buttons /man/9/bind +buttons /man/9/button +buttons /man/9/menu +buttons /man/9/options +buttons /man/9/text +buttons /man/9/variable +bw /man/8/prep +bwrite /man/10/dev +by2v /man/10/allocb +by2v /man/10/xalloc +bye /man/2/secstore +bypass /man/1/alphabet-fs +bypass /man/1/fs +byte /man/1/auplay +byte /man/1/cmp +byte /man/1/freq +byte /man/1/mdb +byte /man/1/sh-string +byte /man/1/xd +byte /man/1/zeros +byte /man/10/a.out +byte /man/10/allocb +byte /man/10/c2l +byte /man/10/dev +byte /man/10/devattach +byte /man/10/dmainit +byte /man/10/inb +byte /man/10/memory +byte /man/10/parsecmd +byte /man/10/print +byte /man/10/rune +byte /man/10/strcat +byte /man/10/styx +byte /man/10/xalloc +byte /man/2/asn1 +byte /man/2/bloomfilter +byte /man/2/bufio +byte /man/2/bufio-chanfill +byte /man/2/convcs +byte /man/2/crc +byte /man/2/dbm +byte /man/2/devpointer +byte /man/2/dhcpclient +byte /man/2/dis +byte /man/2/diskblocks +byte /man/2/disks +byte /man/2/draw-0intro +byte /man/2/draw-display +byte /man/2/draw-image +byte /man/2/encoding +byte /man/2/ether +byte /man/2/factotum +byte /man/2/filter +byte /man/2/format +byte /man/2/ida +byte /man/2/imagefile +byte /man/2/ip +byte /man/2/keyring-0intro +byte /man/2/keyring-auth +byte /man/2/keyring-crypt +byte /man/2/keyring-getmsg +byte /man/2/keyring-getstring +byte /man/2/keyring-ipint +byte /man/2/keyring-rc4 +byte /man/2/keyring-sha1 +byte /man/2/math-export +byte /man/2/palmfile +byte /man/2/plumbmsg +byte /man/2/prof +byte /man/2/scsiio +byte /man/2/secstore +byte /man/2/security-random +byte /man/2/security-ssl +byte /man/2/sets +byte /man/2/sexprs +byte /man/2/spki +byte /man/2/spree +byte /man/2/spree-gather +byte /man/2/styx +byte /man/2/styxservers +byte /man/2/sys-0intro +byte /man/2/sys-byte2char +byte /man/2/sys-file2chan +byte /man/2/sys-read +byte /man/2/sys-utfbytes +byte /man/2/ubfa +byte /man/2/venti +byte /man/2/wmsrv +byte /man/3/arch +byte /man/3/boot +byte /man/3/cap +byte /man/3/cons +byte /man/3/dbg +byte /man/3/draw +byte /man/3/ds +byte /man/3/eia +byte /man/3/flash +byte /man/3/fpga +byte /man/3/ftl +byte /man/3/i2c +byte /man/3/ip +byte /man/3/kprof +byte /man/3/pbus +byte /man/3/pipe +byte /man/3/pointer +byte /man/3/tv +byte /man/3/usb +byte /man/3/vga +byte /man/3/vid +byte /man/4/acme +byte /man/4/memfs +byte /man/5/0intro +byte /man/5/stat +byte /man/6/audio +byte /man/6/colour +byte /man/6/dis +byte /man/6/font +byte /man/6/image +byte /man/6/keytext +byte /man/6/login +byte /man/6/sbl +byte /man/6/scancode +byte /man/6/sexprs +byte /man/6/ubfa +byte /man/6/utf +byte /man/7/db +byte /man/8/ftl +byte /man/8/rdbgsrv +byte's /man/6/image +byte2char /man/2/sys-byte2char +byte2char /man/2/sys-utfbytes +byte2char /man/6/utf +bytes /man/1/alphabet-fs +bytes /man/1/auplay +bytes /man/1/charon +bytes /man/1/cmp +bytes /man/1/dd +bytes /man/1/du +bytes /man/1/emu +bytes /man/1/fs +bytes /man/1/gettar +bytes /man/1/ls +bytes /man/1/mprof +bytes /man/1/read +bytes /man/1/secstore +bytes /man/1/sh-file2chan +bytes /man/1/stream +bytes /man/1/sum +bytes /man/1/wc +bytes /man/1/wm-misc +bytes /man/1/xd +bytes /man/1/zeros +bytes /man/10/a.out +bytes /man/10/acid +bytes /man/10/allocb +bytes /man/10/c2l +bytes /man/10/dev +bytes /man/10/devattach +bytes /man/10/dmainit +bytes /man/10/dynld +bytes /man/10/error +bytes /man/10/getfields +bytes /man/10/inb +bytes /man/10/kbdputc +bytes /man/10/ksize +bytes /man/10/malloc +bytes /man/10/memory +bytes /man/10/odbc +bytes /man/10/plan9.ini +bytes /man/10/print +bytes /man/10/qio +bytes /man/10/readnum +bytes /man/10/rune +bytes /man/10/strcat +bytes /man/10/styx +bytes /man/10/styxserver +bytes /man/10/xalloc +bytes /man/2/asn1 +bytes /man/2/bufio +bytes /man/2/convcs +bytes /man/2/crc +bytes /man/2/dbm +bytes /man/2/devpointer +bytes /man/2/dhcpclient +bytes /man/2/dis +bytes /man/2/diskblocks +bytes /man/2/disks +bytes /man/2/draw-image +bytes /man/2/drawmux +bytes /man/2/encoding +bytes /man/2/ether +bytes /man/2/factotum +bytes /man/2/filter +bytes /man/2/filter-slip +bytes /man/2/ida +bytes /man/2/imagefile +bytes /man/2/ip +bytes /man/2/keyring-0intro +bytes /man/2/keyring-crypt +bytes /man/2/keyring-getmsg +bytes /man/2/keyring-getstring +bytes /man/2/keyring-ipint +bytes /man/2/keyring-rc4 +bytes /man/2/keyring-sha1 +bytes /man/2/math-export +bytes /man/2/palmfile +bytes /man/2/plumbmsg +bytes /man/2/pop3 +bytes /man/2/print +bytes /man/2/scsiio +bytes /man/2/secstore +bytes /man/2/security-random +bytes /man/2/sets +bytes /man/2/sexprs +bytes /man/2/sh +bytes /man/2/spki +bytes /man/2/styx +bytes /man/2/sys-byte2char +bytes /man/2/sys-dirread +bytes /man/2/sys-file2chan +bytes /man/2/sys-iounit +bytes /man/2/sys-pipe +bytes /man/2/sys-print +bytes /man/2/sys-read +bytes /man/2/sys-seek +bytes /man/2/sys-stat +bytes /man/2/sys-utfbytes +bytes /man/2/ubfa +bytes /man/2/venti +bytes /man/3/boot +bytes /man/3/cons +bytes /man/3/dbg +bytes /man/3/draw +bytes /man/3/ds +bytes /man/3/dynld +bytes /man/3/eia +bytes /man/3/env +bytes /man/3/ether +bytes /man/3/flash +bytes /man/3/ftl +bytes /man/3/i2c +bytes /man/3/ip +bytes /man/3/kprof +bytes /man/3/logfs +bytes /man/3/mnt +bytes /man/3/pbus +bytes /man/3/pipe +bytes /man/3/prof +bytes /man/3/prog +bytes /man/3/sd +bytes /man/3/tinyfs +bytes /man/3/tls +bytes /man/3/tv +bytes /man/3/usb +bytes /man/3/vid +bytes /man/4/dbfs +bytes /man/4/factotum +bytes /man/4/keyfs +bytes /man/4/keysrv +bytes /man/4/kfs +bytes /man/4/logfile +bytes /man/4/spree +bytes /man/5/0intro +bytes /man/5/error +bytes /man/5/open +bytes /man/5/read +bytes /man/5/stat +bytes /man/5/version +bytes /man/6/colour +bytes /man/6/dis +bytes /man/6/font +bytes /man/6/image +bytes /man/6/keytext +bytes /man/6/plumbing +bytes /man/6/sbl +bytes /man/6/sexprs +bytes /man/6/ubfa +bytes /man/6/utf +bytes /man/7/db +bytes /man/8/collabsrv +bytes /man/8/ftl +bytes /man/8/mkfs +bytes /man/8/ping +bytes /man/8/prep +bytes /man/8/rstyxd +bytes /man/8/styxchat +bytes2ptr /man/2/devpointer +bytes2set /man/2/sets +bytestoip /man/2/keyring-ipint +bytewise /man/10/memory +c's /man/10/strcat +c's /man/2/daytime +c.dfd /man/2/security-auth +c2l /man/10/c2l +ca /man/2/keyring-0intro +ca /man/2/security-0intro +ca /man/2/security-login +ca /man/6/auth +ca /man/6/login +ca's /man/2/keyring-0intro +ca's /man/2/security-0intro +ca's /man/6/auth +ca's /man/6/login +cab /man/10/odbc +cable /man/10ti925/tihost +cache /man/1/charon +cache /man/2/dbm +cache /man/2/sys-stat +cache /man/3/draw +cache /man/3/flash +cache /man/3/ip +cache /man/4/ftpfs +cache /man/8/httpd +cache /man/8/kfscmd +cache /man/8/prep +cached /man/2/dbm +cached /man/2/draw-font +cached /man/4/ftpfs +cacheid /man/3/draw +caches /man/3/boot +caches /man/3/dbg +caches /man/3/draw +cachesize /man/8/httpd +cal /man/1/cal +cal /man/1/calendar +cal.b /man/1/cal +calc /man/1/mathcalc +calc /man/1/yacc +calc.b /man/1/mathcalc +calculate /man/1/netkey +calculate /man/1/sum +calculate /man/10/seconds +calculate /man/2/crc +calculate /man/6/auth +calculate /man/6/font +calculate /man/8/touchcal +calculated /man/1/mc +calculated /man/10/2c +calculated /man/2/disks +calculated /man/2/styx +calculated /man/3/touch +calculates /man/1/disdep +calculates /man/1/fc +calculates /man/1/math-misc +calculates /man/1/mprof +calculates /man/1/netkey +calculates /man/1/prof +calculates /man/2/crc +calculating /man/2/crc +calculating /man/2/popup +calculation /man/2/crc +calculation /man/2/draw-image +calculation /man/2/sets +calculations /man/3/draw +calculator /man/1/fc +calculator /man/1/mathcalc +calculator /man/1/mc +calculator /man/1/yacc +calendar /man/1/cal +calendar /man/1/calendar +calendar /man/4/dbfs +calendar.b /man/1/calendar +calibrated /man/3/touch +calibration /man/3/touch +calibration /man/8/touchcal +california /man/9/0intro +california /man/9/1copyright +callback /man/10/styxserver +callee /man/4/factotum +caller /man/10/dynld +caller /man/10/kproc +caller /man/10/lock +caller /man/10/parsecmd +caller /man/10/qio +caller /man/10/qlock +caller /man/10/sleep +caller /man/2/command +caller /man/2/factotum +caller /man/2/ir +caller /man/2/math-fp +caller /man/2/spree-allow +caller /man/2/styx +caller /man/2/styxconv +caller /man/2/styxpersist +caller /man/2/styxservers +caller /man/2/sys-dial +caller /man/2/timers +caller /man/4/factotum +caller /man/4/import +caller /man/8/register +caller /man/8/rstyxd +caller /man/8/signer +caller /man/8/svc +caller's /man/10/dynld +caller's /man/10/eve +caller's /man/10/kproc +caller's /man/8/signer +callers /man/10/allocb +calling /man/10/atoi +calling /man/10/conf +calling /man/10/devattach +calling /man/10/dynld +calling /man/10/error +calling /man/10/intrenable +calling /man/10/kbdputc +calling /man/10/kproc +calling /man/10/lock +calling /man/10/odbc +calling /man/2/0intro +calling /man/2/asn1 +calling /man/2/debug +calling /man/2/imagefile +calling /man/2/itslib +calling /man/2/keyring-crypt +calling /man/2/keyring-sha1 +calling /man/2/prefab-compound +calling /man/2/print +calling /man/2/pslib +calling /man/2/secstore +calling /man/2/security-0intro +calling /man/2/sets +calling /man/2/sh +calling /man/2/spree +calling /man/2/spree-cardlib +calling /man/2/styxservers +calling /man/2/sys-export +calling /man/2/sys-pctl +calling /man/2/sys-read +calling /man/2/timers +calling /man/2/xml +calling /man/3/ip +calling /man/5/open +callkremvax /man/2/sys-dial +calloc /man/10/malloc +calpha /man/3/draw +can't /man/10/styxserver +can't /man/2/command +can't /man/2/ir +can't /man/9/text +cancel /man/1/mash-tk +cancel /man/3/dbg +cancel /man/3/mpeg +cancel /man/3/prog +cancel /man/3/usb +cancel /man/4/acme +canceled /man/3/tls +cancelled /man/5/flush +cancelling /man/10/qio +cancels /man/9/text +cancreate /man/2/styxservers +candidates /man/1/limbo +canlock /man/10/lock +canon /man/2/draw-rect +canonical /man/1/alphabet-main +canonical /man/1/keyboard +canonical /man/1/sh-alphabet +canonical /man/2/draw-rect +canonical /man/2/keyset +canonical /man/2/sexprs +canonical /man/2/spki +canonical /man/6/dis +canonical /man/6/sexprs +canonical /man/9/types +canonically /man/9/types +canopen /man/2/styxservers +canqlock /man/10/qlock +canread /man/2/styxservers +canrlock /man/10/qlock +cansecstore /man/2/secstore +canvas /man/1/collab-clients +canvas /man/1/tktester +canvas /man/2/tk +canvas /man/9/0intro +canvas /man/9/canvas +canvas /man/9/see +canvas's /man/9/canvas +canvases /man/9/canvas +canvasx /man/9/canvas +canvasy /man/9/canvas +canwrite /man/2/styxservers +cap /man/2/factotum +cap /man/3/cap +cap /man/3/indir +cap /man/9/canvas +capabilities /man/1/ftest +capabilities /man/2/styxpersist +capabilities /man/3/mpeg +capabilities /man/3/sd +capabilities /man/9/grid +capability /man/1/0intro +capability /man/2/factotum +capability /man/3/cap +capability /man/3/sd +capable /man/1/tiny +capable /man/10/9load +capable /man/10/plan9.ini +capable /man/2/format +capable /man/9/entry +capacity /man/3/tinyfs +capbrightness /man/3/tv +capbw /man/3/tv +capcontrast /man/3/tv +caphash /man/3/cap +caphashfd /man/3/cap +caphue /man/3/tv +capital /man/1/acme +capital /man/1/miniterm +capital /man/6/keyboard +capping /man/10/lock +caps /man/6/keyboard +caps /man/9/canvas +capsaturation /man/3/tv +capstyle /man/9/canvas +caption /man/1/cook +capture /man/3/ether +capture /man/3/tv +captured /man/3/tv +captured /man/9/menu +capuse /man/3/cap +card /man/10/9load +card /man/10/plan9.ini +card /man/2/spree-allow +card /man/2/spree-cardlib +card /man/2/spree-gather +card /man/3/i82365 +card /man/3/plap +card /man/3/pnp +card /man/3/tv +card /man/4/spree +card's /man/2/spree-cardlib +card's /man/3/i82365 +card's /man/3/pnp +cardlib /man/2/spree +cardlib /man/2/spree-allow +cardlib /man/2/spree-cardlib +cardlib /man/2/spree-gather +cardlib.b /man/2/spree-cardlib +cardlib.m /man/2/spree-cardlib +cards /man/10/plan9.ini +cards /man/2/spree-cardlib +cards /man/2/spree-gather +cards /man/3/plap +cards /man/3/pnp +cards /man/3/vga +care /man/1/calendar +care /man/1/ebook +care /man/1/mash-make +care /man/10/qio +care /man/2/alphabet-intro +care /man/2/command +care /man/2/draw-example +care /man/2/geodesy +care /man/2/keyset +care /man/2/sh +care /man/2/spree +care /man/2/styx +care /man/2/sys-stat +care /man/6/colour +care /man/6/image +care /man/8/httpd +care /man/9/listbox +care /man/9/menu +careful /man/9/grab +carefully /man/1/0intro +carefully /man/1/crypt +carets /man/1/mash +carets /man/1/sh +carriage /man/1/deb +carriage /man/1/mash +carriage /man/6/keyboard +carriage /man/6/sexprs +carriage /man/6/translate +carriage /man/6/ubfa +carrier /man/3/ip +carries /man/1/fs +carries /man/2/spki +carries /man/2/styxservers +carries /man/5/walk +carries /man/9/pack +carry /man/10/devattach +carry /man/10/intrenable +carry /man/8/create +carrying /man/3/ether +cas /man/2/keyring-0intro +cascade /man/9/menu +cascaded /man/9/menu +cascading /man/1/mash-tk +cascading /man/2/w3c-css +cascading /man/9/menu +cases /man/1/0intro +cases /man/1/collab-clients +cases /man/1/dd +cases /man/1/mash +cases /man/1/read +cases /man/1/sh +cases /man/1/stream +cases /man/1/tiny +cases /man/1/wm-sh +cases /man/10/allocb +cases /man/10/c2l +cases /man/10/dev +cases /man/10/dmainit +cases /man/10/newchan +cases /man/10/plan9.ini +cases /man/10/readnum +cases /man/2/0intro +cases /man/2/dis +cases /man/2/draw-0intro +cases /man/2/draw-image +cases /man/2/security-auth +cases /man/2/sys-dirread +cases /man/2/w3c-xpointers +cases /man/3/cmd +cases /man/3/cons +cases /man/3/ssl +cases /man/5/0intro +cases /man/9/bind +cases /man/9/canvas +cases /man/9/grid +cases /man/9/menu +cases /man/9/pack +casts /man/10/acid +cat /man/1/alphabet-main +cat /man/1/cat +cat /man/1/cp +cat /man/1/dd +cat /man/1/gettar +cat /man/1/listen +cat /man/1/read +cat /man/1/sh-alphabet +cat /man/1/stream +cat /man/1/tee +cat /man/1/uuencode +cat /man/10/odbc +cat /man/10/plan9.ini +cat /man/2/dbm +cat /man/2/palmfile +cat /man/3/ds +cat /man/3/pnp +cat /man/3/sd +cat /man/4/9srvfs +cat /man/4/spree +cat /man/8/dhcp +cat /man/8/rdbgsrv +cat.b /man/1/cat +catch /man/1/sh-std +catch /man/2/0intro +catches /man/1/sh +catches /man/1/sh-std +catches /man/2/sh +catching /man/2/sh +categories /man/1/grid-query +categories /man/1/mux +categories /man/2/palmfile +categories /man/3/tls +categories /man/4/namespace +category /man/1/grid-query +category /man/10/conf +category /man/2/palmfile +category /man/3/tls +catenate /man/1/dd +catenated /man/1/acme +catenation /man/1/acme +catenation /man/1/units +catenation /man/3/draw +catenation /man/3/ds +catv /man/3/tv +caught /man/1/sh-std +caught /man/2/sh +caused /man/1/mk +caused /man/1/wm +caused /man/10/lock +caused /man/10/mk +caused /man/2/draw-image +caused /man/2/wait +caused /man/2/wmsrv +caused /man/4/iostats +caused /man/6/colour +caused /man/8/applylog +causing /man/1/charon +causing /man/10/kproc +causing /man/10/sleep +causing /man/2/cfg +causing /man/2/prefab-element +causing /man/3/ip +causing /man/4/registry +causing /man/8/collabsrv +causing /man/9/menubutton +causing /man/9/update +caveat /man/3/srv9 +caveats /man/1/bind +caveats /man/10/error +cavity /man/2/spree-cardlib +cavity /man/9/grid +cavity /man/9/pack +ca→user /man/6/login +cbc /man/1/crypt +cbc /man/2/keyring-crypt +cbc /man/2/security-0intro +cbc /man/3/ssl +cbc /man/3/tls +cblue /man/3/draw +cbrt /man/1/mc +cbrt /man/2/math-elem +cbs /man/1/dd +cc /man/1/sendmail +cc /man/10/2c +cc /man/10/mk +cc /man/2/smtp +cc's /man/2/smtp +ccir601 /man/3/tv +cclose /man/10/newchan +cd /man/1/acme +cd /man/1/cd +cd /man/1/mk +cd /man/1/mkdir +cd /man/1/nsbuild +cd /man/1/pwd +cd /man/1/wm-sh +cd /man/10/mk +cd /man/10/styxserver +cd /man/3/prog +cd /man/3/sd +cd /man/4/dossrv +cd /man/6/namespace +cd.b /man/1/cd +cdfile /man/4/dossrv +cdfppqrtw /man/8/kfscmd +cdir /man/10/styxserver +cdroms /man/4/dossrv +cds /man/1/tr +ce /man/10/srclist +ceases /man/9/canvas +ceases /man/9/text +ceil /man/1/mathcalc +ceil /man/2/bloomfilter +ceil /man/2/ida +ceil /man/2/math-fp +ceiling /man/1/mc +cell /man/1/tktester +cell /man/9/grid +cellar /man/10/odbc +cellinfo /man/9/grid +cells /man/3/draw +cells /man/6/colour +cells /man/9/grid +center /man/1/acme +center /man/3/draw +center /man/9/canvas +center /man/9/listbox +center /man/9/menu +center /man/9/options +center /man/9/pack +center /man/9/text +center /man/9/types +centered /man/2/draw-0intro +centered /man/2/draw-image +centered /man/3/draw +centered /man/9/canvas +centered /man/9/grid +centered /man/9/text +centers /man/9/options +centers /man/9/text +centigrade /man/1/units +centimeter /man/9/text +centimetres /man/9/types +central /man/1/sh +centre /man/3/touch +centre /man/8/touchcal +centred /man/2/dialog +centred /man/2/print +centred /man/2/selectfile +centreline /man/9/scale +century /man/1/cal +cerf405 /man/3/i2c +cert /man/2/keyring-0intro +cert /man/2/keyring-sha1 +cert /man/2/spki +cert /man/6/auth +cert.a /man/2/spki +cert.kh /man/2/spki +cert.n /man/2/spki +cert.o /man/2/spki +certainly /man/10/c2l +certainly /man/10/kbdputc +certainly /man/10/qio +certainly /man/2/pop3 +certificate /man/1/listen +certificate /man/1/passwd +certificate /man/1/rcmd +certificate /man/2/keyring-0intro +certificate /man/2/keyring-certtostr +certificate /man/2/keyring-sha1 +certificate /man/2/keyset +certificate /man/2/registries +certificate /man/2/security-0intro +certificate /man/2/security-login +certificate /man/2/sexprs +certificate /man/2/spki +certificate /man/2/sys-dial +certificate /man/4/factotum +certificate /man/4/keyfs +certificate /man/4/keysrv +certificate /man/6/auth +certificate /man/6/keys +certificate /man/6/keytext +certificate /man/6/login +certificate /man/7/db +certificate /man/8/changelogin +certificate /man/8/createsignerkey +certificate /man/8/getauthinfo +certificate /man/8/logind +certificate /man/8/register +certificate /man/8/signer +certificate's /man/2/spki +certificate's /man/6/keytext +certificate's /man/8/logind +certificates /man/1/charon +certificates /man/2/keyring-0intro +certificates /man/2/keyring-certtostr +certificates /man/2/security-0intro +certificates /man/2/spki +certificates /man/2/spki-verifier +certificates /man/3/tinyfs +certificates /man/4/factotum +certificates /man/4/namespace +certificates /man/6/keytext +certificates /man/8/createsignerkey +certificates /man/8/getauthinfo +certificates /man/8/logind +certificates /man/8/register +certificates /man/8/signer +certificates /man/8/svc +certification /man/2/keyring-0intro +certified /man/2/keyset +certified /man/2/registries +certifying /man/2/keyring-0intro +certifying /man/2/keyring-auth +certifying /man/2/keyring-certtostr +certifying /man/2/security-0intro +certifying /man/2/security-login +certifying /man/6/auth +certifying /man/6/keys +certifying /man/6/login +certifying /man/8/getauthinfo +certtostr /man/2/keyring-0intro +certtostr /man/2/keyring-certtostr +certtostr /man/2/keyset +certtostr /man/3/sign +certtostr /man/4/factotum +certtostr /man/6/keytext +certu /man/2/keyring-auth +certu0 /man/2/keyring-auth +certu0 /man/6/auth +certu1 /man/2/keyring-auth +certu1 /man/6/auth +certx /man/6/auth +cf /man/10/dev +cf /man/2/plumbmsg +cfd /man/2/security-ssl +cfd /man/2/sys-dial +cfg /man/2/attrdb +cfg /man/2/cfg +cfg /man/2/convcs +cfg /man/6/attrdb +cfg.b /man/2/cfg +cfg.m /man/2/cfg +cfile /man/1/itest +cfile /man/10/styxserver +cflag /man/1/itest +cflag /man/1/sh-arg +cflag /man/2/arg +cflags /man/10/mk +cfs /man/8/prep +cg /man/1/mash-make +cga /man/10/plan9.ini +cget /man/2/popup +cget /man/2/tk +cget /man/9/button +cget /man/9/canvas +cget /man/9/checkbutton +cget /man/9/choicebutton +cget /man/9/entry +cget /man/9/frame +cget /man/9/label +cget /man/9/listbox +cget /man/9/menu +cget /man/9/menubutton +cget /man/9/panel +cget /man/9/radiobutton +cget /man/9/scale +cget /man/9/scrollbar +cget /man/9/text +cgi /man/8/httpd +cgi.m /man/8/httpd +cgreen /man/3/draw +cgrey /man/3/draw +ch /man/2/volume +ch /man/2/xml +chain /man/2/disks +chain /man/2/security-0intro +chained /man/10/allocb +chained /man/8/prep +chaining /man/1/crypt +chaining /man/2/keyring-crypt +chaining /man/3/ssl +chains /man/8/prep +challenge /man/1/netkey +chan /man/1/plumb +chan /man/1/sh-file2chan +chan /man/1/sh-tk +chan /man/1/wm +chan /man/1/wm-sh +chan /man/10/dev +chan /man/10/devattach +chan /man/10/dmainit +chan /man/10/newchan +chan /man/2/0intro +chan /man/2/command +chan /man/2/devpointer +chan /man/2/dhcpclient +chan /man/2/dividers +chan /man/2/draw-context +chan /man/2/filter +chan /man/2/filter-deflate +chan /man/2/filter-slip +chan /man/2/fsproto +chan /man/2/ir +chan /man/2/lock +chan /man/2/mpeg +chan /man/2/plumbmsg +chan /man/2/popup +chan /man/2/prefab-compound +chan /man/2/styxconv +chan /man/2/styxpersist +chan /man/2/styxservers +chan /man/2/styxservers-nametree +chan /man/2/sys-export +chan /man/2/sys-file2chan +chan /man/2/tabs +chan /man/2/timers +chan /man/2/tk +chan /man/2/tkclient +chan /man/2/volume +chan /man/2/wait +chan /man/2/wmclient +chan /man/2/wmlib +chan /man/2/wmsrv +chan /man/2/xml +chan /man/3/draw +chan /man/3/pbus +chan /man/3/plap +chan /man/3/root +chan /man/3/snarf +chan /man/3/srv +chan /man/3/vga +chan /man/4/acme +chan /man/4/cpu +chan /man/4/kfs +chan /man/4/namespace +chan /man/4/palmsrv +chan /man/6/image +chan /man/6/sbl +chan /man/7/db +chan /man/8/plumber +chan /man/9/send +chan.c /man/10/newchan +chan.c /man/10/ref +chan.flag /man/10/devattach +chance /man/2/draw-context +chance /man/2/sh +chandesc /man/2/imagefile +chandn /man/2/ir +chanfill /man/2/bufio +chanfill /man/2/bufio-chanfill +chanfill /man/2/sys-self +chanfree /man/10/newchan +changebutton /man/2/popup +changecipher /man/3/tls +changelogin /man/1/passwd +changelogin /man/2/security-0intro +changelogin /man/2/security-login +changelogin /man/4/keyfs +changelogin /man/6/keys +changelogin /man/8/changelogin +changelogin /man/8/getauthinfo +changelogin /man/8/logind +changelogin /man/8/svc +changelogin.b /man/8/changelogin +changetime /man/2/scsiio +channel /man/1/auplay +channel /man/1/emu +channel /man/1/mux +channel /man/1/plumb +channel /man/1/sh-tk +channel /man/1/tkcmd +channel /man/10/dev +channel /man/10/devattach +channel /man/10/dmainit +channel /man/10/newchan +channel /man/10/plan9.ini +channel /man/10/styxserver +channel /man/2/0intro +channel /man/2/alphabet-intro +channel /man/2/bufio-chanfill +channel /man/2/command +channel /man/2/devpointer +channel /man/2/dhcpclient +channel /man/2/dividers +channel /man/2/draw-0intro +channel /man/2/draw-context +channel /man/2/draw-display +channel /man/2/draw-image +channel /man/2/filter +channel /man/2/filter-slip +channel /man/2/fsproto +channel /man/2/imagefile +channel /man/2/ir +channel /man/2/keyring-0intro +channel /man/2/mpeg +channel /man/2/plumbmsg +channel /man/2/popup +channel /man/2/prefab-compound +channel /man/2/security-login +channel /man/2/styxconv +channel /man/2/styxpersist +channel /man/2/styxservers +channel /man/2/styxservers-nametree +channel /man/2/sys-file2chan +channel /man/2/sys-pipe +channel /man/2/tabs +channel /man/2/timers +channel /man/2/tk +channel /man/2/tkclient +channel /man/2/volume +channel /man/2/wait +channel /man/2/wmclient +channel /man/2/wmlib +channel /man/2/wmsrv +channel /man/2/xml +channel /man/3/0intro +channel /man/3/draw +channel /man/3/mnt +channel /man/3/plap +channel /man/3/prog +channel /man/3/tls +channel /man/3/tv +channel /man/4/factotum +channel /man/4/kfs +channel /man/6/audio +channel /man/6/colour +channel /man/6/image +channel /man/6/login +channel /man/6/ubfa +channel /man/9/image +channel /man/9/send +channel /man/9/variable +channel's /man/10/newchan +channels /man/1/auplay +channels /man/1/math-misc +channels /man/1/sh-tk +channels /man/10/dmainit +channels /man/10/newchan +channels /man/2/alphabet-intro +channels /man/2/draw-0intro +channels /man/2/draw-context +channels /man/2/draw-image +channels /man/2/imagefile +channels /man/2/ir +channels /man/2/popup +channels /man/2/sexprs +channels /man/2/spki-verifier +channels /man/2/sys-file2chan +channels /man/2/sys-pipe +channels /man/2/tk +channels /man/2/wmsrv +channels /man/3/audio +channels /man/3/draw +channels /man/3/srv +channels /man/3/tls +channels /man/3/tv +channels /man/6/audio +channels /man/6/colour +channels /man/6/image +channels /man/9/send +chans /man/2/draw-0intro +chans /man/2/draw-display +chans /man/2/draw-image +chans /man/2/imagefile +chans /man/3/audio +chans /man/6/audio +chans.depth /man/2/draw-image +chans.mk /man/2/draw-display +chanup /man/2/ir +chap /man/3/ip +chapter /man/6/man +char /man/1/unicode +char /man/10/a.out +char /man/10/acid +char /man/10/allocb +char /man/10/ar +char /man/10/atoi +char /man/10/c2l +char /man/10/dev +char /man/10/devattach +char /man/10/dynld +char /man/10/error +char /man/10/eve +char /man/10/getfields +char /man/10/intrenable +char /man/10/kproc +char /man/10/newchan +char /man/10/panic +char /man/10/parsecmd +char /man/10/print +char /man/10/qio +char /man/10/readnum +char /man/10/rune +char /man/10/strcat +char /man/10/styx +char /man/10/styxserver +char /man/3/dbg +char /man/6/sbl +char /man/6/sexprs +char /man/9/text +char2byte /man/2/sys-byte2char +character /man/1/acme +character /man/1/bind +character /man/1/brutus +character /man/1/charon +character /man/1/cook +character /man/1/dd +character /man/1/fc +character /man/1/freq +character /man/1/fs +character /man/1/idea +character /man/1/keyboard +character /man/1/lc +character /man/1/look +character /man/1/ls +character /man/1/mash +character /man/1/mdb +character /man/1/miniterm +character /man/1/mk +character /man/1/sh +character /man/1/sh-arg +character /man/1/sh-regex +character /man/1/sh-std +character /man/1/sh-tk +character /man/1/tcs +character /man/1/tiny +character /man/1/tr +character /man/1/unicode +character /man/1/wm +character /man/1/wm-misc +character /man/1/wm-sh +character /man/1/xd +character /man/10/2a +character /man/10/2c +character /man/10/2l +character /man/10/9load +character /man/10/acid +character /man/10/atoi +character /man/10/dev +character /man/10/devattach +character /man/10/iar +character /man/10/kbdputc +character /man/10/mk +character /man/10/odbc +character /man/10/print +character /man/2/alphabet-intro +character /man/2/asn1 +character /man/2/bufio +character /man/2/cfg +character /man/2/convcs +character /man/2/debug +character /man/2/draw-0intro +character /man/2/draw-font +character /man/2/draw-image +character /man/2/encoding +character /man/2/filepat +character /man/2/filter-deflate +character /man/2/keyring-getmsg +character /man/2/palmfile +character /man/2/prof +character /man/2/regex +character /man/2/sexprs +character /man/2/spree-cardlib +character /man/2/string +character /man/2/sys-0intro +character /man/2/sys-byte2char +character /man/2/sys-print +character /man/2/sys-tokenize +character /man/2/tftp +character /man/2/ubfa +character /man/2/w3c-css +character /man/2/w3c-xpointers +character /man/2/wmsrv +character /man/3/0intro +character /man/3/cons +character /man/3/dbg +character /man/3/draw +character /man/3/eia +character /man/3/gpio +character /man/3/indir +character /man/3/ip +character /man/3/pointer +character /man/3/prog +character /man/4/acme +character /man/4/registry +character /man/4/spree +character /man/5/0intro +character /man/6/attrdb +character /man/6/font +character /man/6/image +character /man/6/keyboard +character /man/6/namespace +character /man/6/regexp +character /man/6/sbl +character /man/6/sexprs +character /man/6/ubfa +character /man/6/utf +character /man/8/collabsrv +character /man/9/bind +character /man/9/canvas +character /man/9/entry +character /man/9/listbox +character /man/9/menu +character /man/9/options +character /man/9/text +character /man/9/types +character's /man/9/text +characteristics /man/1/auplay +characteristics /man/1/listen +characteristics /man/2/sys-stat +characteristics /man/3/audio +characteristics /man/3/flash +characteristics /man/3/ip +characteristics /man/6/audio +characteristics /man/6/colour +characteristics /man/7/db +characteristics /man/8/ftl +characterized /man/9/canvas +characters /man/1/acme +characters /man/1/alphabet-fs +characters /man/1/bind +characters /man/1/charon +characters /man/1/dd +characters /man/1/deb +characters /man/1/fs +characters /man/1/keyboard +characters /man/1/ls +characters /man/1/man +characters /man/1/mash +characters /man/1/mash-tk +characters /man/1/mdb +characters /man/1/miniterm +characters /man/1/mk +characters /man/1/passwd +characters /man/1/sh +characters /man/1/sh-arg +characters /man/1/sh-regex +characters /man/1/sh-std +characters /man/1/sh-string +characters /man/1/sort +characters /man/1/stack +characters /man/1/strings +characters /man/1/tail +characters /man/1/tiny +characters /man/1/tktester +characters /man/1/tr +characters /man/1/tsort +characters /man/1/unicode +characters /man/1/wc +characters /man/1/wm-misc +characters /man/1/xd +characters /man/10/2c +characters /man/10/a.out +characters /man/10/atoi +characters /man/10/devattach +characters /man/10/getfields +characters /man/10/iar +characters /man/10/kbdputc +characters /man/10/mk +characters /man/10/print +characters /man/2/alphabet-intro +characters /man/2/arg +characters /man/2/bufio +characters /man/2/cfg +characters /man/2/convcs +characters /man/2/draw-context +characters /man/2/draw-example +characters /man/2/draw-font +characters /man/2/draw-image +characters /man/2/encoding +characters /man/2/filepat +characters /man/2/filter-deflate +characters /man/2/filter-slip +characters /man/2/palmfile +characters /man/2/sexprs +characters /man/2/sh +characters /man/2/spree +characters /man/2/string +characters /man/2/stringinttab +characters /man/2/sys-0intro +characters /man/2/sys-byte2char +characters /man/2/sys-print +characters /man/2/sys-tokenize +characters /man/2/sys-utfbytes +characters /man/2/w3c-css +characters /man/3/0intro +characters /man/3/cap +characters /man/3/cons +characters /man/3/draw +characters /man/3/ip +characters /man/3/prog +characters /man/4/acme +characters /man/4/spree +characters /man/5/0intro +characters /man/5/version +characters /man/6/attrdb +characters /man/6/font +characters /man/6/image +characters /man/6/keyboard +characters /man/6/namespace +characters /man/6/plumbing +characters /man/6/regexp +characters /man/6/sbl +characters /man/6/sexprs +characters /man/6/ubfa +characters /man/6/users +characters /man/6/utf +characters /man/8/changelogin +characters /man/9/0intro +characters /man/9/bind +characters /man/9/button +characters /man/9/canvas +characters /man/9/checkbutton +characters /man/9/entry +characters /man/9/grid +characters /man/9/label +characters /man/9/listbox +characters /man/9/menubutton +characters /man/9/radiobutton +characters /man/9/scrollbar +characters /man/9/text +characters /man/9/types +charclass /man/6/regexp +chardonnay /man/10/odbc +charge /man/1/miniterm +charge /man/1/units +charon /man/1/charon +charon /man/1/miniterm +charon /man/1/webgrab +charon /man/1/wm-misc +charon.cfg /man/1/charon +chars /man/9/text +charset /man/2/convcs +charset /man/2/w3c-css +charsets /man/1/tcs +charsets /man/2/convcs +charstod /man/10/atoi +charstod.c /man/10/atoi +chart /man/1/collab-clients +chartorune /man/10/rune +charval /man/1/wm +chassis /man/3/pbus +chassis /man/3/plap +chat /man/1/collab +chat /man/1/collab-clients +chat /man/2/spree +chat /man/4/spree +chat /man/8/collabsrv +chat.b /man/1/collab-clients +chatroom /man/1/collab-clients +chatsrv /man/8/collabsrv +chatter /man/4/ftpfs +chatty /man/1/webgrab +chdir /man/1/cd +chdir /man/10/newchan +chdir /man/2/newns +chdir /man/2/sys-chdir +chdir /man/2/sys-pctl +chdir /man/2/workdir +chdir /man/5/walk +check /man/1/ftest +check /man/1/kill +check /man/1/passwd +check /man/1/session +check /man/10/0intro +check /man/10/dev +check /man/10/devattach +check /man/10/eve +check /man/10/memory +check /man/10/newchan +check /man/10/plan9.ini +check /man/10/sleep +check /man/10/strcat +check /man/10/styxserver +check /man/2/crc +check /man/2/format +check /man/2/keyring-crypt +check /man/2/security-0intro +check /man/2/styxservers +check /man/2/styxservers-nametree +check /man/2/sys-stat +check /man/2/sys-utfbytes +check /man/2/w3c-xpointers +check /man/3/dynld +check /man/3/ip +check /man/4/keysrv +check /man/5/open +check /man/6/auth +check /man/6/colour +check /man/6/keys +check /man/8/cs +check /man/8/kfscmd +check /man/8/logind +check /man/8/prep +check /man/8/signer +check /man/9/menu +check /man/9/radiobutton +checkb /man/10/allocb +checkbox /man/1/tktester +checkbutton /man/9/0intro +checkbutton /man/9/button +checkbutton /man/9/checkbutton +checkbutton /man/9/choicebutton +checkbutton /man/9/menu +checkbutton /man/9/radiobutton +checkbutton /man/9/variable +checkbutton's /man/9/checkbutton +checkbuttons /man/9/checkbutton +checked /man/10/devattach +checked /man/2/filter-deflate +checked /man/4/kfs +checked /man/5/open +checked /man/8/changelogin +checked /man/8/kfscmd +checking /man/1/acme +checking /man/1/alphabet-main +checking /man/1/ftest +checking /man/1/limbo +checking /man/1/listen +checking /man/1/secstore +checking /man/1/sh-alphabet +checking /man/10/2c +checking /man/10/allocb +checking /man/10/error +checking /man/10/iar +checking /man/10/styxserver +checking /man/2/format +checking /man/2/spree +checking /man/2/styx +checking /man/2/styxservers +checking /man/2/sys-stat +checking /man/3/dbg +checking /man/3/fs +checking /man/3/tinyfs +checking /man/4/kfs +checking /man/6/dis +checking /man/6/keytext +checking /man/8/kfscmd +checks /man/1/charon +checks /man/1/ftest +checks /man/1/passwd +checks /man/10/newchan +checks /man/10/styx +checks /man/10/styxserver +checks /man/2/ida +checks /man/2/math-fp +checks /man/2/spki-verifier +checks /man/2/styxservers +checks /man/2/sys-print +checks /man/2/w3c-xpointers +checks /man/3/dynld +checks /man/3/fs +checks /man/4/factotum +checks /man/6/login +checks /man/8/prep +checks /man/8/signer +checks /man/9/text +checksum /man/1/du +checksum /man/1/gettar +checksum /man/1/sum +checksum /man/2/filter-deflate +checksum /man/3/ip +checksum /man/3/tinyfs +checksum /man/8/applylog +chess /man/6/keyboard +chgrp /man/1/chgrp +chgrp /man/1/chmod +chgrp.b /man/1/chgrp +chicanery /man/2/sys-0intro +child /man/10/styxserver +child /man/2/command +child /man/2/sh +child /man/2/spree +child /man/2/w3c-xpointers +child /man/2/wait +child /man/3/prog +child /man/9/canvas +child /man/9/menu +child /man/9/menubutton +child /man/9/text +child's /man/2/command +chip /man/1/avr +chip /man/10/plan9.ini +chip /man/3/i82365 +chip /man/3/vga +chip /man/3/vid +chips /man/10/plan9.ini +chips /man/3/rtc +chips /man/3/tinyfs +chips /man/3/vga +chips /man/8/ftl +chipset /man/10/plan9.ini +chkmnt /man/10/newchan +chmod /man/1/alphabet-fs +chmod /man/1/chgrp +chmod /man/1/chmod +chmod /man/1/fs +chmod /man/1/mkdir +chmod /man/1/touch +chmod /man/3/srv +chmod /man/6/keys +chmod /man/6/proto +chmod.b /man/1/chmod +chocolate /man/2/regex +choice /man/1/collab-clients +choice /man/1/ftree +choice /man/1/mash-tk +choice /man/10/qlock +choice /man/10/styxserver +choice /man/2/popup +choice /man/9/choicebutton +choicebutton /man/2/popup +choicebutton /man/9/button +choicebutton /man/9/checkbutton +choicebutton /man/9/choicebutton +choicebutton /man/9/radiobutton +choicebutton /man/9/variable +choices /man/10/9load +choices /man/2/w3c-xpointers +choices /man/3/gpio +choices /man/3/mpeg +choices /man/8/prep +choices /man/9/choicebutton +choose /man/1/cprof +choose /man/1/wm +choose /man/10/styxserver +choose /man/2/dialog +choose /man/2/plumbmsg +choose /man/2/prefab-element +choose /man/2/tkclient +choose /man/2/wmclient +choose /man/5/0intro +choose /man/8/rstyxd +choose /man/9/choicebutton +chooses /man/10/9load +chooses /man/2/sys-bind +chooses /man/2/sys-dup +chooses /man/2/tkclient +chooses /man/2/wmclient +chooses /man/9/pack +chooses /man/9/panel +chooses /man/9/text +choosing /man/1/miniterm +choosing /man/1/uuencode +choosing /man/2/security-0intro +chord /man/1/acme +chord /man/9/canvas +chorded /man/4/acme +chording /man/1/brutus +chording /man/1/wm-sh +chords /man/1/0intro +chords /man/1/acme +chosen /man/1/0intro +chosen /man/1/alphabet-fs +chosen /man/1/filename +chosen /man/1/fortune +chosen /man/1/fs +chosen /man/1/wm-misc +chosen /man/10/conf +chosen /man/2/keyring-0intro +chosen /man/2/keyring-sha1 +chosen /man/2/palmfile +chosen /man/2/security-auth +chosen /man/2/spree-cardlib +chosen /man/3/pnp +chosen /man/4/acme +chosen /man/4/factotum +chosen /man/5/0intro +chosen /man/6/colour +chosen /man/6/font +chosen /man/6/login +chosen /man/8/prep +chosen /man/9/grid +chosen /man/9/scrollbar +chosen /man/9/text +chr /man/10/rune +christian /man/1/cal +chroma /man/2/mpeg +chromakey /man/3/tv +chs /man/10/9load +chssrc /man/2/disks +chstext /man/2/disks +chunk /man/1/xd +chunk /man/2/readdir +chunk /man/3/boot +chunk /man/3/cons +chunks /man/1/stream +chunks /man/1/xd +cidr /man/2/ip +cignore /man/3/draw +cipher /man/1/idea +cipher /man/2/keyring-crypt +cipher /man/3/ssl +ciphertext /man/2/security-0intro +circle /man/1/ftree +circle /man/2/spree-cardlib +circles /man/2/security-0intro +circles /man/9/canvas +circuit /man/10/devattach +circular /man/3/ip +circular /man/4/logfile +circular /man/9/canvas +circularly /man/9/canvas +circumference /man/1/units +circumstances /man/1/diff +circumstances /man/1/mash +circumstances /man/1/sh +circumstances /man/10/styxserver +circumvent /man/10/dmainit +cirrus /man/10/5cv +cited /man/6/colour +cl /man/1/keyboard +cl /man/1/sh-string +cl /man/2/string +claim /man/2/spki-verifier +claimed /man/2/keyring-rc4 +claims /man/5/stat +claims /man/9/menubutton +clash /man/10/c2l +clash /man/10/styx +clashes /man/1/fc +class /man/1/acme +class /man/1/mash +class /man/1/sh +class /man/1/sh-string +class /man/2/0intro +class /man/2/asn1 +class /man/2/ip +class /man/2/string +class /man/2/w3c-css +class /man/3/arch +class /man/3/ip +class /man/3/pnp +class /man/6/regexp +class /man/9/menubutton +class /man/9/options +class /man/9/text +classes /man/1/charon +classes /man/1/sh +classes /man/2/0intro +classes /man/2/asn1 +classes /man/2/palmfile +classes /man/2/string +classical /man/2/math-0intro +classified /man/9/1copyright +classless /man/2/ip +classmask /man/2/ip +clause /man/1/limbo +clause /man/1/mk +clause /man/10/mk +clause /man/6/sbl +clause /man/6/translate +clause /man/9/1copyright +clavier /man/1/miniterm +clean /man/1/0intro +clean /man/1/cleanname +clean /man/1/sh-alphabet +clean /man/10/error +clean /man/2/prof +clean /man/4/acme +cleaner /man/2/names +cleanname /man/1/basename +cleanname /man/1/cleanname +cleanname /man/2/names +cleanname.b /man/1/cleanname +clear /man/1/crypt +clear /man/1/grid-monitor +clear /man/1/mash-make +clear /man/1/mash-tk +clear /man/1/secstore +clear /man/1/sh-alphabet +clear /man/1/sh-std +clear /man/1/wm-misc +clear /man/1/wm-sh +clear /man/10/plan9.ini +clear /man/2/asn1 +clear /man/2/dis +clear /man/2/draw-image +clear /man/2/security-auth +clear /man/3/eia +clear /man/3/ftl +clear /man/3/ip +clear /man/3/prog +clear /man/3/ssl +clear /man/3/tls +clear /man/3/usb +clear /man/4/factotum +clear /man/4/keysrv +clear /man/6/login +clear /man/8/kfscmd +clear /man/8/signer +clear /man/8/srv +clear /man/9/canvas +clear /man/9/entry +clear /man/9/listbox +clear /man/9/text +cleared /man/1/wm-misc +cleared /man/1/wm-sh +cleared /man/2/draw-display +cleared /man/2/spree-cardlib +cleared /man/2/spree-objstore +cleared /man/9/entry +clearly /man/1/tktester +clearly /man/2/math-fp +clearly /man/9/1copyright +clears /man/1/mprof +clears /man/1/sh-alphabet +clears /man/10/malloc +clears /man/2/math-fp +clears /man/2/secstore +clears /man/9/entry +clears /man/9/text +cleartag /man/4/acme +clgd542x /man/3/vga +clgd542xhwgc /man/3/vga +clgd546x /man/3/vga +clgd546xhwgc /man/3/vga +click /man/1/acme +click /man/1/brutus +click /man/1/session +click /man/1/tktester +click /man/1/wm-misc +click /man/1/wm-sh +click /man/2/plumbmsg +click /man/2/tkclient +click /man/2/wmclient +click /man/4/registry +click /man/9/text +clicked /man/1/acme +clicked /man/1/charon +clicked /man/1/mash-tk +clicked /man/2/tkclient +clicked /man/2/wmclient +clicked /man/9/bind +clicked /man/9/checkbutton +clicked /man/9/choicebutton +clicked /man/9/radiobutton +clicking /man/1/acme +clicking /man/1/brutus +clicking /man/1/charon +clicking /man/1/deb +clicking /man/1/ebook +clicking /man/1/ftree +clicking /man/1/grid-monitor +clicking /man/1/grid-query +clicking /man/1/mash-tk +clicking /man/1/miniterm +clicking /man/1/session +clicking /man/1/tktester +clicking /man/1/wm-misc +clicking /man/1/wm-sh +clicking /man/9/entry +clicking /man/9/listbox +clicking /man/9/menubutton +clicking /man/9/options +clicking /man/9/scrollbar +clicking /man/9/text +clicks /man/1/acme +clicks /man/8/plumber +clicks /man/9/checkbutton +clicks /man/9/radiobutton +client /man/1/collab +client /man/1/cpu +client /man/1/listen +client /man/1/sh-file2chan +client /man/1/spree-join +client /man/1/wm +client /man/10/dev +client /man/10/styxserver +client /man/2/asn1 +client /man/2/dhcpclient +client /man/2/draw-0intro +client /man/2/draw-context +client /man/2/draw-display +client /man/2/draw-image +client /man/2/factotum +client /man/2/format +client /man/2/keyring-auth +client /man/2/plumbmsg +client /man/2/security-0intro +client /man/2/security-auth +client /man/2/security-login +client /man/2/spree +client /man/2/spree-allow +client /man/2/spree-cardlib +client /man/2/spree-gather +client /man/2/styx +client /man/2/styxpersist +client /man/2/styxservers +client /man/2/sys-export +client /man/2/sys-file2chan +client /man/2/tkclient +client /man/2/virgil +client /man/2/wmsrv +client /man/3/0intro +client /man/3/draw +client /man/3/mnt +client /man/3/srv +client /man/3/tinyfs +client /man/3/tls +client /man/4/cpu +client /man/4/dbfs +client /man/4/dossrv +client /man/4/export +client /man/4/factotum +client /man/4/import +client /man/4/keysrv +client /man/4/palmsrv +client /man/4/spree +client /man/5/0intro +client /man/5/attach +client /man/5/clunk +client /man/5/flush +client /man/5/open +client /man/5/remove +client /man/5/version +client /man/5/walk +client /man/6/keys +client /man/6/login +client /man/7/db +client /man/7/dbsrv +client /man/8/applylog +client /man/8/bootpd +client /man/8/collabsrv +client /man/8/cs +client /man/8/getauthinfo +client /man/8/httpd +client /man/8/logind +client /man/8/register +client /man/8/rstyxd +client /man/8/signer +client /man/8/sntp +client /man/8/styxchat +client /man/8/virgild +client's /man/1/collab-clients +client's /man/1/sh-file2chan +client's /man/2/dhcpclient +client's /man/2/security-auth +client's /man/2/security-login +client's /man/2/spree-allow +client's /man/2/styxservers +client's /man/2/sys-export +client's /man/2/wmsrv +client's /man/5/version +client's /man/8/bootpd +client's /man/8/collabsrv +client's /man/8/rstyxd +client's /man/8/styxchat +client's /man/8/virgild +clientfd /man/2/styxpersist +clientid /man/8/collabsrv +clientlog /man/8/applylog +clientroot /man/8/applylog +clients /man/1/collab-clients +clients /man/1/listen +clients /man/10/odbc +clients /man/10/styxserver +clients /man/2/dhcpclient +clients /man/2/draw-screen +clients /man/2/keyring-auth +clients /man/2/spree +clients /man/2/spree-allow +clients /man/2/spree-cardlib +clients /man/2/styxservers +clients /man/2/sys-file2chan +clients /man/2/wmsrv +clients /man/3/audio +clients /man/3/draw +clients /man/3/ftl +clients /man/4/export +clients /man/4/spree +clients /man/5/0intro +clients /man/5/error +clients /man/5/stat +clients /man/8/bootpd +clients /man/8/collabsrv +clients /man/8/dns +clients /man/8/getauthinfo +clients /man/8/styxchat +clients /man/8/virgild +clienttype /man/2/spree +clienttype /man/2/spree-gather +clip /man/2/draw-image +clip /man/2/draw-rect +clip /man/2/prefab-element +clipboard /man/3/snarf +clipped /man/3/draw +clipped /man/9/grid +clipping /man/2/draw-0intro +clipping /man/2/draw-image +clipping /man/3/draw +clipr /man/2/draw-display +clipr /man/2/draw-image +clipr /man/3/draw +clique /man/1/spree-join +clique /man/2/spree +clique /man/2/spree-allow +clique /man/2/spree-cardlib +clique /man/2/spree-gather +clique /man/2/spree-objstore +clique /man/4/spree +clique's /man/1/spree-join +clique's /man/2/spree +clique's /man/4/spree +clique.action /man/2/spree +cliqueid /man/2/spree +cliquemodule /man/2/spree +cliques /man/1/spree-join +cliques /man/2/spree +cliques /man/4/spree +clk /man/8/fpgaload +clock /man/1/wm-misc +clock /man/10/delay +clock /man/10/kbdputc +clock /man/10/seconds +clock /man/2/sys-millisec +clock /man/3/arch +clock /man/3/fpga +clock /man/3/kprof +clock /man/3/pbus +clock /man/3/rtc +clock /man/3/tinyfs +clock /man/3/vid +clock /man/4/iostats +clock /man/8/fpgaload +clockf /man/10/delay +clocks /man/2/keyring-ipint +clocks /man/3/fpga +clocks /man/8/fpgaload +clockwise /man/1/wm-misc +clockwise /man/2/spree-cardlib +clockwise /man/8/touchcal +clockwise /man/9/canvas +clone /man/1/os +clone /man/10/devattach +clone /man/10/plan9.ini +clone /man/2/env +clone /man/2/styxservers +clone /man/3/cmd +clone /man/3/ether +clone /man/3/ip +clone /man/3/plap +clone /man/3/ssl +clone /man/3/tls +clone /man/8/cs +clone /man/8/dhcp +cloned /man/10/newchan +clones /man/10/conf +clones /man/10/plan9.ini +closecmd /man/1/sh-file2chan +closectl /man/3/vga +closed /man/1/sh-file2chan +closed /man/1/tkcmd +closed /man/1/tktester +closed /man/10/qio +closed /man/2/bufio +closed /man/2/diskblocks +closed /man/2/draw-image +closed /man/2/registries +closed /man/2/styxservers +closed /man/2/sys-0intro +closed /man/2/sys-open +closed /man/2/sys-pctl +closed /man/2/tkclient +closed /man/2/wmclient +closed /man/3/boot +closed /man/3/cmd +closed /man/3/cons +closed /man/3/draw +closed /man/3/ether +closed /man/3/ip +closed /man/3/mpeg +closed /man/3/pipe +closed /man/3/sd +closed /man/3/snarf +closed /man/3/tls +closed /man/3/usb +closed /man/4/registry +closed /man/5/clunk +closed /man/7/db +closed /man/8/collabsrv +closed /man/9/canvas +closeenough /man/9/canvas +closely /man/1/cook +closely /man/1/sh-tk +closely /man/10/0intro +closely /man/6/attrdb +closely /man/6/sexprs +closer /man/2/math-fp +closer /man/9/canvas +closes /man/1/collab-clients +closes /man/1/grid-monitor +closes /man/10/qio +closes /man/2/draw-context +closes /man/2/pop3 +closes /man/2/secstore +closes /man/2/smtp +closes /man/2/sys-file2chan +closes /man/2/sys-open +closes /man/4/export +closes /man/4/import +closes /man/7/db +closest /man/9/canvas +closest /man/9/listbox +closest /man/9/menu +closest /man/9/scrollbar +closest /man/9/text +closing /man/1/wm +closing /man/2/sys-dup +closing /man/3/cmd +closing /man/3/cons +closing /man/6/man +closing /man/7/db +closing /man/8/collabsrv +closing /man/9/0intro +closure /man/2/sys-open +clr /man/10/malloc +clri /man/8/kfscmd +clubs /man/2/spree-cardlib +clunk /man/2/styx +clunk /man/2/styxservers +clunk /man/5/0intro +clunk /man/5/clunk +clunk /man/5/remove +clunked /man/5/clunk +clunked /man/5/open +clunked /man/5/version +clunking /man/2/styxservers +clunks /man/2/styxservers +cluster /man/4/dossrv +cluster /man/8/prep +clustered /man/10/a.out +clutter /man/2/0intro +clx /man/1/keyboard +cm /man/1/units +cm /man/2/w3c-css +cmap /man/2/imagefile +cmap /man/3/draw +cmap /man/6/colour +cmap2rgb /man/2/draw-display +cmap2rgba /man/2/draw-display +cmap8 /man/2/draw-display +cmd /man/1/9win +cmd /man/1/acme +cmd /man/1/alphabet-abc +cmd /man/1/alphabet-fs +cmd /man/1/alphabet-grid +cmd /man/1/alphabet-main +cmd /man/1/asm +cmd /man/1/auplay +cmd /man/1/avr +cmd /man/1/basename +cmd /man/1/bind +cmd /man/1/cal +cmd /man/1/cat +cmd /man/1/cd +cmd /man/1/chgrp +cmd /man/1/chmod +cmd /man/1/cleanname +cmd /man/1/cmp +cmd /man/1/comm +cmd /man/1/cook +cmd /man/1/cp +cmd /man/1/cprof +cmd /man/1/cpu +cmd /man/1/crypt +cmd /man/1/date +cmd /man/1/dd +cmd /man/1/diff +cmd /man/1/disdep +cmd /man/1/du +cmd /man/1/echo +cmd /man/1/emu +cmd /man/1/env +cmd /man/1/fmt +cmd /man/1/fortune +cmd /man/1/freq +cmd /man/1/fs +cmd /man/1/ftest +cmd /man/1/gettar +cmd /man/1/grep +cmd /man/1/grid-localreg +cmd /man/1/gzip +cmd /man/1/idea +cmd /man/1/itest +cmd /man/1/kill +cmd /man/1/lc +cmd /man/1/listen +cmd /man/1/look +cmd /man/1/ls +cmd /man/1/man +cmd /man/1/mash +cmd /man/1/mash-make +cmd /man/1/mash-tk +cmd /man/1/mathcalc +cmd /man/1/mc +cmd /man/1/mdb +cmd /man/1/mk +cmd /man/1/mkdir +cmd /man/1/mprof +cmd /man/1/mv +cmd /man/1/netkey +cmd /man/1/netstat +cmd /man/1/ns +cmd /man/1/nsbuild +cmd /man/1/os +cmd /man/1/p +cmd /man/1/passwd +cmd /man/1/plumb +cmd /man/1/prof +cmd /man/1/ps +cmd /man/1/pwd +cmd /man/1/rcmd +cmd /man/1/read +cmd /man/1/rm +cmd /man/1/runas +cmd /man/1/secstore +cmd /man/1/sendmail +cmd /man/1/session +cmd /man/1/sh +cmd /man/1/sh-alphabet +cmd /man/1/sh-arg +cmd /man/1/sh-csv +cmd /man/1/sh-expr +cmd /man/1/sh-file2chan +cmd /man/1/sh-regex +cmd /man/1/sh-sexprs +cmd /man/1/sh-std +cmd /man/1/sh-string +cmd /man/1/sh-tk +cmd /man/1/sleep +cmd /man/1/stack +cmd /man/1/stream +cmd /man/1/strings +cmd /man/1/sum +cmd /man/1/tcs +cmd /man/1/tee +cmd /man/1/telnet +cmd /man/1/time +cmd /man/1/timestamp +cmd /man/1/tkcmd +cmd /man/1/touch +cmd /man/1/tr +cmd /man/1/tsort +cmd /man/1/unicode +cmd /man/1/uniq +cmd /man/1/units +cmd /man/1/uuencode +cmd /man/1/wc +cmd /man/1/webgrab +cmd /man/1/wish +cmd /man/1/xd +cmd /man/1/yacc +cmd /man/1/zeros +cmd /man/10/ntsrv +cmd /man/10/odbc +cmd /man/2/command +cmd /man/2/scsiio +cmd /man/2/security-auth +cmd /man/2/sh +cmd /man/2/spree +cmd /man/2/spree-allow +cmd /man/2/tk +cmd /man/3/cmd +cmd /man/4/9srvfs +cmd /man/4/archfs +cmd /man/4/cpu +cmd /man/4/dbfs +cmd /man/4/dossrv +cmd /man/4/export +cmd /man/4/factotum +cmd /man/4/import +cmd /man/4/iostats +cmd /man/4/keyfs +cmd /man/4/keysrv +cmd /man/4/kfs +cmd /man/4/lockfs +cmd /man/4/logfile +cmd /man/4/memfs +cmd /man/4/mntgen +cmd /man/4/namespace +cmd /man/4/palmsrv +cmd /man/4/ramfile +cmd /man/4/registry +cmd /man/4/spree +cmd /man/4/tarfs +cmd /man/7/dbsrv +cmd /man/8/applylog +cmd /man/8/bootpd +cmd /man/8/changelogin +cmd /man/8/create +cmd /man/8/createsignerkey +cmd /man/8/cs +cmd /man/8/dhcp +cmd /man/8/dns +cmd /man/8/fpgaload +cmd /man/8/ftl +cmd /man/8/getauthinfo +cmd /man/8/init +cmd /man/8/kfscmd +cmd /man/8/logind +cmd /man/8/mangaload +cmd /man/8/manufacture +cmd /man/8/mkfs +cmd /man/8/ping +cmd /man/8/plumber +cmd /man/8/prep +cmd /man/8/rip +cmd /man/8/rstyxd +cmd /man/8/shutdown +cmd /man/8/signer +cmd /man/8/sntp +cmd /man/8/styxchat +cmd /man/8/styxmon +cmd /man/8/touchcal +cmd /man/8/virgild +cmd /man/9/0intro +cmd.c /man/3/cmd +cmd2string /man/2/sh +cmd640 /man/3/sd +cmdbuf /man/10/parsecmd +cmdchan /man/1/sh-file2chan +cmember /man/2/spree-cardlib +cmp /man/1/cmp +cmp /man/1/comm +cmp /man/1/diff +cmp /man/1/mash +cmp /man/1/sh-std +cmp /man/1/sh-test +cmp /man/1/sum +cmp /man/10/mk +cmp /man/2/keyring-ipint +cmp.b /man/1/cmp +cn /man/10/9load +cname /man/10/newchan +cname /man/8/dns +co /man/6/keyboard +coarse /man/1/wm-misc +coarser /man/2/sys-millisec +code /man/1/0intro +code /man/1/asm +code /man/1/avr +code /man/1/cprof +code /man/1/deb +code /man/1/limbo +code /man/1/miniterm +code /man/1/mprof +code /man/1/secstore +code /man/1/sh-file2chan +code /man/1/sh-std +code /man/1/sh-tk +code /man/1/tr +code /man/1/yacc +code /man/10/0intro +code /man/10/2c +code /man/10/2l +code /man/10/9load +code /man/10/c2l +code /man/10/conf +code /man/10/dmainit +code /man/10/dynld +code /man/10/inb +code /man/10/intrenable +code /man/10/kbdputc +code /man/10/lock +code /man/2/0intro +code /man/2/asn1 +code /man/2/convcs +code /man/2/dbm +code /man/2/debug +code /man/2/dhcpclient +code /man/2/dis +code /man/2/draw-0intro +code /man/2/draw-example +code /man/2/imagefile +code /man/2/keyring-crypt +code /man/2/math-0intro +code /man/2/palmfile +code /man/2/prefab-compound +code /man/2/print +code /man/2/prof +code /man/2/security-0intro +code /man/2/ubfa +code /man/2/w3c-xpointers +code /man/3/arch +code /man/3/boot +code /man/3/cmd +code /man/3/cons +code /man/3/dbg +code /man/3/flash +code /man/3/prog +code /man/3/ssl +code /man/3/tls +code /man/4/namespace +code /man/6/dis +code /man/6/image +code /man/6/login +code /man/6/scancode +code /man/9/0intro +code /man/9/text +codec /man/10/kproc +coded /man/2/convcs +coded /man/2/virgil +coded /man/8/virgild +codepage /man/2/convcs +codes /man/1/tr +codes /man/1/xd +codes /man/1/yacc +codes /man/10/acid +codes /man/10/error +codes /man/2/asn1 +codes /man/2/convcs +codes /man/2/dis +codes /man/2/ir +codes /man/2/scsiio +codes /man/3/cons +codes /man/6/scancode +coding /man/2/security-0intro +coff /man/10/5coff +coffee /man/1/wm-misc +coffee.b /man/1/wm-misc +coherently /man/2/sys-0intro +coldepth /man/2/print +collab /man/1/collab +collab /man/1/collab-clients +collab /man/8/collabsrv +collaboration /man/8/collabsrv +collaborative /man/1/collab +collaborative /man/1/collab-clients +collaborative /man/8/collabsrv +collabsrv /man/1/collab +collabsrv /man/1/collab-clients +collabsrv /man/8/collabsrv +collapses /man/1/ftree +collating /man/1/look +collected /man/2/sys-0intro +collected /man/2/sys-dup +collecting /man/10/kbdputc +collection /man/1/0intro +collection /man/1/math-misc +collection /man/1/secstore +collection /man/1/wm +collection /man/1/wm-misc +collection /man/10/0intro +collection /man/2/convcs +collection /man/2/draw-0intro +collection /man/2/keyring-0intro +collection /man/2/keyring-certtostr +collection /man/2/keyset +collection /man/2/prefab-environ +collection /man/2/sexprs +collection /man/2/spki-verifier +collection /man/2/sys-0intro +collection /man/3/ip +collection /man/4/factotum +collection /man/6/ndb +collection /man/9/menu +collection /man/9/scale +collector /man/2/registries +collector /man/5/clunk +collects /man/2/prefab-environ +collects /man/2/prefab-style +collide /man/10/sleep +collisions /man/8/prep +colon /man/1/acme +colon /man/1/charon +colon /man/1/mc +colon /man/1/mk +colon /man/1/tiny +colon /man/10/mk +colon /man/10/odbc +colon /man/2/ether +colon /man/2/ip +colon /man/3/pnp +colon /man/4/acme +colonies /man/1/cal +color /man/2/draw-0intro +color /man/2/draw-display +color /man/2/draw-image +color /man/2/prefab-element +color /man/2/prefab-style +color /man/2/print +color /man/2/tk +color /man/3/draw +color /man/3/vga +color /man/6/colour +color /man/9/text +color /man/9/types +colorkey /man/3/tv +colormap /man/3/draw +colormix /man/2/draw-display +colors /man/1/wm-misc +colors /man/2/prefab-environ +colors /man/6/colour +colors /man/9/menubutton +colors.b /man/1/wm-misc +colour /man/1/collab-clients +colour /man/1/cprof +colour /man/1/emu +colour /man/1/mprof +colour /man/1/prof +colour /man/1/wm-misc +colour /man/2/draw-0intro +colour /man/2/draw-display +colour /man/2/draw-example +colour /man/2/draw-image +colour /man/2/draw-screen +colour /man/2/imagefile +colour /man/2/mpeg +colour /man/2/prefab-0intro +colour /man/2/prefab-element +colour /man/2/prefab-style +colour /man/2/tk +colour /man/3/draw +colour /man/3/tv +colour /man/6/colour +colour /man/6/image +colour /man/8/collabsrv +colour /man/9/canvas +colour /man/9/checkbutton +colour /man/9/choicebutton +colour /man/9/frame +colour /man/9/menu +colour /man/9/options +colour /man/9/panel +colour /man/9/radiobutton +colour /man/9/scale +colour /man/9/text +colour /man/9/types +coloured /man/1/charon +coloured /man/1/collab-clients +coloured /man/1/cprof +coloured /man/2/draw-0intro +coloured /man/2/draw-display +coloured /man/9/canvas +colourmap /man/9/frame +colours /man/1/mprof +colours /man/1/prof +colours /man/2/draw-display +colours /man/2/draw-example +colours /man/2/imagefile +colours /man/2/prefab-0intro +colours /man/2/prefab-style +colours /man/6/colour +colours /man/9/button +colours /man/9/canvas +colours /man/9/checkbutton +colours /man/9/choicebutton +colours /man/9/entry +colours /man/9/frame +colours /man/9/label +colours /man/9/listbox +colours /man/9/menu +colours /man/9/radiobutton +colours /man/9/scale +colours /man/9/scrollbar +colours /man/9/text +column /man/1/acme +column /man/1/comm +column /man/1/ls +column /man/1/miniterm +column /man/1/tktester +column /man/10/odbc +column /man/6/man +column /man/7/db +column /man/9/grid +column /man/9/menu +column2 /man/9/grid +columnated /man/1/acme +columnconfigure /man/9/grid +columndelete /man/9/grid +columnindex /man/9/grid +columninsert /man/9/grid +columns /man/1/acme +columns /man/1/lc +columns /man/1/ps +columns /man/1/tktester +columns /man/10/odbc +columns /man/6/man +columns /man/7/db +columns /man/9/grid +columnspan /man/1/tktester +columnspan /man/9/grid +columnspans /man/9/grid +columntitle /man/7/db +com /man/1/webgrab +com /man/10/9load +com /man/10/plan9.ini +com /man/2/w3c-css +com1 /man/10/plan9.ini +com2 /man/10/plan9.ini +com2:96,n,8,1,p /man/10/plan9.ini +comand /man/1/charon +combination /man/1/charon +combination /man/1/chmod +combination /man/1/tr +combination /man/1/units +combination /man/10/kbdputc +combination /man/2/draw-0intro +combination /man/2/hash +combination /man/2/ip +combination /man/2/keyring-0intro +combination /man/2/prof +combination /man/2/security-0intro +combination /man/2/sets +combination /man/2/spki +combination /man/2/tkclient +combination /man/2/wmclient +combination /man/8/applylog +combination /man/8/dns +combination /man/9/bind +combination /man/9/grid +combinations /man/10/0intro +combinations /man/2/dis +combinations /man/2/draw-example +combinations /man/2/filepat +combinator /man/2/w3c-css +combine /man/1/acme +combine /man/10/ar +combine /man/2/draw-image +combine /man/2/draw-rect +combine /man/3/draw +combine /man/3/ssl +combine /man/9/bind +combined /man/10/iar +combined /man/2/bloomfilter +combined /man/2/draw-0intro +combined /man/3/vga +combined /man/5/0intro +combined /man/9/bind +combined /man/9/menu +combines /man/2/secstore +combining /man/2/sets +combo /man/10/plan9.ini +comes /man/10/memory +comes /man/2/asn1 +comes /man/3/pipe +comes /man/3/tls +comfortably /man/6/image +comm /man/1/comm +comm /man/1/uniq +comm.b /man/1/comm +comma /man/1/charon +comma /man/1/mc +comma /man/1/sh-csv +comma /man/6/users +command's /man/1/mash +command's /man/1/mash-tk +command's /man/1/os +command's /man/1/time +command's /man/3/cmd +command's /man/9/text +command.com /man/10/plan9.ini +command1 /man/1/mash +command2 /man/1/mash +commas /man/10/acid +commas /man/10/plan9.ini +commas /man/10/print +commas /man/2/sys-print +commas /man/9/grid +commence /man/1/session +comment /man/1/bind +comment /man/1/charon +comment /man/1/tiny +comment /man/1/webgrab +comment /man/1/yacc +comment /man/10/2c +comment /man/10/conf +comment /man/2/w3c-xpointers +comment /man/6/ubfa +comment /man/8/applylog +comment /man/8/srv +commentary /man/6/attrdb +commentary /man/6/man +comments /man/1/charon +comments /man/1/mc +comments /man/1/mk +comments /man/1/yacc +comments /man/10/dynld +comments /man/10/mk +comments /man/10/styx +comments /man/2/cfg +comments /man/2/draw-example +comments /man/4/factotum +comments /man/6/plumbing +comments /man/6/ubfa +comments /man/8/srv +commercial /man/1/crypt +commercial /man/10/9load +commercial /man/2/keyring-crypt +commercial /man/9/1copyright +commit /man/10/odbc +commited /man/10/odbc +commits /man/2/spree-cardlib +committed /man/2/venti +committed /man/5/stat +committing /man/2/spree +commmand /man/2/scsiio +common /man/1/acme +common /man/1/alphabet-fs +common /man/1/blur +common /man/1/comm +common /man/1/fs +common /man/1/grid-monitor +common /man/1/itest +common /man/1/mux +common /man/10/2a +common /man/10/9load +common /man/10/devattach +common /man/10/plan9.ini +common /man/2/0intro +common /man/2/draw-0intro +common /man/2/draw-display +common /man/2/draw-image +common /man/2/encoding +common /man/2/ip +common /man/2/keyring-0intro +common /man/2/spki +common /man/2/spree-gather +common /man/2/styxservers +common /man/2/sys-dial +common /man/2/ubfa +common /man/2/w3c-xpointers +common /man/2/xml +common /man/3/cons +common /man/3/draw +common /man/3/srv9 +common /man/6/colour +common /man/6/keytext +common /man/6/ndb +common /man/6/scancode +common /man/6/sexprs +common /man/8/prep +common /man/8/rip +common /man/9/0intro +common /man/9/menu +common /man/9/options +commonly /man/1/0intro +commonly /man/1/mash-make +commonly /man/10/odbc +commonly /man/10/sleep +commonly /man/2/crc +commonly /man/2/dhcpclient +commonly /man/2/keyring-0intro +commonly /man/2/scsiio +commonly /man/2/styxservers +commonly /man/2/sys-export +commonly /man/2/sys-fauth +commonly /man/3/ip +commonly /man/3/rtc +commonly /man/4/mntgen +commonly /man/6/ndb +commonly /man/6/regexp +commonly /man/9/canvas +commonly /man/9/menu +communicable /man/3/logfs +communicate /man/1/sh-tk +communicate /man/2/dhcpclient +communicate /man/2/security-0intro +communicate /man/2/spree +communicate /man/2/sys-dial +communicate /man/2/sys-file2chan +communicate /man/3/pbus +communicate /man/3/plap +communicate /man/4/spree +communicate /man/8/collabsrv +communicate /man/8/logind +communicate /man/8/register +communicate /man/9/grid +communicate /man/9/options +communicate /man/9/pack +communicated /man/10/styxserver +communicated /man/2/sys-stat +communicated /man/3/tls +communicates /man/2/security-login +communicating /man/1/charon +communicating /man/2/keyring-0intro +communicating /man/2/keyring-auth +communicating /man/2/security-0intro +communicating /man/2/spree +communicating /man/3/lpt +communication /man/1/blur +communication /man/1/sh-tk +communication /man/10/styxserver +communication /man/2/factotum +communication /man/2/ir +communication /man/2/keyring-certtostr +communication /man/2/keyring-getstring +communication /man/2/keyring-sha1 +communication /man/2/plumbmsg +communication /man/2/security-0intro +communication /man/2/styxservers +communication /man/2/sys-pipe +communication /man/2/wmsrv +communication /man/3/eia +communication /man/3/ip +communication /man/3/mnt +communication /man/3/pipe +communication /man/5/0intro +communication /man/5/version +communication /man/6/ubfa +communications /man/10/devattach +communications /man/2/keyring-0intro +communications /man/2/security-0intro +communications /man/2/sys-dial +communications /man/3/mnt +communications /man/3/tls +communications /man/6/auth +commutative /man/1/fc +comp /man/2/prefab-compound +compact /man/1/keyboard +compact /man/2/readdir +compact /man/4/dbfs +compact /man/6/dis +companion /man/3/ip +comparator /man/1/alphabet-fs +comparator /man/1/diff +comparator /man/1/fs +compare /man/1/cmp +compare /man/1/diff +compare /man/1/look +compare /man/1/mash +compare /man/1/sh-std +compare /man/1/sort +compare /man/2/keyring-0intro +compare /man/2/styx +compare /man/9/text +compared /man/1/cmp +compared /man/1/diff +compared /man/2/daytime +compared /man/2/w3c-css +compared /man/3/ssl +compared /man/6/image +compared /man/8/signer +compared /man/9/grid +compares /man/1/alphabet-fs +compares /man/1/avr +compares /man/1/fs +compares /man/10/memory +compares /man/10/newchan +compares /man/10/strcat +compares /man/2/keyring-ipint +compares /man/2/security-0intro +compares /man/9/text +comparing /man/1/uniq +comparing /man/2/sys-stat +comparison /man/1/cmp +comparison /man/1/look +comparison /man/10/eve +comparison /man/10/memory +comparison /man/10/newchan +comparison /man/10/strcat +comparison /man/2/asn1 +comparison /man/2/convcs +comparison /man/2/stringinttab +comparison /man/2/sys-0intro +comparison /man/2/sys-stat +comparison /man/2/w3c-css +comparison /man/2/xml +comparison /man/3/ssl +comparison /man/6/plumbing +comparisons /man/1/look +comparisons /man/1/sort +comparisons /man/10/strcat +comparisons /man/6/keytext +compatibility /man/10/9load +compatibility /man/10/ar +compatibility /man/10/kproc +compatibility /man/2/popup +compatibility /man/4/acme +compatibility /man/6/colour +compatibility /man/6/keytext +compatible /man/1/alphabet-abc +compatible /man/1/alphabet-grid +compatible /man/1/alphabet-main +compatible /man/1/crypt +compatible /man/1/gzip +compatible /man/1/sh-alphabet +compatible /man/10/2c +compatible /man/10/devattach +compatible /man/10/plan9.ini +compatible /man/10/styxserver +compatible /man/2/asn1 +compatible /man/2/bufio +compatible /man/2/debug +compatible /man/2/filter-deflate +compatible /man/2/format +compatible /man/2/ip +compatible /man/2/sets +compatible /man/2/styx +compatible /man/2/sys-self +compatible /man/3/i82365 +compatible /man/6/utf +compensate /man/10/dmainit +compensate /man/3/touch +compensates /man/3/ftl +competing /man/1/tiny +compilation /man/1/deb +compilation /man/1/limbo +compilation /man/1/mk +compilation /man/10/0intro +compilation /man/10/2c +compilation /man/10/2l +compilation /man/10/mk +compilation /man/2/0intro +compilation /man/2/regex +compilation /man/3/cons +compile /man/1/0intro +compile /man/1/emu +compile /man/1/mash-make +compile /man/1/mk +compile /man/10/2c +compile /man/10/mk +compile /man/10/styxserver +compile /man/2/math-0intro +compile /man/2/regex +compiled /man/1/0intro +compiled /man/1/cprof +compiled /man/1/itest +compiled /man/1/mprof +compiled /man/1/prof +compiled /man/1/stack +compiled /man/10/9load +compiled /man/10/a.out +compiled /man/10/conf +compiled /man/2/regex +compiled /man/3/prog +compiled /man/6/dis +compiled /man/6/sbl +compiler /man/1/emu +compiler /man/1/limbo +compiler /man/1/yacc +compiler /man/10/0intro +compiler /man/10/2c +compiler /man/10/2l +compiler /man/10/a.out +compiler /man/10/c2l +compiler /man/2/hash +compiler /man/2/math-0intro +compiler /man/2/sys-print +compiler /man/6/dis +compiler /man/6/sbl +compiler /man/6/utf +compiler /man/8/styxchat +compiler's /man/10/dynld +compilers /man/1/acme +compilers /man/10/2c +compilers /man/10/a.out +compiles /man/1/0intro +compiles /man/1/filename +compiles /man/1/limbo +compiling /man/10/0intro +compiling /man/10/2c +compiling /man/10/conf +complain /man/1/mkdir +complement /man/1/acme +complement /man/1/listen +complement /man/1/mathcalc +complement /man/1/sh-expr +complement /man/1/tr +complement /man/2/bufio +complement /man/2/draw-display +complement /man/3/audio +complement /man/6/audio +complement /man/6/dis +complementary /man/2/draw-image +complementary /man/3/draw +complemented /man/1/sh +complements /man/2/sys-dial +complete /man/1/acme +complete /man/1/alphabet-fs +complete /man/1/charon +complete /man/1/fs +complete /man/1/mash-tk +complete /man/1/sh +complete /man/1/sh-alphabet +complete /man/1/units +complete /man/1/yacc +complete /man/10/5cv +complete /man/10/acid +complete /man/10/devattach +complete /man/10/kbdputc +complete /man/10/odbc +complete /man/10/print +complete /man/10/styx +complete /man/10ti925/epocimg +complete /man/10ti925/tihost +complete /man/2/asn1 +complete /man/2/registries +complete /man/2/spree-cardlib +complete /man/2/styx +complete /man/2/styxservers-nametree +complete /man/2/sys-export +complete /man/2/sys-utfbytes +complete /man/2/w3c-css +complete /man/2/wait +complete /man/3/cons +complete /man/4/acme +complete /man/5/0intro +complete /man/5/attach +complete /man/6/sexprs +complete /man/9/canvas +complete /man/9/text +completed /man/1/alphabet-main +completed /man/1/blur +completed /man/1/sh +completed /man/1/sh-alphabet +completed /man/1/wm-sh +completed /man/2/itslib +completed /man/2/keyring-0intro +completed /man/2/keyring-sha1 +completed /man/2/tftp +completed /man/3/cmd +completed /man/5/flush +completely /man/1/0intro +completely /man/1/acme +completely /man/10/2c +completely /man/10/dev +completely /man/10/plan9.ini +completely /man/2/draw-rect +completely /man/2/security-auth +completely /man/2/sys-pctl +completely /man/2/w3c-xpointers +completely /man/3/fpga +completely /man/4/dbfs +completely /man/9/button +completely /man/9/canvas +completely /man/9/checkbutton +completely /man/9/entry +completely /man/9/menubutton +completely /man/9/radiobutton +completely /man/9/text +completeness /man/1/mc +completeness /man/2/plumbmsg +completes /man/1/mash +completes /man/2/mpeg +completes /man/3/pbus +completion /man/1/cprof +completion /man/1/mprof +completion /man/1/prof +completion /man/1/sh +completion /man/8/applylog +completion /man/8/register +complex /man/1/acme +complex /man/1/grid-monitor +complex /man/1/mash-tk +complex /man/10/acid +complex /man/10/devattach +complex /man/10/error +complex /man/10/intrenable +complex /man/2/prefab-compound +complex /man/2/security-0intro +complex /man/2/sexprs +complex /man/2/w3c-css +complex /man/2/w3c-xpointers +complex /man/3/ds +complex /man/5/0intro +complex /man/8/httpd +complex /man/9/frame +complexity /man/2/keyring-gensk +complexity /man/6/login +compliant /man/1/charon +compliant /man/3/vga +complicated /man/1/grid-query +complicated /man/10/styxserver +component /man/1/0intro +component /man/1/basename +component /man/1/charon +component /man/1/secstore +component /man/1/sh +component /man/1/webgrab +component /man/10/5cv +component /man/10/a.out +component /man/10/conf +component /man/10/devattach +component /man/10/dynld +component /man/2/asn1 +component /man/2/debug +component /man/2/dhcpclient +component /man/2/draw-0intro +component /man/2/draw-display +component /man/2/format +component /man/2/names +component /man/2/palmfile +component /man/2/prefab-element +component /man/2/print +component /man/2/secstore +component /man/2/security-0intro +component /man/2/security-login +component /man/2/styxservers-nametree +component /man/2/sys-dial +component /man/2/sys-fd2path +component /man/2/ubfa +component /man/3/tv +component /man/6/colour +component /man/6/ndb +component /man/9/types +components /man/1/0intro +components /man/1/acme +components /man/1/alphabet-abc +components /man/1/alphabet-grid +components /man/1/charon +components /man/1/mash +components /man/1/mash-make +components /man/1/mash-tk +components /man/1/plumb +components /man/1/sh +components /man/10/a.out +components /man/10/conf +components /man/10/devattach +components /man/10/dynld +components /man/10/inm +components /man/10/kproc +components /man/10/odbc +components /man/2/0intro +components /man/2/asn1 +components /man/2/draw-0intro +components /man/2/draw-display +components /man/2/draw-image +components /man/2/fsproto +components /man/2/ida +components /man/2/plumbmsg +components /man/2/prefab-0intro +components /man/2/prefab-element +components /man/2/print +components /man/2/ubfa +components /man/2/w3c-css +components /man/2/w3c-xpointers +components /man/5/0intro +components /man/6/colour +components /man/9/types +compose /man/1/alphabet-fs +compose /man/1/fs +compose /man/2/math-fp +compose /man/6/keyboard +composed /man/1/acme +composed /man/2/asn1 +composite /man/2/translate +compositing /man/1/alphabet-fs +compositing /man/1/fs +compositing /man/2/draw-image +compositing /man/6/colour +composition /man/2/asn1 +compound /man/1/acme +compound /man/1/mash +compound /man/1/sh +compound /man/1/units +compound /man/2/prefab-0intro +compound /man/2/prefab-compound +compound /man/2/prefab-element +compound /man/2/prefab-environ +compound /man/2/prefab-style +compound /man/2/spki +compound /man/2/ubfa +compound /man/2/w3c-xpointers +compound /man/3/ds +compound /man/4/acme +compound /man/6/ubfa +compound.box /man/2/prefab-compound +compound.contents /man/2/prefab-compound +compound.draw /man/2/prefab-compound +compound.draw /man/2/prefab-element +compound.highlight /man/2/prefab-compound +compound.iconbox /man/2/prefab-compound +compound.image /man/2/prefab-compound +compound.layoutbox /man/2/prefab-compound +compound.r /man/2/prefab-compound +compound.redraw /man/2/prefab-compound +compound.scroll /man/2/prefab-compound +compound.select /man/2/prefab-compound +compound.show /man/2/prefab-compound +compound.tagselect /man/2/prefab-compound +compound.tagselect /man/2/prefab-element +compound.textbox /man/2/prefab-compound +compounds /man/2/prefab-0intro +compounds /man/2/prefab-compound +compounds /man/2/prefab-element +compounds /man/2/prefab-style +compress /man/10/5cv +compress /man/3/ip +compressed /man/10/5cv +compressed /man/10/9load +compressed /man/2/palmfile +compressed /man/2/spree +compressed /man/2/xml +compressed /man/3/draw +compressed /man/6/image +compressed /man/8/rdbgsrv +compresses /man/1/gzip +compresses /man/10/5cv +compression /man/1/gzip +compression /man/10/5cv +compression /man/2/filter +compression /man/2/filter-deflate +compression /man/6/image +comprised /man/1/deb +comprised /man/2/asn1 +comprised /man/2/cfg +comprised /man/2/convcs +comprises /man/1/look +comprises /man/2/draw-0intro +comprising /man/1/sh +comprising /man/2/asn1 +comprising /man/2/pop3 +comprising /man/6/image +comprising /man/6/keyboard +compromise /man/2/xml +computation /man/2/draw-0intro +computation /man/2/prefab-compound +computation /man/2/sys-0intro +computation /man/6/auth +computational /man/2/dict +computations /man/6/colour +compute /man/2/hash +compute /man/2/prefab-element +compute /man/2/sys-utfbytes +compute /man/3/touch +compute /man/9/grid +computed /man/1/acme +computed /man/1/du +computed /man/1/mk +computed /man/10/a.out +computed /man/10/mk +computed /man/2/math-elem +computed /man/2/spki +computed /man/3/cap +computed /man/3/ssl +computed /man/6/keytext +computed /man/9/button +computed /man/9/checkbutton +computed /man/9/choicebutton +computed /man/9/grid +computed /man/9/label +computed /man/9/menubutton +computed /man/9/panel +computed /man/9/radiobutton +computer /man/2/draw-image +computer /man/2/security-0intro +computer /man/3/i82365 +computer /man/9/1copyright +computers /man/2/security-0intro +computers /man/2/sexprs +computers /man/6/sexprs +computes /man/2/draw-rect +computes /man/2/keyring-sha1 +computes /man/2/math-elem +computes /man/2/math-linalg +computes /man/6/colour +computes /man/9/grid +computes /man/9/pack +computes /man/9/text +computing /man/2/math-0intro +computing /man/2/math-fp +computing /man/9/options +con /man/1/yacc +con /man/2/bufio +con /man/2/command +con /man/2/convcs +con /man/2/draw-display +con /man/2/draw-example +con /man/2/draw-image +con /man/2/ether +con /man/2/factotum +con /man/2/format +con /man/2/geodesy +con /man/2/itslib +con /man/2/keyring-crypt +con /man/2/prefab-element +con /man/2/print +con /man/2/prof +con /man/2/readdir +con /man/2/scsiio +con /man/2/secstore +con /man/2/styx +con /man/2/styxservers-nametree +con /man/2/sys-stat +con /man/2/tkclient +con /man/2/w3c-xpointers +con /man/2/wmclient +concatblock /man/10/allocb +concatenate /man/1/cat +concatenate /man/1/mash +concatenated /man/1/mash +concatenated /man/1/sh +concatenated /man/1/sh-string +concatenated /man/10/iar +concatenated /man/6/regexp +concatenates /man/1/cat +concatenates /man/1/mash +concatenates /man/1/sh +concatenating /man/2/attrdb +concatenating /man/2/spree +concatenating /man/6/attrdb +concatenating /man/9/options +concatenation /man/1/mash +concatenation /man/1/sh +concatenation /man/1/sh-std +concatenation /man/2/keyring-0intro +concatenation /man/2/keyring-sha1 +concatenation /man/2/w3c-css +concatenation /man/6/keytext +concatenations /man/2/sys-0intro +conceal /man/2/spree-cardlib +concealed /man/2/spree +concealed /man/4/spree +conceals /man/2/spree +conceals /man/4/spree +concentrate /man/10/devattach +concentrating /man/6/colour +concentrators /man/10/plan9.ini +concepts /man/1/0intro +conceptually /man/3/draw +concerns /man/1/tiny +conclusion /man/2/draw-image +concrete /man/2/w3c-css +concrete /man/2/w3c-xpointers +concurrent /man/1/0intro +concurrent /man/1/charon +concurrent /man/1/sh +concurrent /man/1/sh-file2chan +concurrent /man/10/qio +concurrent /man/10/qlock +concurrent /man/10/ref +concurrent /man/2/dbm +concurrent /man/3/pipe +concurrently /man/1/blur +concurrently /man/1/charon +concurrently /man/2/bufio +concurrently /man/2/sys-0intro +concurrently /man/2/sys-read +condition /man/1/alphabet-fs +condition /man/1/bind +condition /man/1/cprof +condition /man/1/fs +condition /man/1/sh +condition /man/1/sh-std +condition /man/10/error +condition /man/10/sleep +condition /man/2/sys-bind +condition /man/3/eia +conditional /man/1/alphabet-fs +conditional /man/1/fs +conditional /man/1/mathcalc +conditional /man/1/mc +conditional /man/1/sh +conditional /man/3/dbg +conditionals /man/1/acme +conditions /man/1/mk +conditions /man/10/error +conditions /man/10/mk +conditions /man/2/draw-image +conditions /man/2/keyset +conditions /man/2/styxservers +conditions /man/3/usb +conditions /man/5/flush +conditions /man/5/stat +conduit /man/2/palmfile +conf /man/10/conf +conf /man/2/dhcpclient +conf /man/3/dbg +confidential /man/2/security-0intro +confidentiality /man/2/security-0intro +config /man/1/charon +config /man/1/tktester +config /man/1/webgrab +config /man/10/dev +config /man/2/print +config /man/3/fpga +config /man/3/logfs +config /man/3/sd +config /man/8/srv +config.sys /man/10/plan9.ini +configfile /man/1/itest +configs /man/2/dhcpclient +configurability /man/10/plan9.ini +configurable /man/10/plan9.ini +configurable /man/3/ip +configurable /man/3/pnp +configuration /man/1/charon +configuration /man/1/collab +configuration /man/1/deb +configuration /man/1/itest +configuration /man/1/mk +configuration /man/1/mux +configuration /man/1/tiny +configuration /man/1/toolbar +configuration /man/1/webgrab +configuration /man/10/0intro +configuration /man/10/9load +configuration /man/10/conf +configuration /man/10/dev +configuration /man/10/mk +configuration /man/10/panic +configuration /man/10/plan9.ini +configuration /man/2/cfg +configuration /man/2/dhcpclient +configuration /man/2/print +configuration /man/2/tftp +configuration /man/3/cons +configuration /man/3/dbg +configuration /man/3/ds +configuration /man/3/fpga +configuration /man/3/ip +configuration /man/3/logfs +configuration /man/3/mpeg +configuration /man/3/pnp +configuration /man/3/sd +configuration /man/3/usb +configuration /man/3/vga +configuration /man/3/vid +configuration /man/4/cpu +configuration /man/4/namespace +configuration /man/6/attrdb +configuration /man/6/ndb +configuration /man/8/0intro +configuration /man/8/bootpd +configuration /man/8/collabsrv +configuration /man/8/cs +configuration /man/8/dhcp +configuration /man/8/dns +configuration /man/8/fpgaload +configuration /man/8/getauthinfo +configuration /man/8/init +configuration /man/8/prep +configuration /man/8/srv +configuration /man/9/button +configuration /man/9/canvas +configuration /man/9/checkbutton +configuration /man/9/choicebutton +configuration /man/9/entry +configuration /man/9/frame +configuration /man/9/grid +configuration /man/9/label +configuration /man/9/listbox +configuration /man/9/menu +configuration /man/9/menubutton +configuration /man/9/options +configuration /man/9/pack +configuration /man/9/panel +configuration /man/9/radiobutton +configuration /man/9/scale +configuration /man/9/scrollbar +configuration /man/9/text +configurations /man/1/wish +configurations /man/10/conf +configurations /man/10/plan9.ini +configurations /man/3/ip +configurations /man/6/ndb +configure /man/1/emu +configure /man/1/session +configure /man/1/tktester +configure /man/10/plan9.ini +configure /man/2/dhcpclient +configure /man/2/sys-stat +configure /man/3/vga +configure /man/4/cpu +configure /man/8/0intro +configure /man/8/dhcp +configure /man/8/fpgaload +configure /man/8/httpd +configure /man/8/rip +configure /man/8/svc +configure /man/9/bind +configure /man/9/button +configure /man/9/canvas +configure /man/9/checkbutton +configure /man/9/choicebutton +configure /man/9/entry +configure /man/9/frame +configure /man/9/grid +configure /man/9/label +configure /man/9/listbox +configure /man/9/menu +configure /man/9/menubutton +configure /man/9/options +configure /man/9/pack +configure /man/9/panel +configure /man/9/radiobutton +configure /man/9/scale +configure /man/9/scrollbar +configure /man/9/text +configured /man/1/charon +configured /man/1/collab-clients +configured /man/1/secstore +configured /man/1/session +configured /man/10/dev +configured /man/10/dmainit +configured /man/10/intrenable +configured /man/10/odbc +configured /man/10/plan9.ini +configured /man/2/dhcpclient +configured /man/2/secstore +configured /man/3/cons +configured /man/3/dbg +configured /man/3/ds +configured /man/3/fpga +configured /man/3/indir +configured /man/3/ip +configured /man/3/logfs +configured /man/3/pnp +configured /man/3/prog +configured /man/3/root +configured /man/3/sign +configured /man/3/snarf +configured /man/3/tls +configured /man/3/usb +configured /man/6/audio +configured /man/7/dbsrv +configured /man/8/collabsrv +configured /man/8/register +configured /man/8/srv +configured /man/9/bind +configured /man/9/checkbutton +configured /man/9/choicebutton +configured /man/9/grid +configured /man/9/menu +configured /man/9/radiobutton +configures /man/1/toolbar +configures /man/10/plan9.ini +configures /man/3/fpga +configures /man/3/logfs +configures /man/3/vga +configures /man/8/dhcp +configures /man/8/fpgaload +configuring /man/1/session +configuring /man/10/qio +configuring /man/2/dividers +configuring /man/3/pnp +confine /man/9/canvas +confine /man/9/grab +confined /man/3/draw +confirmation /man/4/factotum +confirmed /man/1/passwd +confirmed /man/8/svc +conflict /man/10/2c +conflict /man/10/acid +conflict /man/3/pnp +conflict /man/8/applylog +conflict /man/9/text +conflicts /man/1/yacc +conflicts /man/3/pnp +conflicts /man/8/applylog +conform /man/1/bind +conform /man/1/sh +conform /man/1/sh-alphabet +conform /man/2/alphabet-intro +conform /man/2/filter-deflate +conform /man/9/cursor +conformance /man/10/2c +conforming /man/2/format +conforms /man/2/convcs +confused /man/1/0intro +confused /man/1/charon +confused /man/2/sys-0intro +confused /man/6/image +confused /man/8/prep +confusing /man/1/0intro +confusing /man/1/sh-expr +confusion /man/4/dbfs +congruent /man/2/draw-display +congruent /man/3/draw +conjunction /man/1/grid-ns +conjunction /man/1/mdb +conjunction /man/1/mk +conjunction /man/10/mk +conjunction /man/2/styxservers-nametree +conjunction /man/4/acme +conjunction /man/4/cpu +conjunction /man/4/factotum +conjunction /man/7/db +conjunction /man/8/prep +conjunction /man/9/text +conn /man/2/secstore +connect /man/1/acme +connect /man/1/alphabet-abc +connect /man/1/alphabet-grid +connect /man/1/collab +connect /man/1/collab-clients +connect /man/1/miniterm +connect /man/1/secstore +connect /man/1/spree-join +connect /man/10/odbc +connect /man/2/registries +connect /man/2/secstore +connect /man/2/security-0intro +connect /man/2/security-ssl +connect /man/2/sys-pipe +connect /man/2/wmlib +connect /man/3/ether +connect /man/3/ip +connect /man/3/mnt +connect /man/3/plap +connect /man/4/ftpfs +connect /man/4/keysrv +connect /man/7/db +connect /man/8/collabsrv +connect /man/8/cs +connect /man/8/mangaload +connect.b /man/1/collab +connected /man/1/alphabet-main +connected /man/1/avr +connected /man/1/mash +connected /man/1/miniterm +connected /man/1/sh-std +connected /man/1/stream +connected /man/1/wm +connected /man/2/draw-context +connected /man/2/prefab-compound +connected /man/2/styxconv +connected /man/2/sys-bind +connected /man/2/sys-file2chan +connected /man/3/ip +connected /man/3/pipe +connected /man/3/plap +connected /man/3/srv9 +connected /man/4/dossrv +connected /man/4/palmsrv +connected /man/8/collabsrv +connected /man/8/rip +connected /man/8/rstyxd +connected /man/9/canvas +connecting /man/1/miniterm +connecting /man/10/devattach +connecting /man/10/plan9.ini +connecting /man/8/cs +connecting /man/9/canvas +connection /man/1/alphabet-main +connection /man/1/bind +connection /man/1/collab +connection /man/1/collab-clients +connection /man/1/dmview +connection /man/1/grid-monitor +connection /man/1/grid-register +connection /man/1/listen +connection /man/1/ls +connection /man/1/miniterm +connection /man/1/netstat +connection /man/1/ns +connection /man/1/passwd +connection /man/1/secstore +connection /man/1/telnet +connection /man/1/webgrab +connection /man/10/odbc +connection /man/2/draw-0intro +connection /man/2/draw-context +connection /man/2/draw-display +connection /man/2/draw-example +connection /man/2/draw-image +connection /man/2/drawmux +connection /man/2/keyring-0intro +connection /man/2/keyring-auth +connection /man/2/keyring-getmsg +connection /man/2/keyring-ipint +connection /man/2/plumbmsg +connection /man/2/pop3 +connection /man/2/registries +connection /man/2/scsiio +connection /man/2/secstore +connection /man/2/security-0intro +connection /man/2/security-auth +connection /man/2/security-ssl +connection /man/2/sexprs +connection /man/2/smtp +connection /man/2/styxconv +connection /man/2/styxpersist +connection /man/2/styxservers +connection /man/2/sys-bind +connection /man/2/sys-dial +connection /man/2/sys-export +connection /man/2/sys-fauth +connection /man/2/sys-fversion +connection /man/2/tkclient +connection /man/2/venti +connection /man/2/wmclient +connection /man/2/wmlib +connection /man/2/wmsrv +connection /man/3/cmd +connection /man/3/dbg +connection /man/3/draw +connection /man/3/ether +connection /man/3/ip +connection /man/3/mnt +connection /man/3/plap +connection /man/3/ssl +connection /man/3/tls +connection /man/4/cpu +connection /man/4/export +connection /man/4/factotum +connection /man/4/ftpfs +connection /man/4/import +connection /man/4/keysrv +connection /man/4/lockfs +connection /man/4/mntgen +connection /man/4/palmsrv +connection /man/4/registry +connection /man/5/0intro +connection /man/5/attach +connection /man/5/version +connection /man/7/db +connection /man/8/collabsrv +connection /man/8/cs +connection /man/8/rstyxd +connection /man/8/srv +connection /man/8/styxchat +connection /man/8/virgild +connection's /man/1/listen +connection's /man/2/security-ssl +connectionless /man/3/ip +connections /man/1/bind +connections /man/1/grid-localreg +connections /man/1/grid-monitor +connections /man/1/grid-ns +connections /man/1/grid-register +connections /man/1/listen +connections /man/1/netstat +connections /man/10/odbc +connections /man/2/keyring-getmsg +connections /man/2/keyring-getstring +connections /man/2/plumbmsg +connections /man/2/registries +connections /man/2/security-auth +connections /man/2/sys-dial +connections /man/2/sys-stat +connections /man/3/ip +connections /man/3/plap +connections /man/3/ssl +connections /man/4/cpu +connections /man/4/import +connections /man/4/lockfs +connections /man/4/palmsrv +connections /man/4/registry +connects /man/1/alphabet-abc +connects /man/1/alphabet-grid +connects /man/1/miniterm +connects /man/1/passwd +connects /man/1/secstore +connects /man/1/sendmail +connects /man/1/sh +connects /man/1/telnet +connects /man/1/webgrab +connects /man/10/styxserver +connects /man/2/security-0intro +connects /man/2/security-login +connects /man/3/draw +connects /man/4/ftpfs +connects /man/8/collabsrv +connects /man/8/register +connfd /man/10/styxserver +connfd /man/2/draw-context +cons /man/1/9win +cons /man/1/cd +cons /man/1/charon +cons /man/1/crypt +cons /man/1/date +cons /man/1/emu +cons /man/1/ftest +cons /man/1/logon +cons /man/1/mash +cons /man/1/netkey +cons /man/1/runas +cons /man/1/tiny +cons /man/1/tkcmd +cons /man/1/wm-sh +cons /man/10/dev +cons /man/10/kbdputc +cons /man/10/kproc +cons /man/2/daytime +cons /man/2/keyring-auth +cons /man/2/security-random +cons /man/3/boot +cons /man/3/cap +cons /man/3/cons +cons /man/3/indir +cons /man/3/rtc +cons /man/4/acme +cons /man/4/namespace +cons /man/4/spree +cons /man/6/keyboard +cons /man/6/scancode +cons /man/8/getauthinfo +cons /man/8/rstyxd +cons /man/8/shutdown +cons /man/8/sntp +cons /man/8/styxchat +consattach /man/10/dev +consclose /man/10/dev +consctl /man/1/9win +consctl /man/1/wm-sh +consctl /man/3/cons +consctl /man/4/acme +consdevtab /man/10/dev +consecutive /man/1/sh-file2chan +consecutive /man/1/strings +consecutive /man/10/acid +consecutive /man/10/print +consecutive /man/3/prog +consecutively /man/1/sh-regex +consequence /man/2/bufio +consequence /man/6/sexprs +consequences /man/10/error +consequential /man/9/1copyright +consequently /man/10/dev +consequently /man/10/devattach +consequently /man/10/xalloc +consequently /man/2/asn1 +consequently /man/2/palmfile +consequently /man/8/cs +conserve /man/3/fpga +consider /man/1/math-misc +consider /man/2/0intro +consider /man/2/asn1 +consider /man/5/remove +consider /man/5/stat +consider /man/8/applylog +consideration /man/8/applylog +considerations /man/1/sh-std +considerations /man/10/9load +considerations /man/2/keyring-0intro +considerations /man/2/security-0intro +considerations /man/8/prep +considered /man/1/cal +considered /man/1/mk +considered /man/1/sh-file2chan +considered /man/10/mk +considered /man/10/rune +considered /man/10/strcat +considered /man/2/draw-rect +considered /man/2/geodesy +considered /man/2/keyset +considered /man/2/sys-print +considered /man/2/sys-stat +considered /man/5/flush +considered /man/6/keytext +considered /man/8/srv +considered /man/9/canvas +considered /man/9/text +considers /man/10/styxserver +consinit /man/10/dev +consist /man/1/yacc +consist /man/10/plan9.ini +consist /man/2/devpointer +consist /man/2/spree-cardlib +consist /man/2/sys-0intro +consist /man/4/factotum +consist /man/8/prep +consist /man/9/canvas +consist /man/9/grid +consist /man/9/pack +consistency /man/10/allocb +consistency /man/2/ida +consistency /man/2/sys-0intro +consistency /man/5/stat +consistency /man/6/colour +consistency /man/9/text +consistent /man/1/0intro +consistent /man/10/0intro +consistent /man/2/draw-example +consistent /man/2/ida +consistent /man/2/w3c-xpointers +consistent /man/3/fs +consistent /man/3/touch +consistent /man/4/ftpfs +consistent /man/9/listbox +consistently /man/4/logfile +consistently /man/6/font +consistently /man/8/touchcal +consistently /man/9/0intro +consisting /man/1/bind +consisting /man/1/cprof +consisting /man/1/diff +consisting /man/1/sh-alphabet +consisting /man/1/sh-regex +consisting /man/1/tiny +consisting /man/2/spki +consisting /man/2/spree-allow +consisting /man/2/spree-gather +consisting /man/2/sys-bind +consisting /man/4/memfs +consisting /man/4/spree +consisting /man/6/audio +consisting /man/9/canvas +consisting /man/9/scrollbar +consists /man/1/mc +consists /man/1/mdb +consists /man/1/mk +consists /man/1/ps +consists /man/1/sh-alphabet +consists /man/1/sh-tk +consists /man/1/tiny +consists /man/10/a.out +consists /man/10/mk +consists /man/10/odbc +consists /man/2/convcs +consists /man/2/dis +consists /man/2/format +consists /man/2/prof +consists /man/2/spree-cardlib +consists /man/2/string +consists /man/3/draw +consists /man/3/vga +consists /man/4/factotum +consists /man/4/iostats +consists /man/5/0intro +consists /man/6/attrdb +consists /man/6/dis +consists /man/6/font +consists /man/6/image +consists /man/6/sbl +consists /man/8/prep +consists /man/9/canvas +consists /man/9/grid +consists /man/9/options +consists /man/9/scale +consists /man/9/scrollbar +consists /man/9/text +console /man/1/brutus +console /man/1/grid-monitor +console /man/1/mux +console /man/1/tiny +console /man/1/wish +console /man/1/wm-sh +console /man/10/9load +console /man/10/devattach +console /man/10/eve +console /man/10/kproc +console /man/10/lock +console /man/10/panic +console /man/10/plan9.ini +console /man/10/xalloc +console /man/2/security-0intro +console /man/2/sys-read +console /man/3/0intro +console /man/3/cons +console /man/4/acme +console /man/4/keyfs +console /man/6/users +console /man/8/mangaload +console /man/8/rdbgsrv +console /man/9/send +consopen /man/10/dev +consortium's /man/2/w3c-css +consortium's /man/2/w3c-xpointers +conspicuous /man/6/colour +consread /man/10/dev +consstat /man/10/dev +constant /man/1/brutus +constant /man/1/charon +constant /man/1/gettar +constant /man/1/limbo +constant /man/1/mathcalc +constant /man/10/a.out +constant /man/10/atoi +constant /man/10/c2l +constant /man/10/readnum +constant /man/10/styx +constant /man/2/dis +constant /man/2/draw-0intro +constant /man/2/factotum +constant /man/2/format +constant /man/2/keyring-crypt +constant /man/2/math-0intro +constant /man/2/math-linalg +constant /man/2/prefab-element +constant /man/2/security-0intro +constant /man/2/sexprs +constant /man/2/styx +constant /man/2/sys-self +constant /man/2/sys-stat +constant /man/2/ubfa +constant /man/3/ether +constant /man/5/0intro +constant /man/5/error +constant /man/5/walk +constant /man/6/colour +constant /man/6/man +constant's /man/2/ubfa +constants /man/1/mathcalc +constants /man/1/mc +constants /man/1/units +constants /man/1/yacc +constants /man/10/c2l +constants /man/10/newchan +constants /man/10/seconds +constants /man/2/0intro +constants /man/2/debug +constants /man/2/dhcpclient +constants /man/2/dis +constants /man/2/draw-0intro +constants /man/2/draw-display +constants /man/2/format +constants /man/2/ir +constants /man/2/math-0intro +constants /man/2/math-fp +constants /man/2/sets +constants /man/2/sh +constants /man/2/spree-cardlib +constants /man/2/styx +constants /man/2/styxservers +constants /man/2/sys-stat +constants /man/2/tkclient +constants /man/2/ubfa +constants /man/2/venti +constants /man/2/w3c-xpointers +constants /man/2/wmclient +constants /man/3/draw +constants /man/5/0intro +constants /man/6/ubfa +constants /man/8/httpd +constants /man/8/prep +constituent /man/1/sh-regex +constituent /man/10/ar +constituent /man/10/iar +constituent /man/2/prefab-element +constituent /man/2/sys-bind +constituent /man/2/sys-open +constituents /man/10/iar +constr /man/2/asn1 +constrained /man/2/asn1 +constrained /man/9/canvas +constraining /man/6/login +constrains /man/3/ftl +constraints /man/1/tiny +constraints /man/10/9load +constraints /man/10/allocb +constraints /man/10/kproc +constraints /man/10/xalloc +constraints /man/2/asn1 +constraints /man/2/disks +constraints /man/2/sys-fversion +constraints /man/3/flash +constraints /man/9/canvas +construct /man/2/keyring-0intro +construct /man/3/prog +construct /man/6/namespace +construct /man/8/register +constructed /man/1/listen +constructed /man/2/asn1 +constructed /man/2/stringinttab +constructed /man/6/font +constructing /man/1/wm-sh +construction /man/1/ftree +construction /man/1/mash +construction /man/1/ns +construction /man/1/sh-std +construction /man/1/yacc +construction /man/2/palmfile +construction /man/2/prefab-element +construction /man/6/sbl +construction /man/9/menu +construction's /man/1/mash +construction's /man/1/sh +constructions /man/1/mash +constructions /man/1/sh +constructor /man/2/0intro +constructs /man/1/ebook +constructs /man/1/sh-std +constructs /man/10/c2l +constructs /man/2/asn1 +constructs /man/2/cfg +constructs /man/8/logind +constructs /man/8/signer +consulted /man/1/alphabet-fs +consulted /man/1/fs +consulted /man/10/plan9.ini +consulted /man/2/scsiio +consulted /man/5/0intro +consulting /man/2/scsiio +consults /man/1/look +consults /man/10/plan9.ini +consults /man/8/dns +consume /man/3/logfs +consume /man/9/pack +consumed /man/10/styxserver +consumed /man/2/convcs +consumed /man/2/filter +consumed /man/2/sys-byte2char +consumed /man/2/wmclient +consumed /man/2/wmsrv +consumed /man/3/ip +consumed /man/9/frame +consumer /man/3/pipe +consumers /man/10/qio +consumes /man/2/sys-byte2char +conswalk /man/10/dev +conswrite /man/10/dev +cont /man/10/acid +cont /man/2/debug +cont /man/3/prog +contact /man/10ti925/tihost +contact /man/8/getauthinfo +contained /man/1/acme +contained /man/1/alphabet-fs +contained /man/1/fs +contained /man/1/gettar +contained /man/1/grid-ns +contained /man/1/secstore +contained /man/1/stack +contained /man/10/allocb +contained /man/10/dev +contained /man/10/plan9.ini +contained /man/2/0intro +contained /man/2/draw-example +contained /man/2/prefab-compound +contained /man/2/sets +contained /man/2/sh +contained /man/2/spree-cardlib +contained /man/2/tabs +contained /man/2/xml +contained /man/3/ip +contained /man/3/sd +contained /man/6/auth +contained /man/6/keyboard +contained /man/8/bootpd +contained /man/8/srv +container /man/1/deb +container /man/9/frame +contains /man/1/0intro +contains /man/1/acme +contains /man/1/basename +contains /man/1/bind +contains /man/1/blur +contains /man/1/collab +contains /man/1/collab-clients +contains /man/1/deb +contains /man/1/diff +contains /man/1/dmview +contains /man/1/ftree +contains /man/1/gettar +contains /man/1/grep +contains /man/1/itest +contains /man/1/limbo +contains /man/1/mash +contains /man/1/mash-tk +contains /man/1/mk +contains /man/1/secstore +contains /man/1/session +contains /man/1/sh +contains /man/1/sh-csv +contains /man/1/sh-regex +contains /man/1/sh-sexprs +contains /man/1/sh-string +contains /man/1/tktester +contains /man/1/tsort +contains /man/1/webgrab +contains /man/10/9load +contains /man/10/a.out +contains /man/10/ar +contains /man/10/dev +contains /man/10/dynld +contains /man/10/getfields +contains /man/10/intrenable +contains /man/10/mk +contains /man/10/odbc +contains /man/10/plan9.ini +contains /man/10/print +contains /man/10/qio +contains /man/10/rune +contains /man/10/styxserver +contains /man/2/alphabet-intro +contains /man/2/asn1 +contains /man/2/attrdb +contains /man/2/dbm +contains /man/2/debug +contains /man/2/dhcpclient +contains /man/2/dialog +contains /man/2/dis +contains /man/2/draw-0intro +contains /man/2/draw-context +contains /man/2/draw-display +contains /man/2/draw-rect +contains /man/2/factotum +contains /man/2/filter +contains /man/2/format +contains /man/2/hash +contains /man/2/ip +contains /man/2/keyring-0intro +contains /man/2/keyring-gensk +contains /man/2/keyring-getmsg +contains /man/2/newns +contains /man/2/palmfile +contains /man/2/plumbmsg +contains /man/2/prefab-0intro +contains /man/2/prefab-element +contains /man/2/print +contains /man/2/prof +contains /man/2/registries +contains /man/2/secstore +contains /man/2/security-login +contains /man/2/security-ssl +contains /man/2/sexprs +contains /man/2/spree +contains /man/2/spree-cardlib +contains /man/2/string +contains /man/2/styx +contains /man/2/styxservers +contains /man/2/sys-0intro +contains /man/2/sys-dial +contains /man/2/sys-file2chan +contains /man/2/sys-print +contains /man/2/sys-tokenize +contains /man/2/tabs +contains /man/2/ubfa +contains /man/2/venti +contains /man/2/wmclient +contains /man/2/wmsrv +contains /man/2/xml +contains /man/3/arch +contains /man/3/cmd +contains /man/3/cons +contains /man/3/draw +contains /man/3/ds +contains /man/3/dynld +contains /man/3/ether +contains /man/3/flash +contains /man/3/fpga +contains /man/3/ip +contains /man/3/pbus +contains /man/3/plap +contains /man/3/pnp +contains /man/3/prof +contains /man/3/prog +contains /man/3/sd +contains /man/3/sign +contains /man/3/ssl +contains /man/3/tls +contains /man/3/touch +contains /man/3/usb +contains /man/4/factotum +contains /man/4/keysrv +contains /man/4/lockfs +contains /man/4/namespace +contains /man/4/registry +contains /man/5/0intro +contains /man/5/attach +contains /man/5/stat +contains /man/5/version +contains /man/6/attrdb +contains /man/6/audio +contains /man/6/colour +contains /man/6/dis +contains /man/6/font +contains /man/6/image +contains /man/6/keys +contains /man/6/keytext +contains /man/6/namespace +contains /man/6/proto +contains /man/6/sbl +contains /man/6/sexprs +contains /man/6/ubfa +contains /man/7/db +contains /man/8/bootpd +contains /man/8/collabsrv +contains /man/8/cs +contains /man/8/dns +contains /man/8/getauthinfo +contains /man/8/mkfs +contains /man/8/prep +contains /man/8/rstyxd +contains /man/8/signer +contains /man/8/srv +contains /man/8/styxchat +contains /man/8/svc +contains /man/9/bind +contains /man/9/button +contains /man/9/canvas +contains /man/9/checkbutton +contains /man/9/grid +contains /man/9/label +contains /man/9/menubutton +contains /man/9/radiobutton +contains /man/9/text +contemporaries /man/1/0intro +content /man/1/alphabet-fs +content /man/1/fs +content /man/1/mux +content /man/1/webgrab +content /man/10/mk +content /man/2/dbm +content /man/2/format +content /man/2/keyring-getmsg +content /man/2/palmfile +content /man/2/sys-stat +content /man/2/venti +content /man/2/w3c-css +content /man/3/ftl +content /man/3/root +content /man/3/rtc +content /man/5/stat +content /man/6/ndb +content /man/6/proto +content /man/8/applylog +content /man/8/httpd +content /man/9/0intro +context /man/1/acme +context /man/1/alphabet-fs +context /man/1/fs +context /man/1/listen +context /man/1/sh +context /man/1/sh-std +context /man/1/sh-tk +context /man/1/tkcmd +context /man/1/wm +context /man/1/yacc +context /man/10/2c +context /man/10/dev +context /man/2/arg +context /man/2/asn1 +context /man/2/command +context /man/2/debug +context /man/2/dialog +context /man/2/draw-0intro +context /man/2/draw-context +context /man/2/draw-example +context /man/2/draw-pointer +context /man/2/ir +context /man/2/itslib +context /man/2/prefab-compound +context /man/2/selectfile +context /man/2/sh +context /man/2/styxservers-nametree +context /man/2/sys-dup +context /man/2/sys-self +context /man/2/tabs +context /man/2/tk +context /man/2/tkclient +context /man/2/translate +context /man/2/volume +context /man/2/wmclient +context /man/2/wmlib +context /man/2/wmsrv +context /man/4/acme +context /man/6/keytext +context /man/6/translate +context /man/7/db +context /man/9/0intro +context.cinput /man/2/ir +context.ctomux /man/2/ir +context.new /man/2/sh +contexts /man/2/draw-0intro +contexts /man/2/draw-context +contiguous /man/10/allocb +contiguous /man/2/draw-font +contiguous /man/2/math-linalg +contiguous /man/6/colour +contiguous /man/6/image +contiguous /man/8/prep +contiguous /man/9/entry +contiguous /man/9/text +contiguously /man/10/9load +contiguously /man/6/colour +contiguously /man/8/prep +contin /man/1/mash +continually /man/2/devpointer +continually /man/2/sys-read +continuation /man/1/mash +continuation /man/1/strings +continuation /man/10/atoi +continue /man/1/blur +continue /man/1/deb +continue /man/1/mc +continue /man/1/mk +continue /man/1/sh-csv +continue /man/1/sh-sexprs +continue /man/1/sh-std +continue /man/1/tail +continue /man/10/acid +continue /man/10/mk +continue /man/2/styxservers +continue /man/6/plumbing +continue /man/9/canvas +continue /man/9/grab +continue /man/9/image +continued /man/1/deb +continued /man/1/mash +continues /man/1/acme +continues /man/1/deb +continues /man/1/mkdir +continues /man/1/tiny +continues /man/1/wm-misc +continues /man/2/dhcpclient +continues /man/2/fsproto +continues /man/2/sys-0intro +continues /man/9/0intro +continues /man/9/text +continuing /man/1/acme +continuing /man/1/tiny +continuous /man/6/colour +continuously /man/2/sys-millisec +continuously /man/9/options +contracted /man/2/math-0intro +contrary /man/2/dividers +contrast /man/1/blur +contrast /man/10/allocb +contrast /man/10/memory +contrast /man/10/qio +contrast /man/3/tv +contrast /man/9/text +control /man/1/0intro +control /man/1/acme +control /man/1/bind +control /man/1/brutus +control /man/1/charon +control /man/1/kill +control /man/1/mash +control /man/1/mash-tk +control /man/1/mc +control /man/1/miniterm +control /man/1/mk +control /man/1/mux +control /man/1/sh +control /man/1/sh-std +control /man/1/tktester +control /man/1/wm +control /man/10/9load +control /man/10/conf +control /man/10/devattach +control /man/10/error +control /man/10/lock +control /man/10/mk +control /man/10/odbc +control /man/10/print +control /man/10/qio +control /man/10/splhi +control /man/10/xalloc +control /man/2/dbm +control /man/2/debug +control /man/2/dhcpclient +control /man/2/disks +control /man/2/draw-0intro +control /man/2/draw-context +control /man/2/draw-image +control /man/2/imagefile +control /man/2/ir +control /man/2/math-0intro +control /man/2/math-fp +control /man/2/mpeg +control /man/2/prefab-compound +control /man/2/prefab-element +control /man/2/prefab-style +control /man/2/secstore +control /man/2/security-ssl +control /man/2/sexprs +control /man/2/sys-0intro +control /man/2/sys-dial +control /man/2/sys-open +control /man/2/sys-pctl +control /man/2/sys-pipe +control /man/2/sys-print +control /man/2/tk +control /man/2/tkclient +control /man/2/volume +control /man/2/wmclient +control /man/3/arch +control /man/3/audio +control /man/3/boot +control /man/3/cons +control /man/3/dbg +control /man/3/draw +control /man/3/ds +control /man/3/dup +control /man/3/dynld +control /man/3/eia +control /man/3/ether +control /man/3/flash +control /man/3/floppy +control /man/3/fpga +control /man/3/fs +control /man/3/ftl +control /man/3/gpio +control /man/3/i2c +control /man/3/ip +control /man/3/logfs +control /man/3/lpt +control /man/3/mpeg +control /man/3/plap +control /man/3/pnp +control /man/3/prof +control /man/3/prog +control /man/3/sign +control /man/3/ssl +control /man/3/tls +control /man/3/touch +control /man/3/tv +control /man/3/usb +control /man/3/vga +control /man/3/vid +control /man/4/acme +control /man/4/factotum +control /man/4/import +control /man/4/kfs +control /man/4/registry +control /man/6/audio +control /man/6/keyboard +control /man/8/kfscmd +control /man/8/mangaload +control /man/9/bind +control /man/9/entry +control /man/9/text +controlled /man/1/ftree +controlled /man/1/mux +controlled /man/10/5cv +controlled /man/10/ntsrv +controlled /man/10/odbc +controlled /man/10/qio +controlled /man/10/qlock +controlled /man/2/0intro +controlled /man/2/ir +controlled /man/2/print +controlled /man/2/prof +controlled /man/2/spree +controlled /man/2/sys-pctl +controlled /man/2/tkclient +controlled /man/2/wmclient +controlled /man/3/ether +controlled /man/3/ip +controlled /man/3/plap +controlled /man/3/tls +controlled /man/9/menu +controller /man/1/wm +controller /man/10/intrenable +controller /man/10/plan9.ini +controller /man/2/volume +controller /man/3/pbus +controller /man/3/sd +controller /man/3/usb +controller /man/3/vga +controller /man/3/vid +controller's /man/3/usb +controllers /man/10/dmainit +controllers /man/10/plan9.ini +controllers /man/3/sd +controllers /man/3/vga +controlling /man/1/cook +controlling /man/1/toolbar +controlling /man/1/wm +controlling /man/2/debug +controlling /man/2/ir +controlling /man/2/spree +controlling /man/4/acme +controlling /man/8/collabsrv +controls /man/1/charon +controls /man/1/collab-clients +controls /man/1/ebook +controls /man/1/ftree +controls /man/1/mux +controls /man/2/prefab-0intro +controls /man/2/prefab-element +controls /man/2/spree-cardlib +controls /man/2/sys-bind +controls /man/2/sys-pctl +controls /man/2/tabs +controls /man/3/cmd +controls /man/3/ip +controls /man/3/kprof +controls /man/3/logfs +controls /man/3/ssl +controls /man/9/text +conv /man/1/dd +convcs /man/1/tcs +convcs /man/10/rune +convcs /man/2/convcs +convcs /man/2/encoding +convcs.b /man/2/convcs +convcs.m /man/2/convcs +convd2m /man/10/dev +convd2m /man/10/devattach +convd2m /man/10/styx +convd2m /man/5/stat +convenience /man/1/fs +convenience /man/1/sh-alphabet +convenience /man/1/tiny +convenience /man/2/convcs +convenience /man/2/disks +convenience /man/2/draw-image +convenience /man/2/format +convenience /man/2/ip +convenience /man/2/sexprs +convenience /man/2/styxservers +convenience /man/4/dbfs +convenient /man/1/collab-clients +convenient /man/10/styx +convenient /man/2/alphabet-intro +convenient /man/2/draw-0intro +convenient /man/2/keyring-ipint +convenient /man/2/spree-cardlib +convenient /man/2/styxservers +convention /man/1/acme +convention /man/1/yacc +convention /man/10/2c +convention /man/10/9load +convention /man/10/devattach +convention /man/2/command +convention /man/2/math-linalg +convention /man/2/sh +convention /man/2/sys-0intro +convention /man/2/sys-dial +convention /man/2/w3c-xpointers +convention /man/3/sd +convention /man/5/0intro +convention /man/5/error +convention /man/6/font +convention /man/6/users +convention /man/8/collabsrv +convention /man/8/prep +convention /man/9/0intro +conventional /man/1/0intro +conventional /man/1/ebook +conventional /man/1/limbo +conventional /man/10/0intro +conventional /man/10/qio +conventional /man/10ti925/tihost +conventional /man/2/0intro +conventional /man/2/alphabet-intro +conventional /man/2/keyring-auth +conventional /man/2/palmfile +conventional /man/2/sh +conventional /man/2/spree-cardlib +conventional /man/2/styxpersist +conventional /man/2/translate +conventional /man/3/0intro +conventional /man/3/ftl +conventional /man/3/tinyfs +conventional /man/4/ftpfs +conventional /man/4/namespace +conventional /man/4/registry +conventional /man/5/stat +conventional /man/8/svc +conventionally /man/1/acme +conventionally /man/1/read +conventionally /man/10/2c +conventionally /man/10/conf +conventionally /man/2/alphabet-intro +conventionally /man/2/draw-context +conventionally /man/2/spree-allow +conventionally /man/2/spree-cardlib +conventionally /man/2/sys-fauth +conventionally /man/2/sys-read +conventionally /man/2/tk +conventionally /man/2/venti +conventionally /man/2/wmsrv +conventionally /man/3/cmd +conventionally /man/3/env +conventionally /man/3/ip +conventionally /man/3/srv +conventionally /man/4/spree +conventionally /man/6/dis +conventionally /man/6/sbl +conventionally /man/8/prep +conventions /man/1/0intro +conventions /man/1/acme +conventions /man/1/bind +conventions /man/1/crypt +conventions /man/2/daytime +conventions /man/2/keyring-sha1 +conventions /man/2/palmfile +conventions /man/2/spree +conventions /man/2/string +conventions /man/2/sys-0intro +conventions /man/3/audio +conventions /man/3/cmd +conventions /man/3/flash +conventions /man/3/fs +conventions /man/3/gpio +conventions /man/3/plap +conventions /man/4/factotum +conventions /man/4/spree +conventions /man/6/0intro +conventions /man/6/keyboard +conventions /man/8/prep +conventions /man/8/rstyxd +conventions /man/8/styxchat +conversation /man/1/collab-clients +conversation /man/1/netstat +conversation /man/10/odbc +conversation /man/2/factotum +conversation /man/2/keyring-0intro +conversation /man/2/keyring-auth +conversation /man/3/ether +conversation /man/3/ip +conversation /man/3/plap +conversation /man/6/login +conversation /man/8/styxmon +conversations /man/10/odbc +conversations /man/3/ether +conversations /man/3/ip +converse /man/1/sh-file2chan +converse /man/10/odbc +converse /man/3/ip +conversely /man/10/qio +conversely /man/2/dhcpclient +conversing /man/2/keyring-0intro +conversion /man/1/auplay +conversion /man/1/date +conversion /man/1/dd +conversion /man/1/man +conversion /man/1/sh-alphabet +conversion /man/1/sh-sexprs +conversion /man/1/units +conversion /man/10/5cv +conversion /man/10/a.out +conversion /man/10/print +conversion /man/10/rune +conversion /man/10/styx +conversion /man/2/asn1 +conversion /man/2/convcs +conversion /man/2/keyring-auth +conversion /man/2/keyring-certtostr +conversion /man/2/math-0intro +conversion /man/2/math-export +conversion /man/2/sh +conversion /man/2/sys-print +conversion /man/6/utf +conversions /man/1/alphabet-main +conversions /man/1/dd +conversions /man/1/fs +conversions /man/1/sh-alphabet +conversions /man/1/units +conversions /man/10/c2l +conversions /man/10/print +conversions /man/10/seconds +conversions /man/2/convcs +conversions /man/2/daytime +conversions /man/2/math-0intro +conversions /man/2/sys-print +conversions /man/2/sys-stat +conversions /man/6/utf +convert /man/1/date +convert /man/1/dd +convert /man/1/diff +convert /man/1/fc +convert /man/1/sh-alphabet +convert /man/1/sh-regex +convert /man/1/units +convert /man/10/5cv +convert /man/10/acid +convert /man/10/atoi +convert /man/10/c2l +convert /man/10/dev +convert /man/10/ms2 +convert /man/10/rune +convert /man/10/seconds +convert /man/10/styx +convert /man/10ti925/epocimg +convert /man/2/asn1 +convert /man/2/convcs +convert /man/2/draw-0intro +convert /man/2/geodesy +convert /man/2/ip +convert /man/2/keyring-certtostr +convert /man/2/math-export +convert /man/2/palmfile +convert /man/2/security-0intro +convert /man/2/sh +convert /man/2/spki +convert /man/2/spree +convert /man/2/styxconv +convert /man/2/sys-byte2char +convert /man/2/sys-dup +convert /man/3/cmd +convert /man/5/0intro +convert /man/5/stat +convert /man/6/keytext +convert /man/6/utf +converted /man/1/fc +converted /man/1/fs +converted /man/1/man +converted /man/1/sh +converted /man/1/sh-alphabet +converted /man/1/sh-sexprs +converted /man/1/sh-string +converted /man/1/tiny +converted /man/10/0intro +converted /man/10/5coff +converted /man/10/atoi +converted /man/10/devattach +converted /man/10/plan9.ini +converted /man/10/print +converted /man/2/asn1 +converted /man/2/convcs +converted /man/2/imagefile +converted /man/2/keyring-0intro +converted /man/2/sexprs +converted /man/2/spki +converted /man/2/spree +converted /man/2/sys-print +converted /man/2/w3c-css +converted /man/2/w3c-xpointers +converted /man/2/xml +converted /man/3/mnt +converted /man/3/tls +converted /man/3/usb +converted /man/6/colour +converted /man/6/image +converted /man/6/man +converted /man/6/utf +converted /man/8/createsignerkey +converted /man/9/types +converter /man/1/cook +converter /man/10/5coff +converter /man/2/convcs +converter /man/3/vid +converters /man/1/tcs +converters /man/2/convcs +convertible /man/1/sh-alphabet +converting /man/1/mdb +converting /man/1/unicode +converting /man/2/convcs +converting /man/2/devpointer +converting /man/2/math-export +converting /man/2/styxconv +converts /man/1/alphabet-fs +converts /man/1/alphabet-main +converts /man/1/auplay +converts /man/1/fs +converts /man/1/gettar +converts /man/1/man +converts /man/1/tcs +converts /man/1/unicode +converts /man/1/units +converts /man/1/uuencode +converts /man/1/yacc +converts /man/10/5coff +converts /man/10/5cv +converts /man/10/dev +converts /man/10/ms2 +converts /man/10/parsecmd +converts /man/10/print +converts /man/10/readnum +converts /man/10/styx +converts /man/10ti925/epocimg +converts /man/2/convcs +converts /man/2/daytime +converts /man/2/debug +converts /man/2/devpointer +converts /man/2/format +converts /man/2/geodesy +converts /man/2/ir +converts /man/2/keyring-ipint +converts /man/2/math-export +converts /man/2/plumbmsg +converts /man/2/sets +converts /man/2/sh +converts /man/2/spree +converts /man/2/string +converts /man/2/styxconv +converts /man/2/sys-byte2char +converts /man/2/sys-print +converts /man/2/wmclient +converts /man/3/srv +converts /man/6/colour +converts /man/8/changelogin +convex /man/1/wm-misc +convey /man/5/0intro +convey /man/6/sexprs +convey /man/8/rdbgsrv +conveyed /man/2/keyring-0intro +conveyed /man/2/plumbmsg +conveys /man/2/draw-0intro +conveys /man/2/sexprs +conveys /man/8/bootpd +convinced /man/8/register +convinced /man/8/signer +convm2d /man/10/dev +convm2d /man/10/styx +convm2d /man/5/stat +convm2d.c /man/10/styx +convm2s /man/10/styx +convm2s /man/10/styxserver +convm2s.c /man/10/styx +convpasswd /man/8/changelogin +convs2m /man/10/styx +convs2m.c /man/10/styx +cook /man/1/brutus +cook /man/1/cook +cook.b /man/1/cook +cooked /man/10ti925/tihost +cookie /man/1/charon +cookies /man/1/charon +cooperating /man/2/sys-pipe +coordinate /man/10/qio +coordinate /man/2/bufio +coordinate /man/2/draw-0intro +coordinate /man/2/draw-example +coordinate /man/2/draw-image +coordinate /man/2/draw-point +coordinate /man/2/geodesy +coordinate /man/2/sys-0intro +coordinate /man/2/tk +coordinate /man/2/wmsrv +coordinate /man/3/draw +coordinate /man/6/image +coordinate /man/8/collabsrv +coordinate /man/9/bind +coordinate /man/9/canvas +coordinate /man/9/entry +coordinate /man/9/listbox +coordinate /man/9/menu +coordinate /man/9/panel +coordinates /man/2/draw-0intro +coordinates /man/2/draw-image +coordinates /man/2/draw-point +coordinates /man/2/draw-pointer +coordinates /man/2/draw-rect +coordinates /man/2/geodesy +coordinates /man/2/prefab-element +coordinates /man/2/tk +coordinates /man/3/cons +coordinates /man/3/draw +coordinates /man/3/mpeg +coordinates /man/3/pointer +coordinates /man/3/touch +coordinates /man/3/tv +coordinates /man/6/colour +coordinates /man/6/image +coordinates /man/8/touchcal +coordinates /man/9/canvas +coordinates /man/9/entry +coordinates /man/9/listbox +coordinates /man/9/menu +coordinates /man/9/options +coordinates /man/9/panel +coordinates /man/9/scale +coordinates /man/9/scrollbar +coordinates /man/9/see +coordinates /man/9/text +coords /man/9/canvas +coords /man/9/scale +cope /man/4/kfs +copen /man/10/devattach +copen /man/10/newchan +copied /man/1/acme +copied /man/1/dd +copied /man/1/ftree +copied /man/1/tail +copied /man/1/wm-sh +copied /man/10/dev +copied /man/10/kproc +copied /man/10/memory +copied /man/10/print +copied /man/10/qio +copied /man/10/rune +copied /man/10/strcat +copied /man/10/styx +copied /man/2/dbm +copied /man/2/draw-image +copied /man/2/keyring-sha1 +copied /man/2/sh +copied /man/2/styxservers +copied /man/2/sys-print +copied /man/2/sys-read +copied /man/3/ether +copied /man/5/0intro +copied /man/6/audio +copied /man/6/image +copied /man/8/create +copied /man/8/ftl +copied /man/8/mkfs +copied /man/8/rdbgsrv +copied /man/8/styxchat +copies /man/1/cp +copies /man/1/dd +copies /man/1/fmt +copies /man/1/mv +copies /man/1/os +copies /man/1/p +copies /man/1/tail +copies /man/1/telnet +copies /man/1/tr +copies /man/1/uniq +copies /man/1/wm-sh +copies /man/10/9load +copies /man/10/error +copies /man/10/memory +copies /man/10/print +copies /man/10/qio +copies /man/10/rune +copies /man/10/strcat +copies /man/2/draw-0intro +copies /man/2/draw-image +copies /man/2/env +copies /man/2/styxconv +copies /man/2/sys-print +copies /man/2/sys-read +copies /man/2/tk +copies /man/3/boot +copies /man/3/kprof +copies /man/8/changelogin +copies /man/8/create +copies /man/8/mkfs +copies /man/8/rdbgsrv +copies /man/9/1copyright +copy /man/1/acme +copy /man/1/alphabet-fs +copy /man/1/cp +copy /man/1/dd +copy /man/1/fs +copy /man/1/ftree +copy /man/1/gettar +copy /man/1/mash-tk +copy /man/1/mk +copy /man/1/sh +copy /man/1/tee +copy /man/1/tiny +copy /man/1/uniq +copy /man/1/wm-misc +copy /man/1/wm-sh +copy /man/10/9load +copy /man/10/allocb +copy /man/10/dev +copy /man/10/devattach +copy /man/10/inb +copy /man/10/kprof +copy /man/10/memory +copy /man/10/mk +copy /man/10/parsecmd +copy /man/10/qio +copy /man/10/strcat +copy /man/10/styx +copy /man/2/ip +copy /man/2/keyring-0intro +copy /man/2/keyring-ipint +copy /man/2/math-fp +copy /man/2/palmfile +copy /man/2/plumbmsg +copy /man/2/registries +copy /man/2/security-0intro +copy /man/2/sets +copy /man/2/sexprs +copy /man/2/sh +copy /man/2/styxservers +copy /man/2/sys-pctl +copy /man/2/sys-tokenize +copy /man/3/env +copy /man/3/ether +copy /man/3/flash +copy /man/4/export +copy /man/4/ftpfs +copy /man/4/iostats +copy /man/4/ramfile +copy /man/6/image +copy /man/6/proto +copy /man/8/changelogin +copy /man/8/create +copy /man/8/mkfs +copy /man/8/rdbgsrv +copy /man/8/styxchat +copy /man/9/1copyright +copyblock /man/10/allocb +copyenv /man/2/sh +copying /man/1/dd +copying /man/1/tail +copying /man/10/dev +copying /man/10/readnum +copying /man/2/smtp +copying /man/3/ftl +copying /man/4/ftpfs +copying /man/8/rdbgsrv +copyright /man/1/mux +copyright /man/1/wm-misc +copyright /man/9/0intro +copyright /man/9/1copyright +copyrighted /man/9/1copyright +copysign /man/2/math-fp +core /man/1/dd +core /man/10/a.out +core /man/10/acid +core /man/2/wmsrv +corner /man/1/acme +corner /man/1/collab-clients +corner /man/1/mash-tk +corner /man/1/miniterm +corner /man/2/dialog +corner /man/2/draw-0intro +corner /man/2/draw-image +corner /man/2/prefab-compound +corner /man/2/selectfile +corner /man/3/draw +corner /man/8/touchcal +corner /man/9/canvas +corner /man/9/entry +corner /man/9/grid +corner /man/9/menu +corner /man/9/options +corner /man/9/text +corners /man/3/touch +corners /man/9/canvas +correct /man/1/mash-make +correct /man/1/sh-arg +correct /man/1/tktester +correct /man/10/c2l +correct /man/10/mk +correct /man/10/plan9.ini +correct /man/10/splhi +correct /man/10/styx +correct /man/2/attrdb +correct /man/2/dis +correct /man/2/security-0intro +correct /man/5/remove +correct /man/6/image +correct /man/8/register +corrected /man/6/colour +correcting /man/3/dbg +correction /man/1/miniterm +correction /man/6/colour +correction /man/8/rdbgsrv +correctly /man/1/9win +correctly /man/1/brutus +correctly /man/1/man +correctly /man/1/secstore +correctly /man/1/sh +correctly /man/10/dev +correctly /man/10/devattach +correctly /man/10/plan9.ini +correctly /man/10/strcat +correctly /man/2/debug +correctly /man/2/plumbmsg +correctly /man/2/sh +correctly /man/2/spki +correctly /man/2/spree-objstore +correctly /man/2/styxservers +correctly /man/2/tk +correctly /man/2/tkclient +correctly /man/2/wmclient +correctly /man/3/flash +correctly /man/3/tinyfs +correctly /man/4/namespace +correctly /man/5/flush +correctly /man/6/audio +correctly /man/9/0intro +correctly /man/9/bind +correctly /man/9/menu +correctly /man/9/text +correlated /man/10/kprof +correspond /man/1/deb +correspond /man/10/2c +correspond /man/10/a.out +correspond /man/10/newchan +correspond /man/2/dis +correspond /man/2/ubfa +correspond /man/2/w3c-xpointers +correspond /man/3/draw +correspond /man/3/ip +correspond /man/3/lpt +correspond /man/3/ssl +correspond /man/6/image +correspond /man/8/mkfs +correspond /man/9/menu +correspond /man/9/scrollbar +correspondence /man/10/2a +correspondence /man/10/2l +correspondence /man/2/w3c-xpointers +correspondence /man/3/tls +corresponds /man/10/conf +corresponds /man/10/devattach +corresponds /man/2/draw-image +corresponds /man/2/draw-pointer +corresponds /man/2/ida +corresponds /man/2/styxservers +corresponds /man/2/sys-dial +corresponds /man/3/draw +corresponds /man/3/ds +corresponds /man/3/dup +corresponds /man/3/gpio +corresponds /man/3/ip +corresponds /man/3/lpt +corresponds /man/3/switch +corresponds /man/4/namespace +corresponds /man/6/audio +corresponds /man/6/dis +corresponds /man/6/plumbing +corresponds /man/8/collabsrv +corresponds /man/9/entry +corresponds /man/9/listbox +corresponds /man/9/menu +corresponds /man/9/options +corresponds /man/9/scale +corresponds /man/9/scrollbar +corrupt /man/2/palmfile +corrupted /man/1/calendar +corrupted /man/1/charon +corrupted /man/1/miniterm +corrupted /man/1/sh-file2chan +corrupted /man/1/sh-sexprs +corruption /man/2/venti +cos /man/1/mathcalc +cos /man/1/mc +cos /man/2/math-elem +cosh /man/1/mathcalc +cosh /man/1/mc +cosh /man/2/math-elem +cost /man/10/error +cost /man/2/imagefile +count /man/1/dd +count /man/1/itest +count /man/1/mdb +count /man/1/read +count /man/1/sh +count /man/1/sh-file2chan +count /man/1/wc +count /man/10/dev +count /man/10/dmainit +count /man/10/inb +count /man/10/memory +count /man/10/newchan +count /man/10/parsecmd +count /man/10/print +count /man/10/qio +count /man/10/ref +count /man/10/styx +count /man/2/alphabet-intro +count /man/2/keyring-getmsg +count /man/2/prof +count /man/2/sexprs +count /man/2/spree +count /man/2/styx +count /man/2/styxservers +count /man/2/sys-file2chan +count /man/2/sys-tokenize +count /man/3/dbg +count /man/3/draw +count /man/3/fpga +count /man/3/pipe +count /man/3/prog +count /man/3/usb +count /man/4/acme +count /man/4/keyfs +count /man/5/0intro +count /man/5/read +count /man/5/stat +count /man/5/version +count /man/6/dis +count /man/6/sbl +count /man/6/ubfa +count /man/8/rstyxd +count /man/8/styxchat +count /man/9/grid +count /man/9/text +counte /man/2/prof +counted /man/1/tail +counted /man/1/wc +counted /man/10/acid +counted /man/2/sys-dup +counted /man/3/prof +counter /man/1/limbo +counter /man/10/acid +counter /man/2/security-0intro +counter /man/2/sys-millisec +counter /man/3/cons +counter /man/3/dbg +counter /man/3/kprof +counter /man/3/prof +counter /man/3/prog +counter /man/6/dis +counter /man/9/canvas +counterclockwise /man/2/draw-image +counterpart /man/1/sh-tk +counterpart /man/8/getauthinfo +counterparts /man/1/sh-string +counterparts /man/1/units +counters /man/3/ether +countersigned /man/8/signer +countersigner /man/8/register +countersigner /man/8/signer +countersigner.b /man/8/signer +countersigner.dis /man/8/srv +counting /man/1/fc +counting /man/1/sh-std +counting /man/10/dynld +counting /man/10/ref +counting /man/2/asn1 +counting /man/2/regex +counting /man/3/ip +counting /man/7/db +counts /man/1/freq +counts /man/1/tail +counts /man/1/wc +counts /man/10/a.out +counts /man/10/memory +counts /man/10/ref +counts /man/10/styxserver +counts /man/2/spree-cardlib +counts /man/2/styx +counts /man/2/styxservers +counts /man/2/sys-0intro +counts /man/3/kprof +counts /man/3/sd +counts /man/3/usb +counts /man/4/dbfs +counts /man/5/0intro +counts /man/6/sexprs +couple /man/1/sh-string +couples /man/2/asn1 +cover /man/2/draw-image +cover /man/2/draw-rect +cover /man/2/keyring-sha1 +cover /man/9/text +coverage /man/1/cprof +coverage /man/2/prof +coverage /man/3/prof +covered /man/1/sh +covered /man/2/draw-image +covered /man/2/prof +covered /man/6/font +covered /man/9/canvas +covered /man/9/entry +covered /man/9/grid +covering /man/1/wish +covering /man/6/colour +covers /man/1/mprof +covers /man/2/dis +covers /man/3/ssl +covers /man/6/dis +covers /man/9/canvas +covers /man/9/grid +covers /man/9/listbox +covers /man/9/scrollbar +covers /man/9/text +cp /man/1/cat +cp /man/1/cp +cp /man/1/dd +cp /man/1/mash-make +cp /man/1/mk +cp /man/1/mv +cp /man/10/mk +cp /man/10/seconds +cp /man/2/convcs +cp /man/2/dbm +cp /man/2/spree-cardlib +cp /man/3/ds +cp /man/3/kprof +cp /man/4/ftpfs +cp /man/4/kfs +cp /man/4/ramfile +cp /man/4/tarfs +cp /man/8/rdbgsrv +cp /man/8/styxmon +cp.b /man/1/cp +cp866 /man/2/convcs +cpfstats /man/2/prof +cprof /man/1/cprof +cprof /man/1/mprof +cprof /man/1/prof +cprof.b /man/1/cprof +cpshow /man/2/prof +cpstart /man/2/prof +cpstats /man/2/prof +cptr /man/2/draw-pointer +cpu /man/1/cpu +cpu /man/1/grid-monitor +cpu /man/1/grid-ns +cpu /man/1/os +cpu /man/1/ps +cpu /man/1/session +cpu /man/1/telnet +cpu /man/1/time +cpu /man/10/acid +cpu /man/10/plan9.ini +cpu /man/2/sys-sleep +cpu /man/3/prog +cpu /man/4/cpu +cpu /man/4/export +cpu.b /man/1/cpu +cpu.b /man/4/cpu +cpus /man/10/mk +cputype /man/3/arch +cr /man/10/iar +crackerbarrel /man/1/math-misc +crackerbarrel.b /man/1/math-misc +cracks /man/2/format +crafted /man/8/signer +crag /man/2/format +crash /man/1/tktester +crash /man/10/c2l +crashed /man/1/blur +crc /man/1/sum +crc /man/2/crc +crc.b /man/2/crc +crc.m /man/2/crc +crc32 /man/2/crc +crcstate /man/2/crc +crctab /man/2/crc +create /man/1/0intro +create /man/1/9win +create /man/1/acme +create /man/1/alphabet-abc +create /man/1/alphabet-fs +create /man/1/alphabet-grid +create /man/1/alphabet-main +create /man/1/bind +create /man/1/blur +create /man/1/fs +create /man/1/gettar +create /man/1/limbo +create /man/1/mkdir +create /man/1/session +create /man/1/sh-file2chan +create /man/1/sh-tk +create /man/1/tiny +create /man/1/touch +create /man/1/tr +create /man/1/wm +create /man/1/wm-sh +create /man/1/yacc +create /man/1/zeros +create /man/10/dev +create /man/10/devattach +create /man/10/iar +create /man/10/styxserver +create /man/2/alphabet-intro +create /man/2/bloomfilter +create /man/2/bufio +create /man/2/dbm +create /man/2/draw-0intro +create /man/2/draw-context +create /man/2/draw-display +create /man/2/draw-screen +create /man/2/factotum +create /man/2/imagefile +create /man/2/keyring-0intro +create /man/2/mpeg +create /man/2/palmfile +create /man/2/security-0intro +create /man/2/security-login +create /man/2/styx +create /man/2/styxconv +create /man/2/styxpersist +create /man/2/styxservers +create /man/2/styxservers-nametree +create /man/2/sys-0intro +create /man/2/sys-bind +create /man/2/sys-dup +create /man/2/sys-file2chan +create /man/2/sys-open +create /man/2/sys-pipe +create /man/2/tk +create /man/2/ubfa +create /man/2/wmsrv +create /man/3/dbg +create /man/3/draw +create /man/3/ds +create /man/3/flash +create /man/3/ip +create /man/3/logfs +create /man/3/srv9 +create /man/4/archfs +create /man/4/dbfs +create /man/4/kfs +create /man/4/spree +create /man/5/0intro +create /man/5/open +create /man/5/stat +create /man/5/walk +create /man/6/namespace +create /man/6/proto +create /man/8/changelogin +create /man/8/create +create /man/8/createsignerkey +create /man/8/kfscmd +create /man/8/prep +create /man/9/button +create /man/9/canvas +create /man/9/checkbutton +create /man/9/choicebutton +create /man/9/entry +create /man/9/frame +create /man/9/image +create /man/9/label +create /man/9/listbox +create /man/9/menu +create /man/9/menubutton +create /man/9/options +create /man/9/panel +create /man/9/radiobutton +create /man/9/scale +create /man/9/scrollbar +create /man/9/text +create.b /man/8/create +created /man/1/0intro +created /man/1/acme +created /man/1/alphabet-abc +created /man/1/alphabet-grid +created /man/1/asm +created /man/1/bind +created /man/1/blur +created /man/1/deb +created /man/1/ebook +created /man/1/ftree +created /man/1/mkdir +created /man/1/sh +created /man/1/sh-tk +created /man/1/tiny +created /man/1/tkcmd +created /man/1/tktester +created /man/1/wish +created /man/1/wm-sh +created /man/1/yacc +created /man/10/dev +created /man/10/eve +created /man/10/newchan +created /man/10/qio +created /man/10/styxserver +created /man/10ti925/tihost +created /man/2/bufio +created /man/2/bufio-chanfill +created /man/2/dbm +created /man/2/debug +created /man/2/dialog +created /man/2/diskblocks +created /man/2/draw-0intro +created /man/2/draw-display +created /man/2/draw-font +created /man/2/draw-image +created /man/2/drawmux +created /man/2/keyring-0intro +created /man/2/plumbmsg +created /man/2/popup +created /man/2/prefab-0intro +created /man/2/prefab-element +created /man/2/prefab-style +created /man/2/security-0intro +created /man/2/selectfile +created /man/2/sets +created /man/2/sh +created /man/2/spki +created /man/2/spree +created /man/2/spree-cardlib +created /man/2/styxservers +created /man/2/styxservers-nametree +created /man/2/sys-0intro +created /man/2/sys-bind +created /man/2/sys-open +created /man/2/tabs +created /man/2/tk +created /man/2/tkclient +created /man/2/wmclient +created /man/2/wmlib +created /man/2/wmsrv +created /man/2/xml +created /man/3/dbg +created /man/3/draw +created /man/3/env +created /man/3/flash +created /man/3/fs +created /man/3/prog +created /man/3/srv +created /man/3/tinyfs +created /man/4/acme +created /man/4/archfs +created /man/4/dbfs +created /man/4/kfs +created /man/4/memfs +created /man/4/namespace +created /man/4/registry +created /man/4/spree +created /man/5/0intro +created /man/5/flush +created /man/5/open +created /man/6/colour +created /man/8/changelogin +created /man/8/getauthinfo +created /man/8/logind +created /man/8/mkfs +created /man/8/prep +created /man/8/signer +created /man/8/svc +created /man/9/canvas +created /man/9/cursor +created /man/9/entry +created /man/9/frame +created /man/9/grid +created /man/9/label +created /man/9/listbox +created /man/9/menu +created /man/9/options +created /man/9/panel +created /man/9/text +creates /man/1/9win +creates /man/1/acme +creates /man/1/alphabet-main +creates /man/1/blur +creates /man/1/charon +creates /man/1/itest +creates /man/1/logon +creates /man/1/mash-tk +creates /man/1/mkdir +creates /man/1/sh +creates /man/1/sh-alphabet +creates /man/1/sh-file2chan +creates /man/1/sh-std +creates /man/1/sh-tk +creates /man/1/spree-join +creates /man/1/stream +creates /man/1/tiny +creates /man/1/tkcmd +creates /man/1/uuencode +creates /man/1/wm-misc +creates /man/10/2l +creates /man/10/dynld +creates /man/10/kproc +creates /man/10/ntsrv +creates /man/10/styxserver +creates /man/2/bufio +creates /man/2/dbm +creates /man/2/dhcpclient +creates /man/2/dividers +creates /man/2/draw-0intro +creates /man/2/draw-display +creates /man/2/draw-font +creates /man/2/hash +creates /man/2/ir +creates /man/2/keyring-0intro +creates /man/2/keyring-gensk +creates /man/2/keyring-ipint +creates /man/2/keyring-sha1 +creates /man/2/lock +creates /man/2/popup +creates /man/2/prefab-compound +creates /man/2/prefab-element +creates /man/2/security-0intro +creates /man/2/sh +creates /man/2/spree +creates /man/2/spree-cardlib +creates /man/2/sys-open +creates /man/2/sys-pipe +creates /man/2/tabs +creates /man/2/tk +creates /man/2/tkclient +creates /man/2/wmclient +creates /man/2/wmsrv +creates /man/3/env +creates /man/3/flash +creates /man/3/ftl +creates /man/4/acme +creates /man/4/cpu +creates /man/4/kfs +creates /man/4/logfile +creates /man/4/ramfile +creates /man/4/spree +creates /man/7/db +creates /man/8/createsignerkey +creates /man/8/kfscmd +creates /man/8/prep +creates /man/8/signer +creates /man/9/button +creates /man/9/canvas +creates /man/9/checkbutton +creates /man/9/choicebutton +creates /man/9/entry +creates /man/9/frame +creates /man/9/image +creates /man/9/label +creates /man/9/listbox +creates /man/9/menu +creates /man/9/menubutton +creates /man/9/panel +creates /man/9/radiobutton +creates /man/9/scale +creates /man/9/scrollbar +creates /man/9/text +createsignerkey /man/2/security-0intro +createsignerkey /man/2/security-login +createsignerkey /man/3/sign +createsignerkey /man/4/namespace +createsignerkey /man/8/createsignerkey +createsignerkey /man/8/getauthinfo +createsignerkey /man/8/logind +createsignerkey /man/8/signer +createsignerkey /man/8/svc +createsignerkey.b /man/8/createsignerkey +creating /man/1/diff +creating /man/1/grid-ns +creating /man/1/mash +creating /man/1/mash-tk +creating /man/1/tiny +creating /man/1/tktester +creating /man/1/wm +creating /man/10/acid +creating /man/10/kproc +creating /man/2/dis +creating /man/2/lock +creating /man/2/palmfile +creating /man/2/security-0intro +creating /man/2/spree-cardlib +creating /man/2/styxservers +creating /man/2/sys-open +creating /man/2/sys-stat +creating /man/2/tk +creating /man/2/tkclient +creating /man/2/wmclient +creating /man/3/cmd +creating /man/3/env +creating /man/8/createsignerkey +creating /man/8/prep +creating /man/9/grid +creation /man/1/bind +creation /man/1/sh-file2chan +creation /man/1/sh-tk +creation /man/10/dev +creation /man/10/devattach +creation /man/10/kproc +creation /man/10/styxserver +creation /man/2/draw-font +creation /man/2/palmfile +creation /man/2/prefab-element +creation /man/2/spree +creation /man/2/styxservers +creation /man/2/styxservers-nametree +creation /man/2/tk +creation /man/3/srv9 +creation /man/4/9srvfs +creation /man/4/import +creation /man/5/open +creator /man/1/tiny +creator /man/2/palmfile +creator /man/2/sys-0intro +creator /man/3/srv +cred /man/3/draw +credentials /man/1/secstore +credentials /man/2/security-login +credentials /man/2/spki-verifier +credentials /man/6/login +credentials /man/8/signer +credentials /man/8/svc +credit /man/3/indir +credits /man/9/canvas +credits /man/9/grid +crgb /man/2/imagefile +crgb1 /man/2/imagefile +criteria /man/1/alphabet-fs +criteria /man/1/fs +criteria /man/2/keyset +criteria /man/2/readdir +critical /man/10/kproc +critical /man/10/lock +critical /man/10/qlock +crlfs /man/6/keyboard +cross /man/1/0intro +cross /man/1/stream +cross /man/10/0intro +cross /man/10/2c +cross /man/2/sexprs +cross /man/3/pipe +cross /man/3/rtc +cross /man/4/namespace +cross /man/8/touchcal +crossbow /man/1/avr +crosses /man/10/dmainit +crosses /man/2/sys-0intro +crosses /man/3/ip +crt /man/2/draw-display +crt /man/9/types +crypt /man/1/crypt +crypt /man/1/secstore +crypt /man/10/plan9.ini +crypt /man/2/keyring-0intro +crypt /man/2/keyring-crypt +crypt /man/2/keyring-rc4 +crypt /man/2/secstore +crypt /man/3/ssl +crypt /man/4/import +crypt /man/4/keyfs +crypt.b /man/1/crypt +cryptanalysis /man/2/security-0intro +cryptoalg /man/1/rcmd +cryptographic /man/2/keyring-0intro +cryptographic /man/2/keyring-ipint +cryptographic /man/2/keyring-sha1 +cryptographic /man/2/security-0intro +cryptographic /man/4/factotum +cryptographically /man/2/keyring-0intro +cryptographically /man/2/keyring-crypt +cryptographically /man/2/keyring-sha1 +cryptographically /man/3/sign +cryptographically /man/6/dis +cryptographically /man/6/keytext +cryptography /man/2/keyring-0intro +cryptography /man/2/security-0intro +cryptography /man/3/ssl +cs /man/1/secstore +cs /man/1/tr +cs /man/1/webgrab +cs /man/2/convcs +cs /man/2/pop3 +cs /man/2/secstore +cs /man/2/security-login +cs /man/2/smtp +cs /man/2/srv +cs /man/2/sys-dial +cs /man/2/virgil +cs /man/4/ftpfs +cs /man/4/namespace +cs /man/6/attrdb +cs /man/6/ndb +cs /man/8/bootpd +cs /man/8/cs +cs /man/8/dhcp +cs /man/8/dns +cs /man/8/register +cs /man/8/srv +cs /man/8/svc +cs /man/8/virgild +cs.b /man/8/cs +csfile /man/2/convcs +csize /man/8/prep +csn /man/3/pnp +csname /man/1/tcs +csname /man/2/convcs +csquery /man/8/cs +csquery.b /man/8/cs +css /man/2/w3c-css +css.b /man/2/w3c-css +css.m /man/2/w3c-css +css21 /man/2/w3c-css +csv /man/1/sh +csv /man/1/sh-csv +csv.b /man/1/sh-csv +ct65545 /man/3/vga +ct65545hwgc /man/3/vga +ctime /man/2/daytime +ctime /man/2/palmfile +ctl /man/1/kill +ctl /man/1/secstore +ctl /man/1/wm +ctl /man/10/acid +ctl /man/10/odbc +ctl /man/10/parsecmd +ctl /man/10/plan9.ini +ctl /man/2/command +ctl /man/2/disks +ctl /man/2/draw-context +ctl /man/2/mpeg +ctl /man/2/styxservers-nametree +ctl /man/2/sys-dial +ctl /man/2/tkclient +ctl /man/2/wmclient +ctl /man/2/wmsrv +ctl /man/3/cmd +ctl /man/3/draw +ctl /man/3/ds +ctl /man/3/dup +ctl /man/3/eia +ctl /man/3/ether +ctl /man/3/flash +ctl /man/3/floppy +ctl /man/3/ftl +ctl /man/3/i2c +ctl /man/3/i82365 +ctl /man/3/ip +ctl /man/3/plap +ctl /man/3/pnp +ctl /man/3/prof +ctl /man/3/prog +ctl /man/3/sd +ctl /man/3/ssl +ctl /man/3/tls +ctl /man/4/acme +ctl /man/4/cpu +ctl /man/4/factotum +ctl /man/4/spree +ctl /man/8/collabsrv +ctl /man/8/dhcp +ctl /man/8/prep +ctlfd /man/2/disks +ctlifc /man/2/dhcpclient +ctlr /man/3/vga +ctrl /man/10/9load +cts /man/3/eia +ctx /man/1/stack +ctxt /man/1/stack +ctxt /man/1/yacc +ctxt /man/2/command +ctxt /man/2/debug +ctxt /man/2/dialog +ctxt /man/2/draw-context +ctxt /man/2/draw-example +ctxt /man/2/ir +ctxt /man/2/itslib +ctxt /man/2/selectfile +ctxt /man/2/sh +ctxt /man/2/tk +ctxt /man/2/tkclient +ctxt /man/2/translate +ctxt /man/2/volume +ctxt /man/2/wmclient +ctxt /man/2/wmlib +ctxt.cinput /man/2/ir +ctxt.ctl /man/2/tkclient +ctxt.ctl /man/2/wmclient +ctxt.ctomux /man/2/ir +ctxt.kbd /man/2/tkclient +ctxt.kbd /man/2/wmclient +ctxt.ptr /man/2/tkclient +ctxt.ptr /man/2/wmclient +cu /man/3/sd +cube /man/2/math-elem +cube /man/6/colour +cubic /man/2/draw-image +cue /man/1/deb +cuid /man/2/factotum +cumulative /man/1/cprof +curc /man/10/styxserver +curid /man/2/tabs +curly /man/1/acme +curly /man/2/tk +currency /man/1/units +currency /man/6/keyboard +current /man/1/acme +current /man/1/alphabet-fs +current /man/1/basename +current /man/1/bind +current /man/1/blur +current /man/1/brutus +current /man/1/cal +current /man/1/charon +current /man/1/chgrp +current /man/1/collab-clients +current /man/1/date +current /man/1/deb +current /man/1/du +current /man/1/env +current /man/1/fc +current /man/1/fs +current /man/1/gettar +current /man/1/grid-monitor +current /man/1/grid-query +current /man/1/kill +current /man/1/listen +current /man/1/logon +current /man/1/mash +current /man/1/mash-tk +current /man/1/mc +current /man/1/mdb +current /man/1/mk +current /man/1/mprof +current /man/1/ns +current /man/1/nsbuild +current /man/1/passwd +current /man/1/plumb +current /man/1/ps +current /man/1/pwd +current /man/1/read +current /man/1/secstore +current /man/1/sendmail +current /man/1/session +current /man/1/sh +current /man/1/sh-alphabet +current /man/1/sh-regex +current /man/1/sh-std +current /man/1/sh-test +current /man/1/tiny +current /man/1/tktester +current /man/1/touch +current /man/1/unicode +current /man/1/wm +current /man/1/wm-misc +current /man/1/wm-sh +current /man/10/2c +current /man/10/a.out +current /man/10/acid +current /man/10/conf +current /man/10/dev +current /man/10/devattach +current /man/10/dynld +current /man/10/error +current /man/10/eve +current /man/10/iar +current /man/10/intrenable +current /man/10/kproc +current /man/10/lock +current /man/10/mk +current /man/10/newchan +current /man/10/odbc +current /man/10/panic +current /man/10/qio +current /man/10/seconds +current /man/10/splhi +current /man/10/styxserver +current /man/2/0intro +current /man/2/arg +current /man/2/attrdb +current /man/2/bufio +current /man/2/command +current /man/2/crc +current /man/2/debug +current /man/2/dhcpclient +current /man/2/dis +current /man/2/diskblocks +current /man/2/draw-context +current /man/2/draw-display +current /man/2/drawmux +current /man/2/env +current /man/2/exception +current /man/2/fsproto +current /man/2/geodesy +current /man/2/itslib +current /man/2/keyring-crypt +current /man/2/keyring-gensk +current /man/2/keyring-ipint +current /man/2/keyring-sha1 +current /man/2/newns +current /man/2/popup +current /man/2/registries +current /man/2/scsiio +current /man/2/security-auth +current /man/2/sh +current /man/2/spree +current /man/2/spree-allow +current /man/2/spree-cardlib +current /man/2/spree-objstore +current /man/2/styx +current /man/2/styxconv +current /man/2/styxservers +current /man/2/sys-0intro +current /man/2/sys-bind +current /man/2/sys-export +current /man/2/sys-fauth +current /man/2/sys-pctl +current /man/2/sys-read +current /man/2/sys-seek +current /man/2/sys-self +current /man/2/sys-sleep +current /man/2/sys-stat +current /man/2/tkclient +current /man/2/translate +current /man/2/wmclient +current /man/2/wmlib +current /man/2/wmsrv +current /man/2/workdir +current /man/2/xml +current /man/3/boot +current /man/3/cap +current /man/3/cmd +current /man/3/cons +current /man/3/dbg +current /man/3/draw +current /man/3/dup +current /man/3/flash +current /man/3/i2c +current /man/3/ip +current /man/3/logfs +current /man/3/mpeg +current /man/3/pointer +current /man/3/prog +current /man/3/snarf +current /man/3/srv +current /man/3/srv9 +current /man/3/tls +current /man/3/touch +current /man/3/tv +current /man/3/usb +current /man/3/vga +current /man/4/9srvfs +current /man/4/acme +current /man/4/cpu +current /man/4/export +current /man/4/ftpfs +current /man/4/import +current /man/4/iostats +current /man/4/keyfs +current /man/4/namespace +current /man/4/spree +current /man/4/tarfs +current /man/5/0intro +current /man/5/clunk +current /man/5/stat +current /man/5/walk +current /man/6/dis +current /man/6/image +current /man/6/namespace +current /man/6/plumbing +current /man/6/proto +current /man/6/ubfa +current /man/7/db +current /man/8/applylog +current /man/8/bootpd +current /man/8/changelogin +current /man/8/collabsrv +current /man/8/create +current /man/8/cs +current /man/8/dhcp +current /man/8/getauthinfo +current /man/8/styxmon +current /man/8/svc +current /man/9/bind +current /man/9/button +current /man/9/canvas +current /man/9/checkbutton +current /man/9/choicebutton +current /man/9/cursor +current /man/9/entry +current /man/9/frame +current /man/9/grab +current /man/9/grid +current /man/9/label +current /man/9/listbox +current /man/9/menu +current /man/9/menubutton +current /man/9/options +current /man/9/panel +current /man/9/radiobutton +current /man/9/scale +current /man/9/scrollbar +current /man/9/text +current /man/9/variable +curselection /man/9/listbox +cursor /man/1/acme +cursor /man/1/mux +cursor /man/1/wm-sh +cursor /man/2/draw-context +cursor /man/2/draw-display +cursor /man/3/pointer +cursor /man/3/vga +cursor /man/7/db +cursor /man/9/0intro +cursor /man/9/button +cursor /man/9/canvas +cursor /man/9/cursor +cursor /man/9/entry +cursor /man/9/listbox +cursor /man/9/menu +cursor /man/9/options +cursor /man/9/scale +cursor /man/9/text +cursors /man/2/draw-display +cursorset /man/2/draw-display +curve /man/2/draw-image +curve /man/9/canvas +curved /man/9/canvas +curves /man/9/canvas +custom /man/1/listen +custom /man/1/tail +custom /man/10/devattach +custom /man/4/spree +customary /man/2/math-fp +customer /man/2/keyring-0intro +customizing /man/1/mash-tk +cut /man/1/acme +cut /man/1/brutus +cut /man/1/wm-misc +cut /man/1/wm-sh +cut /man/4/acme +cuts /man/1/brutus +cuts /man/1/wm-sh +cvstyx /man/2/styxconv +cwd /man/1/wm-sh +cx /man/1/miniterm +cy /man/2/imagefile +cyan /man/2/draw-display +cyber938x /man/3/vga +cyber938xhwgc /man/3/vga +cycle /man/1/tsort +cycle /man/2/keyring-rc4 +cycles /man/1/tsort +cycles /man/2/sexprs +cycles /man/8/ftl +cyclic /man/10/c2l +cyclic /man/2/crc +cyclic /man/2/format +cyclic /man/2/prefab-element +cyclic /man/2/prof +cyclic /man/2/sexprs +cyclic /man/2/spki +cyclic /man/2/ubfa +cyclic /man/2/w3c-css +cyclic /man/2/w3c-xpointers +cyclic /man/2/wmsrv +cyl /man/2/disks +cylinder /man/10/9load +cylinder /man/2/disks +cylinder /man/3/sd +cylinder /man/8/prep +cylinders /man/2/disks +cylinders /man/8/prep +cypher /man/1/crypt +cyrillic /man/6/keyboard +d.gid /man/2/styxservers-nametree +d.mode /man/2/styxservers-nametree +d.name /man/2/styxservers-nametree +d.qid /man/10/styxserver +d.qid.path /man/2/styxservers-nametree +d.qid.qtype /man/2/styxservers-nametree +d.qid.type&qtdir /man/10/styxserver +d.uid /man/2/styxservers-nametree +daemon /man/1/emu +daemon /man/1/listen +daemon /man/8/httpd +daemon /man/8/init +daemon /man/8/logind +daemon's /man/8/httpd +dallas /man/3/rtc +damage /man/9/1copyright +damages /man/9/1copyright +dance /man/10/plan9.ini +dapop /man/2/dis +darkblue /man/2/draw-display +darkblue /man/9/types +darker /man/1/cprof +darker /man/1/mprof +darker /man/1/prof +darkgreen /man/2/draw-display +darkyellow /man/2/draw-display +dash /man/2/arg +dat.h /man/10/0intro +data /man/1/0intro +data /man/1/acme +data /man/1/alphabet-abc +data /man/1/alphabet-fs +data /man/1/alphabet-grid +data /man/1/alphabet-main +data /man/1/auplay +data /man/1/avr +data /man/1/calendar +data /man/1/charon +data /man/1/crypt +data /man/1/deb +data /man/1/emu +data /man/1/fs +data /man/1/grid-monitor +data /man/1/gzip +data /man/1/idea +data /man/1/keyboard +data /man/1/listen +data /man/1/logwindow +data /man/1/mdb +data /man/1/mprof +data /man/1/ns +data /man/1/plumb +data /man/1/sh-alphabet +data /man/1/sh-csv +data /man/1/sh-file2chan +data /man/1/sh-sexprs +data /man/1/stack +data /man/1/stream +data /man/1/tail +data /man/1/tcs +data /man/1/tee +data /man/1/telnet +data /man/1/tktester +data /man/1/uuencode +data /man/1/wm-misc +data /man/1/xd +data /man/10/2l +data /man/10/5coff +data /man/10/5cv +data /man/10/9load +data /man/10/a.out +data /man/10/acid +data /man/10/allocb +data /man/10/ar +data /man/10/c2l +data /man/10/conf +data /man/10/dev +data /man/10/devattach +data /man/10/dmainit +data /man/10/dynld +data /man/10/inm +data /man/10/intrenable +data /man/10/kprof +data /man/10/lock +data /man/10/malloc +data /man/10/ms2 +data /man/10/odbc +data /man/10/qio +data /man/10/readnum +data /man/10/ref +data /man/10/styx +data /man/10/styxserver +data /man/10/xalloc +data /man/10ti925/epocimg +data /man/10ti925/tihost +data /man/2/0intro +data /man/2/alphabet-intro +data /man/2/asn1 +data /man/2/attrdb +data /man/2/bufio +data /man/2/bufio-chanfill +data /man/2/convcs +data /man/2/crc +data /man/2/dbm +data /man/2/debug +data /man/2/devpointer +data /man/2/dhcpclient +data /man/2/dis +data /man/2/disks +data /man/2/draw-0intro +data /man/2/draw-context +data /man/2/draw-image +data /man/2/draw-point +data /man/2/draw-screen +data /man/2/encoding +data /man/2/factotum +data /man/2/filter +data /man/2/filter-deflate +data /man/2/filter-slip +data /man/2/format +data /man/2/hash +data /man/2/ida +data /man/2/imagefile +data /man/2/ip +data /man/2/keyring-0intro +data /man/2/keyring-crypt +data /man/2/keyring-getmsg +data /man/2/keyring-getstring +data /man/2/keyring-sha1 +data /man/2/math-0intro +data /man/2/palmfile +data /man/2/plumbmsg +data /man/2/prefab-0intro +data /man/2/prefab-compound +data /man/2/print +data /man/2/prof +data /man/2/pslib +data /man/2/registries +data /man/2/scsiio +data /man/2/secstore +data /man/2/security-0intro +data /man/2/security-auth +data /man/2/security-random +data /man/2/security-ssl +data /man/2/sets +data /man/2/sexprs +data /man/2/sh +data /man/2/spki +data /man/2/spree +data /man/2/srv +data /man/2/styx +data /man/2/styxservers +data /man/2/styxservers-nametree +data /man/2/sys-0intro +data /man/2/sys-dial +data /man/2/sys-dup +data /man/2/sys-export +data /man/2/sys-file2chan +data /man/2/sys-iounit +data /man/2/sys-pipe +data /man/2/sys-read +data /man/2/sys-self +data /man/2/tftp +data /man/2/timers +data /man/2/ubfa +data /man/2/venti +data /man/2/w3c-xpointers +data /man/2/wait +data /man/2/wmsrv +data /man/2/xml +data /man/3/arch +data /man/3/audio +data /man/3/boot +data /man/3/cmd +data /man/3/cons +data /man/3/dbg +data /man/3/draw +data /man/3/ds +data /man/3/dynld +data /man/3/eia +data /man/3/ether +data /man/3/flash +data /man/3/floppy +data /man/3/fpga +data /man/3/ftl +data /man/3/gpio +data /man/3/i2c +data /man/3/ip +data /man/3/kprof +data /man/3/logfs +data /man/3/lpt +data /man/3/mnt +data /man/3/mpeg +data /man/3/pbus +data /man/3/pipe +data /man/3/plap +data /man/3/pnp +data /man/3/prog +data /man/3/rtc +data /man/3/sd +data /man/3/sign +data /man/3/ssl +data /man/3/tls +data /man/3/touch +data /man/3/tv +data /man/3/usb +data /man/3/vga +data /man/3/vid +data /man/4/acme +data /man/4/dbfs +data /man/4/dossrv +data /man/4/factotum +data /man/4/ftpfs +data /man/4/iostats +data /man/4/keyfs +data /man/4/keysrv +data /man/4/logfile +data /man/4/memfs +data /man/4/namespace +data /man/4/palmsrv +data /man/4/ramfile +data /man/5/0intro +data /man/5/read +data /man/5/stat +data /man/5/version +data /man/6/attrdb +data /man/6/audio +data /man/6/dis +data /man/6/font +data /man/6/image +data /man/6/keys +data /man/6/keytext +data /man/6/ndb +data /man/6/plumbing +data /man/6/sbl +data /man/6/sexprs +data /man/6/ubfa +data /man/7/db +data /man/7/dbsrv +data /man/8/bootpd +data /man/8/changelogin +data /man/8/collabsrv +data /man/8/cs +data /man/8/dns +data /man/8/ftl +data /man/8/kfscmd +data /man/8/ping +data /man/8/prep +data /man/8/rdbgsrv +data /man/8/rstyxd +data /man/8/signer +data /man/8/styxchat +data.array /man/2/dis +data.dat /man/1/blur +data0 /man/3/usb +data1 /man/2/asn1 +data1 /man/3/pipe +data1 /man/3/usb +database /man/1/0intro +database /man/1/units +database /man/10/odbc +database /man/2/attrdb +database /man/2/dbm +database /man/2/palmfile +database /man/2/spree +database /man/4/dbfs +database /man/4/registry +database /man/6/attrdb +database /man/6/ndb +database /man/7/db +database /man/7/dbsrv +database /man/8/bootpd +database /man/8/cs +database /man/8/dns +database /man/8/getauthinfo +databases /man/1/0intro +databases /man/1/mux +databases /man/10/odbc +databases /man/2/attrdb +databases /man/2/dbm +databases /man/7/0intro +databook /man/3/i82365 +datafd /man/7/db +datafile /man/1/calendar +datafile /man/1/idea +datafile.id /man/1/idea +datafiles /man/4/lockfs +datagram /man/3/ip +datagrams /man/3/ip +datain /man/3/tls +dataout /man/3/tls +dataprefix /man/2/print +datasize /man/10/ksize +datasource /man/10/odbc +datatype /man/2/venti +dataxx /man/2/plumbmsg +date /man/1/acme +date /man/1/date +date /man/1/deb +date /man/1/emu +date /man/1/ls +date /man/1/mash-make +date /man/1/mk +date /man/1/secstore +date /man/1/wm-misc +date /man/1/wm-sh +date /man/10/ar +date /man/10/devattach +date /man/10/iar +date /man/10/mk +date /man/2/command +date /man/2/keyring-0intro +date /man/2/tk +date /man/8/changelogin +date /man/8/collabsrv +date /man/8/create +date /man/8/createsignerkey +date /man/8/mkfs +date /man/8/prep +date /man/8/sntp +date.b /man/1/acme +date.b /man/1/date +date.b /man/1/wm-misc +date.dis /man/2/command +date2epoch /man/2/spki +dates /man/10/iar +dates /man/2/sys-0intro +dates /man/8/mkfs +datops /man/2/draw-image +datum /man/2/dbm +datum /man/2/geodesy +datum /man/3/tls +datum /man/5/stat +datum /man/6/dis +datum2datum /man/2/geodesy +datums /man/2/geodesy +dawes /man/2/format +daytime /man/1/date +daytime /man/2/daytime +daytime /man/2/palmfile +daytime /man/8/createsignerkey +daytime.b /man/2/daytime +daytime.m /man/2/daytime +db /man/1/mdb +db /man/1/sendmail +db /man/10/acid +db /man/10/dev +db /man/10/devattach +db /man/10/odbc +db /man/2/attrdb +db /man/2/dbm +db /man/2/pop3 +db /man/2/smtp +db /man/2/sys-dial +db /man/7/db +db /man/7/dbsrv +db /man/8/cs +db /man/8/register +db.b /man/7/db +db.fetch /man/2/dbm +db.firstkey /man/2/dbm +db.m /man/7/db +db.nextkey /man/2/dbm +db.open /man/2/attrdb +db.sopen /man/2/attrdb +db1 /man/2/attrdb +db2 /man/2/attrdb +dbentry /man/2/attrdb +dbf /man/2/attrdb +dbf /man/2/dbm +dbf.create /man/2/dbm +dbf.firstkey /man/2/dbm +dbf.nextkey /man/2/dbm +dbf.open /man/2/dbm +dbf.store /man/2/dbm +dbfile /man/4/iostats +dbfile /man/4/registry +dbfile /man/8/bootpd +dbfs /man/1/calendar +dbfs /man/4/dbfs +dbfs.b /man/4/dbfs +dbg /man/3/dbg +dbgctl /man/2/debug +dbgctl /man/3/dbg +dbgctl /man/3/prog +dbgctlflush /man/3/dbg +dbgctlstart /man/3/dbg +dbgctlstop /man/3/dbg +dbgdata /man/3/dbg +dbglog /man/3/dbg +dbgstart /man/3/dbg +dbh /man/7/db +dbinfo /man/2/palmfile +dbinfo.name /man/2/palmfile +dbm /man/2/dbm +dbm.b /man/2/dbm +dbm.m /man/2/dbm +dbname /man/2/palmfile +dbname /man/7/db +dbopen /man/7/db +dbottom /man/2/spree-cardlib +dbptr /man/2/attrdb +dbs /man/2/attrdb +dbsize /man/10/dev +dbsrv /man/10/odbc +dbsrv /man/7/db +dbsrv /man/7/dbsrv +dbsrv /man/8/srv +dbsrv.b /man/7/dbsrv +dbsrv.dis /man/8/srv +dc /man/10/dev +dcd /man/3/eia +dchars /man/9/canvas +dd /man/1/dd +dd /man/2/spki +dd /man/4/kfs +dd.b /man/1/dd +dd:1 /man/2/sets +ddmmyyyy /man/8/changelogin +ddmmyyyy /man/8/createsignerkey +de /man/10/9load +de /man/2/asn1 +deactivate /man/9/menu +deactivated /man/9/menu +deactivates /man/9/button +deactivates /man/9/checkbutton +deactivates /man/9/menubutton +deactivates /man/9/radiobutton +dead /man/2/sh +dead /man/3/dbg +deadlocks /man/10/lock +deal /man/1/grid-monitor +deal /man/10/intrenable +deal /man/10/mk +deal /man/10/readnum +deal /man/2/geodesy +deal /man/2/spree-cardlib +deal /man/6/image +deal /man/8/svc +dealing /man/1/mash-tk +dealing /man/2/spree-cardlib +dealing /man/4/acme +dealing /man/9/entry +deallocate /man/10/allocb +deallocating /man/10/error +deallocations /man/3/prof +deals /man/1/emu +deals /man/10/styxserver +deals /man/2/spree-cardlib +deals /man/2/tk +dealt /man/1/cprof +dealt /man/10/conf +deb /man/1/0intro +deb /man/1/deb +deb /man/1/ps +deb /man/1/stack +deb /man/1/wm-misc +deb /man/2/debug +deb /man/6/sbl +deb.b /man/1/deb +debate /man/1/diff +debdata.b /man/1/deb +debsrc.b /man/1/deb +debug /man/1/0intro +debug /man/1/deb +debug /man/1/stack +debug /man/1/wm-misc +debug /man/10/5cv +debug /man/10/acid +debug /man/2/debug +debug /man/2/dhcpclient +debug /man/2/print +debug /man/3/dbg +debug /man/3/ip +debug /man/4/factotum +debug /man/6/sbl +debug /man/8/plumber +debug /man/8/rdbgsrv +debug /man/9/text +debug.b /man/2/debug +debug.m /man/2/debug +debugged /man/1/deb +debugged /man/10/acid +debugged /man/3/dbg +debugged /man/3/prog +debugged /man/4/ftpfs +debugger /man/1/0intro +debugger /man/1/deb +debugger /man/10/acid +debugger /man/3/dbg +debuggers /man/6/sbl +debugging /man/1/0intro +debugging /man/1/collab-clients +debugging /man/1/deb +debugging /man/1/emu +debugging /man/1/kill +debugging /man/1/limbo +debugging /man/1/mk +debugging /man/1/tiny +debugging /man/10/2l +debugging /man/10/5coff +debugging /man/10/mk +debugging /man/10/odbc +debugging /man/10/plan9.ini +debugging /man/10/xalloc +debugging /man/2/alphabet-intro +debugging /man/2/debug +debugging /man/2/filter-deflate +debugging /man/2/scsiio +debugging /man/2/styx +debugging /man/2/ubfa +debugging /man/3/cons +debugging /man/3/dbg +debugging /man/3/draw +debugging /man/3/ftl +debugging /man/3/ip +debugging /man/3/prog +debugging /man/3/touch +debugging /man/4/dossrv +debugging /man/4/factotum +debugging /man/4/iostats +debugging /man/4/keyfs +debugging /man/6/dis +debugging /man/6/sbl +debugging /man/8/bootpd +debugging /man/8/dhcp +debugging /man/8/httpd +debugging /man/8/mangaload +debugging /man/8/prep +debugging /man/8/rdbgsrv +debugging /man/8/sntp +debugging /man/9/text +debugon /man/3/draw +dec /man/10/a.out +dec /man/2/encoding +decakilometre /man/2/geodesy +decametre /man/2/geodesy +decendants /man/9/destroy +decide /man/1/plumb +decide /man/10/dev +decide /man/10/dynld +decide /man/10/sleep +decide /man/2/prefab-element +decide /man/2/styx +decide /man/5/stat +decide /man/8/init +decide /man/8/plumber +decided /man/10/plan9.ini +decides /man/2/spree +decimal /man/1/cmp +decimal /man/1/fc +decimal /man/1/freq +decimal /man/1/gzip +decimal /man/1/look +decimal /man/1/math-misc +decimal /man/1/mathcalc +decimal /man/1/mdb +decimal /man/1/sh-regex +decimal /man/1/sh-std +decimal /man/1/strings +decimal /man/1/timestamp +decimal /man/1/wm +decimal /man/1/xd +decimal /man/10/2l +decimal /man/10/5cv +decimal /man/10/ar +decimal /man/10/atoi +decimal /man/10/print +decimal /man/10/readnum +decimal /man/2/disks +decimal /man/2/drawmux +decimal /man/2/geodesy +decimal /man/2/ip +decimal /man/2/keyring-getmsg +decimal /man/2/math-0intro +decimal /man/2/plumbmsg +decimal /man/2/sexprs +decimal /man/2/spree-allow +decimal /man/2/spree-cardlib +decimal /man/2/sys-print +decimal /man/3/cmd +decimal /man/3/cons +decimal /man/3/draw +decimal /man/3/dup +decimal /man/3/ether +decimal /man/3/flash +decimal /man/3/ip +decimal /man/3/lpt +decimal /man/3/pnp +decimal /man/3/pointer +decimal /man/3/prog +decimal /man/3/rtc +decimal /man/3/sign +decimal /man/3/switch +decimal /man/3/touch +decimal /man/4/acme +decimal /man/6/font +decimal /man/6/image +decimal /man/6/keytext +decimal /man/6/sbl +decimal /man/6/sexprs +decimal /man/6/users +decimal /man/8/applylog +decimal /man/8/collabsrv +decimal /man/8/rstyxd +decimal /man/8/styxchat +decimal /man/9/bind +decimal /man/9/canvas +decimal /man/9/image +decimal /man/9/listbox +decimal /man/9/menu +decimal /man/9/text +decimal /man/9/types +decimally /man/4/acme +deck /man/2/spree-cardlib +decl /man/2/w3c-css +decl.values /man/2/w3c-css +declaration /man/1/deb +declaration /man/1/mc +declaration /man/1/sh-alphabet +declaration /man/1/yacc +declaration /man/2/0intro +declaration /man/2/alphabet-intro +declaration /man/2/sys-self +declaration /man/2/w3c-css +declarations /man/1/alphabet-abc +declarations /man/1/alphabet-fs +declarations /man/1/alphabet-grid +declarations /man/1/limbo +declarations /man/1/sh-alphabet +declarations /man/10/0intro +declarations /man/10/c2l +declarations /man/10/conf +declarations /man/2/sys-self +declarations /man/2/w3c-css +declarations /man/3/dbg +declarations /man/4/namespace +declarations /man/6/man +declare /man/1/sh-alphabet +declare /man/2/0intro +declared /man/1/deb +declared /man/1/mc +declared /man/1/sh-alphabet +declared /man/1/yacc +declared /man/10/2c +declared /man/10/acid +declared /man/10/dev +declared /man/2/0intro +declared /man/2/alphabet-intro +declared /man/2/dis +declared /man/2/draw-screen +declared /man/2/sets +declared /man/2/sh +declared /man/2/sys-0intro +declared /man/2/tk +declared /man/3/i2c +declared /man/6/dis +declared /man/6/sbl +declares /man/1/listen +declares /man/1/sh-alphabet +declares /man/2/alphabet-intro +declares /man/2/disks +declaring /man/1/alphabet-main +declaring /man/10/2c +decls /man/2/w3c-css +decode /man/1/uuencode +decode /man/2/asn1 +decode /man/2/filter-slip +decode /man/2/palmfile +decoded /man/1/uuencode +decoded /man/10/rune +decoded /man/2/asn1 +decoded /man/2/dis +decoded /man/2/w3c-css +decoded /man/6/sexprs +decoder /man/3/mpeg +decoders /man/10/ms2 +decoders /man/2/encoding +decodes /man/2/asn1 +decodes /man/2/dis +decoding /man/1/stack +decoding /man/1/uuencode +decoding /man/2/asn1 +decoding /man/2/encoding +decoding /man/2/filter-slip +decoding /man/2/ubfa +decoding /man/2/w3c-css +decoding /man/3/tls +decompress /man/10/5cv +decompresses /man/10/5cv +decompression /man/1/gzip +decorated /man/1/sh +decoration /man/2/tkclient +decoration /man/2/wmclient +decorations /man/2/wmclient +decrease /man/2/volume +decreasing /man/1/mathcalc +decreasing /man/1/mc +decreasing /man/10/kprof +decref /man/10/ref +decrement /man/10/dev +decremented /man/9/scale +decrements /man/1/mdb +decrements /man/10/newchan +decrements /man/10/ref +decryped /man/1/idea +decrypt /man/1/crypt +decrypt /man/1/idea +decrypt /man/2/keyring-crypt +decrypt /man/2/keyring-rc4 +decrypt /man/2/secstore +decrypt /man/2/security-0intro +decrypt /man/8/svc +decrypted /man/1/idea +decrypted /man/1/secstore +decrypted /man/2/keyring-crypt +decrypted /man/2/secstore +decrypted /man/2/security-0intro +decrypting /man/1/crypt +decryption /man/1/idea +decryption /man/2/keyring-crypt +decryption /man/2/security-0intro +decryption /man/7/db +decryptor /man/2/keyring-crypt +decrypts /man/1/crypt +decrypts /man/1/idea +decrypts /man/2/secstore +decrypts /man/4/keyfs +decrypts /man/6/keys +dectect /man/3/gpio +dedicated /man/10/2c +dedicating /man/10/a.out +deduced /man/10/5cv +deemed /man/10/devattach +deep /man/10/error +deep /man/2/draw-image +deep /man/6/image +deeply /man/1/acme +def /man/1/mash-tk +def /man/10/2c +def /man/10/c2l +def.dis /man/1/asm +def.s /man/1/asm +defa /man/2/dis +default /man/1/9win +default /man/1/acme +default /man/1/alphabet-fs +default /man/1/alphabet-main +default /man/1/avr +default /man/1/bind +default /man/1/calendar +default /man/1/charon +default /man/1/chmod +default /man/1/cmp +default /man/1/collab +default /man/1/collab-clients +default /man/1/cp +default /man/1/cpu +default /man/1/crypt +default /man/1/dd +default /man/1/deb +default /man/1/dmview +default /man/1/du +default /man/1/emu +default /man/1/fmt +default /man/1/freq +default /man/1/fs +default /man/1/ftree +default /man/1/gettar +default /man/1/gzip +default /man/1/itest +default /man/1/lc +default /man/1/limbo +default /man/1/listen +default /man/1/logon +default /man/1/look +default /man/1/mash +default /man/1/mash-tk +default /man/1/math-misc +default /man/1/mc +default /man/1/mdb +default /man/1/miniterm +default /man/1/mk +default /man/1/mprof +default /man/1/ns +default /man/1/nsbuild +default /man/1/p +default /man/1/passwd +default /man/1/plumb +default /man/1/prof +default /man/1/rcmd +default /man/1/read +default /man/1/secstore +default /man/1/session +default /man/1/sh-arg +default /man/1/sh-file2chan +default /man/1/sh-std +default /man/1/sh-tk +default /man/1/sort +default /man/1/spree-join +default /man/1/stream +default /man/1/strings +default /man/1/tail +default /man/1/tcs +default /man/1/telnet +default /man/1/tiny +default /man/1/tkcmd +default /man/1/tktester +default /man/1/touch +default /man/1/wm +default /man/1/wm-misc +default /man/1/xd +default /man/1/yacc +default /man/1/zeros +default /man/10/2a +default /man/10/2c +default /man/10/2l +default /man/10/5cv +default /man/10/9load +default /man/10/acid +default /man/10/dev +default /man/10/devattach +default /man/10/dynld +default /man/10/eve +default /man/10/ksize +default /man/10/mk +default /man/10/ntsrv +default /man/10/odbc +default /man/10/plan9.ini +default /man/10/qio +default /man/10/srclist +default /man/10/styxserver +default /man/10ti925/tihost +default /man/2/convcs +default /man/2/crc +default /man/2/devpointer +default /man/2/dhcpclient +default /man/2/dis +default /man/2/draw-display +default /man/2/draw-example +default /man/2/draw-font +default /man/2/draw-image +default /man/2/geodesy +default /man/2/keyring-auth +default /man/2/keyset +default /man/2/math-fp +default /man/2/pop3 +default /man/2/prefab-compound +default /man/2/print +default /man/2/prof +default /man/2/registries +default /man/2/secstore +default /man/2/security-0intro +default /man/2/security-auth +default /man/2/security-login +default /man/2/sh +default /man/2/smtp +default /man/2/spree-cardlib +default /man/2/styxservers +default /man/2/sys-bind +default /man/2/sys-fversion +default /man/2/tkclient +default /man/2/w3c-xpointers +default /man/2/wmclient +default /man/3/audio +default /man/3/cmd +default /man/3/cons +default /man/3/dbg +default /man/3/eia +default /man/3/flash +default /man/3/gpio +default /man/3/i2c +default /man/3/ip +default /man/3/prof +default /man/3/sd +default /man/3/ssl +default /man/3/tv +default /man/3/usb +default /man/3/vga +default /man/4/9srvfs +default /man/4/acme +default /man/4/archfs +default /man/4/dossrv +default /man/4/export +default /man/4/factotum +default /man/4/ftpfs +default /man/4/import +default /man/4/iostats +default /man/4/keyfs +default /man/4/kfs +default /man/4/memfs +default /man/4/namespace +default /man/4/palmsrv +default /man/4/registry +default /man/4/tarfs +default /man/6/dis +default /man/6/font +default /man/6/man +default /man/6/namespace +default /man/6/ndb +default /man/6/translate +default /man/7/db +default /man/7/dbsrv +default /man/8/applylog +default /man/8/bootpd +default /man/8/changelogin +default /man/8/collabsrv +default /man/8/create +default /man/8/createsignerkey +default /man/8/cs +default /man/8/dhcp +default /man/8/dns +default /man/8/getauthinfo +default /man/8/httpd +default /man/8/init +default /man/8/kfscmd +default /man/8/mangaload +default /man/8/manufacture +default /man/8/mkfs +default /man/8/ping +default /man/8/plumber +default /man/8/prep +default /man/8/rdbgsrv +default /man/8/register +default /man/8/rip +default /man/8/rstyxd +default /man/8/sntp +default /man/8/srv +default /man/8/styxchat +default /man/9/button +default /man/9/canvas +default /man/9/checkbutton +default /man/9/cursor +default /man/9/entry +default /man/9/frame +default /man/9/grid +default /man/9/label +default /man/9/listbox +default /man/9/menu +default /man/9/menubutton +default /man/9/options +default /man/9/pack +default /man/9/panel +default /man/9/radiobutton +default /man/9/scale +default /man/9/scrollbar +default /man/9/text +default.css /man/1/ebook +defaultheight /man/1/charon +defaulting /man/10/9load +defaults /man/1/acme +defaults /man/1/math-misc +defaults /man/1/rcmd +defaults /man/10/2c +defaults /man/10/2l +defaults /man/10/plan9.ini +defaults /man/10/styxserver +defaults /man/2/registries +defaults /man/2/secstore +defaults /man/2/sys-fversion +defaults /man/4/dossrv +defaults /man/8/applylog +defaults /man/8/create +defaults /man/8/getauthinfo +defaults /man/9/canvas +defaults /man/9/checkbutton +defaults /man/9/entry +defaults /man/9/grid +defaults /man/9/listbox +defaults /man/9/menu +defaults /man/9/pack +defaults /man/9/radiobutton +defaults /man/9/scale +defaults /man/9/see +defaults /man/9/text +defaultwidth /man/1/charon +defaultxxx /man/2/keyring-auth +defb /man/2/dis +defense /man/9/1copyright +deferred /man/9/text +deferring /man/1/wm-sh +deff /man/2/dis +define /man/1/charon +define /man/1/emu +define /man/1/mash +define /man/1/mash-tk +define /man/1/mk +define /man/1/sh-alphabet +define /man/1/sh-regex +define /man/1/wm-sh +define /man/1/yacc +define /man/10/2c +define /man/10/a.out +define /man/10/ar +define /man/10/c2l +define /man/10/mk +define /man/10/seconds +define /man/10/styx +define /man/10/styxserver +define /man/2/alphabet-intro +define /man/2/draw-0intro +define /man/2/draw-font +define /man/2/draw-rect +define /man/2/format +define /man/2/sh +define /man/2/spree-cardlib +define /man/2/styxservers +define /man/3/kprof +define /man/9/canvas +define /man/9/image +define /man/9/scrollbar +defined /man/1/acme +defined /man/1/alphabet-abc +defined /man/1/alphabet-fs +defined /man/1/alphabet-grid +defined /man/1/alphabet-main +defined /man/1/auplay +defined /man/1/grep +defined /man/1/grid-localreg +defined /man/1/mash +defined /man/1/mash-make +defined /man/1/mash-tk +defined /man/1/math-misc +defined /man/1/mk +defined /man/1/secstore +defined /man/1/sh +defined /man/1/sh-std +defined /man/1/yacc +defined /man/10/2c +defined /man/10/a.out +defined /man/10/acid +defined /man/10/ar +defined /man/10/c2l +defined /man/10/dynld +defined /man/10/inm +defined /man/10/intrenable +defined /man/10/kbdputc +defined /man/10/mk +defined /man/10/parsecmd +defined /man/10/plan9.ini +defined /man/10/rune +defined /man/10/seconds +defined /man/10/styx +defined /man/10/styxserver +defined /man/2/alphabet-intro +defined /man/2/attrdb +defined /man/2/bufio +defined /man/2/cfg +defined /man/2/convcs +defined /man/2/dis +defined /man/2/disks +defined /man/2/draw-0intro +defined /man/2/draw-context +defined /man/2/draw-font +defined /man/2/draw-image +defined /man/2/encoding +defined /man/2/format +defined /man/2/fsproto +defined /man/2/geodesy +defined /man/2/imagefile +defined /man/2/ip +defined /man/2/ir +defined /man/2/keyring-gensk +defined /man/2/math-fp +defined /man/2/math-linalg +defined /man/2/newns +defined /man/2/palmfile +defined /man/2/pop3 +defined /man/2/prefab-compound +defined /man/2/prefab-element +defined /man/2/prefab-style +defined /man/2/print +defined /man/2/readdir +defined /man/2/regex +defined /man/2/secstore +defined /man/2/sets +defined /man/2/sexprs +defined /man/2/sh +defined /man/2/spki +defined /man/2/spki-verifier +defined /man/2/styx +defined /man/2/styxconv +defined /man/2/styxservers +defined /man/2/sys-bind +defined /man/2/sys-fversion +defined /man/2/sys-open +defined /man/2/sys-self +defined /man/2/sys-stat +defined /man/2/translate +defined /man/2/ubfa +defined /man/2/w3c-xpointers +defined /man/3/cons +defined /man/3/draw +defined /man/3/dynld +defined /man/3/fs +defined /man/3/ftl +defined /man/3/prog +defined /man/3/sd +defined /man/3/usb +defined /man/4/keyfs +defined /man/4/namespace +defined /man/5/0intro +defined /man/5/attach +defined /man/5/error +defined /man/5/stat +defined /man/5/version +defined /man/6/dis +defined /man/6/keyboard +defined /man/6/keytext +defined /man/6/man +defined /man/6/ndb +defined /man/6/sbl +defined /man/6/sexprs +defined /man/6/ubfa +defined /man/8/collabsrv +defined /man/8/styxchat +defined /man/8/virgild +defined /man/9/1copyright +defined /man/9/bind +defined /man/9/canvas +defined /man/9/listbox +defined /man/9/scrollbar +defined /man/9/text +defines /man/1/alphabet-abc +defines /man/1/alphabet-fs +defines /man/1/alphabet-grid +defines /man/1/mash +defines /man/1/sh-alphabet +defines /man/1/sh-file2chan +defines /man/1/sh-regex +defines /man/1/sh-std +defines /man/1/sh-tk +defines /man/1/toolbar +defines /man/1/xd +defines /man/1/yacc +defines /man/10/dev +defines /man/10/dynld +defines /man/10/plan9.ini +defines /man/2/alphabet-intro +defines /man/2/command +defines /man/2/convcs +defines /man/2/dis +defines /man/2/disks +defines /man/2/draw-0intro +defines /man/2/draw-display +defines /man/2/draw-font +defines /man/2/draw-image +defines /man/2/draw-rect +defines /man/2/filter +defines /man/2/format +defines /man/2/imagefile +defines /man/2/ir +defines /man/2/prefab-0intro +defines /man/2/prefab-element +defines /man/2/sh +defines /man/2/spki +defines /man/2/spree-cardlib +defines /man/2/styx +defines /man/2/styxservers +defines /man/2/sys-stat +defines /man/3/cons +defines /man/5/version +defines /man/6/image +defines /man/6/keytext +defines /man/6/ndb +defines /man/6/proto +defines /man/6/translate +defines /man/6/users +defines /man/8/collabsrv +defines /man/8/httpd +defines /man/9/canvas +defining /man/10/error +defining /man/10/getfields +defining /man/2/alphabet-intro +defining /man/2/asn1 +defining /man/2/draw-0intro +defining /man/2/draw-image +defining /man/2/ip +defining /man/2/prefab-compound +defining /man/2/spki +defining /man/2/styxservers +defining /man/5/attach +defining /man/6/font +defining /man/9/button +defining /man/9/canvas +defining /man/9/checkbutton +defining /man/9/entry +defining /man/9/listbox +defining /man/9/menu +defining /man/9/menubutton +defining /man/9/radiobutton +defining /man/9/scale +defining /man/9/text +definite /man/1/mc +definitely /man/1/session +definition /man/1/bind +definition /man/1/mash +definition /man/1/sh +definition /man/1/sh-alphabet +definition /man/1/sh-std +definition /man/1/yacc +definition /man/10/2c +definition /man/10/c2l +definition /man/10/strcat +definition /man/2/0intro +definition /man/2/draw-0intro +definition /man/2/format +definition /man/2/sh +definition /man/2/sys-bind +definition /man/2/sys-self +definition /man/2/w3c-xpointers +definition /man/2/xml +definition /man/5/attach +definition /man/6/image +definition /man/6/sexprs +definition /man/8/register +definition /man/8/styxchat +definition /man/9/options +definitions /man/1/alphabet-main +definitions /man/1/limbo +definitions /man/1/mathcalc +definitions /man/1/mc +definitions /man/1/sh +definitions /man/1/sh-alphabet +definitions /man/1/yacc +definitions /man/10/2c +definitions /man/10/acid +definitions /man/10/c2l +definitions /man/2/asn1 +definitions /man/2/prefab-0intro +definitions /man/2/prefab-style +definitions /man/2/sys-dial +definitions /man/2/w3c-css +definitions /man/3/draw +definitions /man/4/namespace +definitions /man/6/dis +definitions /man/6/sexprs +definitions /man/7/db +defl /man/2/dis +deflate /man/1/gzip +deflate /man/2/filter +deflate /man/2/filter-deflate +deflate.b /man/2/filter-deflate +deflatepath /man/2/filter-deflate +defn /man/10/acid +defprinter /man/2/print +defs /man/2/dis +defunct /man/10/acid +defw /man/2/dis +defz /man/2/dis +deg /man/1/fc +deg /man/1/math-misc +deg /man/2/geodesy +deg:min /man/2/geodesy +deg:min:sec /man/2/geodesy +degenerate /man/2/prefab-element +degree /man/1/math-misc +degree /man/2/math-fp +degree /man/2/security-0intro +degree /man/3/cmd +degree /man/3/draw +degrees /man/1/mc +degrees /man/10/plan9.ini +degrees /man/2/draw-image +degrees /man/2/geodesy +degrees /man/9/canvas +del /man/1/acme +del /man/1/grid-monitor +del /man/1/sh-tk +del /man/10/9load +del /man/10/ntsrv +del /man/2/sets +del /man/2/spree +del /man/2/spree-allow +del /man/3/prog +del /man/4/acme +del /man/4/cpu +del /man/4/spree +del /man/6/keyboard +delay /man/10/delay +delay /man/10/plan9.ini +delay /man/10/sleep +delay /man/2/sys-sleep +delay /man/3/touch +delay /man/5/0intro +delay /man/8/virgild +delayed /man/2/spki +delayed /man/9/options +delays /man/10/delay +delays /man/10/seconds +delays /man/4/palmsrv +delbpt /man/2/debug +delclient /man/1/wm +delcol /man/1/acme +delegate /man/2/spki +delegated /man/6/ndb +delegation /man/2/spki +delete /man/1/acme +delete /man/1/brutus +delete /man/1/secstore +delete /man/1/tktester +delete /man/1/tr +delete /man/1/wm +delete /man/1/wm-sh +delete /man/10/acid +delete /man/10/iar +delete /man/10/ntsrv +delete /man/10/odbc +delete /man/2/dbm +delete /man/2/dict +delete /man/2/hash +delete /man/2/ir +delete /man/2/palmfile +delete /man/2/pop3 +delete /man/2/spree +delete /man/2/styxservers +delete /man/2/tk +delete /man/2/wmclient +delete /man/3/cons +delete /man/3/dbg +delete /man/4/acme +delete /man/4/dbfs +delete /man/4/factotum +delete /man/4/spree +delete /man/6/keyboard +delete /man/8/applylog +delete /man/8/kfscmd +delete /man/8/prep +delete /man/9/canvas +delete /man/9/entry +delete /man/9/image +delete /man/9/listbox +delete /man/9/menu +delete /man/9/text +deletechildren /man/2/spree +deleted /man/1/0intro +deleted /man/1/acme +deleted /man/1/mk +deleted /man/1/sh-tk +deleted /man/1/wm-sh +deleted /man/10/iar +deleted /man/10/mk +deleted /man/10/styxserver +deleted /man/2/draw-screen +deleted /man/2/pop3 +deleted /man/2/spree +deleted /man/2/spree-allow +deleted /man/2/spree-cardlib +deleted /man/2/sys-0intro +deleted /man/2/tk +deleted /man/2/tkclient +deleted /man/2/wmsrv +deleted /man/3/draw +deleted /man/3/sd +deleted /man/4/acme +deleted /man/4/spree +deleted /man/5/0intro +deleted /man/8/applylog +deleted /man/9/entry +deleted /man/9/grid +deleted /man/9/image +deleted /man/9/listbox +deleted /man/9/text +deletes /man/1/basename +deletes /man/1/sh-tk +deletes /man/1/tktester +deletes /man/2/debug +deletes /man/2/dict +deletes /man/2/pop3 +deletes /man/2/secstore +deletes /man/2/spree +deletes /man/2/spree-allow +deletes /man/2/spree-cardlib +deletes /man/2/sys-remove +deletes /man/5/0intro +deletes /man/9/destroy +deletes /man/9/entry +deletes /man/9/grid +deletes /man/9/image +deletes /man/9/listbox +deletes /man/9/text +deleting /man/1/wm-misc +deleting /man/9/canvas +deletion /man/1/acme +deletion /man/1/tr +deletion /man/2/dict +deletions /man/8/applylog +delfid /man/2/styxservers +delight /man/2/draw-example +delight.bit /man/2/draw-example +delight.r.max /man/2/draw-example +delight.r.max.x /man/2/draw-example +delight.r.min.add /man/2/draw-example +delight.r.min.x /man/2/draw-example +delim /man/2/sys-tokenize +delimit /man/1/idea +delimit /man/10/qio +delimit /man/3/pipe +delimited /man/1/acme +delimited /man/2/cfg +delimited /man/2/keyring-getstring +delimited /man/2/sys-tokenize +delimited /man/3/ssl +delimited /man/4/factotum +delimited /man/9/canvas +delimiter /man/1/acme +delimiter /man/10/getfields +delimiter /man/2/filepat +delimiter /man/2/sexprs +delimiter /man/2/sys-tokenize +delimiter /man/6/regexp +delimiters /man/1/acme +delimiters /man/10/getfields +delimiters /man/2/w3c-xpointers +delimiters /man/3/ssl +delims /man/10/getfields +delindex /man/2/spree-cardlib +deliver /man/1/tail +deliver /man/2/sys-file2chan +delivered /man/1/acme +delivered /man/2/timers +delivered /man/3/cons +delivered /man/3/ip +delivered /man/8/collabsrv +delivered /man/8/register +delivered /man/9/bind +delivered /man/9/canvas +delivered /man/9/focus +delivers /man/1/sendmail +delivers /man/2/draw-context +delivers /man/2/popup +delivery /man/2/dhcpclient +delivery /man/2/smtp +delivery /man/2/tk +delivery /man/6/ndb +delivery /man/9/bind +delkey /man/4/factotum +dell /man/10/plan9.ini +dellay /man/2/spree-cardlib +delmenu /man/1/toolbar +delpart /man/3/ftl +delpart /man/3/sd +delta /man/9/scrollbar +deltax /man/9/scrollbar +deltay /man/9/scrollbar +demand /man/1/0intro +demand /man/1/secstore +demand /man/2/registries +demand /man/2/secstore +demand /man/4/mntgen +demand /man/5/0intro +demands /man/1/secstore +demands /man/4/ftpfs +demarcated /man/1/acme +demftd /man/1/miniterm +demise /man/2/command +demo /man/1/blur +demo /man/1/mux +demonstrate /man/1/blur +demonstrate /man/6/colour +demonstrated /man/1/mux +demonstration /man/1/miniterm +demonstration /man/1/mux +demonstrations /man/1/mux +demultiplexed /man/3/ether +den /man/6/colour +denied /man/10/styxserver +denied /man/2/styxservers +denied /man/3/fs +denies /man/2/spree +denominator /man/6/keyboard +denormalized /man/2/math-0intro +denote /man/1/math-misc +denote /man/1/xd +denote /man/10/intrenable +denote /man/2/math-linalg +denote /man/2/w3c-css +denote /man/6/proto +denote /man/6/sexprs +denoted /man/1/units +denoted /man/10/intrenable +denoted /man/2/scsiio +denoted /man/6/man +denotes /man/1/blur +denotes /man/1/math-misc +denotes /man/2/asn1 +denotes /man/9/canvas +denoting /man/3/gpio +density /man/3/floppy +density /man/8/prep +denx /man/1/mash +deny /man/5/stat +dep /man/3/dynld +department /man/9/1copyright +departure /man/1/collab-clients +depend /man/1/mk +depend /man/10/2l +depend /man/10/conf +depend /man/10/mk +depend /man/2/security-0intro +depend /man/4/factotum +depend /man/4/namespace +dependencies /man/1/disdep +dependencies /man/1/mash +dependencies /man/1/mash-make +dependencies /man/10/conf +dependencies /man/2/0intro +dependency /man/1/disdep +dependency /man/1/mash +dependency /man/1/mash-make +dependency /man/1/mk +dependency /man/1/tsort +dependency /man/10/mk +dependent /man/1/mash-make +dependent /man/1/math-misc +dependent /man/10/2a +dependent /man/10/2c +dependent /man/10/2l +dependent /man/10/a.out +dependent /man/10/acid +dependent /man/10/ar +dependent /man/10/inb +dependent /man/10/intrenable +dependent /man/10/kbdputc +dependent /man/10/panic +dependent /man/10/print +dependent /man/10/seconds +dependent /man/2/disks +dependent /man/2/draw-display +dependent /man/2/styxpersist +dependent /man/3/cmd +dependent /man/3/draw +dependent /man/3/ether +dependent /man/3/flash +dependent /man/3/ip +dependent /man/3/kprof +dependent /man/3/sd +dependent /man/4/spree +dependent /man/5/0intro +dependent /man/6/keyboard +dependent /man/6/keytext +dependent /man/9/canvas +dependents /man/1/mash-make +depends /man/1/date +depends /man/1/disdep +depends /man/1/fc +depends /man/1/mash-make +depends /man/1/mk +depends /man/1/sh-file2chan +depends /man/10/mk +depends /man/2/alphabet-intro +depends /man/2/dbm +depends /man/2/palmfile +depends /man/2/prefab-element +depends /man/2/registries +depends /man/2/security-0intro +depends /man/2/sys-0intro +depends /man/2/sys-open +depends /man/3/kprof +depends /man/4/factotum +depends /man/5/flush +depends /man/9/bind +depends /man/9/canvas +depends /man/9/options +depends /man/9/text +deprecated /man/10/ms2 +deprecated /man/10/plan9.ini +deprecated /man/10/print +deprecated /man/3/ip +deprecated /man/9/scrollbar +depth /man/1/alphabet-fs +depth /man/1/fs +depth /man/1/wm-misc +depth /man/2/draw-0intro +depth /man/2/draw-display +depth /man/2/draw-image +depth /man/2/print +depth /man/2/venti +depth /man/2/wmsrv +depth /man/3/vga +depth /man/6/image +depth /man/6/ubfa +depths /man/2/draw-0intro +depths /man/2/draw-display +depths /man/6/colour +dereference /man/2/0intro +derivative /man/1/mc +derivatives /man/9/1copyright +derive /man/1/mk +derive /man/10/mk +derive /man/2/security-0intro +derived /man/1/mux +derived /man/1/webgrab +derived /man/10/0intro +derived /man/10/c2l +derived /man/2/styxservers +derived /man/2/w3c-css +derived /man/9/0intro +derived /man/9/1copyright +des /man/2/keyring-0intro +des /man/2/keyring-crypt +des /man/2/security-0intro +des /man/3/ssl +desbsize /man/2/keyring-crypt +desc /man/2/convcs +desc /man/2/dis +desc /man/2/draw-font +desc /man/2/print +desc /man/6/dis +descbc /man/2/keyring-crypt +descend /man/1/sh-expr +descend /man/5/walk +descendants /man/2/styxservers-nametree +descendants /man/9/destroy +descendants /man/9/grab +descendent /man/1/alphabet-fs +descendent /man/1/fs +descendents /man/1/alphabet-fs +descendents /man/1/fs +descendents /man/3/sign +descending /man/1/session +descending /man/2/readdir +descends /man/2/xml +descent /man/1/limbo +descr /man/2/format +describe /man/1/auplay +describe /man/10/a.out +describe /man/10/plan9.ini +describe /man/10/styxserver +describe /man/2/0intro +describe /man/2/alphabet-intro +describe /man/2/diskblocks +describe /man/2/draw-image +describe /man/2/spree-gather +describe /man/3/ip +describe /man/3/pnp +describe /man/3/prof +describe /man/3/prog +describe /man/4/factotum +describe /man/6/namespace +describe /man/6/sbl +describe /man/8/create +describe /man/8/ftl +describe /man/9/canvas +describe /man/9/entry +describe /man/9/listbox +describe /man/9/scrollbar +describe /man/9/text +describe /man/9/types +described /man/1/acme +described /man/1/alphabet-fs +described /man/1/alphabet-main +described /man/1/bind +described /man/1/charon +described /man/1/collab +described /man/1/emu +described /man/1/fs +described /man/1/listen +described /man/1/logon +described /man/1/mash +described /man/1/mk +described /man/1/mux +described /man/1/sh +described /man/1/sh-alphabet +described /man/1/tcs +described /man/1/tiny +described /man/10/9load +described /man/10/a.out +described /man/10/allocb +described /man/10/ar +described /man/10/dev +described /man/10/devattach +described /man/10/dynld +described /man/10/lock +described /man/10/mk +described /man/10/plan9.ini +described /man/10/print +described /man/10/qio +described /man/10/qlock +described /man/10/styx +described /man/10/styxserver +described /man/2/0intro +described /man/2/asn1 +described /man/2/convcs +described /man/2/dbm +described /man/2/draw-0intro +described /man/2/draw-context +described /man/2/draw-display +described /man/2/draw-image +described /man/2/filter-slip +described /man/2/imagefile +described /man/2/keyring-0intro +described /man/2/math-0intro +described /man/2/plumbmsg +described /man/2/prefab-0intro +described /man/2/prefab-element +described /man/2/readdir +described /man/2/regex +described /man/2/registries +described /man/2/secstore +described /man/2/security-0intro +described /man/2/security-auth +described /man/2/security-login +described /man/2/sh +described /man/2/spree +described /man/2/spree-cardlib +described /man/2/styx +described /man/2/styxservers +described /man/2/sys-bind +described /man/2/sys-fd2path +described /man/2/sys-open +described /man/2/sys-pctl +described /man/2/sys-print +described /man/2/tkclient +described /man/2/w3c-css +described /man/2/wait +described /man/2/wmclient +described /man/2/wmsrv +described /man/3/audio +described /man/3/cmd +described /man/3/draw +described /man/3/flash +described /man/3/fs +described /man/3/ip +described /man/3/mnt +described /man/3/plap +described /man/3/prog +described /man/3/srv +described /man/3/srv9 +described /man/3/usb +described /man/3/vga +described /man/4/acme +described /man/4/factotum +described /man/4/kfs +described /man/5/0intro +described /man/5/attach +described /man/5/open +described /man/5/stat +described /man/6/colour +described /man/6/dis +described /man/6/font +described /man/6/image +described /man/6/namespace +described /man/6/proto +described /man/6/sbl +described /man/6/utf +described /man/8/applylog +described /man/8/bootpd +described /man/8/collabsrv +described /man/8/cs +described /man/8/kfscmd +described /man/8/plumber +described /man/8/prep +described /man/8/rip +described /man/8/rstyxd +described /man/9/0intro +described /man/9/1copyright +described /man/9/button +described /man/9/canvas +described /man/9/checkbutton +described /man/9/choicebutton +described /man/9/entry +described /man/9/frame +described /man/9/grid +described /man/9/label +described /man/9/listbox +described /man/9/menu +described /man/9/menubutton +described /man/9/options +described /man/9/panel +described /man/9/radiobutton +described /man/9/scale +described /man/9/scrollbar +described /man/9/text +describes /man/1/0intro +describes /man/1/alphabet-fs +describes /man/1/alphabet-main +describes /man/1/auplay +describes /man/1/fs +describes /man/10/0intro +describes /man/10/devattach +describes /man/2/alphabet-intro +describes /man/2/draw-font +describes /man/2/format +describes /man/2/imagefile +describes /man/2/security-ssl +describes /man/2/spree +describes /man/2/styx +describes /man/2/styxpersist +describes /man/3/prog +describes /man/4/0intro +describes /man/4/factotum +describes /man/5/0intro +describes /man/6/0intro +describes /man/6/dis +describes /man/6/sbl +describes /man/7/0intro +describes /man/8/0intro +describes /man/9/options +describes /man/9/types +describing /man/1/yacc +describing /man/10/dev +describing /man/10/styxserver +describing /man/2/convcs +describing /man/2/dbm +describing /man/2/dis +describing /man/2/filter +describing /man/2/security-ssl +describing /man/2/spree-allow +describing /man/2/styxservers-nametree +describing /man/2/sys-werrstr +describing /man/3/draw +describing /man/3/floppy +describing /man/3/tls +describing /man/4/acme +describing /man/5/0intro +describing /man/5/error +describing /man/6/dis +describing /man/6/image +describing /man/8/applylog +describing /man/9/canvas +describing /man/9/entry +describing /man/9/see +describing /man/9/text +descriptions /man/1/alphabet-abc +descriptions /man/1/alphabet-grid +descriptions /man/1/mash-tk +descriptions /man/1/sh-std +descriptions /man/1/unicode +descriptions /man/10/qio +descriptions /man/2/draw-font +descriptions /man/2/security-0intro +descriptions /man/4/registry +descriptions /man/5/0intro +descriptions /man/6/image +descriptions /man/8/prep +descriptions /man/8/svc +descriptions /man/9/canvas +descriptions /man/9/entry +descriptions /man/9/listbox +descriptions /man/9/options +descriptions /man/9/text +descriptive /man/2/convcs +descriptor /man/1/alphabet-main +descriptor /man/1/ftest +descriptor /man/1/listen +descriptor /man/1/mash +descriptor /man/1/sh +descriptor /man/1/sh-std +descriptor /man/10/devattach +descriptor /man/10/dynld +descriptor /man/10/kproc +descriptor /man/10/newchan +descriptor /man/10/odbc +descriptor /man/10/print +descriptor /man/2/bufio +descriptor /man/2/dhcpclient +descriptor /man/2/dis +descriptor /man/2/diskblocks +descriptor /man/2/disks +descriptor /man/2/draw-context +descriptor /man/2/draw-display +descriptor /man/2/drawmux +descriptor /man/2/itslib +descriptor /man/2/print +descriptor /man/2/readdir +descriptor /man/2/registries +descriptor /man/2/scsiio +descriptor /man/2/security-auth +descriptor /man/2/security-ssl +descriptor /man/2/styx +descriptor /man/2/styxconv +descriptor /man/2/styxpersist +descriptor /man/2/styxservers +descriptor /man/2/sys-0intro +descriptor /man/2/sys-bind +descriptor /man/2/sys-dial +descriptor /man/2/sys-dirread +descriptor /man/2/sys-dup +descriptor /man/2/sys-export +descriptor /man/2/sys-fauth +descriptor /man/2/sys-fd2path +descriptor /man/2/sys-iounit +descriptor /man/2/sys-open +descriptor /man/2/sys-pctl +descriptor /man/2/sys-pipe +descriptor /man/2/sys-print +descriptor /man/2/sys-stat +descriptor /man/2/wait +descriptor /man/3/arch +descriptor /man/3/draw +descriptor /man/3/dup +descriptor /man/3/ether +descriptor /man/3/ip +descriptor /man/3/plap +descriptor /man/3/prog +descriptor /man/3/sign +descriptor /man/3/srv9 +descriptor /man/3/ssl +descriptor /man/3/tls +descriptor /man/4/keysrv +descriptor /man/4/memfs +descriptor /man/4/registry +descriptor /man/4/spree +descriptor /man/5/clunk +descriptor /man/6/dis +descriptor /man/7/db +descriptor /man/9/types +descriptors /man/1/emu +descriptors /man/1/limbo +descriptors /man/1/sh +descriptors /man/1/sh-alphabet +descriptors /man/1/sh-std +descriptors /man/10/dev +descriptors /man/10/newchan +descriptors /man/2/dis +descriptors /man/2/disks +descriptors /man/2/draw-context +descriptors /man/2/secstore +descriptors /man/2/styxconv +descriptors /man/2/styxservers +descriptors /man/2/sys-0intro +descriptors /man/2/sys-dup +descriptors /man/2/sys-iounit +descriptors /man/2/sys-pctl +descriptors /man/2/sys-pipe +descriptors /man/3/cmd +descriptors /man/3/pipe +descriptors /man/3/prog +descriptors /man/3/tls +descriptors /man/5/0intro +descriptors /man/6/dis +descriptors /man/6/image +descriptors /man/8/rstyxd +desecb /man/2/keyring-crypt +deselect /man/9/checkbutton +deselect /man/9/menu +deselect /man/9/radiobutton +deselected /man/9/checkbutton +deselected /man/9/listbox +deselected /man/9/menu +deselecting /man/1/wm-misc +deselects /man/9/checkbutton +deselects /man/9/listbox +deselects /man/9/radiobutton +design /man/1/tktester +design /man/2/security-0intro +design /man/3/touch +design /man/6/colour +design /man/6/keyboard +designated /man/1/cmp +designated /man/1/tail +designed /man/1/0intro +designed /man/1/cook +designed /man/1/grid-monitor +designed /man/1/tiny +designed /man/1/toolbar +designed /man/2/format +designed /man/2/ir +designed /man/3/logfs +designed /man/6/colour +designed /man/6/utf +designing /man/1/tktester +desired /man/1/9win +desired /man/1/avr +desired /man/1/collab-clients +desired /man/1/cprof +desired /man/1/wm +desired /man/1/wm-misc +desired /man/1/wm-sh +desired /man/1/zeros +desired /man/10/devattach +desired /man/10/plan9.ini +desired /man/2/command +desired /man/2/ida +desired /man/2/plumbmsg +desired /man/2/prof +desired /man/2/security-login +desired /man/2/sh +desired /man/2/sys-0intro +desired /man/2/tk +desired /man/2/translate +desired /man/3/dbg +desired /man/3/rtc +desired /man/3/srv9 +desired /man/4/kfs +desired /man/5/attach +desired /man/8/applylog +desired /man/9/button +desired /man/9/canvas +desired /man/9/checkbutton +desired /man/9/choicebutton +desired /man/9/entry +desired /man/9/frame +desired /man/9/label +desired /man/9/listbox +desired /man/9/menubutton +desired /man/9/options +desired /man/9/panel +desired /man/9/radiobutton +desired /man/9/scale +desired /man/9/scrollbar +desired /man/9/text +desires /man/2/volume +desklink /man/4/palmsrv +desktop /man/2/palmfile +despite /man/2/asn1 +despite /man/2/draw-image +despite /man/5/walk +despite /man/6/sbl +dessetup /man/2/keyring-crypt +desstate /man/2/keyring-crypt +dest /man/1/plumb +dest /man/6/dis +destination /man/1/ftree +destination /man/1/plumb +destination /man/1/stream +destination /man/1/tiny +destination /man/1/tktester +destination /man/2/dis +destination /man/2/draw-0intro +destination /man/2/draw-example +destination /man/2/draw-image +destination /man/2/plumbmsg +destination /man/2/pslib +destination /man/2/sys-dial +destination /man/3/ether +destination /man/3/ip +destination /man/3/pbus +destination /man/4/spree +destination /man/6/dis +destination /man/6/plumbing +destination /man/8/create +destination /man/8/mkfs +destination /man/8/ping +destination /man/8/styxchat +destination /man/9/canvas +destination /man/9/image +destined /man/2/dhcpclient +destined /man/3/ip +destroy /man/1/cat +destroy /man/1/tktester +destroy /man/3/prog +destroy /man/9/0intro +destroy /man/9/bind +destroy /man/9/destroy +destroyed /man/1/sh +destroyed /man/1/sh-tk +destroyed /man/10/ntsrv +destroyed /man/3/cons +destroyed /man/3/env +destroyed /man/9/bind +destroyed /man/9/destroy +destroyed /man/9/text +destroying /man/6/dis +destroying /man/9/destroy +destruction /man/9/bind +detach /man/3/ftl +detach /man/3/ip +detached /man/1/deb +detaches /man/3/ip +detaching /man/1/deb +detail /man/1/itest +detail /man/1/man +detail /man/1/mash +detail /man/2/convcs +detail /man/2/keyring-0intro +detail /man/3/ftl +detail /man/8/init +detailed /man/1/emu +detailed /man/1/fc +detailed /man/1/sh-regex +detailed /man/1/tcs +detailed /man/2/dbm +detailed /man/2/debug +detailed /man/2/security-0intro +detailed /man/2/sys-0intro +detailed /man/3/cons +detailed /man/8/rip +details /man/1/0intro +details /man/1/bind +details /man/1/collab +details /man/1/crypt +details /man/1/math-misc +details /man/1/nsbuild +details /man/1/sh +details /man/1/sh-regex +details /man/1/sh-std +details /man/10/9load +details /man/10/conf +details /man/10/devattach +details /man/10/dynld +details /man/2/asn1 +details /man/2/attrdb +details /man/2/convcs +details /man/2/dhcpclient +details /man/2/factotum +details /man/2/filter +details /man/2/filter-deflate +details /man/2/filter-slip +details /man/2/names +details /man/2/plumbmsg +details /man/2/sh +details /man/2/spki +details /man/2/spree +details /man/2/spree-cardlib +details /man/2/sys-bind +details /man/2/sys-file2chan +details /man/2/sys-open +details /man/2/sys-pipe +details /man/2/tk +details /man/2/w3c-css +details /man/3/draw +details /man/3/fs +details /man/3/ftl +details /man/3/gpio +details /man/3/i2c +details /man/3/prog +details /man/4/archfs +details /man/6/colour +details /man/6/image +details /man/8/dhcp +details /man/9/bind +details /man/9/canvas +details /man/9/entry +details /man/9/menu +details /man/9/menubutton +details /man/9/options +details /man/9/pack +details /man/9/scrollbar +details /man/9/text +detect /man/2/spki-verifier +detect /man/3/gpio +detected /man/10/c2l +detected /man/10/plan9.ini +detected /man/2/0intro +detected /man/2/scsiio +detected /man/2/sys-0intro +detected /man/3/draw +detected /man/3/logfs +detected /man/3/sd +detecting /man/3/dbg +detection /man/1/blur +detection /man/3/logfs +detects /man/10/9load +detects /man/10/newchan +detects /man/2/ida +detects /man/3/pbus +detects /man/8/prep +determine /man/1/alphabet-fs +determine /man/1/charon +determine /man/1/fs +determine /man/1/mash-make +determine /man/1/mk +determine /man/1/prof +determine /man/1/wm +determine /man/1/wm-misc +determine /man/10/9load +determine /man/10/mk +determine /man/10/odbc +determine /man/2/asn1 +determine /man/2/bloomfilter +determine /man/2/dividers +determine /man/2/prefab-element +determine /man/2/registries +determine /man/2/security-0intro +determine /man/2/sys-byte2char +determine /man/2/sys-file2chan +determine /man/3/ip +determine /man/3/pnp +determine /man/4/namespace +determine /man/6/login +determine /man/9/button +determine /man/9/canvas +determine /man/9/checkbutton +determine /man/9/choicebutton +determine /man/9/entry +determine /man/9/frame +determine /man/9/label +determine /man/9/listbox +determine /man/9/menu +determine /man/9/menubutton +determine /man/9/panel +determine /man/9/radiobutton +determine /man/9/scale +determine /man/9/scrollbar +determine /man/9/text +determined /man/1/collab +determined /man/1/ls +determined /man/1/sh-file2chan +determined /man/1/tiny +determined /man/1/webgrab +determined /man/10/9load +determined /man/10/acid +determined /man/10/conf +determined /man/10/dev +determined /man/10/kproc +determined /man/10/odbc +determined /man/10/plan9.ini +determined /man/2/dbm +determined /man/2/draw-display +determined /man/2/draw-image +determined /man/2/filter-deflate +determined /man/2/plumbmsg +determined /man/2/prefab-compound +determined /man/2/prefab-element +determined /man/2/registries +determined /man/2/stringinttab +determined /man/2/wmclient +determined /man/3/arch +determined /man/3/fpga +determined /man/3/fs +determined /man/3/i2c +determined /man/3/ip +determined /man/4/factotum +determined /man/6/colour +determined /man/6/image +determined /man/6/keytext +determined /man/8/collabsrv +determined /man/8/httpd +determined /man/9/canvas +determined /man/9/entry +determined /man/9/focus +determined /man/9/grid +determined /man/9/menu +determined /man/9/options +determined /man/9/scale +determined /man/9/text +determines /man/1/brutus +determines /man/1/mk +determines /man/1/sh-std +determines /man/1/wm-misc +determines /man/10/mk +determines /man/10/newchan +determines /man/2/dis +determines /man/2/draw-0intro +determines /man/2/registries +determines /man/2/sys-fversion +determines /man/2/tk +determines /man/2/tkclient +determines /man/2/wmclient +determines /man/4/factotum +determines /man/5/open +determines /man/6/colour +determines /man/6/dis +determines /man/9/button +determines /man/9/menu +determines /man/9/options +determines /man/9/pack +determines /man/9/scale +determines /man/9/text +determining /man/1/ls +determining /man/10/9load +determining /man/2/prefab-element +dev /man/1/9win +dev /man/1/auplay +dev /man/1/avr +dev /man/1/cd +dev /man/1/charon +dev /man/1/crypt +dev /man/1/date +dev /man/1/emu +dev /man/1/ftest +dev /man/1/itest +dev /man/1/logon +dev /man/1/mash +dev /man/1/miniterm +dev /man/1/netkey +dev /man/1/os +dev /man/1/passwd +dev /man/1/runas +dev /man/1/secstore +dev /man/1/sh +dev /man/1/timestamp +dev /man/1/tiny +dev /man/1/tkcmd +dev /man/1/wish +dev /man/1/wm-misc +dev /man/1/wm-sh +dev /man/10/c2l +dev /man/10/conf +dev /man/10/dev +dev /man/10/devattach +dev /man/10/dynld +dev /man/10/eve +dev /man/10/intrenable +dev /man/10/kbdputc +dev /man/10/kproc +dev /man/10/kprof +dev /man/10/newchan +dev /man/10/plan9.ini +dev /man/10ti925/tihost +dev /man/2/daytime +dev /man/2/devpointer +dev /man/2/draw-display +dev /man/2/drawmux +dev /man/2/ether +dev /man/2/ip +dev /man/2/keyring-auth +dev /man/2/keyset +dev /man/2/mpeg +dev /man/2/newns +dev /man/2/print +dev /man/2/registries +dev /man/2/security-random +dev /man/2/styxservers +dev /man/2/sys-stat +dev /man/2/volume +dev /man/3/0intro +dev /man/3/arch +dev /man/3/audio +dev /man/3/boot +dev /man/3/cons +dev /man/3/dbg +dev /man/3/draw +dev /man/3/ds +dev /man/3/dynld +dev /man/3/eia +dev /man/3/flash +dev /man/3/floppy +dev /man/3/fpga +dev /man/3/ftl +dev /man/3/gpio +dev /man/3/i2c +dev /man/3/i82365 +dev /man/3/indir +dev /man/3/kprof +dev /man/3/logfs +dev /man/3/lpt +dev /man/3/mnt +dev /man/3/mpeg +dev /man/3/pbus +dev /man/3/pnp +dev /man/3/pointer +dev /man/3/root +dev /man/3/rtc +dev /man/3/sd +dev /man/3/sign +dev /man/3/snarf +dev /man/3/switch +dev /man/3/tinyfs +dev /man/3/touch +dev /man/3/tv +dev /man/3/usb +dev /man/3/vga +dev /man/3/vid +dev /man/4/acme +dev /man/4/cpu +dev /man/4/dossrv +dev /man/4/export +dev /man/4/namespace +dev /man/4/palmsrv +dev /man/4/spree +dev /man/5/stat +dev /man/8/getauthinfo +dev /man/8/init +dev /man/8/prep +dev /man/8/rdbgsrv +dev /man/8/rstyxd +dev /man/8/shutdown +dev /man/8/sntp +dev /man/8/styxchat +dev /man/8/styxmon +dev /man/8/touchcal +dev.c /man/10/devattach +dev.c /man/10/parsecmd +dev.close /man/10/newchan +devarch.c /man/3/arch +devattach /man/10/dev +devattach /man/10/devattach +devattach /man/10/newchan +devaudio /man/3/audio +devaudio.c /man/3/audio +devboot.c /man/3/boot +devbread /man/10/dev +devbread /man/10/devattach +devbwrite /man/10/dev +devbwrite /man/10/devattach +devcap.c /man/3/cap +devclone /man/10/devattach +devclone /man/10/newchan +devcmd.c /man/3/cmd +devcon.c /man/10/readnum +devconf /man/10/dev +devcons.c /man/10/dev +devcons.c /man/10/readnum +devcons.c /man/3/cons +devcreate /man/10/dev +devcreate /man/10/devattach +devcs4231.c /man/3/audio +devdbg.c /man/3/dbg +devdir /man/10/devattach +devdir /man/2/scsiio +devdirread /man/10/dev +devdirread /man/10/devattach +devdotdot /man/10/devattach +devdraw.c /man/3/draw +devds.c /man/3/ds +devdup.c /man/3/dup +devdynld.c /man/3/dynld +developed /man/2/security-0intro +developer /man/1/0intro +devenv.c /man/3/env +devether.c /man/10/conf +devether.c /man/3/ether +devflash.c /man/3/flash +devfloppy.c /man/3/floppy +devfpga.c /man/3/fpga +devfs /man/3/fs +devfs.c /man/3/fs +devftl.c /man/3/ftl +devgen /man/10/devattach +devgpio.c /man/3/gpio +devi2c.c /man/3/i2c +devi82365.c /man/3/i82365 +deviate /man/9/grid +device /man/1/0intro +device /man/1/auplay +device /man/1/avr +device /man/1/bind +device /man/1/charon +device /man/1/chgrp +device /man/1/collab +device /man/1/cpu +device /man/1/dd +device /man/1/deb +device /man/1/ebook +device /man/1/listen +device /man/1/ls +device /man/1/mprof +device /man/1/mux +device /man/1/netkey +device /man/1/netstat +device /man/1/os +device /man/1/ps +device /man/1/tiny +device /man/10/0intro +device /man/10/9load +device /man/10/conf +device /man/10/dev +device /man/10/devattach +device /man/10/dmainit +device /man/10/inb +device /man/10/intrenable +device /man/10/kprof +device /man/10/newchan +device /man/10/parsecmd +device /man/10/plan9.ini +device /man/10/qio +device /man/10/readnum +device /man/10/sleep +device /man/10/splhi +device /man/10ti925/tihost +device /man/2/devpointer +device /man/2/dhcpclient +device /man/2/disks +device /man/2/draw-0intro +device /man/2/draw-context +device /man/2/draw-display +device /man/2/draw-pointer +device /man/2/drawmux +device /man/2/ether +device /man/2/exception +device /man/2/ip +device /man/2/ir +device /man/2/keyring-0intro +device /man/2/mpeg +device /man/2/palmfile +device /man/2/print +device /man/2/prof +device /man/2/scsiio +device /man/2/security-0intro +device /man/2/security-ssl +device /man/2/sys-bind +device /man/2/sys-file2chan +device /man/2/sys-pctl +device /man/2/sys-pipe +device /man/2/sys-stat +device /man/2/tabs +device /man/2/volume +device /man/3/0intro +device /man/3/arch +device /man/3/audio +device /man/3/cmd +device /man/3/cons +device /man/3/dbg +device /man/3/draw +device /man/3/ds +device /man/3/dup +device /man/3/dynld +device /man/3/eia +device /man/3/env +device /man/3/ether +device /man/3/flash +device /man/3/fpga +device /man/3/fs +device /man/3/ftl +device /man/3/i2c +device /man/3/i82365 +device /man/3/indir +device /man/3/ip +device /man/3/kprof +device /man/3/logfs +device /man/3/mnt +device /man/3/mpeg +device /man/3/plap +device /man/3/pnp +device /man/3/pointer +device /man/3/prof +device /man/3/prog +device /man/3/root +device /man/3/rtc +device /man/3/sd +device /man/3/sign +device /man/3/snarf +device /man/3/srv9 +device /man/3/ssl +device /man/3/switch +device /man/3/tinyfs +device /man/3/tls +device /man/3/tv +device /man/3/usb +device /man/3/vga +device /man/3/vid +device /man/4/kfs +device /man/4/namespace +device /man/4/palmsrv +device /man/5/0intro +device /man/5/attach +device /man/6/audio +device /man/6/colour +device /man/6/namespace +device /man/6/ndb +device /man/7/dbsrv +device /man/8/dhcp +device /man/8/ftl +device /man/8/init +device /man/8/logind +device /man/8/mangaload +device /man/8/prep +device /man/8/rdbgsrv +device /man/8/register +device /man/8/touchcal +device's /man/1/auplay +device's /man/1/chgrp +device's /man/10/dev +device's /man/10/devattach +device's /man/10/newchan +device's /man/10/parsecmd +device's /man/10/plan9.ini +device's /man/2/disks +device's /man/2/ir +device's /man/2/scsiio +device's /man/2/sys-0intro +device's /man/3/0intro +device's /man/3/flash +device's /man/3/ftl +device's /man/3/mpeg +device's /man/3/sd +device's /man/8/mangaload +device's /man/8/prep +device's /man/8/rdbgsrv +devicefile /man/4/dossrv +devices /man/1/0intro +devices /man/1/charon +devices /man/1/chgrp +devices /man/1/cp +devices /man/1/ftree +devices /man/1/keyboard +devices /man/1/ls +devices /man/1/mux +devices /man/1/tiny +devices /man/10/9load +devices /man/10/allocb +devices /man/10/dev +devices /man/10/devattach +devices /man/10/inb +devices /man/10/plan9.ini +devices /man/10/qio +devices /man/10/sleep +devices /man/10/styxserver +devices /man/2/devpointer +devices /man/2/draw-0intro +devices /man/2/sys-iounit +devices /man/2/sys-open +devices /man/2/sys-pctl +devices /man/2/sys-stat +devices /man/2/wmclient +devices /man/3/0intro +devices /man/3/cons +devices /man/3/ds +devices /man/3/flash +devices /man/3/fpga +devices /man/3/i2c +devices /man/3/i82365 +devices /man/3/indir +devices /man/3/ip +devices /man/3/logfs +devices /man/3/lpt +devices /man/3/pnp +devices /man/3/rtc +devices /man/3/sd +devices /man/3/tinyfs +devices /man/3/vga +devices /man/4/namespace +devices /man/5/attach +devices /man/5/stat +devices /man/8/0intro +devices /man/8/plumber +devies /man/10/dev +devindir.c /man/3/indir +devinit /man/10/devattach +devip.c /man/3/ip +devised /man/10/dmainit +devising /man/4/spree +devkprof.c /man/3/kprof +devlance.c /man/3/ether +devlogfs.c /man/3/logfs +devlpt.c /man/3/lpt +devmnt.c /man/3/mnt +devmpeg.c /man/3/mpeg +devns16552.c /man/3/eia +devopen /man/10/dev +devopen /man/10/devattach +devpbus.c /man/3/pbus +devpci.c /man/3/pnp +devpipe.c /man/3/pipe +devplap.c /man/3/plap +devpnp.c /man/3/pnp +devpointer /man/2/devpointer +devpointer /man/2/draw-context +devpointer /man/2/draw-pointer +devpointer.c /man/3/pointer +devpointer.m /man/2/devpointer +devprof.c /man/3/prof +devprog.c /man/3/prog +devremove /man/10/dev +devremove /man/10/devattach +devreset /man/10/dev +devreset /man/10/devattach +devroot.c /man/3/root +devrtc.c /man/3/rtc +devrtc.c /man/3/switch +devs /man/2/tkclient +devs /man/2/wmclient +devs /man/2/wmlib +devscc.c /man/3/eia +devsd.c /man/3/sd +devshutdown /man/10/dev +devshutdown /man/10/devattach +devsign.c /man/3/sign +devsrv.c /man/2/sys-file2chan +devsrv.c /man/3/srv +devsrv9.c /man/3/srv9 +devstat /man/10/dev +devstat /man/10/devattach +devtab /man/10/dev +devtab /man/10/devattach +devtinyfs.c /man/3/tinyfs +devtls /man/3/tls +devtls.c /man/3/tls +devtouch.c /man/3/touch +devtv.c /man/3/tv +devuart.c /man/3/eia +devusb.c /man/3/usb +devvga.c /man/3/vga +devvid.c /man/3/vid +devwalk /man/10/dev +devwalk /man/10/devattach +devwstat /man/10/dev +devwstat /man/10/devattach +df /man/1/lc +df /man/1/look +df /man/4/iostats +df /man/8/prep +dfars /man/9/1copyright +dfd /man/2/security-ssl +dfd /man/2/sys-dial +dflt /man/2/dialog +dflt /man/2/tabs +dfnixt /man/1/look +dfvx /man/8/prep +dhcp /man/10/plan9.ini +dhcp /man/2/dhcpclient +dhcp /man/8/dhcp +dhcp /man/8/rip +dhcp.b /man/8/dhcp +dhcp.m /man/2/dhcpclient +dhcpclient /man/2/dhcpclient +dhcpclient /man/3/ip +dhcpclient.b /man/2/dhcpclient +dhcpip /man/2/dhcpclient +dhmagic /man/10/seconds +dhparams /man/2/keyring-gensk +dhz /man/10/mk +di /man/6/man +di /man/8/sntp +diag /man/2/dhcpclient +diag /man/2/fsproto +diag /man/2/regex +diag /man/2/secstore +diag /man/2/w3c-css +diagnose /man/2/styxservers +diagnosed /man/3/boot +diagnoses /man/2/palmfile +diagnoses /man/8/applylog +diagnostic /man/1/alphabet-main +diagnostic /man/1/bind +diagnostic /man/1/cmp +diagnostic /man/1/logon +diagnostic /man/1/read +diagnostic /man/1/sh +diagnostic /man/1/sh-alphabet +diagnostic /man/1/tsort +diagnostic /man/1/yacc +diagnostic /man/2/alphabet-intro +diagnostic /man/2/attrdb +diagnostic /man/2/dbm +diagnostic /man/2/debug +diagnostic /man/2/dhcpclient +diagnostic /man/2/dis +diagnostic /man/2/draw-context +diagnostic /man/2/factotum +diagnostic /man/2/fsproto +diagnostic /man/2/ida +diagnostic /man/2/ip +diagnostic /man/2/keyring-getmsg +diagnostic /man/2/keyset +diagnostic /man/2/palmfile +diagnostic /man/2/regex +diagnostic /man/2/registries +diagnostic /man/2/secstore +diagnostic /man/2/security-auth +diagnostic /man/2/security-login +diagnostic /man/2/security-ssl +diagnostic /man/2/sexprs +diagnostic /man/2/styx +diagnostic /man/2/styxservers +diagnostic /man/2/sys-file2chan +diagnostic /man/2/sys-utfbytes +diagnostic /man/2/tftp +diagnostic /man/2/translate +diagnostic /man/2/ubfa +diagnostic /man/2/w3c-css +diagnostic /man/2/w3c-xpointers +diagnostic /man/3/cmd +diagnostic /man/3/indir +diagnostic /man/3/sd +diagnostic /man/4/acme +diagnostic /man/4/keysrv +diagnostic /man/4/palmsrv +diagnostic /man/7/db +diagnostic /man/8/getauthinfo +diagnostic /man/9/variable +diagnostics /man/1/0intro +diagnostics /man/1/acme +diagnostics /man/1/cook +diagnostics /man/1/cp +diagnostics /man/1/dd +diagnostics /man/1/diff +diagnostics /man/1/fc +diagnostics /man/1/grep +diagnostics /man/1/look +diagnostics /man/1/mathcalc +diagnostics /man/1/mkdir +diagnostics /man/1/os +diagnostics /man/1/read +diagnostics /man/1/rm +diagnostics /man/1/tsort +diagnostics /man/10/acid +diagnostics /man/10/allocb +diagnostics /man/10/atoi +diagnostics /man/10/dynld +diagnostics /man/10/lock +diagnostics /man/10/malloc +diagnostics /man/10/memory +diagnostics /man/10/newchan +diagnostics /man/10/print +diagnostics /man/10/ref +diagnostics /man/10/sleep +diagnostics /man/2/alphabet-intro +diagnostics /man/2/bufio +diagnostics /man/2/dbm +diagnostics /man/2/diskblocks +diagnostics /man/2/draw-image +diagnostics /man/2/keyring-getmsg +diagnostics /man/2/keyring-getstring +diagnostics /man/2/pop3 +diagnostics /man/2/secstore +diagnostics /man/2/security-login +diagnostics /man/2/security-ssl +diagnostics /man/2/sys-0intro +diagnostics /man/2/sys-bind +diagnostics /man/2/sys-byte2char +diagnostics /man/2/sys-chdir +diagnostics /man/2/sys-dial +diagnostics /man/2/sys-dirread +diagnostics /man/2/sys-export +diagnostics /man/2/sys-fauth +diagnostics /man/2/sys-fd2path +diagnostics /man/2/sys-fversion +diagnostics /man/2/sys-iounit +diagnostics /man/2/sys-pipe +diagnostics /man/2/virgil +diagnostics /man/2/w3c-css +diagnostics /man/3/boot +diagnostics /man/3/cap +diagnostics /man/3/cmd +diagnostics /man/3/draw +diagnostics /man/3/flash +diagnostics /man/3/indir +diagnostics /man/3/logfs +diagnostics /man/3/mpeg +diagnostics /man/3/pipe +diagnostics /man/3/sign +diagnostics /man/6/man +diagnostics /man/8/dhcp +diagnostics /man/8/ping +diagnostics /man/8/srv +diagonally /man/9/canvas +dial /man/1/alphabet-main +dial /man/1/bind +dial /man/1/cpu +dial /man/1/grid-ns +dial /man/1/listen +dial /man/1/miniterm +dial /man/1/ns +dial /man/1/secstore +dial /man/1/telnet +dial /man/10/devattach +dial /man/2/drawmux +dial /man/2/factotum +dial /man/2/registries +dial /man/2/secstore +dial /man/2/security-login +dial /man/2/srv +dial /man/2/styxpersist +dial /man/2/sys-dial +dial /man/2/sys-export +dial /man/2/venti +dial /man/2/virgil +dial /man/3/ip +dial /man/3/plap +dial /man/3/tls +dial /man/4/cpu +dial /man/4/export +dial /man/8/collabsrv +dial /man/8/cs +dial /man/8/ping +dial /man/8/rstyxd +dial /man/8/styxchat +dial.b /man/1/listen +dial.c /man/2/sys-dial +dialing /man/1/miniterm +dialog /man/1/mash-tk +dialog /man/2/dialog +dialog /man/2/selectfile +dialog.b /man/2/dialog +dialog.m /man/2/dialog +dials /man/1/collab +dials /man/1/cpu +dials /man/1/miniterm +dials /man/2/keyring-0intro +dials /man/2/secstore +dials /man/2/security-0intro +dials /man/4/import +dials /man/4/keysrv +dialsigner /man/2/sys-dial +diameter /man/1/units +diameter /man/2/draw-image +diamond /man/9/menu +diamond /man/9/radiobutton +diamonds /man/2/spree-cardlib +diary /man/1/calendar +dice /man/6/colour +dicing /man/6/colour +dict /man/2/dict +dict /man/2/translate +dict /man/6/translate +dict.add /man/2/translate +dict.b /man/2/dict +dict.m /man/2/dict +dict.new /man/2/translate +dict.xlate /man/2/translate +dict.xlaten /man/2/translate +dictated /man/3/draw +dictionaries /man/2/translate +dictionary /man/1/look +dictionary /man/2/dict +dictionary /man/2/translate +dictionary /man/2/ubfa +dictionary /man/6/translate +died /man/3/prog +dies /man/1/acme +dies /man/2/styxpersist +diff /man/1/acme +diff /man/1/cmp +diff /man/1/comm +diff /man/1/diff +diff.b /man/1/diff +differ /man/1/cmp +differ /man/1/units +differ /man/2/diskblocks +differ /man/2/draw-0intro +differ /man/2/draw-image +differ /man/4/dbfs +differ /man/6/sexprs +difference /man/1/acme +difference /man/1/cmp +difference /man/1/diff +difference /man/1/sh +difference /man/10/print +difference /man/2/asn1 +difference /man/2/ubfa +difference /man/5/walk +difference /man/6/keyboard +difference /man/6/sexprs +difference /man/9/text +differences /man/1/charon +differences /man/1/diff +differences /man/1/yacc +differences /man/2/palmfile +differences /man/3/ip +differences /man/6/colour +differences /man/6/sexprs +differences /man/9/0intro +differences /man/9/text +differential /man/1/diff +differential /man/1/mc +differently /man/1/charon +differently /man/1/mk +differently /man/10/mk +differently /man/2/draw-image +differently /man/9/menu +differing /man/1/cmp +differing /man/10/plan9.ini +differing /man/2/palmfile +differing /man/6/keyboard +differs /man/2/readdir +differs /man/3/ftl +differs /man/8/applylog +difficult /man/2/keyring-0intro +difficult /man/2/security-0intro +diffie /man/2/keyring-0intro +diffie /man/2/keyring-auth +diffie /man/2/keyring-gensk +diffie /man/2/security-0intro +diffie /man/6/auth +diffie /man/6/login +diffusion /man/2/imagefile +digest /man/1/crypt +digest /man/1/listen +digest /man/1/sum +digest /man/2/keyring-0intro +digest /man/2/keyring-auth +digest /man/2/keyring-sha1 +digest /man/2/security-0intro +digest /man/2/security-auth +digest /man/3/cap +digest /man/3/ssl +digest /man/3/tls +digest /man/4/import +digest /man/7/dbsrv +digest /man/8/changelogin +digest /man/8/rstyxd +digested /man/3/ssl +digesting /man/1/bind +digesting /man/1/collab +digesting /man/1/cpu +digesting /man/1/rcmd +digesting /man/2/security-0intro +digesting /man/2/sys-export +digesting /man/3/ssl +digesting /man/3/tls +digesting /man/7/db +digests /man/1/crypt +digests /man/2/keyring-0intro +digests /man/2/keyring-sha1 +digests /man/2/security-0intro +digests /man/3/ssl +digests /man/4/import +digeststate /man/2/keyring-0intro +digeststate /man/2/keyring-sha1 +digit /man/1/acme +digit /man/1/comm +digit /man/1/gzip +digit /man/1/sh-regex +digit /man/10/atoi +digit /man/10/print +digit /man/2/geodesy +digit /man/2/ir +digit /man/2/spree-cardlib +digit /man/2/sys-print +digit /man/3/cons +digit /man/3/ether +digit /man/3/gpio +digit /man/3/ip +digit /man/3/pnp +digit /man/6/sexprs +digit /man/9/text +digital /man/10/2c +digital /man/10/plan9.ini +digital /man/2/draw-image +digital /man/2/keyring-0intro +digital /man/2/keyring-sha1 +digital /man/2/security-0intro +digital /man/3/audio +digital /man/3/tv +digital /man/6/dis +digitally /man/2/keyring-0intro +digitally /man/2/sexprs +digitally /man/6/keytext +digitally /man/6/sexprs +digits /man/1/keyboard +digits /man/1/look +digits /man/1/sh-tk +digits /man/1/sum +digits /man/1/tr +digits /man/10/atoi +digits /man/10/print +digits /man/2/drawmux +digits /man/2/encoding +digits /man/2/ether +digits /man/2/sexprs +digits /man/2/sys-print +digits /man/2/w3c-css +digits /man/3/pnp +digits /man/3/prog +digits /man/4/keysrv +digits /man/5/version +digits /man/6/keyboard +digits /man/6/sbl +digits /man/6/sexprs +digits /man/9/bind +digits /man/9/entry +digits /man/9/text +digits /man/9/types +digraph /man/6/keyboard +digraphs /man/6/keyboard +dimension /man/2/draw-rect +dimension /man/2/math-linalg +dimension /man/2/prefab-element +dimension /man/3/mpeg +dimension /man/9/scale +dimensional /man/2/prefab-element +dimensional /man/2/w3c-css +dimensions /man/2/print +dimensions /man/3/draw +dimensions /man/9/grid +dimensions /man/9/pack +dimmer /man/9/menu +dind /man/2/dis +ding /man/9/grid +dins /man/2/draw-image +dir /man/1/alphabet-fs +dir /man/1/alphabet-main +dir /man/1/asm +dir /man/1/cleanname +dir /man/1/cp +dir /man/1/fs +dir /man/1/limbo +dir /man/1/mash-tk +dir /man/1/os +dir /man/1/plumb +dir /man/1/wm-sh +dir /man/10/2c +dir /man/10/c2l +dir /man/10/dev +dir /man/10/devattach +dir /man/10/styx +dir /man/10/styxserver +dir /man/2/dbm +dir /man/2/debug +dir /man/2/dividers +dir /man/2/fsproto +dir /man/2/keyset +dir /man/2/plumbmsg +dir /man/2/prefab-element +dir /man/2/readdir +dir /man/2/registries +dir /man/2/security-auth +dir /man/2/security-ssl +dir /man/2/selectfile +dir /man/2/styx +dir /man/2/styxservers +dir /man/2/styxservers-nametree +dir /man/2/sys-0intro +dir /man/2/sys-dial +dir /man/2/sys-dirread +dir /man/2/sys-export +dir /man/2/sys-file2chan +dir /man/2/sys-stat +dir /man/3/cap +dir /man/3/cmd +dir /man/3/indir +dir /man/3/logfs +dir /man/3/pipe +dir /man/4/acme +dir /man/4/dossrv +dir /man/4/export +dir /man/4/kfs +dir /man/4/lockfs +dir /man/4/mntgen +dir /man/5/open +dir /man/5/stat +dir /man/6/namespace +dir /man/6/plumbing +dir /man/8/collabsrv +dir.dtype /man/10/dev +dir.mode /man/10/devattach +dir.mode /man/2/sys-stat +dir.name /man/10/devattach +dir.perm /man/10/devattach +dir.perm /man/5/open +dir.qid.type /man/10/devattach +dir2text /man/2/styx +dirctory /man/4/archfs +direct /man/1/alphabet-abc +direct /man/1/alphabet-grid +direct /man/1/miniterm +direct /man/1/tiny +direct /man/1/yacc +direct /man/10/plan9.ini +direct /man/2/alphabet-intro +direct /man/2/attrdb +direct /man/2/cfg +direct /man/2/wmsrv +direct /man/3/ftl +direct /man/3/sd +direct /man/3/srv9 +direct /man/6/man +direct /man/8/plumber +direct /man/9/1copyright +directed /man/1/tkcmd +directed /man/1/tsort +directed /man/10/9load +directed /man/10/plan9.ini +directed /man/2/math-fp +directed /man/3/fpga +directed /man/9/canvas +directed /man/9/text +direction /man/1/acme +direction /man/1/tiny +direction /man/1/wm-misc +direction /man/2/draw-image +direction /man/2/keyring-crypt +direction /man/2/print +direction /man/2/spree-cardlib +direction /man/2/wmclient +direction /man/3/gpio +direction /man/3/sd +direction /man/8/collabsrv +direction /man/9/options +direction /man/9/scale +direction /man/9/text +directions /man/1/tiny +directions /man/9/listbox +directive /man/1/yacc +directive /man/10/error +directive /man/2/xml +directives /man/1/yacc +directives /man/10/2a +directives /man/10/2c +directives /man/10/a.out +directives /man/2/xml +directives /man/6/dis +directly /man/1/acme +directly /man/1/auplay +directly /man/1/charon +directly /man/1/diff +directly /man/1/emu +directly /man/1/miniterm +directly /man/1/mux +directly /man/1/sh +directly /man/1/tkcmd +directly /man/10/9load +directly /man/10/allocb +directly /man/10/c2l +directly /man/10/devattach +directly /man/10/intrenable +directly /man/10/newchan +directly /man/10/print +directly /man/10/readnum +directly /man/10/xalloc +directly /man/2/alphabet-intro +directly /man/2/asn1 +directly /man/2/command +directly /man/2/convcs +directly /man/2/crc +directly /man/2/dhcpclient +directly /man/2/draw-example +directly /man/2/ir +directly /man/2/palmfile +directly /man/2/plumbmsg +directly /man/2/prefab-0intro +directly /man/2/secstore +directly /man/2/security-auth +directly /man/2/sexprs +directly /man/2/spki-verifier +directly /man/2/spree +directly /man/2/spree-cardlib +directly /man/2/spree-gather +directly /man/2/styxservers +directly /man/2/sys-0intro +directly /man/2/sys-fauth +directly /man/2/sys-fversion +directly /man/2/sys-read +directly /man/2/ubfa +directly /man/2/w3c-xpointers +directly /man/2/wmsrv +directly /man/2/xml +directly /man/3/dbg +directly /man/3/flash +directly /man/3/indir +directly /man/3/mnt +directly /man/3/srv +directly /man/4/0intro +directly /man/4/kfs +directly /man/4/spree +directly /man/5/0intro +directly /man/6/audio +directly /man/6/font +directly /man/6/image +directly /man/6/sexprs +directly /man/8/dns +directly /man/8/fpgaload +directly /man/8/getauthinfo +directly /man/8/plumber +directly /man/8/rdbgsrv +directly /man/8/rip +directly /man/9/bind +directly /man/9/send +directories /man/1/0intro +directories /man/1/acme +directories /man/1/alphabet-fs +directories /man/1/bind +directories /man/1/cp +directories /man/1/diff +directories /man/1/du +directories /man/1/fs +directories /man/1/grid-ns +directories /man/1/itest +directories /man/1/lc +directories /man/1/limbo +directories /man/1/mkdir +directories /man/1/mv +directories /man/1/netstat +directories /man/1/pwd +directories /man/1/rm +directories /man/1/session +directories /man/1/sh-alphabet +directories /man/1/stack +directories /man/1/sum +directories /man/1/tiny +directories /man/10/2c +directories /man/10/acid +directories /man/10/c2l +directories /man/10/conf +directories /man/10/odbc +directories /man/10/srclist +directories /man/10/styxserver +directories /man/2/styxservers +directories /man/2/sys-0intro +directories /man/2/sys-bind +directories /man/2/sys-dirread +directories /man/2/sys-stat +directories /man/2/translate +directories /man/3/cmd +directories /man/3/fs +directories /man/3/plap +directories /man/3/prof +directories /man/3/prog +directories /man/3/ssl +directories /man/4/acme +directories /man/4/archfs +directories /man/4/cpu +directories /man/4/ftpfs +directories /man/4/import +directories /man/4/lockfs +directories /man/4/namespace +directories /man/4/tarfs +directories /man/5/0intro +directories /man/5/open +directories /man/5/read +directories /man/5/stat +directories /man/6/font +directories /man/6/proto +directories /man/8/collabsrv +directories /man/8/create +directories /man/8/kfscmd +directories /man/8/mkfs +directory /man/1/0intro +directory /man/1/acme +directory /man/1/alphabet-fs +directory /man/1/basename +directory /man/1/bind +directory /man/1/blur +directory /man/1/calendar +directory /man/1/cd +directory /man/1/charon +directory /man/1/chmod +directory /man/1/cleanname +directory /man/1/collab +directory /man/1/collab-clients +directory /man/1/cp +directory /man/1/cpu +directory /man/1/date +directory /man/1/deb +directory /man/1/diff +directory /man/1/du +directory /man/1/emu +directory /man/1/filename +directory /man/1/fs +directory /man/1/ftest +directory /man/1/ftree +directory /man/1/gettar +directory /man/1/grid-ns +directory /man/1/itest +directory /man/1/lc +directory /man/1/limbo +directory /man/1/listen +directory /man/1/logon +directory /man/1/look +directory /man/1/ls +directory /man/1/mash +directory /man/1/mash-tk +directory /man/1/miniterm +directory /man/1/mkdir +directory /man/1/mv +directory /man/1/netstat +directory /man/1/nsbuild +directory /man/1/os +directory /man/1/plumb +directory /man/1/pwd +directory /man/1/rm +directory /man/1/secstore +directory /man/1/session +directory /man/1/sh +directory /man/1/sh-regex +directory /man/1/sh-std +directory /man/1/spree-join +directory /man/1/tiny +directory /man/1/tktester +directory /man/1/wm-misc +directory /man/1/wm-sh +directory /man/10/2a +directory /man/10/2c +directory /man/10/9load +directory /man/10/acid +directory /man/10/c2l +directory /man/10/conf +directory /man/10/dev +directory /man/10/devattach +directory /man/10/iar +directory /man/10/kproc +directory /man/10/kstrip +directory /man/10/newchan +directory /man/10/ntsrv +directory /man/10/odbc +directory /man/10/srclist +directory /man/10/styx +directory /man/10/styxserver +directory /man/2/dbm +directory /man/2/debug +directory /man/2/dhcpclient +directory /man/2/disks +directory /man/2/draw-display +directory /man/2/fsproto +directory /man/2/ip +directory /man/2/keyring-auth +directory /man/2/keyset +directory /man/2/names +directory /man/2/plumbmsg +directory /man/2/prof +directory /man/2/readdir +directory /man/2/registries +directory /man/2/security-ssl +directory /man/2/selectfile +directory /man/2/spree +directory /man/2/styx +directory /man/2/styxservers +directory /man/2/styxservers-nametree +directory /man/2/sys-0intro +directory /man/2/sys-bind +directory /man/2/sys-chdir +directory /man/2/sys-dial +directory /man/2/sys-dirread +directory /man/2/sys-export +directory /man/2/sys-fd2path +directory /man/2/sys-file2chan +directory /man/2/sys-open +directory /man/2/sys-pctl +directory /man/2/sys-remove +directory /man/2/sys-seek +directory /man/2/sys-stat +directory /man/2/translate +directory /man/2/workdir +directory /man/3/audio +directory /man/3/boot +directory /man/3/cmd +directory /man/3/cons +directory /man/3/draw +directory /man/3/ds +directory /man/3/dup +directory /man/3/dynld +directory /man/3/eia +directory /man/3/env +directory /man/3/ether +directory /man/3/flash +directory /man/3/floppy +directory /man/3/fs +directory /man/3/ftl +directory /man/3/gpio +directory /man/3/i2c +directory /man/3/ip +directory /man/3/logfs +directory /man/3/pbus +directory /man/3/plap +directory /man/3/pnp +directory /man/3/prof +directory /man/3/prog +directory /man/3/root +directory /man/3/sd +directory /man/3/srv +directory /man/3/srv9 +directory /man/3/ssl +directory /man/3/switch +directory /man/3/tinyfs +directory /man/3/tls +directory /man/3/touch +directory /man/3/usb +directory /man/4/9srvfs +directory /man/4/acme +directory /man/4/archfs +directory /man/4/cpu +directory /man/4/dbfs +directory /man/4/dossrv +directory /man/4/factotum +directory /man/4/ftpfs +directory /man/4/import +directory /man/4/keyfs +directory /man/4/lockfs +directory /man/4/logfile +directory /man/4/memfs +directory /man/4/mntgen +directory /man/4/namespace +directory /man/4/ramfile +directory /man/4/registry +directory /man/4/spree +directory /man/5/0intro +directory /man/5/attach +directory /man/5/open +directory /man/5/read +directory /man/5/remove +directory /man/5/stat +directory /man/5/walk +directory /man/6/font +directory /man/6/keys +directory /man/6/namespace +directory /man/6/ndb +directory /man/6/plumbing +directory /man/6/proto +directory /man/6/sbl +directory /man/8/applylog +directory /man/8/bootpd +directory /man/8/collabsrv +directory /man/8/create +directory /man/8/cs +directory /man/8/dns +directory /man/8/getauthinfo +directory /man/8/kfscmd +directory /man/8/mkfs +directory /man/8/prep +directory /man/8/svc +directory /man/9/types +directory's /man/1/lc +directory's /man/1/rm +directory's /man/2/styxservers +directory's /man/4/tarfs +directs /man/1/cp +directs /man/1/sh +directs /man/2/virgil +direntry /man/2/fsproto +dirfmt /man/10/styx +dirlen /man/10/devattach +dirmodefmt /man/10/styx +dirname /man/1/mkdir +dirname /man/2/names +dirread /man/2/readdir +dirread /man/2/sys-0intro +dirread /man/2/sys-dirread +dirread /man/2/sys-stat +dirstat /man/10/devattach +dirtab /man/10/devattach +dirtiness /man/1/acme +dirty /man/1/acme +dirty /man/8/kfscmd +dirty /man/9/panel +dirtype /man/2/venti +dis /man/1/0intro +dis /man/1/acme +dis /man/1/alphabet-fs +dis /man/1/asm +dis /man/1/cook +dis /man/1/cprof +dis /man/1/cpu +dis /man/1/deb +dis /man/1/disdep +dis /man/1/emu +dis /man/1/fs +dis /man/1/grid-ns +dis /man/1/limbo +dis /man/1/mash +dis /man/1/mash-make +dis /man/1/mk +dis /man/1/mprof +dis /man/1/mux +dis /man/1/prof +dis /man/1/sh +dis /man/1/sh-alphabet +dis /man/1/sh-arg +dis /man/1/sh-regex +dis /man/1/sh-test +dis /man/1/stack +dis /man/1/tiny +dis /man/1/uuencode +dis /man/1/wm-misc +dis /man/10/conf +dis /man/10/kproc +dis /man/10/styx +dis /man/2/command +dis /man/2/convcs +dis /man/2/debug +dis /man/2/dis +dis /man/2/filter +dis /man/2/print +dis /man/2/prof +dis /man/2/spree +dis /man/3/dbg +dis /man/3/prof +dis /man/3/prog +dis /man/3/root +dis /man/3/sign +dis /man/4/cpu +dis /man/4/factotum +dis /man/4/namespace +dis /man/4/ramfile +dis /man/6/dis +dis /man/6/plumbing +dis /man/6/proto +dis /man/6/sbl +dis /man/8/collabsrv +dis /man/8/init +dis /man/8/srv +dis /man/8/svc +dis.b /man/2/dis +dis.m /man/2/dis +dis:r /man/1/mk +disable /man/1/charon +disable /man/1/limbo +disable /man/1/session +disable /man/10/intrenable +disable /man/10/kbdputc +disable /man/10/plan9.ini +disable /man/10/splhi +disable /man/2/plumbmsg +disable /man/3/audio +disable /man/3/draw +disable /man/3/eia +disable /man/3/fpga +disable /man/3/ip +disable /man/3/sd +disable /man/3/vga +disable /man/3/vid +disable /man/9/update +disabled /man/1/charon +disabled /man/1/collab-clients +disabled /man/1/session +disabled /man/1/sh +disabled /man/1/tktester +disabled /man/10/dev +disabled /man/10/lock +disabled /man/10/plan9.ini +disabled /man/10/splhi +disabled /man/3/logfs +disabled /man/3/pnp +disabled /man/3/sd +disabled /man/3/vga +disabled /man/4/factotum +disabled /man/4/keyfs +disabled /man/8/prep +disabled /man/9/button +disabled /man/9/checkbutton +disabled /man/9/entry +disabled /man/9/grid +disabled /man/9/menu +disabled /man/9/menubutton +disabled /man/9/options +disabled /man/9/pack +disabled /man/9/radiobutton +disabled /man/9/scale +disabled /man/9/text +disabled /man/9/update +disabledcolor /man/9/button +disabledcolor /man/9/checkbutton +disabledcolor /man/9/label +disabledcolor /man/9/menu +disabledcolor /man/9/menubutton +disabledcolor /man/9/options +disabledcolor /man/9/radiobutton +disabledcolor /man/9/scale +disables /man/1/collab-clients +disables /man/10/dmainit +disables /man/10/lock +disables /man/10/splhi +disables /man/3/tv +disables /man/3/vga +disabling /man/10/kbdputc +disabling /man/10/lock +disagree /man/10/2c +disagree /man/2/ida +disallow /man/10/styxserver +disallow /man/6/namespace +disallow /man/8/kfscmd +disallows /man/1/ftree +disallows /man/10/styxserver +disallows /man/3/fs +disambiguating /man/2/asn1 +disappear /man/8/getauthinfo +disappearing /man/1/sh-tk +disappears /man/2/sys-0intro +disappears /man/2/volume +disassemble /man/10/acid +disassembled /man/3/prog +disassembler /man/1/asm +disassembly /man/2/dis +disassembly /man/4/palmsrv +disc /man/2/draw-image +disc /man/3/draw +disc /man/3/ftl +disc /man/3/sd +disc /man/8/prep +discard /man/10/allocb +discard /man/10/qio +discard /man/2/bufio +discard /man/2/dbm +discard /man/2/spree-cardlib +discard /man/5/flush +discarded /man/1/tiny +discarded /man/10/allocb +discarded /man/10/qio +discarded /man/2/bufio +discarded /man/2/spree-gather +discarded /man/3/eia +discarded /man/3/pbus +discarded /man/6/ubfa +discarded /man/8/changelogin +discarded /man/9/send +discarding /man/1/charon +discarding /man/2/bufio +discards /man/10/allocb +discards /man/10/iar +discards /man/10/plan9.ini +discards /man/10/qio +discards /man/2/dhcpclient +discards /man/2/sh +discards /man/2/sys-remove +discipline /man/10/error +disclaim /man/9/1copyright +disclaimed /man/9/1copyright +disconcerting /man/10/plan9.ini +disconnect /man/1/miniterm +disconnect /man/10/odbc +disconnecting /man/3/logfs +disconnects /man/10/styxserver +disconnects /man/4/cpu +disconnects /man/8/collabsrv +discontiguous /man/9/listbox +discover /man/10/a.out +discover /man/2/disks +discover /man/2/security-0intro +discover /man/3/dup +discovered /man/3/pnp +discovered /man/4/acme +discovered /man/4/dbfs +discovered /man/5/open +discriminated /man/2/alphabet-intro +discriminates /man/1/cprof +discs /man/3/sd +discussed /man/1/acme +discussed /man/10/conf +discussed /man/10/qio +discussed /man/2/bufio +discussed /man/2/keyring-0intro +discussed /man/2/sys-stat +discussion /man/10/2c +discussion /man/2/draw-image +discussion /man/3/draw +discussion /man/3/mnt +discussion /man/5/walk +discussion /man/6/image +discussion /man/8/prep +disdep /man/1/disdep +disdep /man/2/dis +disdep /man/4/namespace +disdep.b /man/1/disdep +disdump /man/1/asm +disdump.b /man/1/asm +disfile /man/2/command +disfile /man/8/collabsrv +disjoint /man/2/draw-0intro +disjoint /man/3/ip +disjunction /man/1/mdb +disk /man/1/0intro +disk /man/1/du +disk /man/10/9load +disk /man/10/plan9.ini +disk /man/2/diskblocks +disk /man/2/disks +disk /man/3/ds +disk /man/3/floppy +disk /man/3/logfs +disk /man/4/kfs +disk /man/8/ftl +disk /man/8/init +disk /man/8/kfscmd +disk /man/8/mkfs +disk /man/8/prep +disk's /man/8/prep +disk.init /man/2/diskblocks +disk.open /man/2/disks +diskblocks /man/2/diskblocks +diskblocks.b /man/2/diskblocks +diskblocks.m /man/2/diskblocks +diskette /man/8/prep +diskettes /man/8/prep +disks /man/10/9load +disks /man/2/disks +disks /man/2/scsiio +disks /man/3/ds +disks /man/8/0intro +disks /man/8/prep +disks.b /man/2/disks +disks.m /man/2/disks +disksize /man/8/prep +dismiss /man/1/mash-tk +dismiss /man/10/intrenable +dismount /man/3/logfs +disp /man/2/draw-example +disp.chans /man/2/draw-example +disp.draw /man/2/draw-example +disp.ellipse /man/2/draw-example +disp.fillellipse /man/2/draw-example +disp.gendraw /man/2/draw-example +disp.r /man/2/draw-example +disp.r.min /man/2/draw-example +disp.text /man/2/draw-example +dispath /man/1/stack +dispersal /man/2/ida +display /man/1/0intro +display /man/1/acme +display /man/1/charon +display /man/1/collab-clients +display /man/1/deb +display /man/1/dmview +display /man/1/du +display /man/1/ebook +display /man/1/emu +display /man/1/env +display /man/1/ftree +display /man/1/grid-monitor +display /man/1/grid-ns +display /man/1/grid-query +display /man/1/itest +display /man/1/logon +display /man/1/man +display /man/1/mash-make +display /man/1/mash-tk +display /man/1/miniterm +display /man/1/ns +display /man/1/secstore +display /man/1/session +display /man/1/spree-join +display /man/1/tiny +display /man/1/tktester +display /man/1/wm-misc +display /man/10/9load +display /man/10/acid +display /man/10/kprof +display /man/10/plan9.ini +display /man/2/draw-0intro +display /man/2/draw-context +display /man/2/draw-display +display /man/2/draw-example +display /man/2/draw-font +display /man/2/draw-image +display /man/2/draw-screen +display /man/2/drawmux +display /man/2/imagefile +display /man/2/mpeg +display /man/2/prefab-0intro +display /man/2/prefab-compound +display /man/2/prefab-element +display /man/2/print +display /man/2/prof +display /man/2/sexprs +display /man/2/sh +display /man/2/spree-cardlib +display /man/2/tabs +display /man/2/tk +display /man/2/tkclient +display /man/2/volume +display /man/2/wmclient +display /man/3/draw +display /man/3/mpeg +display /man/3/pointer +display /man/3/tv +display /man/3/vga +display /man/3/vid +display /man/4/acme +display /man/4/cpu +display /man/4/dossrv +display /man/4/ftpfs +display /man/4/iostats +display /man/6/colour +display /man/6/font +display /man/6/image +display /man/6/man +display /man/6/sexprs +display /man/8/prep +display /man/8/register +display /man/8/styxchat +display /man/9/button +display /man/9/canvas +display /man/9/checkbutton +display /man/9/cursor +display /man/9/entry +display /man/9/frame +display /man/9/grab +display /man/9/listbox +display /man/9/menu +display /man/9/options +display /man/9/panel +display /man/9/radiobutton +display /man/9/scale +display /man/9/text +display /man/9/types +display's /man/1/dmview +display.allocate /man/2/draw-example +display.color /man/2/draw-example +display.cursor /man/9/cursor +display.image /man/2/draw-example +display.namedimage /man/2/draw-image +display.newimage /man/2/draw-display +display.newimage /man/2/draw-example +display.opaque /man/2/draw-example +display.open /man/2/draw-example +display.publicscreen /man/2/draw-screen +display.readimage /man/6/image +display.white /man/2/draw-example +display.writeimage /man/6/image +displayed /man/1/acme +displayed /man/1/brutus +displayed /man/1/charon +displayed /man/1/collab +displayed /man/1/deb +displayed /man/1/fc +displayed /man/1/ftree +displayed /man/1/grid-monitor +displayed /man/1/grid-ns +displayed /man/1/grid-query +displayed /man/1/itest +displayed /man/1/ls +displayed /man/1/man +displayed /man/1/mash +displayed /man/1/mash-make +displayed /man/1/mash-tk +displayed /man/1/miniterm +displayed /man/1/mux +displayed /man/1/session +displayed /man/1/sh-test +displayed /man/1/tktester +displayed /man/1/toolbar +displayed /man/1/wm-misc +displayed /man/1/wm-sh +displayed /man/2/draw-0intro +displayed /man/2/draw-image +displayed /man/2/itslib +displayed /man/2/keyring-0intro +displayed /man/2/popup +displayed /man/2/prefab-0intro +displayed /man/2/prefab-environ +displayed /man/2/security-0intro +displayed /man/2/selectfile +displayed /man/2/spree-cardlib +displayed /man/2/sys-print +displayed /man/2/tabs +displayed /man/2/tkclient +displayed /man/2/wmclient +displayed /man/3/pointer +displayed /man/3/vga +displayed /man/4/cpu +displayed /man/6/man +displayed /man/8/signer +displayed /man/9/button +displayed /man/9/canvas +displayed /man/9/checkbutton +displayed /man/9/cursor +displayed /man/9/entry +displayed /man/9/image +displayed /man/9/label +displayed /man/9/listbox +displayed /man/9/menu +displayed /man/9/menubutton +displayed /man/9/options +displayed /man/9/panel +displayed /man/9/radiobutton +displayed /man/9/scale +displayed /man/9/scrollbar +displayed /man/9/text +displaying /man/1/blur +displaying /man/1/deb +displaying /man/1/grid-monitor +displaying /man/1/mash-tk +displaying /man/1/session +displaying /man/1/tktester +displaying /man/4/iostats +displaying /man/9/checkbutton +displaying /man/9/choicebutton +displaying /man/9/entry +displaying /man/9/menu +displaying /man/9/options +displaying /man/9/radiobutton +displaying /man/9/scrollbar +displays /man/1/blur +displays /man/1/brutus +displays /man/1/charon +displays /man/1/collab-clients +displays /man/1/cprof +displays /man/1/deb +displays /man/1/dmview +displays /man/1/ftree +displays /man/1/grid-monitor +displays /man/1/grid-query +displays /man/1/logon +displays /man/1/man +displays /man/1/miniterm +displays /man/1/mprof +displays /man/1/ns +displays /man/1/prof +displays /man/1/secstore +displays /man/1/session +displays /man/1/wm-misc +displays /man/1/wm-sh +displays /man/2/dialog +displays /man/2/draw-0intro +displays /man/2/draw-display +displays /man/2/volume +displays /man/3/draw +displays /man/3/i2c +displays /man/3/vga +displays /man/6/colour +displays /man/8/getauthinfo +displays /man/8/register +displays /man/8/signer +displays /man/9/button +displays /man/9/canvas +displays /man/9/checkbutton +displays /man/9/choicebutton +displays /man/9/entry +displays /man/9/label +displays /man/9/listbox +displays /man/9/menu +displays /man/9/menubutton +displays /man/9/options +displays /man/9/panel +displays /man/9/radiobutton +displays /man/9/scale +displays /man/9/scrollbar +displays /man/9/text +disposal /man/2/alphabet-intro +dispose /man/2/alphabet-intro +dispose /man/2/command +disrupt /man/2/security-0intro +dist /man/9/button +dist /man/9/canvas +dist /man/9/checkbutton +dist /man/9/choicebutton +dist /man/9/cursor +dist /man/9/entry +dist /man/9/frame +dist /man/9/label +dist /man/9/listbox +dist /man/9/menubutton +dist /man/9/options +dist /man/9/pack +dist /man/9/panel +dist /man/9/radiobutton +dist /man/9/scale +dist /man/9/scrollbar +dist /man/9/see +dist /man/9/text +dist /man/9/types +distance /man/2/draw-font +distance /man/2/draw-image +distance /man/3/draw +distance /man/6/font +distance /man/6/man +distance /man/9/canvas +distance /man/9/grid +distance /man/9/pack +distance /man/9/text +distance /man/9/types +distances /man/9/canvas +distances /man/9/text +distant /man/1/collab-clients +distinct /man/1/0intro +distinct /man/1/acme +distinct /man/1/mk +distinct /man/10/mk +distinct /man/10/ntsrv +distinct /man/10/qlock +distinct /man/10/strcat +distinct /man/2/asn1 +distinct /man/2/ida +distinct /man/2/math-fp +distinct /man/2/registries +distinct /man/2/sexprs +distinct /man/2/spree-cardlib +distinct /man/2/styxservers-nametree +distinct /man/3/cmd +distinct /man/3/mnt +distinct /man/6/ndb +distinct /man/6/sexprs +distinct /man/9/menu +distinction /man/10/qio +distinction /man/2/asn1 +distinction /man/2/ip +distinction /man/3/draw +distinction /man/3/logfs +distinctly /man/10/print +distinguish /man/2/w3c-xpointers +distinguish /man/3/prof +distinguish /man/4/factotum +distinguish /man/6/translate +distinguishable /man/1/acme +distinguished /man/1/mk +distinguished /man/10/mk +distinguished /man/2/ubfa +distinguished /man/2/w3c-xpointers +distinguished /man/6/sbl +distinguished /man/6/sexprs +distinguished /man/8/create +distinguishes /man/1/ls +distinguishes /man/2/sexprs +distinguishes /man/8/prep +distinguishing /man/10/acid +distortions /man/3/touch +distribute /man/2/keyring-0intro +distribute /man/6/colour +distribute /man/9/1copyright +distributed /man/1/mux +distributed /man/2/security-0intro +distributed /man/2/spree +distributed /man/4/spree +distributed /man/9/pack +distributes /man/2/spree +distribution /man/1/alphabet-grid +distribution /man/3/pbus +distribution /man/3/plap +distribution /man/4/namespace +distribution /man/8/applylog +distribution /man/8/create +distributions /man/9/1copyright +distributive /man/1/mash +distributive /man/1/sh +distributors /man/9/1copyright +div /man/2/draw-example +div /man/2/draw-point +div /man/2/keyring-ipint +div /man/2/w3c-xpointers +diverted /man/3/cons +divide /man/1/mathcalc +divide /man/1/sh-expr +divide /man/1/units +divide /man/10/2l +divide /man/2/0intro +divide /man/2/dividers +divide /man/2/math-fp +divide /man/6/colour +divided /man/10/0intro +divided /man/2/dividers +divided /man/3/tls +divided /man/8/prep +divided /man/9/0intro +divider /man/2/dividers +divider.new /man/2/dividers +dividers /man/2/dividers +dividers /man/2/selectfile +dividers /man/2/tabs +dividers.b /man/2/dividers +dividers.m /man/2/dividers +dividing /man/2/dividers +dividing /man/9/menu +division /man/1/mc +division /man/1/mdb +division /man/1/sh-expr +division /man/2/0intro +division /man/2/math-fp +division /man/2/palmfile +division /man/8/prep +divisor /man/3/fpga +divisor /man/6/image +divisor /man/8/fpgaload +divisors /man/6/colour +divorce /man/1/0intro +dk /man/6/keytext +dleft /man/2/spree-cardlib +dlen /man/2/ida +dlineinfo /man/9/text +dlr /man/3/lpt +dma /man/10/allocb +dma /man/10/dmainit +dma /man/10/inb +dma /man/10/plan9.ini +dma /man/3/mpeg +dma /man/3/sd +dma.c /man/10/dmainit +dmacount /man/10/dmainit +dmactl /man/3/sd +dmadone /man/10/dmainit +dmaend /man/10/dmainit +dmainit /man/10/dmainit +dmappend /man/2/sys-open +dmappend /man/2/sys-stat +dmappend /man/3/srv +dmappend /man/5/0intro +dmappend /man/5/stat +dmasetup /man/10/dmainit +dmauth /man/2/sys-stat +dmauth /man/5/0intro +dmdir /man/2/styxservers-nametree +dmdir /man/2/sys-open +dmdir /man/2/sys-stat +dmdir /man/5/0intro +dmdir /man/5/open +dmdir /man/5/stat +dmexcl /man/2/sys-open +dmexcl /man/2/sys-stat +dmexcl /man/3/srv +dmexcl /man/5/0intro +dmexcl /man/5/stat +dmmount /man/10/devattach +dmtmp /man/5/stat +dmview /man/1/dmview +dmview /man/2/drawmux +dmview.b /man/1/dmview +dmwm /man/1/dmview +dmwm.b /man/1/dmview +dn /man/2/ir +dns /man/2/dhcpclient +dns /man/2/srv +dns /man/4/namespace +dns /man/6/attrdb +dns /man/6/ndb +dns /man/8/bootpd +dns /man/8/cs +dns /man/8/dhcp +dns /man/8/dns +dns /man/8/svc +dns.b /man/8/dns +dnsdomain /man/6/ndb +dnsdomainxx /man/6/ndb +dnsfile /man/8/dns +dnsquery /man/8/dns +dnsquery.b /man/8/dns +doc /man/2/palmfile +doc /man/4/namespace +doc.length /man/2/palmfile +doc.open /man/2/palmfile +doc.read /man/2/palmfile +docookies /man/1/charon +doctype /man/2/xml +document /man/1/charon +document /man/1/cook +document /man/1/ebook +document /man/1/man +document /man/1/sh +document /man/2/math-fp +document /man/2/palmfile +document /man/2/xml +document /man/6/ndb +document /man/9/options +document /man/9/scrollbar +document's /man/2/palmfile +document's /man/9/text +document.applets /man/1/charon +document.embeds /man/1/charon +document.onunload /man/1/charon +document.plugins /man/1/charon +documentation /man/1/0intro +documentation /man/1/acme +documentation /man/2/0intro +documentation /man/4/namespace +documentation /man/6/scancode +documentation /man/9/0intro +documentation /man/9/1copyright +documented /man/1/0intro +documented /man/1/chgrp +documented /man/2/alphabet-intro +documented /man/2/plumbmsg +documented /man/2/spree +documented /man/4/namespace +documented /man/9/0intro +documented /man/9/canvas +documented /man/9/types +documents /man/1/charon +documents /man/1/ebook +documents /man/2/filter +documents /man/2/palmfile +documents /man/2/xml +documents /man/8/0intro +documents /man/9/0intro +does.it.matter /man/4/factotum +doesn't /man/1/bind +doesn't /man/1/sh +doesn't /man/10/print +doesn't /man/4/factotum +doesn't /man/5/open +doesn't /man/6/man +doesn't /man/9/canvas +doesn't /man/9/entry +doesn't /man/9/menu +doesn't /man/9/pack +doesn't /man/9/scrollbar +doesn't /man/9/text +doing /man/1/alphabet-abc +doing /man/1/alphabet-grid +doing /man/10/dev +doing /man/10/styxserver +doing /man/2/dividers +doing /man/2/sh +doing /man/2/sys-bind +doing /man/2/sys-file2chan +doing /man/2/sys-stat +doing /man/3/logfs +doing /man/5/attach +doing /man/5/flush +doing /man/8/create +doing /man/8/prep +dollar /man/1/mash +dollar /man/6/keyboard +dom /man/2/dhcpclient +dom /man/4/factotum +dom /man/6/ndb +dom /man/8/bootpd +domain /man/1/sendmail +domain /man/1/webgrab +domain /man/2/dhcpclient +domain /man/2/ip +domain /man/2/sys-dial +domain /man/4/factotum +domain /man/6/attrdb +domain /man/6/ndb +domain /man/8/bootpd +domain /man/8/cs +domain /man/8/dns +domains /man/1/charon +domains /man/1/webgrab +domains /man/4/factotum +domains /man/4/registry +don''t /man/1/tiny +don't /man/1/mk +don't /man/1/tiny +don't /man/10/acid +don't /man/10/c2l +don't /man/10/inm +don't /man/10/mk +don't /man/10ti925/tihost +don't /man/2/keyset +don't /man/2/palmfile +don't /man/2/sys-stat +don't /man/5/stat +don't /man/6/colour +don't /man/6/image +don't /man/9/canvas +don't /man/9/menu +don't /man/9/text +dontcompile /man/2/dis +dontcompile /man/6/dis +dopaint /man/2/mpeg +doppio /man/6/ndb +dos /man/10/9load +dos /man/10/plan9.ini +dos /man/2/convcs +dos /man/4/dossrv +dos /man/8/prep +dos1 /man/8/prep +dos2 /man/8/prep +dos;c /man/10/plan9.ini +doscripts /man/1/charon +dossrv /man/10/9load +dossrv /man/3/ds +dossrv /man/4/0intro +dossrv /man/4/dossrv +dossrv /man/8/init +dossrv /man/8/prep +dossrv.b /man/4/dossrv +dot /man/1/acme +dot /man/1/mdb +dot /man/1/sh +dot /man/1/tiny +dot /man/1/webgrab +dot /man/2/ip +dot /man/2/math-linalg +dot /man/4/acme +dot /man/5/0intro +dot /man/5/walk +dot /man/6/man +dot /man/9/0intro +dots /man/1/strings +dots /man/2/print +dots /man/2/pslib +dots /man/9/types +dotted /man/3/ip +double /man/1/acme +double /man/1/brutus +double /man/1/fc +double /man/1/mash-tk +double /man/1/passwd +double /man/1/sh-csv +double /man/1/wm-sh +double /man/10/2c +double /man/10/9load +double /man/10/atoi +double /man/10/c2l +double /man/10/print +double /man/10/sleep +double /man/2/cfg +double /man/2/math-export +double /man/2/math-fp +double /man/6/attrdb +double /man/6/dis +double /man/6/man +double /man/8/prep +double /man/9/bind +double /man/9/entry +double /man/9/text +doubled /man/2/string +doubled /man/9/bind +doublequote /man/1/sh +doug /man/9/grid +douts /man/2/draw-image +dovers /man/2/draw-image +download /man/1/charon +download /man/10/9load +download /man/10ti925/epocimg +download /man/10ti925/tihost +downloaded /man/1/charon +downloaders /man/10/5cv +downloading /man/1/charon +downloads /man/1/charon +downloads /man/10ti925/tihost +downloads /man/3/pbus +downside /man/1/charon +downwards /man/10/a.out +downwards /man/2/spree-cardlib +dozen /man/2/draw-display +dp /man/1/math-misc +dp /man/10/devattach +dp /man/10/seconds +dp /man/3/draw +dp83815 /man/10/plan9.ini +dpi /man/2/print +dpi /man/2/pslib +dpms /man/10/plan9.ini +dpms /man/3/vga +dpq /man/4/ftpfs +dr /man/8/bootpd +draft /man/2/sexprs +draft /man/6/sexprs +drag /man/1/wm +drag /man/1/wm-misc +drag /man/2/tkclient +drag /man/2/wmclient +drag /man/8/plumber +drag /man/9/listbox +drag /man/9/options +drag /man/9/scrollbar +draggable /man/2/dividers +dragged /man/1/wm-misc +dragged /man/2/dividers +dragged /man/9/options +dragged /man/9/scale +dragged /man/9/text +dragging /man/1/brutus +dragging /man/1/session +dragging /man/1/wm-sh +dragging /man/9/entry +dragging /man/9/listbox +dragging /man/9/scrollbar +dragging /man/9/text +drags /man/1/acme +drags /man/1/wm-misc +dragto /man/9/text +drains /man/10/qio +drains /man/3/eia +dram /man/3/flash +draw /man/1/charon +draw /man/1/collab-clients +draw /man/1/cpu +draw /man/1/mux +draw /man/1/wm +draw /man/1/yacc +draw /man/10/conf +draw /man/10/plan9.ini +draw /man/2/0intro +draw /man/2/arg +draw /man/2/command +draw /man/2/debug +draw /man/2/devpointer +draw /man/2/dialog +draw /man/2/draw-0intro +draw /man/2/draw-context +draw /man/2/draw-display +draw /man/2/draw-example +draw /man/2/draw-font +draw /man/2/draw-image +draw /man/2/draw-point +draw /man/2/draw-pointer +draw /man/2/draw-rect +draw /man/2/draw-screen +draw /man/2/drawmux +draw /man/2/imagefile +draw /man/2/ir +draw /man/2/itslib +draw /man/2/prefab-0intro +draw /man/2/prefab-compound +draw /man/2/prefab-element +draw /man/2/prefab-environ +draw /man/2/prefab-style +draw /man/2/print +draw /man/2/pslib +draw /man/2/selectfile +draw /man/2/sh +draw /man/2/styxservers-nametree +draw /man/2/sys-self +draw /man/2/tabs +draw /man/2/tk +draw /man/2/tkclient +draw /man/2/translate +draw /man/2/volume +draw /man/2/wmclient +draw /man/2/wmlib +draw /man/2/wmsrv +draw /man/3/cons +draw /man/3/draw +draw /man/3/pointer +draw /man/4/spree +draw /man/5/open +draw /man/6/colour +draw /man/6/font +draw /man/6/image +draw /man/8/collabsrv +draw /man/9/0intro +draw /man/9/canvas +draw /man/9/cursor +draw /man/9/options +draw /man/9/panel +draw /man/9/text +draw.c /man/2/draw-0intro +draw.h /man/3/draw +draw.m /man/1/acme +draw.m /man/1/yacc +draw.m /man/2/0intro +draw.m /man/2/arg +draw.m /man/2/devpointer +draw.m /man/2/draw-0intro +draw.m /man/2/draw-context +draw.m /man/2/draw-display +draw.m /man/2/draw-example +draw.m /man/2/draw-font +draw.m /man/2/draw-image +draw.m /man/2/draw-point +draw.m /man/2/draw-pointer +draw.m /man/2/draw-rect +draw.m /man/2/draw-screen +draw.m /man/2/ir +draw.m /man/2/itslib +draw.m /man/2/mpeg +draw.m /man/2/prefab-0intro +draw.m /man/2/prefab-compound +draw.m /man/2/prefab-element +draw.m /man/2/prefab-environ +draw.m /man/2/prefab-style +draw.m /man/2/spree +draw.m /man/2/spree-cardlib +draw.m /man/2/styxservers-nametree +draw.m /man/2/tk +draw.m /man/2/wmlib +draw.m /man/2/wmsrv +draw.m /man/3/draw +drawcontext /man/2/sh +drawctxt /man/2/sh +drawing /man/1/collab-clients +drawing /man/2/draw-0intro +drawing /man/2/draw-display +drawing /man/2/draw-example +drawing /man/2/draw-image +drawing /man/2/prefab-compound +drawing /man/2/prefab-element +drawing /man/3/draw +drawing /man/3/vga +drawing /man/8/collabsrv +drawing /man/9/canvas +drawing /man/9/menu +drawing /man/9/options +drawing /man/9/scale +drawing /man/9/scrollbar +drawing /man/9/text +drawinit /man/3/vga +drawmux /man/1/dmview +drawmux /man/2/drawmux +drawmux.b /man/1/dmview +drawmux.m /man/2/drawmux +drawn /man/1/collab-clients +drawn /man/2/draw-display +drawn /man/2/draw-font +drawn /man/2/draw-image +drawn /man/2/prefab-0intro +drawn /man/2/prefab-compound +drawn /man/2/prefab-element +drawn /man/2/wmclient +drawn /man/3/draw +drawn /man/3/vga +drawn /man/6/font +drawn /man/9/canvas +drawn /man/9/checkbutton +drawn /man/9/cursor +drawn /man/9/listbox +drawn /man/9/options +drawn /man/9/panel +drawn /man/9/radiobutton +drawn /man/9/scrollbar +drawn /man/9/text +drawn /man/9/types +drawop /man/2/draw-image +draws /man/1/mk +draws /man/10/mk +draws /man/2/draw-image +draws /man/3/draw +draws /man/5/stat +draws /man/8/touchcal +dright /man/2/spree-cardlib +drive /man/10/9load +drive /man/10/ntsrv +drive /man/2/ir +drive /man/2/tk +drive /man/3/cmd +drive /man/3/floppy +drive /man/3/lpt +drive /man/8/prep +driven /man/2/prefab-0intro +driver /man/1/0intro +driver /man/10/conf +driver /man/10/dev +driver /man/10/devattach +driver /man/10/dynld +driver /man/10/eve +driver /man/10/intrenable +driver /man/10/kbdputc +driver /man/10/newchan +driver /man/10/plan9.ini +driver /man/10/qio +driver /man/2/mpeg +driver /man/2/print +driver /man/2/sys-pctl +driver /man/3/0intro +driver /man/3/audio +driver /man/3/cons +driver /man/3/dbg +driver /man/3/dynld +driver /man/3/flash +driver /man/3/ftl +driver /man/3/i82365 +driver /man/3/ip +driver /man/3/logfs +driver /man/3/lpt +driver /man/3/mnt +driver /man/3/mpeg +driver /man/3/pbus +driver /man/3/plap +driver /man/3/pnp +driver /man/3/sd +driver /man/3/touch +driver /man/3/usb +driver /man/3/vga +driver /man/5/0intro +driver /man/8/ftl +driver /man/8/init +driver /man/8/prep +driver's /man/10/dev +driver's /man/10/devattach +driver's /man/10/dmainit +driver's /man/10/intrenable +driver's /man/10/kbdputc +driver's /man/10/parsecmd +driver's /man/3/cons +driver's /man/3/ftl +driver.b /man/2/print +drivers /man/10/0intro +drivers /man/10/9load +drivers /man/10/conf +drivers /man/10/dev +drivers /man/10/devattach +drivers /man/10/eve +drivers /man/10/inb +drivers /man/10/intrenable +drivers /man/10/kbdputc +drivers /man/10/newchan +drivers /man/10/plan9.ini +drivers /man/10/qio +drivers /man/10/sleep +drivers /man/10/splhi +drivers /man/3/cons +drivers /man/3/dynld +drivers /man/3/flash +drivers /man/3/i82365 +drivers /man/3/indir +drivers /man/3/ip +drivers /man/3/mnt +drivers /man/8/init +drives /man/1/collab-clients +drives /man/3/floppy +drives /man/3/touch +drop /man/1/sh-string +drop /man/1/wm-misc +drop /man/2/string +drop /man/3/ip +drop /man/8/plumber +dropped /man/3/pbus +dropping /man/1/wm-misc +drops /man/3/eia +drops /man/3/ip +drqtpmx /man/10/iar +ds /man/1/units +ds /man/3/ds +ds /man/3/sd +ds /man/8/prep +ds1 /man/3/switch +ds1687 /man/3/rtc +dsa /man/6/keytext +dsize /man/2/dis +dsp /man/10/a.out +dsq /man/8/bootpd +dsr /man/3/eia +dss /man/2/security-0intro +dst /man/2/dis +dst /man/2/draw-image +dst /man/2/plumbmsg +dst /man/2/spree +dst /man/2/spree-cardlib +dst /man/2/sys-read +dst /man/3/draw +dst /man/6/plumbing +dstid /man/3/draw +dstid /man/4/spree +dstr /man/3/draw +dsttype /man/1/alphabet-main +dsttype /man/1/sh-alphabet +dt /man/6/man +dtag /man/9/canvas +dtop /man/2/spree-cardlib +dtr /man/3/eia +dtype /man/2/disks +dtype /man/2/palmfile +dtype /man/2/styxservers +dtype /man/2/sys-stat +du /man/1/du +du /man/1/gettar +du /man/4/cpu +du.b /man/1/du +dual /man/1/charon +dual /man/1/wm-misc +due /man/1/sh +due /man/1/wm +due /man/10/9load +due /man/3/prog +due /man/8/prep +duelling /man/2/keyring-ipint +duff /man/1/alphabet-fs +duff /man/1/fs +duff /man/1/mash +duff /man/2/draw-image +duff /man/6/colour +dummy /man/10/plan9.ini +dummyrr /man/10/plan9.ini +dump /man/1/acme +dump /man/1/mash +dump /man/1/mash-tk +dump /man/1/xd +dump /man/10/acid +dump /man/4/acme +dump /man/8/styxchat +dumpdir /man/4/acme +dumping /man/1/xd +dumps /man/1/xd +dumps /man/10/panic +dumps /man/5/stat +dup /man/1/fc +dup /man/1/sh +dup /man/2/sys-0intro +dup /man/2/sys-dup +dup /man/2/sys-iounit +dup /man/2/sys-read +dup /man/3/dup +duplex /man/10/plan9.ini +duplex /man/2/print +duplicate /man/1/fc +duplicate /man/2/cfg +duplicate /man/2/readdir +duplicate /man/2/styxservers +duplicate /man/2/sys-dup +duplicate /man/6/users +duplicate /man/8/kfscmd +duplicated /man/1/uniq +duplicated /man/10/9load +duplicated /man/2/readdir +duplicated /man/8/kfscmd +duplicates /man/1/disdep +duplicates /man/10/iar +duplicates /man/4/registry +duplicating /man/1/tr +duplicating /man/6/ndb +duplicating /man/9/canvas +dups /man/3/dup +duration /man/1/charon +duration /man/1/sh +duration /man/1/sh-arg +duration /man/1/sh-file2chan +duration /man/1/sh-std +duration /man/10/odbc +durations /man/2/sys-millisec +dx /man/2/draw-example +dx /man/2/draw-rect +dx,dy /man/2/draw-example +dxocr /man/1/freq +dxors /man/2/draw-image +dy /man/2/draw-example +dy /man/2/draw-rect +dynamic /man/1/0intro +dynamic /man/1/mk +dynamic /man/1/mprof +dynamic /man/1/wm +dynamic /man/10/2l +dynamic /man/10/mk +dynamic /man/2/dhcpclient +dynamic /man/3/dynld +dynamic /man/3/kprof +dynamic /man/3/prog +dynamic /man/4/namespace +dynamic /man/8/dhcp +dynamic /man/8/svc +dynamically /man/1/0intro +dynamically /man/10/dev +dynamically /man/10/devattach +dynamically /man/10/dynld +dynamically /man/10/intrenable +dynamically /man/10/parsecmd +dynamically /man/2/draw-image +dynamically /man/2/popup +dynamically /man/3/dynld +dynamically /man/3/indir +dynamically /man/3/plap +dynamically /man/4/mntgen +dynamically /man/4/registry +dynamically /man/8/rip +dynapro /man/3/touch +dynfindsym /man/10/dynld +dynfindysm /man/10/dynld +dynfreeimport /man/10/dynld +dynimport /man/10/dynld +dynld /man/10/2c +dynld /man/10/2l +dynld /man/10/dynld +dynld /man/3/dynld +dynld.h /man/10/dynld +dynloadfd /man/10/dynld +dynloadgen /man/10/dynld +dynobj /man/10/dynld +dynobjfree /man/10/dynld +dynsym /man/10/dynld +dynsyms /man/3/dynld +dyntabsize /man/10/dynld +e.clip /man/2/prefab-element +e.g /man/1/acme +e.g /man/1/alphabet-main +e.g /man/1/blur +e.g /man/1/fc +e.g /man/1/limbo +e.g /man/1/session +e.g /man/1/sh-expr +e.g /man/1/sh-regex +e.g /man/1/sh-std +e.g /man/1/stack +e.g /man/1/tktester +e.g /man/1/units +e.g /man/10/2c +e.g /man/10/a.out +e.g /man/10/acid +e.g /man/10/plan9.ini +e.g /man/2/spree +e.g /man/2/spree-cardlib +e.g /man/2/spree-gather +e.g /man/2/spree-objstore +e.g /man/2/string +e.g /man/2/tk +e.g /man/2/wmclient +e.g /man/2/wmlib +e.g /man/3/sd +e.g /man/4/namespace +e.g /man/4/spree +e.g /man/6/keyboard +e.g /man/6/man +e.g /man/8/prep +e.g /man/8/styxchat +e.g /man/9/bind +e.g /man/9/canvas +e.g /man/9/options +e.g /man/9/text +e.r.inset /man/2/prefab-element +e.tag.constr /man/2/asn1 +e.val /man/2/asn1 +ea /man/10/plan9.ini +eaddrlen /man/2/ether +eano /man/2/geodesy +earg /man/2/arg +earlier /man/1/mv +earlier /man/1/sh-alphabet +earlier /man/1/tsort +earlier /man/2/readdir +earlier /man/2/styxconv +earlier /man/2/translate +earlier /man/5/version +earlier /man/8/cs +earlier /man/9/canvas +earlier /man/9/entry +earlier /man/9/listbox +earlier /man/9/text +easier /man/1/acme +easier /man/1/alphabet-main +easier /man/10/c2l +easier /man/2/alphabet-intro +easiest /man/10/0intro +easiest /man/2/ubfa +easily /man/1/tktester +easily /man/2/keyring-sha1 +easily /man/3/logfs +east /man/6/attrdb +east /man/9/grid +easting /man/2/geodesy +eastings /man/2/geodesy +easy /man/10/plan9.ini +easy /man/2/security-0intro +easy /man/3/logfs +easy /man/5/0intro +easy /man/5/stat +easy /man/6/colour +eavesdropper /man/2/security-0intro +ebadarg /man/10/devattach +ebadarg /man/10/styxserver +ebadarg /man/2/styxservers +ebadcmd /man/10/styxserver +ebadfid /man/2/styxservers +ebc /man/2/keyring-crypt +ebcdic /man/1/dd +ebcdic,ucase /man/1/dd +ebook /man/1/ebook +ebooks /man/1/ebook +ec2t /man/10/plan9.ini +ecb /man/2/security-0intro +ecb /man/3/ssl +ecc /man/3/flash +echo /man/1/acme +echo /man/1/alphabet-fs +echo /man/1/alphabet-main +echo /man/1/echo +echo /man/1/fs +echo /man/1/listen +echo /man/1/mash +echo /man/1/netkey +echo /man/1/sh +echo /man/1/sh-alphabet +echo /man/1/sh-arg +echo /man/1/sh-file2chan +echo /man/1/sh-std +echo /man/1/sh-test +echo /man/1/timestamp +echo /man/1/tiny +echo /man/1/wm-sh +echo /man/1/zeros +echo /man/10/odbc +echo /man/10/plan9.ini +echo /man/3/dbg +echo /man/3/ds +echo /man/3/kprof +echo /man/3/logfs +echo /man/3/pnp +echo /man/3/sd +echo /man/3/vga +echo /man/4/9srvfs +echo /man/4/acme +echo /man/4/cpu +echo /man/4/palmsrv +echo /man/4/spree +echo /man/8/dhcp +echo /man/8/httpd +echo /man/8/ping +echo /man/8/rdbgsrv +echo.b /man/1/echo +echoed /man/1/wm-sh +echoed /man/3/cons +echoed /man/5/stat +echoing /man/4/acme +echoing /man/5/flush +ecma /man/1/charon +ecmascript /man/1/charon +ed /man/1/diff +ed50 /man/2/geodesy +edata /man/10/2l +ede /man/3/tls +edge /man/1/blur +edge /man/10/intrenable +edge /man/2/draw-0intro +edge /man/2/draw-image +edge /man/3/gpio +edge /man/3/pbus +edge /man/9/canvas +edge /man/9/entry +edge /man/9/listbox +edge /man/9/menu +edge /man/9/text +edgecolor /man/2/prefab-style +edges /man/1/wm-misc +edges /man/2/prefab-style +edges /man/9/canvas +edges /man/9/options +edges /man/9/pack +edgeserver /man/3/pbus +edgeserver /man/3/plap +edit /man/1/acme +edit /man/1/brutus +edit /man/1/miniterm +edit /man/1/wm-misc +edit /man/2/plumbmsg +edit /man/4/ramfile +edit /man/6/plumbing +edit.b /man/1/wm-misc +editable /man/1/collab-clients +edited /man/1/acme +edited /man/1/tktester +edited /man/1/wm-sh +edited /man/8/svc +edited /man/9/entry +edited /man/9/scrollbar +edited /man/9/text +editing /man/1/acme +editing /man/1/brutus +editing /man/1/charon +editing /man/1/diff +editing /man/1/miniterm +editing /man/1/wm-misc +editing /man/1/wm-sh +editing /man/10/c2l +edition /man/1/charon +edition /man/1/emu +edition /man/1/mash +edition /man/1/secstore +edition /man/1/yacc +edition /man/2/styxconv +edition /man/2/xml +edition /man/8/changelogin +edition /man/9/send +editions /man/1/charon +editor /man/1/0intro +editor /man/1/brutus +editor /man/1/cook +editor /man/1/diff +editor /man/1/ftree +editor /man/1/mdb +editor /man/1/wm-misc +editor /man/8/prep +editors /man/1/deb +editors /man/4/ramfile +edits /man/8/prep +ee /man/6/man +eeeeeennnnnn /man/2/geodesy +eeeeennnnn /man/2/geodesy +eeeennnn /man/2/geodesy +eeennn /man/2/geodesy +eenn /man/2/geodesy +eeprom /man/1/avr +eexist /man/10/styxserver +eexists /man/2/styxservers +efbwr /man/1/diff +effective /man/10/styx +effective /man/2/ida +effective /man/3/ip +effective /man/3/vid +effective /man/8/ftl +effectively /man/3/indir +effects /man/1/bind +effects /man/1/sh +effects /man/1/wm-misc +effects /man/2/dhcpclient +effects /man/2/sh +effects /man/2/sys-bind +effects /man/2/sys-export +effects /man/2/sys-pctl +effects /man/3/cmd +effects /man/9/image +effects /man/9/menu +effects /man/9/options +efficiency /man/3/logfs +efficiency /man/6/dis +efficient /man/1/acme +efficient /man/1/dd +efficient /man/2/draw-0intro +efficient /man/2/format +efficient /man/2/ida +efficient /man/2/math-export +efficient /man/2/sets +efficient /man/2/sys-pipe +efficient /man/2/sys-read +efficient /man/6/sexprs +efficient /man/8/rip +efficiently /man/10/memory +efficiently /man/2/math-linalg +efficiently /man/2/sexprs +efficiently /man/2/xml +efficiently /man/6/sexprs +efr /man/1/cprof +eg /man/1/keyboard +eg /man/1/kill +eg /man/1/netstat +eg /man/1/timestamp +eg /man/1/tiny +eg /man/1/webgrab +eg /man/1/wm-misc +eg /man/10/2c +eg /man/10/allocb +eg /man/10/dev +eg /man/10/devattach +eg /man/10/dmainit +eg /man/10/intrenable +eg /man/10/lock +eg /man/10/ntsrv +eg /man/10/xalloc +eg /man/2/arg +eg /man/2/attrdb +eg /man/2/bufio +eg /man/2/command +eg /man/2/dbm +eg /man/2/dhcpclient +eg /man/2/draw-context +eg /man/2/draw-display +eg /man/2/ether +eg /man/2/filter +eg /man/2/fsproto +eg /man/2/imagefile +eg /man/2/ip +eg /man/2/keyring-getmsg +eg /man/2/keyring-rc4 +eg /man/2/palmfile +eg /man/2/plumbmsg +eg /man/2/print +eg /man/2/registries +eg /man/2/secstore +eg /man/2/security-login +eg /man/2/srv +eg /man/2/styxservers +eg /man/2/sys-dial +eg /man/2/sys-export +eg /man/2/sys-self +eg /man/2/sys-sleep +eg /man/2/sys-stat +eg /man/2/translate +eg /man/2/ubfa +eg /man/2/w3c-css +eg /man/3/cap +eg /man/3/cmd +eg /man/3/dbg +eg /man/3/eia +eg /man/3/fpga +eg /man/3/fs +eg /man/3/ftl +eg /man/3/indir +eg /man/3/ip +eg /man/3/logfs +eg /man/3/plap +eg /man/3/srv +eg /man/4/archfs +eg /man/4/namespace +eg /man/4/registry +eg /man/6/attrdb +eg /man/6/audio +eg /man/6/colour +eg /man/6/plumbing +eg /man/6/sbl +eg /man/6/translate +eg /man/8/applylog +eg /man/8/changelogin +eg /man/8/collabsrv +eg /man/8/dhcp +eg /man/8/getauthinfo +eg /man/8/init +eg /man/8/kfscmd +egp /man/1/mk +egp /man/10/mk +egreg /man/10/error +ehorizontal /man/2/prefab-element +ehorizontal:con /man/2/prefab-element +ehungup /man/10/qio +ehungup /man/10/styxserver +eia /man/1/avr +eia /man/10/plan9.ini +eia /man/3/dbg +eia /man/3/eia +eia /man/3/ip +eia0 /man/1/avr +eia0 /man/10/plan9.ini +eia0 /man/3/dbg +eia0 /man/3/eia +eia0 /man/3/ip +eia0 /man/4/export +eia0 /man/4/palmsrv +eia0 /man/8/rdbgsrv +eia0ctl /man/3/dbg +eia0ctl /man/3/eia +eia0status /man/3/eia +eia1 /man/10/plan9.ini +eia1 /man/3/eia +eia1ctl /man/3/eia +eia1status /man/3/eia +eicon /man/2/prefab-element +eight /man/1/passwd +eight /man/5/0intro +eight /man/6/image +eight /man/9/text +eighth /man/2/keyring-crypt +einuse /man/2/styxservers +eject /man/3/floppy +ek /man/6/keytext +eke /man/2/security-0intro +elaborate /man/2/sexprs +elaborate /man/2/w3c-xpointers +elaborate /man/6/sexprs +elapsed /man/1/itest +electron /man/1/units +electronic /man/2/keyring-crypt +electronic /man/2/security-0intro +electronic /man/3/ssl +electronics /man/3/touch +elem /man/1/cook +elem /man/1/fc +elem /man/1/mathcalc +elem /man/10/devattach +elem /man/2/0intro +elem /man/2/asn1 +elem /man/2/math-0intro +elem /man/2/math-elem +elem /man/2/prefab-compound +elem /man/2/prefab-element +elem.is /man/2/asn1 +elem.tag /man/2/asn1 +elem.tag.class /man/2/asn1 +elem.tag.num /man/2/asn1 +elem.tostring /man/2/asn1 +elem.val /man/2/asn1 +elem1 /man/2/asn1 +elem2 /man/2/asn1 +elem:self /man/2/prefab-element +elemcolor /man/2/prefab-style +element's /man/2/prefab-element +element.adjust /man/2/prefab-element +element.append /man/2/prefab-element +element.icon /man/2/prefab-compound +element.layout /man/2/prefab-compound +element.layout /man/2/prefab-element +element.r /man/2/prefab-element +element.scroll /man/2/prefab-compound +element.scroll /man/2/prefab-element +element.show /man/2/prefab-compound +element.text /man/2/prefab-compound +element.text /man/2/prefab-element +elementary /man/2/math-0intro +elementary /man/2/math-elem +elementborderwidth /man/9/scrollbar +elementwise /man/5/walk +elems /man/2/bloomfilter +eleven /man/10/2c +elgamal /man/2/keyring-gensk +elgamal /man/2/security-0intro +elgamal /man/6/keytext +elgamal /man/8/createsignerkey +elided /man/1/acme +elided /man/1/alphabet-fs +elided /man/1/fs +elided /man/1/mk +elided /man/10/mk +elided /man/2/xml +elided /man/4/acme +elided /man/4/logfile +elif /man/10/2c +eliminate /man/2/bloomfilter +eliminate /man/2/draw-0intro +eliminating /man/10/error +elimination /man/2/math-0intro +elisions /man/1/acme +elist /man/2/prefab-compound +elist /man/2/prefab-element +elist.r /man/2/prefab-element +elists /man/2/prefab-element +elite /man/10/plan9.ini +ell /man/1/tail +ellipse /man/2/draw-image +ellipse /man/3/draw +ellipseop /man/2/draw-image +elliptical /man/2/draw-example +ellis /man/3/indir +elnk3 /man/10/plan9.ini +elongated /man/9/canvas +els /man/1/sh-sexprs +els /man/2/names +els /man/2/sexprs +els /man/2/ubfa +elseaction /man/1/sh-std +elsewhere /man/1/dmview +elsewhere /man/1/session +elsewhere /man/1/sh +elsewhere /man/1/tktester +elsewhere /man/10/allocb +elsewhere /man/10/iar +elsewhere /man/2/disks +elsewhere /man/2/drawmux +elsewhere /man/2/sys-export +elsewhere /man/3/fs +elsewhere /man/3/pointer +elsewhere /man/6/keytext +elsewhere /man/9/menubutton +email /man/1/mux +emanating /man/1/sh-file2chan +embedded /man/1/ebook +embedded /man/2/asn1 +embedded /man/2/ip +embedded /man/2/math-0intro +embedded /man/9/panel +embedded /man/9/text +embedded /man/9/types +embodied /man/4/factotum +emboldened /man/1/brutus +emerge /man/3/tinyfs +emitted /man/1/yacc +employ /man/1/acme +employ /man/1/charon +employ /man/2/security-0intro +employs /man/2/disks +empties /man/10/allocb +empties /man/10/qio +ems /man/2/w3c-css +emtpy /man/2/convcs +emu /man/1/asm +emu /man/1/emu +emu /man/1/limbo +emu /man/1/mux +emu /man/10/allocb +emu /man/10/conf +emu /man/10/devattach +emu /man/10/error +emu /man/10/eve +emu /man/10/kproc +emu /man/10/lock +emu /man/10/newchan +emu /man/10/ntsrv +emu /man/10/parsecmd +emu /man/10/qio +emu /man/10/qlock +emu /man/10/readnum +emu /man/10/ref +emu /man/10/sleep +emu /man/2/srv +emu /man/2/sys-0intro +emu /man/2/sys-dial +emu /man/2/sys-export +emu /man/2/sys-file2chan +emu /man/2/sys-iounit +emu /man/3/audio +emu /man/3/cap +emu /man/3/cmd +emu /man/3/cons +emu /man/3/draw +emu /man/3/dup +emu /man/3/env +emu /man/3/fs +emu /man/3/indir +emu /man/3/ip +emu /man/3/logfs +emu /man/3/mnt +emu /man/3/pipe +emu /man/3/pointer +emu /man/3/prof +emu /man/3/prog +emu /man/3/root +emu /man/3/sign +emu /man/3/snarf +emu /man/3/srv +emu /man/3/srv9 +emu /man/3/tls +emu /man/4/namespace +emu /man/6/scancode +emu /man/7/db +emu /man/7/dbsrv +emu /man/8/init +emu /man/8/shutdown +emu.exe /man/10/ntsrv +emuargs /man/4/9srvfs +emuargs /man/8/init +emuinit /man/10/conf +emuinit /man/8/init +emuinit.b /man/8/init +emuinit.dis /man/1/emu +emuinit.dis /man/10/conf +emuinit.dis /man/8/init +emulate /man/8/manufacture +emulated /man/1/mux +emulated /man/10/2c +emulated /man/10/print +emulates /man/8/manufacture +emulating /man/8/register +emulation /man/1/emu +emulation /man/10/2l +emulation /man/3/cons +emulation /man/3/ip +emulation /man/3/root +emulation /man/4/namespace +emulator /man/1/emu +emulator /man/1/miniterm +emulator /man/8/shutdown +en /man/1/acme +en /man/2/geodesy +en2216 /man/10/plan9.ini +en2lalo /man/2/geodesy +en2os /man/2/geodesy +enable /man/1/charon +enable /man/1/collab-clients +enable /man/1/ebook +enable /man/1/miniterm +enable /man/1/timestamp +enable /man/10/intrenable +enable /man/10/kbdputc +enable /man/10/plan9.ini +enable /man/10/splhi +enable /man/10/styxserver +enable /man/2/filter-deflate +enable /man/2/format +enable /man/2/security-0intro +enable /man/2/spree +enable /man/2/spree-objstore +enable /man/2/styxservers +enable /man/2/wmsrv +enable /man/3/audio +enable /man/3/cons +enable /man/3/draw +enable /man/3/eia +enable /man/3/fpga +enable /man/3/ip +enable /man/3/logfs +enable /man/3/sd +enable /man/3/tls +enable /man/3/tv +enable /man/3/vga +enable /man/3/vid +enable /man/8/dhcp +enable /man/9/menu +enable /man/9/options +enable /man/9/update +enabled /man/1/0intro +enabled /man/1/charon +enabled /man/1/collab-clients +enabled /man/1/miniterm +enabled /man/1/rcmd +enabled /man/10/2l +enabled /man/10/dev +enabled /man/10/plan9.ini +enabled /man/10/splhi +enabled /man/2/sh +enabled /man/3/arch +enabled /man/3/cap +enabled /man/3/ip +enabled /man/3/kprof +enabled /man/3/logfs +enabled /man/3/pnp +enabled /man/3/sd +enabled /man/3/sign +enabled /man/8/styxchat +enabled /man/9/grid +enabled /man/9/menu +enabled /man/9/pack +enabled /man/9/scale +enabled /man/9/text +enables /man/1/alphabet-abc +enables /man/1/alphabet-fs +enables /man/1/alphabet-grid +enables /man/1/charon +enables /man/1/collab-clients +enables /man/1/emu +enables /man/1/sh +enables /man/10/5cv +enables /man/10/error +enables /man/10/panic +enables /man/10/plan9.ini +enables /man/10/qlock +enables /man/10/splhi +enables /man/2/0intro +enables /man/2/security-0intro +enables /man/2/security-auth +enables /man/2/spree-allow +enables /man/2/xml +enables /man/3/cap +enables /man/3/vga +enables /man/4/keyfs +enables /man/4/spree +enables /man/8/fpgaload +enabling /man/1/charon +enabling /man/1/toolbar +enabling /man/10/kbdputc +enabling /man/2/draw-screen +ename /man/10/styx +ename /man/2/sh +ename /man/2/styx +ename /man/5/0intro +ename /man/5/error +ename /man/8/styxchat +enc /man/2/encoding +enc /man/2/ida +enc /man/3/audio +enc /man/3/tls +enc /man/6/audio +encalg /man/3/tls +encalgs /man/3/ssl +encalgs /man/3/tls +encapsulate /man/2/plumbmsg +encapsulated /man/1/grid-ns +encapsulated /man/2/plumbmsg +encapsulated /man/2/pslib +encapsulated /man/2/xml +encapsulated /man/4/cpu +encapsulated /man/6/keytext +encapsulated /man/8/cs +encapsulates /man/2/draw-context +encapsulates /man/2/plumbmsg +encapsulates /man/2/security-auth +encapsulates /man/2/styxservers +encin /man/3/tls +enclosed /man/1/sh +enclosed /man/10/2c +enclosed /man/10/c2l +enclosed /man/2/tk +enclosed /man/3/prog +enclosed /man/6/sexprs +enclosed /man/9/0intro +enclosed /man/9/canvas +enclosing /man/1/acme +enclosing /man/1/tiny +enclosing /man/2/0intro +enclosing /man/6/sbl +enclosing /man/9/canvas +encode /man/1/uuencode +encode /man/10/ms2 +encode /man/10ti925/epocimg +encode /man/2/asn1 +encode /man/2/encoding +encode /man/2/filter-slip +encode /man/2/keyring-0intro +encode /man/2/palmfile +encode /man/3/tls +encode /man/6/dis +encode /man/6/image +encode /man/6/sexprs +encode /man/6/utf +encoded /man/1/auplay +encoded /man/1/strings +encoded /man/1/uuencode +encoded /man/1/wc +encoded /man/10/a.out +encoded /man/10/devattach +encoded /man/2/asn1 +encoded /man/2/bufio +encoded /man/2/dis +encoded /man/2/encoding +encoded /man/2/ida +encoded /man/2/imagefile +encoded /man/2/keyring-crypt +encoded /man/2/keyring-ipint +encoded /man/2/math-export +encoded /man/2/palmfile +encoded /man/2/wmsrv +encoded /man/3/tls +encoded /man/3/tv +encoded /man/3/vga +encoded /man/5/0intro +encoded /man/6/audio +encoded /man/6/dis +encoded /man/6/image +encoded /man/6/keytext +encoded /man/6/login +encoded /man/6/sbl +encoded /man/6/scancode +encoded /man/6/ubfa +encoded /man/8/rstyxd +encodedfile /man/1/uuencode +encoder /man/3/vid +encodes /man/1/uuencode +encodes /man/2/math-elem +encodes /man/2/math-export +encodes /man/6/dis +encodes /man/6/sexprs +encoding /man/1/tcs +encoding /man/1/uuencode +encoding /man/10/a.out +encoding /man/10/intrenable +encoding /man/10/kbdputc +encoding /man/10/rune +encoding /man/10/styx +encoding /man/2/asn1 +encoding /man/2/convcs +encoding /man/2/draw-0intro +encoding /man/2/encoding +encoding /man/2/filter +encoding /man/2/filter-slip +encoding /man/2/ida +encoding /man/2/keyring-0intro +encoding /man/2/keyring-getmsg +encoding /man/2/palmfile +encoding /man/2/plumbmsg +encoding /man/2/secstore +encoding /man/2/sexprs +encoding /man/2/sys-print +encoding /man/2/ubfa +encoding /man/3/cons +encoding /man/5/stat +encoding /man/6/audio +encoding /man/6/dis +encoding /man/6/image +encoding /man/6/keytext +encoding /man/6/sexprs +encoding /man/6/ubfa +encoding /man/6/utf +encoding /man/8/httpd +encoding.m /man/2/encoding +encodings /man/1/charon +encodings /man/2/asn1 +encodings /man/2/encoding +encodings /man/2/sexprs +encodings /man/6/sexprs +encountering /man/10/9load +encountering /man/2/bufio +encountering /man/8/create +encounters /man/1/sh +encounters /man/2/sh +encourage /man/10/inb +encourage /man/2/dhcpclient +encout /man/3/tls +encrypt /man/1/bind +encrypt /man/1/crypt +encrypt /man/1/idea +encrypt /man/1/listen +encrypt /man/2/keyring-0intro +encrypt /man/2/keyring-auth +encrypt /man/2/keyring-crypt +encrypt /man/2/keyring-rc4 +encrypt /man/2/security-0intro +encrypt /man/2/security-auth +encrypt /man/3/ssl +encrypt /man/3/tls +encrypt /man/6/auth +encrypt /man/8/svc +encrypted /man/1/crypt +encrypted /man/1/idea +encrypted /man/2/keyring-crypt +encrypted /man/2/secstore +encrypted /man/2/security-0intro +encrypted /man/2/security-login +encrypted /man/3/ssl +encrypted /man/4/import +encrypted /man/4/keyfs +encrypted /man/6/keys +encrypted /man/6/login +encrypted /man/8/svc +encrypting /man/1/secstore +encrypting /man/2/security-0intro +encrypting /man/3/ssl +encrypting /man/3/tls +encryption /man/1/alphabet-main +encryption /man/1/bind +encryption /man/1/collab +encryption /man/1/cpu +encryption /man/1/crypt +encryption /man/1/idea +encryption /man/1/listen +encryption /man/1/rcmd +encryption /man/10/plan9.ini +encryption /man/2/factotum +encryption /man/2/keyring-certtostr +encryption /man/2/keyring-crypt +encryption /man/2/keyring-rc4 +encryption /man/2/secstore +encryption /man/2/security-0intro +encryption /man/2/security-auth +encryption /man/2/sys-export +encryption /man/3/ssl +encryption /man/3/tls +encryption /man/4/import +encryption /man/7/dbsrv +encryption /man/8/rstyxd +encryptor /man/2/keyring-crypt +encrypts /man/1/crypt +encrypts /man/1/idea +end0 /man/2/draw-image +end0 /man/3/draw +end0,end1,thick /man/2/draw-image +end1 /man/2/draw-image +end1 /man/3/draw +endarrow /man/2/draw-image +endcontrol /man/1/wm +enddisc /man/2/draw-image +ended /man/10/error +ended /man/2/wait +ended /man/3/pointer +endian /man/1/auplay +endian /man/1/charon +endian /man/1/mdb +endian /man/1/xd +endian /man/10/2c +endian /man/10/a.out +endian /man/2/keyring-ipint +endian /man/2/math-export +endian /man/2/palmfile +endian /man/2/sets +endian /man/3/audio +endian /man/3/cons +endian /man/3/dbg +endian /man/3/ip +endian /man/3/kprof +endian /man/3/vid +endian /man/4/kfs +endian /man/5/0intro +endian /man/5/stat +endian /man/6/audio +endian /man/6/colour +endian /man/6/image +endian /man/6/keytext +ending /man/1/alphabet-fs +ending /man/1/basename +ending /man/1/fs +ending /man/1/sh-string +ending /man/10/allocb +ending /man/10/srclist +ending /man/6/plumbing +ending /man/8/prep +ending /man/9/entry +ending /man/9/text +endings /man/3/draw +endorse /man/8/getauthinfo +endpoint /man/1/alphabet-abc +endpoint /man/1/alphabet-grid +endpoint /man/2/draw-image +endpoint /man/3/usb +endpoint /man/9/text +endpoints /man/3/usb +endpoints /man/9/canvas +endpoints /man/9/scale +ends /man/1/acme +ends /man/1/ns +ends /man/1/sh +ends /man/1/sh-std +ends /man/10/atoi +ends /man/10/plan9.ini +ends /man/2/arg +ends /man/2/draw-image +ends /man/2/prof +ends /man/2/sys-pipe +ends /man/2/sys-utfbytes +ends /man/3/cons +ends /man/3/draw +ends /man/3/flash +ends /man/3/pipe +ends /man/3/ssl +ends /man/8/prep +ends /man/9/canvas +ends /man/9/menu +ends /man/9/text +endsquare /man/2/draw-image +enforce /man/2/asn1 +enforce /man/2/security-0intro +enforce /man/3/logfs +enforced /man/1/mc +enforced /man/3/fs +enforced /man/3/sd +engine /man/1/spree-join +engine /man/2/spree +engine /man/2/spree-allow +engine /man/2/spree-cardlib +engine /man/2/spree-gather +engine /man/2/spree-objstore +engine /man/3/fpga +engine /man/3/vga +engine /man/4/spree +engine /man/8/fpgaload +engine's /man/2/spree-objstore +engine's /man/8/fpgaload +engineering /man/3/fpga +engineering /man/8/fpgaload +engines /man/2/spree +engines /man/2/spree-allow +engines /man/2/spree-cardlib +engines /man/2/spree-gather +engines /man/2/spree-objstore +engines /man/4/spree +england /man/1/cal +english /man/2/translate +enhance /man/2/security-0intro +enhancements /man/9/1copyright +enlarged /man/9/pack +enodev /man/10/styxserver +enomem /man/10/error +enomem /man/10/styxserver +enonexist /man/10/devattach +enonexist /man/10/styxserver +enotdir /man/10/devattach +enotdir /man/10/newchan +enotdir /man/2/styxservers +enotfound /man/2/styxservers +enquiries /man/10/odbc +enquiry /man/2/ubfa +ens /man/6/man +ensure /man/1/charon +ensure /man/1/ebook +ensure /man/10/allocb +ensure /man/10/print +ensure /man/10/qio +ensure /man/10ti925/epocimg +ensure /man/2/geodesy +ensure /man/2/security-0intro +ensure /man/2/sh +ensure /man/2/styxservers +ensure /man/2/styxservers-nametree +ensure /man/3/boot +ensure /man/8/rdbgsrv +ensure /man/9/listbox +ensure /man/9/see +ensures /man/10/allocb +ensures /man/10/devattach +ensures /man/10/odbc +ensures /man/2/secstore +ensures /man/2/security-0intro +ensures /man/3/cons +ensures /man/4/keysrv +ensuring /man/1/ftree +ensuring /man/1/zeros +ensuring /man/10/9load +ensuring /man/2/security-0intro +enter /man/1/charon +enter /man/1/collab-clients +enter /man/1/mash-tk +enter /man/1/pwd +enter /man/1/tkcmd +enter /man/1/tktester +enter /man/10/9load +enter /man/10/odbc +enter /man/2/ir +enter /man/2/security-0intro +enter /man/2/volume +enter /man/6/attrdb +enter /man/6/keyboard +enter /man/8/prep +enter /man/9/bind +enter /man/9/button +enter /man/9/canvas +enter /man/9/entry +enter /man/9/text +entered /man/1/acme +entered /man/1/session +entered /man/1/sh +entered /man/1/tkcmd +entered /man/10/9load +entered /man/6/keys +entered /man/8/changelogin +entered /man/8/getauthinfo +entering /man/1/acme +entering /man/10/kproc +entering /man/10/lock +entering /man/2/pop3 +entering /man/2/security-0intro +entering /man/4/factotum +entering /man/9/bind +enters /man/10/9load +enters /man/9/menu +entire /man/1/acme +entire /man/1/brutus +entire /man/1/charon +entire /man/1/look +entire /man/1/mash +entire /man/1/sh-regex +entire /man/1/sort +entire /man/1/units +entire /man/2/asn1 +entire /man/2/draw-0intro +entire /man/2/prefab-element +entire /man/2/security-0intro +entire /man/2/tkclient +entire /man/2/wmclient +entire /man/3/ftl +entire /man/3/ip +entire /man/3/kprof +entire /man/6/plumbing +entire /man/7/db +entire /man/8/mkfs +entire /man/8/prep +entire /man/9/0intro +entire /man/9/canvas +entire /man/9/checkbutton +entire /man/9/grid +entire /man/9/menu +entire /man/9/pack +entire /man/9/radiobutton +entire /man/9/see +entire /man/9/text +entirely /man/1/sh +entirely /man/1/sh-tk +entirely /man/2/string +entirely /man/4/memfs +entirely /man/9/entry +entirely /man/9/text +entirety /man/9/see +entities /man/10/2c +entities /man/3/ip +entitled /man/2/math-fp +entity /man/2/spki-verifier +entity /man/3/ip +entity /man/4/namespace +entrant /man/1/yacc +entrant /man/2/alphabet-intro +entries /man/1/0intro +entries /man/1/alphabet-fs +entries /man/1/calendar +entries /man/1/fs +entries /man/1/man +entries /man/1/sh-alphabet +entries /man/10/9load +entries /man/10/a.out +entries /man/10/dev +entries /man/10/devattach +entries /man/10/plan9.ini +entries /man/2/disks +entries /man/2/fsproto +entries /man/2/palmfile +entries /man/2/pop3 +entries /man/2/readdir +entries /man/2/spree-cardlib +entries /man/2/stringinttab +entries /man/2/styx +entries /man/2/styxservers +entries /man/2/sys-0intro +entries /man/2/sys-dirread +entries /man/2/sys-pipe +entries /man/3/draw +entries /man/3/fs +entries /man/4/ftpfs +entries /man/4/kfs +entries /man/4/registry +entries /man/5/read +entries /man/5/stat +entries /man/6/colour +entries /man/6/dis +entries /man/6/font +entries /man/6/keys +entries /man/6/sbl +entries /man/8/applylog +entries /man/8/bootpd +entries /man/8/changelogin +entries /man/8/collabsrv +entries /man/8/cs +entries /man/8/prep +entries /man/9/entry +entries /man/9/grab +entries /man/9/menu +entries /man/9/options +entry /man/1/0intro +entry /man/1/acme +entry /man/1/alphabet-fs +entry /man/1/alphabet-main +entry /man/1/charon +entry /man/1/collab-clients +entry /man/1/freq +entry /man/1/fs +entry /man/1/netstat +entry /man/1/session +entry /man/1/sh +entry /man/1/tkcmd +entry /man/1/tktester +entry /man/1/webgrab +entry /man/10/2l +entry /man/10/5coff +entry /man/10/5cv +entry /man/10/9load +entry /man/10/a.out +entry /man/10/dev +entry /man/10/devattach +entry /man/10/dynld +entry /man/10/ms2 +entry /man/10/plan9.ini +entry /man/10/styx +entry /man/10ti925/epocimg +entry /man/2/attrdb +entry /man/2/convcs +entry /man/2/dialog +entry /man/2/dis +entry /man/2/disks +entry /man/2/factotum +entry /man/2/math-linalg +entry /man/2/palmfile +entry /man/2/readdir +entry /man/2/registries +entry /man/2/spree-cardlib +entry /man/2/stringinttab +entry /man/2/styx +entry /man/2/styxservers +entry /man/2/sys-0intro +entry /man/2/sys-dirread +entry /man/2/sys-fauth +entry /man/2/tkclient +entry /man/2/venti +entry /man/2/wmclient +entry /man/3/draw +entry /man/3/ip +entry /man/3/srv9 +entry /man/4/keysrv +entry /man/4/registry +entry /man/5/0intro +entry /man/5/attach +entry /man/5/clunk +entry /man/5/open +entry /man/5/read +entry /man/5/remove +entry /man/5/stat +entry /man/5/version +entry /man/5/walk +entry /man/6/attrdb +entry /man/6/dis +entry /man/6/font +entry /man/6/keys +entry /man/6/ndb +entry /man/6/sbl +entry /man/8/applylog +entry /man/8/bootpd +entry /man/8/changelogin +entry /man/8/create +entry /man/8/cs +entry /man/8/getauthinfo +entry /man/8/prep +entry /man/9/0intro +entry /man/9/canvas +entry /man/9/entry +entry /man/9/grab +entry /man/9/listbox +entry /man/9/menu +entry /man/9/menubutton +entry /man/9/options +entry /man/9/text +entry /man/9/types +entry's /man/1/alphabet-fs +entry's /man/1/fs +entry's /man/6/keys +entry's /man/9/entry +entry's /man/9/menu +entry.attrs /man/2/palmfile +entrybox /man/1/tktester +entrycget /man/9/menu +entryconfigure /man/9/menu +entryt /man/2/dis +enumcs /man/2/convcs +enumerate /man/3/pnp +enumerate /man/6/proto +enumerated /man/10/styx +enumerated /man/2/asn1 +enumerated /man/3/pnp +enumerates /man/3/pnp +enumeration /man/2/ubfa +enumeration /man/3/pnp +env /man/1/0intro +env /man/1/env +env /man/1/mash +env /man/1/mash-tk +env /man/1/sh +env /man/1/sh-std +env /man/10/error +env /man/10/newchan +env /man/2/env +env /man/2/itslib +env /man/2/prefab-compound +env /man/2/prefab-element +env /man/2/sys-pctl +env /man/3/env +env /man/3/root +env /man/3/srv9 +env /man/4/9srvfs +env /man/4/namespace +env /man/6/proto +env /man/8/init +env.b /man/1/env +env.b /man/2/env +env.defbuiltin /man/1/mash +env.m /man/2/env +env:ref /man/2/prefab-element +enveloping /man/5/version +environ /man/2/prefab-0intro +environ /man/2/prefab-compound +environ /man/2/prefab-element +environ /man/2/prefab-environ +environ /man/2/prefab-style +environ:ref /man/2/prefab-element +environent /man/1/alphabet-fs +environent /man/1/fs +environment /man/1/0intro +environment /man/1/9win +environment /man/1/acme +environment /man/1/alphabet-fs +environment /man/1/diff +environment /man/1/emu +environment /man/1/env +environment /man/1/fs +environment /man/1/logon +environment /man/1/mash-tk +environment /man/1/mk +environment /man/1/mux +environment /man/1/sendmail +environment /man/1/sh +environment /man/1/sh-arg +environment /man/1/sh-file2chan +environment /man/1/sh-std +environment /man/1/stack +environment /man/1/yacc +environment /man/10/0intro +environment /man/10/2c +environment /man/10/conf +environment /man/10/dev +environment /man/10/kproc +environment /man/10/mk +environment /man/10/plan9.ini +environment /man/10/sleep +environment /man/2/command +environment /man/2/draw-context +environment /man/2/env +environment /man/2/itslib +environment /man/2/keyring-0intro +environment /man/2/math-0intro +environment /man/2/plumbmsg +environment /man/2/prefab-element +environment /man/2/prefab-environ +environment /man/2/sh +environment /man/2/styxservers +environment /man/2/sys-chdir +environment /man/2/sys-pctl +environment /man/3/cons +environment /man/3/env +environment /man/3/fpga +environment /man/3/pointer +environment /man/3/root +environment /man/3/srv9 +environment /man/4/9srvfs +environment /man/4/acme +environment /man/4/import +environment /man/4/namespace +environment /man/6/dis +environment /man/6/keyboard +environment /man/6/namespace +environment /man/6/proto +environment /man/6/utf +environment /man/8/create +environment /man/8/init +environment /man/8/plumber +environment /man/8/touchcal +environment /man/9/canvas +environment's /man/10/print +environments /man/8/0intro +envlist /man/2/sh +envoi /man/1/miniterm +eo /man/1/itest +eoc /man/2/asn1 +eof /man/2/bufio +eof /man/2/ir +eof /man/4/spree +eoff /man/2/dis +eol /man/2/regex +eopen /man/2/styxservers +eor /man/1/read +ep /man/10/5cv +ep /man/2/keyring-crypt +ep72xx /man/10/5cv +epb /man/3/pbus +eperm /man/10/dev +eperm /man/10/devattach +eperm /man/10/styxserver +eperm /man/2/styxservers +ephemeral /man/2/wmsrv +epilogue /man/10/c2l +epoc /man/10/5cv +epoc /man/10ti925/epocimg +epoch /man/1/date +epoch /man/1/du +epoch /man/1/gettar +epoch /man/1/ls +epoch /man/1/timestamp +epoch /man/10/seconds +epoch /man/2/daytime +epoch /man/2/palmfile +epoch /man/2/sys-millisec +epoch /man/2/sys-stat +epoch /man/3/cons +epoch /man/3/rtc +epoch /man/4/keyfs +epoch /man/5/stat +epoch /man/6/keytext +epoch /man/8/applylog +epoch /man/8/createsignerkey +epoch2date /man/2/spki +epocimg /man/10ti925/epocimg +eponymous /man/1/secstore +eponymously /man/2/alphabet-intro +eq /man/1/sh-expr +eq /man/2/bloomfilter +eq /man/2/draw-display +eq /man/2/draw-point +eq /man/2/draw-rect +eq /man/2/ip +eq /man/2/keyring-ipint +eq /man/2/sets +eq /man/2/sexprs +eq /man/2/spki +eq /man/2/ubfa +eq /man/2/venti +eq /man/6/man +eqaddr /man/2/ether +eqchan /man/10/newchan +eqn /man/6/man +eqqid /man/10/newchan +equal /man/1/diff +equal /man/1/look +equal /man/1/sh-expr +equal /man/1/sh-test +equal /man/1/sort +equal /man/10/2c +equal /man/10/dynld +equal /man/10/memory +equal /man/10/newchan +equal /man/10/strcat +equal /man/10/styx +equal /man/2/draw-0intro +equal /man/2/draw-image +equal /man/2/draw-point +equal /man/2/draw-rect +equal /man/2/itslib +equal /man/2/keyring-ipint +equal /man/2/math-fp +equal /man/2/prefab-element +equal /man/2/sexprs +equal /man/2/spki +equal /man/2/stringinttab +equal /man/2/styxservers-nametree +equal /man/2/sys-pctl +equal /man/2/ubfa +equal /man/3/dbg +equal /man/3/ssl +equal /man/5/read +equal /man/5/version +equal /man/5/walk +equal /man/6/sexprs +equal /man/9/canvas +equal /man/9/entry +equal /man/9/frame +equal /man/9/text +equality /man/1/mash +equality /man/1/mathcalc +equality /man/1/sh-expr +equality /man/10/2c +equalize /man/6/man +equally /man/1/diff +equally /man/8/httpd +equally /man/9/grid +equals /man/2/asn1 +equals /man/2/draw-image +equation /man/6/man +equations /man/1/mc +equations /man/6/man +equipment /man/10/plan9.ini +equivalence /man/1/mc +equivalence /man/10/c2l +equivalent /man/1/acme +equivalent /man/1/alphabet-fs +equivalent /man/1/charon +equivalent /man/1/chgrp +equivalent /man/1/cp +equivalent /man/1/fs +equivalent /man/1/mash +equivalent /man/1/sh +equivalent /man/1/sh-alphabet +equivalent /man/1/sh-regex +equivalent /man/1/sh-std +equivalent /man/1/sh-string +equivalent /man/1/tail +equivalent /man/1/tiny +equivalent /man/10/devattach +equivalent /man/10/kproc +equivalent /man/10/malloc +equivalent /man/10/memory +equivalent /man/10/odbc +equivalent /man/10/styx +equivalent /man/2/0intro +equivalent /man/2/draw-image +equivalent /man/2/format +equivalent /man/2/geodesy +equivalent /man/2/ir +equivalent /man/2/keyring-rc4 +equivalent /man/2/math-export +equivalent /man/2/secstore +equivalent /man/2/sexprs +equivalent /man/2/sys-dirread +equivalent /man/2/sys-read +equivalent /man/2/wmsrv +equivalent /man/3/cmd +equivalent /man/3/draw +equivalent /man/3/ftl +equivalent /man/3/snarf +equivalent /man/4/acme +equivalent /man/4/import +equivalent /man/5/walk +equivalent /man/6/namespace +equivalent /man/8/kfscmd +equivalent /man/8/signer +equivalent /man/8/styxchat +equivalent /man/9/canvas +equivalent /man/9/entry +equivalent /man/9/menu +equivalent /man/9/panel +equivalently /man/3/logfs +equivalents /man/1/units +equivalents /man/2/ir +equivalents /man/2/wmsrv +equivalents /man/3/0intro +equivelant /man/1/fc +era /man/1/cal +erase /man/3/cons +erase /man/3/flash +erase /man/3/ftl +erase /man/4/logfile +erase /man/6/keyboard +erase /man/8/ftl +erased /man/1/avr +erased /man/3/flash +erased /man/3/ftl +erasekey /man/2/secstore +erases /man/1/avr +erases /man/3/cons +erasesize /man/3/ftl +erasexx /man/3/flash +erasing /man/1/avr +erasing /man/1/collab-clients +erasing /man/3/cons +erasing /man/3/flash +erf /man/1/mc +erf /man/2/math-elem +erfc /man/2/math-elem +erlang /man/2/ubfa +erlang /man/6/ubfa +err /man/1/sh-test +err /man/1/yacc +err /man/10/dynld +err /man/2/asn1 +err /man/2/attrdb +err /man/2/debug +err /man/2/dhcpclient +err /man/2/format +err /man/2/ida +err /man/2/keyset +err /man/2/palmfile +err /man/2/registries +err /man/2/security-auth +err /man/2/sexprs +err /man/2/spki-verifier +err /man/2/spree-allow +err /man/2/styxpersist +err /man/2/styxservers +err /man/2/ubfa +err /man/2/w3c-css +err /man/2/w3c-xpointers +err /man/2/wmlib +err /man/2/xml +err /man/3/ip +err1 /man/2/asn1 +err2 /man/2/asn1 +errdiff /man/2/imagefile +errin /man/2/ip +errmax /man/10/error +errmax /man/2/keyring-getstring +errmax /man/5/error +errmsg /man/1/sh-file2chan +errmsg /man/7/db +erroneous /man/10/mk +erroneous /man/2/styxservers +erroneous /man/3/draw +erroneously /man/1/mk +erroneously /man/1/wc +erroneously /man/10/mk +error /man/1/0intro +error /man/1/acme +error /man/1/charon +error /man/1/dd +error /man/1/diff +error /man/1/fc +error /man/1/ftest +error /man/1/gettar +error /man/1/grep +error /man/1/grid-monitor +error /man/1/itest +error /man/1/listen +error /man/1/mash +error /man/1/mash-tk +error /man/1/mathcalc +error /man/1/miniterm +error /man/1/mk +error /man/1/mkdir +error /man/1/os +error /man/1/read +error /man/1/sh +error /man/1/sh-alphabet +error /man/1/sh-arg +error /man/1/sh-file2chan +error /man/1/sh-sexprs +error /man/1/sh-std +error /man/1/sh-test +error /man/1/time +error /man/1/tiny +error /man/1/tktester +error /man/1/tsort +error /man/1/wm-misc +error /man/1/yacc +error /man/10/5cv +error /man/10/9load +error /man/10/allocb +error /man/10/c2l +error /man/10/dev +error /man/10/devattach +error /man/10/dynld +error /man/10/error +error /man/10/kproc +error /man/10/mk +error /man/10/newchan +error /man/10/odbc +error /man/10/plan9.ini +error /man/10/print +error /man/10/qio +error /man/10/sleep +error /man/10/styxserver +error /man/2/0intro +error /man/2/alphabet-intro +error /man/2/arg +error /man/2/asn1 +error /man/2/attrdb +error /man/2/bloomfilter +error /man/2/bufio +error /man/2/cfg +error /man/2/convcs +error /man/2/dbm +error /man/2/debug +error /man/2/dhcpclient +error /man/2/dis +error /man/2/diskblocks +error /man/2/draw-0intro +error /man/2/draw-image +error /man/2/ether +error /man/2/factotum +error /man/2/filter +error /man/2/format +error /man/2/fsproto +error /man/2/ida +error /man/2/imagefile +error /man/2/ip +error /man/2/ir +error /man/2/itslib +error /man/2/keyring-auth +error /man/2/keyring-getmsg +error /man/2/keyring-getstring +error /man/2/keyring-ipint +error /man/2/keyset +error /man/2/math-elem +error /man/2/mpeg +error /man/2/palmfile +error /man/2/pop3 +error /man/2/prof +error /man/2/readdir +error /man/2/registries +error /man/2/scsiio +error /man/2/secstore +error /man/2/security-auth +error /man/2/security-login +error /man/2/security-ssl +error /man/2/sexprs +error /man/2/sh +error /man/2/smtp +error /man/2/spree +error /man/2/spree-gather +error /man/2/styx +error /man/2/styxpersist +error /man/2/styxservers +error /man/2/styxservers-nametree +error /man/2/sys-0intro +error /man/2/sys-byte2char +error /man/2/sys-dial +error /man/2/sys-dirread +error /man/2/sys-export +error /man/2/sys-fauth +error /man/2/sys-fd2path +error /man/2/sys-file2chan +error /man/2/sys-fversion +error /man/2/sys-iounit +error /man/2/sys-open +error /man/2/sys-print +error /man/2/sys-read +error /man/2/sys-utfbytes +error /man/2/sys-werrstr +error /man/2/tftp +error /man/2/translate +error /man/2/ubfa +error /man/2/venti +error /man/2/w3c-css +error /man/2/w3c-xpointers +error /man/2/wait +error /man/2/wmsrv +error /man/2/xml +error /man/3/0intro +error /man/3/boot +error /man/3/cap +error /man/3/cmd +error /man/3/dbg +error /man/3/draw +error /man/3/flash +error /man/3/fpga +error /man/3/ftl +error /man/3/indir +error /man/3/ip +error /man/3/mnt +error /man/3/mpeg +error /man/3/pipe +error /man/3/prog +error /man/3/sign +error /man/3/tls +error /man/3/touch +error /man/3/usb +error /man/4/dossrv +error /man/4/factotum +error /man/4/iostats +error /man/4/keyfs +error /man/4/keysrv +error /man/4/registry +error /man/4/spree +error /man/5/0intro +error /man/5/attach +error /man/5/clunk +error /man/5/error +error /man/5/open +error /man/5/read +error /man/5/stat +error /man/6/dis +error /man/6/image +error /man/6/login +error /man/7/db +error /man/8/applylog +error /man/8/collabsrv +error /man/8/create +error /man/8/cs +error /man/8/dhcp +error /man/8/ping +error /man/8/plumber +error /man/8/rdbgsrv +error /man/8/srv +error /man/8/styxmon +error /man/9/0intro +error /man/9/canvas +error /man/9/choicebutton +error /man/9/destroy +error /man/9/entry +error /man/9/grid +error /man/9/image +error /man/9/menu +error /man/9/text +error /man/9/variable +error.h /man/10/0intro +error.h /man/10/error +errorc /man/2/alphabet-intro +errored /man/3/tls +errorexit /man/2/sh +errors /man/1/acme +errors /man/1/charon +errors /man/1/limbo +errors /man/1/mk +errors /man/1/sh-test +errors /man/1/tktester +errors /man/1/yacc +errors /man/10/mk +errors /man/2/0intro +errors /man/2/asn1 +errors /man/2/bufio +errors /man/2/cfg +errors /man/2/convcs +errors /man/2/dbm +errors /man/2/draw-0intro +errors /man/2/geodesy +errors /man/2/ip +errors /man/2/itslib +errors /man/2/mpeg +errors /man/2/prefab-style +errors /man/2/security-ssl +errors /man/2/styx +errors /man/2/translate +errors /man/2/w3c-css +errors /man/2/xml +errors /man/3/draw +errors /man/3/ip +errors /man/3/mnt +errors /man/3/usb +errors /man/4/acme +errors /man/6/namespace +errors /man/8/create +errors /man/8/kfscmd +errout /man/2/ip +errstr /man/1/grid-monitor +errstr /man/10/dynld +errstr /man/10/print +es /man/1/kill +es /man/2/dhcpclient +es /man/2/names +es /man/8/cs +es /man/9/menu +esc /man/1/acme +esc /man/1/wm-sh +escape /man/1/xd +escape /man/10/acid +escape /man/2/filter-slip +escape /man/2/sexprs +escape /man/6/keyboard +escape /man/6/sexprs +escape /man/6/translate +escape /man/9/0intro +escaped /man/1/mash +escaped /man/1/mdb +escaped /man/2/tk +escaped /man/9/0intro +escaped /man/9/bind +escapes /man/10/atoi +escapes /man/6/sexprs +escaping /man/1/mash +eschews /man/6/keyboard +eseparator /man/2/prefab-element +esp /man/3/ip +especially /man/1/charon +especially /man/1/tktester +especially /man/2/keyring-crypt +especially /man/2/security-0intro +especially /man/2/smtp +ess1688 /man/10/plan9.ini +essential /man/10/devattach +essential /man/2/palmfile +essential /man/8/signer +essentially /man/2/encoding +essid /man/10/plan9.ini +establish /man/2/disks +establish /man/2/security-0intro +establish /man/2/security-login +establish /man/2/sys-dial +establish /man/2/sys-pctl +establish /man/2/wmsrv +establish /man/3/ip +establish /man/3/plap +establish /man/5/attach +establish /man/6/login +establish /man/8/create +establish /man/8/logind +establish /man/8/mkfs +establish /man/8/signer +established /man/10/dev +established /man/10/odbc +established /man/2/keyring-0intro +established /man/2/security-0intro +established /man/2/security-auth +established /man/2/security-login +established /man/2/venti +established /man/3/ip +established /man/3/plap +established /man/3/tls +established /man/4/kfs +established /man/5/0intro +established /man/5/attach +established /man/8/rstyxd +establishes /man/2/draw-context +establishes /man/2/draw-example +establishes /man/2/ir +establishes /man/2/keyring-0intro +establishes /man/2/plumbmsg +establishes /man/2/secstore +establishes /man/2/security-auth +establishes /man/2/sys-dial +establishes /man/2/tkclient +establishes /man/2/wmclient +establishes /man/7/db +establishing /man/2/security-0intro +establishing /man/5/0intro +establishing /man/5/stat +et /man/10/ar +et4000 /man/3/vga +etab /man/2/dis +etc /man/1/acme +etc /man/1/blur +etc /man/1/limbo +etc /man/1/sh-alphabet +etc /man/1/spree-join +etc /man/1/tktester +etc /man/1/units +etc /man/1/webgrab +etc /man/10/2a +etc /man/10/2c +etc /man/10/2l +etc /man/10/dev +etc /man/10/iar +etc /man/10/print +etc /man/10/styx +etc /man/10/styxserver +etc /man/10ti925/epocimg +etc /man/10ti925/tihost +etc /man/2/0intro +etc /man/2/bufio +etc /man/2/debug +etc /man/2/draw-0intro +etc /man/2/draw-image +etc /man/2/ir +etc /man/2/math-elem +etc /man/2/prefab-element +etc /man/2/spree +etc /man/2/styx +etc /man/2/styxservers +etc /man/2/ubfa +etc /man/2/w3c-css +etc /man/2/w3c-xpointers +etc /man/3/ftl +etc /man/3/logfs +etc /man/3/sd +etc /man/4/acme +etc /man/5/0intro +etc /man/5/stat +etc /man/6/plumbing +etc /man/8/prep +etc /man/9/types +etext /man/10/2l +etext /man/2/prefab-element +ether /man/10/0intro +ether /man/10/9load +ether /man/10/plan9.ini +ether /man/2/ether +ether /man/2/ip +ether /man/3/ether +ether /man/3/indir +ether /man/3/ip +ether /man/6/ndb +ether /man/8/bootpd +ether /man/8/dhcp +ether /man/8/init +ether.b /man/2/ether +ether.m /man/2/ether +ether0 /man/10/plan9.ini +ether0 /man/2/ether +ether0 /man/3/ip +ether0 /man/8/dhcp +etherexpress /man/10/plan9.ini +etherez /man/10/plan9.ini +etherfast /man/10/plan9.ini +etherlink /man/10/plan9.ini +ethern /man/10/9load +ethern /man/2/ether +ethernet /man/10/9load +ethernet /man/10/plan9.ini +ethernet /man/2/ether +ethernet /man/3/ether +ethernet /man/3/i82365 +ethernet /man/3/ip +ethernet /man/6/ndb +ethernet /man/8/bootpd +ethernetcard /man/10/plan9.ini +ethernets /man/10/plan9.ini +etherpair /man/10/plan9.ini +ethersmc /man/10/conf +ethersmc.c /man/10/conf +ethersmclink /man/10/conf +etherx /man/10/plan9.ini +etherxx /man/10/conf +etime /man/2/itslib +etitle /man/2/prefab-element +etrs89 /man/2/geodesy +etype /man/2/venti +euro.8.font /man/1/acme +european /man/2/geodesy +eval /man/1/fs +eval /man/1/mash +evaluate /man/1/alphabet-fs +evaluate /man/1/fs +evaluate /man/1/mash +evaluate /man/1/sh-alphabet +evaluate /man/5/walk +evaluated /man/1/acme +evaluated /man/1/alphabet-fs +evaluated /man/1/fs +evaluated /man/1/mash +evaluated /man/1/mc +evaluated /man/1/sh-alphabet +evaluated /man/1/sh-expr +evaluated /man/1/sh-std +evaluated /man/2/math-0intro +evaluated /man/2/sys-0intro +evaluated /man/2/sys-bind +evaluated /man/2/sys-open +evaluated /man/4/acme +evaluated /man/9/0intro +evaluated /man/9/bind +evaluated /man/9/menu +evaluates /man/1/acme +evaluates /man/1/fs +evaluates /man/1/mash +evaluates /man/1/mathcalc +evaluates /man/1/sh-alphabet +evaluates /man/1/sh-expr +evaluates /man/1/sh-std +evaluates /man/10/sleep +evaluates /man/3/dbg +evaluates /man/5/attach +evaluates /man/8/prep +evaluating /man/1/fs +evaluating /man/1/mash +evaluating /man/1/mk +evaluating /man/10/mk +evaluating /man/2/sys-0intro +evaluating /man/2/sys-bind +evaluating /man/2/sys-chdir +evaluating /man/8/prep +evaluating /man/9/scrollbar +evaluation /man/1/bind +evaluation /man/1/sh-alphabet +evaluation /man/2/debug +evaluation /man/2/math-0intro +evaluation /man/2/sys-0intro +evaluation /man/2/sys-bind +evaluation /man/3/dbg +evaluator /man/2/w3c-xpointers +eve /man/10/devattach +eve /man/10/eve +eve /man/3/boot +eve /man/3/cap +eve /man/3/cons +eve /man/3/dynld +eve /man/3/sign +evenly /man/2/spree-cardlib +event /man/1/charon +event /man/1/sh-tk +event /man/1/timestamp +event /man/1/wm +event /man/10/intrenable +event /man/10/sleep +event /man/2/dbm +event /man/2/debug +event /man/2/dividers +event /man/2/popup +event /man/2/sys-read +event /man/2/tabs +event /man/2/tkclient +event /man/2/venti +event /man/2/wmclient +event /man/3/ip +event /man/4/acme +event /man/6/dis +event /man/9/1copyright +event /man/9/bind +event /man/9/canvas +event /man/9/destroy +event /man/9/frame +event /man/9/label +event /man/9/panel +event /man/9/text +events /man/1/cpu +events /man/1/emu +events /man/1/sh-tk +events /man/1/timestamp +events /man/1/wm +events /man/10/error +events /man/2/dividers +events /man/2/draw-context +events /man/2/draw-display +events /man/2/draw-pointer +events /man/2/popup +events /man/2/spree +events /man/2/tk +events /man/2/tkclient +events /man/2/wmclient +events /man/2/wmlib +events /man/3/dbg +events /man/3/touch +events /man/5/0intro +events /man/8/plumber +events /man/9/bind +events /man/9/canvas +events /man/9/focus +events /man/9/grab +events /man/9/scale +events /man/9/text +eventually /man/10/0intro +eventually /man/2/palmfile +evertical /man/2/prefab-element +everybody /man/1/sh +everyone /man/3/fs +everyone /man/4/memfs +everyone /man/5/0intro +everything /man/1/alphabet-abc +everything /man/1/alphabet-grid +everything /man/1/bind +everything /man/1/mk +everything /man/1/secstore +everything /man/1/sh-alphabet +everything /man/10/mk +everything /man/2/spki-verifier +everything /man/2/sys-bind +everything /man/6/namespace +everything /man/9/canvas +everything /man/9/listbox +everywhere /man/3/ftl +evidence /man/2/spki-verifier +ew /man/2/dividers +ex /man/6/man +exact /man/1/0intro +exact /man/1/look +exact /man/1/sh-std +exact /man/1/wm +exact /man/2/asn1 +exact /man/2/tkclient +exact /man/2/wmclient +exact /man/6/plumbing +exact /man/9/button +exact /man/9/canvas +exact /man/9/checkbutton +exact /man/9/choicebutton +exact /man/9/entry +exact /man/9/frame +exact /man/9/label +exact /man/9/listbox +exact /man/9/menu +exact /man/9/menubutton +exact /man/9/options +exact /man/9/panel +exact /man/9/radiobutton +exact /man/9/scale +exact /man/9/scrollbar +exact /man/9/text +exactly /man/1/alphabet-fs +exactly /man/1/brutus +exactly /man/1/fc +exactly /man/1/fs +exactly /man/1/grid-query +exactly /man/1/idea +exactly /man/1/look +exactly /man/1/mk +exactly /man/1/sh-alphabet +exactly /man/1/sh-std +exactly /man/1/sh-string +exactly /man/1/wm +exactly /man/1/wm-misc +exactly /man/10/getfields +exactly /man/10/mk +exactly /man/10/rune +exactly /man/10/strcat +exactly /man/10/styx +exactly /man/2/asn1 +exactly /man/2/devpointer +exactly /man/2/disks +exactly /man/2/filter-deflate +exactly /man/2/sh +exactly /man/2/spki +exactly /man/2/styx +exactly /man/3/cmd +exactly /man/3/tls +exactly /man/3/vid +exactly /man/4/acme +exactly /man/4/factotum +exactly /man/5/read +exactly /man/5/stat +exactly /man/6/dis +exactly /man/6/keyboard +exactly /man/6/ubfa +exactly /man/8/ftl +exactly /man/8/getauthinfo +exactly /man/9/bind +exactly /man/9/grab +exactly /man/9/grid +exactly /man/9/options +exactly /man/9/pack +exactly /man/9/scrollbar +exactly /man/9/text +examination /man/1/charon +examine /man/1/mash-make +examine /man/1/stack +examine /man/10/plan9.ini +examine /man/2/sys-byte2char +examine /man/2/xml +examine /man/3/prog +examine /man/4/acme +examined /man/1/acme +examined /man/2/fsproto +examined /man/5/0intro +examined /man/6/plumbing +examined /man/8/applylog +examined /man/9/0intro +examined /man/9/grid +examines /man/10/allocb +examines /man/10/strcat +examines /man/2/sys-utfbytes +examining /man/10/2c +examining /man/10/acid +examining /man/10/error +exc /man/2/exception +exc /man/6/dis +excecuted /man/9/0intro +exceed /man/2/dbm +exceed /man/2/diskblocks +exceed /man/8/prep +exceeded /man/1/charon +exceeded /man/10/qio +exceeded /man/3/ip +exceeds /man/1/charon +exceeds /man/10/dmainit +exceeds /man/10/qio +exceeds /man/10ti925/tihost +exceeds /man/2/diskblocks +exceeds /man/2/sys-byte2char +exceeds /man/2/sys-utfbytes +exceeds /man/3/mpeg +except /man/1/acme +except /man/1/alphabet-fs +except /man/1/cp +except /man/1/diff +except /man/1/fs +except /man/1/ftree +except /man/1/listen +except /man/1/mash +except /man/1/mk +except /man/1/sh +except /man/1/sh-file2chan +except /man/1/sh-regex +except /man/1/sh-std +except /man/1/sh-tk +except /man/1/tiny +except /man/1/tktester +except /man/1/units +except /man/1/wm-sh +except /man/1/xd +except /man/10/2c +except /man/10/acid +except /man/10/allocb +except /man/10/ar +except /man/10/devattach +except /man/10/getfields +except /man/10/iar +except /man/10/malloc +except /man/10/mk +except /man/10/print +except /man/10/sleep +except /man/10/styx +except /man/10/styxserver +except /man/2/arg +except /man/2/asn1 +except /man/2/dbm +except /man/2/debug +except /man/2/dis +except /man/2/draw-image +except /man/2/encoding +except /man/2/exception +except /man/2/ip +except /man/2/keyring-getmsg +except /man/2/math-0intro +except /man/2/math-linalg +except /man/2/prefab-0intro +except /man/2/prefab-style +except /man/2/readdir +except /man/2/sets +except /man/2/sh +except /man/2/spree +except /man/2/spree-cardlib +except /man/2/string +except /man/2/styx +except /man/2/styxservers +except /man/2/sys-bind +except /man/2/sys-dial +except /man/2/sys-pctl +except /man/2/sys-print +except /man/2/sys-stat +except /man/2/wmsrv +except /man/3/cmd +except /man/3/flash +except /man/3/ip +except /man/3/prog +except /man/3/usb +except /man/4/acme +except /man/4/keyfs +except /man/4/kfs +except /man/5/0intro +except /man/5/stat +except /man/6/man +except /man/6/proto +except /man/6/utf +except /man/8/applylog +except /man/8/create +except /man/8/styxchat +except /man/8/svc +except /man/9/bind +except /man/9/canvas +except /man/9/frame +except /man/9/grab +except /man/9/menu +except /man/9/options +except /man/9/pack +except /man/9/text +exception /man/1/0intro +exception /man/1/acme +exception /man/1/kill +exception /man/1/mash +exception /man/1/sh +exception /man/1/sh-arg +exception /man/1/sh-expr +exception /man/1/sh-std +exception /man/1/sh-string +exception /man/1/sh-tk +exception /man/10/error +exception /man/10/styx +exception /man/2/0intro +exception /man/2/alphabet-intro +exception /man/2/arg +exception /man/2/command +exception /man/2/dis +exception /man/2/exception +exception /man/2/math-0intro +exception /man/2/math-fp +exception /man/2/sh +exception /man/2/sys-pipe +exception /man/2/xml +exception /man/3/pipe +exception /man/3/prog +exception /man/5/0intro +exception /man/6/dis +exception /man/9/text +exception.b /man/2/exception +exception.m /man/2/exception +exceptional /man/5/flush +exceptionally /man/10/devattach +exceptionally /man/2/factotum +exceptionally /man/2/keyring-crypt +exceptionally /man/3/dbg +exceptions /man/1/math-misc +exceptions /man/1/sh +exceptions /man/1/sh-csv +exceptions /man/1/sh-sexprs +exceptions /man/1/sh-std +exceptions /man/1/tiny +exceptions /man/10/plan9.ini +exceptions /man/10/xalloc +exceptions /man/2/0intro +exceptions /man/2/dis +exceptions /man/2/draw-image +exceptions /man/2/exception +exceptions /man/2/math-0intro +exceptions /man/2/math-fp +exceptions /man/2/sh +exceptions /man/2/spree-allow +exceptions /man/2/styx +exceptions /man/2/styxservers +exceptions /man/2/sys-0intro +exceptions /man/3/prog +exceptions /man/6/dis +exceptions /man/9/canvas +excess /man/1/sh-file2chan +excess /man/10/print +excess /man/10/qio +excessive /man/1/deb +excessive /man/4/kfs +exchange /man/1/alphabet-abc +exchange /man/1/alphabet-grid +exchange /man/1/sh-csv +exchange /man/10/styx +exchange /man/2/draw-context +exchange /man/2/factotum +exchange /man/2/imagefile +exchange /man/2/keyring-0intro +exchange /man/2/keyring-getstring +exchange /man/2/registries +exchange /man/2/security-0intro +exchange /man/2/security-login +exchange /man/2/security-ssl +exchange /man/2/styx +exchange /man/2/wait +exchange /man/3/audio +exchange /man/3/dbg +exchange /man/3/i2c +exchange /man/3/tls +exchange /man/4/import +exchange /man/5/0intro +exchange /man/6/login +exchange /man/6/sexprs +exchange /man/6/ubfa +exchange /man/8/collabsrv +exchange /man/8/logind +exchange /man/8/styxchat +exchanged /man/2/keyring-getmsg +exchanged /man/2/plumbmsg +exchanged /man/2/security-0intro +exchanged /man/3/plap +exchanged /man/7/dbsrv +exchanged /man/8/rstyxd +exchanger /man/6/ndb +exchanger /man/8/dns +exchanges /man/8/styxchat +exchanging /man/1/diff +exchanging /man/2/keyring-0intro +exchanging /man/2/security-0intro +exchanging /man/2/sexprs +exchanging /man/5/0intro +exchanging /man/6/sexprs +exclamation /man/1/bind +exclamation /man/2/draw-context +exclamation /man/2/keyring-getmsg +exclamation /man/2/wmsrv +exclamation /man/3/indir +exclamation /man/4/factotum +exclamation /man/9/0intro +exclude /man/1/alphabet-fs +exclude /man/1/fs +exclude /man/10/lock +exclude /man/10/plan9.ini +exclude /man/8/applylog +excluded /man/1/alphabet-fs +excluded /man/1/fs +excluded /man/5/0intro +excludes /man/1/cp +excludes /man/10/2c +excludes /man/10/lock +excludes /man/2/secstore +excludes /man/5/version +excluding /man/1/webgrab +excluding /man/2/asn1 +excluding /man/2/wmclient +excluding /man/6/proto +excluding /man/6/users +exclusion /man/10/qlock +exclusion /man/2/lock +exclusive /man/1/chmod +exclusive /man/1/ls +exclusive /man/1/mathcalc +exclusive /man/10/ar +exclusive /man/10/dev +exclusive /man/10/qlock +exclusive /man/2/lock +exclusive /man/2/spree-cardlib +exclusive /man/2/sys-export +exclusive /man/2/sys-open +exclusive /man/2/sys-stat +exclusive /man/3/audio +exclusive /man/3/mpeg +exclusive /man/3/srv +exclusive /man/4/factotum +exclusive /man/4/lockfs +exclusive /man/5/0intro +exclusive /man/5/open +exclusive /man/5/stat +exclusive /man/6/proto +exclusive /man/8/collabsrv +exclusive /man/8/kfscmd +exclusive /man/9/grab +exclusively /man/10/qio +exclusively /man/3/dbg +exclusively /man/9/0intro +excruciatingly /man/10ti925/tihost +exe /man/10/conf +exec /man/1/alphabet-fs +exec /man/1/fs +exec /man/10/a.out +exec /man/2/sh +exec /man/3/cmd +exec /man/3/ip +execprint /man/2/sh +executable /man/1/deb +executable /man/1/ftest +executable /man/1/sh +executable /man/1/sh-file2chan +executable /man/1/tiny +executable /man/10/2l +executable /man/10/5coff +executable /man/10/5cv +executable /man/10/9load +executable /man/10/a.out +executable /man/10/acid +executable /man/10/conf +executable /man/10/dynld +executable /man/10/inm +executable /man/10/kprof +executable /man/10/ksize +executable /man/10/kstrip +executable /man/10/ms2 +executable /man/10/srclist +executable /man/10ti925/epocimg +executable /man/10ti925/tihost +executable /man/3/cmd +executable /man/3/root +executable /man/6/dis +executable /man/6/sbl +executable /man/7/dbsrv +executable's /man/10/5cv +executables /man/10/5cv +executables /man/10/ntsrv +executables /man/4/namespace +execute /man/1/0intro +execute /man/1/acme +execute /man/1/alphabet-abc +execute /man/1/alphabet-grid +execute /man/1/chmod +execute /man/1/cpu +execute /man/1/emu +execute /man/1/fc +execute /man/1/ftest +execute /man/1/grid-ns +execute /man/1/ls +execute /man/1/mash +execute /man/1/mash-tk +execute /man/1/mdb +execute /man/1/mk +execute /man/1/os +execute /man/1/sh +execute /man/1/tiny +execute /man/10/acid +execute /man/10/devattach +execute /man/10/mk +execute /man/10/styxserver +execute /man/2/draw-0intro +execute /man/2/regex +execute /man/2/scsiio +execute /man/2/sys-fauth +execute /man/2/sys-self +execute /man/2/sys-stat +execute /man/3/cmd +execute /man/3/fs +execute /man/3/prog +execute /man/3/sd +execute /man/4/cpu +execute /man/4/memfs +execute /man/5/0intro +execute /man/5/attach +execute /man/5/open +execute /man/6/dis +execute /man/9/0intro +execute /man/9/canvas +execute /man/9/menu +executed /man/1/acme +executed /man/1/alphabet-fs +executed /man/1/cprof +executed /man/1/deb +executed /man/1/fs +executed /man/1/listen +executed /man/1/mash +executed /man/1/mash-tk +executed /man/1/mk +executed /man/1/ns +executed /man/1/nsbuild +executed /man/1/session +executed /man/1/sh +executed /man/1/sh-std +executed /man/1/tiny +executed /man/1/tkcmd +executed /man/1/toolbar +executed /man/10/a.out +executed /man/10/delay +executed /man/10/mk +executed /man/10/odbc +executed /man/2/prof +executed /man/2/sh +executed /man/3/boot +executed /man/3/prof +executed /man/3/tls +executed /man/4/cpu +executed /man/9/0intro +executed /man/9/bind +executed /man/9/menu +executed /man/9/options +executed /man/9/text +executes /man/1/acme +executes /man/1/cpu +executes /man/1/mash +executes /man/1/rcmd +executes /man/1/sh +executes /man/1/sh-std +executes /man/1/time +executes /man/1/tiny +executes /man/1/toolbar +executes /man/2/command +executes /man/2/sh +executes /man/3/prog +executes /man/4/cpu +executes /man/8/prep +executes /man/8/rstyxd +executese /man/2/regex +executing /man/1/0intro +executing /man/1/acme +executing /man/1/mash +executing /man/1/mk +executing /man/1/mprof +executing /man/1/sh +executing /man/1/sh-alphabet +executing /man/1/sh-std +executing /man/1/stack +executing /man/1/toolbar +executing /man/10/dynld +executing /man/10/kprof +executing /man/10/lock +executing /man/10/mk +executing /man/2/debug +executing /man/2/format +executing /man/2/sys-fd2path +executing /man/2/sys-self +executing /man/3/flash +executing /man/4/spree +executing /man/5/0intro +executing /man/9/menu +execution /man/1/0intro +execution /man/1/alphabet-abc +execution /man/1/alphabet-fs +execution /man/1/alphabet-grid +execution /man/1/cprof +execution /man/1/deb +execution /man/1/emu +execution /man/1/fs +execution /man/1/mash +execution /man/1/mk +execution /man/1/rcmd +execution /man/1/session +execution /man/1/sh +execution /man/1/sleep +execution /man/1/time +execution /man/1/tiny +execution /man/10/9load +execution /man/10/acid +execution /man/10/mk +execution /man/10/odbc +execution /man/10ti925/tihost +execution /man/2/0intro +execution /man/2/debug +execution /man/2/draw-context +execution /man/2/prof +execution /man/2/sh +execution /man/2/sys-0intro +execution /man/2/tk +execution /man/3/cmd +execution /man/3/prog +execution /man/4/cpu +execution /man/6/dis +execution /man/6/utf +execution /man/7/dbsrv +execution /man/8/rstyxd +execution /man/8/svc +execution /man/9/options +execvp /man/3/cmd +exercise /man/1/cook +exercises /man/2/draw-example +exhaust /man/6/dis +exhausted /man/1/fc +exhausted /man/1/sh-expr +exhausted /man/10/print +exhausted /man/2/0intro +exhausted /man/3/prog +exhaustively /man/2/asn1 +exist /man/1/0intro +exist /man/1/acme +exist /man/1/alphabet-fs +exist /man/1/calendar +exist /man/1/charon +exist /man/1/cprof +exist /man/1/fs +exist /man/1/ftest +exist /man/1/mash-make +exist /man/1/mk +exist /man/1/mprof +exist /man/1/os +exist /man/1/prof +exist /man/1/sh +exist /man/1/sh-alphabet +exist /man/1/tiny +exist /man/1/tktester +exist /man/1/touch +exist /man/1/wm-misc +exist /man/10/conf +exist /man/10/devattach +exist /man/10/iar +exist /man/10/mk +exist /man/10/srclist +exist /man/10/styxserver +exist /man/2/0intro +exist /man/2/draw-0intro +exist /man/2/draw-image +exist /man/2/ether +exist /man/2/exception +exist /man/2/format +exist /man/2/palmfile +exist /man/2/styxservers +exist /man/2/styxservers-nametree +exist /man/2/sys-bind +exist /man/2/sys-open +exist /man/3/draw +exist /man/3/env +exist /man/3/sd +exist /man/4/dbfs +exist /man/4/factotum +exist /man/4/keyfs +exist /man/4/logfile +exist /man/4/namespace +exist /man/4/ramfile +exist /man/8/create +exist /man/8/getauthinfo +exist /man/8/mkfs +exist /man/8/prep +exist /man/8/signer +exist /man/8/svc +exist /man/9/button +exist /man/9/canvas +exist /man/9/checkbutton +exist /man/9/choicebutton +exist /man/9/entry +exist /man/9/label +exist /man/9/listbox +exist /man/9/menu +exist /man/9/menubutton +exist /man/9/panel +exist /man/9/radiobutton +exist /man/9/scale +exist /man/9/scrollbar +exist /man/9/text +existed /man/1/cprof +existed /man/2/wmsrv +existed /man/4/ramfile +existence /man/10/print +existent /man/1/acme +existent /man/1/sh-tk +existent /man/2/draw-pointer +existing /man/1/acme +existing /man/1/bind +existing /man/1/brutus +existing /man/1/chmod +existing /man/1/cp +existing /man/1/cprof +existing /man/1/gettar +existing /man/1/itest +existing /man/1/mk +existing /man/1/mv +existing /man/1/passwd +existing /man/1/sh-alphabet +existing /man/1/sh-tk +existing /man/1/tiny +existing /man/1/uuencode +existing /man/10/conf +existing /man/10/dev +existing /man/10/mk +existing /man/10/newchan +existing /man/10/ntsrv +existing /man/2/alphabet-intro +existing /man/2/bufio +existing /man/2/dbm +existing /man/2/dhcpclient +existing /man/2/draw-font +existing /man/2/filter +existing /man/2/format +existing /man/2/geodesy +existing /man/2/popup +existing /man/2/prefab-compound +existing /man/2/prefab-element +existing /man/2/sets +existing /man/2/sh +existing /man/2/spree-cardlib +existing /man/2/string +existing /man/2/styxservers +existing /man/2/sys-0intro +existing /man/2/sys-bind +existing /man/2/sys-open +existing /man/2/tk +existing /man/2/translate +existing /man/3/flash +existing /man/3/ftl +existing /man/3/ip +existing /man/3/pnp +existing /man/4/archfs +existing /man/4/keysrv +existing /man/4/kfs +existing /man/4/lockfs +existing /man/4/logfile +existing /man/4/registry +existing /man/5/0intro +existing /man/5/open +existing /man/5/stat +existing /man/5/walk +existing /man/6/namespace +existing /man/6/plumbing +existing /man/6/proto +existing /man/6/sbl +existing /man/8/changelogin +existing /man/8/mangaload +existing /man/8/touchcal +existing /man/9/0intro +existing /man/9/1copyright +existing /man/9/bind +existing /man/9/canvas +existing /man/9/grid +existing /man/9/image +existing /man/9/text +exists /man/1/blur +exists /man/1/charon +exists /man/1/collab +exists /man/1/cp +exists /man/1/disdep +exists /man/1/ftest +exists /man/1/listen +exists /man/1/mkdir +exists /man/1/rcmd +exists /man/1/sh +exists /man/1/sh-alphabet +exists /man/1/tiny +exists /man/1/webgrab +exists /man/10/styxserver +exists /man/2/dict +exists /man/2/hash +exists /man/2/palmfile +exists /man/2/spree +exists /man/2/styxservers +exists /man/2/sys-dial +exists /man/2/sys-open +exists /man/2/translate +exists /man/3/ip +exists /man/3/prog +exists /man/3/rtc +exists /man/4/kfs +exists /man/5/open +exists /man/6/keys +exists /man/7/db +exists /man/8/changelogin +exists /man/8/create +exists /man/8/mkfs +exists /man/8/prep +exists /man/8/srv +exists /man/8/svc +exists /man/9/canvas +exists /man/9/image +exists /man/9/options +exists /man/9/text +exit /man/1/0intro +exit /man/1/acme +exit /man/1/alphabet-fs +exit /man/1/bind +exit /man/1/blur +exit /man/1/cmp +exit /man/1/collab-clients +exit /man/1/diff +exit /man/1/fc +exit /man/1/fs +exit /man/1/ftest +exit /man/1/ftree +exit /man/1/grep +exit /man/1/grid-monitor +exit /man/1/grid-register +exit /man/1/keyboard +exit /man/1/look +exit /man/1/mash +exit /man/1/mash-tk +exit /man/1/mc +exit /man/1/mk +exit /man/1/mkdir +exit /man/1/mux +exit /man/1/os +exit /man/1/read +exit /man/1/sh +exit /man/1/sh-regex +exit /man/1/sh-std +exit /man/1/sh-tk +exit /man/1/tktester +exit /man/1/wm +exit /man/10/mk +exit /man/10/panic +exit /man/2/0intro +exit /man/2/command +exit /man/2/security-auth +exit /man/2/sh +exit /man/2/timers +exit /man/2/tkclient +exit /man/2/volume +exit /man/2/wait +exit /man/2/wmclient +exit /man/2/wmlib +exit /man/2/wmsrv +exit /man/3/cmd +exit /man/3/srv +exit /man/4/palmsrv +exit /man/8/applylog +exit /man/8/create +exit /man/8/prep +exit /man/9/grab +exited /man/2/wait +exited /man/3/prog +exiting /man/1/limbo +exiting /man/2/wmlib +exiting /man/3/prog +exits /man/1/listen +exits /man/1/mathcalc +exits /man/1/mk +exits /man/1/netkey +exits /man/1/sh +exits /man/1/wm-sh +exits /man/10/mk +exits /man/10/print +exits /man/2/dbm +exits /man/2/debug +exits /man/2/draw-context +exits /man/2/itslib +exits /man/2/plumbmsg +exits /man/2/wait +exits /man/3/prog +exits /man/3/srv +exits /man/4/iostats +exits /man/9/grab +exotica /man/1/units +exp /man/1/mathcalc +exp /man/1/mc +exp /man/1/yacc +exp /man/2/debug +exp /man/2/keyring-0intro +exp /man/2/keyring-ipint +exp /man/2/keyring-sha1 +exp /man/2/math-elem +exp /man/2/spki +exp /man/6/keytext +expand /man/1/deb +expand /man/1/mk +expand /man/10/mk +expand /man/2/debug +expand /man/2/filepat +expand /man/2/spree-cardlib +expand /man/9/pack +expandable /man/9/pack +expanded /man/1/deb +expanded /man/1/mk +expanded /man/1/sh-alphabet +expanded /man/1/tiny +expanded /man/1/uuencode +expanded /man/10/0intro +expanded /man/10/mk +expanded /man/2/debug +expanded /man/2/w3c-xpointers +expanded /man/6/namespace +expanded /man/8/create +expanded /man/9/pack +expanding /man/1/alphabet-main +expanding /man/1/mk +expanding /man/10/mk +expanding /man/2/prefab-element +expands /man/1/acme +expands /man/2/debug +expansion /man/1/acme +expansion /man/1/tiny +expansion /man/4/acme +expansion /man/9/pack +expasync /man/2/security-auth +expasync /man/2/sys-export +expect /man/1/acme +expect /man/10/devattach +expect /man/2/math-0intro +expect /man/2/wmsrv +expect /man/5/version +expect /man/8/createsignerkey +expect /man/9/listbox +expected /man/1/acme +expected /man/1/dd +expected /man/1/math-misc +expected /man/1/sh +expected /man/1/sh-alphabet +expected /man/2/math-elem +expected /man/2/sh +expected /man/2/spree-gather +expected /man/4/acme +expected /man/8/applylog +expected /man/9/grid +expected /man/9/send +expects /man/1/acme +expects /man/1/charon +expects /man/1/logon +expects /man/1/sh-alphabet +expects /man/2/drawmux +expects /man/2/virgil +expects /man/3/pbus +expects /man/4/registry +expects /man/8/rstyxd +expense /man/6/dis +experiment /man/10/plan9.ini +experimental /man/1/acme +experimental /man/1/sh-alphabet +experimental /man/10/plan9.ini +experimental /man/2/alphabet-intro +experimental /man/3/sign +expid /man/2/sys-export +expiration /man/2/keyring-0intro +expiration /man/2/keyring-certtostr +expiration /man/2/keyring-sha1 +expiration /man/2/security-0intro +expiration /man/4/keyfs +expiration /man/8/changelogin +expire /man/2/timers +expire /man/4/keyfs +expire /man/8/getauthinfo +expired /man/2/spki-verifier +expired /man/2/timers +expired /man/4/keyfs +expires /man/2/timers +expires /man/6/keys +expires /man/8/createsignerkey +expiry /man/2/timers +expiry /man/4/keyfs +expiry /man/6/keytext +expiry /man/8/changelogin +expiry /man/8/createsignerkey +expiry /man/8/getauthinfo +expl /man/2/tk +explain /man/1/mk +explain /man/10/mk +explained /man/2/0intro +explained /man/2/sys-chdir +explaining /man/8/prep +explains /man/1/acme +explains /man/2/dhcpclient +explanation /man/2/convcs +explanation /man/2/sys-file2chan +explanation /man/4/spree +explanation /man/6/man +explanation /man/9/canvas +explanatory /man/2/sh +explicit /man/1/acme +explicit /man/1/alphabet-fs +explicit /man/1/fs +explicit /man/1/mash +explicit /man/1/tiny +explicit /man/2/0intro +explicit /man/2/asn1 +explicit /man/2/draw-image +explicit /man/2/sys-dial +explicit /man/2/sys-open +explicit /man/2/sys-read +explicit /man/3/ip +explicit /man/5/0intro +explicit /man/5/stat +explicit /man/6/sexprs +explicit /man/8/rip +explicit /man/9/canvas +explicitly /man/1/acme +explicitly /man/1/mash +explicitly /man/1/mc +explicitly /man/1/session +explicitly /man/1/sh +explicitly /man/10/2c +explicitly /man/10/2l +explicitly /man/10/5cv +explicitly /man/10/iar +explicitly /man/10/qio +explicitly /man/2/0intro +explicitly /man/2/asn1 +explicitly /man/2/cfg +explicitly /man/2/prefab-element +explicitly /man/2/sets +explicitly /man/2/styxservers +explicitly /man/2/styxservers-nametree +explicitly /man/3/dbg +explicitly /man/3/ip +explicitly /man/3/plap +explicitly /man/4/acme +explicitly /man/4/ftpfs +explicitly /man/4/registry +explicitly /man/5/0intro +explicitly /man/6/sbl +explicitly /man/6/sexprs +explicitly /man/8/applylog +explicitly /man/8/prep +explicitly /man/8/register +explicitly /man/9/1copyright +explicitly /man/9/canvas +explicitly /man/9/grid +explicity /man/1/tktester +explore /man/1/wm-misc +explorer /man/1/miniterm +expm1 /man/2/math-elem +expmod /man/2/keyring-ipint +exponent /man/1/mathcalc +exponent /man/10/print +exponent /man/2/math-elem +exponent /man/2/sys-print +exponential /man/2/math-elem +exponential /man/6/login +exponentiation /man/1/units +export /man/1/9win +export /man/1/alphabet-main +export /man/1/grid-ns +export /man/1/listen +export /man/1/session +export /man/10/2l +export /man/10/devattach +export /man/10/dynld +export /man/2/drawmux +export /man/2/math-export +export /man/2/security-0intro +export /man/2/security-auth +export /man/2/sys-export +export /man/3/srv9 +export /man/4/9srvfs +export /man/4/cpu +export /man/4/export +export /man/4/import +export /man/4/registry +export /man/8/collabsrv +export /man/8/rstyxd +export /man/8/styxmon +export /man/8/svc +export.b /man/4/export +exportdir /man/2/sys-export +exported /man/1/grid-ns +exported /man/1/mk +exported /man/1/rcmd +exported /man/1/sh +exported /man/10/2l +exported /man/10/dynld +exported /man/10/mk +exported /man/2/dis +exported /man/2/drawmux +exported /man/2/sys-export +exported /man/3/dynld +exported /man/4/cpu +exported /man/4/keysrv +exported /man/6/dis +exported /man/8/collabsrv +exported /man/8/rdbgsrv +exportfs /man/3/srv9 +exportfs /man/4/import +exportfs /man/6/namespace +exportfs.c /man/2/sys-export +exporting /man/1/grid-ns +exporting /man/1/grid-register +exporting /man/4/9srvfs +exporting /man/4/cpu +exportpath /man/1/rcmd +exports /man/1/9win +exports /man/1/alphabet-main +exports /man/1/cpu +exports /man/1/grid-ns +exports /man/1/session +exports /man/10/dev +exports /man/10/dynld +exports /man/10/odbc +exports /man/4/keysrv +exports /man/8/collabsrv +exports /man/8/rstyxd +exporttab /man/10/dynld +expose /man/2/command +expose /man/4/dbfs +expr /man/1/fc +expr /man/1/fs +expr /man/1/mash +expr /man/1/mdb +expr /man/1/sh +expr /man/1/sh-alphabet +expr /man/1/sh-expr +expr /man/1/sh-std +expr /man/1/sh-string +expr /man/1/sh-tk +expr /man/10/acid +expr /man/2/sh +expr /man/2/w3c-css +expr /man/2/w3c-xpointers +expr.b /man/1/sh-expr +express /man/2/draw-display +expressed /man/1/acme +expressed /man/1/prof +expressed /man/1/units +expressed /man/10/a.out +expressed /man/2/draw-display +expressed /man/2/draw-screen +expressed /man/2/styxservers +expressed /man/3/ether +expressed /man/3/ip +expressed /man/3/pnp +expressed /man/3/rtc +expressed /man/6/sexprs +expressed /man/8/cs +expresses /man/2/spki +expression /man/1/acme +expression /man/1/alphabet-abc +expression /man/1/alphabet-fs +expression /man/1/alphabet-grid +expression /man/1/alphabet-main +expression /man/1/deb +expression /man/1/fc +expression /man/1/fs +expression /man/1/grep +expression /man/1/mash +expression /man/1/mathcalc +expression /man/1/mc +expression /man/1/mdb +expression /man/1/mk +expression /man/1/sh-alphabet +expression /man/1/sh-expr +expression /man/1/sh-regex +expression /man/1/sh-sexprs +expression /man/1/tiny +expression /man/10/2c +expression /man/10/acid +expression /man/10/c2l +expression /man/10/mk +expression /man/2/debug +expression /man/2/format +expression /man/2/regex +expression /man/2/sexprs +expression /man/2/spki +expression /man/2/spki-verifier +expression /man/2/w3c-xpointers +expression /man/3/dbg +expression /man/4/acme +expression /man/4/factotum +expression /man/6/plumbing +expression /man/6/regexp +expression /man/6/sbl +expression /man/6/sexprs +expression /man/8/prep +expression's /man/1/sh-alphabet +expressions /man/1/acme +expressions /man/1/limbo +expressions /man/1/mash +expressions /man/1/mathcalc +expressions /man/1/mc +expressions /man/1/mdb +expressions /man/1/mk +expressions /man/1/sh-alphabet +expressions /man/1/sh-regex +expressions /man/1/sh-sexprs +expressions /man/10/acid +expressions /man/10/mk +expressions /man/2/format +expressions /man/2/math-0intro +expressions /man/2/regex +expressions /man/2/sexprs +expressions /man/2/spki +expressions /man/2/w3c-xpointers +expressions /man/6/regexp +expressions /man/6/sexprs +expressions /man/8/prep +exps /man/2/debug +expwait /man/2/sys-export +expwait /man/3/srv9 +exs /man/2/w3c-css +ext /man/10/2l +extant /man/10/acid +extant /man/2/draw-image +extant /man/8/prep +extend /man/1/disdep +extend /man/1/mc +extend /man/10/eve +extend /man/2/dhcpclient +extend /man/4/factotum +extended /man/1/0intro +extended /man/1/acme +extended /man/1/limbo +extended /man/10/9load +extended /man/2/disks +extended /man/2/spki +extended /man/2/w3c-css +extended /man/5/stat +extended /man/6/dis +extended /man/6/sexprs +extended /man/8/prep +extended /man/9/grid +extended /man/9/listbox +extending /man/2/draw-image +extending /man/5/version +extending /man/8/prep +extends /man/1/acme +extends /man/1/charon +extends /man/2/keyring-sha1 +extends /man/6/regexp +extends /man/9/canvas +extends /man/9/grid +extends /man/9/listbox +extends /man/9/text +extensible /man/2/xml +extension /man/1/asm +extension /man/1/charon +extension /man/1/cook +extension /man/1/idea +extension /man/1/mash +extension /man/10/2c +extension /man/10/a.out +extension /man/2/spki +extension /man/2/spree +extension /man/2/tabs +extension /man/4/dossrv +extension /man/6/dis +extensions /man/1/limbo +extensions /man/10/2c +extensions /man/3/cons +extensions /man/4/dossrv +extensive /man/10/9load +extent /man/2/dis +extent /man/2/draw-0intro +extent /man/6/dis +extent /man/9/canvas +extents /man/8/prep +exterior /man/9/options +extern /man/10/2c +extern /man/10/dynld +extern /man/10/kbdputc +extern /man/10/styxserver +external /man/1/acme +external /man/1/ebook +external /man/1/sh +external /man/1/sh-alphabet +external /man/1/sh-file2chan +external /man/1/tktester +external /man/1/yacc +external /man/10/2c +external /man/10/dynld +external /man/2/alphabet-intro +external /man/2/asn1 +external /man/2/bufio +external /man/2/dis +external /man/2/draw-display +external /man/2/imagefile +external /man/2/keyring-0intro +external /man/2/math-export +external /man/2/sh +external /man/2/spree +external /man/2/spree-allow +external /man/2/styxpersist +external /man/2/styxservers +external /man/2/tk +external /man/2/xml +external /man/3/fpga +external /man/3/tv +external /man/4/cpu +external /man/4/factotum +external /man/4/memfs +external /man/5/0intro +external /man/6/colour +external /man/6/dis +external /man/6/font +external /man/6/image +external /man/6/utf +external /man/7/dbsrv +external /man/8/dns +external /man/8/fpgaload +external /man/9/grid +external /man/9/pack +externally /man/1/sh +externally /man/10/ar +externally /man/2/alphabet-intro +externally /man/2/draw-display +externally /man/2/spki +externally /man/3/fpga +extra /man/1/acme +extra /man/1/fc +extra /man/1/grid-monitor +extra /man/1/mc +extra /man/1/secstore +extra /man/10/ar +extra /man/10/dynld +extra /man/2/secstore +extra /man/2/spree-cardlib +extra /man/3/ether +extra /man/3/flash +extra /man/3/tls +extra /man/4/acme +extra /man/6/colour +extra /man/6/keyboard +extra /man/6/keytext +extra /man/6/man +extra /man/9/grid +extra /man/9/options +extra /man/9/pack +extra /man/9/text +extract /man/1/gettar +extract /man/1/secstore +extract /man/1/sh-arg +extract /man/1/strings +extract /man/10/iar +extract /man/10/odbc +extract /man/10/styx +extract /man/2/convcs +extract /man/2/disks +extract /man/2/print +extract /man/2/sexprs +extracted /man/1/gettar +extracted /man/1/sh-arg +extracted /man/10/iar +extracted /man/2/debug +extracted /man/2/dis +extracted /man/2/draw-image +extracted /man/2/math-fp +extracted /man/8/mkfs +extracting /man/2/styxservers +extracts /man/1/brutus +extracts /man/1/gettar +extracts /man/2/disks +extracts /man/2/keyring-gensk +extrapolates /man/9/text +ezd /man/9/canvas +f.f1.b2 /man/1/tktester +f.fmenu /man/1/tktester +f.x /man/2/bloomfilter +fa /man/6/sexprs +fa310 /man/10/plan9.ini +fa311 /man/10/plan9.ini +fa312 /man/10/plan9.ini +fa410tx /man/10/plan9.ini +fabs /man/2/math-fp +fabs /man/2/math-linalg +facedown /man/2/spree-cardlib +faces /man/1/wm-misc +faces /man/2/spree-cardlib +facfd /man/2/factotum +facilitate /man/10/a.out +facilitating /man/2/venti +facilities /man/1/deb +facilities /man/1/sh-file2chan +facilities /man/1/sh-string +facilities /man/1/wm-sh +facilities /man/2/debug +facilities /man/2/draw-0intro +facilities /man/2/prefab-0intro +facilities /man/2/spree-cardlib +facilities /man/2/spree-gather +facilities /man/3/draw +facilities /man/3/prof +facilities /man/3/prog +facilities /man/9/canvas +facility /man/1/sh-csv +facility /man/1/sh-sexprs +facility /man/1/sh-test +facility /man/1/wm +facility /man/2/asn1 +facility /man/2/itslib +facility /man/2/spree +facing /man/2/spree-cardlib +factor /man/1/math-misc +factor /man/1/wm-misc +factor /man/2/draw-image +factor /man/3/floppy +factor /man/6/colour +factor /man/9/canvas +factor.b /man/1/math-misc +factorial /man/1/fc +factorial /man/1/mc +factoring /man/2/math-0intro +factors /man/1/math-misc +factors /man/9/canvas +factory /man/10/plan9.ini +factotum /man/1/bind +factotum /man/1/secstore +factotum /man/2/factotum +factotum /man/2/secstore +factotum /man/2/styxpersist +factotum /man/3/srv9 +factotum /man/4/factotum +factotum /man/4/import +factotum /man/6/keytext +factotum.b /man/2/factotum +factotum.m /man/2/factotum +facts /man/3/logfs +fads /man/3/vid +fahrenheit /man/1/units +fail /man/1/0intro +fail /man/1/mash +fail /man/1/sh-tk +fail /man/1/tiny +fail /man/10/odbc +fail /man/2/0intro +fail /man/2/alphabet-intro +fail /man/2/asn1 +fail /man/2/debug +fail /man/2/keyring-getstring +fail /man/2/scsiio +fail /man/2/sh +fail /man/2/spree-cardlib +fail /man/2/wmsrv +fail /man/3/tls +fail /man/4/ftpfs +fail /man/5/open +fail /man/5/remove +fail /man/8/prep +fail:eof /man/1/read +fail:error /man/1/read +fail:usage /man/2/arg +failed /man/1/alphabet-abc +failed /man/1/alphabet-grid +failed /man/1/sh +failed /man/1/sh-test +failed /man/2/factotum +failed /man/2/format +failed /man/2/keyring-auth +failed /man/2/palmfile +failed /man/2/security-auth +failed /man/2/spki-verifier +failed /man/2/styxpersist +failed /man/2/styxservers +failed /man/3/dbg +failed /man/4/factotum +failed /man/4/keyfs +failed /man/5/0intro +failed /man/5/clunk +failed /man/5/open +failed /man/5/walk +failing /man/1/listen +failing /man/1/sh +failing /man/10/lock +failing /man/2/arg +failing /man/2/dhcpclient +failing /man/3/cmd +failing /man/3/fs +failing /man/5/error +failing /man/6/ndb +fails /man/1/bind +fails /man/1/limbo +fails /man/1/sh +fails /man/1/sh-regex +fails /man/1/sh-std +fails /man/1/tiny +fails /man/1/webgrab +fails /man/10/2c +fails /man/10/c2l +fails /man/2/alphabet-intro +fails /man/2/disks +fails /man/2/draw-display +fails /man/2/env +fails /man/2/factotum +fails /man/2/keyring-auth +fails /man/2/plumbmsg +fails /man/2/prof +fails /man/2/scsiio +fails /man/2/smtp +fails /man/2/spree-cardlib +fails /man/2/spree-gather +fails /man/2/styx +fails /man/2/sys-bind +fails /man/2/sys-read +fails /man/2/sys-werrstr +fails /man/2/wmlib +fails /man/3/cmd +fails /man/3/ds +fails /man/3/flash +fails /man/3/fpga +fails /man/3/ip +fails /man/3/plap +fails /man/3/sign +fails /man/3/ssl +fails /man/5/open +fails /man/5/remove +fails /man/5/stat +fails /man/7/db +fails /man/8/cs +fails /man/8/prep +failure /man/1/charon +failure /man/2/alphabet-intro +failure /man/2/asn1 +failure /man/2/dbm +failure /man/2/draw-0intro +failure /man/2/exception +failure /man/2/factotum +failure /man/2/keyset +failure /man/2/pop3 +failure /man/2/scsiio +failure /man/2/secstore +failure /man/2/smtp +failure /man/2/spki-verifier +failure /man/2/spree-allow +failure /man/2/styxservers-nametree +failure /man/2/sys-bind +failure /man/2/sys-chdir +failure /man/2/sys-fversion +failure /man/2/sys-pipe +failure /man/2/sys-stat +failure /man/3/boot +failure /man/3/draw +failure /man/3/logfs +failure /man/4/ftpfs +failure /man/5/0intro +failure /man/5/error +failure /man/7/db +fair /man/1/charon +fair /man/2/scsiio +fairly /man/1/mash-tk +faithful /man/1/man +fall /man/10/c2l +fallbacks /man/1/ebook +falls /man/10/qio +false /man/1/sh-expr +false /man/1/sh-regex +false /man/1/sh-std +false /man/1/sh-tk +false /man/10/acid +false /man/10/dmainit +false /man/10/sleep +false /man/2/asn1 +false /man/2/bloomfilter +false /man/2/draw-display +false /man/2/draw-image +false /man/2/ip +false /man/2/keyring-sha1 +false /man/2/palmfile +false /man/2/secstore +false /man/2/sh +false /man/2/styxservers +false /man/9/checkbutton +false /man/9/grid +false /man/9/options +false /man/9/pack +false /man/9/radiobutton +false /man/9/text +false /man/9/types +familiar /man/1/0intro +familiar /man/1/charon +familiar /man/1/units +familiarity /man/2/styxservers +fan /man/8/collabsrv +fappinfodirty /man/2/palmfile +farm /man/1/alphabet-abc +farm /man/1/alphabet-grid +fars /man/9/1copyright +farther /man/9/canvas +farther /man/9/entry +farther /man/9/listbox +farther /man/9/text +fashion /man/1/mk +fashion /man/1/units +fashion /man/1/wm-misc +fashion /man/10/mk +fashion /man/2/asn1 +fashion /man/4/logfile +fashion /man/9/canvas +fashion /man/9/grab +fast /man/1/fortune +fast /man/1/mux +fast /man/10/plan9.ini +fast /man/2/ir +fast16 /man/10/plan9.ini +fast4 /man/10/plan9.ini +fast8 /man/10/plan9.ini +faster /man/1/charon +faster /man/1/cp +faster /man/1/echo +faster /man/1/emu +faster /man/10/5cv +faster /man/10/c2l +faster /man/2/math-0intro +faster /man/2/security-0intro +faster /man/3/cons +faster /man/4/logfile +fastest /man/4/iostats +fat /man/10/9load +fat /man/2/disks +fat /man/3/fs +fat /man/4/dossrv +fat /man/8/prep +fat12 /man/8/prep +fat16 /man/10/9load +fat16 /man/8/prep +fat32 /man/4/dossrv +fat32 /man/8/prep +fatal /man/1/sh-test +fatal /man/10/print +fatal /man/2/0intro +fatal /man/2/itslib +fatal /man/2/math-fp +fatal /man/2/w3c-css +fatal /man/2/xml +fatal /man/3/arch +fatal /man/3/tls +fault /man/2/ida +fault /man/3/prog +faults /man/3/prog +fauth /man/2/factotum +fauth /man/2/sys-fauth +fauth /man/2/sys-fversion +fauth /man/2/sys-stat +fauth /man/5/attach +fauth /man/5/version +favour /man/1/alphabet-fs +favour /man/1/fs +favour /man/1/sh +favour /man/3/ip +favour /man/8/applylog +fbackup /man/2/palmfile +fc /man/1/fc +fc /man/1/mc +fcall /man/10/styx +fcall.h /man/5/attach +fcallfmt /man/10/styx +fcallfmt.c /man/10/styx +fcp /man/1/cp +fcp.b /man/1/cp +fd /man/1/alphabet-abc +fd /man/1/alphabet-fs +fd /man/1/alphabet-grid +fd /man/1/alphabet-main +fd /man/1/sh +fd /man/1/sh-alphabet +fd /man/1/yacc +fd /man/10/9load +fd /man/10/dynld +fd /man/10/newchan +fd /man/10/plan9.ini +fd /man/10/print +fd /man/10/styxserver +fd /man/2/attrdb +fd /man/2/bufio +fd /man/2/dhcpclient +fd /man/2/diskblocks +fd /man/2/disks +fd /man/2/draw-context +fd /man/2/draw-display +fd /man/2/drawmux +fd /man/2/factotum +fd /man/2/imagefile +fd /man/2/itslib +fd /man/2/keyring-auth +fd /man/2/keyring-getmsg +fd /man/2/keyring-getstring +fd /man/2/keyring-sha1 +fd /man/2/print +fd /man/2/readdir +fd /man/2/registries +fd /man/2/scsiio +fd /man/2/security-auth +fd /man/2/security-ssl +fd /man/2/styx +fd /man/2/styxconv +fd /man/2/styxpersist +fd /man/2/styxservers +fd /man/2/sys-0intro +fd /man/2/sys-bind +fd /man/2/sys-dial +fd /man/2/sys-dirread +fd /man/2/sys-dup +fd /man/2/sys-export +fd /man/2/sys-fauth +fd /man/2/sys-fd2path +fd /man/2/sys-fversion +fd /man/2/sys-iounit +fd /man/2/sys-open +fd /man/2/sys-pipe +fd /man/2/sys-print +fd /man/2/sys-read +fd /man/2/sys-seek +fd /man/2/sys-stat +fd /man/2/tftp +fd /man/2/venti +fd /man/2/wait +fd /man/3/dup +fd /man/3/prog +fd /man/3/root +fd /man/3/srv9 +fd /man/3/ssl +fd /man/3/tls +fd /man/4/iostats +fd /man/7/db +fd.fd /man/2/sys-export +fd0 /man/1/sh +fd0 /man/10/9load +fd0ctl /man/3/floppy +fd0disk /man/3/ds +fd0disk /man/3/floppy +fd0disk /man/8/prep +fd1 /man/1/sh +fd1ctl /man/3/floppy +fd1disk /man/3/floppy +fd2ctl /man/3/floppy +fd2disk /man/3/floppy +fd2path /man/1/pwd +fd2path /man/2/names +fd2path /man/2/sys-fd2path +fd2path /man/2/workdir +fd3ctl /man/3/floppy +fd3disk /man/3/floppy +fdim /man/2/math-fp +fdisk /man/8/prep +fdnum /man/1/sh-std +fds /man/2/sys-pipe +fdtochan /man/10/newchan +feasible /man/10/styxserver +feasible /man/2/math-0intro +feature /man/1/acme +feature /man/10/plan9.ini +feature /man/2/draw-example +feature /man/2/print +feature /man/2/sh +feature /man/2/spree-cardlib +features /man/1/mdb +features /man/1/tiny +features /man/1/tkcmd +features /man/2/math-0intro +features /man/3/logfs +features /man/4/dbfs +features /man/7/db +features /man/9/frame +features /man/9/text +fee /man/2/keyring-crypt +fee /man/9/1copyright +feed /man/1/secstore +feed /man/6/keyboard +feed /man/6/sexprs +feedkey /man/4/factotum +feels /man/1/0intro +feels /man/2/tkclient +feels /man/2/wmclient +fell /man/3/kprof +ferries /man/2/factotum +fetch /man/1/webgrab +fetch /man/10/inb +fetch /man/2/dbm +fetch /man/2/dhcpclient +fetch /man/2/popup +fetch /man/2/secstore +fetch /man/2/security-auth +fetch /man/2/tftp +fetch /man/4/ftpfs +fetched /man/1/mdb +fetched /man/2/secstore +fetched /man/2/styxservers +fetched /man/3/draw +fetches /man/1/mdb +fetches /man/1/webgrab +fetches /man/2/attrdb +fetches /man/2/tftp +fetching /man/10/allocb +fetching /man/10/print +fetching /man/2/sexprs +fetching /man/2/sys-print +fetchwdata /man/1/sh-file2chan +fewer /man/2/palmfile +fewer /man/6/colour +fewer /man/9/text +ff /man/2/ir +ff /man/6/utf +ffff /man/1/strings +ffff /man/2/ip +ffffffffffff /man/3/ether +ffile /man/1/sh-arg +ffile /man/2/arg +fg /man/9/options +fgid /man/2/styxservers +fgname /man/2/styxservers +fgrp /man/10/newchan +fgui /man/4/factotum +fhtml /man/2/stringinttab +fi /man/2/dis +fibonacci /man/1/math-misc +fibonacci.b /man/1/math-misc +fid /man/1/sh-file2chan +fid /man/10/styx +fid /man/10/styxserver +fid /man/2/bufio-chanfill +fid /man/2/styx +fid /man/2/styxservers +fid /man/2/sys-file2chan +fid /man/5/0intro +fid /man/5/attach +fid /man/5/clunk +fid /man/5/flush +fid /man/5/open +fid /man/5/read +fid /man/5/remove +fid /man/5/stat +fid /man/5/walk +fid /man/8/styxchat +fid's /man/2/styxservers +fiddly /man/2/styxservers +fids /man/10/styxserver +fids /man/2/styx +fids /man/2/styxservers +fids /man/5/0intro +fids /man/5/version +field's /man/2/format +fields /man/1/alphabet-fs +fields /man/1/fs +fields /man/1/gettar +fields /man/1/ls +fields /man/1/mux +fields /man/1/sh-string +fields /man/1/tiny +fields /man/1/tktester +fields /man/10/2c +fields /man/10/ar +fields /man/10/c2l +fields /man/10/devattach +fields /man/10/dynld +fields /man/10/getfields +fields /man/10/odbc +fields /man/10/parsecmd +fields /man/10/styx +fields /man/10/styxserver +fields /man/2/crc +fields /man/2/dhcpclient +fields /man/2/draw-screen +fields /man/2/format +fields /man/2/keyring-certtostr +fields /man/2/palmfile +fields /man/2/plumbmsg +fields /man/2/prefab-element +fields /man/2/print +fields /man/2/prof +fields /man/2/spki +fields /man/2/sys-stat +fields /man/3/arch +fields /man/3/cmd +fields /man/3/cons +fields /man/3/draw +fields /man/3/gpio +fields /man/3/ip +fields /man/3/logfs +fields /man/3/pnp +fields /man/3/prog +fields /man/3/tls +fields /man/4/factotum +fields /man/4/kfs +fields /man/5/0intro +fields /man/5/stat +fields /man/6/dis +fields /man/6/font +fields /man/6/keytext +fields /man/6/proto +fields /man/6/sbl +fields /man/7/db +fields /man/8/create +fields /man/8/srv +fields /man/8/styxchat +fields /man/9/menu +fifo /man/10/qlock +fifth /man/3/kprof +fifth /man/8/create +fifth /man/8/prep +fifth /man/9/text +figure /man/2/security-0intro +figures /man/4/iostats +fildes /man/1/yacc +fildes /man/2/styxservers-nametree +fildes /man/2/sys-dup +file /man/1/0intro +file /man/1/acme +file /man/1/alphabet-fs +file /man/1/alphabet-main +file /man/1/asm +file /man/1/auplay +file /man/1/avr +file /man/1/basename +file /man/1/bind +file /man/1/blur +file /man/1/brutus +file /man/1/calendar +file /man/1/cat +file /man/1/charon +file /man/1/chgrp +file /man/1/chmod +file /man/1/cleanname +file /man/1/cmp +file /man/1/collab +file /man/1/collab-clients +file /man/1/comm +file /man/1/cook +file /man/1/cp +file /man/1/cprof +file /man/1/crypt +file /man/1/dd +file /man/1/deb +file /man/1/diff +file /man/1/disdep +file /man/1/du +file /man/1/ebook +file /man/1/emu +file /man/1/filename +file /man/1/fmt +file /man/1/fortune +file /man/1/freq +file /man/1/fs +file /man/1/ftest +file /man/1/ftree +file /man/1/gettar +file /man/1/grep +file /man/1/gzip +file /man/1/idea +file /man/1/itest +file /man/1/kill +file /man/1/lc +file /man/1/limbo +file /man/1/listen +file /man/1/logon +file /man/1/logwindow +file /man/1/look +file /man/1/ls +file /man/1/man +file /man/1/mash +file /man/1/mash-make +file /man/1/mash-tk +file /man/1/math-misc +file /man/1/mathcalc +file /man/1/mc +file /man/1/mdb +file /man/1/mk +file /man/1/mprof +file /man/1/mux +file /man/1/mv +file /man/1/netkey +file /man/1/netstat +file /man/1/ns +file /man/1/nsbuild +file /man/1/p +file /man/1/passwd +file /man/1/prof +file /man/1/rcmd +file /man/1/read +file /man/1/rm +file /man/1/secstore +file /man/1/session +file /man/1/sh +file /man/1/sh-alphabet +file /man/1/sh-arg +file /man/1/sh-file2chan +file /man/1/sh-std +file /man/1/sort +file /man/1/stack +file /man/1/stream +file /man/1/strings +file /man/1/sum +file /man/1/tail +file /man/1/tcs +file /man/1/tee +file /man/1/timestamp +file /man/1/tiny +file /man/1/tktester +file /man/1/touch +file /man/1/uniq +file /man/1/units +file /man/1/uuencode +file /man/1/wc +file /man/1/webgrab +file /man/1/wish +file /man/1/wm +file /man/1/wm-misc +file /man/1/wm-sh +file /man/1/xd +file /man/1/yacc +file /man/1/zeros +file /man/10/0intro +file /man/10/2a +file /man/10/2c +file /man/10/2l +file /man/10/5coff +file /man/10/5cv +file /man/10/9load +file /man/10/a.out +file /man/10/acid +file /man/10/ar +file /man/10/c2l +file /man/10/conf +file /man/10/dev +file /man/10/devattach +file /man/10/dynld +file /man/10/eve +file /man/10/iar +file /man/10/inm +file /man/10/intrenable +file /man/10/kproc +file /man/10/kprof +file /man/10/ksize +file /man/10/kstrip +file /man/10/mk +file /man/10/ms2 +file /man/10/newchan +file /man/10/odbc +file /man/10/parsecmd +file /man/10/plan9.ini +file /man/10/print +file /man/10/qio +file /man/10/readnum +file /man/10/seconds +file /man/10/srclist +file /man/10/styx +file /man/10/styxserver +file /man/10ti925/epocimg +file /man/10ti925/tihost +file /man/2/0intro +file /man/2/arg +file /man/2/asn1 +file /man/2/attrdb +file /man/2/bufio +file /man/2/bufio-chanfill +file /man/2/cfg +file /man/2/command +file /man/2/convcs +file /man/2/crc +file /man/2/daytime +file /man/2/dbm +file /man/2/debug +file /man/2/devpointer +file /man/2/dhcpclient +file /man/2/dis +file /man/2/diskblocks +file /man/2/disks +file /man/2/draw-context +file /man/2/draw-display +file /man/2/draw-font +file /man/2/drawmux +file /man/2/ether +file /man/2/factotum +file /man/2/filepat +file /man/2/filter +file /man/2/filter-deflate +file /man/2/format +file /man/2/fsproto +file /man/2/ida +file /man/2/imagefile +file /man/2/ir +file /man/2/itslib +file /man/2/keyring-0intro +file /man/2/keyring-auth +file /man/2/keyring-sha1 +file /man/2/keyset +file /man/2/mpeg +file /man/2/names +file /man/2/newns +file /man/2/palmfile +file /man/2/plumbmsg +file /man/2/print +file /man/2/prof +file /man/2/pslib +file /man/2/readdir +file /man/2/registries +file /man/2/scsiio +file /man/2/secstore +file /man/2/security-auth +file /man/2/security-ssl +file /man/2/selectfile +file /man/2/sexprs +file /man/2/sh +file /man/2/spree +file /man/2/styx +file /man/2/styxconv +file /man/2/styxpersist +file /man/2/styxservers +file /man/2/styxservers-nametree +file /man/2/sys-0intro +file /man/2/sys-bind +file /man/2/sys-chdir +file /man/2/sys-dial +file /man/2/sys-dirread +file /man/2/sys-dup +file /man/2/sys-export +file /man/2/sys-fauth +file /man/2/sys-fd2path +file /man/2/sys-file2chan +file /man/2/sys-iounit +file /man/2/sys-open +file /man/2/sys-pctl +file /man/2/sys-pipe +file /man/2/sys-print +file /man/2/sys-read +file /man/2/sys-remove +file /man/2/sys-seek +file /man/2/sys-stat +file /man/2/tftp +file /man/2/tk +file /man/2/translate +file /man/2/wait +file /man/2/wmsrv +file /man/2/xml +file /man/3/0intro +file /man/3/arch +file /man/3/audio +file /man/3/boot +file /man/3/cap +file /man/3/cmd +file /man/3/cons +file /man/3/dbg +file /man/3/draw +file /man/3/ds +file /man/3/dup +file /man/3/dynld +file /man/3/eia +file /man/3/env +file /man/3/ether +file /man/3/flash +file /man/3/floppy +file /man/3/fpga +file /man/3/fs +file /man/3/ftl +file /man/3/gpio +file /man/3/i2c +file /man/3/indir +file /man/3/ip +file /man/3/kprof +file /man/3/logfs +file /man/3/lpt +file /man/3/mnt +file /man/3/mpeg +file /man/3/pbus +file /man/3/pipe +file /man/3/plap +file /man/3/pnp +file /man/3/pointer +file /man/3/prof +file /man/3/prog +file /man/3/root +file /man/3/rtc +file /man/3/sd +file /man/3/sign +file /man/3/snarf +file /man/3/srv +file /man/3/srv9 +file /man/3/ssl +file /man/3/switch +file /man/3/tinyfs +file /man/3/tls +file /man/3/touch +file /man/3/tv +file /man/3/usb +file /man/3/vid +file /man/4/0intro +file /man/4/9srvfs +file /man/4/acme +file /man/4/archfs +file /man/4/cpu +file /man/4/dbfs +file /man/4/dossrv +file /man/4/export +file /man/4/factotum +file /man/4/ftpfs +file /man/4/import +file /man/4/iostats +file /man/4/keyfs +file /man/4/keysrv +file /man/4/kfs +file /man/4/lockfs +file /man/4/logfile +file /man/4/memfs +file /man/4/mntgen +file /man/4/namespace +file /man/4/palmsrv +file /man/4/ramfile +file /man/4/registry +file /man/4/spree +file /man/4/tarfs +file /man/5/0intro +file /man/5/attach +file /man/5/clunk +file /man/5/flush +file /man/5/open +file /man/5/read +file /man/5/remove +file /man/5/stat +file /man/5/walk +file /man/6/0intro +file /man/6/attrdb +file /man/6/audio +file /man/6/dis +file /man/6/font +file /man/6/image +file /man/6/keyboard +file /man/6/keys +file /man/6/man +file /man/6/namespace +file /man/6/ndb +file /man/6/plumbing +file /man/6/proto +file /man/6/sbl +file /man/6/translate +file /man/6/users +file /man/7/db +file /man/8/0intro +file /man/8/applylog +file /man/8/bootpd +file /man/8/changelogin +file /man/8/collabsrv +file /man/8/create +file /man/8/createsignerkey +file /man/8/cs +file /man/8/dns +file /man/8/ftl +file /man/8/getauthinfo +file /man/8/httpd +file /man/8/init +file /man/8/kfscmd +file /man/8/logind +file /man/8/manufacture +file /man/8/mkfs +file /man/8/plumber +file /man/8/prep +file /man/8/rdbgsrv +file /man/8/register +file /man/8/rstyxd +file /man/8/signer +file /man/8/srv +file /man/8/styxchat +file /man/8/svc +file /man/8/touchcal +file /man/9/1copyright +file /man/9/image +file /man/9/scrollbar +file /man/9/text +file /man/9/types +file's /man/1/acme +file's /man/1/chgrp +file's /man/1/chmod +file's /man/1/ls +file's /man/1/mash-tk +file's /man/1/mk +file's /man/1/secstore +file's /man/1/sum +file's /man/1/uuencode +file's /man/1/webgrab +file's /man/10/conf +file's /man/10/mk +file's /man/2/dis +file's /man/2/disks +file's /man/2/fsproto +file's /man/2/palmfile +file's /man/2/styxservers +file's /man/2/styxservers-nametree +file's /man/2/sys-stat +file's /man/3/dynld +file's /man/3/fs +file's /man/3/prog +file's /man/4/kfs +file's /man/5/0intro +file's /man/5/stat +file's /man/8/applylog +file's /man/8/collabsrv +file's /man/8/create +file.c /man/1/acme +file.c:27 /man/1/acme +file.rbf /man/8/fpgaload +file.srec /man/1/avr +file1 /man/1/cat +file1 /man/1/cmp +file1 /man/1/comm +file1 /man/1/cp +file1 /man/1/diff +file1 /man/1/ftest +file1 /man/1/stream +file1 /man/1/tr +file1 /man/6/attrdb +file2 /man/1/cat +file2 /man/1/cmp +file2 /man/1/comm +file2 /man/1/cp +file2 /man/1/diff +file2 /man/1/ftest +file2 /man/1/stream +file2 /man/1/tr +file2 /man/6/attrdb +file2chan /man/1/0intro +file2chan /man/1/sh +file2chan /man/1/sh-file2chan +file2chan /man/2/bufio-chanfill +file2chan /man/2/draw-context +file2chan /man/2/srv +file2chan /man/2/sys-file2chan +file2chan /man/2/wmsrv +file2chan /man/3/pipe +file2chan /man/3/srv +file2chan /man/4/logfile +file2chan /man/4/namespace +file2chan /man/4/ramfile +file2chan /man/5/0intro +file2chan.b /man/1/sh-file2chan +file3 /man/1/cat +file3 /man/6/attrdb +file:lineno /man/2/prof +fileio /man/2/bufio-chanfill +fileio /man/2/sys-file2chan +filekey /man/2/secstore +filename /man/1/acme +filename /man/1/alphabet-fs +filename /man/1/alphabet-main +filename /man/1/charon +filename /man/1/du +filename /man/1/filename +filename /man/1/fs +filename /man/1/ftree +filename /man/1/ls +filename /man/1/sh-file2chan +filename /man/1/sh-std +filename /man/1/tiny +filename /man/1/tktester +filename /man/1/uuencode +filename /man/1/wm-misc +filename /man/2/attrdb +filename /man/2/bufio +filename /man/2/debug +filename /man/2/filter-deflate +filename /man/2/keyring-auth +filename /man/2/palmfile +filename /man/2/selectfile +filename /man/2/tftp +filename /man/4/dbfs +filename /man/6/attrdb +filename.b /man/1/filename +filename:linenumber /man/1/acme +filenames /man/1/du +filenames /man/1/man +filenames /man/1/tiny +filenames /man/2/sys-0intro +filenames /man/3/fs +fileoffset /man/2/xml +filepat /man/1/alphabet-fs +filepat /man/1/filename +filepat /man/1/fs +filepat /man/1/sh-std +filepat /man/1/tiny +filepat /man/2/filepat +filepat.b /man/2/filepat +filepat.m /man/2/filepat +filepc /man/10/acid +files /man/1/0intro +files /man/1/9win +files /man/1/acme +files /man/1/alphabet-fs +files /man/1/auplay +files /man/1/bind +files /man/1/blur +files /man/1/brutus +files /man/1/cat +files /man/1/cd +files /man/1/charon +files /man/1/cmp +files /man/1/collab +files /man/1/collab-clients +files /man/1/comm +files /man/1/cook +files /man/1/cp +files /man/1/cprof +files /man/1/cpu +files /man/1/date +files /man/1/dd +files /man/1/deb +files /man/1/diff +files /man/1/disdep +files /man/1/du +files /man/1/ebook +files /man/1/emu +files /man/1/filename +files /man/1/fmt +files /man/1/fortune +files /man/1/freq +files /man/1/fs +files /man/1/ftree +files /man/1/gettar +files /man/1/grep +files /man/1/grid-query +files /man/1/gzip +files /man/1/itest +files /man/1/keyboard +files /man/1/kill +files /man/1/lc +files /man/1/limbo +files /man/1/logon +files /man/1/look +files /man/1/ls +files /man/1/man +files /man/1/mash +files /man/1/mash-tk +files /man/1/mc +files /man/1/miniterm +files /man/1/mk +files /man/1/mprof +files /man/1/mux +files /man/1/mv +files /man/1/netstat +files /man/1/nsbuild +files /man/1/os +files /man/1/p +files /man/1/passwd +files /man/1/plumb +files /man/1/prof +files /man/1/ps +files /man/1/rm +files /man/1/secstore +files /man/1/session +files /man/1/sh +files /man/1/sh-regex +files /man/1/sh-std +files /man/1/sh-test +files /man/1/stack +files /man/1/stream +files /man/1/sum +files /man/1/tcs +files /man/1/tiny +files /man/1/tktester +files /man/1/toolbar +files /man/1/touch +files /man/1/unicode +files /man/1/units +files /man/1/uuencode +files /man/1/wc +files /man/1/webgrab +files /man/1/wish +files /man/1/wm +files /man/1/wm-misc +files /man/1/wm-sh +files /man/1/yacc +files /man/10/0intro +files /man/10/2a +files /man/10/2c +files /man/10/2l +files /man/10/9load +files /man/10/a.out +files /man/10/acid +files /man/10/ar +files /man/10/c2l +files /man/10/conf +files /man/10/dev +files /man/10/devattach +files /man/10/error +files /man/10/iar +files /man/10/kproc +files /man/10/ksize +files /man/10/kstrip +files /man/10/mk +files /man/10/newchan +files /man/10/ntsrv +files /man/10/odbc +files /man/10/plan9.ini +files /man/10/srclist +files /man/10/styxserver +files /man/2/0intro +files /man/2/alphabet-intro +files /man/2/attrdb +files /man/2/bufio +files /man/2/convcs +files /man/2/dbm +files /man/2/debug +files /man/2/devpointer +files /man/2/dhcpclient +files /man/2/dis +files /man/2/disks +files /man/2/draw-display +files /man/2/draw-font +files /man/2/ether +files /man/2/exception +files /man/2/format +files /man/2/fsproto +files /man/2/imagefile +files /man/2/ip +files /man/2/keyring-0intro +files /man/2/keyring-auth +files /man/2/mpeg +files /man/2/palmfile +files /man/2/plumbmsg +files /man/2/print +files /man/2/prof +files /man/2/readdir +files /man/2/scsiio +files /man/2/secstore +files /man/2/security-0intro +files /man/2/security-random +files /man/2/selectfile +files /man/2/sh +files /man/2/styxpersist +files /man/2/styxservers +files /man/2/styxservers-nametree +files /man/2/sys-0intro +files /man/2/sys-bind +files /man/2/sys-dial +files /man/2/sys-file2chan +files /man/2/sys-iounit +files /man/2/sys-pctl +files /man/2/sys-stat +files /man/2/tftp +files /man/2/tkclient +files /man/2/translate +files /man/2/volume +files /man/2/wmclient +files /man/2/wmlib +files /man/2/wmsrv +files /man/2/xml +files /man/3/0intro +files /man/3/audio +files /man/3/boot +files /man/3/cmd +files /man/3/cons +files /man/3/dbg +files /man/3/draw +files /man/3/ds +files /man/3/dup +files /man/3/dynld +files /man/3/env +files /man/3/flash +files /man/3/fpga +files /man/3/fs +files /man/3/ftl +files /man/3/gpio +files /man/3/i2c +files /man/3/ip +files /man/3/logfs +files /man/3/lpt +files /man/3/mpeg +files /man/3/pbus +files /man/3/pipe +files /man/3/plap +files /man/3/pnp +files /man/3/prof +files /man/3/prog +files /man/3/root +files /man/3/sd +files /man/3/srv +files /man/3/ssl +files /man/3/tinyfs +files /man/3/tls +files /man/3/tv +files /man/3/usb +files /man/3/vid +files /man/4/0intro +files /man/4/acme +files /man/4/archfs +files /man/4/cpu +files /man/4/dbfs +files /man/4/dossrv +files /man/4/factotum +files /man/4/ftpfs +files /man/4/import +files /man/4/keyfs +files /man/4/keysrv +files /man/4/kfs +files /man/4/lockfs +files /man/4/namespace +files /man/4/palmsrv +files /man/4/registry +files /man/4/tarfs +files /man/5/0intro +files /man/5/open +files /man/5/stat +files /man/5/walk +files /man/6/attrdb +files /man/6/audio +files /man/6/font +files /man/6/image +files /man/6/keyboard +files /man/6/keys +files /man/6/man +files /man/6/namespace +files /man/6/ndb +files /man/6/plumbing +files /man/6/proto +files /man/6/sbl +files /man/6/translate +files /man/6/utf +files /man/7/dbsrv +files /man/8/applylog +files /man/8/bootpd +files /man/8/changelogin +files /man/8/collabsrv +files /man/8/create +files /man/8/createsignerkey +files /man/8/cs +files /man/8/dns +files /man/8/getauthinfo +files /man/8/httpd +files /man/8/init +files /man/8/kfscmd +files /man/8/logind +files /man/8/manufacture +files /man/8/mkfs +files /man/8/plumber +files /man/8/prep +files /man/8/rdbgsrv +files /man/8/register +files /man/8/rstyxd +files /man/8/shutdown +files /man/8/signer +files /man/8/sntp +files /man/8/srv +files /man/8/svc +files /man/8/touchcal +files /man/9/1copyright +fileserver /man/2/styxpersist +fileserver /man/6/ndb +filestore /man/1/0intro +filestore /man/2/venti +filesystem /man/1/alphabet-fs +filesystem /man/1/calendar +filesystem /man/1/fs +filesystem /man/10/9load +filesystem /man/2/dbm +filesystem /man/3/fs +filesystem /man/3/logfs +filesystem /man/4/dbfs +filesystem /man/4/lockfs +filesystem /man/4/memfs +filesystem /man/4/namespace +filesystems /man/1/alphabet-fs +filesystems /man/1/fs +filesystems /man/4/namespace +filet /man/2/daytime +fill /man/1/cook +fill /man/1/wm-misc +fill /man/10/dev +fill /man/10/styx +fill /man/2/bufio +fill /man/2/bufio-chanfill +fill /man/2/draw-image +fill /man/2/draw-screen +fill /man/2/filter +fill /man/2/prefab-element +fill /man/2/print +fill /man/2/regex +fill /man/2/spree-cardlib +fill /man/2/styx +fill /man/3/draw +fill /man/9/canvas +fill /man/9/grid +fill /man/9/pack +fill /man/9/text +fillarc /man/2/draw-image +fillarcop /man/2/draw-image +fillbezier /man/2/draw-image +fillbezierop /man/2/draw-image +fillbezspline /man/2/draw-image +fillbezsplineop /man/2/draw-image +filled /man/1/charon +filled /man/10/xalloc +filled /man/2/draw-image +filled /man/2/prefab-element +filled /man/2/security-random +filled /man/3/draw +filled /man/9/canvas +fillellipse /man/2/draw-image +fillellipse:fn /man/2/draw-image +fillellipseop /man/2/draw-image +fillellipseop:fn /man/2/draw-image +fillid /man/3/draw +filling /man/1/fmt +filling /man/1/wm-misc +filling /man/10/allocb +filling /man/10/devattach +filling /man/2/dbm +filling /man/2/prefab-element +filling /man/3/draw +filling /man/3/vga +filling /man/9/canvas +fillpoly /man/2/draw-image +fillpoly /man/9/canvas +fillpolyop /man/2/draw-image +fills /man/10/devattach +fills /man/2/bufio-chanfill +fills /man/2/dbm +fills /man/2/draw-image +fills /man/2/sets +fills /man/3/draw +fillx /man/2/spree-cardlib +filly /man/2/spree-cardlib +film /man/1/mux +film /man/6/colour +filter /man/1/alphabet-abc +filter /man/1/alphabet-fs +filter /man/1/alphabet-grid +filter /man/1/alphabet-main +filter /man/1/fs +filter /man/1/gzip +filter /man/1/sh-alphabet +filter /man/2/bloomfilter +filter /man/2/filter +filter /man/2/filter-deflate +filter /man/2/filter-slip +filter /man/2/spree-allow +filter /man/2/tk +filter /man/2/w3c-xpointers +filter /man/3/ssl +filter /man/3/tls +filter /man/3/touch +filter /man/4/registry +filter.m /man/2/filter +filter.m /man/2/filter-deflate +filter.m /man/2/filter-slip +filtered /man/1/alphabet-fs +filtered /man/1/fs +filtering /man/1/alphabet-fs +filtering /man/2/filter-deflate +filterpath /man/2/filter +filters /man/2/bloomfilter +filters /man/2/filter-deflate +filters /man/3/tls +filters /man/4/registry +fin /man/1/miniterm +final /man/1/acme +final /man/1/alphabet-main +final /man/1/basename +final /man/1/collab-clients +final /man/1/mash +final /man/1/mash-tk +final /man/1/secstore +final /man/1/sh-alphabet +final /man/2/crc +final /man/2/dhcpclient +final /man/2/dis +final /man/2/names +final /man/2/print +final /man/2/spree +final /man/2/sys-bind +final /man/2/sys-open +final /man/4/acme +final /man/4/iostats +final /man/5/0intro +final /man/5/walk +final /man/6/dis +final /man/8/touchcal +final /man/9/0intro +final /man/9/grid +finally /man/1/collab-clients +finally /man/1/gettar +finally /man/1/math-misc +finally /man/1/sh-alphabet +finally /man/1/wm-misc +finally /man/10/2c +finally /man/10/9load +finally /man/10/a.out +finally /man/10/c2l +finally /man/10/error +finally /man/10/print +finally /man/10/styxserver +finally /man/2/arg +finally /man/2/dis +finally /man/2/itslib +finally /man/2/math-fp +finally /man/2/sys-dial +finally /man/2/sys-print +finally /man/3/ip +finally /man/5/open +finally /man/6/auth +finally /man/6/colour +finally /man/8/cs +finally /man/8/prep +finally /man/8/rstyxd +finally,temporary /man/10/c2l +financial /man/1/mux +financial /man/2/security-0intro +findbyattr /man/2/attrdb +findfirst /man/2/attrdb +findid /man/2/spree-cardlib +finding /man/1/acme +finding /man/1/tiny +finding /man/1/wm-misc +finding /man/9/text +findpair /man/2/attrdb +finds /man/1/acme +finds /man/1/diff +finds /man/1/disdep +finds /man/1/sh-alphabet +finds /man/1/strings +finds /man/10/9load +finds /man/2/disks +finds /man/2/spree +finds /man/2/wmsrv +findsym /man/2/debug +findsym:fn /man/2/debug +fine /man/2/0intro +fine /man/2/prefab-element +fine /man/3/lpt +fine /man/3/tv +fine /man/6/image +finer /man/1/0intro +finer /man/2/draw-image +finer /man/3/prof +finish /man/1/mash +finish /man/1/sh +finished /man/1/grid-monitor +finished /man/1/sh-arg +finished /man/1/sh-file2chan +finished /man/2/filter +finished /man/2/itslib +finished /man/8/mangaload +finishes /man/2/ir +finishing /man/2/spree +finishing /man/2/styxservers +finite /man/2/math-fp +fio /man/2/bufio-chanfill +fire /man/1/spree-join +fired /man/9/destroy +firewall /man/3/ip +firewall /man/4/ftpfs +firewall /man/6/ndb +firewall /man/8/mangaload +firewalls /man/4/ftpfs +firmware /man/3/pbus +firstkey /man/2/dbm +fishcalledraawaru /man/10/plan9.ini +fit /man/1/charon +fit /man/1/grid-monitor +fit /man/1/math-misc +fit /man/10/dev +fit /man/10/print +fit /man/2/asn1 +fit /man/2/dbm +fit /man/2/disks +fit /man/2/prefab-element +fit /man/2/styx +fit /man/3/ds +fit /man/3/sd +fit /man/4/spree +fit /man/5/0intro +fit /man/6/image +fit /man/6/man +fit /man/9/entry +fit /man/9/grid +fit /man/9/pack +fit /man/9/text +fit.b /man/1/math-misc +fitfully /man/6/keyboard +fitness /man/9/1copyright +fits /man/1/math-misc +fits /man/10/9load +fits /man/9/scrollbar +fitting /man/1/tee +fix /man/1/acme +fix /man/8/kfscmd +fixed /man/1/acme +fixed /man/1/cpu +fixed /man/1/dd +fixed /man/1/fc +fixed /man/1/lc +fixed /man/10/odbc +fixed /man/2/draw-0intro +fixed /man/2/draw-image +fixed /man/2/palmfile +fixed /man/2/plumbmsg +fixed /man/2/prefab-element +fixed /man/2/security-0intro +fixed /man/2/ubfa +fixed /man/3/cons +fixed /man/3/logfs +fixed /man/3/mpeg +fixed /man/3/plap +fixed /man/3/pnp +fixed /man/3/touch +fixed /man/4/acme +fixed /man/6/colour +fixed /man/6/ubfa +fixed /man/8/init +fixed /man/8/prep +fixed /man/9/bind +fixed /man/9/canvas +fixed /man/9/grid +fixed /man/9/listbox +fixed /man/9/pack +fixed /man/9/types +fixedorigin /man/1/wm +fixfont /man/1/acme +fixfont /man/4/acme +flag /man/1/alphabet-fs +flag /man/1/alphabet-main +flag /man/1/cprof +flag /man/1/fs +flag /man/1/mash +flag /man/1/mc +flag /man/1/mk +flag /man/1/mprof +flag /man/1/prof +flag /man/1/sh +flag /man/1/sh-arg +flag /man/1/sh-std +flag /man/1/tail +flag /man/1/units +flag /man/1/uuencode +flag /man/10/2c +flag /man/10/allocb +flag /man/10/devattach +flag /man/10/kstrip +flag /man/10/mk +flag /man/10/newchan +flag /man/10/plan9.ini +flag /man/10/print +flag /man/10/splhi +flag /man/10ti925/tihost +flag /man/2/alphabet-intro +flag /man/2/asn1 +flag /man/2/debug +flag /man/2/dhcpclient +flag /man/2/draw-image +flag /man/2/filter-deflate +flag /man/2/imagefile +flag /man/2/math-fp +flag /man/2/mpeg +flag /man/2/regex +flag /man/2/sys-bind +flag /man/2/sys-export +flag /man/2/sys-print +flag /man/3/ip +flag /man/4/acme +flag /man/6/dis +flag /man/6/namespace +flag /man/8/prep +flag /man/9/grid +flagged /man/1/diff +flags /man/1/alphabet-main +flags /man/1/freq +flags /man/1/limbo +flags /man/1/mash +flags /man/1/sh +flags /man/1/sh-std +flags /man/10/2c +flags /man/10/kproc +flags /man/10/plan9.ini +flags /man/10/print +flags /man/2/alphabet-intro +flags /man/2/dbm +flags /man/2/dis +flags /man/2/factotum +flags /man/2/math-fp +flags /man/2/security-auth +flags /man/2/sh +flags /man/2/styxservers +flags /man/2/sys-export +flags /man/2/sys-pctl +flags /man/2/sys-print +flags /man/2/tk +flags /man/2/wmsrv +flags /man/5/stat +flags /man/6/dis +flags /man/8/kfscmd +flags /man/8/prep +flandrena /man/1/mk +flandrena /man/10/mk +flash /man/1/avr +flash /man/3/flash +flash /man/3/ftl +flash /man/3/logfs +flash /man/4/dbfs +flash /man/4/kfs +flash /man/8/0intro +flash /man/8/ftl +flash /man/8/init +flash /man/8/mangaload +flash /man/8/rdbgsrv +flashctl /man/3/flash +flashctl /man/3/ftl +flashes /man/3/pbus +flashes /man/8/prep +flashsize /man/8/ftl +flat /man/2/translate +flat /man/3/logfs +flat /man/9/button +flat /man/9/checkbutton +flat /man/9/options +flat /man/9/radiobutton +flat /man/9/types +flatex /man/2/stringinttab +flatexbook /man/2/stringinttab +flatexpart /man/2/stringinttab +flatexproc /man/2/stringinttab +flatexslides /man/2/stringinttab +fld /man/7/db +fleshier /man/1/tiny +flex6000 /man/3/fpga +flex6000 /man/8/fpgaload +flill /man/1/tktester +flip /man/2/spree-cardlib +float /man/1/cook +float /man/10/acid +float /man/10/c2l +float /man/10/odbc +float /man/2/w3c-css +floating /man/1/fc +floating /man/1/mathcalc +floating /man/1/mc +floating /man/1/units +floating /man/10/acid +floating /man/10/atoi +floating /man/10/kproc +floating /man/10/print +floating /man/2/math-0intro +floating /man/2/math-export +floating /man/2/math-fp +floating /man/2/sys-print +floating /man/9/canvas +floating /man/9/text +floats /man/1/ebook +floats /man/10/acid +floor /man/1/mathcalc +floor /man/1/mc +floor /man/2/math-fp +floppy /man/10/9load +floppy /man/2/disks +floppy /man/3/floppy +floppy /man/3/sd +floppy /man/8/prep +flow /man/1/mc +flow /man/1/sh +flow /man/1/sh-std +flow /man/10/qio +flow /man/2/sys-pipe +flow /man/3/eia +flow /man/3/ip +flow /man/3/mpeg +flow /man/8/mangaload +floyd /man/2/imagefile +flush /man/10/qio +flush /man/2/bufio +flush /man/2/convcs +flush /man/2/dbm +flush /man/2/draw-image +flush /man/2/math-0intro +flush /man/2/styx +flush /man/3/0intro +flush /man/3/dbg +flush /man/3/draw +flush /man/3/eia +flush /man/3/flash +flush /man/3/ip +flush /man/3/logfs +flush /man/5/0intro +flush /man/5/flush +flush /man/9/update +flush.ftpfs /man/4/ftpfs +flushed /man/1/xd +flushed /man/10/qio +flushed /man/2/bufio +flushed /man/2/convcs +flushed /man/2/draw-image +flushed /man/4/ftpfs +flushed /man/5/flush +flushed /man/9/panel +flushes /man/2/draw-image +flushes /man/3/boot +flushes /man/5/flush +flushes /man/9/update +flushing /man/2/draw-image +flushing /man/5/flush +flushnow /man/2/draw-image +flushoff /man/2/draw-image +flushon /man/2/draw-image +fly /man/1/0intro +fmag /man/10/ar +fmax /man/2/math-fp +fmin /man/2/math-fp +fmod /man/1/mathcalc +fmod /man/2/math-fp +fmt /man/1/fmt +fmt /man/10/acid +fmt /man/10/panic +fmt /man/10/print +fmt /man/10/styx +fmt /man/2/format +fmt /man/2/stringinttab +fmt.b /man/1/fmt +fmtfile /man/2/format +fmtfile.new /man/2/format +fmtinstall /man/10/print +fmtinstall /man/10/styx +fmtspec /man/2/format +fmtstring /man/2/stringinttab +fmtstringtab /man/2/stringinttab +fmtval /man/2/format +fn /man/1/mash +fn /man/1/mc +fn /man/1/sh-file2chan +fn /man/1/sh-std +fn /man/1/stack +fn /man/1/wm-sh +fn /man/1/yacc +fn /man/2/arg +fn /man/2/asn1 +fn /man/2/attrdb +fn /man/2/bloomfilter +fn /man/2/bufio +fn /man/2/bufio-chanfill +fn /man/2/cfg +fn /man/2/command +fn /man/2/convcs +fn /man/2/crc +fn /man/2/daytime +fn /man/2/dbm +fn /man/2/debug +fn /man/2/devpointer +fn /man/2/dhcpclient +fn /man/2/dialog +fn /man/2/dict +fn /man/2/dis +fn /man/2/diskblocks +fn /man/2/disks +fn /man/2/dividers +fn /man/2/draw-0intro +fn /man/2/draw-context +fn /man/2/draw-display +fn /man/2/draw-example +fn /man/2/draw-font +fn /man/2/draw-image +fn /man/2/draw-point +fn /man/2/draw-rect +fn /man/2/draw-screen +fn /man/2/drawmux +fn /man/2/encoding +fn /man/2/env +fn /man/2/ether +fn /man/2/exception +fn /man/2/factotum +fn /man/2/filepat +fn /man/2/filter +fn /man/2/filter-deflate +fn /man/2/filter-slip +fn /man/2/format +fn /man/2/fsproto +fn /man/2/geodesy +fn /man/2/hash +fn /man/2/ida +fn /man/2/imagefile +fn /man/2/ip +fn /man/2/ir +fn /man/2/itslib +fn /man/2/keyring-0intro +fn /man/2/keyring-auth +fn /man/2/keyring-certtostr +fn /man/2/keyring-crypt +fn /man/2/keyring-gensk +fn /man/2/keyring-getmsg +fn /man/2/keyring-getstring +fn /man/2/keyring-ipint +fn /man/2/keyring-rc4 +fn /man/2/keyring-sha1 +fn /man/2/keyset +fn /man/2/lock +fn /man/2/math-elem +fn /man/2/math-export +fn /man/2/math-fp +fn /man/2/math-linalg +fn /man/2/mpeg +fn /man/2/names +fn /man/2/newns +fn /man/2/palmfile +fn /man/2/plumbmsg +fn /man/2/pop3 +fn /man/2/popup +fn /man/2/prefab-compound +fn /man/2/prefab-element +fn /man/2/print +fn /man/2/prof +fn /man/2/pslib +fn /man/2/rand +fn /man/2/readdir +fn /man/2/regex +fn /man/2/registries +fn /man/2/scsiio +fn /man/2/secstore +fn /man/2/security-auth +fn /man/2/security-login +fn /man/2/security-random +fn /man/2/security-ssl +fn /man/2/selectfile +fn /man/2/sets +fn /man/2/sexprs +fn /man/2/sh +fn /man/2/smtp +fn /man/2/spki +fn /man/2/spki-verifier +fn /man/2/spree +fn /man/2/spree-allow +fn /man/2/spree-cardlib +fn /man/2/spree-gather +fn /man/2/spree-objstore +fn /man/2/srv +fn /man/2/string +fn /man/2/stringinttab +fn /man/2/styx +fn /man/2/styxconv +fn /man/2/styxpersist +fn /man/2/styxservers +fn /man/2/styxservers-nametree +fn /man/2/sys-bind +fn /man/2/sys-byte2char +fn /man/2/sys-chdir +fn /man/2/sys-dial +fn /man/2/sys-dirread +fn /man/2/sys-dup +fn /man/2/sys-export +fn /man/2/sys-fauth +fn /man/2/sys-file2chan +fn /man/2/sys-fversion +fn /man/2/sys-iounit +fn /man/2/sys-millisec +fn /man/2/sys-open +fn /man/2/sys-pctl +fn /man/2/sys-pipe +fn /man/2/sys-print +fn /man/2/sys-read +fn /man/2/sys-remove +fn /man/2/sys-seek +fn /man/2/sys-self +fn /man/2/sys-sleep +fn /man/2/sys-stat +fn /man/2/sys-tokenize +fn /man/2/sys-utfbytes +fn /man/2/tabs +fn /man/2/tftp +fn /man/2/timers +fn /man/2/tk +fn /man/2/tkclient +fn /man/2/translate +fn /man/2/ubfa +fn /man/2/venti +fn /man/2/virgil +fn /man/2/volume +fn /man/2/w3c-css +fn /man/2/w3c-xpointers +fn /man/2/wait +fn /man/2/wmclient +fn /man/2/wmlib +fn /man/2/wmsrv +fn /man/2/workdir +fn /man/2/xml +fn /man/3/kprof +fn /man/3/pnp +fn /man/6/dis +fn /man/6/sbl +fn /man/7/db +fn /man/8/init +fname /man/2/palmfile +fnd /man/2/stringinttab +fnn /man/1/mux +fns.h /man/10/0intro +fnvram /man/3/tinyfs +focus /man/1/wm +focus /man/9/0intro +focus /man/9/bind +focus /man/9/button +focus /man/9/canvas +focus /man/9/entry +focus /man/9/focus +focus /man/9/listbox +focus /man/9/menubutton +focus /man/9/options +focus /man/9/text +focused /man/1/acme +focused /man/2/wmclient +focusin /man/9/bind +focusout /man/9/bind +foil /man/6/login +fold /man/1/fmt +fold /man/1/look +folded /man/1/mk +folded /man/10/mk +folded /man/2/prefab-element +folding /man/1/limbo +folding /man/2/prefab-element +follow /man/1/mc +follow /man/1/sh-arg +follow /man/1/tail +follow /man/1/wm-sh +follow /man/1/yacc +follow /man/10/9load +follow /man/10/error +follow /man/2/sys-0intro +follow /man/2/w3c-xpointers +follow /man/3/sd +follow /man/3/tls +follow /man/3/vga +follow /man/4/acme +follow /man/4/factotum +follow /man/8/rstyxd +follow /man/9/0intro +follow /man/9/1copyright +follow /man/9/canvas +follow /man/9/grid +follow /man/9/text +font /man/1/acme +font /man/1/brutus +font /man/1/emu +font /man/1/lc +font /man/1/unicode +font /man/1/wm-misc +font /man/1/wm-sh +font /man/2/draw-0intro +font /man/2/draw-example +font /man/2/draw-font +font /man/2/draw-image +font /man/2/prefab-0intro +font /man/2/prefab-element +font /man/2/prefab-style +font /man/2/print +font /man/3/draw +font /man/4/namespace +font /man/6/font +font /man/6/image +font /man/6/man +font /man/9/button +font /man/9/canvas +font /man/9/checkbutton +font /man/9/choicebutton +font /man/9/entry +font /man/9/label +font /man/9/listbox +font /man/9/menu +font /man/9/menubutton +font /man/9/options +font /man/9/radiobutton +font /man/9/scale +font /man/9/text +font /man/9/types +font.build /man/6/font +font.open /man/2/draw-example +font.open /man/6/font +fontid /man/3/draw +fonts /man/1/acme +fonts /man/1/emu +fonts /man/1/fc +fonts /man/1/miniterm +fonts /man/1/wm-misc +fonts /man/2/draw-0intro +fonts /man/2/draw-font +fonts /man/2/draw-image +fonts /man/2/prefab-0intro +fonts /man/2/prefab-environ +fonts /man/2/prefab-style +fonts /man/2/sys-byte2char +fonts /man/3/draw +fonts /man/4/namespace +fonts /man/6/font +fonts /man/6/image +fonts /man/6/man +fonts /man/9/text +fonts /man/9/types +foo /man/1/alphabet-fs +foo /man/1/fs +foo /man/1/mk +foo /man/1/sh-alphabet +foo /man/10/mk +foo /man/2/alphabet-intro +foo.b /man/2/alphabet-intro +foo.m /man/2/alphabet-intro +fooled /man/4/iostats +foot /man/2/keyring-0intro +footer /man/2/filter-deflate +footprints /man/3/logfs +footypes.b /man/2/alphabet-intro +footypes.m /man/2/alphabet-intro +fopen /man/1/yacc +fopen /man/2/bufio +force100 /man/10/plan9.ini +forced /man/10/delay +forces /man/1/charon +forces /man/1/mc +forces /man/1/unicode +forces /man/2/asn1 +forces /man/3/logfs +forces /man/4/ftpfs +forcing /man/2/keyring-getstring +forcing /man/3/fpga +forcing /man/4/ftpfs +foregoing /man/9/1copyright +foreground /man/9/button +foreground /man/9/canvas +foreground /man/9/checkbutton +foreground /man/9/choicebutton +foreground /man/9/entry +foreground /man/9/label +foreground /man/9/listbox +foreground /man/9/menu +foreground /man/9/menubutton +foreground /man/9/options +foreground /man/9/radiobutton +foreground /man/9/scale +foreground /man/9/text +foreign /man/4/0intro +forge /man/2/security-0intro +forged /man/2/keyring-0intro +forget /man/1/tktester +forget /man/1/toolbar +forget /man/5/clunk +forget /man/9/grid +forget /man/9/pack +forgotten /man/1/tktester +forgotten /man/2/spree +forgotten /man/9/grid +fork /man/1/nsbuild +fork /man/1/tiny +fork /man/6/namespace +forked /man/1/sh +forkenv /man/2/sys-export +forkenv /man/2/sys-pctl +forkenv /man/3/env +forkfd /man/1/sh-std +forkfd /man/2/sys-pctl +forking /man/4/export +forkns /man/1/sh-std +forkns /man/2/command +forkns /man/2/security-auth +forkns /man/2/styxservers-nametree +forkns /man/2/sys-chdir +forkns /man/2/sys-export +forkns /man/2/sys-pctl +forkns /man/6/namespace +forks /man/1/sh +forks /man/1/tiny +forks /man/10/acid +forks /man/2/sys-export +forks /man/4/export +formally /man/1/acme +format /man/1/0intro +format /man/1/acme +format /man/1/alphabet-fs +format /man/1/alphabet-main +format /man/1/auplay +format /man/1/avr +format /man/1/brutus +format /man/1/charon +format /man/1/cook +format /man/1/crypt +format /man/1/date +format /man/1/disdep +format /man/1/ebook +format /man/1/fc +format /man/1/fs +format /man/1/gettar +format /man/1/gzip +format /man/1/itest +format /man/1/ls +format /man/1/mash +format /man/1/mash-make +format /man/1/mdb +format /man/1/mprof +format /man/1/nsbuild +format /man/1/prof +format /man/1/sh-csv +format /man/1/sh-sexprs +format /man/1/tktester +format /man/1/wc +format /man/1/wish +format /man/1/xd +format /man/10/0intro +format /man/10/2c +format /man/10/2l +format /man/10/5coff +format /man/10/5cv +format /man/10/9load +format /man/10/a.out +format /man/10/acid +format /man/10/ar +format /man/10/dev +format /man/10/devattach +format /man/10/dynld +format /man/10/iar +format /man/10/ksize +format /man/10/ms2 +format /man/10/odbc +format /man/10/panic +format /man/10/plan9.ini +format /man/10/print +format /man/10/rune +format /man/10/srclist +format /man/10/styx +format /man/10ti925/epocimg +format /man/2/attrdb +format /man/2/bufio +format /man/2/cfg +format /man/2/convcs +format /man/2/daytime +format /man/2/devpointer +format /man/2/dis +format /man/2/disks +format /man/2/draw-0intro +format /man/2/draw-context +format /man/2/draw-display +format /man/2/draw-font +format /man/2/draw-image +format /man/2/draw-screen +format /man/2/filter-deflate +format /man/2/format +format /man/2/geodesy +format /man/2/imagefile +format /man/2/ip +format /man/2/keyring-0intro +format /man/2/keyring-certtostr +format /man/2/keyring-ipint +format /man/2/newns +format /man/2/palmfile +format /man/2/plumbmsg +format /man/2/prefab-element +format /man/2/print +format /man/2/sets +format /man/2/smtp +format /man/2/styx +format /man/2/sys-0intro +format /man/2/sys-print +format /man/2/tk +format /man/2/translate +format /man/2/ubfa +format /man/2/wait +format /man/3/audio +format /man/3/cons +format /man/3/draw +format /man/3/dup +format /man/3/flash +format /man/3/floppy +format /man/3/fpga +format /man/3/ftl +format /man/3/ip +format /man/3/logfs +format /man/3/mpeg +format /man/3/pointer +format /man/3/prog +format /man/3/rtc +format /man/3/sign +format /man/3/tls +format /man/3/tv +format /man/3/vga +format /man/3/vid +format /man/4/0intro +format /man/4/acme +format /man/4/archfs +format /man/4/dbfs +format /man/4/dossrv +format /man/4/factotum +format /man/4/kfs +format /man/4/registry +format /man/6/attrdb +format /man/6/audio +format /man/6/colour +format /man/6/dis +format /man/6/font +format /man/6/image +format /man/6/keyboard +format /man/6/keytext +format /man/6/man +format /man/6/ndb +format /man/6/plumbing +format /man/6/sbl +format /man/6/scancode +format /man/6/ubfa +format /man/6/users +format /man/6/utf +format /man/7/dbsrv +format /man/8/applylog +format /man/8/bootpd +format /man/8/changelogin +format /man/8/collabsrv +format /man/8/create +format /man/8/dhcp +format /man/8/fpgaload +format /man/8/ftl +format /man/8/prep +format /man/8/styxchat +format /man/9/0intro +format /man/9/canvas +format /man/9/image +format.b /man/2/format +format.b /man/8/prep +format.m /man/2/format +formats /man/1/0intro +formats /man/1/crypt +formats /man/1/fc +formats /man/1/freq +formats /man/1/xd +formats /man/10/0intro +formats /man/10/2c +formats /man/10/5cv +formats /man/10/acid +formats /man/10/odbc +formats /man/10/print +formats /man/2/draw-image +formats /man/2/geodesy +formats /man/2/imagefile +formats /man/2/keyring-0intro +formats /man/2/palmfile +formats /man/2/sys-print +formats /man/3/kprof +formats /man/3/logfs +formats /man/3/mpeg +formats /man/3/prog +formats /man/4/factotum +formats /man/6/0intro +formats /man/6/colour +formats /man/6/image +formats /man/6/scancode +formatted /man/1/fmt +formatted /man/1/lc +formatted /man/1/ls +formatted /man/1/man +formatted /man/1/sh +formatted /man/10/print +formatted /man/10/styx +formatted /man/2/draw-context +formatted /man/2/spree-allow +formatted /man/2/styx +formatted /man/2/sys-0intro +formatted /man/2/sys-print +formatted /man/2/tk +formatted /man/2/tkclient +formatted /man/2/wmclient +formatted /man/2/wmsrv +formatted /man/3/cons +formatted /man/3/draw +formatted /man/3/floppy +formatted /man/3/ftl +formatted /man/3/pnp +formatted /man/3/tinyfs +formatted /man/4/acme +formatted /man/4/registry +formatted /man/5/stat +formatted /man/8/prep +formatted /man/9/bind +formatter /man/1/fmt +formatter /man/8/ftl +formatting /man/1/brutus +formatting /man/1/tktester +formatting /man/10/2c +formatting /man/10/print +formatting /man/10/styx +formatting /man/2/disks +formatting /man/3/vid +formatting /man/8/prep +formed /man/1/chmod +formed /man/1/mathcalc +formed /man/1/mc +formed /man/1/mk +formed /man/1/sh +formed /man/1/sh-sexprs +formed /man/1/sh-std +formed /man/10/2c +formed /man/10/mk +formed /man/2/asn1 +formed /man/2/attrdb +formed /man/2/names +formed /man/2/sexprs +formed /man/2/spki +formed /man/2/styxservers +formed /man/2/translate +formed /man/4/spree +formed /man/6/attrdb +formed /man/6/dis +formed /man/6/login +formed /man/8/ftl +former /man/1/acme +former /man/1/mc +former /man/2/prof +former /man/3/logfs +former /man/6/colour +former /man/8/prep +forming /man/10/a.out +forming /man/10/qlock +forming /man/2/asn1 +forming /man/2/disks +forming /man/2/draw-display +forming /man/2/string +forming /man/3/ip +forming /man/5/0intro +forms /man/1/acme +forms /man/1/brutus +forms /man/1/collab-clients +forms /man/1/diff +forms /man/1/mash +forms /man/1/mdb +forms /man/1/sh +forms /man/10/2c +forms /man/10/conf +forms /man/2/dhcpclient +forms /man/2/ip +forms /man/2/math-0intro +forms /man/2/sexprs +forms /man/2/spki +forms /man/2/styxservers-nametree +forms /man/2/sys-dial +forms /man/2/w3c-css +forms /man/2/w3c-xpointers +forms /man/6/keytext +forms /man/6/sexprs +forms /man/8/cs +forms /man/9/bind +forms /man/9/canvas +forms /man/9/entry +forms /man/9/grab +forms /man/9/grid +forms /man/9/image +forms /man/9/listbox +forms /man/9/menu +forms /man/9/pack +forms /man/9/scrollbar +forms /man/9/text +formula /man/2/bloomfilter +forth /man/4/factotum +forth /man/9/menu +fortran /man/2/math-0intro +fortran /man/2/math-linalg +fortunately /man/10/devattach +fortunately /man/2/asn1 +fortunately /man/2/security-0intro +fortune /man/1/fortune +fortune.b /man/1/fortune +fortunes /man/1/fortune +fortunes.index /man/1/fortune +forward /man/1/charon +forward /man/1/dd +forward /man/1/ebook +forward /man/1/mux +forward /man/1/wm-misc +forward /man/2/debug +forward /man/2/ir +forward /man/2/stringinttab +forward /man/9/text +forwarded /man/2/drawmux +forwarding /man/1/wm-sh +forwards /man/1/acme +forwards /man/1/brutus +forwards /man/1/charon +forwards /man/1/ebook +forwards /man/8/plumber +fossil /man/8/prep +fourth /man/1/secstore +fourth /man/2/pop3 +fourth /man/3/kprof +fourth /man/4/acme +fourth /man/8/create +fourth /man/9/text +foverwrite /man/2/palmfile +fp /man/1/fc +fp /man/2/0intro +fp /man/2/dis +fp /man/2/math-0intro +fp /man/2/math-fp +fp /man/6/dis +fpcontrol /man/2/math-fp +fpga /man/3/fpga +fpga /man/8/fpgaload +fpgaclk /man/3/fpga +fpgactl /man/3/fpga +fpgaload /man/3/fpga +fpgaload /man/8/fpgaload +fpgaload.b /man/8/fpgaload +fpgamemb /man/3/fpga +fpgamemw /man/3/fpga +fpgaprog /man/3/fpga +fpgastatus /man/3/fpga +fpr /man/10/acid +fprint /man/1/yacc +fprint /man/10/print +fprint /man/2/security-auth +fprint /man/2/sys-print +fprintf /man/10/print +fprivate /man/2/palmfile +fpstatus /man/2/math-fp +fr /man/1/rm +fr /man/1/tail +frac /man/1/mc +frac /man/9/scale +frac /man/9/types +fractal /man/1/wm-misc +fraction /man/10/print +fraction /man/2/sys-print +fraction /man/6/keyboard +fraction /man/9/canvas +fraction /man/9/entry +fraction /man/9/listbox +fraction /man/9/options +fraction /man/9/scrollbar +fraction /man/9/text +fractional /man/2/math-fp +fractional /man/9/scrollbar +fractional /man/9/types +fractions /man/9/listbox +fractions /man/9/scrollbar +fractions /man/9/text +frag /man/2/ida +fragment /man/2/ida +fragment /man/2/plumbmsg +fragments /man/2/ida +frags /man/2/ida +frame /man/1/charon +frame /man/1/deb +frame /man/1/tktester +frame /man/10/a.out +frame /man/2/debug +frame /man/2/dis +frame /man/2/draw-context +frame /man/2/draw-example +frame /man/2/spree-cardlib +frame /man/2/tkclient +frame /man/2/translate +frame /man/3/prog +frame /man/3/tv +frame /man/3/usb +frame /man/3/vid +frame /man/6/colour +frame /man/6/dis +frame /man/6/sbl +frame /man/9/0intro +frame /man/9/frame +frame /man/9/pack +frame.m /man/1/mash-make +framed /man/2/filter-slip +frames /man/1/charon +frames /man/1/deb +frames /man/1/limbo +frames /man/1/tktester +frames /man/1/webgrab +frames /man/1/wm-sh +frames /man/2/spree-cardlib +frames /man/9/frame +frameset /man/1/charon +framesets /man/1/charon +framework /man/1/wm-sh +framework /man/2/prefab-environ +framework /man/2/styxservers +framework /man/2/w3c-xpointers +framework /man/5/0intro +framing /man/2/filter-slip +framing /man/3/ip +france /man/1/miniterm +fred /man/10/styxserver +freeb /man/10/allocb +freeblist /man/10/allocb +freebsd /man/4/namespace +freeclient /man/10/styxserver +freed /man/10/allocb +freed /man/10/dev +freed /man/10/devattach +freed /man/10/qio +freed /man/2/alphabet-intro +freed /man/2/registries +freed /man/3/cons +freed /man/3/draw +freed /man/5/version +freedom /man/1/sh +freeing /man/1/mprof +freeing /man/10/allocb +freeing /man/10/parsecmd +freely /man/2/prefab-element +frees /man/10/allocb +frees /man/10/devattach +frees /man/10/dynld +frees /man/10/newchan +frees /man/10/qio +frees /man/10/xalloc +frees /man/2/draw-0intro +frees /man/2/registries +frees /man/3/cons +freeze /man/3/tv +freeze /man/9/grab +french /man/1/miniterm +freq /man/1/freq +freq /man/2/w3c-css +freq.b /man/1/freq +frequencies /man/1/freq +frequency /man/10/seconds +frequency /man/2/prof +frequency /man/3/fpga +frequency /man/3/prof +frequency /man/3/tv +frequently /man/2/draw-image +freset /man/2/palmfile +fresh /man/2/secstore +fresh /man/4/iostats +fresh /man/5/attach +fresource /man/2/palmfile +fri /man/2/daytime +friendly /man/2/convcs +friends /man/10/print +fromdir /man/1/cp +fromfile /man/1/cp +fromfile /man/1/mv +fromfiles /man/1/cp +fromid /man/2/spree +fromuser /man/3/cap +fromwho /man/2/smtp +fronly /man/2/palmfile +front /man/1/acme +front /man/1/deb +front /man/10/iar +front /man/10/qio +front /man/10/styxserver +front /man/2/draw-screen +front /man/9/text +fruitbat /man/6/attrdb +fs /man/1/alphabet-fs +fs /man/1/fs +fs /man/1/sh-alphabet +fs /man/1/zeros +fs /man/10/odbc +fs /man/10/plan9.ini +fs /man/2/fsproto +fs /man/3/ds +fs /man/3/fs +fs /man/3/ip +fs /man/6/ndb +fs /man/6/proto +fs /man/8/applylog +fs /man/8/bootpd +fs /man/8/mkfs +fs /man/8/prep +fs /man/8/rdbgsrv +fs.b /man/1/alphabet-fs +fs.b /man/1/fs +fs.tgz /man/8/rdbgsrv +fscfg /man/8/prep +fsconfig /man/3/ds +fsfilter.b /man/1/alphabet-fs +fsip /man/3/ip +fslib.b /man/1/fs +fsproto /man/2/fsproto +fsproto /man/6/proto +fsproto.b /man/2/fsproto +fsproto.m /man/2/fsproto +fstat /man/2/sys-0intro +fstat /man/2/sys-stat +fstat /man/4/dbfs +fstat /man/5/stat +fstypes.b /man/1/alphabet-fs +fsys /man/3/logfs +ft /man/1/miniterm +ft /man/10/plan9.ini +ftab /man/10/styxserver +ftest /man/1/ftest +ftest /man/8/prep +ftest.b /man/1/ftest +ftl /man/1/sh-test +ftl /man/3/flash +ftl /man/3/ftl +ftl /man/3/logfs +ftl /man/4/kfs +ftl /man/8/ftl +ftl /man/8/init +ftl /man/8/touchcal +ftl.b /man/8/ftl +ftlctl /man/3/ftl +ftldata /man/3/ftl +ftldata /man/8/ftl +ftp /man/1/charon +ftp /man/4/9srvfs +ftp /man/4/ftpfs +ftp.vitanuova.com /man/4/ftpfs +ftpfs /man/1/ns +ftpfs /man/4/ftpfs +ftpfs /man/6/ndb +ftphost /man/4/ftpfs +ftree /man/1/collab +ftree /man/1/ftree +fuchsia /man/9/types +fuid /man/2/styxservers +fulful /man/9/0intro +full /man/1/0intro +full /man/1/9win +full /man/1/acme +full /man/1/alphabet-fs +full /man/1/charon +full /man/1/cp +full /man/1/dd +full /man/1/deb +full /man/1/emu +full /man/1/fs +full /man/1/ftree +full /man/1/lc +full /man/1/mash-tk +full /man/1/stream +full /man/1/yacc +full /man/10/2c +full /man/10/dev +full /man/10/odbc +full /man/10/plan9.ini +full /man/10/qio +full /man/10/rune +full /man/10/styx +full /man/2/asn1 +full /man/2/debug +full /man/2/dhcpclient +full /man/2/ip +full /man/2/keyset +full /man/2/pop3 +full /man/2/prof +full /man/2/styxservers-nametree +full /man/2/sys-dial +full /man/2/w3c-xpointers +full /man/2/wmclient +full /man/3/eia +full /man/3/pipe +full /man/3/plap +full /man/3/vga +full /man/4/cpu +full /man/5/walk +full /man/6/colour +full /man/6/dis +full /man/6/keyboard +full /man/8/create +full /man/9/0intro +full /man/9/text +full /man/9/types +fullduplex /man/10/plan9.ini +fullhdr /man/2/prof +fullrune /man/10/rune +fully /man/1/acme +fully /man/1/charon +fully /man/1/sh-alphabet +fully /man/1/yacc +fully /man/10/2c +fully /man/2/draw-display +fully /man/2/draw-image +fully /man/2/tkclient +fully /man/2/wmclient +fully /man/3/draw +fully /man/4/acme +fully /man/6/colour +fully /man/8/bootpd +fume /man/10/odbc +fun1 /man/2/hash +fun2 /man/2/hash +funame /man/2/styxservers +func /man/10/acid +func /man/10/kproc +func /man/2/draw-image +function's /man/2/debug +function's /man/2/dis +function's /man/6/dis +function's /man/6/sbl +functionality /man/1/0intro +functionality /man/1/mash +functionality /man/1/mash-make +functionality /man/1/sh +functionality /man/1/sh-string +functionality /man/1/tiny +functionality /man/2/math-linalg +functionality /man/2/sh +functionality /man/2/spree-gather +functionality /man/2/styxservers +functionality /man/2/wmsrv +functionality /man/3/logfs +functionality /man/4/spree +functionally /man/1/sh +functionally /man/1/sh-std +functioning /man/2/sys-pctl +functionname /man/2/w3c-xpointers +fundamental /man/10/intrenable +fundamental /man/2/ida +fundamental /man/2/math-0intro +fundamental /man/2/sys-0intro +fundamental /man/3/draw +fundamental /man/3/prog +fundamental /man/6/sexprs +funprof /man/2/prof +funtab /man/2/prof +further /man/1/acme +further /man/1/collab-clients +further /man/1/miniterm +further /man/1/tail +further /man/1/wish +further /man/10/9load +further /man/10/acid +further /man/10/dmainit +further /man/10/dynld +further /man/10/error +further /man/10/intrenable +further /man/10/newchan +further /man/10/plan9.ini +further /man/10/styxserver +further /man/2/bufio +further /man/2/palmfile +further /man/2/prefab-0intro +further /man/2/prof +further /man/2/sexprs +further /man/2/spki +further /man/2/spki-verifier +further /man/2/styxservers +further /man/3/cap +further /man/3/cmd +further /man/3/draw +further /man/3/env +further /man/3/prof +further /man/3/tls +further /man/3/usb +further /man/4/factotum +further /man/5/open +further /man/5/stat +further /man/5/version +further /man/6/plumbing +further /man/8/create +further /man/8/cs +further /man/8/srv +further /man/8/svc +further /man/9/pack +furthermore /man/1/collab-clients +furthermore /man/1/ns +furthermore /man/10/0intro +furthermore /man/2/command +furthermore /man/2/security-auth +furthermore /man/2/sexprs +furthermore /man/3/logfs +furthermore /man/4/keyfs +furthermore /man/6/image +furthermore /man/6/sbl +furthermore /man/6/sexprs +furthermore /man/9/canvas +furthermore /man/9/text +futher /man/1/session +future /man/1/acme +future /man/3/prog +future /man/3/tls +future /man/8/svc +future /man/9/bind +future /man/9/canvas +future /man/9/entry +future /man/9/grab +future /man/9/send +future /man/9/text +fversion /man/2/sys-fversion +fversion /man/5/version +fvw /man/10/2c +fwd /man/2/spree-cardlib +fwstat /man/2/sys-0intro +fwstat /man/2/sys-stat +fwstat /man/5/stat +fx /man/10/plan9.ini +fxfd /man/10/plan9.ini +g.dis /man/2/sys-self +g800x600 /man/1/emu +gafr /man/3/gpio +gain /man/2/sys-pctl +gamay /man/10/odbc +game /man/1/wm-misc +game /man/2/spree +game /man/2/spree-allow +game /man/2/spree-cardlib +game /man/2/spree-gather +game /man/4/spree +games /man/1/fortune +games /man/2/spree-cardlib +games /man/6/ndb +gamma /man/1/mc +gamma /man/2/math-elem +gamma /man/6/colour +gap /man/1/session +gap /man/9/text +garbage /man/2/draw-0intro +garbage /man/2/registries +garbage /man/2/sys-dup +garbage /man/5/clunk +garbled /man/2/factotum +gary /man/2/palmfile +gate /man/1/alphabet-fs +gate /man/1/fs +gate /man/10/plan9.ini +gateway /man/1/miniterm +gateway /man/2/dhcpclient +gateway /man/3/ip +gateway /man/6/ndb +gateway /man/8/bootpd +gateway /man/8/dhcp +gateway /man/8/rip +gateway /man/9/send +gateways /man/8/rip +gather /man/1/alphabet-fs +gather /man/1/fs +gather /man/2/disks +gather /man/2/draw-image +gather /man/2/prof +gather /man/2/spree-gather +gather /man/4/iostats +gather.m /man/2/spree-gather +gathered /man/1/alphabet-fs +gathered /man/1/fs +gathered /man/2/prof +gatherengine /man/2/spree-gather +gathering /man/1/sh-std +gbit16 /man/10/styx +gbit32 /man/10/styx +gbit64 /man/10/styx +gbit8 /man/10/styx +gc /man/3/vga +ge /man/1/sh-expr +gedr /man/3/gpio +gemm /man/2/math-linalg +gen /man/10/devattach +gen /man/8/applylog +genbuf /man/10/devattach +gendraw /man/2/draw-image +gendrawop /man/2/draw-image +generalizedtime /man/2/asn1 +generally /man/1/0intro +generally /man/1/charon +generally /man/10/splhi +generally /man/2/draw-0intro +generally /man/2/styx +generally /man/2/styxservers +generally /man/2/wmsrv +generally /man/3/ip +generally /man/3/sign +generally /man/6/keyboard +generally /man/6/ndb +generally /man/8/bootpd +generalstring /man/2/asn1 +generate /man/1/asm +generate /man/1/limbo +generate /man/1/sh-csv +generate /man/1/sh-sexprs +generate /man/10/2c +generate /man/10/2l +generate /man/10/c2l +generate /man/10/print +generate /man/10/styxserver +generate /man/2/draw-0intro +generate /man/2/keyring-0intro +generate /man/2/keyring-gensk +generate /man/2/styxservers +generate /man/3/cons +generate /man/3/pipe +generate /man/4/mntgen +generate /man/4/spree +generate /man/5/0intro +generate /man/5/open +generate /man/5/read +generate /man/5/version +generate /man/6/keyboard +generate /man/8/createsignerkey +generate /man/9/options +generated /man/1/acme +generated /man/1/asm +generated /man/1/charon +generated /man/1/cook +generated /man/1/itest +generated /man/1/mux +generated /man/1/sh-string +generated /man/1/wm +generated /man/1/wm-sh +generated /man/1/xd +generated /man/1/zeros +generated /man/10/c2l +generated /man/10/conf +generated /man/10/devattach +generated /man/10ti925/epocimg +generated /man/2/draw-image +generated /man/2/ida +generated /man/2/keyring-0intro +generated /man/2/keyring-auth +generated /man/2/math-0intro +generated /man/2/security-login +generated /man/2/sh +generated /man/2/tk +generated /man/3/ip +generated /man/3/prog +generated /man/3/touch +generated /man/4/factotum +generated /man/4/spree +generated /man/5/attach +generated /man/5/clunk +generated /man/5/read +generated /man/5/remove +generated /man/5/stat +generated /man/5/version +generated /man/5/walk +generated /man/6/plumbing +generated /man/8/collabsrv +generated /man/9/bind +generated /man/9/canvas +generated /man/9/image +generated /man/9/scrollbar +generates /man/1/math-misc +generates /man/1/wm +generates /man/10/newchan +generates /man/10/plan9.ini +generates /man/2/keyring-gensk +generates /man/2/sys-byte2char +generates /man/5/attach +generates /man/5/open +generates /man/6/keyboard +generates /man/8/collabsrv +generates /man/9/text +generating /man/10/2c +generating /man/2/keyring-0intro +generating /man/2/math-0intro +generating /man/2/palmfile +generating /man/2/plumbmsg +generating /man/2/sh +generating /man/2/styx +generating /man/4/0intro +generation /man/1/cook +generation /man/1/limbo +generation /man/10/2c +generation /man/2/pslib +generation /man/2/rand +generation /man/2/security-random +generator /man/1/yacc +generator /man/2/keyring-ipint +generator /man/2/keyring-rc4 +generator /man/2/rand +generators /man/1/disdep +generic /man/10/plan9.ini +generic /man/2/alphabet-intro +generic /man/2/convcs +generic /man/2/disks +generic /man/2/xml +generic /man/6/proto +generic /man/8/mkfs +generically /man/2/0intro +generous /man/1/units +genprimes /man/1/math-misc +genprimes.b /man/1/math-misc +gensk /man/2/keyring-0intro +gensk /man/2/keyring-gensk +gensk /man/2/keyset +gensk /man/2/security-login +gensk /man/8/createsignerkey +genskfrompk /man/2/keyring-gensk +geodesy /man/2/geodesy +geodesy.b /man/2/geodesy +geodesy.m /man/2/geodesy +geodetic /man/2/geodesy +geom /man/1/filename +geom /man/1/mash-tk +geometric /man/2/draw-0intro +geometric /man/2/draw-image +geometrical /man/2/draw-image +geometries /man/2/disks +geometry /man/2/disks +geometry /man/2/prefab-element +geometry /man/3/sd +geometry /man/9/canvas +geometry /man/9/grid +geometry /man/9/options +geometry /man/9/pack +george /man/9/grid +gestures /man/1/keyboard +get2 /man/2/palmfile +get3 /man/2/palmfile +get4 /man/2/palmfile +getall /man/2/env +getarchivearray /man/2/spree-cardlib +getarchiveobj /man/2/spree-cardlib +getattr /man/2/spree +getauthinfo /man/1/bind +getauthinfo /man/1/rcmd +getauthinfo /man/2/keyset +getauthinfo /man/2/registries +getauthinfo /man/2/security-login +getauthinfo /man/6/keytext +getauthinfo /man/8/changelogin +getauthinfo /man/8/getauthinfo +getauthinfo /man/8/rstyxd +getauthinfo /man/8/svc +getauthinfo.b /man/8/getauthinfo +getb /man/2/bufio +getbtos /man/2/convcs +getbytearray /man/2/keyring-getstring +getc /man/2/bufio +getcard /man/2/spree-cardlib +getcards /man/2/spree-cardlib +getcsv /man/1/sh-csv +getenv /man/2/env +getexc /man/2/exception +getfid /man/2/styxservers +getfields /man/10/getfields +getfields /man/10/parsecmd +getfields.c /man/10/getfields +getfile /man/2/secstore +getfpcontrol /man/2/math-fp +getfpstatus /man/2/math-fp +gethostbyname /man/2/srv +getimage /man/2/tk +getint /man/2/dhcpclient +getip /man/2/dhcpclient +getips /man/2/dhcpclient +getkeys /man/2/cfg +getline /man/1/read +getlines /man/1/sh-csv +getlines /man/1/sh-sexprs +getlines /man/1/sh-std +getmsg /man/2/keyring-getmsg +getmsg /man/6/keytext +gets /man/1/sh +gets /man/1/sh-expr +gets /man/10/atoi +gets /man/2/bufio +gets /man/2/dhcpclient +gets /man/2/palmfile +gets /man/2/spree-cardlib +gets /man/5/0intro +gets /man/8/prep +getself /man/2/sh +getsexprs /man/1/sh-sexprs +getstob /man/2/convcs +getstring /man/2/dialog +getstring /man/2/keyring-0intro +getstring /man/2/keyring-getstring +gett /man/2/bufio +gettags /man/9/canvas +gettar /man/1/gettar +gettar /man/4/tarfs +gettar.b /man/1/gettar +getting /man/2/ubfa +getting /man/6/ubfa +getting /man/9/bind +getuserpasswd /man/2/factotum +getvalue /man/9/choicebutton +gewurztraminer /man/10/odbc +gfer /man/3/gpio +gg /man/9/types +gh /man/3/tv +ghost /man/10/panic +gid /man/10/ar +gid /man/10/devattach +gid /man/10/iar +gid /man/2/styxservers +gid /man/2/sys-0intro +gid /man/2/sys-stat +gid /man/3/fs +gid /man/3/logfs +gid /man/5/stat +gid /man/6/proto +gid /man/8/applylog +gid /man/8/create +gid /man/8/styxchat +gif /man/1/charon +gif /man/1/wm-misc +gif /man/2/imagefile +gif87a /man/1/charon +gif89a /man/1/charon +gifreader /man/2/imagefile +gifs /man/1/charon +gigabit /man/10/plan9.ini +gigabytes /man/10/plan9.ini +gl /man/3/tv +glean /man/2/debug +global /man/1/deb +global /man/1/mash +global /man/1/yacc +global /man/10/2c +global /man/10/dev +global /man/10/dynld +global /man/10/inm +global /man/10/kbdputc +global /man/10/qlock +global /man/10/readnum +global /man/2/alphabet-intro +global /man/2/debug +global /man/2/dis +global /man/2/spree-objstore +global /man/2/sys-0intro +global /man/3/dbg +global /man/3/draw +global /man/3/prof +global /man/3/prog +global /man/6/dis +global /man/6/sbl +global /man/9/checkbutton +global /man/9/choicebutton +global /man/9/menu +global /man/9/radiobutton +globally /man/1/0intro +globals /man/10/styxserver +gm /man/2/styxservers +gm /man/2/styxservers-nametree +gmt /man/1/date +gmt /man/10/seconds +gmt /man/2/daytime +gmt /man/2/sys-stat +gmt /man/3/cons +gmt /man/3/rtc +gmt /man/5/stat +gmt /man/6/keytext +goal /man/10/print +goal /man/2/sys-print +goals /man/2/security-0intro +goes /man/10/ref +goes /man/2/draw-image +goes /man/2/styxconv +goes /man/2/styxpersist +goes /man/2/sys-bind +goes /man/2/sys-open +goes /man/2/xml +goes /man/4/9srvfs +goes /man/4/keysrv +goes /man/8/prep +gone /man/1/blur +gone /man/1/grid-register +gone /man/3/srv +goo /man/1/0intro +goodbye /man/1/timestamp +goto /man/10/sleep +goto /man/2/xml +gotos /man/10/c2l +gotos /man/10/error +govern /man/1/sh-std +governing /man/2/math-fp +gpcr /man/3/gpio +gpdr /man/3/gpio +gpio /man/3/gpio +gpioclear /man/3/gpio +gpioctl /man/3/gpio +gpioedge /man/3/gpio +gpioset /man/3/gpio +gpiostatus /man/3/gpio +gplr /man/3/gpio +gpr /man/10/acid +gpsr /man/3/gpio +grab /man/1/wm-misc +grab /man/2/debug +grab /man/9/0intro +grab /man/9/canvas +grab /man/9/grab +grab /man/9/listbox +grabbed /man/9/canvas +grabbed /man/9/grab +grabbing /man/9/grab +grabbing /man/9/listbox +grabs /man/9/grab +gradually /man/1/charon +gradually /man/10/panic +grained /man/1/wm-misc +gram.y /man/10/mk +grammar /man/1/yacc +grammar /man/2/w3c-css +grammar /man/2/w3c-xpointers +grammar /man/6/ubfa +grammars /man/10/mk +gran /man/2/diskblocks +grant /man/5/0intro +grant /man/9/1copyright +granted /man/1/ls +granted /man/2/spki +granted /man/2/styxservers +granted /man/5/open +granting /man/10/eve +granting /man/5/attach +granularity /man/2/diskblocks +granularity /man/2/timers +graph /man/1/mk +graph /man/1/tsort +graph /man/10/mk +graph /man/3/kprof +graphic /man/10/plan9.ini +graphical /man/1/0intro +graphical /man/1/9win +graphical /man/1/alphabet-fs +graphical /man/1/charon +graphical /man/1/cprof +graphical /man/1/deb +graphical /man/1/ebook +graphical /man/1/fs +graphical /man/1/ftree +graphical /man/1/grid-monitor +graphical /man/1/grid-ns +graphical /man/1/grid-query +graphical /man/1/man +graphical /man/1/mash-tk +graphical /man/1/session +graphical /man/1/wm-misc +graphical /man/1/wm-sh +graphical /man/2/draw-display +graphical /man/3/draw +graphical /man/4/cpu +graphical /man/6/man +graphical /man/8/register +graphical /man/9/canvas +graphically /man/1/cprof +graphically /man/8/signer +graphics /man/1/emu +graphics /man/1/mux +graphics /man/1/sh-tk +graphics /man/1/wish +graphics /man/2/command +graphics /man/2/dialog +graphics /man/2/draw-0intro +graphics /man/2/draw-context +graphics /man/2/draw-display +graphics /man/2/draw-image +graphics /man/2/ir +graphics /man/2/prefab-0intro +graphics /man/2/prefab-environ +graphics /man/2/selectfile +graphics /man/2/sh +graphics /man/2/tk +graphics /man/3/cons +graphics /man/3/draw +graphics /man/3/vga +graphics /man/6/colour +graphics /man/9/canvas +graphics /man/9/panel +graphics /man/9/update +graphicstring /man/2/asn1 +graphing /man/1/disdep +gravity /man/1/units +gravity /man/9/text +gray /man/9/types +gre /man/3/ip +greater /man/1/emu +greater /man/1/itest +greater /man/1/sh-expr +greater /man/1/sh-test +greater /man/1/yacc +greater /man/10/dev +greater /man/10/memory +greater /man/10/strcat +greater /man/10/styx +greater /man/2/bloomfilter +greater /man/2/draw-0intro +greater /man/2/itslib +greater /man/2/math-fp +greater /man/2/palmfile +greater /man/2/spree-cardlib +greater /man/2/timers +greater /man/3/cons +greater /man/3/dbg +greater /man/3/ssl +greater /man/4/kfs +greater /man/5/0intro +greater /man/5/read +greater /man/5/walk +greater /man/6/image +greater /man/6/sbl +greater /man/7/db +greater /man/8/applylog +greater /man/9/canvas +greater /man/9/grid +greater /man/9/scale +greatest /man/9/0intro +greatly /man/10ti925/tihost +greek /man/2/draw-0intro +greek /man/2/draw-font +greek /man/6/keyboard +green /man/1/tktester +green /man/2/draw-0intro +green /man/2/draw-display +green /man/3/draw +green /man/3/pbus +green /man/3/tv +green /man/6/colour +green /man/6/image +green /man/9/types +greenwich /man/1/date +greenwich /man/2/daytime +grep /man/1/acme +grep /man/1/grep +grep /man/1/look +grep /man/1/time +grep /man/2/arg +grep /man/3/pnp +grep /man/6/keyboard +grep.b /man/1/grep +grer /man/3/gpio +grey /man/1/tktester +grey /man/2/draw-display +grey /man/2/imagefile +grey /man/6/colour +grey1 /man/2/draw-display +grey2 /man/2/draw-display +grey8 /man/2/draw-display +greyblue /man/2/draw-display +greygreen /man/2/draw-display +greyscale /man/1/emu +greyscale /man/2/draw-0intro +greyscale /man/2/draw-display +greyscale /man/2/draw-image +greyscale /man/6/colour +greyscale /man/6/image +grid /man/1/alphabet-abc +grid /man/1/alphabet-grid +grid /man/1/blur +grid /man/1/grid-localreg +grid /man/1/grid-monitor +grid /man/1/grid-ns +grid /man/1/grid-query +grid /man/1/grid-register +grid /man/1/session +grid /man/1/sh-alphabet +grid /man/1/tktester +grid /man/2/alphabet-intro +grid /man/2/draw-0intro +grid /man/2/draw-point +grid /man/2/draw-rect +grid /man/2/geodesy +grid /man/4/cpu +grid /man/4/registry +grid /man/9/0intro +grid /man/9/grid +grid.b /man/1/alphabet-abc +grid.b /man/1/alphabet-grid +grid.m /man/2/alphabet-intro +gridbag /man/9/grid +gridspacing /man/9/canvas +gridtypes.b /man/1/alphabet-abc +gridtypes.b /man/1/alphabet-grid +grim /man/10/allocb +grinstead /man/6/attrdb +grip /man/6/attrdb +groove /man/9/options +groove /man/9/types +group's /man/5/0intro +grouped /man/1/acme +grouped /man/1/sh +grouped /man/2/prefab-element +grouped /man/2/spree-gather +grouping /man/1/acme +grouping /man/1/mash +grouping /man/1/mc +grouping /man/1/units +grouping /man/9/menu +groups /man/1/ls +groups /man/10/iar +groups /man/2/attrdb +groups /man/2/dividers +groups /man/2/draw-0intro +groups /man/2/prefab-0intro +groups /man/2/spree-gather +groups /man/2/sys-0intro +groups /man/2/sys-stat +groups /man/2/ubfa +groups /man/3/logfs +groups /man/3/vid +groups /man/5/0intro +groups /man/5/stat +groups /man/6/attrdb +groups /man/6/users +groups /man/9/menu +groups /man/9/menubutton +grow /man/1/ebook +grow /man/9/grid +growing /man/10/a.out +grows /man/1/acme +grows /man/1/logwindow +grows /man/1/tail +gt /man/1/sh-expr +guarantee /man/1/limbo +guarantee /man/10/qlock +guarantee /man/10/rune +guarantee /man/2/keyring-0intro +guarantee /man/2/security-0intro +guarantee /man/2/sys-0intro +guarantee /man/3/pipe +guarantee /man/4/acme +guarantee /man/5/stat +guarantee /man/9/menu +guaranteed /man/1/pwd +guaranteed /man/10/memory +guaranteed /man/10/qlock +guaranteed /man/10/xalloc +guaranteed /man/2/alphabet-intro +guaranteed /man/2/math-0intro +guaranteed /man/2/sys-0intro +guaranteed /man/2/sys-open +guaranteed /man/2/sys-read +guaranteed /man/2/sys-stat +guaranteed /man/2/wmsrv +guaranteed /man/3/pipe +guaranteed /man/3/prof +guaranteed /man/5/open +guaranteed /man/5/read +guaranteed /man/9/canvas +guarantees /man/1/blur +guarantees /man/10/qio +guarantees /man/10/strcat +guarantees /man/4/spree +guarantees /man/9/bind +guard /man/10/lock +guarding /man/4/lockfs +guess /man/1/passwd +guess /man/2/disks +guess /man/2/keyring-0intro +guest /man/4/ftpfs +gui /man/1/0intro +gui /man/1/ebook +gui /man/9/grab +guide /man/1/acme +guide /man/1/ebook +guide /man/1/wm-misc +guide /man/2/palmfile +guide /man/4/namespace +guiding /man/6/keyboard +gunzip /man/1/gzip +gunzip.b /man/1/gzip +gux /man/1/cp +gw /man/3/ip +gwip /man/3/ip +gz /man/1/gzip +gzip /man/1/gzip +gzip /man/10/5cv +gzip /man/10/9load +gzip /man/2/filter +gzip /man/2/filter-deflate +gzip.b /man/1/gzip +h:self /man/2/hash +ha /man/2/keyring-0intro +ha /man/2/keyring-sha1 +hair /man/8/touchcal +halfway /man/9/listbox +halfway /man/9/text +halg /man/2/spki +hall /man/1/yacc +halo /man/9/canvas +halt /man/1/deb +halt /man/1/zeros +halt /man/10/acid +halt /man/10/panic +halt /man/3/cons +halt /man/8/kfscmd +halted /man/1/deb +halted /man/3/tls +halts /man/10/panic +halts /man/8/shutdown +handbook /man/3/gpio +handbook's /man/3/gpio +handed /man/10/memory +handed /man/10/readnum +handheld /man/1/ftree +handin /man/3/tls +handle /man/1/charon +handle /man/10/2a +handle /man/10/2c +handle /man/10/odbc +handle /man/10/qio +handle /man/2/asn1 +handle /man/2/dbm +handle /man/2/draw-screen +handle /man/2/print +handle /man/2/sh +handle /man/2/styxservers +handle /man/2/xml +handle /man/3/prog +handle /man/4/dossrv +handle /man/5/0intro +handle /man/6/utf +handle /man/7/db +handle /man/9/text +handled /man/1/dd +handled /man/1/units +handled /man/10/conf +handled /man/10/qio +handled /man/2/cfg +handled /man/2/sys-export +handled /man/3/cons +handled /man/3/ds +handled /man/5/flush +handler /man/1/sh-std +handler /man/10/allocb +handler /man/10/intrenable +handler /man/10/lock +handler /man/10/qio +handler /man/10/sleep +handler /man/2/0intro +handler /man/2/dis +handler /man/2/tkclient +handler /man/6/dis +handlers /man/10/allocb +handlers /man/10/error +handlers /man/10/malloc +handlers /man/10/qio +handlers /man/10/splhi +handlers /man/2/dis +handlers /man/3/cons +handlers /man/3/kprof +handlers /man/6/dis +handles /man/1/grid-localreg +handles /man/1/tkcmd +handles /man/10/2c +handles /man/10/error +handles /man/2/asn1 +handles /man/2/imagefile +handles /man/2/palmfile +handles /man/9/text +handling /man/1/brutus +handling /man/1/charon +handling /man/1/sh-regex +handling /man/10/error +handling /man/10/styx +handling /man/2/0intro +handling /man/2/draw-0intro +handling /man/2/styxservers +handling /man/3/draw +handling /man/9/canvas +handout /man/3/tls +handshake /man/2/venti +handshake /man/3/tls +handshaking /man/3/tls +handy /man/1/wm-misc +hang /man/3/dbg +hanging /man/6/man +hangs /man/2/sys-export +hangs /man/3/ip +hangup /man/10/qio +hangup /man/2/spree +hangup /man/2/sys-open +hangup /man/3/eia +hangup /man/3/ip +hangup /man/4/spree +happen /man/2/0intro +happen /man/5/stat +happen /man/9/menu +happen /man/9/text +happened /man/1/wm +happened /man/10/sleep +happened /man/9/checkbutton +happened /man/9/choicebutton +happened /man/9/radiobutton +happens /man/1/bind +happens /man/1/sh +happens /man/1/sh-string +happens /man/2/prof +happens /man/2/sys-bind +happens /man/9/menu +happens /man/9/text +hard /man/1/mdb +hard /man/1/passwd +hard /man/1/sh +hard /man/10/9load +hard /man/10/acid +hard /man/10/plan9.ini +hard /man/2/disks +hard /man/2/palmfile +hard /man/2/virgil +hard /man/8/prep +hard /man/8/virgild +harder /man/2/scsiio +hardly /man/1/asm +hardware /man/1/miniterm +hardware /man/1/mux +hardware /man/10/0intro +hardware /man/10/9load +hardware /man/10/conf +hardware /man/10/dev +hardware /man/10/dmainit +hardware /man/10/inb +hardware /man/10/intrenable +hardware /man/10/plan9.ini +hardware /man/10/xalloc +hardware /man/10ti925/tihost +hardware /man/2/ether +hardware /man/2/math-0intro +hardware /man/3/arch +hardware /man/3/cons +hardware /man/3/ether +hardware /man/3/flash +hardware /man/3/logfs +hardware /man/3/mpeg +hardware /man/3/pbus +hardware /man/3/switch +hardware /man/3/vga +hardware /man/3/vid +hardware /man/8/bootpd +hasattr /man/2/attrdb +hasexcept /man/6/dis +hash /man/1/alphabet-main +hash /man/1/secstore +hash /man/1/sum +hash /man/2/attrdb +hash /man/2/bloomfilter +hash /man/2/dbm +hash /man/2/dict +hash /man/2/dis +hash /man/2/hash +hash /man/2/ida +hash /man/2/keyring-0intro +hash /man/2/keyring-certtostr +hash /man/2/keyring-sha1 +hash /man/2/keyset +hash /man/2/registries +hash /man/2/secstore +hash /man/2/security-0intro +hash /man/2/spki +hash /man/2/stringinttab +hash /man/2/venti +hash /man/2/w3c-css +hash /man/3/0intro +hash /man/3/cap +hash /man/3/dynld +hash /man/3/sign +hash /man/3/tls +hash /man/4/import +hash /man/4/keysrv +hash /man/6/dis +hash /man/6/keys +hash /man/6/keytext +hash /man/6/login +hash.b /man/2/hash +hash.m /man/2/hash +hashalg /man/3/tls +hashalg /man/6/keytext +hashalgs /man/3/ssl +hashalgs /man/3/tls +hashbytes /man/2/spki +hashed /man/2/dbm +hashed /man/2/keyring-0intro +hashed /man/2/security-0intro +hashed /man/2/spki +hashes /man/2/secstore +hashes /man/2/spki +hashexp /man/2/spki +hashin /man/3/tls +hashing /man/2/dbm +hashing /man/2/factotum +hashing /man/2/hash +hashing /man/2/keyring-sha1 +hashing /man/2/security-0intro +hashing /man/2/spki +hashing /man/3/ssl +hashing /man/3/tls +hashnode /man/2/hash +hashout /man/3/tls +hashtable /man/2/hash +hashval /man/2/hash +haskbdfocus /man/1/wm +hasldt /man/6/dis +hasn't /man/10/styxserver +hasn't /man/9/canvas +hasn't /man/9/text +haspair /man/2/attrdb +hauppage /man/3/tv +haveai /man/4/factotum +haven't /man/9/text +hc /man/3/sd +hd /man/1/mash +hd /man/1/sh-std +hd /man/10/plan9.ini +hd /man/2/arg +hd /man/2/debug +hd /man/2/security-auth +hd /man/2/sh +hd /man/2/sys-tokenize +hd0disk /man/4/dossrv +hdr /man/10/ar +headed /man/10/allocb +headed /man/10/qio +headed /man/2/spki-verifier +header /man/1/auplay +header /man/1/crypt +header /man/1/sendmail +header /man/1/sh +header /man/1/uuencode +header /man/1/wm-misc +header /man/10/0intro +header /man/10/2c +header /man/10/2l +header /man/10/5cv +header /man/10/9load +header /man/10/a.out +header /man/10/ar +header /man/10/c2l +header /man/10/ms2 +header /man/10/styx +header /man/10ti925/epocimg +header /man/10ti925/tihost +header /man/2/alphabet-intro +header /man/2/asn1 +header /man/2/dis +header /man/2/filter-deflate +header /man/2/keyring-getmsg +header /man/2/spree +header /man/3/ether +header /man/3/ftl +header /man/3/ip +header /man/3/pbus +header /man/3/sign +header /man/3/tv +header /man/6/audio +header /man/6/dis +header /man/6/font +header /man/6/image +header /man/6/sbl +header /man/8/collabsrv +header /man/8/create +headerless /man/10/5cv +headers /man/10/allocb +headers /man/10/inm +headers /man/2/secstore +headers /man/3/ip +headers /man/3/pbus +headers /man/3/tls +headers /man/4/iostats +headers /man/8/create +headers /man/8/httpd +headers /man/8/mkfs +headers4 /man/3/ip +heading /man/1/acme +heading /man/1/cook +headings /man/1/lc +heads /man/2/command +heads /man/2/disks +headstr /man/10/acid +heap /man/1/emu +heap /man/1/mprof +heap /man/1/ps +heap /man/1/wm-misc +heap /man/2/0intro +heap /man/2/sys-0intro +heap /man/3/prof +heap /man/3/prog +heap /man/4/memfs +heart /man/1/0intro +hearts /man/2/spree-cardlib +heavily /man/2/geodesy +hectometre /man/2/geodesy +height /man/1/9win +height /man/1/charon +height /man/1/emu +height /man/1/units +height /man/1/wm-sh +height /man/2/dividers +height /man/2/draw-display +height /man/2/draw-font +height /man/2/prefab-element +height /man/2/print +height /man/2/pslib +height /man/3/vga +height /man/6/font +height /man/9/bind +height /man/9/button +height /man/9/canvas +height /man/9/checkbutton +height /man/9/choicebutton +height /man/9/entry +height /man/9/frame +height /man/9/grid +height /man/9/image +height /man/9/label +height /man/9/listbox +height /man/9/menubutton +height /man/9/options +height /man/9/pack +height /man/9/panel +height /man/9/radiobutton +height /man/9/scale +height /man/9/scrollbar +height /man/9/text +height /man/9/types +heights /man/1/acme +heirarchical /man/1/session +hellman /man/2/keyring-0intro +hellman /man/2/keyring-auth +hellman /man/2/keyring-gensk +hellman /man/2/security-0intro +hellman /man/6/auth +hellman /man/6/login +hello /man/1/listen +hello /man/1/mc +hello /man/1/sh +hello /man/1/sh-alphabet +hello /man/1/timestamp +hello /man/1/tiny +hello /man/2/draw-example +hello /man/6/sexprs +helmert /man/2/geodesy +help.html /man/1/charon +helper /man/2/alphabet-intro +helper /man/2/wmsrv +helpful /man/1/unicode +helpful /man/8/cs +helpful /man/8/rip +helps /man/2/disks +helps /man/2/registries +helps /man/2/styxservers +helps /man/2/wait +helps /man/8/changelogin +helpurl /man/1/charon +hence /man/10/9load +hence /man/10/intrenable +hence /man/10/plan9.ini +hence /man/2/draw-0intro +hence /man/2/sets +hence /man/5/0intro +hence /man/9/scale +henceforth /man/1/bind +henceforth /man/1/sh-tk +henceforth /man/2/sys-bind +hereby /man/9/1copyright +heuristics /man/2/disks +hex /man/1/freq +hex /man/1/mdb +hex /man/1/unicode +hex /man/2/sys-print +hex /man/2/w3c-css +hex /man/3/pnp +hex /man/4/factotum +hex /man/6/sexprs +hex /man/9/types +hexadecimal /man/1/cmp +hexadecimal /man/1/fc +hexadecimal /man/1/mathcalc +hexadecimal /man/1/mdb +hexadecimal /man/1/strings +hexadecimal /man/1/sum +hexadecimal /man/1/tr +hexadecimal /man/1/unicode +hexadecimal /man/1/xd +hexadecimal /man/10/2l +hexadecimal /man/10/atoi +hexadecimal /man/10/inm +hexadecimal /man/10/print +hexadecimal /man/2/encoding +hexadecimal /man/2/ether +hexadecimal /man/2/ip +hexadecimal /man/2/keyset +hexadecimal /man/2/registries +hexadecimal /man/2/sets +hexadecimal /man/2/sexprs +hexadecimal /man/2/sys-print +hexadecimal /man/3/arch +hexadecimal /man/3/dbg +hexadecimal /man/3/ether +hexadecimal /man/3/flash +hexadecimal /man/3/gpio +hexadecimal /man/3/i2c +hexadecimal /man/3/ip +hexadecimal /man/3/lpt +hexadecimal /man/3/pnp +hexadecimal /man/3/prog +hexadecimal /man/3/tls +hexadecimal /man/4/factotum +hexadecimal /man/4/keysrv +hexadecimal /man/5/0intro +hexadecimal /man/6/font +hexadecimal /man/6/keyboard +hexadecimal /man/6/sbl +hexadecimal /man/6/sexprs +hexadecimal /man/6/utf +hexadecimal /man/9/bind +hexadecimal /man/9/types +hexcolour /man/2/w3c-css +hexdigit /man/2/w3c-css +hexdigits /man/2/sets +hexmax /man/1/unicode +hexmin /man/1/unicode +hh /man/10/print +hh /man/6/sexprs +hh:mm:ss /man/2/spki +hi /man/1/sh +hidden /man/1/deb +hidden /man/1/logwindow +hidden /man/1/tktester +hidden /man/1/toolbar +hidden /man/2/keyring-0intro +hide /man/1/bind +hide /man/1/charon +hide /man/1/mash-make +hide /man/1/tktester +hide /man/2/sh +hide /man/2/sys-bind +hide /man/2/tkclient +hide /man/2/wmclient +hide /man/3/ftl +hide /man/4/ramfile +hides /man/3/flash +hiding /man/1/acme +hierarchical /man/1/0intro +hierarchical /man/1/alphabet-fs +hierarchical /man/1/deb +hierarchical /man/1/fs +hierarchical /man/1/sh-alphabet +hierarchical /man/2/debug +hierarchical /man/2/spree +hierarchical /man/2/styxservers-nametree +hierarchical /man/2/sys-0intro +hierarchical /man/3/logfs +hierarchical /man/4/kfs +hierarchical /man/5/0intro +hierarchically /man/2/draw-0intro +hierarchically /man/2/prefab-0intro +hierarchies /man/2/styxservers-nametree +hierarchy /man/1/alphabet-fs +hierarchy /man/1/collab +hierarchy /man/1/fs +hierarchy /man/10/devattach +hierarchy /man/2/drawmux +hierarchy /man/2/keyring-0intro +hierarchy /man/2/spree +hierarchy /man/2/spree-cardlib +hierarchy /man/2/spree-gather +hierarchy /man/2/spree-objstore +hierarchy /man/2/styxservers +hierarchy /man/2/styxservers-nametree +hierarchy /man/2/sys-0intro +hierarchy /man/3/cmd +hierarchy /man/5/0intro +hierarchy /man/5/walk +hierarchy /man/6/ndb +hierarchy /man/6/proto +hierarchy /man/9/grab +hierarchy /man/9/grid +hierarchy /man/9/pack +higher /man/1/charon +higher /man/1/gzip +higher /man/1/itest +higher /man/1/sh-alphabet +higher /man/10/kproc +higher /man/10/lock +higher /man/10/xalloc +higher /man/2/draw-0intro +higher /man/2/draw-image +higher /man/2/sets +higher /man/2/wmlib +higher /man/3/flash +higher /man/3/kprof +higher /man/3/pbus +higher /man/3/vga +higher /man/5/0intro +higher /man/6/utf +higher /man/8/bootpd +higher /man/9/canvas +higher /man/9/text +highest /man/1/itest +highest /man/1/mash +highest /man/1/mc +highest /man/10/a.out +highest /man/10/kproc +highest /man/10/lock +highest /man/2/filter-deflate +highest /man/2/keyring-0intro +highest /man/2/sys-fversion +highest /man/3/draw +highest /man/8/prep +highest /man/9/choicebutton +highest /man/9/text +highlight /man/1/acme +highlight /man/1/deb +highlight /man/2/prefab-compound +highlight /man/2/prefab-style +highlight /man/9/listbox +highlight /man/9/options +highlightcolor /man/2/prefab-style +highlightcolor /man/9/button +highlightcolor /man/9/checkbutton +highlightcolor /man/9/entry +highlightcolor /man/9/label +highlightcolor /man/9/listbox +highlightcolor /man/9/menubutton +highlightcolor /man/9/options +highlightcolor /man/9/radiobutton +highlightcolor /man/9/scale +highlighted /man/1/acme +highlighted /man/2/prefab-compound +highlighting /man/2/prefab-compound +highlighting /man/2/prefab-element +highlights /man/1/acme +highlights /man/1/deb +highlightthickness /man/9/button +highlightthickness /man/9/checkbutton +highlightthickness /man/9/entry +highlightthickness /man/9/label +highlightthickness /man/9/listbox +highlightthickness /man/9/menubutton +highlightthickness /man/9/options +highlightthickness /man/9/radiobutton +highlightthickness /man/9/scale +highwater /man/1/wm-misc +hillerson /man/2/palmfile +hinfo /man/8/dns +hinfox /man/8/dns +hint /man/2/sexprs +hints /man/2/registries +hiqvideo /man/3/vga +hiqvideohwgc /man/3/vga +histogram /man/1/freq +histogram /man/3/prof +histograms /man/1/freq +historical /man/5/0intro +historically /man/1/cal +hit /man/1/deb +hit /man/2/prefab-compound +hit /man/2/tk +hitchannel /man/2/tk +hits /man/1/collab-clients +hits /man/1/deb +hits /man/2/debug +hitting /man/1/miniterm +hmac /man/2/keyring-sha1 +hmac /man/3/cap +hmac.c /man/2/keyring-sha1 +hoc /man/10/plan9.ini +hold /man/1/acme +hold /man/1/alphabet-fs +hold /man/1/fs +hold /man/1/kill +hold /man/1/limbo +hold /man/1/wm-sh +hold /man/1/yacc +hold /man/1/zeros +hold /man/10/a.out +hold /man/2/draw-0intro +hold /man/2/draw-image +hold /man/2/format +hold /man/2/palmfile +hold /man/2/secstore +hold /man/2/sh +hold /man/2/spree +hold /man/2/styx +hold /man/2/styxservers-nametree +hold /man/2/sys-byte2char +hold /man/2/tk +hold /man/2/wmsrv +hold /man/3/flash +hold /man/4/registry +hold /man/5/0intro +hold /man/8/prep +hold /man/9/pack +holder /man/1/du +holder /man/1/gettar +holder /man/10/qlock +holder /man/2/spki +holders /man/3/root +holders /man/4/namespace +holding /man/1/0intro +holding /man/1/acme +holding /man/1/limbo +holding /man/1/wm +holding /man/1/wm-misc +holding /man/10/plan9.ini +holding /man/2/alphabet-intro +holding /man/2/convcs +holding /man/2/daytime +holding /man/2/draw-display +holding /man/2/format +holding /man/2/keyset +holding /man/2/sets +holding /man/2/spree +holding /man/2/sys-file2chan +holding /man/2/wmsrv +holding /man/2/xml +holding /man/3/logfs +holding /man/3/sign +holding /man/4/acme +holding /man/4/namespace +holding /man/5/stat +holding /man/6/font +holds /man/1/acme +holds /man/1/secstore +holds /man/1/sh +holds /man/10/parsecmd +holds /man/10/print +holds /man/10/ref +holds /man/10/styx +holds /man/2/alphabet-intro +holds /man/2/crc +holds /man/2/debug +holds /man/2/format +holds /man/2/imagefile +holds /man/2/keyring-auth +holds /man/2/keyring-crypt +holds /man/2/keyset +holds /man/2/palmfile +holds /man/2/prefab-compound +holds /man/2/print +holds /man/2/registries +holds /man/2/sets +holds /man/2/sh +holds /man/2/spree +holds /man/2/spree-allow +holds /man/2/spree-cardlib +holds /man/2/spree-objstore +holds /man/2/styxpersist +holds /man/2/styxservers +holds /man/2/sys-dup +holds /man/2/sys-tokenize +holds /man/2/w3c-css +holds /man/2/wmclient +holds /man/2/wmlib +holds /man/2/wmsrv +holds /man/2/xml +holds /man/3/cons +holds /man/3/kprof +holds /man/3/rtc +holds /man/3/touch +holds /man/4/acme +holds /man/4/spree +holds /man/6/keys +holds /man/9/variable +holes /man/10/xalloc +holes /man/2/dbm +homedir /man/8/bootpd +homeurl /man/1/charon +honor /man/5/flush +honor /man/5/version +honour /man/8/logind +honours /man/1/sh-file2chan +hope /man/10/panic +horizontal /man/1/deb +horizontal /man/2/draw-display +horizontal /man/2/draw-image +horizontal /man/2/draw-rect +horizontal /man/2/prefab-compound +horizontal /man/2/prefab-element +horizontal /man/3/draw +horizontal /man/9/canvas +horizontal /man/9/entry +horizontal /man/9/grid +horizontal /man/9/listbox +horizontal /man/9/menu +horizontal /man/9/options +horizontal /man/9/pack +horizontal /man/9/scale +horizontal /man/9/scrollbar +horizontal /man/9/text +horizontally /man/2/dividers +horizontally /man/2/print +horizontally /man/9/pack +horizontaly /man/1/tktester +host /man/1/0intro +host /man/1/asm +host /man/1/bind +host /man/1/charon +host /man/1/chgrp +host /man/1/chmod +host /man/1/cpu +host /man/1/emu +host /man/1/limbo +host /man/1/netstat +host /man/1/os +host /man/1/rcmd +host /man/1/sendmail +host /man/1/telnet +host /man/10/0intro +host /man/10/2c +host /man/10/9load +host /man/10/conf +host /man/10/eve +host /man/10/kproc +host /man/10/ntsrv +host /man/2/dhcpclient +host /man/2/registries +host /man/2/secstore +host /man/2/srv +host /man/2/sys-dial +host /man/2/tftp +host /man/2/virgil +host /man/3/audio +host /man/3/boot +host /man/3/cap +host /man/3/cmd +host /man/3/cons +host /man/3/dbg +host /man/3/dynld +host /man/3/fs +host /man/3/ip +host /man/3/pointer +host /man/3/sign +host /man/3/snarf +host /man/3/usb +host /man/4/factotum +host /man/4/ftpfs +host /man/4/import +host /man/6/keyboard +host /man/6/keys +host /man/6/ndb +host /man/7/dbsrv +host /man/8/changelogin +host /man/8/cs +host /man/8/dhcp +host /man/8/dns +host /man/8/getauthinfo +host /man/8/init +host /man/8/logind +host /man/8/mangaload +host /man/8/ping +host /man/8/rdbgsrv +host /man/8/register +host /man/8/signer +host /man/8/svc +host's /man/2/ip +host's /man/2/sys-dial +host's /man/3/cmd +host's /man/3/usb +host's /man/8/cs +host's /man/8/dhcp +host's /man/8/dns +hosted /man/1/0intro +hosted /man/1/bind +hosted /man/1/os +hosted /man/1/ps +hosted /man/10/0intro +hosted /man/10/conf +hosted /man/10/eve +hosted /man/10/ntsrv +hosted /man/2/0intro +hosted /man/2/srv +hosted /man/2/sys-sleep +hosted /man/3/audio +hosted /man/3/cmd +hosted /man/3/ip +hosted /man/3/pointer +hosted /man/3/snarf +hosted /man/3/srv9 +hosted /man/4/9srvfs +hosted /man/4/import +hosted /man/4/namespace +hosted /man/7/db +hosted /man/8/0intro +hosted /man/8/dns +hosted /man/8/ping +hostname /man/8/dhcp +hosts /man/2/ip +hosts /man/8/svc +hot /man/9/cursor +hour /man/2/daytime +hours /man/2/daytime +howlett /man/9/grid +hp /man/2/print +hp /man/4/namespace +hp /man/6/man +hpcode /man/2/print +hpmapfile /man/2/print +hrc /man/3/tv +hsync /man/3/vga +ht /man/2/hash +html /man/1/charon +html /man/1/cook +html /man/1/ebook +html /man/1/webgrab +html /man/2/stringinttab +http /man/1/charon +http /man/1/webgrab +http /man/2/dhcpclient +http /man/2/sexprs +http /man/2/w3c-css +http /man/2/w3c-xpointers +http /man/2/xml +http /man/6/ubfa +http /man/8/httpd +http.suff /man/8/httpd +http1.0 /man/1/charon +httpd /man/8/httpd +httpd.debug /man/8/httpd +httpd.log /man/8/httpd +httpd.m /man/8/httpd +httpd.rewrite /man/8/httpd +httpd.suff /man/8/httpd +httpproxy /man/1/charon +httpproxy /man/1/webgrab +https /man/1/charon +https /man/1/webgrab +hue /man/3/tv +hue /man/6/colour +hues /man/6/colour +huffman /man/1/gzip +huge /man/2/math-linalg +hume /man/1/mk +hume /man/10/mk +hundred /man/3/tinyfs +hung /man/10/qio +hungup /man/10/qio +hungup /man/10/styxserver +hungup /man/3/ip +hungup /man/3/tls +hwaccel /man/3/vga +hwblank /man/3/vga +hwgc /man/3/vga +hybrid /man/1/gzip +hybrid /man/8/create +hyperbolic /man/2/math-elem +hypertext /man/9/text +hyphen /man/2/arg +hypot /man/1/mathcalc +hypot /man/2/math-elem +hz /man/1/auplay +hz /man/10/seconds +hz /man/3/audio +hz /man/3/mpeg +hz /man/6/audio +i.e /man/1/alphabet-fs +i.e /man/1/fs +i.e /man/1/sh-alphabet +i.e /man/1/sh-std +i.e /man/1/yacc +i.e /man/10/ms2 +i.e /man/10/plan9.ini +i.e /man/10ti925/epocimg +i.e /man/10ti925/tihost +i.e /man/2/debug +i.e /man/2/format +i.e /man/2/security-login +i.e /man/2/sh +i.e /man/2/spree +i.e /man/2/styxservers-nametree +i.e /man/4/dbfs +i.e /man/4/factotum +i.e /man/8/prep +i.e /man/9/canvas +i.e /man/9/entry +i.e /man/9/listbox +i.e /man/9/scale +i.e /man/9/text +i2c /man/3/i2c +i2c.c /man/3/i2c +ia5string /man/2/asn1 +iallocb /man/10/allocb +ialt /man/2/dis +iamax /man/2/math-linalg +iar /man/10/2l +iar /man/10/ar +iar /man/10/iar +iar /man/10/inm +ib /man/6/man +ibm /man/1/dd +ibm /man/2/disks +ibm /man/3/rtc +ibm866 /man/2/convcs +ibm866.cp /man/2/convcs +ibs /man/1/dd +ibutton /man/1/mash-tk +ibuttons /man/1/mash-tk +ic /man/1/miniterm +ic /man/1/wm-sh +icmp /man/3/ip +icmp /man/8/mangaload +icmp /man/8/ping +icon /man/1/cprof +icon /man/1/deb +icon /man/1/mash-tk +icon /man/1/mux +icon /man/2/dialog +icon /man/2/prefab-compound +icon /man/2/prefab-element +iconbox /man/2/prefab-compound +iconising /man/1/wm-misc +icons /man/1/cprof +icons /man/1/mash-tk +icons /man/1/mux +icons /man/1/toolbar +icons /man/2/draw-example +icons /man/2/prefab-element +icons /man/4/namespace +icons /man/9/types +icontrol /man/9/text +ics /man/1/tcs +icursor /man/9/canvas +icursor /man/9/entry +id /man/1/acme +id /man/1/blur +id /man/1/chgrp +id /man/1/collab-clients +id /man/1/cp +id /man/1/grid-monitor +id /man/1/idea +id /man/1/kill +id /man/1/miniterm +id /man/1/mk +id /man/1/ps +id /man/1/sh +id /man/1/sh-file2chan +id /man/1/sh-std +id /man/1/sh-tk +id /man/1/stack +id /man/1/wm +id /man/10/acid +id /man/10/devattach +id /man/10/kproc +id /man/10/mk +id /man/10/newchan +id /man/10/plan9.ini +id /man/10/styxserver +id /man/2/asn1 +id /man/2/command +id /man/2/debug +id /man/2/draw-display +id /man/2/draw-screen +id /man/2/exception +id /man/2/factotum +id /man/2/filter +id /man/2/ir +id /man/2/palmfile +id /man/2/spree +id /man/2/spree-allow +id /man/2/spree-cardlib +id /man/2/styxconv +id /man/2/styxservers +id /man/2/sys-open +id /man/2/sys-pctl +id /man/2/sys-stat +id /man/2/timers +id /man/2/w3c-css +id /man/2/wait +id /man/2/wmsrv +id /man/2/xml +id /man/3/cmd +id /man/3/cons +id /man/3/dbg +id /man/3/draw +id /man/3/flash +id /man/3/pnp +id /man/4/acme +id /man/4/factotum +id /man/4/kfs +id /man/5/0intro +id /man/5/open +id /man/6/sbl +id /man/8/collabsrv +id /man/8/create +id /man/8/logind +id /man/8/manufacture +id /man/8/register +id /man/8/signer +id /man/9/canvas +ida /man/2/ida +ida.b /man/2/ida +ida.m /man/2/ida +idatab.b /man/2/ida +idea /man/1/acme +idea /man/1/idea +idea /man/10/c2l +idea /man/10/plan9.ini +idea /man/10/seconds +idea /man/2/keyring-0intro +idea /man/2/keyring-crypt +idea /man/3/ssl +idea /man/5/attach +idea /man/6/colour +idea.b /man/1/idea +idea.c /man/1/idea +ideabsize /man/2/keyring-crypt +ideacbc /man/1/crypt +ideacbc /man/2/keyring-crypt +ideacbc /man/3/ssl +ideaecb /man/2/keyring-crypt +ideaecb /man/3/ssl +ideal /man/9/bind +ideally /man/10/dev +ideally /man/3/cmd +ideas /man/1/0intro +ideas /man/9/canvas +ideas /man/9/grid +ideasetup /man/2/keyring-crypt +ideastate /man/2/keyring-crypt +idea™ /man/2/keyring-crypt +idempotent /man/1/fmt +idempotent /man/2/styxpersist +ident /man/2/w3c-css +identical /man/1/acme +identical /man/1/diff +identical /man/1/mk +identical /man/1/xd +identical /man/1/yacc +identical /man/10/mk +identical /man/10/ntsrv +identical /man/2/0intro +identical /man/2/draw-image +identical /man/2/math-0intro +identical /man/2/sets +identical /man/2/sexprs +identical /man/2/sys-read +identical /man/2/ubfa +identical /man/3/dup +identical /man/4/acme +identical /man/5/0intro +identical /man/6/image +identically /man/2/draw-image +identifers /man/2/asn1 +identification /man/3/draw +identification /man/3/ip +identification /man/3/pnp +identification /man/5/0intro +identification /man/5/stat +identifications /man/5/0intro +identified /man/1/acme +identified /man/1/kill +identified /man/1/wm +identified /man/10/plan9.ini +identified /man/10/styxserver +identified /man/2/debug +identified /man/2/spree +identified /man/2/styxservers-nametree +identified /man/3/0intro +identified /man/3/draw +identified /man/3/dynld +identified /man/3/ftl +identified /man/3/ip +identified /man/3/prog +identified /man/4/spree +identified /man/5/0intro +identified /man/5/flush +identified /man/5/read +identified /man/5/stat +identified /man/5/walk +identified /man/6/sbl +identified /man/8/collabsrv +identified /man/9/bind +identifier /man/1/mash +identifier /man/1/sh-file2chan +identifier /man/10/c2l +identifier /man/10/plan9.ini +identifier /man/2/asn1 +identifier /man/2/drawmux +identifier /man/2/spree +identifier /man/2/spree-cardlib +identifier /man/2/sys-0intro +identifier /man/2/w3c-css +identifier /man/2/wmsrv +identifier /man/3/cons +identifier /man/3/draw +identifier /man/3/prog +identifier /man/6/keytext +identifier /man/6/sbl +identifier /man/6/scancode +identifier /man/8/bootpd +identifiers /man/2/0intro +identifiers /man/2/asn1 +identifiers /man/2/spree +identifiers /man/3/draw +identifiers /man/3/prog +identifiers /man/4/spree +identifiers /man/6/sbl +identifies /man/1/acme +identifies /man/1/mk +identifies /man/1/passwd +identifies /man/1/tiny +identifies /man/10/dev +identifies /man/10/devattach +identifies /man/10/mk +identifies /man/10/plan9.ini +identifies /man/2/asn1 +identifies /man/2/draw-font +identifies /man/2/palmfile +identifies /man/2/prefab-0intro +identifies /man/2/spki +identifies /man/2/styxservers +identifies /man/2/sys-0intro +identifies /man/2/sys-stat +identifies /man/3/pbus +identifies /man/5/0intro +identifies /man/5/attach +identifies /man/5/version +identifies /man/6/sbl +identifies /man/9/text +identifies /man/9/types +identify /man/1/0intro +identify /man/10/2c +identify /man/10/dev +identify /man/10/intrenable +identify /man/10/plan9.ini +identify /man/10/styxserver +identify /man/2/dhcpclient +identify /man/2/registries +identify /man/2/spree +identify /man/2/spree-allow +identify /man/3/dynld +identify /man/3/mnt +identify /man/3/sd +identify /man/4/factotum +identify /man/5/0intro +identify /man/6/dis +identify /man/8/collabsrv +identify /man/9/canvas +identify /man/9/scale +identify /man/9/scrollbar +identifying /man/1/collab-clients +identifying /man/10/2c +identifying /man/10/plan9.ini +identifying /man/2/draw-0intro +identifying /man/2/palmfile +identifying /man/2/spree +identifying /man/2/wmsrv +identifying /man/3/pnp +identifying /man/4/factotum +identifying /man/5/0intro +identifying /man/5/version +identifying /man/8/collabsrv +identifying /man/9/canvas +identifying /man/9/grid +identifying /man/9/menu +identities /man/2/security-0intro +identities /man/2/sys-0intro +identity /man/1/passwd +identity /man/1/sh-alphabet +identity /man/10/eve +identity /man/10/ntsrv +identity /man/2/keyring-0intro +identity /man/2/registries +identity /man/2/security-0intro +identity /man/2/sys-0intro +identity /man/3/cmd +identity /man/4/factotum +identity /man/6/keys +identity /man/6/translate +identity /man/8/logind +identity /man/8/register +identity /man/8/rstyxd +identity /man/8/signer +idiomatic /man/2/command +idioms /man/1/acme +idiosyncratic /man/6/keyboard +idle /man/10/dmainit +ids /man/1/deb +ids /man/1/kill +ids /man/10/iar +ids /man/10/kproc +ids /man/2/factotum +ids /man/2/palmfile +ids /man/2/spree +ids /man/2/spree-allow +ids /man/3/fs +ids /man/3/logfs +ids /man/3/tinyfs +ids /man/4/acme +ids /man/4/kfs +ids /man/4/tarfs +ids /man/8/create +ids /man/9/canvas +idstring /man/3/pnp +idxl /man/2/spree-cardlib +ie /man/1/math-misc +ie /man/1/secstore +ie /man/1/tail +ie /man/10/c2l +ie /man/10/conf +ie /man/10/devattach +ie /man/10/kbdputc +ie /man/10/kproc +ie /man/10/newchan +ie /man/10/ntsrv +ie /man/10/styxserver +ie /man/2/dbm +ie /man/2/dhcpclient +ie /man/2/dis +ie /man/2/draw-image +ie /man/2/ip +ie /man/2/palmfile +ie /man/2/plumbmsg +ie /man/2/registries +ie /man/2/secstore +ie /man/2/sexprs +ie /man/2/spki +ie /man/2/styxservers +ie /man/2/sys-open +ie /man/2/sys-pctl +ie /man/2/sys-self +ie /man/2/tk +ie /man/2/ubfa +ie /man/2/w3c-xpointers +ie /man/3/fs +ie /man/3/ftl +ie /man/3/pipe +ie /man/3/prog +ie /man/4/factotum +ie /man/4/ftpfs +ie /man/4/keysrv +ie /man/6/attrdb +ie /man/6/keys +ie /man/6/keytext +ie /man/6/proto +ie /man/8/rstyxd +ie /man/8/svc +ieee /man/10/plan9.ini +ieee /man/2/math-0intro +ieee /man/2/math-export +ieee /man/2/math-fp +ieee /man/3/tv +ieee754 /man/6/dis +ifcaddr /man/2/ip +ifcdir /man/8/dhcp +ifdef /man/10/2c +iff /man/2/ether +iff /man/2/names +iff /man/2/sexprs +iff /man/2/spki +iff /man/6/dis +iff /man/6/sexprs +ifile /man/10/5coff +ifn /man/3/ip +ifndef /man/10/2c +ifs /man/1/sh +ifs /man/1/sh-std +ifstats /man/3/ether +ifunset /man/9/grab +ignore /man/1/ftree +ignore /man/10/5cv +ignore /man/10/dev +ignore /man/10/devattach +ignore /man/10ti925/tihost +ignore /man/2/dhcpclient +ignore /man/2/prof +ignore /man/2/spree +ignore /man/3/draw +ignore /man/6/namespace +ignore /man/9/button +ignore /man/9/checkbutton +ignore /man/9/menu +ignore /man/9/menubutton +ignore /man/9/options +ignore /man/9/radiobutton +ignore /man/9/text +ignoreadvice /man/3/ip +ignores /man/1/sum +ignores /man/10/ms2 +ignores /man/10/qio +ignores /man/10/sleep +ignores /man/10ti925/epocimg +ignores /man/2/draw-image +ignores /man/2/ether +ignores /man/6/colour +ignoring /man/1/uuencode +ignoring /man/10/2c +ignoring /man/10/newchan +ignoring /man/2/draw-0intro +ignoring /man/2/prefab-compound +ignoring /man/3/draw +ignoring /man/8/prep +iic.c /man/3/i2c +iii /man/10/plan9.ini +il /man/1/netstat +il /man/3/ip +il /man/6/ndb +ill /man/2/dhcpclient +ill /man/2/spki +ill /man/2/wait +illegal /man/1/sh-tk +illegal /man/2/0intro +illegal /man/2/encoding +illegal /man/2/styxservers +illegal /man/3/mnt +illegal /man/5/0intro +illegal /man/5/open +illegal /man/5/read +illegal /man/5/stat +illegal /man/5/walk +illegal /man/9/canvas +illegally /man/2/styx +illumination /man/2/draw-display +illustrate /man/2/0intro +illustrated /man/10/styxserver +illustrated /man/6/keyboard +illustrates /man/2/draw-example +illustrates /man/2/security-auth +illustrating /man/2/draw-example +ilmsg /man/3/ip +ilock /man/10/lock +ilock /man/10/splhi +ilogb /man/2/math-fp +ilxvn /man/1/sh +image /man/1/acme +image /man/1/blur +image /man/1/charon +image /man/1/emu +image /man/1/mash-tk +image /man/1/mprof +image /man/1/wm +image /man/1/wm-misc +image /man/1/zeros +image /man/10/2l +image /man/10/5cv +image /man/10/a.out +image /man/10/acid +image /man/10/conf +image /man/10/dynld +image /man/2/0intro +image /man/2/dialog +image /man/2/draw-0intro +image /man/2/draw-context +image /man/2/draw-display +image /man/2/draw-example +image /man/2/draw-font +image /man/2/draw-image +image /man/2/draw-screen +image /man/2/imagefile +image /man/2/mpeg +image /man/2/prefab-compound +image /man/2/prefab-element +image /man/2/prefab-style +image /man/2/print +image /man/2/pslib +image /man/2/selectfile +image /man/2/tk +image /man/2/wmclient +image /man/2/wmlib +image /man/2/wmsrv +image /man/3/boot +image /man/3/cons +image /man/3/draw +image /man/3/logfs +image /man/3/mpeg +image /man/3/pointer +image /man/3/tv +image /man/3/vga +image /man/4/dossrv +image /man/4/namespace +image /man/6/colour +image /man/6/font +image /man/6/image +image /man/6/plumbing +image /man/8/collabsrv +image /man/8/ftl +image /man/8/mangaload +image /man/8/prep +image /man/9/0intro +image /man/9/button +image /man/9/canvas +image /man/9/checkbutton +image /man/9/choicebutton +image /man/9/cursor +image /man/9/image +image /man/9/label +image /man/9/menu +image /man/9/menubutton +image /man/9/options +image /man/9/panel +image /man/9/radiobutton +image /man/9/types +image's /man/2/draw-0intro +image's /man/2/draw-display +image's /man/2/wmsrv +image's /man/3/draw +image's /man/6/image +image's /man/9/panel +image.bit /man/1/blur +image.chans /man/2/draw-0intro +image.clipr /man/2/draw-0intro +image.clipr /man/2/draw-image +image.depth /man/2/draw-0intro +image.draw /man/2/prefab-element +image.draw /man/6/colour +image.nameimage /man/2/draw-display +image.r /man/2/draw-0intro +image.r /man/2/draw-image +image.readpixels /man/6/colour +image.readpixels /man/6/image +image.repl /man/2/draw-0intro +image.repl /man/2/draw-image +image.text /man/2/draw-font +image.text /man/6/font +image.writepixel /man/6/image +image.writepixels /man/6/colour +imagecachemem /man/1/charon +imagecachenum /man/1/charon +imagefile /man/1/blur +imagefile /man/2/imagefile +imagefile.m /man/2/imagefile +imageget /man/2/tk +imageid /man/3/draw +imagelvl /man/1/charon +imageput /man/2/tk +imageput /man/9/image +imager2screenr /man/2/wmclient +imageremap /man/2/imagefile +images /man/1/charon +images /man/1/ftree +images /man/1/webgrab +images /man/10/ksize +images /man/10/kstrip +images /man/10/plan9.ini +images /man/2/draw-0intro +images /man/2/draw-context +images /man/2/draw-display +images /man/2/draw-example +images /man/2/draw-font +images /man/2/draw-image +images /man/2/draw-screen +images /man/2/imagefile +images /man/2/prefab-0intro +images /man/2/prefab-element +images /man/2/tk +images /man/2/wmsrv +images /man/3/draw +images /man/6/colour +images /man/6/font +images /man/6/image +images /man/8/0intro +images /man/9/canvas +images /man/9/image +images /man/9/panel +img /man/10/5cv +img /man/10ti925/epocimg +img /man/2/pslib +img /man/2/wmlib +img /man/2/wmsrv +img.bit /man/1/blur +img.r /man/2/wmsrv +immediate /man/1/disdep +immediate /man/2/dis +immediate /man/4/acme +immediate /man/6/dis +immedlately /man/3/pointer +immutable /man/3/draw +impc /man/3/kprof +imperceptible /man/6/colour +implement /man/1/tiny +implement /man/1/wm +implement /man/10/a.out +implement /man/10/c2l +implement /man/10/dev +implement /man/10/error +implement /man/10/kbdputc +implement /man/10/qio +implement /man/10/qlock +implement /man/2/alphabet-intro +implement /man/2/arg +implement /man/2/draw-example +implement /man/2/ir +implement /man/2/itslib +implement /man/2/keyring-getmsg +implement /man/2/keyring-rc4 +implement /man/2/math-elem +implement /man/2/math-linalg +implement /man/2/spree +implement /man/2/spree-cardlib +implement /man/2/spree-gather +implement /man/2/styxservers +implement /man/2/styxservers-nametree +implement /man/2/wmsrv +implement /man/3/flash +implement /man/3/logfs +implement /man/3/tls +implement /man/3/vga +implement /man/4/ftpfs +implement /man/5/stat +implement /man/8/collabsrv +implement /man/9/canvas +implement /man/9/menu +implement /man/9/options +implement /man/9/text +implementation /man/1/0intro +implementation /man/1/charon +implementation /man/1/cpu +implementation /man/1/deb +implementation /man/1/tcs +implementation /man/1/tktester +implementation /man/1/wm-misc +implementation /man/1/yacc +implementation /man/10/0intro +implementation /man/10/conf +implementation /man/10/dev +implementation /man/10/inb +implementation /man/10/qio +implementation /man/2/0intro +implementation /man/2/alphabet-intro +implementation /man/2/bufio +implementation /man/2/bufio-chanfill +implementation /man/2/convcs +implementation /man/2/debug +implementation /man/2/dis +implementation /man/2/draw-image +implementation /man/2/filter +implementation /man/2/filter-deflate +implementation /man/2/filter-slip +implementation /man/2/imagefile +implementation /man/2/ir +implementation /man/2/keyring-0intro +implementation /man/2/keyring-gensk +implementation /man/2/keyring-ipint +implementation /man/2/print +implementation /man/2/registries +implementation /man/2/sets +implementation /man/2/sexprs +implementation /man/2/spki-verifier +implementation /man/2/spree-cardlib +implementation /man/2/srv +implementation /man/2/styx +implementation /man/2/styxservers +implementation /man/2/sys-read +implementation /man/2/wmsrv +implementation /man/2/xml +implementation /man/3/draw +implementation /man/3/indir +implementation /man/3/ip +implementation /man/3/kprof +implementation /man/3/logfs +implementation /man/3/ssl +implementation /man/4/keyfs +implementation /man/4/ramfile +implementation /man/5/walk +implementation /man/6/colour +implementation /man/6/dis +implementation /man/6/keyboard +implementation /man/6/sbl +implementation /man/6/scancode +implementation /man/6/ubfa +implementation /man/7/dbsrv +implementation /man/8/collabsrv +implementation /man/9/0intro +implementation /man/9/canvas +implementation's /man/2/ubfa +implementations /man/1/limbo +implementations /man/1/ps +implementations /man/10/devattach +implementations /man/10/dmainit +implementations /man/10/strcat +implementations /man/2/filter +implementations /man/2/sets +implementations /man/2/spki +implementations /man/2/styxservers +implementations /man/3/audio +implementations /man/3/cons +implementations /man/3/ip +implementations /man/3/logfs +implementations /man/3/tls +implementations /man/5/read +implementations /man/5/stat +implementations /man/6/keyboard +implementations /man/6/scancode +implementer /man/10/styxserver +implementing /man/1/limbo +implementing /man/1/tktester +implementing /man/2/keyring-certtostr +implementing /man/2/spree-gather +implementing /man/3/ftl +implementing /man/8/collabsrv +implementing /man/9/text +implements /man/1/0intro +implements /man/1/alphabet-fs +implements /man/1/charon +implements /man/1/fs +implements /man/1/sh +implements /man/1/sh-alphabet +implements /man/1/sh-file2chan +implements /man/1/sh-string +implements /man/2/debug +implements /man/2/dhcpclient +implements /man/2/filter-deflate +implements /man/2/ida +implements /man/2/popup +implements /man/2/styxservers +implements /man/2/tabs +implements /man/2/w3c-css +implements /man/2/w3c-xpointers +implements /man/3/0intro +implements /man/3/audio +implements /man/3/draw +implements /man/3/logfs +implements /man/3/mpeg +implements /man/3/prof +implements /man/3/ssl +implements /man/3/tls +implements /man/4/kfs +implements /man/8/rip +implements /man/9/grab +implication /man/1/mc +implication /man/2/filter +implicit /man/1/mash +implicit /man/1/mash-make +implicit /man/1/mk +implicit /man/10/mk +implicit /man/2/asn1 +implicit /man/2/crc +implicit /man/5/0intro +implicit /man/5/walk +implicit /man/6/dis +implicitly /man/1/acme +implicitly /man/2/asn1 +implicitly /man/2/bufio +implicitly /man/7/db +implicitly /man/9/canvas +implied /man/1/mash +implied /man/2/keyring-sha1 +implied /man/5/open +implied /man/5/walk +implied /man/8/rip +implied /man/9/1copyright +implies /man/1/du +implies /man/1/sh +implies /man/10/styxserver +implies /man/2/math-0intro +implies /man/2/spki +implies /man/2/styxservers +implies /man/9/canvas +imply /man/1/charon +import /man/1/9win +import /man/1/alphabet-abc +import /man/1/alphabet-fs +import /man/1/alphabet-grid +import /man/1/ps +import /man/1/session +import /man/1/sh-alphabet +import /man/1/tktester +import /man/1/yacc +import /man/10/2l +import /man/10/dynld +import /man/2/0intro +import /man/2/bloomfilter +import /man/2/bufio +import /man/2/dbm +import /man/2/dhcpclient +import /man/2/dis +import /man/2/dividers +import /man/2/draw-example +import /man/2/ip +import /man/2/itslib +import /man/2/math-export +import /man/2/plumbmsg +import /man/2/sets +import /man/2/sh +import /man/2/spki-verifier +import /man/2/spree +import /man/2/spree-allow +import /man/2/spree-cardlib +import /man/2/spree-gather +import /man/2/spree-objstore +import /man/2/stringinttab +import /man/2/styxservers +import /man/2/styxservers-nametree +import /man/2/tk +import /man/2/translate +import /man/2/venti +import /man/2/w3c-css +import /man/2/w3c-xpointers +import /man/2/wmsrv +import /man/2/xml +import /man/3/cap +import /man/3/draw +import /man/3/srv9 +import /man/4/9srvfs +import /man/4/cpu +import /man/4/import +import /man/6/dis +import /man/6/namespace +import.b /man/4/import +import.name /man/2/w3c-css +importance /man/2/readdir +importantly /man/2/draw-0intro +imported /man/1/grid-query +imported /man/1/session +imported /man/1/sh-alphabet +imported /man/1/tktester +imported /man/10/2c +imported /man/10/2l +imported /man/10/dynld +imported /man/2/dis +imported /man/2/sys-self +imported /man/4/cpu +imported /man/4/namespace +imported /man/6/dis +imported /man/6/sbl +importing /man/1/session +imports /man/1/sh-alphabet +imports /man/2/dis +imports /man/2/w3c-css +imports /man/3/ip +imports /man/4/cpu +impose /man/3/flash +imposed /man/1/sh +imposed /man/10/dmainit +imposed /man/2/0intro +imposed /man/3/flash +imposed /man/6/sexprs +imposes /man/5/walk +impossible /man/1/tktester +impossible /man/10/c2l +imprecise /man/10/sleep +improper /man/2/keyring-certtostr +improve /man/1/blur +improve /man/3/logfs +improve /man/6/dis +in.getc /man/1/yacc +in.ungetc /man/1/yacc +inaccessible /man/1/ns +inaccessible /man/1/os +inaccurate /man/2/prof +inactivity /man/2/volume +inactivity /man/3/vga +inadequate /man/8/rip +inappropriate /man/10/2c +inappropriate /man/2/convcs +inb /man/10/inb +inbalt /man/2/dis +inbound /man/4/factotum +inc /man/1/avr +inc /man/2/keyring-0intro +inc /man/2/palmfile +inc /man/2/security-0intro +inc /man/3/ssl +inc /man/9/0intro +inc /man/9/1copyright +inch /man/1/units +inch /man/2/print +inch /man/2/pslib +inch /man/9/types +inches /man/2/print +inches /man/9/types +incidental /man/9/1copyright +incl /man/1/acme +include /man/1/acme +include /man/1/alphabet-abc +include /man/1/alphabet-fs +include /man/1/alphabet-grid +include /man/1/alphabet-main +include /man/1/charon +include /man/1/disdep +include /man/1/fc +include /man/1/fs +include /man/1/limbo +include /man/1/mash-tk +include /man/1/mc +include /man/1/nsbuild +include /man/1/plumb +include /man/1/sh +include /man/1/sh-std +include /man/1/sh-tk +include /man/1/wm +include /man/1/yacc +include /man/10/0intro +include /man/10/2a +include /man/10/2c +include /man/10/a.out +include /man/10/ar +include /man/10/c2l +include /man/10/conf +include /man/10/dynld +include /man/10/error +include /man/10/intrenable +include /man/10/kbdputc +include /man/10/plan9.ini +include /man/10/styx +include /man/10/styxserver +include /man/2/0intro +include /man/2/arg +include /man/2/asn1 +include /man/2/attrdb +include /man/2/bloomfilter +include /man/2/bufio +include /man/2/bufio-chanfill +include /man/2/cfg +include /man/2/command +include /man/2/convcs +include /man/2/crc +include /man/2/daytime +include /man/2/dbm +include /man/2/debug +include /man/2/devpointer +include /man/2/dhcpclient +include /man/2/dialog +include /man/2/dict +include /man/2/dis +include /man/2/diskblocks +include /man/2/disks +include /man/2/dividers +include /man/2/draw-0intro +include /man/2/draw-context +include /man/2/draw-display +include /man/2/draw-example +include /man/2/draw-font +include /man/2/draw-image +include /man/2/draw-point +include /man/2/draw-pointer +include /man/2/draw-rect +include /man/2/draw-screen +include /man/2/drawmux +include /man/2/encoding +include /man/2/env +include /man/2/ether +include /man/2/exception +include /man/2/factotum +include /man/2/filepat +include /man/2/filter +include /man/2/filter-deflate +include /man/2/filter-slip +include /man/2/format +include /man/2/fsproto +include /man/2/geodesy +include /man/2/hash +include /man/2/ida +include /man/2/imagefile +include /man/2/ip +include /man/2/ir +include /man/2/itslib +include /man/2/keyring-0intro +include /man/2/keyring-auth +include /man/2/keyring-certtostr +include /man/2/keyring-crypt +include /man/2/keyring-gensk +include /man/2/keyring-getmsg +include /man/2/keyring-getstring +include /man/2/keyring-ipint +include /man/2/keyring-rc4 +include /man/2/keyring-sha1 +include /man/2/keyset +include /man/2/lock +include /man/2/math-0intro +include /man/2/math-elem +include /man/2/math-export +include /man/2/math-fp +include /man/2/math-linalg +include /man/2/mpeg +include /man/2/names +include /man/2/newns +include /man/2/palmfile +include /man/2/plumbmsg +include /man/2/pop3 +include /man/2/popup +include /man/2/prefab-0intro +include /man/2/prefab-compound +include /man/2/prefab-element +include /man/2/prefab-environ +include /man/2/prefab-style +include /man/2/print +include /man/2/prof +include /man/2/pslib +include /man/2/rand +include /man/2/readdir +include /man/2/regex +include /man/2/registries +include /man/2/scsiio +include /man/2/secstore +include /man/2/security-0intro +include /man/2/security-auth +include /man/2/security-login +include /man/2/security-random +include /man/2/security-ssl +include /man/2/selectfile +include /man/2/sets +include /man/2/sexprs +include /man/2/sh +include /man/2/smtp +include /man/2/spki +include /man/2/spki-verifier +include /man/2/spree +include /man/2/spree-allow +include /man/2/spree-cardlib +include /man/2/spree-gather +include /man/2/spree-objstore +include /man/2/srv +include /man/2/string +include /man/2/stringinttab +include /man/2/styx +include /man/2/styxconv +include /man/2/styxpersist +include /man/2/styxservers +include /man/2/styxservers-nametree +include /man/2/sys-0intro +include /man/2/sys-bind +include /man/2/sys-byte2char +include /man/2/sys-chdir +include /man/2/sys-dial +include /man/2/sys-dirread +include /man/2/sys-dup +include /man/2/sys-export +include /man/2/sys-fauth +include /man/2/sys-fd2path +include /man/2/sys-file2chan +include /man/2/sys-fversion +include /man/2/sys-iounit +include /man/2/sys-millisec +include /man/2/sys-open +include /man/2/sys-pctl +include /man/2/sys-pipe +include /man/2/sys-print +include /man/2/sys-read +include /man/2/sys-remove +include /man/2/sys-seek +include /man/2/sys-self +include /man/2/sys-sleep +include /man/2/sys-stat +include /man/2/sys-tokenize +include /man/2/sys-utfbytes +include /man/2/sys-werrstr +include /man/2/tabs +include /man/2/timers +include /man/2/tk +include /man/2/tkclient +include /man/2/translate +include /man/2/ubfa +include /man/2/venti +include /man/2/virgil +include /man/2/volume +include /man/2/w3c-css +include /man/2/w3c-xpointers +include /man/2/wmclient +include /man/2/wmlib +include /man/2/wmsrv +include /man/2/workdir +include /man/2/xml +include /man/3/cons +include /man/3/dbg +include /man/3/draw +include /man/3/flash +include /man/3/floppy +include /man/3/root +include /man/3/rtc +include /man/3/srv +include /man/3/tls +include /man/4/factotum +include /man/4/kfs +include /man/4/namespace +include /man/4/registry +include /man/5/0intro +include /man/6/dis +include /man/6/keyboard +include /man/6/man +include /man/6/namespace +include /man/6/ndb +include /man/6/plumbing +include /man/6/sexprs +include /man/7/db +include /man/8/cs +include /man/8/init +include /man/8/ping +include /man/8/prep +include /man/8/rdbgsrv +include /man/8/rip +include /man/9/canvas +include /man/9/entry +include /man/9/grab +include /man/9/listbox +included /man/1/alphabet-fs +included /man/1/cook +included /man/1/fs +included /man/1/mk +included /man/1/mux +included /man/1/sh +included /man/1/time +included /man/1/uuencode +included /man/10/2c +included /man/10/2l +included /man/10/5cv +included /man/10/a.out +included /man/10/c2l +included /man/10/conf +included /man/10/kproc +included /man/10/mk +included /man/10/plan9.ini +included /man/2/cfg +included /man/2/encoding +included /man/2/keyring-sha1 +included /man/2/prefab-compound +included /man/2/security-0intro +included /man/3/cap +included /man/3/i82365 +included /man/3/pbus +included /man/3/plap +included /man/4/acme +included /man/5/stat +included /man/7/db +included /man/8/create +included /man/8/prep +included /man/8/virgild +included /man/9/1copyright +included /man/9/text +includes /man/1/acme +includes /man/1/collab +includes /man/1/gettar +includes /man/1/grid-register +includes /man/1/uuencode +includes /man/10/2c +includes /man/10/2l +includes /man/10/kproc +includes /man/10/mk +includes /man/10/odbc +includes /man/10/plan9.ini +includes /man/10/styx +includes /man/10/xalloc +includes /man/2/alphabet-intro +includes /man/2/bufio +includes /man/2/command +includes /man/2/ir +includes /man/2/keyring-getstring +includes /man/2/keyring-ipint +includes /man/2/security-0intro +includes /man/2/sys-print +includes /man/2/w3c-css +includes /man/3/0intro +includes /man/3/eia +includes /man/3/pbus +includes /man/3/vga +includes /man/5/0intro +includes /man/5/version +includes /man/6/keytext +includes /man/6/proto +includes /man/6/sbl +includes /man/8/create +includes /man/8/srv +includes /man/9/listbox +includes /man/9/text +inclusion /man/10/plan9.ini +inclusion /man/2/prefab-element +inclusive /man/1/mc +inclusive /man/1/strings +inclusive /man/10/plan9.ini +inclusive /man/2/sets +inclusive /man/2/spree-cardlib +inclusive /man/2/string +inclusive /man/6/font +inclusive /man/6/regexp +inclusive /man/9/canvas +inclusive /man/9/entry +inclusive /man/9/listbox +inclusive /man/9/menu +incoming /man/1/dmview +incoming /man/1/grid-localreg +incoming /man/1/grid-monitor +incoming /man/1/grid-ns +incoming /man/1/grid-register +incoming /man/1/listen +incoming /man/2/draw-context +incoming /man/2/security-login +incoming /man/2/styx +incoming /man/2/sys-dial +incoming /man/2/translate +incoming /man/3/ether +incoming /man/3/ip +incoming /man/3/plap +incoming /man/3/ssl +incoming /man/3/tls +incoming /man/4/cpu +incoming /man/4/ftpfs +incoming /man/4/lockfs +incoming /man/6/plumbing +incoming /man/7/dbsrv +incoming /man/8/bootpd +incoming /man/8/collabsrv +incoming /man/8/httpd +incoming /man/8/rstyxd +incoming /man/8/srv +incoming /man/8/svc +incompatible /man/1/sh-alphabet +incompatible /man/10/c2l +incomplete /man/1/charon +incomplete /man/10/2c +incomplete /man/10/devattach +incomplete /man/2/asn1 +incomplete /man/2/sys-utfbytes +inconsistencies /man/3/logfs +inconsistencies /man/8/applylog +inconsistency /man/2/ida +inconsistency /man/8/applylog +inconsistent /man/10/lock +inconsistent /man/2/0intro +inconsistent /man/2/asn1 +inconsistent /man/2/scsiio +inconsistent /man/2/string +inconsistent /man/3/tinyfs +inconvenient /man/2/sys-read +incorporate /man/1/yacc +incorporated /man/2/prefab-element +incorporates /man/2/cfg +incorporates /man/2/draw-font +incorporating /man/1/tkcmd +incorrect /man/2/geodesy +incorrect /man/6/utf +incorrectly /man/10/styx +incorrectly /man/2/asn1 +incorrectly /man/2/imagefile +increase /man/1/limbo +increase /man/2/draw-0intro +increase /man/2/draw-point +increase /man/2/volume +increase /man/3/ftl +increase /man/6/colour +increase /man/9/grid +increased /man/1/wm-misc +increased /man/9/grid +increases /man/2/draw-image +increases /man/9/grid +increasing /man/1/mk +increasing /man/1/sort +increasing /man/10/mk +increasing /man/10/plan9.ini +increasing /man/2/stringinttab +increasing /man/3/prof +increasing /man/4/dbfs +increasing /man/6/dis +increasing /man/6/font +increasing /man/8/applylog +increasingly /man/1/emu +increasingly /man/3/cons +incref /man/10/ref +increment /man/1/mc +increment /man/10/dev +increment /man/6/sbl +increment /man/9/canvas +incremented /man/10/allocb +incremented /man/10/newchan +incremented /man/2/alphabet-intro +incremented /man/5/0intro +incremented /man/6/dis +incremented /man/8/collabsrv +incremented /man/8/styxchat +incremented /man/9/grid +incremented /man/9/scale +increments /man/1/mdb +increments /man/10/ref +increments /man/3/ssl +increments /man/4/keyfs +increments /man/9/scale +incurred /man/4/iostats +incurs /man/1/kill +incurs /man/3/prog +indecipherable /man/2/security-0intro +indeed /man/1/0intro +indeed /man/10/intrenable +indeed /man/2/security-0intro +indeed /man/2/sys-fd2path +indeed /man/3/srv9 +indeed /man/4/9srvfs +indeed /man/4/ramfile +indefinite /man/2/asn1 +indefinite /man/2/spree +indefinitely /man/1/itest +indent /man/1/disdep +indent /man/1/fmt +indent /man/6/man +indentation /man/6/proto +indentation /man/8/create +indentation /man/9/text +indented /man/1/deb +indented /man/1/lc +indented /man/6/man +indented /man/9/text +indenting /man/1/fmt +indents /man/6/man +independence /man/5/0intro +independent /man/1/0intro +independent /man/1/limbo +independent /man/1/math-misc +independent /man/1/tiny +independent /man/10/2c +independent /man/10/conf +independent /man/10/dev +independent /man/10/styx +independent /man/2/bloomfilter +independent /man/2/draw-display +independent /man/2/draw-image +independent /man/2/styx +independent /man/2/sys-0intro +independent /man/3/audio +independent /man/3/draw +independent /man/3/env +independent /man/3/kprof +independent /man/3/logfs +independent /man/3/ssl +independent /man/4/factotum +independent /man/5/stat +independent /man/6/dis +independent /man/6/image +independent /man/6/utf +independent /man/7/db +independent /man/8/collabsrv +independent /man/8/register +independent /man/8/signer +independent /man/9/canvas +independently /man/1/sh +independently /man/10/allocb +independently /man/10/ar +independently /man/2/styxservers +independently /man/2/sys-0intro +independently /man/4/logfile +independently /man/8/applylog +independently /man/9/bind +index /man/1/0intro +index /man/1/cook +index /man/1/ebook +index /man/1/man +index /man/1/sh-std +index /man/1/sh-string +index /man/1/webgrab +index /man/10/ar +index /man/10/devattach +index /man/2/0intro +index /man/2/alphabet-intro +index /man/2/asn1 +index /man/2/attrdb +index /man/2/convcs +index /man/2/dialog +index /man/2/dis +index /man/2/draw-display +index /man/2/format +index /man/2/ip +index /man/2/palmfile +index /man/2/popup +index /man/2/prefab-compound +index /man/2/regex +index /man/2/spree +index /man/2/spree-cardlib +index /man/2/styxservers +index /man/2/sys-byte2char +index /man/2/tabs +index /man/2/w3c-xpointers +index /man/2/xml +index /man/3/draw +index /man/3/pnp +index /man/3/prog +index /man/4/acme +index /man/4/cpu +index /man/4/dbfs +index /man/4/registry +index /man/4/spree +index /man/5/walk +index /man/6/colour +index /man/6/dis +index /man/6/man +index /man/6/sbl +index /man/8/collabsrv +index /man/8/prep +index /man/9/canvas +index /man/9/choicebutton +index /man/9/entry +index /man/9/grid +index /man/9/listbox +index /man/9/menu +index /man/9/options +index /man/9/text +index0 /man/9/grid +index1 /man/9/grid +index1 /man/9/menu +index1 /man/9/text +index2 /man/9/menu +index2 /man/9/text +indexed /man/1/sh-std +indexed /man/10/newchan +indexed /man/2/hash +indexed /man/2/tabs +indexed /man/6/colour +indexed /man/6/sbl +indexed /man/9/entry +indexing /man/10/intrenable +indexing /man/2/dbm +indexing /man/2/math-linalg +indexing /man/2/prof +indexing /man/9/canvas +indicate /man/1/acme +indicate /man/1/blur +indicate /man/1/charon +indicate /man/1/dd +indicate /man/1/mash +indicate /man/1/mash-tk +indicate /man/10/styxserver +indicate /man/2/alphabet-intro +indicate /man/2/asn1 +indicate /man/2/dbm +indicate /man/2/draw-pointer +indicate /man/2/math-linalg +indicate /man/2/prefab-compound +indicate /man/2/sys-sleep +indicate /man/2/sys-stat +indicate /man/3/vga +indicate /man/4/acme +indicate /man/9/canvas +indicate /man/9/entry +indicate /man/9/grid +indicate /man/9/listbox +indicate /man/9/pack +indicate /man/9/radiobutton +indicate /man/9/scrollbar +indicate /man/9/text +indicated /man/1/acme +indicated /man/1/fc +indicated /man/1/math-misc +indicated /man/10/print +indicated /man/2/alphabet-intro +indicated /man/2/geodesy +indicated /man/2/prefab-0intro +indicated /man/2/prefab-element +indicated /man/3/ssl +indicated /man/4/acme +indicated /man/4/dbfs +indicated /man/8/create +indicated /man/9/1copyright +indicated /man/9/bind +indicated /man/9/entry +indicated /man/9/grid +indicated /man/9/listbox +indicated /man/9/menu +indicated /man/9/scrollbar +indicated /man/9/text +indicates /man/1/acme +indicates /man/1/cprof +indicates /man/1/math-misc +indicates /man/1/sh +indicates /man/1/tiny +indicates /man/10/c2l +indicates /man/10/styxserver +indicates /man/2/alphabet-intro +indicates /man/2/asn1 +indicates /man/2/convcs +indicates /man/2/dbm +indicates /man/2/draw-context +indicates /man/2/prof +indicates /man/2/string +indicates /man/2/sys-dirread +indicates /man/3/cmd +indicates /man/5/0intro +indicates /man/5/read +indicates /man/6/image +indicates /man/7/db +indicates /man/9/canvas +indicates /man/9/entry +indicates /man/9/grid +indicates /man/9/listbox +indicates /man/9/menu +indicates /man/9/options +indicates /man/9/radiobutton +indicates /man/9/scrollbar +indicates /man/9/text +indicating /man/1/acme +indicating /man/1/cprof +indicating /man/1/listen +indicating /man/10/odbc +indicating /man/2/asn1 +indicating /man/2/debug +indicating /man/2/keyring-getstring +indicating /man/2/palmfile +indicating /man/2/prof +indicating /man/3/prog +indicating /man/4/acme +indicating /man/4/spree +indicating /man/5/0intro +indicating /man/9/canvas +indicating /man/9/entry +indicating /man/9/listbox +indicating /man/9/options +indicating /man/9/scale +indicating /man/9/scrollbar +indication /man/1/cprof +indication /man/3/cons +indication /man/4/logfile +indicator /man/2/prof +indicator /man/9/checkbutton +indicator /man/9/menu +indicator /man/9/radiobutton +indicator's /man/9/menu +indicatoron /man/9/checkbutton +indicatoron /man/9/radiobutton +indicators /man/1/tktester +indicators /man/10/atoi +indicators /man/9/menu +indices /man/1/sh-string +indices /man/10/2c +indices /man/10/c2l +indices /man/2/attrdb +indices /man/2/draw-0intro +indices /man/2/sys-0intro +indices /man/2/w3c-xpointers +indices /man/3/draw +indices /man/9/canvas +indices /man/9/entry +indices /man/9/grid +indices /man/9/listbox +indices /man/9/text +indir /man/3/indir +indirect /man/3/dbg +indirect /man/6/dis +indirect /man/9/1copyright +indirection /man/1/sh +indirection /man/10/acid +indirection /man/2/dis +indirectly /man/10/allocb +indirectly /man/10/sleep +indirectly /man/2/sexprs +indirectly /man/2/sys-pctl +indirectly /man/3/dbg +indirectly /man/3/indir +indirectly /man/3/srv +indirectly /man/4/acme +indirectly /man/5/clunk +indirectly /man/8/cs +indirectly /man/8/plumber +individually /man/2/bufio +individually /man/3/sd +individually /man/4/acme +industry /man/2/security-0intro +ineffective /man/1/acme +ineffective /man/1/nsbuild +inequalities /man/1/tsort +inequality /man/1/mash +inequality /man/1/mathcalc +inequality /man/1/sh-expr +inewaz /man/2/dis +inewz /man/2/dis +inex /man/2/math-fp +inexact /man/2/math-fp +inf /man/1/sh-test +inf /man/8/create +infauth /man/4/factotum +infcsigner /man/8/signer +infcsigner /man/8/srv +infdb /man/7/db +infdb /man/7/dbsrv +infdb /man/8/srv +infdb.exe /man/7/dbsrv +infenv /man/3/srv9 +infenv /man/4/9srvfs +infer /man/1/mash-make +infer /man/2/asn1 +infer /man/2/ir +inferface /man/1/wm +inferno /man/1/0intro +inferno /man/1/9win +inferno /man/1/auplay +inferno /man/1/avr +inferno /man/1/bind +inferno /man/1/charon +inferno /man/1/diff +inferno /man/1/dmview +inferno /man/1/emu +inferno /man/1/ftest +inferno /man/1/gettar +inferno /man/1/grid-ns +inferno /man/1/limbo +inferno /man/1/listen +inferno /man/1/logon +inferno /man/1/mash +inferno /man/1/mash-tk +inferno /man/1/mdb +inferno /man/1/miniterm +inferno /man/1/mk +inferno /man/1/mux +inferno /man/1/nsbuild +inferno /man/1/os +inferno /man/1/ps +inferno /man/1/secstore +inferno /man/1/session +inferno /man/1/sh +inferno /man/1/sh-regex +inferno /man/1/sh-std +inferno /man/1/sh-tk +inferno /man/1/tcs +inferno /man/1/tiny +inferno /man/1/webgrab +inferno /man/1/wish +inferno /man/1/wm +inferno /man/1/wm-misc +inferno /man/1/wm-sh +inferno /man/10/0intro +inferno /man/10/2a +inferno /man/10/2c +inferno /man/10/5cv +inferno /man/10/9load +inferno /man/10/conf +inferno /man/10/eve +inferno /man/10/inm +inferno /man/10/kproc +inferno /man/10/memory +inferno /man/10/mk +inferno /man/10/ntsrv +inferno /man/10/odbc +inferno /man/10/plan9.ini +inferno /man/10/styx +inferno /man/10/styxserver +inferno /man/2/0intro +inferno /man/2/command +inferno /man/2/convcs +inferno /man/2/dhcpclient +inferno /man/2/dis +inferno /man/2/disks +inferno /man/2/draw-0intro +inferno /man/2/draw-example +inferno /man/2/ip +inferno /man/2/keyring-0intro +inferno /man/2/math-0intro +inferno /man/2/math-linalg +inferno /man/2/palmfile +inferno /man/2/plumbmsg +inferno /man/2/security-0intro +inferno /man/2/sh +inferno /man/2/srv +inferno /man/2/sys-0intro +inferno /man/2/sys-chdir +inferno /man/2/sys-pctl +inferno /man/2/sys-sleep +inferno /man/2/workdir +inferno /man/3/0intro +inferno /man/3/cmd +inferno /man/3/cons +inferno /man/3/dbg +inferno /man/3/dup +inferno /man/3/fs +inferno /man/3/indir +inferno /man/3/ip +inferno /man/3/kprof +inferno /man/3/logfs +inferno /man/3/mnt +inferno /man/3/rtc +inferno /man/3/snarf +inferno /man/3/srv9 +inferno /man/3/usb +inferno /man/4/0intro +inferno /man/4/9srvfs +inferno /man/4/dossrv +inferno /man/4/export +inferno /man/4/factotum +inferno /man/4/ftpfs +inferno /man/4/import +inferno /man/4/kfs +inferno /man/4/namespace +inferno /man/5/0intro +inferno /man/6/0intro +inferno /man/6/attrdb +inferno /man/6/audio +inferno /man/6/colour +inferno /man/6/image +inferno /man/6/keyboard +inferno /man/6/keys +inferno /man/6/keytext +inferno /man/6/login +inferno /man/6/man +inferno /man/6/namespace +inferno /man/6/ndb +inferno /man/6/sexprs +inferno /man/6/utf +inferno /man/7/0intro +inferno /man/7/dbsrv +inferno /man/8/applylog +inferno /man/8/bootpd +inferno /man/8/create +inferno /man/8/cs +inferno /man/8/dns +inferno /man/8/getauthinfo +inferno /man/8/init +inferno /man/8/mangaload +inferno /man/8/ping +inferno /man/8/prep +inferno /man/8/rdbgsrv +inferno /man/8/svc +inferno /man/9/0intro +inferno /man/9/send +inferno /man/9/types +inferno's /man/1/0intro +inferno's /man/2/draw-0intro +inferno's /man/2/math-0intro +inferno's /man/2/styxconv +inferno's /man/3/cmd +inferno's /man/3/fs +inferno's /man/4/factotum +inferno's /man/8/cs +inferno.1.0 /man/8/create +inferno.arch /man/8/create +inferno.c /man/2/sys-0intro +inferno.c /man/2/sys-dial +inferno.c /man/2/sys-export +inferno.c /man/2/sys-iounit +infernoos /man/8/create +infernosite /man/6/ndb +infernosite /man/8/cs +inferred /man/1/sh-alphabet +inferred /man/10/acid +infile /man/1/cook +infile /man/10/ms2 +infile /man/10ti925/epocimg +infile /man/10ti925/tihost +infinite /man/2/keyring-0intro +infinite /man/2/keyring-ipint +infinitely /man/2/math-fp +infinitely /man/2/sets +infinity /man/1/mc +infinity /man/2/math-fp +infinity /man/2/math-linalg +infinity,sqrt /man/2/math-fp +infkey /man/4/keysrv +inflate /man/2/filter-deflate +inflate.b /man/2/filter-deflate +inflatepath /man/2/filter-deflate +inflogin /man/2/sys-dial +inflogin /man/8/cs +inflogin /man/8/logind +inflogin /man/8/srv +influences /man/2/spree-cardlib +info /man/1/sh-alphabet +info /man/2/filter +info /man/2/itslib +info /man/2/keyring-auth +info /man/2/security-auth +info /man/2/spree +info /man/6/font +info /man/8/changelogin +info /man/8/create +info /man/9/grid +info.b /man/8/create +inform /man/1/wm +inform /man/2/dividers +inform /man/2/tk +inform /man/8/prep +informal /man/1/acme +informational /man/1/sh +informational /man/2/spree +informational /man/4/ftpfs +informatory /man/1/sh-test +informatory /man/2/itslib +informed /man/2/dividers +informed /man/4/spree +informs /man/1/wm +informs /man/2/spree +informs /man/2/tkclient +informs /man/5/clunk +infrared /man/1/mux +infrared /man/2/ir +infrared /man/2/prefab-0intro +infrared /man/2/prefab-element +infrared /man/2/volume +infrastructure /man/2/sexprs +infrastructure /man/2/spki +infrastructure /man/6/sexprs +infringement /man/9/1copyright +infsigner /man/8/signer +infsigner /man/8/srv +ing /man/2/regex +ing /man/8/signer +inherent /man/9/cursor +inherit /man/2/draw-context +inherited /man/1/acme +inherited /man/1/ns +inherited /man/2/styxservers +inherited /man/2/sys-0intro +inherited /man/2/tk +inherited /man/8/rstyxd +inherits /man/1/0intro +inherits /man/2/sys-0intro +init /man/1/mux +init /man/1/stack +init /man/1/tiny +init /man/1/yacc +init /man/10/c2l +init /man/10/conf +init /man/10/dev +init /man/2/alphabet-intro +init /man/2/arg +init /man/2/asn1 +init /man/2/attrdb +init /man/2/bloomfilter +init /man/2/bufio-chanfill +init /man/2/cfg +init /man/2/command +init /man/2/convcs +init /man/2/crc +init /man/2/dbm +init /man/2/debug +init /man/2/devpointer +init /man/2/dhcpclient +init /man/2/dialog +init /man/2/dis +init /man/2/diskblocks +init /man/2/disks +init /man/2/dividers +init /man/2/draw-context +init /man/2/draw-example +init /man/2/drawmux +init /man/2/ether +init /man/2/factotum +init /man/2/filter +init /man/2/filter-deflate +init /man/2/filter-slip +init /man/2/format +init /man/2/fsproto +init /man/2/geodesy +init /man/2/ida +init /man/2/imagefile +init /man/2/ip +init /man/2/ir +init /man/2/itslib +init /man/2/keyset +init /man/2/lock +init /man/2/palmfile +init /man/2/plumbmsg +init /man/2/popup +init /man/2/print +init /man/2/prof +init /man/2/pslib +init /man/2/rand +init /man/2/readdir +init /man/2/registries +init /man/2/scsiio +init /man/2/secstore +init /man/2/security-auth +init /man/2/selectfile +init /man/2/sets +init /man/2/sexprs +init /man/2/spki +init /man/2/spki-verifier +init /man/2/spree +init /man/2/spree-allow +init /man/2/spree-cardlib +init /man/2/spree-gather +init /man/2/spree-objstore +init /man/2/srv +init /man/2/styx +init /man/2/styxconv +init /man/2/styxpersist +init /man/2/styxservers +init /man/2/styxservers-nametree +init /man/2/sys-self +init /man/2/tabs +init /man/2/tftp +init /man/2/timers +init /man/2/tkclient +init /man/2/translate +init /man/2/ubfa +init /man/2/venti +init /man/2/w3c-css +init /man/2/w3c-xpointers +init /man/2/wait +init /man/2/wmclient +init /man/2/wmlib +init /man/2/wmsrv +init /man/2/workdir +init /man/2/xml +init /man/3/0intro +init /man/3/ftl +init /man/3/mpeg +init /man/3/root +init /man/3/rtc +init /man/3/tinyfs +init /man/3/tv +init /man/4/namespace +init /man/8/init +initbuiltin /man/2/sh +initialisation /man/1/emu +initialisation /man/1/toolbar +initialisation /man/10/9load +initialisation /man/10/allocb +initialisation /man/10/conf +initialisation /man/10/dev +initialisation /man/10/devattach +initialisation /man/10/dmainit +initialisation /man/10/eve +initialisation /man/10/intrenable +initialisation /man/10/kbdputc +initialisation /man/10/plan9.ini +initialisation /man/2/keyring-crypt +initialisation /man/2/plumbmsg +initialisation /man/2/sh +initialisation /man/3/dbg +initialisation /man/3/sign +initialisation /man/3/touch +initialisation /man/4/namespace +initialisation /man/6/colour +initialisation /man/6/login +initialisation /man/8/init +initialisation /man/8/srv +initialise /man/1/mash +initialise /man/1/miniterm +initialise /man/10/conf +initialise /man/10/kbdputc +initialise /man/2/alphabet-intro +initialise /man/2/bloomfilter +initialise /man/2/convcs +initialise /man/2/debug +initialise /man/2/dialog +initialise /man/2/dis +initialise /man/2/dividers +initialise /man/2/draw-0intro +initialise /man/2/ir +initialise /man/2/palmfile +initialise /man/2/popup +initialise /man/2/print +initialise /man/2/selectfile +initialise /man/2/sets +initialise /man/2/spree-allow +initialise /man/2/spree-cardlib +initialise /man/2/styxservers +initialise /man/2/styxservers-nametree +initialise /man/2/sys-stat +initialise /man/2/tabs +initialise /man/2/tkclient +initialise /man/2/wait +initialise /man/2/wmclient +initialise /man/2/wmlib +initialise /man/2/wmsrv +initialise /man/3/dbg +initialise /man/3/ftl +initialise /man/3/logfs +initialise /man/8/0intro +initialise /man/8/ftl +initialise /man/8/init +initialised /man/10/5cv +initialised /man/10/dev +initialised /man/10/devattach +initialised /man/10/kbdputc +initialised /man/10/malloc +initialised /man/10/qlock +initialised /man/2/asn1 +initialised /man/2/convcs +initialised /man/2/dhcpclient +initialised /man/2/draw-context +initialised /man/2/draw-display +initialised /man/2/itslib +initialised /man/2/pslib +initialised /man/2/sh +initialised /man/2/spree +initialised /man/2/sys-stat +initialised /man/2/timers +initialised /man/2/xml +initialised /man/3/mpeg +initialised /man/4/dbfs +initialised /man/4/registry +initialised /man/8/touchcal +initialiser /man/10/dev +initialises /man/1/avr +initialises /man/10/devattach +initialises /man/10/qio +initialises /man/2/cfg +initialises /man/2/diskblocks +initialises /man/2/rand +initialises /man/2/spree +initialises /man/2/sys-fversion +initialises /man/3/logfs +initialises /man/8/manufacture +initialises /man/8/prep +initialises /man/8/signer +initialising /man/10/dev +initialising /man/2/convcs +initialising /man/2/dis +initialising /man/3/root +initialising /man/8/init +initialization /man/1/cprof +initialization /man/1/limbo +initialization /man/1/sh +initialization /man/10/plan9.ini +initialization /man/10/styxserver +initialization /man/3/tls +initialize /man/1/zeros +initialize /man/10/9load +initialize /man/2/bufio +initialize /man/2/crc +initialize /man/2/draw-example +initialize /man/2/imagefile +initialize /man/2/ir +initialize /man/2/print +initialize /man/2/sys-fversion +initialize /man/2/sys-stat +initialize /man/3/vga +initialize /man/8/prep +initialized /man/1/mc +initialized /man/1/sh +initialized /man/10/a.out +initialized /man/2/disks +initialized /man/2/draw-display +initialized /man/2/geodesy +initializers /man/10/2c +initializes /man/10/2c +initializes /man/10/styxserver +initializes /man/2/crc +initializes /man/2/prof +initializes /man/3/0intro +initializes /man/5/0intro +initializes /man/5/version +initializing /man/8/mkfs +initially /man/1/charon +initially /man/1/collab-clients +initially /man/1/filename +initially /man/1/ftree +initially /man/1/logwindow +initially /man/1/mash +initially /man/1/mc +initially /man/1/mdb +initially /man/1/mk +initially /man/1/sh-alphabet +initially /man/1/wish +initially /man/10/allocb +initially /man/10/devattach +initially /man/10/mk +initially /man/10/plan9.ini +initially /man/10/qio +initially /man/2/attrdb +initially /man/2/keyring-crypt +initially /man/2/security-0intro +initially /man/2/styxservers +initially /man/2/tabs +initially /man/2/tk +initially /man/3/draw +initially /man/3/eia +initially /man/3/flash +initially /man/3/srv +initially /man/3/tls +initially /man/4/keyfs +initially /man/4/kfs +initially /man/4/lockfs +initially /man/4/mntgen +initially /man/4/ramfile +initially /man/4/registry +initially /man/6/dis +initiate /man/3/ip +initiate /man/3/prof +initiated /man/1/acme +initiated /man/1/wm +initiates /man/7/db +initscript /man/1/listen +inject /man/3/ip +inl /man/10/inb +inline /man/2/xml +inlining /man/1/limbo +inm /man/10/2c +inm /man/10/2l +inm /man/10/a.out +inm /man/10/ar +inm /man/10/inm +inm /man/10/srclist +inner /man/10/error +inner /man/2/keyring-sha1 +inner /man/2/math-linalg +inner /man/2/spree-cardlib +inner /man/6/sexprs +innermost /man/1/sh +innermost /man/1/sh-std +innermost /man/2/sh +innermost /man/6/sbl +innermost /man/6/sexprs +innovative /man/1/0intro +inop /man/2/dis +inportb /man/3/arch +input /man/1/9win +input /man/1/acme +input /man/1/alphabet-abc +input /man/1/alphabet-grid +input /man/1/asm +input /man/1/auplay +input /man/1/bind +input /man/1/cat +input /man/1/charon +input /man/1/comm +input /man/1/cook +input /man/1/crypt +input /man/1/dd +input /man/1/diff +input /man/1/disdep +input /man/1/emu +input /man/1/fmt +input /man/1/freq +input /man/1/fs +input /man/1/gettar +input /man/1/grep +input /man/1/grid-monitor +input /man/1/gzip +input /man/1/idea +input /man/1/keyboard +input /man/1/limbo +input /man/1/listen +input /man/1/logon +input /man/1/logwindow +input /man/1/look +input /man/1/man +input /man/1/mash +input /man/1/math-misc +input /man/1/mathcalc +input /man/1/mc +input /man/1/mdb +input /man/1/mk +input /man/1/os +input /man/1/p +input /man/1/plumb +input /man/1/read +input /man/1/secstore +input /man/1/sendmail +input /man/1/sh +input /man/1/sh-csv +input /man/1/sh-file2chan +input /man/1/sh-sexprs +input /man/1/sh-std +input /man/1/sleep +input /man/1/sort +input /man/1/strings +input /man/1/sum +input /man/1/tail +input /man/1/tcs +input /man/1/tee +input /man/1/telnet +input /man/1/timestamp +input /man/1/tiny +input /man/1/tkcmd +input /man/1/tr +input /man/1/tsort +input /man/1/uniq +input /man/1/uuencode +input /man/1/wc +input /man/1/wish +input /man/1/wm +input /man/1/wm-sh +input /man/1/xd +input /man/10/2a +input /man/10/2c +input /man/10/5cv +input /man/10/9load +input /man/10/acid +input /man/10/atoi +input /man/10/dmainit +input /man/10/kstrip +input /man/10/mk +input /man/10/plan9.ini +input /man/10/rune +input /man/2/arg +input /man/2/bufio +input /man/2/cfg +input /man/2/convcs +input /man/2/draw-context +input /man/2/draw-rect +input /man/2/filter +input /man/2/filter-deflate +input /man/2/ida +input /man/2/ip +input /man/2/ir +input /man/2/keyring-getstring +input /man/2/math-export +input /man/2/plumbmsg +input /man/2/sexprs +input /man/2/styx +input /man/2/sys-0intro +input /man/2/sys-byte2char +input /man/2/sys-dup +input /man/2/timers +input /man/2/ubfa +input /man/2/volume +input /man/2/wmclient +input /man/2/wmlib +input /man/3/audio +input /man/3/cmd +input /man/3/cons +input /man/3/dbg +input /man/3/eia +input /man/3/ip +input /man/3/pbus +input /man/3/pointer +input /man/3/srv9 +input /man/3/tv +input /man/3/usb +input /man/4/9srvfs +input /man/4/acme +input /man/4/cpu +input /man/4/export +input /man/4/factotum +input /man/4/import +input /man/4/iostats +input /man/4/keysrv +input /man/4/kfs +input /man/4/mntgen +input /man/4/registry +input /man/6/man +input /man/6/ubfa +input /man/6/utf +input /man/8/applylog +input /man/8/changelogin +input /man/8/cs +input /man/8/dns +input /man/8/plumber +input /man/8/rstyxd +input /man/8/signer +input /man/8/srv +input /man/8/styxchat +input /man/8/styxmon +input /man/9/canvas +input /man/9/entry +input /man/9/listbox +input /man/9/menubutton +input /man/9/options +input /man/9/text +input's /man/1/read +inquire /man/2/scsiio +inquire /man/5/stat +inquires /man/5/stat +inquiry /man/2/scsiio +inquiry /man/3/sd +inrect /man/2/draw-rect +ins /man/1/acme +ins /man/10/inb +insb /man/10/inb +insensitive /man/1/grep +insensitive /man/10/eve +insensitive /man/2/encoding +insensitive /man/3/fs +insensitive /man/9/button +insensitive /man/9/checkbutton +insensitive /man/9/grab +insensitive /man/9/menu +insensitive /man/9/menubutton +insensitive /man/9/radiobutton +inseparable /man/2/dbm +insert /man/1/acme +insert /man/1/mash +insert /man/1/sh +insert /man/1/tktester +insert /man/1/toolbar +insert /man/10/2l +insert /man/10/odbc +insert /man/2/hash +insert /man/4/spree +insert /man/9/canvas +insert /man/9/entry +insert /man/9/grid +insert /man/9/listbox +insert /man/9/menu +insert /man/9/pack +insert /man/9/text +inserted /man/1/fmt +inserted /man/1/mash +inserted /man/1/sh +inserted /man/1/wm-sh +inserted /man/10/2l +inserted /man/10/ar +inserted /man/2/dbm +inserted /man/2/scsiio +inserted /man/2/security-0intro +inserted /man/3/ether +inserted /man/3/tls +inserted /man/4/acme +inserted /man/9/canvas +inserted /man/9/entry +inserted /man/9/grid +inserted /man/9/pack +inserted /man/9/text +inserting /man/10/mk +inserting /man/6/man +inserting /man/9/canvas +inserting /man/9/text +insertion /man/1/acme +insertion /man/1/brutus +insertion /man/10/ar +insertion /man/2/tabs +insertion /man/9/canvas +insertion /man/9/entry +insertion /man/9/text +insertions /man/1/acme +inserts /man/1/acme +inserts /man/1/bind +inserts /man/1/tktester +inserts /man/10/allocb +inserts /man/10/iar +inserts /man/9/grid +inserts /man/9/listbox +inserts /man/9/menu +inserts /man/9/text +inset /man/2/draw-rect +inside /man/1/9win +inside /man/1/brutus +inside /man/1/sh-string +inside /man/1/tiny +inside /man/1/wm +inside /man/1/wm-sh +inside /man/1/yacc +inside /man/10/devattach +inside /man/2/alphabet-intro +inside /man/2/draw-image +inside /man/2/draw-rect +inside /man/2/spree +inside /man/2/spree-cardlib +inside /man/2/styxservers +inside /man/2/styxservers-nametree +inside /man/2/xml +inside /man/3/draw +inside /man/3/prof +inside /man/3/vga +inside /man/5/0intro +inside /man/8/touchcal +inside /man/9/canvas +inside /man/9/grid +inside /man/9/options +inside /man/9/panel +insl /man/10/inb +inspect /man/1/deb +inspect /man/10/acid +inspected /man/2/sys-utfbytes +inspected /man/2/ubfa +inspecting /man/2/debug +inspecting /man/4/factotum +inspection /man/1/0intro +inspection /man/1/mdb +inspection /man/2/debug +inspector /man/1/wm-misc +inspired /man/3/ds +inspired /man/9/canvas +inss /man/10/inb +inst /man/2/dis +inst /man/8/create +inst.b /man/8/create +inst2s /man/2/dis +install /man/1/mk +install /man/10/9load +install /man/6/proto +install /man/8/applylog +install /man/8/create +install /man/8/prep +installation /man/1/0intro +installation /man/8/create +installed /man/1/sh-alphabet +installed /man/1/sh-std +installed /man/10/9load +installed /man/10/print +installed /man/10/styx +installed /man/3/sign +installed /man/4/namespace +installed /man/8/create +installed /man/8/prep +installing /man/2/palmfile +installs /man/1/sh-std +installs /man/8/changelogin +installs /man/8/create +installs /man/8/prep +instance /man/1/acme +instance /man/1/alphabet-fs +instance /man/1/calendar +instance /man/1/collab +instance /man/1/collab-clients +instance /man/1/dmview +instance /man/1/emu +instance /man/1/fs +instance /man/1/ftree +instance /man/1/grid-ns +instance /man/1/listen +instance /man/1/ls +instance /man/1/mk +instance /man/1/sh +instance /man/1/sh-alphabet +instance /man/1/sh-expr +instance /man/1/sh-string +instance /man/1/spree-join +instance /man/1/toolbar +instance /man/1/tsort +instance /man/1/wm +instance /man/1/wm-sh +instance /man/1/yacc +instance /man/10/conf +instance /man/10/dev +instance /man/10/iar +instance /man/10/intrenable +instance /man/10/kbdputc +instance /man/10/mk +instance /man/10/newchan +instance /man/10/seconds +instance /man/10/sleep +instance /man/10/styxserver +instance /man/2/0intro +instance /man/2/alphabet-intro +instance /man/2/asn1 +instance /man/2/bufio +instance /man/2/bufio-chanfill +instance /man/2/command +instance /man/2/dhcpclient +instance /man/2/dialog +instance /man/2/draw-0intro +instance /man/2/draw-context +instance /man/2/draw-font +instance /man/2/exception +instance /man/2/factotum +instance /man/2/ida +instance /man/2/imagefile +instance /man/2/keyring-ipint +instance /man/2/keyset +instance /man/2/palmfile +instance /man/2/print +instance /man/2/registries +instance /man/2/secstore +instance /man/2/security-auth +instance /man/2/selectfile +instance /man/2/sexprs +instance /man/2/spki +instance /man/2/spki-verifier +instance /man/2/spree +instance /man/2/spree-cardlib +instance /man/2/spree-gather +instance /man/2/styxconv +instance /man/2/styxservers +instance /man/2/styxservers-nametree +instance /man/2/sys-0intro +instance /man/2/sys-dial +instance /man/2/sys-pipe +instance /man/2/sys-print +instance /man/2/sys-self +instance /man/2/sys-stat +instance /man/2/ubfa +instance /man/2/wait +instance /man/2/xml +instance /man/3/dbg +instance /man/3/ether +instance /man/3/flash +instance /man/3/indir +instance /man/3/ip +instance /man/3/pnp +instance /man/3/pointer +instance /man/3/sd +instance /man/3/sign +instance /man/3/srv +instance /man/3/tinyfs +instance /man/4/9srvfs +instance /man/4/ftpfs +instance /man/4/kfs +instance /man/4/registry +instance /man/5/flush +instance /man/6/attrdb +instance /man/6/dis +instance /man/6/proto +instance /man/6/sbl +instance /man/6/sexprs +instance /man/6/ubfa +instance /man/7/db +instance /man/8/bootpd +instance /man/8/collabsrv +instance /man/8/cs +instance /man/8/styxmon +instance /man/9/see +instance /man/9/variable +instances /man/1/calendar +instances /man/1/ls +instances /man/10/error +instances /man/2/filter +instances /man/2/styxservers +instances /man/2/sys-dup +instances /man/3/draw +instances /man/3/ip +instances /man/3/srv +instances /man/6/dis +instances /man/6/regexp +instances /man/8/collabsrv +instances /man/9/canvas +instances /man/9/image +instant /man/10/plan9.ini +institute /man/1/sum +instituted /man/2/keyring-0intro +instruction /man/10/a.out +instruction /man/10/acid +instruction /man/10/inb +instruction /man/2/debug +instruction /man/2/dis +instruction /man/2/w3c-xpointers +instruction /man/3/dbg +instruction /man/3/prof +instruction /man/3/prog +instruction /man/6/dis +instruction /man/6/sbl +instruction's /man/2/xml +instructions /man/1/asm +instructions /man/1/cprof +instructions /man/1/emu +instructions /man/1/wm-misc +instructions /man/10/2l +instructions /man/10/acid +instructions /man/10/styx +instructions /man/2/dis +instructions /man/2/math-0intro +instructions /man/2/prof +instructions /man/3/boot +instructions /man/3/prof +instructions /man/3/prog +instructions /man/6/dis +instructions /man/6/sbl +instructions /man/8/collabsrv +instructions /man/8/cs +instructs /man/1/acme +insufficient /man/2/draw-image +insufficient /man/3/draw +insulate /man/2/command +insulate /man/2/disks +insulate /man/2/sys-pctl +insulate /man/3/env +insulating /man/2/styxservers +int /man/1/mc +int /man/1/yacc +int /man/10/2c +int /man/10/allocb +int /man/10/atoi +int /man/10/c2l +int /man/10/delay +int /man/10/dev +int /man/10/devattach +int /man/10/dmainit +int /man/10/dynld +int /man/10/error +int /man/10/eve +int /man/10/getfields +int /man/10/inb +int /man/10/intrenable +int /man/10/kbdputc +int /man/10/kproc +int /man/10/lock +int /man/10/malloc +int /man/10/memory +int /man/10/newchan +int /man/10/parsecmd +int /man/10/print +int /man/10/qio +int /man/10/qlock +int /man/10/readnum +int /man/10/ref +int /man/10/rune +int /man/10/sleep +int /man/10/splhi +int /man/10/strcat +int /man/10/styx +int /man/10/styxserver +int /man/10/xalloc +int /man/2/arg +int /man/2/asn1 +int /man/2/attrdb +int /man/2/bloomfilter +int /man/2/bufio +int /man/2/bufio-chanfill +int /man/2/cfg +int /man/2/command +int /man/2/convcs +int /man/2/crc +int /man/2/daytime +int /man/2/dbm +int /man/2/debug +int /man/2/devpointer +int /man/2/dhcpclient +int /man/2/dialog +int /man/2/dis +int /man/2/diskblocks +int /man/2/disks +int /man/2/dividers +int /man/2/draw-0intro +int /man/2/draw-context +int /man/2/draw-display +int /man/2/draw-font +int /man/2/draw-image +int /man/2/draw-point +int /man/2/draw-pointer +int /man/2/draw-rect +int /man/2/draw-screen +int /man/2/env +int /man/2/ether +int /man/2/exception +int /man/2/factotum +int /man/2/filepat +int /man/2/filter +int /man/2/format +int /man/2/geodesy +int /man/2/hash +int /man/2/ida +int /man/2/imagefile +int /man/2/ip +int /man/2/ir +int /man/2/itslib +int /man/2/keyring-0intro +int /man/2/keyring-auth +int /man/2/keyring-crypt +int /man/2/keyring-gensk +int /man/2/keyring-getmsg +int /man/2/keyring-getstring +int /man/2/keyring-ipint +int /man/2/keyring-rc4 +int /man/2/keyring-sha1 +int /man/2/lock +int /man/2/math-elem +int /man/2/math-export +int /man/2/math-fp +int /man/2/math-linalg +int /man/2/mpeg +int /man/2/names +int /man/2/palmfile +int /man/2/plumbmsg +int /man/2/pop3 +int /man/2/popup +int /man/2/prefab-compound +int /man/2/prefab-element +int /man/2/print +int /man/2/prof +int /man/2/pslib +int /man/2/rand +int /man/2/readdir +int /man/2/regex +int /man/2/registries +int /man/2/scsiio +int /man/2/secstore +int /man/2/security-auth +int /man/2/security-random +int /man/2/sets +int /man/2/sexprs +int /man/2/sh +int /man/2/smtp +int /man/2/spki +int /man/2/spree +int /man/2/spree-allow +int /man/2/spree-cardlib +int /man/2/spree-gather +int /man/2/string +int /man/2/stringinttab +int /man/2/styx +int /man/2/styxconv +int /man/2/styxpersist +int /man/2/styxservers +int /man/2/styxservers-nametree +int /man/2/sys-bind +int /man/2/sys-byte2char +int /man/2/sys-chdir +int /man/2/sys-dial +int /man/2/sys-dirread +int /man/2/sys-dup +int /man/2/sys-export +int /man/2/sys-file2chan +int /man/2/sys-fversion +int /man/2/sys-iounit +int /man/2/sys-millisec +int /man/2/sys-open +int /man/2/sys-pctl +int /man/2/sys-pipe +int /man/2/sys-print +int /man/2/sys-read +int /man/2/sys-remove +int /man/2/sys-seek +int /man/2/sys-self +int /man/2/sys-sleep +int /man/2/sys-stat +int /man/2/sys-tokenize +int /man/2/sys-utfbytes +int /man/2/sys-werrstr +int /man/2/tabs +int /man/2/tftp +int /man/2/timers +int /man/2/tk +int /man/2/tkclient +int /man/2/ubfa +int /man/2/venti +int /man/2/volume +int /man/2/w3c-css +int /man/2/w3c-xpointers +int /man/2/wait +int /man/2/wmclient +int /man/2/wmsrv +int /man/2/xml +int /man/3/arch +int /man/3/dbg +int /man/6/colour +int /man/6/sbl +int /man/7/db +int,int /man/2/regex +int,real /man/2/math-elem +int,real /man/2/math-fp +intact /man/2/draw-image +intact /man/2/prefab-element +integer /man/1/charon +integer /man/1/fc +integer /man/1/lc +integer /man/1/math-misc +integer /man/1/mathcalc +integer /man/1/mc +integer /man/1/mdb +integer /man/1/sh-expr +integer /man/1/sh-std +integer /man/1/sh-test +integer /man/1/sort +integer /man/1/wm +integer /man/10/a.out +integer /man/10/acid +integer /man/10/atoi +integer /man/10/memory +integer /man/10/newchan +integer /man/10/print +integer /man/10/readnum +integer /man/10/strcat +integer /man/2/0intro +integer /man/2/asn1 +integer /man/2/daytime +integer /man/2/dhcpclient +integer /man/2/dis +integer /man/2/diskblocks +integer /man/2/draw-0intro +integer /man/2/draw-point +integer /man/2/draw-rect +integer /man/2/draw-screen +integer /man/2/factotum +integer /man/2/geodesy +integer /man/2/ida +integer /man/2/itslib +integer /man/2/keyring-0intro +integer /man/2/keyring-gensk +integer /man/2/keyring-ipint +integer /man/2/math-elem +integer /man/2/math-export +integer /man/2/math-fp +integer /man/2/math-linalg +integer /man/2/palmfile +integer /man/2/prof +integer /man/2/rand +integer /man/2/readdir +integer /man/2/security-random +integer /man/2/sets +integer /man/2/spree +integer /man/2/spree-allow +integer /man/2/spree-cardlib +integer /man/2/string +integer /man/2/styx +integer /man/2/styxservers +integer /man/2/sys-0intro +integer /man/2/sys-bind +integer /man/2/sys-dial +integer /man/2/sys-dirread +integer /man/2/sys-dup +integer /man/2/sys-print +integer /man/2/sys-stat +integer /man/2/timers +integer /man/2/tk +integer /man/2/ubfa +integer /man/2/w3c-css +integer /man/2/w3c-xpointers +integer /man/3/audio +integer /man/3/dbg +integer /man/3/draw +integer /man/3/ether +integer /man/3/flash +integer /man/3/pbus +integer /man/3/sd +integer /man/3/sign +integer /man/4/dbfs +integer /man/4/factotum +integer /man/5/0intro +integer /man/6/dis +integer /man/6/keytext +integer /man/6/ubfa +integer /man/6/users +integer /man/8/styxchat +integer /man/9/canvas +integer /man/9/choicebutton +integer /man/9/entry +integer /man/9/grid +integer /man/9/image +integer /man/9/listbox +integer /man/9/menu +integer /man/9/options +integer /man/9/text +integer /man/9/types +integers /man/1/fc +integers /man/1/itest +integers /man/1/mathcalc +integers /man/1/sh-expr +integers /man/1/tail +integers /man/10/a.out +integers /man/10/acid +integers /man/10/print +integers /man/10/readnum +integers /man/2/asn1 +integers /man/2/dhcpclient +integers /man/2/draw-0intro +integers /man/2/draw-display +integers /man/2/keyring-ipint +integers /man/2/rand +integers /man/2/sets +integers /man/2/styx +integers /man/3/cons +integers /man/3/draw +integers /man/3/prof +integers /man/4/dbfs +integers /man/5/0intro +integers /man/5/stat +integers /man/6/colour +integers /man/6/dis +integers /man/6/ubfa +integers /man/8/styxchat +integers /man/9/grid +integral /man/1/mc +integral /man/10/atoi +integral /man/2/math-fp +integral /man/2/sys-0intro +integral /man/2/sys-stat +integral /man/3/tls +integral /man/5/read +integral /man/5/stat +integral /man/6/image +integral /man/9/scale +integrated /man/10/plan9.ini +integration /man/1/mc +integrity /man/2/filter-deflate +intel /man/10/2c +intel /man/10/a.out +intel /man/10/plan9.ini +intel /man/3/ether +intel /man/3/i82365 +intelligent /man/10/plan9.ini +intellimouse /man/10/plan9.ini +intended /man/1/alphabet-main +intended /man/1/charon +intended /man/1/emu +intended /man/1/man +intended /man/1/sh-std +intended /man/1/tiny +intended /man/10/allocb +intended /man/10/kproc +intended /man/10/plan9.ini +intended /man/10/xalloc +intended /man/2/keyring-0intro +intended /man/2/math-0intro +intended /man/2/prefab-element +intended /man/2/security-0intro +intended /man/2/sexprs +intended /man/2/sys-stat +intended /man/2/translate +intended /man/2/ubfa +intended /man/2/venti +intended /man/3/ftl +intended /man/3/ip +intended /man/3/pnp +intended /man/4/factotum +intended /man/4/registry +intended /man/6/login +intended /man/8/rdbgsrv +intended /man/8/register +intended /man/9/frame +intended /man/9/label +intends /man/10/kproc +intensities /man/2/draw-display +intensities /man/6/colour +intensity /man/6/colour +intensive /man/1/sh +intent /man/3/fs +intention /man/3/pnp +intentions /man/10/qlock +inter /man/2/ip +inter /man/3/ds +inter /man/6/font +interact /man/1/mprof +interact /man/2/draw-context +interact /man/2/factotum +interact /man/2/spree +interact /man/2/tk +interact /man/3/dbg +interact /man/4/spree +interacting /man/9/entry +interaction /man/1/collab-clients +interaction /man/1/ftree +interaction /man/1/mux +interaction /man/10/splhi +interaction /man/2/spree +interaction /man/2/tkclient +interaction /man/2/wmclient +interaction /man/2/wmlib +interaction /man/2/wmsrv +interaction /man/7/db +interactions /man/1/tkcmd +interactions /man/2/virgil +interactions /man/9/scale +interactive /man/1/acme +interactive /man/1/look +interactive /man/1/mc +interactive /man/1/mux +interactive /man/1/sh +interactive /man/1/sh-tk +interactive /man/1/tkcmd +interactive /man/2/draw-0intro +interactive /man/2/draw-context +interactive /man/2/itslib +interactive /man/2/prefab-0intro +interactive /man/2/selectfile +interactive /man/2/sh +interactive /man/2/spree +interactive /man/3/cons +interactive /man/4/acme +interactive /man/4/spree +interactive /man/8/prep +interactive /man/9/frame +interactive /man/9/label +interactively /man/1/acme +interactively /man/1/alphabet-fs +interactively /man/1/filename +interactively /man/1/fs +interactively /man/1/mc +interactively /man/1/mprof +interactively /man/1/prof +interactively /man/1/sh +interactively /man/1/tkcmd +interactively /man/1/units +interactively /man/1/wm +interactively /man/10/plan9.ini +interacts /man/2/factotum +interacts /man/8/register +interacts /man/9/scrollbar +interapplication /man/8/plumber +intercepted /man/2/keyring-0intro +intercepts /man/2/ir +interchange /man/2/format +interconnection /man/1/alphabet-abc +interconnection /man/1/alphabet-grid +interested /man/9/scale +interesting /man/1/0intro +interesting /man/10/plan9.ini +interesting /man/2/dbm +interesting /man/9/canvas +interesting /man/9/text +interface /man/1/0intro +interface /man/1/acme +interface /man/1/ftree +interface /man/1/grid-monitor +interface /man/1/grid-query +interface /man/1/mash +interface /man/1/mathcalc +interface /man/1/os +interface /man/1/session +interface /man/1/sh +interface /man/1/sh-alphabet +interface /man/1/sh-file2chan +interface /man/1/sh-std +interface /man/1/sh-string +interface /man/1/tiny +interface /man/1/wish +interface /man/1/wm +interface /man/10/conf +interface /man/10/dev +interface /man/10/devattach +interface /man/10/dmainit +interface /man/10/inb +interface /man/10/kbdputc +interface /man/10/ntsrv +interface /man/10/parsecmd +interface /man/10/plan9.ini +interface /man/10/styx +interface /man/10/styxserver +interface /man/10ti925/tihost +interface /man/2/0intro +interface /man/2/alphabet-intro +interface /man/2/bufio +interface /man/2/bufio-chanfill +interface /man/2/command +interface /man/2/debug +interface /man/2/devpointer +interface /man/2/dhcpclient +interface /man/2/disks +interface /man/2/dividers +interface /man/2/draw-0intro +interface /man/2/draw-context +interface /man/2/draw-display +interface /man/2/encoding +interface /man/2/env +interface /man/2/factotum +interface /man/2/filter +interface /man/2/filter-deflate +interface /man/2/filter-slip +interface /man/2/fsproto +interface /man/2/ip +interface /man/2/keyring-0intro +interface /man/2/mpeg +interface /man/2/palmfile +interface /man/2/plumbmsg +interface /man/2/pop3 +interface /man/2/prefab-0intro +interface /man/2/prefab-compound +interface /man/2/print +interface /man/2/prof +interface /man/2/scsiio +interface /man/2/security-ssl +interface /man/2/sh +interface /man/2/smtp +interface /man/2/spree +interface /man/2/spree-cardlib +interface /man/2/spree-gather +interface /man/2/styx +interface /man/2/styxservers-nametree +interface /man/2/sys-dial +interface /man/2/sys-file2chan +interface /man/2/sys-pipe +interface /man/2/sys-werrstr +interface /man/2/tabs +interface /man/2/tk +interface /man/2/tkclient +interface /man/2/virgil +interface /man/2/volume +interface /man/2/wait +interface /man/2/wmclient +interface /man/2/wmsrv +interface /man/2/xml +interface /man/3/audio +interface /man/3/cmd +interface /man/3/draw +interface /man/3/ether +interface /man/3/flash +interface /man/3/floppy +interface /man/3/fpga +interface /man/3/fs +interface /man/3/ftl +interface /man/3/gpio +interface /man/3/i2c +interface /man/3/i82365 +interface /man/3/ip +interface /man/3/lpt +interface /man/3/pnp +interface /man/3/pointer +interface /man/3/sd +interface /man/3/srv +interface /man/3/touch +interface /man/3/usb +interface /man/3/vid +interface /man/4/acme +interface /man/4/factotum +interface /man/4/namespace +interface /man/5/0intro +interface /man/6/colour +interface /man/6/scancode +interface /man/6/utf +interface /man/7/db +interface /man/7/dbsrv +interface /man/8/collabsrv +interface /man/8/cs +interface /man/8/dhcp +interface /man/8/getauthinfo +interface /man/8/httpd +interface /man/9/0intro +interface's /man/2/dhcpclient +interface's /man/3/ip +interfaces /man/10/0intro +interfaces /man/10/9load +interfaces /man/10/conf +interfaces /man/10/error +interfaces /man/2/0intro +interfaces /man/2/ip +interfaces /man/2/keyring-crypt +interfaces /man/2/sys-0intro +interfaces /man/2/sys-dial +interfaces /man/2/tk +interfaces /man/3/ip +interfaces /man/3/lpt +interfaces /man/3/pipe +interfaces /man/3/pnp +interfaces /man/4/namespace +interfaces /man/8/0intro +interfaces /man/8/rip +interference /man/2/sys-read +interim /man/5/0intro +interior /man/2/draw-image +interior /man/3/draw +interior /man/9/canvas +interior /man/9/options +interleave /man/3/ds +interleaved /man/3/ds +interleaved /man/3/pipe +interleaved /man/3/tv +interleaved /man/4/factotum +interleaving /man/3/ds +interline /man/2/draw-font +interlock /man/10/lock +interlocked /man/1/wm-misc +interloper /man/2/security-0intro +intermediate /man/1/acme +intermediate /man/1/alphabet-abc +intermediate /man/1/alphabet-grid +intermediate /man/1/mk +intermediate /man/10/mk +intermediate /man/2/smtp +intermediate /man/2/spree-gather +intermediate /man/2/translate +intermediate /man/8/mkfs +intermingled /man/10/qio +internal /man/1/sh +internal /man/1/tktester +internal /man/10/allocb +internal /man/10/c2l +internal /man/10/dynld +internal /man/10/error +internal /man/10/kbdputc +internal /man/10/srclist +internal /man/10/styx +internal /man/2/0intro +internal /man/2/alphabet-intro +internal /man/2/convcs +internal /man/2/crc +internal /man/2/dbm +internal /man/2/dialog +internal /man/2/dis +internal /man/2/dividers +internal /man/2/draw-image +internal /man/2/ether +internal /man/2/imagefile +internal /man/2/ip +internal /man/2/math-export +internal /man/2/prefab-element +internal /man/2/print +internal /man/2/registries +internal /man/2/selectfile +internal /man/2/sets +internal /man/2/sexprs +internal /man/2/spki +internal /man/2/spree-allow +internal /man/2/spree-cardlib +internal /man/2/spree-gather +internal /man/2/spree-objstore +internal /man/2/styxservers +internal /man/2/styxservers-nametree +internal /man/2/sys-millisec +internal /man/2/tabs +internal /man/2/tk +internal /man/2/tkclient +internal /man/2/ubfa +internal /man/2/w3c-xpointers +internal /man/2/wmclient +internal /man/2/wmlib +internal /man/3/draw +internal /man/3/indir +internal /man/3/ip +internal /man/3/logfs +internal /man/3/pbus +internal /man/3/pipe +internal /man/3/snarf +internal /man/3/srv +internal /man/4/kfs +internal /man/6/0intro +internal /man/6/keys +internal /man/6/keytext +internal /man/7/dbsrv +internal /man/9/grid +internal /man/9/options +internal /man/9/pack +internal /man/9/scrollbar +internal /man/9/text +internally /man/1/sh +internally /man/10/dev +internally /man/2/alphabet-intro +internally /man/2/bufio +internally /man/2/draw-display +internally /man/2/hash +internally /man/2/palmfile +internally /man/2/spki +internally /man/2/srv +internally /man/2/styxservers +internally /man/6/colour +internally /man/6/sbl +internally /man/6/users +internally /man/6/utf +internally /man/9/canvas +international /man/1/idea +international /man/2/geodesy +international /man/2/keyring-crypt +internet /man/1/miniterm +internet /man/1/mux +internet /man/2/dhcpclient +internet /man/2/ip +internet /man/2/keyring-sha1 +internet /man/2/sexprs +internet /man/2/srv +internet /man/2/tftp +internet /man/3/ip +internet /man/6/ndb +internet /man/6/sexprs +internet /man/8/bootpd +internet /man/8/cs +internet /man/8/dns +internet /man/8/ping +internet /man/8/rip +internet's /man/4/ftpfs +interp /man/10/kproc +interparagraph /man/6/man +interposes /man/4/iostats +interposes /man/8/rdbgsrv +interpret /man/1/0intro +interpret /man/1/mash +interpret /man/1/unicode +interpret /man/10/a.out +interpret /man/10/atoi +interpret /man/10/dev +interpret /man/2/plumbmsg +interpret /man/2/security-0intro +interpret /man/4/acme +interpret /man/4/registry +interpret /man/4/spree +interpret /man/5/stat +interpret /man/8/collabsrv +interpret /man/9/0intro +interpretable /man/10/atoi +interpretation /man/1/chmod +interpretation /man/1/cook +interpretation /man/1/mc +interpretation /man/1/plumb +interpretation /man/1/sh +interpretation /man/1/sh-arg +interpretation /man/1/sh-expr +interpretation /man/10/dev +interpretation /man/2/0intro +interpretation /man/2/dis +interpretation /man/2/draw-0intro +interpretation /man/2/names +interpretation /man/2/registries +interpretation /man/2/styxservers-nametree +interpretation /man/2/sys-fversion +interpretation /man/3/cmd +interpretation /man/3/fpga +interpretation /man/3/ip +interpretation /man/6/sexprs +interpretation /man/9/0intro +interpretation /man/9/menu +interpretation /man/9/send +interpreter /man/1/deb +interpreter /man/1/emu +interpreter /man/1/limbo +interpreter /man/1/sleep +interpreter /man/10/getfields +interpreter /man/10/kproc +interpreter /man/2/sh +interpreter /man/3/cmd +interpreter /man/3/prog +interpreter /man/9/options +interpreter's /man/3/cmd +interpreters /man/1/0intro +interpreters /man/2/sexprs +interpreting /man/1/acme +interpreting /man/1/filename +interpreting /man/1/mk +interpreting /man/1/sh-std +interpreting /man/10/a.out +interpreting /man/10/mk +interpreting /man/10/parsecmd +interpreting /man/2/plumbmsg +interpreting /man/4/spree +interpreting /man/6/sexprs +interprets /man/1/0intro +interprets /man/1/cleanname +interprets /man/1/diff +interprets /man/1/ftree +interprets /man/1/mc +interprets /man/1/nsbuild +interprets /man/1/p +interprets /man/1/telnet +interprets /man/10/atoi +interprets /man/10/print +interprets /man/2/styxservers-nametree +interprets /man/2/sys-print +interprets /man/2/wmlib +interprets /man/3/indir +interprets /man/3/usb +interprets /man/6/ndb +interprets /man/8/cs +interprets /man/8/rip +interprocess /man/2/sys-pipe +interprocess /man/3/pipe +interrogate /man/2/debug +interrogate /man/9/send +interrogate /man/9/variable +interrogated /man/2/draw-0intro +interrupt /man/10/allocb +interrupt /man/10/delay +interrupt /man/10/intrenable +interrupt /man/10/kproc +interrupt /man/10/lock +interrupt /man/10/malloc +interrupt /man/10/plan9.ini +interrupt /man/10/qio +interrupt /man/10/sleep +interrupt /man/10/splhi +interrupt /man/3/arch +interrupt /man/3/cons +interrupt /man/3/kprof +interrupt /man/3/pnp +interrupt /man/4/spree +interrupted /man/10/kproc +interrupted /man/10/sleep +interrupted /man/3/tls +interrupts /man/10/delay +interrupts /man/10/dev +interrupts /man/10/error +interrupts /man/10/intrenable +interrupts /man/10/lock +interrupts /man/10/panic +interrupts /man/10/sleep +interrupts /man/10/splhi +interrupts /man/3/arch +interrupts /man/5/flush +intersect /man/2/draw-image +intersect /man/2/draw-rect +intersect /man/2/spki +intersecting /man/2/draw-image +intersecting /man/3/draw +intersection /man/1/alphabet-fs +intersection /man/1/fs +intersection /man/2/draw-image +intersection /man/2/draw-rect +intersection /man/2/sets +intersection /man/2/spree +intersil /man/10/plan9.ini +interspersed /man/1/mash +interspersed /man/1/sh +interval /man/1/mc +interval /man/1/prof +interval /man/1/sleep +interval /man/2/dhcpclient +interval /man/2/ida +interval /man/2/ip +interval /man/2/prof +interval /man/2/timers +interval /man/3/prof +interval /man/8/ping +intervals /man/1/acme +intervals /man/9/text +intervening /man/1/mash +intervening /man/1/sh +intrdisable /man/10/intrenable +intrenable /man/10/intrenable +intrenable /man/10/splhi +intro /man/1/0intro +intro /man/1/bind +intro /man/1/grid-register +intro /man/1/limbo +intro /man/1/listen +intro /man/1/mux +intro /man/1/rcmd +intro /man/1/session +intro /man/1/sh-file2chan +intro /man/1/tkcmd +intro /man/1/wish +intro /man/10/0intro +intro /man/10/dev +intro /man/10/devattach +intro /man/10/odbc +intro /man/10/styx +intro /man/2/0intro +intro /man/2/alphabet-intro +intro /man/2/bufio +intro /man/2/devpointer +intro /man/2/draw-0intro +intro /man/2/draw-context +intro /man/2/draw-image +intro /man/2/draw-point +intro /man/2/drawmux +intro /man/2/ir +intro /man/2/keyring-0intro +intro /man/2/keyring-crypt +intro /man/2/keyring-rc4 +intro /man/2/math-0intro +intro /man/2/math-elem +intro /man/2/math-export +intro /man/2/math-fp +intro /man/2/math-linalg +intro /man/2/names +intro /man/2/prefab-0intro +intro /man/2/prefab-element +intro /man/2/prefab-environ +intro /man/2/prefab-style +intro /man/2/security-0intro +intro /man/2/security-login +intro /man/2/spki +intro /man/2/styx +intro /man/2/styxconv +intro /man/2/styxservers +intro /man/2/styxservers-nametree +intro /man/2/sys-0intro +intro /man/2/sys-bind +intro /man/2/sys-byte2char +intro /man/2/sys-chdir +intro /man/2/sys-dirread +intro /man/2/sys-dup +intro /man/2/sys-fd2path +intro /man/2/sys-file2chan +intro /man/2/sys-fversion +intro /man/2/sys-iounit +intro /man/2/sys-millisec +intro /man/2/sys-open +intro /man/2/sys-pctl +intro /man/2/sys-print +intro /man/2/sys-read +intro /man/2/sys-remove +intro /man/2/sys-seek +intro /man/2/sys-sleep +intro /man/2/sys-stat +intro /man/2/sys-tokenize +intro /man/2/sys-utfbytes +intro /man/2/sys-werrstr +intro /man/2/tk +intro /man/2/volume +intro /man/3/0intro +intro /man/3/cap +intro /man/3/dbg +intro /man/3/draw +intro /man/3/fs +intro /man/3/logfs +intro /man/3/mnt +intro /man/3/pointer +intro /man/3/prog +intro /man/3/srv9 +intro /man/4/0intro +intro /man/4/cpu +intro /man/4/export +intro /man/4/iostats +intro /man/4/mntgen +intro /man/4/namespace +intro /man/4/tarfs +intro /man/5/0intro +intro /man/5/attach +intro /man/5/stat +intro /man/5/walk +intro /man/6/0intro +intro /man/6/colour +intro /man/6/font +intro /man/6/image +intro /man/6/keyboard +intro /man/6/login +intro /man/6/users +intro /man/7/0intro +intro /man/8/0intro +intro /man/8/styxchat +intro /man/8/styxmon +intro /man/9/0intro +intro /man/9/types +introduce /man/2/draw-example +introduce /man/3/draw +introduce /man/3/ds +introduced /man/1/mc +introduced /man/2/cfg +introduced /man/2/w3c-css +introduces /man/2/0intro +introduction /man/1/0intro +introduction /man/10/0intro +introduction /man/2/0intro +introduction /man/2/keyring-0intro +introduction /man/2/security-0intro +introduction /man/2/sys-0intro +introduction /man/3/0intro +introduction /man/4/0intro +introduction /man/5/0intro +introduction /man/5/attach +introduction /man/6/0intro +introduction /man/7/0intro +introduction /man/8/0intro +introduction /man/9/0intro +introduction /man/9/bind +introduction /man/9/canvas +introduction /man/9/cursor +introduction /man/9/menu +introduction /man/9/menubutton +intruder /man/2/security-0intro +ints /man/3/prog +inttoip /man/2/keyring-ipint +inval /man/2/math-fp +inval /man/3/dbg +invalid /man/1/sh +invalid /man/1/sh-std +invalid /man/10/c2l +invalid /man/10/devattach +invalid /man/10/iar +invalid /man/10/newchan +invalid /man/10/styxserver +invalid /man/2/0intro +invalid /man/2/draw-display +invalid /man/2/ether +invalid /man/2/ip +invalid /man/2/ir +invalid /man/2/keyring-certtostr +invalid /man/2/keyring-sha1 +invalid /man/2/math-fp +invalid /man/2/sh +invalid /man/2/styx +invalid /man/2/styxservers +invalid /man/2/sys-byte2char +invalid /man/2/virgil +invalid /man/3/boot +invalid /man/3/cap +invalid /man/3/dbg +invalid /man/3/pbus +invalid /man/4/spree +invalid /man/5/flush +invalidated /man/9/image +invalidates /man/8/createsignerkey +invariably /man/10/intrenable +invariably /man/10/newchan +invariably /man/2/ida +invariably /man/8/ftl +invariant /man/10/conf +invariant /man/6/sbl +invented /man/3/indir +inverse /man/1/alphabet-abc +inverse /man/1/alphabet-grid +inverse /man/1/alphabet-main +inverse /man/2/devpointer +inverse /man/2/filter-deflate +inverse /man/2/keyring-certtostr +inverse /man/2/keyring-ipint +inverse /man/2/math-elem +inverse /man/2/sys-byte2char +inverse /man/6/utf +invert /man/2/sets +invert /man/6/image +inverted /man/6/image +inverts /man/1/sh-std +investigate /man/1/acme +investigates /man/1/math-misc +invisible /man/1/tiny +invisible /man/2/draw-display +invisible /man/2/prefab-element +invisible /man/2/spree +invisible /man/2/spree-cardlib +invocation /man/1/alphabet-fs +invocation /man/1/fs +invocation /man/1/mash +invocation /man/1/sh +invocation /man/2/sh +invocation /man/9/button +invocation /man/9/menu +invocation /man/9/update +invoke /man/1/acme +invoke /man/1/yacc +invoke /man/10/devattach +invoke /man/10/ntsrv +invoke /man/2/sys-chdir +invoke /man/2/sys-pctl +invoke /man/3/kprof +invoke /man/8/svc +invoke /man/9/bind +invoke /man/9/button +invoke /man/9/canvas +invoke /man/9/checkbutton +invoke /man/9/choicebutton +invoke /man/9/entry +invoke /man/9/frame +invoke /man/9/label +invoke /man/9/listbox +invoke /man/9/menu +invoke /man/9/menubutton +invoke /man/9/panel +invoke /man/9/radiobutton +invoke /man/9/scale +invoke /man/9/scrollbar +invoke /man/9/text +invoked /man/1/bind +invoked /man/1/mash +invoked /man/1/mash-tk +invoked /man/1/mk +invoked /man/1/runas +invoked /man/1/sh +invoked /man/1/sh-alphabet +invoked /man/1/sh-arg +invoked /man/1/sh-file2chan +invoked /man/1/sh-std +invoked /man/1/wm-sh +invoked /man/10/acid +invoked /man/10/dynld +invoked /man/10/intrenable +invoked /man/10/kproc +invoked /man/10/mk +invoked /man/10/qio +invoked /man/2/arg +invoked /man/2/command +invoked /man/2/ir +invoked /man/2/sh +invoked /man/3/root +invoked /man/4/9srvfs +invoked /man/4/factotum +invoked /man/4/keysrv +invoked /man/4/memfs +invoked /man/6/namespace +invoked /man/8/prep +invoked /man/8/signer +invoked /man/9/button +invoked /man/9/canvas +invoked /man/9/checkbutton +invoked /man/9/choicebutton +invoked /man/9/entry +invoked /man/9/label +invoked /man/9/listbox +invoked /man/9/menu +invoked /man/9/menubutton +invoked /man/9/panel +invoked /man/9/radiobutton +invoked /man/9/scale +invoked /man/9/scrollbar +invoked /man/9/text +invoker /man/1/passwd +invokes /man/1/emu +invokes /man/1/listen +invokes /man/1/runas +invokes /man/1/sh-csv +invokes /man/1/sh-sexprs +invokes /man/1/sh-std +invokes /man/1/sh-tk +invokes /man/1/wm-sh +invokes /man/10/error +invokes /man/2/sys-file2chan +invokes /man/7/dbsrv +invokes /man/8/srv +invokes /man/8/svc +invokes /man/9/button +invokes /man/9/checkbutton +invokes /man/9/menu +invokes /man/9/menubutton +invokes /man/9/radiobutton +invoking /man/1/alphabet-fs +invoking /man/1/fs +invoking /man/1/ftree +invoking /man/1/passwd +invoking /man/10/error +invoking /man/10/parsecmd +invoking /man/2/command +invoking /man/2/dhcpclient +invoking /man/2/disks +invoking /man/2/drawmux +invoking /man/2/ida +invoking /man/2/secstore +invoking /man/2/sexprs +invoking /man/2/sh +invoking /man/2/spki +invoking /man/2/sys-chdir +invoking /man/2/ubfa +invoking /man/2/wait +invoking /man/2/workdir +invoking /man/8/getauthinfo +invoking /man/8/signer +invoking /man/9/canvas +invoking /man/9/choicebutton +invoking /man/9/menu +invoking /man/9/text +involve /man/1/mprof +involved /man/1/mv +involved /man/1/ns +involved /man/1/webgrab +involved /man/2/draw-image +involved /man/2/spree +involved /man/4/iostats +involvement /man/8/svc +involves /man/8/logind +involving /man/1/sh-alphabet +involving /man/2/math-0intro +involving /man/2/sys-iounit +involving /man/3/draw +in² /man/1/units +io /man/2/diskblocks +io /man/2/disks +io /man/2/scsiio +io /man/3/eia +io /man/3/i2c +io.h /man/10/0intro +ioalloc /man/3/arch +iob /man/2/format +iob /man/3/arch +iobfd /man/3/arch +iobuf /man/1/yacc +iobuf /man/2/attrdb +iobuf /man/2/bufio +iobuf /man/2/bufio-chanfill +iobuf /man/2/format +iobuf /man/2/imagefile +iobuf /man/2/pslib +iobuf /man/2/sexprs +iobuf /man/2/ubfa +iobuf.gets /man/6/dis +ioexclude /man/10/plan9.ini +iohdrsz /man/10/styx +iohdrsz /man/2/styx +iol /man/3/arch +iostats /man/4/iostats +iostats.b /man/4/iostats +iostats.out /man/4/iostats +iota /man/2/format +iota /man/2/geodesy +iota /man/2/readdir +iota /man/2/scsiio +iota /man/2/styxservers-nametree +iota /man/2/tkclient +iota /man/2/w3c-xpointers +iota /man/2/wmclient +iounit /man/10/styx +iounit /man/2/styx +iounit /man/2/styxservers +iounit /man/2/sys-iounit +iounit /man/3/prog +iounit /man/5/0intro +iounit /man/5/open +iounit /man/5/read +iounit /man/8/styxchat +iow /man/3/arch +ip /man/1/dmview +ip /man/1/netstat +ip /man/10/0intro +ip /man/10/conf +ip /man/10/dev +ip /man/10/plan9.ini +ip /man/2/dhcpclient +ip /man/2/ether +ip /man/2/ip +ip /man/2/keyring-getmsg +ip /man/2/sys-dial +ip /man/2/tftp +ip /man/2/virgil +ip /man/3/ether +ip /man/3/fpga +ip /man/3/ip +ip /man/6/man +ip /man/6/ndb +ip /man/8/bootpd +ip /man/8/cs +ip /man/8/dhcp +ip /man/8/dns +ip /man/8/fpgaload +ip /man/8/httpd +ip /man/8/init +ip /man/8/logind +ip /man/8/ping +ip /man/8/rip +ip /man/8/sntp +ip /man/8/virgild +ip.b /man/2/ip +ip.h /man/10/0intro +ip.m /man/2/ip +ipa2h /man/2/srv +ipaddr /man/2/ip +ipaddr /man/3/ip +ipaddr.newv4 /man/2/ip +ipaddr.newv6 /man/2/ip +ipaddr.parse /man/2/ip +ipaddr.parsecidr /man/2/ip +ipaddr.parsemask /man/2/ip +ipaddress /man/3/ip +ipadx /man/9/grid +ipadx /man/9/pack +ipady /man/9/grid +ipady /man/9/pack +ipaq /man/10/conf +ipattr /man/6/attrdb +ipengine /man/3/fpga +ipgw /man/2/dhcpclient +ipgw /man/6/ndb +ipgw /man/8/bootpd +iph2a /man/2/srv +ipifc /man/2/dhcpclient +ipifc /man/2/ip +ipifc /man/3/ip +ipifc /man/8/dhcp +ipifc /man/8/rip +ipifc.c /man/3/ip +ipint /man/2/keyring-0intro +ipint /man/2/keyring-gensk +ipint /man/2/keyring-ipint +ipint /man/3/cap +ipint /man/4/factotum +ipint /man/6/keytext +ipint.iptobytes /man/4/factotum +iplifc /man/2/ip +ipmask /man/2/dhcpclient +ipmask /man/3/ip +ipmask /man/6/ndb +ipmask /man/8/bootpd +ipmsg /man/3/ip +ipn2p /man/2/srv +ipnet /man/6/ndb +ipnet /man/8/bootpd +iproute /man/3/ip +iproute /man/8/rip +iprouter /man/3/ip +iprouting /man/3/ip +ips /man/2/dhcpclient +ipselftab /man/3/ip +iptob64 /man/2/keyring-ipint +iptobebytes /man/2/keyring-ipint +iptobytes /man/2/keyring-ipint +iptobytes /man/6/keytext +iptoint /man/2/keyring-ipint +iptostr /man/2/keyring-ipint +ipv4 /man/2/dhcpclient +ipv4 /man/2/ip +ipv4 /man/3/ip +ipv4 /man/6/ndb +ipv4proto /man/6/ndb +ipv6 /man/2/ip +ipv6 /man/3/ip +ipv6rp /man/2/ip +ir /man/1/mux +ir /man/2/draw-0intro +ir /man/2/draw-context +ir /man/2/ir +ir /man/2/prefab-0intro +ir /man/2/prefab-compound +ir /man/2/volume +ir /man/2/wmclient +ir /man/6/man +ir.b /man/2/ir +ir.m /man/2/ir +iraise /man/2/dis +irc /man/2/ir +iref /man/10/newchan +ireland /man/2/geodesy +ireland65 /man/2/geodesy +irish /man/2/geodesy +irishnatgrid /man/2/geodesy +irix /man/4/namespace +irmpath.b /man/2/ir +irmserver /man/6/ndb +irq /man/10/plan9.ini +irq /man/3/arch +irq /man/3/mpeg +irq3 /man/10/plan9.ini +irq4 /man/10/plan9.ini +irqalloc /man/3/arch +irraw /man/2/ir +irrelevant /man/2/sys-stat +irrelevant /man/6/font +irrespective /man/1/charon +irritating /man/2/asn1 +irsim.b /man/2/ir +irtest /man/2/ir +irval /man/2/ir +isa /man/10/dmainit +isa /man/10/plan9.ini +isa /man/3/pnp +isa.h /man/6/dis +isaconfig /man/10/inb +isatom /man/2/ubfa +isbinary /man/2/ubfa +isclient /man/3/tls +iscompressed /man/2/palmfile +isdir /man/10/newchan +isdir /man/10/styxserver +isdir /man/6/plumbing +isect /man/8/prep +iseek /man/1/dd +isempty /man/2/sets +isempty /man/2/spree-cardlib +iseve /man/10/eve +isfile /man/6/plumbing +isint /man/2/ubfa +isize /man/2/dis +islist /man/1/sh-sexprs +islist /man/2/sexprs +islist /man/2/ubfa +islo /man/10/splhi +islocal /man/2/spki +ismulticast /man/2/ip +isn't /man/1/asm +isn't /man/4/factotum +isn't /man/9/button +isn't /man/9/canvas +isn't /man/9/checkbutton +isn't /man/9/choicebutton +isn't /man/9/entry +isn't /man/9/label +isn't /man/9/listbox +isn't /man/9/menu +isn't /man/9/panel +isn't /man/9/radiobutton +isn't /man/9/scale +isn't /man/9/scrollbar +isn't /man/9/text +isnan /man/2/math-fp +iso /man/1/charon +iso /man/2/palmfile +iso /man/4/dossrv +iso /man/6/utf +iso11172 /man/3/mpeg +iso9660 /man/4/dossrv +isomorphic /man/2/sexprs +isop /man/2/ubfa +isopen /man/2/styxservers +isprefix /man/2/names +isprefix /man/2/spki +isprincipal /man/2/spki +isrange /man/2/spree-cardlib +isrdonly /man/2/dbm +isread /man/10/dmainit +isset /man/2/spree-cardlib +isstring /man/2/ubfa +issue /man/1/mash-make +issue /man/10/styxserver +issue /man/3/cmd +issue /man/3/mnt +issue /man/4/keyfs +issue /man/5/version +issued /man/1/tkcmd +issued /man/10/c2l +issued /man/2/scsiio +issued /man/2/spki +issued /man/3/tls +issued /man/8/createsignerkey +issued /man/8/svc +issued /man/9/text +issuer /man/2/sexprs +issuer /man/2/spki +issues /man/2/scsiio +issues /man/5/open +issues /man/8/kfscmd +issuing /man/10/dmainit +issuing /man/2/security-login +issuing /man/5/open +issuing /man/6/login +istag /man/2/ubfa +istmsg /man/2/styx +istuple /man/2/ubfa +isv4 /man/2/ip +isvalid /man/2/ip +isword.p9.gz /man/8/rdbgsrv +it's /man/1/mprof +it's /man/1/uuencode +it's /man/1/wm-misc +it's /man/10/c2l +it's /man/10/styxserver +it's /man/3/prof +it's /man/3/rtc +italic /man/1/brutus +italic /man/1/cook +italic /man/6/man +italicised /man/1/brutus +italicize /man/6/man +italics /man/1/0intro +item /man/1/deb +item /man/1/fc +item /man/1/mash-tk +item /man/1/mux +item /man/1/sh-csv +item /man/1/toolbar +item /man/10/conf +item /man/10/dynld +item /man/10/plan9.ini +item /man/2/asn1 +item /man/2/dbm +item /man/2/dis +item /man/2/popup +item /man/2/prefab-element +item /man/2/smtp +item /man/2/spki +item /man/2/sys-tokenize +item /man/2/xml +item /man/6/dis +item /man/6/sbl +item /man/6/ubfa +item /man/8/bootpd +item /man/9/canvas +item /man/9/choicebutton +item /man/9/focus +item /man/9/listbox +item's /man/2/prefab-style +item's /man/6/dis +item's /man/9/canvas +item.text /man/2/xml +itemcget /man/9/canvas +itemconfigure /man/9/canvas +items /man/1/charon +items /man/1/deb +items /man/1/fc +items /man/1/mash-tk +items /man/1/session +items /man/1/sh +items /man/1/sh-csv +items /man/1/sh-std +items /man/1/sh-string +items /man/1/stack +items /man/1/tktester +items /man/1/toolbar +items /man/10/conf +items /man/10/devattach +items /man/2/asn1 +items /man/2/dis +items /man/2/dividers +items /man/2/format +items /man/2/itslib +items /man/2/popup +items /man/2/prefab-0intro +items /man/2/prefab-environ +items /man/2/prefab-style +items /man/2/w3c-css +items /man/2/xml +items /man/3/prog +items /man/5/0intro +items /man/6/dis +items /man/6/sbl +items /man/6/ubfa +items /man/8/changelogin +items /man/9/canvas +items /man/9/choicebutton +items /man/9/options +iteration /man/1/wm-misc +iteration /man/10/plan9.ini +iterations /man/1/wm-misc +iteratively /man/2/keyring-sha1 +itest /man/1/itest +itest /man/1/sh-test +itest /man/2/itslib +itest.b /man/1/itest +itreplay /man/1/itest +itreplay.b /man/1/itest +itrs2000 /man/2/geodesy +itslib /man/1/itest +itslib /man/2/itslib +itslib.m /man/2/itslib +itu /man/2/asn1 +itv /man/2/prefab-0intro +itv /man/2/prefab-compound +itv /man/2/prefab-element +itv /man/2/prefab-environ +itv /man/2/prefab-style +iu /man/1/tkcmd +iunlock /man/10/lock +iv /man/1/secstore +ivec /man/2/keyring-crypt +ivec /man/6/login +i²c /man/3/vid +jacm /man/2/ida +jacm /man/6/image +james /man/1/idea +james /man/6/attrdb +james''s /man/6/attrdb +jan /man/1/date +jan /man/2/daytime +jan /man/2/sys-stat +jan /man/3/cons +jan /man/5/stat +january /man/1/cal +january /man/1/date +january /man/10/seconds +january /man/3/rtc +january /man/6/keytext +java /man/1/charon +javascript /man/1/charon +javascript1.1 /man/1/charon +jfif /man/2/imagefile +jit /man/1/itest +jit /man/1/mprof +jit /man/3/cons +jited /man/1/deb +jn /man/2/math-elem +jo /man/10/odbc +joe /man/1/filename +joe /man/10/styxserver +joe /man/6/ubfa +joe's /man/1/filename +joel /man/9/canvas +johnson /man/1/yacc +join /man/1/collab-clients +join /man/1/fmt +join /man/1/sh-std +join /man/1/spree-join +join /man/2/spree +join /man/2/spree-cardlib +join /man/2/wmsrv +join /man/4/spree +join /man/6/man +join.b /man/1/spree-join +joined /man/1/sh-tk +joined /man/9/text +joining /man/2/asn1 +joining /man/2/draw-image +joining /man/2/spree-cardlib +joining /man/3/draw +joinrequest /man/1/spree-join +joins /man/2/draw-image +joins /man/2/spree +joins /man/3/draw +joker /man/2/spree-cardlib +jonny /man/2/format +jpeg /man/1/charon +jpeg /man/1/wm-misc +jpeg /man/2/imagefile +jpgreader /man/2/imagefile +judging /man/2/styx +julia /man/1/wm-misc +jump /man/1/charon +jump /man/2/dis +jump /man/6/dis +jump /man/8/prep +jump /man/9/options +jump /man/9/scrollbar +jumps /man/8/prep +jumps /man/9/options +jungle /man/4/namespace +junk /man/1/sh +junk.b /man/1/sh +justification /man/10/print +justification /man/2/sys-print +justification /man/9/text +justified /man/10/print +justified /man/10/readnum +justified /man/2/sys-print +justified /man/3/prog +justified /man/6/font +justified /man/6/image +justified /man/9/text +justify /man/1/mdb +justify /man/2/security-login +justify /man/6/login +justify /man/9/button +justify /man/9/canvas +justify /man/9/checkbutton +justify /man/9/choicebutton +justify /man/9/entry +justify /man/9/label +justify /man/9/menubutton +justify /man/9/options +justify /man/9/radiobutton +justify /man/9/text +ka /man/10/2a +kagstrom /man/2/math-linalg +kbd /man/1/wm +kbd /man/10/kbdputc +kbd /man/2/draw-context +kbd /man/2/tkclient +kbd /man/2/wmclient +kbd /man/2/wmlib +kbd /man/2/wmsrv +kbdclock /man/10/kbdputc +kbdfocus /man/1/wm +kbdinit /man/10/kbdputc +kbdputc /man/10/kbdputc +kbdputc /man/6/keyboard +kbdq /man/10/kbdputc +kbdrepeat /man/10/kbdputc +kc /man/10/2c +kcons /man/1/zeros +keen /man/10/kproc +keepalive /man/3/ip +keeps /man/1/blur +keeps /man/1/spree-join +keeps /man/2/spree-cardlib +keeps /man/2/styxservers +keeps /man/4/ftpfs +keeps /man/8/bootpd +keeps /man/8/prep +keeps /man/8/rdbgsrv +kelvin /man/1/units +kenwood /man/3/sd +kept /man/1/alphabet-abc +kept /man/1/alphabet-grid +kept /man/1/mash-make +kept /man/10/9load +kept /man/2/disks +kept /man/2/keyring-0intro +kept /man/2/keyring-sha1 +kept /man/2/scsiio +kept /man/2/security-0intro +kept /man/3/i2c +kept /man/3/pbus +kept /man/4/factotum +kept /man/4/ftpfs +kept /man/5/0intro +kept /man/8/prep +kern /man/8/rdbgsrv +kernel /man/1/0intro +kernel /man/1/bind +kernel /man/1/cprof +kernel /man/1/mprof +kernel /man/1/prof +kernel /man/10/0intro +kernel /man/10/2c +kernel /man/10/5cv +kernel /man/10/9load +kernel /man/10/a.out +kernel /man/10/conf +kernel /man/10/dev +kernel /man/10/devattach +kernel /man/10/dmainit +kernel /man/10/dynld +kernel /man/10/error +kernel /man/10/inb +kernel /man/10/intrenable +kernel /man/10/kproc +kernel /man/10/kprof +kernel /man/10/ksize +kernel /man/10/kstrip +kernel /man/10/malloc +kernel /man/10/memory +kernel /man/10/newchan +kernel /man/10/panic +kernel /man/10/plan9.ini +kernel /man/10/qio +kernel /man/10/seconds +kernel /man/10/sleep +kernel /man/10/xalloc +kernel /man/10ti925/tihost +kernel /man/2/0intro +kernel /man/2/dhcpclient +kernel /man/2/prof +kernel /man/2/sys-0intro +kernel /man/2/sys-bind +kernel /man/2/sys-export +kernel /man/2/sys-fd2path +kernel /man/2/sys-fversion +kernel /man/2/sys-stat +kernel /man/3/0intro +kernel /man/3/boot +kernel /man/3/cons +kernel /man/3/dbg +kernel /man/3/dynld +kernel /man/3/flash +kernel /man/3/indir +kernel /man/3/ip +kernel /man/3/kprof +kernel /man/3/logfs +kernel /man/3/mnt +kernel /man/3/pipe +kernel /man/3/prof +kernel /man/3/root +kernel /man/3/touch +kernel /man/4/export +kernel /man/4/import +kernel /man/4/namespace +kernel /man/5/0intro +kernel /man/5/attach +kernel /man/5/open +kernel /man/5/stat +kernel /man/8/init +kernel /man/8/mangaload +kernel /man/8/prep +kernel /man/8/rdbgsrv +kernel /man/8/shutdown +kernel's /man/10/conf +kernel's /man/10/dev +kernel's /man/10/intrenable +kernel's /man/10/plan9.ini +kernel's /man/3/ds +kernel's /man/3/sign +kernelpercent /man/10/plan9.ini +kernels /man/10/0intro +kernels /man/10/conf +kernels /man/10/dev +kernels /man/10/plan9.ini +kernels /man/10/print +kernels /man/10/styx +kernels /man/2/tftp +kernels /man/8/bootpd +kernels /man/8/init +kernels /man/8/prep +kernighan /man/1/yacc +kexec /man/2/tftp +kexec /man/3/boot +key /man/1/acme +key /man/1/alphabet-main +key /man/1/charon +key /man/1/crypt +key /man/1/idea +key /man/1/look +key /man/1/miniterm +key /man/1/secstore +key /man/1/wm +key /man/10/iar +key /man/10/lock +key /man/10/plan9.ini +key /man/2/cfg +key /man/2/dbm +key /man/2/dict +key /man/2/factotum +key /man/2/hash +key /man/2/ir +key /man/2/keyring-0intro +key /man/2/keyring-auth +key /man/2/keyring-certtostr +key /man/2/keyring-crypt +key /man/2/keyring-gensk +key /man/2/keyring-sha1 +key /man/2/keyset +key /man/2/mpeg +key /man/2/prefab-compound +key /man/2/readdir +key /man/2/registries +key /man/2/secstore +key /man/2/security-0intro +key /man/2/security-login +key /man/2/sexprs +key /man/2/spki +key /man/2/stringinttab +key /man/2/tk +key /man/3/cap +key /man/3/cons +key /man/3/sign +key /man/3/ssl +key /man/3/tls +key /man/3/tv +key /man/4/factotum +key /man/4/import +key /man/4/keyfs +key /man/4/keysrv +key /man/6/attrdb +key /man/6/auth +key /man/6/keyboard +key /man/6/keys +key /man/6/keytext +key /man/6/login +key /man/6/scancode +key /man/6/sexprs +key /man/8/createsignerkey +key /man/8/getauthinfo +key /man/8/logind +key /man/8/signer +key /man/8/svc +key /man/9/bind +key /man/9/button +key /man/9/entry +key /man/9/scale +key /man/9/text +key's /man/2/keyset +key's /man/2/spki +key2 /man/10/plan9.ini +key:string /man/2/hash +keyboard /man/1/acme +keyboard /man/1/ebook +keyboard /man/1/keyboard +keyboard /man/1/logon +keyboard /man/1/miniterm +keyboard /man/1/mux +keyboard /man/1/tiny +keyboard /man/1/wish +keyboard /man/1/wm +keyboard /man/10/9load +keyboard /man/10/kbdputc +keyboard /man/10/plan9.ini +keyboard /man/2/draw-context +keyboard /man/2/ir +keyboard /man/2/prefab-0intro +keyboard /man/2/security-0intro +keyboard /man/2/tk +keyboard /man/2/tkclient +keyboard /man/2/wmclient +keyboard /man/3/cons +keyboard /man/4/acme +keyboard /man/5/0intro +keyboard /man/6/keyboard +keyboard /man/6/scancode +keyboard /man/9/bind +keyboard /man/9/button +keyboard /man/9/canvas +keyboard /man/9/focus +keyboard /man/9/grab +keyboard /man/9/listbox +keyboard /man/9/menu +keyboard /man/9/menubutton +keyboard /man/9/options +keyboard /man/9/scale +keyboard /man/9/text +keyboard.b /man/1/keyboard +keyboard.h /man/10/kbdputc +keyboard.h /man/6/keyboard +keyboard.m /man/6/keyboard +keyboards /man/6/keyboard +keyboards /man/6/scancode +keycode /man/6/scancode +keycolor /man/2/mpeg +keydb /man/4/keyfs +keydb /man/4/namespace +keydb /man/6/keys +keydb /man/8/changelogin +keydb /man/8/createsignerkey +keydb /man/8/logind +keydb /man/8/signer +keydb /man/8/svc +keydir /man/2/registries +keydir /man/8/changelogin +keyed /man/2/dbm +keyed /man/2/keyring-sha1 +keyed /man/3/cap +keyfile /man/1/alphabet-main +keyfile /man/1/bind +keyfile /man/1/collab +keyfile /man/1/crypt +keyfile /man/1/listen +keyfile /man/1/passwd +keyfile /man/2/keyset +keyfile /man/4/keyfs +keyfile /man/6/namespace +keyfile /man/8/collabsrv +keyfile /man/8/createsignerkey +keyfs /man/1/crypt +keyfs /man/1/passwd +keyfs /man/2/security-login +keyfs /man/4/keyfs +keyfs /man/4/keysrv +keyfs /man/4/namespace +keyfs /man/6/keys +keyfs /man/8/changelogin +keyfs /man/8/logind +keyfs /man/8/svc +keyfs.b /man/4/keyfs +keyholder /man/2/spki +keyname /man/8/getauthinfo +keypad /man/3/pointer +keypad /man/6/translate +keypress /man/9/bind +keypress /man/9/canvas +keypress /man/9/text +keypresses /man/10/kbdputc +keyring /man/1/alphabet-main +keyring /man/1/bind +keyring /man/1/collab +keyring /man/1/cpu +keyring /man/1/crypt +keyring /man/1/listen +keyring /man/1/passwd +keyring /man/1/rcmd +keyring /man/1/sum +keyring /man/2/0intro +keyring /man/2/keyring-0intro +keyring /man/2/keyring-auth +keyring /man/2/keyring-certtostr +keyring /man/2/keyring-crypt +keyring /man/2/keyring-gensk +keyring /man/2/keyring-getmsg +keyring /man/2/keyring-getstring +keyring /man/2/keyring-ipint +keyring /man/2/keyring-rc4 +keyring /man/2/keyring-sha1 +keyring /man/2/keyset +keyring /man/2/registries +keyring /man/2/security-auth +keyring /man/2/security-login +keyring /man/2/spki +keyring /man/3/cap +keyring /man/3/sign +keyring /man/4/factotum +keyring /man/4/keyfs +keyring /man/4/keysrv +keyring /man/6/auth +keyring /man/6/keytext +keyring /man/7/db +keyring /man/7/dbsrv +keyring /man/8/changelogin +keyring /man/8/createsignerkey +keyring /man/8/getauthinfo +keyring /man/8/rstyxd +keyring.c /man/2/keyring-0intro +keyring.c /man/2/keyring-auth +keyring.c /man/2/keyring-certtostr +keyring.c /man/2/keyring-getmsg +keyring.c /man/2/keyring-getstring +keyring.c /man/2/keyring-sha1 +keyring.m /man/2/keyring-0intro +keyring.m /man/2/keyring-auth +keyring.m /man/2/keyring-certtostr +keyring.m /man/2/keyring-crypt +keyring.m /man/2/keyring-gensk +keyring.m /man/2/keyring-getmsg +keyring.m /man/2/keyring-getstring +keyring.m /man/2/keyring-ipint +keyring.m /man/2/keyring-rc4 +keyring.m /man/2/keyring-sha1 +keyring.m /man/2/security-0intro +keyring.m /man/2/security-auth +keyring.m /man/2/security-login +keyring.m /man/2/spki +keys /man/1/listen +keys /man/1/miniterm +keys /man/1/secstore +keys /man/1/wm-misc +keys /man/10/kbdputc +keys /man/2/cfg +keys /man/2/dbm +keys /man/2/dict +keys /man/2/factotum +keys /man/2/hash +keys /man/2/ir +keys /man/2/keyring-0intro +keys /man/2/keyring-certtostr +keys /man/2/keyring-gensk +keys /man/2/keyset +keys /man/2/prefab-compound +keys /man/2/registries +keys /man/2/secstore +keys /man/2/security-0intro +keys /man/2/spki +keys /man/2/stringinttab +keys /man/2/styxpersist +keys /man/3/sign +keys /man/3/ssl +keys /man/3/tinyfs +keys /man/3/tls +keys /man/4/factotum +keys /man/4/keyfs +keys /man/4/keysrv +keys /man/4/namespace +keys /man/6/keyboard +keys /man/6/keys +keys /man/6/keytext +keys /man/8/changelogin +keys /man/8/createsignerkey +keys /man/8/logind +keys /man/8/svc +keys /man/9/entry +keys /man/9/text +keyset /man/2/keyset +keyset.b /man/2/keyset +keyset.m /man/2/keyset +keysforsigner /man/2/keyset +keyspec /man/2/factotum +keyspec /man/2/styxpersist +keyspec /man/4/import +keysrv /man/1/passwd +keysrv /man/4/keysrv +keysrv /man/6/keys +keysrv /man/8/changelogin +keysrv /man/8/svc +keysrv.b /man/4/keysrv +keystrokes /man/2/draw-context +keystrokes /man/3/cons +keystrokes /man/9/entry +keystrokes /man/9/text +keytext /man/6/auth +keytext /man/6/keytext +keyword /man/1/man +keyword /man/1/mc +keywords /man/1/man +keywords /man/1/mash +keywords /man/10/c2l +keywords /man/6/man +keywords /man/9/text +kfile /man/1/bind +kfile /man/1/collab +kfs /man/1/zeros +kfs /man/2/sys-stat +kfs /man/3/ds +kfs /man/3/ftl +kfs /man/3/logfs +kfs /man/4/kfs +kfs /man/4/namespace +kfs /man/6/proto +kfs /man/6/users +kfs /man/8/applylog +kfs /man/8/ftl +kfs /man/8/init +kfs /man/8/kfscmd +kfs /man/8/mkfs +kfs /man/8/prep +kfs.b /man/4/kfs +kfs.file /man/4/kfs +kfscmd /man/4/kfs +kfscmd /man/6/users +kfscmd /man/8/kfscmd +kfscmd /man/8/mkfs +kfscmd.b /man/8/kfscmd +kfscons /man/1/zeros +kfsctl /man/1/zeros +kfsfile /man/8/ftl +kh /man/2/spki +kick /man/10/qio +kids /man/2/prefab-element +kill /man/1/acme +kill /man/1/grid-monitor +kill /man/1/kill +kill /man/1/ps +kill /man/1/wm-misc +kill /man/10/acid +kill /man/2/debug +kill /man/2/ir +kill /man/2/sys-0intro +kill /man/2/timers +kill /man/2/tkclient +kill /man/2/wait +kill /man/2/wmclient +kill /man/3/cmd +kill /man/3/cons +kill /man/3/dbg +kill /man/3/prog +kill /man/4/ramfile +kill /man/8/cs +kill.b /man/1/kill +killed /man/1/deb +killed /man/1/grid-monitor +killed /man/10/kproc +killed /man/3/cmd +killed /man/3/prog +killed /man/8/cs +killgrp /man/1/kill +killgrp /man/10/kproc +killgrp /man/2/sys-pctl +killgrp /man/3/prog +killing /man/1/kill +killing /man/2/sys-export +killing /man/2/timers +killing /man/2/wmlib +killing /man/3/cons +killonclose /man/3/cmd +kills /man/1/kill +kills /man/2/debug +kills /man/3/cons +kilobyte /man/3/tinyfs +kilobytes /man/1/du +kilobytes /man/8/httpd +kilometre /man/2/geodesy +kinds /man/1/sh-alphabet +kinds /man/2/prefab-element +kinds /man/2/spree-cardlib +kinds /man/2/xml +kinds /man/4/spree +kinds /man/9/options +kinds /man/9/text +king /man/2/spree-cardlib +king /man/6/keyboard +kl /man/10/2l +klog /man/3/cons +kn /man/2/bloomfilter +knamelen /man/10/devattach +knight /man/6/keyboard +knowing /man/2/draw-screen +knowing /man/2/security-0intro +knowing /man/2/tk +knowing /man/4/ramfile +knowledge /man/1/mash-make +knowledge /man/4/spree +knows /man/1/man +knows /man/10/9load +knows /man/2/dhcpclient +knows /man/2/spree-cardlib +knows /man/2/sys-stat +knows /man/2/tk +knows /man/5/attach +kp /man/6/keytext +kpctl /man/3/kprof +kpdata /man/10/kprof +kpdata /man/3/kprof +kpdup /man/10/kproc +kpdupenvg /man/10/kproc +kpdupfdg /man/10/kproc +kpduppg /man/10/kproc +kprint /man/3/cons +kproc /man/10/error +kproc /man/10/intrenable +kproc /man/10/kproc +kproc /man/10/sleep +kproc /man/3/dbg +kproc /man/4/spree +kprof /man/10/kprof +kprof /man/3/kprof +kq /man/6/keytext +kr /man/2/keyring-sha1 +kr /man/2/security-auth +kr /man/3/cap +kremvax /man/1/wm-sh +kremvax /man/2/sys-dial +ksize /man/10/ksize +ksize /man/10/kstrip +kstrip /man/10/ksize +kstrip /man/10/kstrip +l'orario /man/6/translate +l.s /man/10/inb +l.s /man/10/lock +l2a1157 /man/10/plan9.ini +la /man/2/geodesy +la /man/6/translate +label /man/1/cook +label /man/1/ebook +label /man/1/mash-tk +label /man/1/mux +label /man/1/tktester +label /man/1/tsort +label /man/10/conf +label /man/10/error +label /man/2/tkclient +label /man/2/translate +label /man/2/wmclient +label /man/4/acme +label /man/6/keytext +label /man/8/dns +label /man/8/prep +label /man/9/0intro +label /man/9/label +label /man/9/menu +label /man/9/scale +label's /man/9/label +labeled /man/1/wm-sh +labelled /man/1/acme +labelled /man/1/deb +labelled /man/1/mash-tk +labelled /man/10/5cv +labelled /man/2/dialog +labelled /man/2/keyring-auth +labelled /man/2/prefab-element +labelled /man/2/styx +labelled /man/2/w3c-css +labelled /man/3/ip +labelled /man/4/acme +labelled /man/6/auth +labelled /man/6/keyboard +labelled /man/6/keytext +labelled /man/6/ubfa +labelled /man/8/cs +labels /man/1/collab-clients +labels /man/1/tktester +labels /man/1/tsort +labels /man/10/c2l +labels /man/10/conf +labels /man/10/error +labels /man/2/palmfile +labels /man/6/ndb +labels /man/9/label +labels /man/9/menu +labour /man/1/alphabet-abc +labour /man/1/alphabet-grid +labs /man/10/0intro +labs /man/2/dialog +lack /man/1/sh +lack /man/8/dns +lack /man/8/ping +lacks /man/1/mkdir +lacks /man/2/factotum +lacks /man/3/ip +lai /man/1/idea +laid /man/1/charon +laid /man/1/mash-tk +laid /man/10/a.out +laid /man/10/c2l +laid /man/2/spree-cardlib +laid /man/5/stat +lalo /man/2/geodesy +lalo2en /man/2/geodesy +lalo2str /man/2/geodesy +lan /man/10/plan9.ini +lance /man/3/ether +landscape /man/2/print +lane /man/2/format +language /man/1/0intro +language /man/1/acme +language /man/1/asm +language /man/1/charon +language /man/1/limbo +language /man/1/mc +language /man/1/sh +language /man/10/2c +language /man/10/2l +language /man/10/acid +language /man/10/conf +language /man/2/0intro +language /man/2/dis +language /man/2/sh +language /man/2/sys-dup +language /man/2/sys-self +language /man/2/translate +language /man/2/w3c-xpointers +language /man/2/xml +language /man/6/translate +lap /man/3/plap +laptops /man/10/plan9.ini +largely /man/6/sexprs +larger /man/1/cal +larger /man/1/emu +larger /man/1/tiny +larger /man/10/9load +larger /man/2/0intro +larger /man/2/command +larger /man/2/disks +larger /man/2/keyring-ipint +larger /man/2/prefab-element +larger /man/2/styx +larger /man/2/sys-file2chan +larger /man/2/wmsrv +larger /man/3/cons +larger /man/3/ftl +larger /man/3/i2c +larger /man/3/pipe +larger /man/3/vga +larger /man/4/kfs +larger /man/5/0intro +larger /man/6/dis +larger /man/6/image +larger /man/8/ftl +larger /man/8/mangaload +larger /man/8/prep +larger /man/9/grid +larger /man/9/pack +largest /man/1/acme +largest /man/1/deb +largest /man/1/math-misc +largest /man/1/mc +largest /man/10/readnum +largest /man/2/diskblocks +largest /man/2/keyring-ipint +largest /man/2/plumbmsg +largest /man/2/prefab-element +largest /man/2/readdir +largest /man/2/secstore +largest /man/2/sets +largest /man/2/wmsrv +largest /man/3/cons +largest /man/3/ip +largest /man/3/pbus +largest /man/8/prep +largest /man/9/grid +lasterror /man/2/prof +lasterror /man/9/variable +lasting /man/3/eia +lastly /man/3/ip +lastuid /man/2/palmfile +latch /man/3/lpt +late /man/10/c2l +latency /man/2/spree +latex /man/1/cook +latex /man/2/stringinttab +latexbook /man/1/cook +latexbook /man/2/stringinttab +latexpart /man/1/cook +latexpart /man/2/stringinttab +latexproc /man/1/cook +latexproc /man/2/stringinttab +latexslides /man/1/cook +latexslides /man/2/stringinttab +latin /man/10/kbdputc +latin /man/2/palmfile +latin /man/2/sys-0intro +latin /man/6/keyboard +latin1 /man/2/convcs +latitude /man/2/geodesy +latter /man/1/acme +latter /man/1/calendar +latter /man/1/dd +latter /man/1/mc +latter /man/1/sh +latter /man/1/units +latter /man/10/plan9.ini +latter /man/10/styxserver +latter /man/2/dhcpclient +latter /man/2/dis +latter /man/2/geodesy +latter /man/2/palmfile +latter /man/2/prof +latter /man/2/smtp +latter /man/3/ip +latter /man/3/logfs +latter /man/5/0intro +latter /man/6/colour +latter /man/6/dis +latter /man/6/sexprs +latter /man/8/create +latter's /man/6/login +launch /man/10ti925/tihost +launched /man/1/deb +lax /man/1/sh-alphabet +lax /man/10/2c +lay /man/2/prefab-compound +lay /man/2/prefab-element +lay /man/2/spree-cardlib +lay /man/9/options +layer /man/2/keyring-0intro +layer /man/2/security-0intro +layer /man/2/security-auth +layer /man/2/security-ssl +layer /man/2/spree-gather +layer /man/3/ftl +layer /man/3/mpeg +layer /man/3/ssl +layer /man/3/tls +layer /man/4/lockfs +layer /man/8/ftl +layer /man/8/logind +layered /man/2/wmsrv +layout /man/1/acme +layout /man/1/charon +layout /man/1/deb +layout /man/1/man +layout /man/1/mash-tk +layout /man/1/sh +layout /man/10/ar +layout /man/2/palmfile +layout /man/2/prefab-compound +layout /man/2/prefab-element +layout /man/2/prefab-environ +layout /man/2/prefab-style +layout /man/2/spree-cardlib +layout /man/2/sys-0intro +layout /man/3/logfs +layout /man/6/dis +layout /man/6/man +layout /man/9/grid +layoutbox /man/2/prefab-compound +layoutlist /man/2/prefab-compound +layouts /man/1/tktester +layouts /man/2/spree-cardlib +layouts /man/9/frame +layouts /man/9/grid +lays /man/9/grid +lb /man/1/tktester +lba /man/10/9load +lba /man/8/prep +lbc /man/1/tail +lc /man/1/lc +lc /man/1/ls +lc /man/2/bufio +lc.b /man/1/lc +lc.gets /man/2/bufio +lcase /man/1/dd +lcd /man/3/vid +ld /man/10/9load +ld /man/10/mk +ld.com /man/10/9load +lda /man/2/math-linalg +ldb /man/2/math-linalg +ldc /man/2/math-linalg +ldepth /man/2/draw-display +ldepth /man/6/image +le /man/1/sh-expr +le /man/10/a.out +lead /man/2/spree +lead /man/4/dbfs +leader /man/1/chgrp +leader /man/2/exception +leader /man/2/sys-stat +leader /man/3/logfs +leader /man/3/prog +leader /man/5/0intro +leader /man/5/stat +leader /man/6/users +leaders /man/3/logfs +leaders /man/3/prog +leading /man/1/chmod +leading /man/1/sh +leading /man/1/uuencode +leading /man/10/atoi +leading /man/2/ip +leading /man/2/math-linalg +leading /man/2/string +leading /man/2/xml +leading /man/3/cons +leading /man/3/ether +leading /man/3/lpt +leading /man/6/keytext +leading /man/6/sbl +leading /man/6/sexprs +leaf /man/10/a.out +leaf /man/10/inm +leaf /man/8/collabsrv +leaf /man/9/grid +leaf /man/9/pack +leaks /man/10/allocb +learn /man/1/mk +learn /man/10/mk +learns /man/8/rip +lease /man/2/dhcpclient +lease /man/8/dhcp +lease.release /man/2/dhcpclient +leased /man/2/dhcpclient +leave /man/10/dev +leave /man/2/prefab-element +leave /man/2/spree +leave /man/2/spree-cardlib +leave /man/2/styxservers +leave /man/2/wmsrv +leave /man/8/applylog +leave /man/8/collabsrv +leave /man/9/bind +leave /man/9/canvas +leave /man/9/grid +leave /man/9/pack +leave /man/9/text +leavening /man/1/units +leaves /man/1/acme +leaves /man/1/collab-clients +leaves /man/1/fmt +leaves /man/10/devattach +leaves /man/2/prefab-element +leaves /man/2/sys-byte2char +leaves /man/3/cons +leaves /man/8/collabsrv +leaves /man/8/dhcp +leaves /man/8/srv +leaves /man/9/button +leaves /man/9/checkbutton +leaves /man/9/grid +leaves /man/9/menu +leaves /man/9/menubutton +leaves /man/9/radiobutton +leaving /man/1/acme +leaving /man/1/charon +leaving /man/1/mux +leaving /man/1/wm +leaving /man/1/yacc +leaving /man/10/5cv +leaving /man/10/9load +leaving /man/10/allocb +leaving /man/10/devattach +leaving /man/10/qio +leaving /man/2/draw-display +leaving /man/2/draw-image +leaving /man/2/math-linalg +leaving /man/2/palmfile +leaving /man/2/prefab-element +leaving /man/2/sys-read +leaving /man/3/dbg +leaving /man/4/import +leaving /man/9/bind +leaving /man/9/pack +leaving /man/9/text +led /man/3/pbus +leftmost /man/1/acme +leftmost /man/1/mash-tk +leftmost /man/1/tiny +leftmost /man/2/draw-image +leftmost /man/2/ip +leftmost /man/2/regex +leftmost /man/2/string +leftmost /man/2/sys-tokenize +leftmost /man/6/colour +legacy /man/3/sd +legal /man/1/mk +legal /man/10/2c +legal /man/10/atoi +legal /man/10/mk +legal /man/10/rune +legal /man/2/sexprs +legal /man/2/spki +legal /man/2/styxservers +legal /man/2/sys-dup +legal /man/3/eia +legal /man/5/0intro +legal /man/5/walk +legal /man/6/audio +legal /man/9/canvas +legal /man/9/image +legal /man/9/text +legitimate /man/2/security-0intro +lempel /man/1/gzip +lempel /man/6/image +len /man/1/mash +len /man/1/sh-string +len /man/10/dmainit +len /man/10/print +len /man/10/qio +len /man/2/bloomfilter +len /man/2/keyring-sha1 +len /man/3/arch +len /man/3/cap +length /man/1/dd +length /man/1/fmt +length /man/1/mash +length /man/1/mk +length /man/1/sh-string +length /man/1/sum +length /man/1/tr +length /man/10/5cv +length /man/10/a.out +length /man/10/ar +length /man/10/devattach +length /man/10/dmainit +length /man/10/dynld +length /man/10/mk +length /man/10/plan9.ini +length /man/10/print +length /man/10/qio +length /man/10/readnum +length /man/10/rune +length /man/10/strcat +length /man/10/styx +length /man/2/asn1 +length /man/2/convcs +length /man/2/dis +length /man/2/disks +length /man/2/ether +length /man/2/ida +length /man/2/ip +length /man/2/keyring-crypt +length /man/2/keyring-gensk +length /man/2/keyring-ipint +length /man/2/keyring-rc4 +length /man/2/palmfile +length /man/2/plumbmsg +length /man/2/regex +length /man/2/scsiio +length /man/2/security-0intro +length /man/2/security-login +length /man/2/security-random +length /man/2/styx +length /man/2/sys-byte2char +length /man/2/sys-dirread +length /man/2/sys-open +length /man/2/sys-pipe +length /man/2/sys-stat +length /man/2/sys-tokenize +length /man/2/sys-utfbytes +length /man/2/translate +length /man/2/w3c-css +length /man/3/cons +length /man/3/draw +length /man/3/ds +length /man/3/dup +length /man/3/env +length /man/3/ftl +length /man/3/i2c +length /man/3/pbus +length /man/3/pipe +length /man/3/prog +length /man/3/srv +length /man/3/ssl +length /man/3/tls +length /man/3/usb +length /man/4/factotum +length /man/4/keyfs +length /man/4/ramfile +length /man/4/spree +length /man/5/0intro +length /man/5/stat +length /man/5/version +length /man/6/dis +length /man/6/image +length /man/6/sexprs +length /man/6/ubfa +length /man/7/db +length /man/8/applylog +length /man/8/changelogin +length /man/8/ftl +length /man/8/styxchat +length /man/9/bind +length /man/9/canvas +length /man/9/entry +lengths /man/3/ds +lengths /man/3/ssl +lengths /man/5/0intro +lengths /man/6/image +lengths /man/6/man +lesser /man/10/malloc +lesser /man/2/styx +lets /man/1/alphabet-fs +lets /man/1/fs +lets /man/1/mash-tk +letter /man/1/acme +letter /man/1/cal +letter /man/1/chmod +letter /man/1/ls +letter /man/1/sh-arg +letter /man/10/2a +letter /man/10/2c +letter /man/10/2l +letter /man/10/c2l +letter /man/10/ntsrv +letter /man/10/styx +letter /man/2/alphabet-intro +letter /man/2/security-0intro +letter /man/2/sexprs +letter /man/3/cmd +letter /man/3/cons +letter /man/3/draw +letter /man/3/fs +letter /man/3/pointer +letter /man/6/image +letter /man/6/keyboard +letter /man/8/mangaload +letter /man/8/srv +letter /man/9/bind +letter /man/9/grid +letters /man/1/chmod +letters /man/1/diff +letters /man/1/grep +letters /man/1/keyboard +letters /man/1/look +letters /man/1/tr +letters /man/1/wc +letters /man/10/atoi +letters /man/10/inm +letters /man/2/arg +letters /man/2/encoding +letters /man/2/geodesy +letters /man/2/sexprs +letters /man/2/string +letters /man/3/pnp +letters /man/6/keyboard +letters /man/6/man +letters /man/6/proto +letters /man/6/sbl +letters /man/6/sexprs +letters /man/8/styxchat +letters /man/9/entry +letters /man/9/menu +letters /man/9/text +letting /man/6/utf +level /man/1/0intro +level /man/1/acme +level /man/1/alphabet-fs +level /man/1/ebook +level /man/1/fs +level /man/1/grid-query +level /man/1/gzip +level /man/1/itest +level /man/1/mash +level /man/1/math-misc +level /man/1/mprof +level /man/1/os +level /man/1/session +level /man/1/sh +level /man/1/sh-alphabet +level /man/1/sh-test +level /man/1/sh-tk +level /man/1/tiny +level /man/1/tkcmd +level /man/1/wm-misc +level /man/10/allocb +level /man/10/dev +level /man/10/devattach +level /man/10/error +level /man/10/intrenable +level /man/10/kproc +level /man/10/lock +level /man/10/odbc +level /man/10/plan9.ini +level /man/10/splhi +level /man/10/styxserver +level /man/10/xalloc +level /man/2/alphabet-intro +level /man/2/convcs +level /man/2/debug +level /man/2/draw-0intro +level /man/2/draw-example +level /man/2/draw-image +level /man/2/filter-deflate +level /man/2/ida +level /man/2/itslib +level /man/2/prefab-compound +level /man/2/scsiio +level /man/2/security-0intro +level /man/2/sh +level /man/2/styx +level /man/2/styxservers +level /man/2/sys-fversion +level /man/2/tk +level /man/2/tkclient +level /man/2/ubfa +level /man/2/venti +level /man/2/w3c-css +level /man/2/w3c-xpointers +level /man/2/wmlib +level /man/2/xml +level /man/3/arch +level /man/3/audio +level /man/3/boot +level /man/3/cmd +level /man/3/cons +level /man/3/draw +level /man/3/ds +level /man/3/dup +level /man/3/eia +level /man/3/env +level /man/3/ether +level /man/3/flash +level /man/3/floppy +level /man/3/ftl +level /man/3/gpio +level /man/3/i2c +level /man/3/ip +level /man/3/logfs +level /man/3/pbus +level /man/3/plap +level /man/3/prof +level /man/3/prog +level /man/3/root +level /man/3/sd +level /man/3/srv9 +level /man/3/ssl +level /man/3/switch +level /man/3/tls +level /man/3/touch +level /man/3/usb +level /man/3/vga +level /man/4/factotum +level /man/4/iostats +level /man/4/keyfs +level /man/4/lockfs +level /man/4/registry +level /man/5/0intro +level /man/5/version +level /man/6/proto +level /man/6/sexprs +level /man/8/create +level /man/8/plumber +level /man/9/canvas +level /man/9/grab +level /man/9/grid +level /man/9/menu +level /man/9/pack +levels /man/1/alphabet-fs +levels /man/1/fs +levels /man/1/sh +levels /man/10/intrenable +levels /man/10/kproc +levels /man/10/plan9.ini +levels /man/2/keyring-0intro +levels /man/2/security-0intro +levels /man/2/venti +lex /man/1/yacc +lex.c /man/10/mk +lex.lval.v /man/1/yacc +lex.o /man/10/mk +lexical /man/1/yacc +lexical /man/6/sexprs +lexically /man/1/cleanname +lexically /man/1/mash +lexically /man/1/sh +lexically /man/2/names +lexicographic /man/1/sort +lexicographical /man/1/acme +lexicographical /man/1/comm +lexicographically /man/1/tr +lexicographically /man/10/memory +lexicographically /man/10/strcat +lflags /man/1/mash-make +lg /man/2/math-elem +lgamma /man/2/math-elem +liable /man/10/c2l +liable /man/2/spree-cardlib +liable /man/9/1copyright +lib /man/1/charon +lib /man/1/deb +lib /man/1/ebook +lib /man/1/fortune +lib /man/1/fs +lib /man/1/grid-localreg +lib /man/1/grid-ns +lib /man/1/grid-query +lib /man/1/keyboard +lib /man/1/look +lib /man/1/man +lib /man/1/mash +lib /man/1/mathcalc +lib /man/1/session +lib /man/1/sh +lib /man/1/sh-alphabet +lib /man/1/tcs +lib /man/1/toolbar +lib /man/1/unicode +lib /man/1/units +lib /man/1/webgrab +lib /man/1/wm-misc +lib /man/1/yacc +lib /man/10/2c +lib /man/10/2l +lib /man/10/9load +lib /man/10/acid +lib /man/10/c2l +lib /man/10/conf +lib /man/2/arg +lib /man/2/asn1 +lib /man/2/attrdb +lib /man/2/bloomfilter +lib /man/2/bufio +lib /man/2/cfg +lib /man/2/convcs +lib /man/2/crc +lib /man/2/daytime +lib /man/2/dbm +lib /man/2/debug +lib /man/2/dhcpclient +lib /man/2/dialog +lib /man/2/dict +lib /man/2/dis +lib /man/2/diskblocks +lib /man/2/disks +lib /man/2/dividers +lib /man/2/encoding +lib /man/2/env +lib /man/2/ether +lib /man/2/exception +lib /man/2/factotum +lib /man/2/filepat +lib /man/2/filter-deflate +lib /man/2/filter-slip +lib /man/2/format +lib /man/2/fsproto +lib /man/2/hash +lib /man/2/ida +lib /man/2/imagefile +lib /man/2/ip +lib /man/2/ir +lib /man/2/keyset +lib /man/2/lock +lib /man/2/mpeg +lib /man/2/names +lib /man/2/newns +lib /man/2/palmfile +lib /man/2/plumbmsg +lib /man/2/pop3 +lib /man/2/popup +lib /man/2/print +lib /man/2/prof +lib /man/2/pslib +lib /man/2/rand +lib /man/2/readdir +lib /man/2/regex +lib /man/2/scsiio +lib /man/2/secstore +lib /man/2/security-auth +lib /man/2/security-login +lib /man/2/security-random +lib /man/2/security-ssl +lib /man/2/selectfile +lib /man/2/sexprs +lib /man/2/smtp +lib /man/2/spki +lib /man/2/spki-verifier +lib /man/2/spree-allow +lib /man/2/spree-cardlib +lib /man/2/string +lib /man/2/stringinttab +lib /man/2/styx +lib /man/2/styxconv +lib /man/2/styxpersist +lib /man/2/styxservers +lib /man/2/styxservers-nametree +lib /man/2/tabs +lib /man/2/tftp +lib /man/2/tkclient +lib /man/2/translate +lib /man/2/ubfa +lib /man/2/venti +lib /man/2/virgil +lib /man/2/volume +lib /man/2/w3c-css +lib /man/2/w3c-xpointers +lib /man/2/wmclient +lib /man/2/wmlib +lib /man/2/wmsrv +lib /man/2/workdir +lib /man/2/xml +lib /man/4/lockfs +lib /man/4/namespace +lib /man/6/keyboard +lib /man/6/ndb +lib /man/6/plumbing +lib /man/6/proto +lib /man/6/sexprs +lib /man/7/db +lib /man/7/dbsrv +lib /man/8/applylog +lib /man/8/bootpd +lib /man/8/collabsrv +lib /man/8/cs +lib /man/8/dns +lib /man/8/getauthinfo +lib /man/8/init +lib /man/8/mkfs +lib /man/8/plumber +lib /man/8/srv +lib /man/8/styxmon +lib /man/8/svc +lib.a /man/10/iar +lib.h /man/10/0intro +lib9 /man/10/getfields +lib9 /man/10/print +lib9 /man/10/strcat +lib9 /man/10/styx +lib9 /man/2/sys-print +lib9 /man/4/namespace +lib9.h /man/10/dynld +lib9.h /man/10/styx +lib9.h /man/10/styxserver +lib9.h /man/5/0intro +libbio /man/4/namespace +libbio.a /man/10/2c +libc /man/10/c2l +libc.a /man/10/2l +libc.a /man/10/mk +libc.b /man/10/c2l +libc.h /man/10/2l +libc.h /man/10/rune +libc.m /man/10/c2l +libc0.b /man/10/c2l +libc0.m /man/10/c2l +libcrypt /man/2/keyring-0intro +libcrypt /man/2/keyring-sha1 +libdraw /man/2/draw-0intro +libdraw /man/2/draw-image +libdraw /man/4/namespace +libfile /man/10/acid +libinterp /man/2/draw-0intro +libinterp /man/2/keyring-0intro +libinterp /man/2/keyring-auth +libinterp /man/2/keyring-certtostr +libinterp /man/2/keyring-getmsg +libinterp /man/2/keyring-getstring +libinterp /man/2/keyring-sha1 +libinterp /man/2/math-0intro +libinterp /man/2/math-elem +libinterp /man/2/math-export +libinterp /man/2/math-fp +libinterp /man/2/math-linalg +libinterp /man/2/prefab-0intro +libinterp /man/2/prefab-compound +libinterp /man/2/prefab-element +libinterp /man/2/prefab-environ +libinterp /man/2/prefab-style +libinterp /man/2/sys-byte2char +libinterp /man/2/sys-print +libinterp /man/2/tk +libinterp /man/4/namespace +libkern /man/10/atoi +libkern /man/10/getfields +libkern /man/10/memory +libkern /man/10/print +libkern /man/10/rune +libkern /man/10/strcat +libkern /man/10/styx +libkern /man/4/namespace +libkeyring /man/2/keyring-0intro +libkeyring /man/4/namespace +libkfs /man/4/namespace +liblogfs /man/3/logfs +libmemdraw /man/3/draw +libmemdraw /man/4/namespace +libmemlayer /man/4/namespace +libmemlayerxx /man/4/namespace +libnandfs /man/3/logfs +libprefab /man/2/prefab-0intro +libprefab /man/2/prefab-compound +libprefab /man/2/prefab-element +libprefab /man/2/prefab-environ +libprefab /man/2/prefab-style +libprefab /man/4/namespace +libraries /man/10/0intro +libraries /man/10/2c +libraries /man/10/2l +libraries /man/10/ar +libraries /man/10/conf +libraries /man/2/math-0intro +libraries /man/2/sys-dup +libraries /man/4/namespace +libraries /man/6/colour +library /man/1/sh-std +library /man/10/0intro +library /man/10/2c +library /man/10/2l +library /man/10/acid +library /man/10/ar +library /man/10/c2l +library /man/10/conf +library /man/10/iar +library /man/10/mk +library /man/10/styxserver +library /man/2/draw-example +library /man/2/draw-image +library /man/2/itslib +library /man/2/prof +library /man/2/security-0intro +library /man/4/factotum +library /man/4/namespace +library /man/5/0intro +libregexp /man/4/namespace +libstyx /man/10/styxserver +libtk /man/2/tk +libtk /man/4/namespace +licence /man/2/keyring-crypt +license /man/9/1copyright +licensing /man/2/keyring-crypt +licensing /man/9/1copyright +lie /man/3/flash +lie /man/9/canvas +lie /man/9/scrollbar +lies /man/1/acme +lies /man/10/dmainit +lies /man/10/plan9.ini +lies /man/2/draw-point +lies /man/9/scale +lies /man/9/scrollbar +lieu /man/1/tiny +lifetime /man/3/cap +lifetime /man/9/canvas +ligature /man/6/keyboard +lightyear /man/1/units +likely /man/1/0intro +likely /man/1/charon +likely /man/1/sh-sexprs +likely /man/1/webgrab +likely /man/10/0intro +likely /man/10/dev +likely /man/2/draw-display +likely /man/6/login +likewise /man/1/mash-tk +likewise /man/2/spree +likewise /man/4/kfs +lim /man/1/math-misc +lim /man/10/allocb +limbo /man/1/0intro +limbo /man/1/acme +limbo /man/1/asm +limbo /man/1/cprof +limbo /man/1/deb +limbo /man/1/disdep +limbo /man/1/emu +limbo /man/1/fc +limbo /man/1/filename +limbo /man/1/itest +limbo /man/1/limbo +limbo /man/1/mash +limbo /man/1/mash-make +limbo /man/1/mc +limbo /man/1/mk +limbo /man/1/mprof +limbo /man/1/prof +limbo /man/1/sh +limbo /man/1/sh-expr +limbo /man/1/sh-std +limbo /man/1/sh-string +limbo /man/1/sh-tk +limbo /man/1/stack +limbo /man/1/tkcmd +limbo /man/1/wish +limbo /man/1/xd +limbo /man/1/yacc +limbo /man/10/c2l +limbo /man/10/conf +limbo /man/10/devattach +limbo /man/10/kproc +limbo /man/10/styx +limbo /man/2/0intro +limbo /man/2/alphabet-intro +limbo /man/2/arg +limbo /man/2/asn1 +limbo /man/2/command +limbo /man/2/convcs +limbo /man/2/daytime +limbo /man/2/debug +limbo /man/2/dis +limbo /man/2/dividers +limbo /man/2/draw-0intro +limbo /man/2/draw-font +limbo /man/2/hash +limbo /man/2/ir +limbo /man/2/keyring-0intro +limbo /man/2/keyring-ipint +limbo /man/2/math-0intro +limbo /man/2/math-fp +limbo /man/2/palmfile +limbo /man/2/prefab-0intro +limbo /man/2/prefab-element +limbo /man/2/prefab-style +limbo /man/2/prof +limbo /man/2/sh +limbo /man/2/spree +limbo /man/2/string +limbo /man/2/styx +limbo /man/2/styxservers +limbo /man/2/sys-0intro +limbo /man/2/sys-dup +limbo /man/2/sys-file2chan +limbo /man/2/sys-pctl +limbo /man/2/sys-pipe +limbo /man/2/sys-print +limbo /man/2/sys-self +limbo /man/2/tk +limbo /man/2/ubfa +limbo /man/2/w3c-css +limbo /man/3/arch +limbo /man/3/dbg +limbo /man/3/draw +limbo /man/3/fs +limbo /man/3/prof +limbo /man/3/prog +limbo /man/4/namespace +limbo /man/5/0intro +limbo /man/5/stat +limbo /man/6/dis +limbo /man/6/font +limbo /man/6/image +limbo /man/6/sbl +limbo /man/6/sexprs +limbo /man/6/translate +limbo /man/6/ubfa +limbo /man/6/utf +limbo /man/7/db +limbo /man/8/styxchat +limbo /man/9/0intro +limbo /man/9/send +limbo's /man/2/draw-0intro +limbo's /man/2/math-export +limbo's /man/2/plumbmsg +limbo's /man/2/ubfa +limbo's /man/6/sbl +limbo.dis /man/1/uuencode +lime /man/9/types +limit /man/1/sh-file2chan +limit /man/1/tiny +limit /man/10/dmainit +limit /man/10/lock +limit /man/10/plan9.ini +limit /man/10/qio +limit /man/2/0intro +limit /man/2/sets +limit /man/2/styx +limit /man/3/cons +limit /man/3/eia +limit /man/3/ftl +limit /man/3/i2c +limit /man/3/prog +limit /man/3/sd +limit /man/3/tv +limit /man/4/acme +limit /man/4/archfs +limit /man/4/keyfs +limit /man/5/read +limit /man/5/version +limit /man/5/walk +limit /man/6/image +limit,int /man/10/qio +limitations /man/10/dmainit +limited /man/1/chmod +limited /man/1/mc +limited /man/1/mux +limited /man/1/sh-file2chan +limited /man/10/dynld +limited /man/10/error +limited /man/10/readnum +limited /man/10ti925/tihost +limited /man/2/math-0intro +limited /man/2/spki-verifier +limited /man/2/w3c-xpointers +limited /man/3/cap +limited /man/3/fs +limited /man/3/ip +limited /man/3/pnp +limited /man/3/sign +limited /man/3/usb +limited /man/4/ftpfs +limited /man/4/import +limited /man/5/stat +limited /man/6/keytext +limited /man/8/applylog +limited /man/8/dhcp +limited /man/9/1copyright +limited /man/9/bind +limited /man/9/grid +limiting /man/2/styx +limits /man/1/charon +limits /man/10/allocb +limits /man/10/qio +limits /man/2/bufio +limits /man/2/draw-0intro +limits /man/2/keyring-0intro +limits /man/3/tv +linalg /man/2/0intro +linalg /man/2/math-0intro +linalg /man/2/math-linalg +line's /man/2/attrdb +line's /man/9/text +line.char /man/9/text +linear /man/1/mash +linear /man/1/sh-std +linear /man/10/9load +linear /man/2/dbm +linear /man/2/math-0intro +linear /man/2/math-linalg +linear /man/3/vga +linear /man/6/colour +lineend /man/9/text +linelength /man/9/canvas +lineno /man/1/acme +linenumber /man/1/brutus +linenumber /man/10/acid +lineop /man/2/draw-image +lines /man/1/0intro +lines /man/1/acme +lines /man/1/brutus +lines /man/1/charon +lines /man/1/comm +lines /man/1/cprof +lines /man/1/deb +lines /man/1/diff +lines /man/1/fc +lines /man/1/fmt +lines /man/1/fortune +lines /man/1/grep +lines /man/1/look +lines /man/1/mash +lines /man/1/mk +lines /man/1/mprof +lines /man/1/p +lines /man/1/prof +lines /man/1/secstore +lines /man/1/sendmail +lines /man/1/sh +lines /man/1/sh-csv +lines /man/1/sh-std +lines /man/1/sort +lines /man/1/tail +lines /man/1/timestamp +lines /man/1/tiny +lines /man/1/uniq +lines /man/1/uuencode +lines /man/1/wc +lines /man/1/wm-sh +lines /man/10/2c +lines /man/10/acid +lines /man/10/conf +lines /man/10/inm +lines /man/10/mk +lines /man/10/plan9.ini +lines /man/2/attrdb +lines /man/2/cfg +lines /man/2/draw-image +lines /man/2/plumbmsg +lines /man/2/prefab-compound +lines /man/2/print +lines /man/2/prof +lines /man/2/secstore +lines /man/2/smtp +lines /man/3/audio +lines /man/3/dbg +lines /man/3/draw +lines /man/3/flash +lines /man/3/ip +lines /man/3/mpeg +lines /man/3/tls +lines /man/3/tv +lines /man/4/acme +lines /man/4/dbfs +lines /man/4/registry +lines /man/6/attrdb +lines /man/6/audio +lines /man/6/namespace +lines /man/6/plumbing +lines /man/6/sbl +lines /man/6/translate +lines /man/6/users +lines /man/8/prep +lines /man/8/srv +lines /man/8/styxchat +lines /man/9/button +lines /man/9/canvas +lines /man/9/checkbutton +lines /man/9/label +lines /man/9/listbox +lines /man/9/menubutton +lines /man/9/options +lines /man/9/radiobutton +lines /man/9/scrollbar +lines /man/9/text +linestart /man/9/text +linetab /man/2/prof +linewidth /man/9/canvas +ling /man/2/math-linalg +link /man/1/charon +link /man/1/ebook +link /man/1/limbo +link /man/10/conf +link /man/10/styxserver +link /man/2/dis +link /man/2/format +link /man/2/styxservers +link /man/3/dbg +link /man/3/ip +link /man/3/plap +link /man/4/palmsrv +link /man/6/dis +linkage /man/1/limbo +linkage /man/10/2l +linkage /man/10/conf +linkage /man/10/dynld +linkage /man/2/dis +linkage /man/6/dis +linked /man/1/cook +linked /man/10/acid +linked /man/10/dynld +linker /man/10/ms2 +linker /man/10ti925/epocimg +linker /man/10ti925/tihost +linking /man/10/conf +linkmtu /man/2/ip +links /man/1/charon +links /man/1/ebook +links /man/2/dis +links /man/2/factotum +links /man/2/keyring-0intro +links /man/2/wmsrv +links /man/4/ftpfs +links /man/6/sexprs +linksys /man/10/plan9.ini +linux /man/10/conf +linux /man/10/styxserver +linux /man/4/namespace +linux /man/8/mangaload +linux /man/8/prep +linuxswap /man/8/prep +lisp /man/2/sexprs +lisp's /man/2/sexprs +list /man/1/acme +list /man/1/blur +list /man/1/charon +list /man/1/cook +list /man/1/cprof +list /man/1/crypt +list /man/1/deb +list /man/1/disdep +list /man/1/fc +list /man/1/filename +list /man/1/gettar +list /man/1/grid-monitor +list /man/1/grid-query +list /man/1/grid-register +list /man/1/itest +list /man/1/lc +list /man/1/logon +list /man/1/look +list /man/1/ls +list /man/1/man +list /man/1/mash +list /man/1/mash-make +list /man/1/mash-tk +list /man/1/mc +list /man/1/mk +list /man/1/secstore +list /man/1/sendmail +list /man/1/session +list /man/1/sh +list /man/1/sh-alphabet +list /man/1/sh-arg +list /man/1/sh-csv +list /man/1/sh-file2chan +list /man/1/sh-regex +list /man/1/sh-sexprs +list /man/1/sh-std +list /man/1/sh-string +list /man/1/sh-tk +list /man/1/stack +list /man/1/tcs +list /man/1/tiny +list /man/1/tktester +list /man/1/tr +list /man/1/units +list /man/1/webgrab +list /man/1/wm-misc +list /man/1/yacc +list /man/10/2c +list /man/10/9load +list /man/10/acid +list /man/10/allocb +list /man/10/conf +list /man/10/delay +list /man/10/devattach +list /man/10/dynld +list /man/10/iar +list /man/10/inm +list /man/10/mk +list /man/10/odbc +list /man/10/plan9.ini +list /man/10/print +list /man/10/qio +list /man/10/qlock +list /man/10/srclist +list /man/2/0intro +list /man/2/alphabet-intro +list /man/2/arg +list /man/2/asn1 +list /man/2/attrdb +list /man/2/cfg +list /man/2/command +list /man/2/convcs +list /man/2/debug +list /man/2/dhcpclient +list /man/2/dialog +list /man/2/dict +list /man/2/dis +list /man/2/dividers +list /man/2/draw-context +list /man/2/draw-example +list /man/2/env +list /man/2/filepat +list /man/2/format +list /man/2/geodesy +list /man/2/hash +list /man/2/ip +list /man/2/ir +list /man/2/itslib +list /man/2/keyset +list /man/2/names +list /man/2/plumbmsg +list /man/2/pop3 +list /man/2/popup +list /man/2/prefab-0intro +list /man/2/prefab-compound +list /man/2/prefab-element +list /man/2/print +list /man/2/prof +list /man/2/registries +list /man/2/scsiio +list /man/2/secstore +list /man/2/security-auth +list /man/2/selectfile +list /man/2/sets +list /man/2/sexprs +list /man/2/sh +list /man/2/smtp +list /man/2/spki +list /man/2/spki-verifier +list /man/2/spree +list /man/2/spree-allow +list /man/2/spree-cardlib +list /man/2/spree-gather +list /man/2/srv +list /man/2/string +list /man/2/styxservers +list /man/2/styxservers-nametree +list /man/2/sys-pctl +list /man/2/sys-print +list /man/2/sys-self +list /man/2/sys-stat +list /man/2/sys-tokenize +list /man/2/tkclient +list /man/2/translate +list /man/2/ubfa +list /man/2/virgil +list /man/2/w3c-css +list /man/2/w3c-xpointers +list /man/2/wmclient +list /man/2/wmlib +list /man/2/wmsrv +list /man/2/xml +list /man/3/0intro +list /man/3/cons +list /man/3/dbg +list /man/3/draw +list /man/3/dynld +list /man/3/indir +list /man/3/mpeg +list /man/3/pnp +list /man/3/prof +list /man/3/prog +list /man/3/sign +list /man/3/ssl +list /man/3/tls +list /man/3/vga +list /man/4/factotum +list /man/4/lockfs +list /man/4/namespace +list /man/4/registry +list /man/4/spree +list /man/6/attrdb +list /man/6/dis +list /man/6/font +list /man/6/keyboard +list /man/6/proto +list /man/6/sbl +list /man/6/sexprs +list /man/6/ubfa +list /man/6/users +list /man/7/db +list /man/8/applylog +list /man/8/dns +list /man/8/kfscmd +list /man/8/mkfs +list /man/8/ping +list /man/8/prep +list /man/8/srv +list /man/9/bind +list /man/9/button +list /man/9/canvas +list /man/9/checkbutton +list /man/9/choicebutton +list /man/9/entry +list /man/9/frame +list /man/9/grid +list /man/9/image +list /man/9/label +list /man/9/listbox +list /man/9/menu +list /man/9/menubutton +list /man/9/options +list /man/9/pack +list /man/9/panel +list /man/9/radiobutton +list /man/9/scale +list /man/9/scrollbar +list /man/9/see +list /man/9/text +list's /man/2/prefab-element +list2stringlist /man/2/sh +listbox /man/1/tktester +listbox /man/9/0intro +listbox /man/9/listbox +listbox's /man/9/listbox +listboxes /man/1/tktester +listboxes /man/9/listbox +listed /man/1/ftree +listed /man/1/grid-ns +listed /man/1/grid-register +listed /man/1/lc +listed /man/1/ls +listed /man/1/mc +listed /man/1/secstore +listed /man/1/session +listed /man/1/sh +listed /man/10/2l +listed /man/10/conf +listed /man/10/devattach +listed /man/10/iar +listed /man/10/plan9.ini +listed /man/10/srclist +listed /man/2/attrdb +listed /man/2/registries +listed /man/2/security-auth +listed /man/2/spki +listed /man/2/styxservers +listed /man/2/sys-dial +listed /man/2/sys-pctl +listed /man/3/dbg +listed /man/4/namespace +listed /man/4/spree +listed /man/6/attrdb +listed /man/6/plumbing +listed /man/8/applylog +listed /man/8/collabsrv +listed /man/8/prep +listed /man/8/rip +listed /man/8/rstyxd +listed /man/9/options +listed /man/9/text +listen /man/1/listen +listen /man/1/wm-misc +listen /man/10/odbc +listen /man/2/security-0intro +listen /man/2/sys-dial +listen /man/2/sys-export +listen /man/3/ip +listen /man/3/plap +listen /man/3/tls +listen /man/4/import +listen /man/4/keysrv +listen /man/4/lockfs +listen /man/4/registry +listen /man/4/spree +listen /man/8/httpd +listen /man/8/signer +listen /man/8/srv +listen /man/8/styxchat +listen /man/8/svc +listen.b /man/1/listen +listener /man/1/listen +listener /man/4/keyfs +listener /man/8/srv +listener /man/8/svc +listeners /man/8/cs +listeners /man/8/srv +listeners /man/8/svc +listening /man/1/grid-register +listening /man/1/listen +listening /man/10/odbc +listening /man/2/security-0intro +listening /man/6/plumbing +listening /man/8/plumber +listens /man/1/brutus +listens /man/3/plap +listens /man/8/bootpd +listens /man/8/collabsrv +listens /man/8/httpd +listens /man/8/srv +listens /man/8/svc +listing /man/1/acme +listing /man/1/asm +listing /man/1/env +listing /man/1/gettar +listing /man/1/tcs +listing /man/1/tsort +listing /man/1/wc +listing /man/10/dev +listing /man/10/dynld +listing /man/10/iar +listing /man/4/factotum +listing /man/4/registry +listing /man/6/dis +listing /man/6/ndb +listing /man/8/applylog +listing /man/8/prep +listings /man/1/charon +listings /man/1/lc +listings /man/1/ls +listnode /man/2/sh +lists /man/1/acme +lists /man/1/charon +lists /man/1/cprof +lists /man/1/deb +lists /man/1/env +lists /man/1/gettar +lists /man/1/lc +lists /man/1/ls +lists /man/1/mash +lists /man/1/mprof +lists /man/1/prof +lists /man/1/session +lists /man/1/sh +lists /man/1/sh-csv +lists /man/1/tktester +lists /man/1/tsort +lists /man/1/wm-misc +lists /man/10/acid +lists /man/10/allocb +lists /man/10/conf +lists /man/10/dev +lists /man/10/dynld +lists /man/2/0intro +lists /man/2/arg +lists /man/2/asn1 +lists /man/2/convcs +lists /man/2/pop3 +lists /man/2/prefab-element +lists /man/2/registries +lists /man/2/sexprs +lists /man/2/sh +lists /man/2/w3c-css +lists /man/2/w3c-xpointers +lists /man/3/dynld +lists /man/3/indir +lists /man/4/factotum +lists /man/4/spree +lists /man/6/dis +lists /man/6/ubfa +lists /man/8/collabsrv +lit /man/1/grid-monitor +literal /man/1/acme +literal /man/1/fs +literal /man/1/mk +literal /man/1/sh-alphabet +literal /man/1/sh-regex +literal /man/1/sh-string +literal /man/10/mk +literal /man/2/dis +literal /man/2/math-0intro +literal /man/2/prefab-style +literal /man/2/ubfa +literal /man/2/w3c-xpointers +literal /man/3/dbg +literal /man/4/acme +literal /man/5/0intro +literal /man/6/image +literal /man/6/man +literal /man/6/regexp +literal /man/8/styxchat +literally /man/1/acme +literally /man/1/tiny +literally /man/2/filepat +literally /man/2/spree-allow +literals /man/1/tiny +literals /man/6/man +live /man/1/acme +live /man/1/tiny +live /man/10/plan9.ini +live /man/2/xml +live /man/3/ip +live /man/3/prog +live /man/3/tinyfs +live /man/8/ping +lives /man/6/ndb +lld /man/10/2c +lmargin /man/2/print +lmargin1 /man/9/text +lmargin2 /man/9/text +lmno /man/1/idea +lnkava /man/1/alphabet-abc +lnkava /man/1/alphabet-grid +lno /man/2/attrdb +lnum /man/2/cfg +lnvils /man/1/grep +lo /man/2/geodesy +lo /man/6/dis +load /man/1/acme +load /man/1/alphabet-abc +load /man/1/alphabet-fs +load /man/1/alphabet-grid +load /man/1/alphabet-main +load /man/1/deb +load /man/1/disdep +load /man/1/echo +load /man/1/mash +load /man/1/mash-make +load /man/1/mash-tk +load /man/1/sh +load /man/1/sh-alphabet +load /man/1/sh-arg +load /man/1/sh-csv +load /man/1/sh-expr +load /man/1/sh-file2chan +load /man/1/sh-regex +load /man/1/sh-sexprs +load /man/1/sh-std +load /man/1/sh-string +load /man/1/sh-test +load /man/1/sh-tk +load /man/1/time +load /man/1/tiny +load /man/1/tktester +load /man/1/yacc +load /man/10/2l +load /man/10/5cv +load /man/10/9load +load /man/10/acid +load /man/10/dynld +load /man/10/plan9.ini +load /man/2/0intro +load /man/2/arg +load /man/2/asn1 +load /man/2/attrdb +load /man/2/bloomfilter +load /man/2/bufio +load /man/2/bufio-chanfill +load /man/2/cfg +load /man/2/command +load /man/2/convcs +load /man/2/crc +load /man/2/daytime +load /man/2/dbm +load /man/2/debug +load /man/2/devpointer +load /man/2/dhcpclient +load /man/2/dialog +load /man/2/dict +load /man/2/dis +load /man/2/diskblocks +load /man/2/disks +load /man/2/dividers +load /man/2/draw-0intro +load /man/2/draw-context +load /man/2/draw-display +load /man/2/draw-example +load /man/2/draw-font +load /man/2/draw-image +load /man/2/draw-point +load /man/2/draw-pointer +load /man/2/draw-rect +load /man/2/draw-screen +load /man/2/drawmux +load /man/2/encoding +load /man/2/env +load /man/2/ether +load /man/2/exception +load /man/2/factotum +load /man/2/filepat +load /man/2/filter +load /man/2/filter-deflate +load /man/2/filter-slip +load /man/2/format +load /man/2/fsproto +load /man/2/geodesy +load /man/2/hash +load /man/2/ida +load /man/2/imagefile +load /man/2/ip +load /man/2/ir +load /man/2/itslib +load /man/2/keyring-0intro +load /man/2/keyring-auth +load /man/2/keyring-certtostr +load /man/2/keyring-crypt +load /man/2/keyring-gensk +load /man/2/keyring-getmsg +load /man/2/keyring-getstring +load /man/2/keyring-ipint +load /man/2/keyring-rc4 +load /man/2/keyring-sha1 +load /man/2/keyset +load /man/2/lock +load /man/2/math-0intro +load /man/2/math-elem +load /man/2/math-export +load /man/2/math-fp +load /man/2/math-linalg +load /man/2/mpeg +load /man/2/names +load /man/2/newns +load /man/2/palmfile +load /man/2/plumbmsg +load /man/2/pop3 +load /man/2/popup +load /man/2/prefab-0intro +load /man/2/prefab-compound +load /man/2/prefab-element +load /man/2/prefab-environ +load /man/2/prefab-style +load /man/2/print +load /man/2/prof +load /man/2/pslib +load /man/2/rand +load /man/2/readdir +load /man/2/regex +load /man/2/registries +load /man/2/scsiio +load /man/2/secstore +load /man/2/security-auth +load /man/2/security-login +load /man/2/security-random +load /man/2/security-ssl +load /man/2/selectfile +load /man/2/sets +load /man/2/sexprs +load /man/2/sh +load /man/2/smtp +load /man/2/spki +load /man/2/spki-verifier +load /man/2/spree +load /man/2/spree-allow +load /man/2/spree-cardlib +load /man/2/spree-objstore +load /man/2/srv +load /man/2/string +load /man/2/stringinttab +load /man/2/styx +load /man/2/styxconv +load /man/2/styxpersist +load /man/2/styxservers +load /man/2/styxservers-nametree +load /man/2/sys-0intro +load /man/2/sys-bind +load /man/2/sys-byte2char +load /man/2/sys-chdir +load /man/2/sys-dial +load /man/2/sys-dirread +load /man/2/sys-dup +load /man/2/sys-export +load /man/2/sys-fauth +load /man/2/sys-fd2path +load /man/2/sys-file2chan +load /man/2/sys-fversion +load /man/2/sys-iounit +load /man/2/sys-millisec +load /man/2/sys-open +load /man/2/sys-pctl +load /man/2/sys-pipe +load /man/2/sys-print +load /man/2/sys-read +load /man/2/sys-remove +load /man/2/sys-seek +load /man/2/sys-self +load /man/2/sys-sleep +load /man/2/sys-stat +load /man/2/sys-tokenize +load /man/2/sys-utfbytes +load /man/2/sys-werrstr +load /man/2/tabs +load /man/2/tftp +load /man/2/timers +load /man/2/tk +load /man/2/tkclient +load /man/2/translate +load /man/2/ubfa +load /man/2/venti +load /man/2/virgil +load /man/2/volume +load /man/2/w3c-css +load /man/2/w3c-xpointers +load /man/2/wait +load /man/2/wmclient +load /man/2/wmlib +load /man/2/wmsrv +load /man/2/workdir +load /man/2/xml +load /man/3/cap +load /man/3/draw +load /man/3/ds +load /man/3/dynld +load /man/3/ftl +load /man/3/sign +load /man/4/registry +load /man/6/dis +load /man/7/db +load /man/8/mangaload +load /man/8/mkfs +load /man/8/prep +loadable /man/1/mash +loadable /man/1/mash-make +loadable /man/1/mash-tk +loadable /man/1/sh +loadable /man/1/sh-alphabet +loadable /man/1/sh-arg +loadable /man/1/sh-csv +loadable /man/1/sh-expr +loadable /man/1/sh-file2chan +loadable /man/1/sh-regex +loadable /man/1/sh-sexprs +loadable /man/1/sh-std +loadable /man/1/sh-string +loadable /man/1/sh-test +loadable /man/1/sh-tk +loadable /man/10/dynld +loadable /man/2/sh +loadaddr /man/10/5cv +loaded /man/1/0intro +loaded /man/1/acme +loaded /man/1/avr +loaded /man/1/charon +loaded /man/1/cprof +loaded /man/1/disdep +loaded /man/1/echo +loaded /man/1/emu +loaded /man/1/mash +loaded /man/1/mprof +loaded /man/1/prof +loaded /man/1/secstore +loaded /man/1/sh +loaded /man/1/sh-alphabet +loaded /man/1/sh-std +loaded /man/1/tiny +loaded /man/1/tktester +loaded /man/10/2c +loaded /man/10/2l +loaded /man/10/5cv +loaded /man/10/9load +loaded /man/10/acid +loaded /man/10/dynld +loaded /man/2/0intro +loaded /man/2/filter +loaded /man/2/ir +loaded /man/2/prof +loaded /man/2/pslib +loaded /man/2/sh +loaded /man/2/spree +loaded /man/2/styxservers +loaded /man/2/styxservers-nametree +loaded /man/2/translate +loaded /man/2/xml +loaded /man/3/cons +loaded /man/3/dynld +loaded /man/3/indir +loaded /man/3/prof +loaded /man/3/sign +loaded /man/4/spree +loaded /man/8/mangaload +loaded /man/8/prep +loaded /man/9/types +loader /man/10/2c +loader /man/10/2l +loader /man/10/5cv +loader /man/10/dynld +loader /man/2/dis +loader /man/6/dis +loaders /man/10/2c +loaders /man/10/2l +loaders /man/10/9load +loaders /man/10/ar +loaders /man/10/dynld +loaders /man/10/iar +loaders /man/3/logfs +loading /man/1/0intro +loading /man/1/sh-alphabet +loading /man/1/tktester +loading /man/10/2l +loading /man/10/9load +loading /man/10/dynld +loading /man/2/convcs +loading /man/2/dis +loading /man/2/ir +loading /man/3/dynld +loading /man/4/acme +loading /man/4/ramfile +loading /man/8/mangaload +loadmodule /man/2/sh +loadobj /man/2/dis +loads /man/1/acme +loads /man/1/avr +loads /man/1/sh-alphabet +loads /man/1/time +loads /man/1/toolbar +loads /man/10/5cv +loads /man/10/9load +loads /man/10/dynld +loads /man/2/sh +loads /man/2/translate +loads /man/3/dynld +loads /man/8/fpgaload +loads /man/8/httpd +loads /man/8/mangaload +loads /man/8/prep +loan /man/2/math-linalg +lobby /man/1/spree-join +lobby /man/4/spree +loc /man/2/xml +localaddr /man/3/plap +localclosed /man/3/tls +localdir /man/1/collab +locale /man/1/date +locale /man/2/translate +locale /man/4/namespace +locale /man/6/translate +locales /man/6/translate +localfile /man/4/import +localhost /man/1/charon +localhost /man/10/odbc +localip /man/8/dhcp +locally /man/1/webgrab +locally /man/2/draw-display +locally /man/2/keyring-0intro +locally /man/2/sys-export +locally /man/5/walk +locally /man/6/ndb +locally /man/6/sbl +locally /man/8/create +locally /man/8/dns +localmask /man/8/dhcp +localreg /man/1/grid-localreg +localreg /man/1/grid-query +localreg /man/1/grid-register +localreg.b /man/1/grid-localreg +locals /man/1/deb +locals /man/2/debug +locals /man/6/sbl +localuser /man/2/registries +locate /man/1/acme +locate /man/1/man +locate /man/10/ar +locate /man/10/plan9.ini +locate /man/2/debug +locate /man/2/prof +locate /man/9/canvas +locate /man/9/entry +located /man/1/session +located /man/1/tktester +located /man/10/allocb +located /man/2/debug +located /man/2/registries +locates /man/1/acme +locating /man/2/convcs +locating /man/8/rip +location /man/1/0intro +location /man/1/deb +location /man/1/mdb +location /man/1/wm +location /man/10/9load +location /man/10/a.out +location /man/10/error +location /man/2/dis +location /man/2/draw-image +location /man/2/registries +location /man/2/sys-seek +location /man/2/sys-werrstr +location /man/2/tkclient +location /man/2/wmclient +location /man/2/xml +location /man/3/logfs +location /man/4/registry +location /man/8/create +location /man/8/svc +location /man/9/canvas +location /man/9/grid +location /man/9/listbox +location /man/9/panel +location /man/9/text +locations /man/1/mdb +locations /man/10/a.out +locations /man/10/styx +locations /man/3/0intro +locations /man/4/registry +locations /man/9/grid +locations /man/9/text +locator /man/2/xml +lock /man/10/kproc +lock /man/10/lock +lock /man/10/qlock +lock /man/10/ref +lock /man/10/sleep +lock /man/10/splhi +lock /man/2/bufio +lock /man/2/lock +lock /man/4/lockfs +lock /man/5/stat +lock /man/6/keyboard +lock /man/7/db +lock.b /man/2/lock +lock.c /man/10/lock +lock.c /man/10/qlock +lock.m /man/2/lock +locked /man/10/qio +locked /man/3/flash +lockfs /man/4/lockfs +lockfs.b /man/4/lockfs +locking /man/10/lock +locking /man/10/qlock +locking /man/2/lock +locking /man/2/sys-0intro +locks /man/10/lock +locks /man/10/qlock +locks /man/2/lock +locks /man/9/grab +locksrv /man/4/lockfs +log /man/1/logon +log /man/1/mathcalc +log /man/1/mc +log /man/1/sh-file2chan +log /man/1/timestamp +log /man/2/draw-image +log /man/2/drawmux +log /man/2/math-elem +log /man/3/draw +log /man/3/ip +log /man/3/kprof +log /man/3/logfs +log /man/4/factotum +log /man/4/iostats +log /man/4/keyfs +log /man/4/logfile +log /man/8/applylog +log /man/8/plumber +log10 /man/1/mathcalc +log10 /man/1/mc +log10 /man/2/math-elem +log1p /man/2/math-elem +logarithm /man/2/math-elem +logarithm /man/2/math-fp +logarithm /man/6/image +logfile /man/1/logwindow +logfile /man/1/sh-file2chan +logfile /man/4/logfile +logfile /man/8/httpd +logfile.b /man/4/logfile +logfs /man/3/flash +logfs /man/3/logfs +logfs /man/4/kfs +logfsctl /man/3/logfs +logfsusers /man/3/logfs +logged /man/3/ip +logging /man/1/timestamp +logging /man/2/pop3 +logging /man/3/ip +logic /man/1/0intro +logic /man/10/plan9.ini +logical /man/1/mathcalc +logical /man/1/mc +logical /man/1/sh-expr +logical /man/10/kproc +logical /man/2/attrdb +logical /man/2/draw-image +logical /man/2/plumbmsg +logical /man/2/sys-dial +logical /man/2/tk +logical /man/2/w3c-css +logical /man/2/wmsrv +logical /man/3/dbg +logical /man/3/draw +logical /man/3/ftl +logical /man/3/i2c +logical /man/3/ip +logical /man/3/pbus +logical /man/3/plap +logical /man/6/attrdb +logical /man/6/ndb +logical /man/8/plumber +logical /man/8/prep +logical /man/9/bind +logically /man/2/attrdb +logically /man/3/flash +logically /man/3/pnp +logically /man/6/attrdb +login /man/1/listen +login /man/1/logon +login /man/1/rcmd +login /man/1/telnet +login /man/2/keyring-0intro +login /man/2/security-0intro +login /man/2/security-login +login /man/3/ip +login /man/4/keyfs +login /man/6/auth +login /man/6/keys +login /man/6/login +login /man/8/logind +login.b /man/2/security-login +logind /man/1/passwd +logind /man/2/keyset +logind /man/2/security-login +logind /man/4/keyfs +logind /man/4/keysrv +logind /man/4/namespace +logind /man/6/keys +logind /man/6/login +logind /man/6/ndb +logind /man/8/changelogin +logind /man/8/createsignerkey +logind /man/8/getauthinfo +logind /man/8/logind +logind /man/8/svc +logind.b /man/8/logind +logind.dis /man/8/srv +logm /man/2/bloomfilter +logon /man/1/emu +logon /man/1/logon +logon /man/1/toolbar +logon /man/1/wm +logon /man/4/namespace +logon /man/6/namespace +logon.b /man/1/logon +logs /man/1/listen +logs /man/1/logon +logs /man/2/sys-0intro +logs /man/4/ftpfs +logs.b /man/8/applylog +logwindow /man/1/logwindow +logwindow /man/4/logfile +logwindow.b /man/1/logwindow +log₂ /man/2/bloomfilter +longer /man/1/acme +longer /man/1/miniterm +longer /man/1/prof +longer /man/1/pwd +longer /man/1/sh-file2chan +longer /man/1/sh-std +longer /man/1/strings +longer /man/10/dynld +longer /man/10/plan9.ini +longer /man/10/qio +longer /man/2/alphabet-intro +longer /man/2/debug +longer /man/2/draw-image +longer /man/2/keyring-getstring +longer /man/2/sys-fd2path +longer /man/2/venti +longer /man/2/xml +longer /man/3/dup +longer /man/3/dynld +longer /man/3/srv9 +longer /man/4/kfs +longer /man/4/spree +longer /man/5/0intro +longer /man/5/clunk +longer /man/5/flush +longer /man/8/create +longer /man/9/bind +longer /man/9/canvas +longer /man/9/grid +longer /man/9/menu +longer /man/9/pack +longer /man/9/text +longest /man/1/acme +longest /man/2/regex +longest /man/2/sys-byte2char +longitude /man/2/geodesy +longjmp /man/10/error +longs /man/10/inb +look.b /man/1/look +lookahead /man/1/wm-misc +lookahead /man/6/sexprs +looking /man/1/acme +looking /man/10/0intro +looking /man/10/kbdputc +looking /man/10/memory +looking /man/2/convcs +looking /man/2/debug +looking /man/2/spree-cardlib +looking /man/2/spree-objstore +looking /man/6/ndb +looking /man/8/httpd +lookman /man/1/man +lookman.b /man/1/man +looks /man/1/0intro +looks /man/1/ps +looks /man/1/sh +looks /man/10/dynld +looks /man/10/newchan +looks /man/10/plan9.ini +looks /man/2/disks +looks /man/2/keyset +looks /man/2/spree-cardlib +looks /man/2/styx +looks /man/2/tabs +looks /man/3/0intro +looks /man/4/registry +looks /man/6/keyboard +looks /man/6/ndb +looks /man/8/cs +looks /man/8/dns +looks /man/8/prep +looks /man/9/grid +lookup /man/1/fortune +lookup /man/1/man +lookup /man/2/asn1 +lookup /man/2/cfg +lookup /man/2/dict +lookup /man/2/plumbmsg +lookup /man/2/stringinttab +loop /man/1/charon +loop /man/1/sh +loop /man/1/sh-csv +loop /man/1/sh-sexprs +loop /man/1/sh-std +loop /man/10/acid +loop /man/10/lock +loop /man/10/styxserver +loop /man/2/keyring-sha1 +loop /man/2/math-linalg +loop /man/2/sys-read +loop /man/3/audio +loopback /man/10/styxserver +loopback /man/2/ip +loopback /man/3/audio +looping /man/1/sh-std +loops /man/1/acme +loops /man/10/lock +loops /man/2/math-linalg +loops /man/6/colour +loosely /man/1/sh +lose /man/1/wm +loses /man/2/filepat +losing /man/2/sh +losing /man/2/spree +losing /man/3/logfs +losing /man/9/bind +loss /man/3/pbus +lost /man/1/acme +lost /man/1/man +lost /man/1/sh +lost /man/1/sh-file2chan +lost /man/1/tiny +lost /man/1/tktester +lost /man/10/plan9.ini +lost /man/10/sleep +lost /man/2/keyring-rc4 +lost /man/2/sh +lost /man/3/logfs +lost /man/3/pnp +lost /man/8/ping +lot /man/1/0intro +lots /man/4/namespace +loud /man/3/audio +low /man/1/acme +low /man/1/os +low /man/10/ar +low /man/10/dmainit +low /man/10/qio +low /man/2/scsiio +low /man/2/spree-cardlib +low /man/2/venti +low /man/2/wmlib +low /man/3/boot +low /man/3/draw +low /man/3/logfs +low /man/3/sd +low /man/3/tinyfs +low /man/3/tv +low /man/5/0intro +low /man/6/colour +low /man/6/dis +low /man/6/font +low /man/6/image +lower /man/1/cal +lower /man/1/collab-clients +lower /man/1/dd +lower /man/1/look +lower /man/1/tr +lower /man/1/wm +lower /man/10/error +lower /man/2/convcs +lower /man/2/draw-rect +lower /man/2/encoding +lower /man/2/security-0intro +lower /man/2/sexprs +lower /man/2/sh +lower /man/2/string +lower /man/2/styx +lower /man/2/sys-fversion +lower /man/2/sys-print +lower /man/2/tk +lower /man/2/w3c-css +lower /man/3/tv +lower /man/6/keyboard +lower /man/6/man +lower /man/6/sexprs +lower /man/8/touchcal +lower /man/9/0intro +lower /man/9/canvas +lower /man/9/lower +lower /man/9/menu +lower /man/9/raise +lower /man/9/text +lowered /man/2/tk +lowered /man/3/pipe +lowering /man/1/wm-misc +lowers /man/9/lower +lowest /man/1/grid-query +lowest /man/10/kproc +lowest /man/2/sys-0intro +lowest /man/2/sys-dup +lowest /man/3/draw +lowest /man/6/dis +lowest /man/9/canvas +lowest /man/9/text +lp /man/6/man +lpmnqduntscr /man/1/ls +lport /man/3/ip +lpt /man/10ti925/tihost +lpt /man/3/lpt +lpt1 /man/10ti925/tihost +lpt1data /man/2/print +lpt?data /man/10ti925/tihost +lpt?data /man/3/lpt +lpt?dlr /man/10ti925/tihost +lpt?dlr /man/3/lpt +lpt?pcr /man/10ti925/tihost +lpt?pcr /man/3/lpt +lpt?psr /man/10ti925/tihost +lpt?psr /man/3/lpt +lpt?raw /man/10ti925/tihost +lr /man/1/yacc +lr /man/6/man +ls /man/1/alphabet-fs +ls /man/1/chgrp +ls /man/1/chmod +ls /man/1/fs +ls /man/1/lc +ls /man/1/ls +ls /man/1/sh +ls /man/1/sh-regex +ls /man/1/touch +ls /man/10/acid +ls /man/10/iar +ls /man/10/styxserver +ls /man/3/0intro +ls /man/3/indir +ls /man/4/9srvfs +ls /man/4/cpu +ls /man/4/iostats +ls /man/4/tarfs +ls /man/8/rdbgsrv +ls /man/8/styxmon +ls.b /man/1/ls +ls.dis /man/1/sh +ls.dis /man/1/stack +ls.sbl /man/1/stack +lsb /man/2/asn1 +lsi /man/10/plan9.ini +lsize /man/2/dis +lsl /man/1/cmp +lstar /man/1/gettar +lstar.b /man/1/gettar +lstk /man/10/acid +lt /man/1/sh-expr +ltd /man/2/keyring-crypt +ltd /man/6/attrdb +lucas /man/2/palmfile +lucent /man/10/plan9.ini +lucent /man/4/factotum +lucent's /man/3/indir +lucidasans /man/1/acme +lucm /man/1/acme +lucm /man/1/emu +luminance /man/2/imagefile +luminance /man/9/types +luns /man/3/sd +lurks /man/8/plumber +lval /man/1/yacc +lwceb /man/1/wc +lx /man/10/2c +lz77 /man/6/image +m.count /man/2/styxservers +m1args /man/1/sh-alphabet +m2args /man/1/sh-alphabet +mac /man/2/ether +mac /man/3/ether +mac /man/3/ip +mac /man/3/pbus +mac /man/8/bootpd +mac /man/8/dhcp +mach64xx /man/3/vga +mach64xxhwgc /man/3/vga +macheps /man/1/fc +macheps /man/2/math-fp +machine /man/1/0intro +machine /man/1/asm +machine /man/1/bind +machine /man/1/cpu +machine /man/1/deb +machine /man/1/emu +machine /man/1/grid-localreg +machine /man/1/grid-register +machine /man/1/limbo +machine /man/1/ps +machine /man/1/rcmd +machine /man/1/session +machine /man/1/telnet +machine /man/1/wm-misc +machine /man/10/2a +machine /man/10/2c +machine /man/10/9load +machine /man/10/a.out +machine /man/10/acid +machine /man/10/dev +machine /man/10/mk +machine /man/10/odbc +machine /man/10/plan9.ini +machine /man/10/styx +machine /man/10/styxserver +machine /man/2/0intro +machine /man/2/dis +machine /man/2/draw-screen +machine /man/2/keyring-0intro +machine /man/2/math-0intro +machine /man/2/math-fp +machine /man/2/styx +machine /man/2/sys-0intro +machine /man/2/sys-dial +machine /man/3/cap +machine /man/3/cons +machine /man/3/dbg +machine /man/3/ds +machine /man/3/srv9 +machine /man/4/ftpfs +machine /man/4/keyfs +machine /man/4/lockfs +machine /man/5/0intro +machine /man/5/attach +machine /man/5/stat +machine /man/6/dis +machine /man/6/image +machine /man/6/namespace +machine /man/6/ubfa +machine /man/6/utf +machine /man/7/db +machine /man/7/dbsrv +machine /man/8/applylog +machine /man/8/create +machine /man/8/getauthinfo +machine /man/8/mkfs +machine /man/8/register +machine /man/8/rip +machine /man/8/signer +machine /man/8/virgild +machine's /man/1/emu +machine's /man/10/2c +machine's /man/10/9load +machine's /man/2/security-0intro +machine's /man/3/cons +machine's /man/4/ftpfs +machine's /man/8/getauthinfo +machine's /man/8/rip +machine's /man/8/signer +machines /man/1/0intro +machines /man/1/blur +machines /man/1/mux +machines /man/1/session +machines /man/10/plan9.ini +machines /man/2/draw-screen +machines /man/3/arch +machines /man/3/ip +machines /man/6/keyboard +machines /man/8/bootpd +machines /man/8/getauthinfo +macos /man/3/fs +macro /man/1/man +macro /man/10/allocb +macro /man/10/seconds +macro /man/10/styx +macro /man/6/man +macros /man/1/man +macros /man/10/styx +macros /man/6/man +mafter /man/2/sys-bind +mafter /man/3/fs +mafter /man/6/namespace +magenta /man/2/draw-display +magic /man/10/a.out +magic /man/10/acid +magic /man/10/ar +magic /man/2/dis +magic /man/6/dis +magic /man/6/sbl +magic /man/8/httpd +magic0 /man/2/disks +magic1 /man/2/disks +magnetic /man/1/dd +magnitude /man/2/keyring-ipint +magnitude /man/2/math-fp +mail /man/1/acme +mail /man/1/mux +mail /man/1/sendmail +mail /man/1/uuencode +mail /man/2/dhcpclient +mail /man/2/encoding +mail /man/2/keyring-0intro +mail /man/2/pop3 +mail /man/2/smtp +mail /man/2/translate +mail /man/4/ftpfs +mail /man/4/namespace +mail /man/6/ndb +mail /man/8/dns +mailbox /man/2/pop3 +mailboxes /man/4/namespace +mailpop3 /man/1/acme +mailserver /man/1/sendmail +mailserver /man/2/pop3 +mailserver /man/2/smtp +main /man/1/alphabet-abc +main /man/1/alphabet-fs +main /man/1/alphabet-grid +main /man/1/alphabet-main +main /man/1/charon +main /man/1/deb +main /man/1/emu +main /man/1/grid-monitor +main /man/1/grid-query +main /man/1/grid-register +main /man/1/mk +main /man/1/mprof +main /man/1/mux +main /man/1/sh +main /man/1/sh-alphabet +main /man/1/tktester +main /man/1/toolbar +main /man/1/wm-misc +main /man/10/0intro +main /man/10/2l +main /man/10/a.out +main /man/10/acid +main /man/10/c2l +main /man/10/dev +main /man/10/error +main /man/10/iar +main /man/10/mk +main /man/10/plan9.ini +main /man/10/print +main /man/10/styxserver +main /man/10/xalloc +main /man/2/0intro +main /man/2/alphabet-intro +main /man/2/sys-0intro +main /man/6/keyboard +main /man/6/man +main /man/6/sexprs +main /man/8/kfscmd +main /man/9/menu +main.2 /man/10/2c +main.c /man/10/2c +main.c /man/10/error +main:argv /man/10/acid +mainly /man/1/acme +mainly /man/10/ar +mainly /man/10/styxserver +mainly /man/2/ip +mainly /man/2/palmfile +mainly /man/2/ubfa +mainly /man/3/cons +mainly /man/3/dbg +mainly /man/3/ftl +mainly /man/8/bootpd +mainly /man/8/dns +mainmem /man/10/malloc +mainp /man/10/2l +mainstream /man/1/tiny +maintain /man/1/grid-ns +maintain /man/1/mk +maintain /man/10/mk +maintain /man/2/draw-example +maintain /man/2/styxpersist +maintain /man/2/styxservers +maintain /man/2/wmsrv +maintain /man/3/draw +maintain /man/3/fs +maintain /man/4/spree +maintain /man/6/colour +maintain /man/8/applylog +maintained /man/1/acme +maintained /man/1/charon +maintained /man/1/fortune +maintained /man/1/mash-tk +maintained /man/1/sh-file2chan +maintained /man/2/scsiio +maintained /man/2/tkclient +maintained /man/2/wmclient +maintained /man/2/wmlib +maintained /man/3/logfs +maintained /man/4/dbfs +maintained /man/4/memfs +maintainer /man/10/iar +maintaining /man/2/convcs +maintaining /man/3/draw +maintaining /man/4/factotum +maintaining /man/8/dhcp +maintains /man/1/acme +maintains /man/10/devattach +maintains /man/10/iar +maintains /man/10/plan9.ini +maintains /man/2/dbm +maintains /man/2/keyring-crypt +maintains /man/2/sys-0intro +maintains /man/3/logfs +maintains /man/5/0intro +maintains /man/6/dis +maintains /man/6/users +maintains /man/9/pack +maintenance /man/1/tiny +maintenance /man/3/sd +maintenance /man/9/1copyright +majority /man/2/ida +make.b /man/1/mash +make.b /man/1/mash-make +makecard /man/2/spree-cardlib +makecards /man/2/spree-cardlib +makedrawcontext /man/2/tkclient +makedrawcontext /man/2/wmclient +maketable /man/2/spree-cardlib +maketag /man/2/spki +malformed /man/1/acme +malformed /man/2/w3c-css +malicious /man/2/styxservers +malingering /man/4/lockfs +malloc /man/1/emu +malloc /man/10/allocb +malloc /man/10/c2l +malloc /man/10/intrenable +malloc /man/10/malloc +malloc /man/10/parsecmd +malloc /man/10/print +malloc /man/10/qlock +malloc /man/10/strcat +malloc /man/10/xalloc +mallocz /man/10/error +mallocz /man/10/malloc +man.b /man/1/man +man2txt /man/1/man +man2txt.b /man/1/man +manage /man/1/0intro +manage /man/1/gettar +manage /man/1/wm +manage /man/1/wm-sh +manage /man/10/devattach +manage /man/10/dmainit +manage /man/2/draw-0intro +manage /man/2/ir +manage /man/2/styxservers +manage /man/2/sys-dup +manage /man/2/sys-file2chan +manage /man/2/timers +manage /man/8/srv +manage /man/9/grid +manage /man/9/pack +managed /man/1/blur +managed /man/1/charon +managed /man/1/wm-misc +managed /man/10/odbc +managed /man/10/plan9.ini +managed /man/2/draw-0intro +managed /man/2/security-login +managed /man/6/colour +managed /man/8/logind +managed /man/8/svc +managed /man/9/canvas +managed /man/9/grid +managed /man/9/pack +management /man/1/wm-misc +management /man/10/allocb +management /man/10/devattach +management /man/10/plan9.ini +management /man/10/xalloc +management /man/2/draw-0intro +management /man/2/draw-context +management /man/2/draw-image +management /man/2/draw-screen +management /man/2/prefab-element +management /man/2/styxservers +management /man/3/ftl +management /man/4/factotum +management /man/7/db +manager /man/1/0intro +manager /man/1/charon +manager /man/1/dmview +manager /man/1/mash-tk +manager /man/1/sh-tk +manager /man/1/tkcmd +manager /man/1/toolbar +manager /man/1/wm +manager /man/1/wm-misc +manager /man/10/9load +manager /man/10/ntsrv +manager /man/2/command +manager /man/2/draw-context +manager /man/2/draw-display +manager /man/2/draw-screen +manager /man/2/sys-pctl +manager /man/2/tk +manager /man/2/tkclient +manager /man/2/wmclient +manager /man/2/wmlib +manager /man/2/wmsrv +manager /man/3/prog +manager /man/4/namespace +manager /man/8/plumber +manager /man/9/canvas +manager /man/9/grab +manager /man/9/grid +manager /man/9/options +manager /man/9/pack +manager's /man/2/tkclient +manager's /man/2/wmclient +manager's /man/2/wmlib +manager's /man/2/wmsrv +managers /man/8/plumber +manages /man/1/acme +manages /man/1/secstore +manages /man/2/diskblocks +manages /man/3/draw +manages /man/3/ftl +manages /man/9/grid +managing /man/4/factotum +managing /man/5/0intro +managing /man/9/text +mand /man/1/wm-misc +mand.b /man/1/wm-misc +mandated /man/2/math-0intro +mandatory /man/1/sh-alphabet +mandelbrot /man/1/wm-misc +manga /man/8/mangaload +mangaload /man/8/mangaload +mangaload.b /man/8/mangaload +manga™ /man/8/mangaload +manifestation /man/6/utf +manipulate /man/1/blur +manipulate /man/10/dev +manipulate /man/10/odbc +manipulate /man/2/env +manipulate /man/2/ether +manipulate /man/2/ip +manipulate /man/3/ip +manipulate /man/3/plap +manipulate /man/3/sd +manipulate /man/9/button +manipulate /man/9/canvas +manipulate /man/9/checkbutton +manipulate /man/9/choicebutton +manipulate /man/9/entry +manipulate /man/9/frame +manipulate /man/9/image +manipulate /man/9/label +manipulate /man/9/listbox +manipulate /man/9/menu +manipulate /man/9/menubutton +manipulate /man/9/radiobutton +manipulate /man/9/scale +manipulate /man/9/scrollbar +manipulate /man/9/text +manipulated /man/2/bufio +manipulated /man/2/styxservers +manipulated /man/2/sys-0intro +manipulated /man/5/0intro +manipulated /man/6/colour +manipulated /man/9/canvas +manipulated /man/9/label +manipulated /man/9/text +manipulates /man/10/2c +manipulates /man/9/canvas +manipulating /man/2/draw-0intro +manipulating /man/2/sets +manipulating /man/2/styx +manipulating /man/9/listbox +manipulating /man/9/scrollbar +manipulation /man/1/sh-string +manipulation /man/2/alphabet-intro +manipulation /man/2/ether +manipulation /man/2/keyring-ipint +manipulation /man/2/names +manipulation /man/2/spree-cardlib +manipulation /man/2/sys-0intro +manipulation /man/3/draw +manipulation /man/7/db +manipulations /man/1/limbo +manner /man/1/deb +manner /man/10/ar +manner /man/10/getfields +manner /man/10/qio +manner /man/2/asn1 +manner /man/2/debug +manner /man/2/itslib +manner /man/2/spree +manner /man/8/prep +manual /man/1/0intro +manual /man/1/charon +manual /man/1/chgrp +manual /man/1/man +manual /man/1/mash +manual /man/1/secstore +manual /man/1/sh-tk +manual /man/1/wm-misc +manual /man/1/yacc +manual /man/10/0intro +manual /man/10/2a +manual /man/10/9load +manual /man/10/acid +manual /man/10/intrenable +manual /man/10/odbc +manual /man/10/sleep +manual /man/2/0intro +manual /man/2/convcs +manual /man/2/draw-example +manual /man/2/filter +manual /man/2/prefab-0intro +manual /man/2/spree +manual /man/2/styx +manual /man/2/styxservers +manual /man/2/tk +manual /man/3/fs +manual /man/3/ip +manual /man/4/factotum +manual /man/4/namespace +manual /man/6/man +manual /man/6/ndb +manual /man/6/utf +manual /man/7/0intro +manual /man/8/0intro +manual /man/9/0intro +manual /man/9/canvas +manual /man/9/menubutton +manual /man/9/options +manual /man/9/text +manual /man/9/types +manufacture /man/1/mux +manufacture /man/8/manufacture +manufacture /man/8/register +manufacture.b /man/8/manufacture +manufacturer /man/3/flash +manufacturer /man/3/i2c +manufacturer /man/3/logfs +manufacturer /man/3/pnp +manufacturer /man/3/sd +manufacturer /man/8/manufacture +manufacturing /man/3/rtc +map /man/1/dd +map /man/1/emu +map /man/1/sh-tk +map /man/1/stack +map /man/10/c2l +map /man/10/kbdputc +map /man/2/asn1 +map /man/2/dbm +map /man/2/debug +map /man/2/dis +map /man/2/draw-0intro +map /man/2/draw-display +map /man/2/imagefile +map /man/2/print +map /man/3/draw +map /man/3/fs +map /man/3/ip +map /man/3/vga +map /man/6/colour +map /man/6/dis +map /man/8/collabsrv +map /man/8/cs +map /man/9/bind +mapped /man/1/tr +mapped /man/10/c2l +mapped /man/10/inb +mapped /man/10/plan9.ini +mapped /man/2/convcs +mapped /man/2/draw-0intro +mapped /man/2/draw-display +mapped /man/2/ip +mapped /man/2/sys-0intro +mapped /man/2/w3c-css +mapped /man/3/pnp +mapped /man/3/tls +mapped /man/6/font +mapped /man/6/image +mapped /man/9/bind +mapping /man/1/cook +mapping /man/1/dd +mapping /man/1/miniterm +mapping /man/2/alphabet-intro +mapping /man/2/convcs +mapping /man/2/draw-0intro +mapping /man/2/spree-cardlib +mapping /man/2/styxservers +mapping /man/3/fs +mapping /man/3/ftl +mapping /man/3/ip +mapping /man/3/logfs +mapping /man/4/kfs +mapping /man/6/colour +mapping /man/6/ndb +mapping /man/6/utf +mappings /man/1/miniterm +maps /man/10/9load +maps /man/2/palmfile +maps /man/2/print +maps /man/3/fs +maps /man/3/ip +maps /man/6/colour +maps /man/6/image +maps /man/8/collabsrv +maps /man/8/touchcal +mapsize /man/6/dis +margin /man/6/man +margin /man/9/text +marginally /man/10/plan9.ini +mark /man/1/acme +mark /man/1/bind +mark /man/1/cprof +mark /man/1/limbo +mark /man/1/wm-misc +mark /man/1/xd +mark /man/10/devattach +mark /man/10/qio +mark /man/2/asn1 +mark /man/2/dhcpclient +mark /man/2/draw-context +mark /man/2/keyring-getmsg +mark /man/2/sexprs +mark /man/2/styxservers +mark /man/2/sys-byte2char +mark /man/2/wmsrv +mark /man/2/xml +mark /man/3/cons +mark /man/3/dbg +mark /man/3/eia +mark /man/3/indir +mark /man/3/pipe +mark /man/3/prog +mark /man/3/touch +mark /man/4/acme +mark /man/8/prep +mark /man/9/0intro +mark /man/9/panel +mark /man/9/text +mark.str /man/2/xml +marker /man/2/asn1 +marker /man/9/menu +markers /man/9/text +marking /man/4/acme +markname /man/9/text +marks /man/1/mash +marks /man/1/sh +marks /man/1/sh-file2chan +marks /man/10/dynld +marks /man/10/qio +marks /man/2/dis +marks /man/2/string +marks /man/2/xml +marks /man/6/keytext +marks /man/6/man +marks /man/8/prep +marks /man/9/scale +marks /man/9/scrollbar +marks /man/9/text +markup /man/1/charon +markup /man/1/man +markup /man/2/xml +maroon /man/9/types +marshal /man/2/format +marshaled /man/4/factotum +marshals /man/1/grid-register +mash /man/1/0intro +mash /man/1/mash +mash /man/1/mash-make +mash /man/1/mash-tk +mash /man/1/wm-sh +mash /man/2/arg +mash /man/2/command +mash.b /man/1/wm-sh +mash.dis /man/1/acme +mash.m /man/1/mash +mashbuiltin /man/1/mash +mashcmd /man/1/mash +mashfile /man/1/mash-make +mashinit /man/1/mash +mask /man/2/dhcpclient +mask /man/2/dis +mask /man/2/draw-example +mask /man/2/draw-image +mask /man/2/ip +mask /man/2/math-fp +mask /man/2/palmfile +mask /man/2/prefab-compound +mask /man/2/prefab-element +mask /man/2/tk +mask /man/3/cons +mask /man/3/draw +mask /man/3/ip +mask /man/6/dis +mask /man/6/ndb +mask /man/8/bootpd +mask /man/8/dhcp +mask /man/8/rdbgsrv +mask /man/8/register +mask /man/8/signer +mask /man/9/image +mask /man/9/panel +mask /man/9/types +maskable /man/10/splhi +masked /man/1/mkdir +masked /man/2/ip +masked /man/4/9srvfs +maskfile /man/9/image +maskid /man/3/draw +masking /man/2/draw-0intro +maskp /man/3/draw +masks /man/10/intrenable +masks /man/2/dis +masks /man/2/draw-display +masks /man/2/draw-image +masks /man/2/ip +masks /man/2/math-fp +masks /man/6/ndb +masktext /man/2/ip +mason /man/6/attrdb +mass /man/1/units +masse /man/1/acme +massey /man/1/idea +master /man/1/blur +master /man/1/mk +master /man/10/9load +master /man/10/mk +master /man/2/disks +master /man/4/keyfs +master /man/8/prep +master /man/9/grid +master /man/9/pack +masters /man/9/grid +masters /man/9/pack +match /man/1/acme +match /man/1/alphabet-fs +match /man/1/auplay +match /man/1/fs +match /man/1/grep +match /man/1/grid-query +match /man/1/look +match /man/1/mash +match /man/1/mash-make +match /man/1/mk +match /man/1/sh-regex +match /man/1/sh-std +match /man/1/wm-sh +match /man/10/dynld +match /man/10/mk +match /man/10/plan9.ini +match /man/2/asn1 +match /man/2/filepat +match /man/2/filter +match /man/2/keyring-0intro +match /man/2/popup +match /man/2/regex +match /man/2/security-0intro +match /man/2/selectfile +match /man/2/spree-allow +match /man/2/stringinttab +match /man/2/sys-print +match /man/2/wmsrv +match /man/3/dynld +match /man/4/factotum +match /man/4/keysrv +match /man/4/registry +match /man/6/plumbing +match /man/6/regexp +match /man/8/applylog +match /man/8/getauthinfo +match /man/8/svc +match /man/9/bind +match /man/9/canvas +match /man/9/grid +match /man/9/text +matched /man/1/acme +matched /man/1/mash +matched /man/1/mash-make +matched /man/1/mk +matched /man/1/sh +matched /man/1/sh-regex +matched /man/10/mk +matched /man/2/keyring-0intro +matched /man/2/keyset +matched /man/2/regex +matched /man/2/registries +matched /man/2/sh +matched /man/2/spree-allow +matched /man/6/regexp +matches /man/1/acme +matches /man/1/alphabet-fs +matches /man/1/fs +matches /man/1/grep +matches /man/1/look +matches /man/1/mash +matches /man/1/mash-make +matches /man/1/mk +matches /man/1/sh +matches /man/1/sh-arg +matches /man/1/sh-regex +matches /man/1/sh-std +matches /man/1/stack +matches /man/10/mk +matches /man/2/cfg +matches /man/2/draw-display +matches /man/2/factotum +matches /man/2/filepat +matches /man/2/prefab-element +matches /man/2/regex +matches /man/2/registries +matches /man/2/spree-allow +matches /man/4/keysrv +matches /man/4/registry +matches /man/6/plumbing +matches /man/6/regexp +matches /man/8/bootpd +matches /man/8/cs +matches /man/9/bind +matches /man/9/text +matching /man/1/acme +matching /man/1/brutus +matching /man/1/cat +matching /man/1/filename +matching /man/1/grep +matching /man/1/man +matching /man/1/mash +matching /man/1/mash-make +matching /man/1/sh +matching /man/1/sh-arg +matching /man/1/sh-regex +matching /man/1/sh-std +matching /man/1/sh-string +matching /man/1/wm-sh +matching /man/10/devattach +matching /man/10/intrenable +matching /man/2/0intro +matching /man/2/cfg +matching /man/2/filepat +matching /man/2/keyset +matching /man/2/spree-allow +matching /man/2/stringinttab +matching /man/2/styx +matching /man/3/ip +matching /man/4/factotum +matching /man/5/0intro +matching /man/8/cs +matching /man/9/canvas +matching /man/9/text +mate /man/8/plumber +math /man/1/cprof +math /man/1/fc +math /man/1/math-misc +math /man/1/mathcalc +math /man/1/mc +math /man/1/mprof +math /man/1/prof +math /man/2/0intro +math /man/2/geodesy +math /man/2/math-0intro +math /man/2/math-elem +math /man/2/math-export +math /man/2/math-fp +math /man/2/math-linalg +math.c /man/2/math-0intro +math.c /man/2/math-elem +math.c /man/2/math-export +math.c /man/2/math-fp +math.c /man/2/math-linalg +math.m /man/2/math-0intro +math.m /man/2/math-elem +math.m /man/2/math-export +math.m /man/2/math-fp +math.m /man/2/math-linalg +mathcalc /man/1/mathcalc +mathcalc.b /man/1/mathcalc +mathematical /man/1/math-misc +mathematical /man/1/mathcalc +mathematical /man/1/unicode +mathematical /man/2/security-0intro +mathematical /man/6/keyboard +mathematics /man/1/mc +mathematics /man/2/math-0intro +mathematics /man/2/math-elem +maths /man/10/c2l +matrices /man/2/math-linalg +matrix /man/2/ida +matrix /man/2/math-linalg +matrix /man/8/touchcal +matte /man/2/draw-display +matte /man/2/draw-image +mattes /man/2/draw-display +max /man/1/mc +max /man/1/wm +max /man/2/draw-0intro +max /man/2/draw-rect +max /man/2/ip +max /man/3/draw +max.add /man/2/draw-rect +max.sub /man/2/draw-rect +max.x /man/2/draw-rect +max.x /man/3/draw +max.y /man/2/draw-rect +max.y /man/3/draw +maxargs /man/10/getfields +maxbits /man/2/keyring-ipint +maxblock /man/2/diskblocks +maxcards /man/2/spree-cardlib +maxdata /man/2/plumbmsg +maxdis /man/2/dis +maxfilesize /man/2/secstore +maximal /man/1/mk +maximal /man/1/tr +maximal /man/1/wc +maximal /man/10/mk +maximal /man/10/print +maximal /man/2/convcs +maximal /man/2/math-linalg +maximal /man/2/string +maximal /man/2/sys-tokenize +maximal /man/3/tls +maximise /man/1/0intro +maximum /man/1/charon +maximum /man/1/emu +maximum /man/1/grid-monitor +maximum /man/1/grid-register +maximum /man/1/mc +maximum /man/1/wm +maximum /man/1/wm-misc +maximum /man/10/odbc +maximum /man/10/plan9.ini +maximum /man/10/print +maximum /man/10/qio +maximum /man/10/rune +maximum /man/2/dhcpclient +maximum /man/2/factotum +maximum /man/2/keyring-0intro +maximum /man/2/math-fp +maximum /man/2/palmfile +maximum /man/2/spree-gather +maximum /man/2/styx +maximum /man/2/sys-fversion +maximum /man/2/sys-iounit +maximum /man/2/sys-print +maximum /man/2/sys-stat +maximum /man/3/env +maximum /man/3/ip +maximum /man/3/mnt +maximum /man/3/pipe +maximum /man/3/sd +maximum /man/3/tls +maximum /man/3/usb +maximum /man/4/dbfs +maximum /man/4/logfile +maximum /man/4/memfs +maximum /man/5/0intro +maximum /man/5/open +maximum /man/5/read +maximum /man/5/stat +maximum /man/5/version +maximum /man/5/walk +maximum /man/6/colour +maximum /man/8/createsignerkey +maximum /man/8/prep +maximum /man/9/canvas +maximun /man/4/factotum +maxmem /man/10/plan9.ini +maxmembers /man/2/spree-gather +maxn /man/2/venti +maxpkt /man/3/usb +maxraint /man/2/ip +maxrpc /man/2/styx +maxsd53c8xx /man/10/plan9.ini +maxsize /man/1/emu +maxsize /man/10/dynld +maxsize /man/2/secstore +maxusers /man/1/grid-monitor +maxusers /man/1/grid-register +maxwelem /man/10/styx +maxwelem /man/2/styx +maxwelem /man/5/walk +maxx /man/1/wm +maxx /man/2/tk +maxx /man/3/mpeg +maxx /man/3/tv +maxx /man/9/panel +maxy /man/1/wm +maxy /man/2/tk +maxy /man/3/mpeg +maxy /man/3/tv +maxy /man/9/panel +maybe /man/1/tktester +mb /man/1/tktester +mbefore /man/2/sys-bind +mbefore /man/6/namespace +mbr /man/10/9load +mbr /man/8/prep +mbrfile /man/8/prep +mbrs /man/10/9load +mbyte /man/10/dmainit +mbyte /man/8/mangaload +mbytes /man/8/mangaload +mc /man/1/mc +mc.b /man/1/mc +mc68000 /man/10/2c +mc68020 /man/10/2c +mc680x0 /man/10/a.out +mcreate /man/2/sys-bind +mcreate /man/3/fs +mcreate /man/6/namespace +md4 /man/2/keyring-0intro +md4 /man/2/keyring-sha1 +md4 /man/3/ssl +md4.c /man/2/keyring-sha1 +md4len /man/2/keyring-sha1 +md5 /man/1/alphabet-main +md5 /man/1/crypt +md5 /man/1/sum +md5 /man/2/keyring-0intro +md5 /man/2/keyring-sha1 +md5 /man/2/security-0intro +md5 /man/2/spki +md5 /man/3/dynld +md5 /man/3/ssl +md5 /man/3/tls +md5 /man/6/keytext +md5 /man/8/applylog +md5 /man/8/srv +md5.c /man/2/keyring-sha1 +md5len /man/2/keyring-sha1 +md5sum /man/1/sum +md5sum.b /man/1/sum +mday /man/2/daytime +mdb /man/1/mdb +mdb.b /man/1/mdb +mean /man/1/date +mean /man/1/grid-ns +mean /man/1/tiny +mean /man/10/print +mean /man/2/daytime +mean /man/2/exception +mean /man/2/sys-print +mean /man/4/logfile +mean /man/5/open +mean /man/5/stat +meaningful /man/1/charon +meaningful /man/1/tktester +meaningful /man/2/wmsrv +meaningless /man/1/acme +meanings /man/10/iar +meanings /man/10ti925/tihost +meant /man/1/cpu +meant /man/6/0intro +meantime /man/2/styxpersist +meanwhile /man/1/pwd +meanwhile /man/10/qio +measure /man/1/sh-string +measure /man/1/time +measure /man/4/iostats +measured /man/1/tail +measured /man/2/disks +measured /man/2/draw-image +measured /man/2/geodesy +measured /man/2/sys-stat +measured /man/2/timers +measured /man/5/stat +measured /man/9/canvas +measured /man/9/text +measurements /man/9/types +measuring /man/2/sys-millisec +mechanism /man/1/tiny +mechanism /man/1/wm +mechanism /man/10/2c +mechanism /man/10/kproc +mechanism /man/10/qio +mechanism /man/10/sleep +mechanism /man/10/styxserver +mechanism /man/2/asn1 +mechanism /man/2/bufio +mechanism /man/2/dividers +mechanism /man/2/prefab-element +mechanism /man/2/sys-open +mechanism /man/2/sys-self +mechanism /man/3/ip +mechanism /man/3/pipe +mechanism /man/3/pnp +mechanism /man/3/prog +mechanism /man/8/register +mechanism /man/8/signer +mechanism /man/9/entry +mechanisms /man/1/tiny +mechanisms /man/10/lock +mechanisms /man/2/0intro +mechanisms /man/2/sys-0intro +mechanisms /man/3/ip +mechanisms /man/3/mnt +mechanisms /man/9/canvas +medblue /man/2/draw-display +medgreen /man/2/draw-display +media /man/10/plan9.ini +media /man/2/scsiio +media /man/2/w3c-css +media /man/3/ip +media /man/3/sd +media /man/5/0intro +mediate /man/2/wmsrv +mediated /man/2/spree +mediates /man/3/pipe +medium /man/10/9load +medium /man/2/spree-objstore +medium /man/2/w3c-css +medium /man/3/ip +medium /man/3/logfs +medium.c /man/3/ip +mediums /man/1/uuencode +meet /man/9/canvas +meet /man/9/grid +meet /man/9/pack +meets /man/9/canvas +megabyte /man/8/httpd +megabytes /man/1/wm-misc +megabytes /man/10/plan9.ini +mem /man/10/acid +mem /man/10/memory +mem /man/10/plan9.ini +mem /man/3/boot +mem /man/3/i82365 +mem.h /man/10/0intro +mem.h /man/10/seconds +member /man/1/acme +member /man/1/chgrp +member /man/1/mk +member /man/1/spree-join +member /man/1/yacc +member /man/10/ar +member /man/10/c2l +member /man/10/mk +member /man/10/styxserver +member /man/2/alphabet-intro +member /man/2/asn1 +member /man/2/bloomfilter +member /man/2/daytime +member /man/2/dis +member /man/2/draw-0intro +member /man/2/draw-display +member /man/2/draw-pointer +member /man/2/format +member /man/2/plumbmsg +member /man/2/prefab-0intro +member /man/2/prefab-compound +member /man/2/prefab-element +member /man/2/sets +member /man/2/spree +member /man/2/spree-allow +member /man/2/spree-cardlib +member /man/2/spree-gather +member /man/2/styx +member /man/2/styxservers +member /man/2/sys-dial +member /man/2/sys-pctl +member /man/2/sys-stat +member /man/2/xml +member /man/3/logfs +member /man/3/plap +member /man/4/spree +member /man/5/0intro +member /man/5/read +member /man/5/stat +member /man/6/dis +member /man/6/regexp +member /man/6/sbl +member /man/6/users +member's /man/2/spree +member's /man/2/spree-allow +member.id /man/2/spree +membername /man/10/mk +membernamed /man/2/spree +membership /man/2/bloomfilter +membership /man/2/prefab-element +membership /man/2/sets +membership /man/4/kfs +memccpy /man/10/memory +memchr /man/10/memory +memcmp /man/10/memory +memcpy /man/10/memory +memfile /man/1/sh-file2chan +memfs /man/4/dbfs +memfs /man/4/memfs +memfs /man/4/ramfile +memfs.b /man/4/memfs +memmove /man/10/memory +memories /man/10/plan9.ini +memories /man/3/tinyfs +memory /man/1/0intro +memory /man/1/charon +memory /man/1/deb +memory /man/1/ebook +memory /man/1/emu +memory /man/1/grid-register +memory /man/1/mprof +memory /man/1/ps +memory /man/1/sh-file2chan +memory /man/1/sort +memory /man/1/wm-misc +memory /man/10/9load +memory /man/10/a.out +memory /man/10/acid +memory /man/10/allocb +memory /man/10/dev +memory /man/10/dmainit +memory /man/10/error +memory /man/10/inb +memory /man/10/malloc +memory /man/10/memory +memory /man/10/newchan +memory /man/10/plan9.ini +memory /man/10/sleep +memory /man/10/strcat +memory /man/10/styxserver +memory /man/10/xalloc +memory /man/2/0intro +memory /man/2/dhcpclient +memory /man/2/dis +memory /man/2/draw-display +memory /man/2/draw-image +memory /man/2/imagefile +memory /man/2/math-0intro +memory /man/2/palmfile +memory /man/2/prof +memory /man/2/secstore +memory /man/2/sys-0intro +memory /man/2/sys-read +memory /man/3/boot +memory /man/3/cons +memory /man/3/dbg +memory /man/3/flash +memory /man/3/ftl +memory /man/3/i82365 +memory /man/3/logfs +memory /man/3/pnp +memory /man/3/prof +memory /man/3/prog +memory /man/3/rtc +memory /man/3/vga +memory /man/4/kfs +memory /man/4/logfile +memory /man/4/memfs +memory /man/4/ramfile +memory /man/6/colour +memory /man/6/dis +memory /man/7/db +memory /man/8/0intro +memory /man/8/ftl +memory /man/8/init +memory /man/8/kfscmd +memory /man/8/rdbgsrv +memory /man/8/register +memory.b /man/1/wm-misc +memset /man/10/memory +memshow /man/2/prof +memsize /man/6/dis +memstart /man/2/prof +memstats /man/2/prof +mention /man/10/2l +mentioned /man/1/sendmail +mentioned /man/1/sh +mentioned /man/10/2l +mentioned /man/10/conf +mentioned /man/10/iar +mentioned /man/2/draw-image +mentioned /man/2/fsproto +mentioned /man/2/styx +mentioned /man/3/srv9 +mentioned /man/4/acme +mentioned /man/6/ndb +menu /man/1/acme +menu /man/1/brutus +menu /man/1/collab-clients +menu /man/1/cprof +menu /man/1/deb +menu /man/1/ebook +menu /man/1/ftree +menu /man/1/mash-tk +menu /man/1/mux +menu /man/1/session +menu /man/1/tktester +menu /man/1/toolbar +menu /man/1/wm-misc +menu /man/1/wm-sh +menu /man/10/9load +menu /man/10/plan9.ini +menu /man/2/draw-0intro +menu /man/2/ir +menu /man/2/popup +menu /man/2/prefab-element +menu /man/2/spree-cardlib +menu /man/2/tk +menu /man/9/0intro +menu /man/9/choicebutton +menu /man/9/menu +menu /man/9/menubutton +menu /man/9/options +menu's /man/9/menu +menubutton /man/1/tktester +menubutton /man/9/0intro +menubutton /man/9/menubutton +menubutton's /man/9/menubutton +menubuttons /man/9/menubutton +menuconsole /man/10/plan9.ini +menudefault /man/10/plan9.ini +menuentry /man/2/spree-cardlib +menuitem /man/10/plan9.ini +menus /man/1/deb +menus /man/1/mash-tk +menus /man/1/tktester +menus /man/1/wm-misc +menus /man/2/prefab-element +menus /man/2/wmsrv +menus /man/6/translate +menus /man/9/menu +mercator /man/2/geodesy +merchantability /man/9/1copyright +merely /man/2/spree +merge /man/1/alphabet-fs +merge /man/1/fs +merge /man/1/sh-string +merge /man/9/grid +merged /man/1/os +merged /man/2/spree +merged /man/3/cmd +merging /man/1/alphabet-fs +merging /man/1/fs +mersenne /man/1/math-misc +mersenne.b /man/1/math-misc +mesg /man/1/mash-tk +mess /man/9/bind +message /man/1/bind +message /man/1/fc +message /man/1/kill +message /man/1/listen +message /man/1/mash-tk +message /man/1/plumb +message /man/1/sendmail +message /man/1/sh +message /man/1/sh-arg +message /man/1/sh-file2chan +message /man/1/sh-std +message /man/1/sh-test +message /man/1/sum +message /man/1/tiny +message /man/1/uuencode +message /man/1/wm +message /man/10/error +message /man/10/lock +message /man/10/odbc +message /man/10/panic +message /man/10/print +message /man/10/qio +message /man/10/styx +message /man/10/styxserver +message /man/2/arg +message /man/2/debug +message /man/2/dhcpclient +message /man/2/dialog +message /man/2/factotum +message /man/2/filter +message /man/2/filter-deflate +message /man/2/filter-slip +message /man/2/ida +message /man/2/itslib +message /man/2/keyring-0intro +message /man/2/keyring-auth +message /man/2/keyring-getmsg +message /man/2/keyring-sha1 +message /man/2/plumbmsg +message /man/2/pop3 +message /man/2/prof +message /man/2/security-0intro +message /man/2/security-auth +message /man/2/sh +message /man/2/smtp +message /man/2/spree +message /man/2/styx +message /man/2/styxconv +message /man/2/styxservers +message /man/2/sys-0intro +message /man/2/sys-file2chan +message /man/2/sys-fversion +message /man/2/sys-open +message /man/2/sys-pctl +message /man/2/timers +message /man/2/wait +message /man/2/wmsrv +message /man/3/dbg +message /man/3/draw +message /man/3/ds +message /man/3/ftl +message /man/3/gpio +message /man/3/ip +message /man/3/kprof +message /man/3/mnt +message /man/3/prog +message /man/3/ssl +message /man/3/tls +message /man/3/usb +message /man/3/vga +message /man/4/acme +message /man/4/factotum +message /man/4/import +message /man/4/iostats +message /man/4/palmsrv +message /man/4/spree +message /man/5/0intro +message /man/5/attach +message /man/5/clunk +message /man/5/error +message /man/5/flush +message /man/5/open +message /man/5/read +message /man/5/stat +message /man/5/version +message /man/5/walk +message /man/6/image +message /man/6/login +message /man/6/plumbing +message /man/7/db +message /man/8/bootpd +message /man/8/collabsrv +message /man/8/ping +message /man/8/plumber +message /man/8/prep +message /man/8/rdbgsrv +message /man/8/styxchat +message /man/9/send +message's /man/2/keyring-getmsg +message's /man/8/plumber +messages /man/1/brutus +messages /man/1/collab-clients +messages /man/1/grid-monitor +messages /man/1/grid-register +messages /man/1/itest +messages /man/1/limbo +messages /man/1/listen +messages /man/1/sendmail +messages /man/1/sh +messages /man/1/sh-alphabet +messages /man/1/sh-test +messages /man/1/tktester +messages /man/1/wm +messages /man/1/wm-misc +messages /man/1/yacc +messages /man/10/2c +messages /man/10/c2l +messages /man/10/error +messages /man/10/kproc +messages /man/10/plan9.ini +messages /man/10/styx +messages /man/2/devpointer +messages /man/2/disks +messages /man/2/draw-context +messages /man/2/factotum +messages /man/2/filter +messages /man/2/filter-slip +messages /man/2/itslib +messages /man/2/keyring-0intro +messages /man/2/keyring-getmsg +messages /man/2/keyring-getstring +messages /man/2/plumbmsg +messages /man/2/pop3 +messages /man/2/scsiio +messages /man/2/security-0intro +messages /man/2/smtp +messages /man/2/spree +messages /man/2/styx +messages /man/2/styxconv +messages /man/2/styxservers +messages /man/2/sys-bind +messages /man/2/sys-dial +messages /man/2/sys-file2chan +messages /man/2/sys-pipe +messages /man/2/tabs +messages /man/2/tkclient +messages /man/2/translate +messages /man/2/wmclient +messages /man/3/0intro +messages /man/3/cons +messages /man/3/dbg +messages /man/3/draw +messages /man/3/ds +messages /man/3/floppy +messages /man/3/ftl +messages /man/3/i2c +messages /man/3/ip +messages /man/3/logfs +messages /man/3/mnt +messages /man/3/plap +messages /man/3/prof +messages /man/3/prog +messages /man/3/srv +messages /man/3/ssl +messages /man/3/tls +messages /man/4/acme +messages /man/4/dossrv +messages /man/4/factotum +messages /man/4/ftpfs +messages /man/4/iostats +messages /man/4/spree +messages /man/5/0intro +messages /man/5/attach +messages /man/5/error +messages /man/5/flush +messages /man/5/open +messages /man/5/read +messages /man/5/remove +messages /man/5/stat +messages /man/5/version +messages /man/5/walk +messages /man/6/plumbing +messages /man/8/collabsrv +messages /man/8/dhcp +messages /man/8/ping +messages /man/8/plumber +messages /man/8/rdbgsrv +messages /man/8/styxchat +messages /man/8/styxmon +messages /man/9/send +messagesize /man/8/styxchat +messaging /man/8/collabsrv +meta /man/1/mash +meta /man/1/mk +meta /man/10/mk +meta /man/2/sys-dial +meta /man/6/keyboard +metacharacter /man/6/regexp +metacharacters /man/1/fc +metacharacters /man/1/sh-expr +metacharacters /man/1/sh-regex +metacharacters /man/6/regexp +metadata /man/8/applylog +metaprotocol /man/4/factotum +meth /man/8/httpd +method /man/1/deb +method /man/1/diff +method /man/1/fs +method /man/10/0intro +method /man/10/5cv +method /man/2/bloomfilter +method /man/2/bufio +method /man/2/draw-font +method /man/2/registries +method /man/2/security-0intro +method /man/3/draw +method /man/3/prog +method /man/8/httpd +methods /man/2/draw-image +methods /man/2/registries +methods /man/2/security-0intro +methods /man/2/styxservers +methods /man/2/wmsrv +methods /man/2/xml +methods /man/8/httpd +metre /man/2/geodesy +metres /man/2/geodesy +metric /man/1/units +mfd /man/2/itslib +mflag /man/2/ip +mg /man/1/sh-regex +mga2164w /man/3/vga +mga2164whwgc /man/3/vga +mga4xx /man/10/plan9.ini +mhz /man/3/fpga +mhz /man/3/tv +mhz /man/8/fpgaload +mib /man/3/ip +mib510 /man/1/avr +mic /man/3/audio +mice /man/2/draw-0intro +microdelay /man/10/delay +micron /man/6/keyboard +microseconds /man/1/date +microseconds /man/10/delay +microseconds /man/2/daytime +microseconds /man/3/cons +microseconds /man/3/kprof +microseconds /man/3/rtc +microseconds /man/3/touch +microsoft /man/3/ip +microsoft /man/6/scancode +microsoft /man/7/dbsrv +microsystems /man/9/0intro +microsystems /man/9/1copyright +mid /man/2/dis +middle /man/2/dis +middle /man/2/prefab-element +middle /man/2/security-0intro +middle /man/3/cons +middle /man/6/dis +middle /man/9/canvas +middle /man/9/entry +middle /man/9/listbox +middle /man/9/scrollbar +middle /man/9/text +mii /man/10/plan9.ini +millimetres /man/9/types +millisec /man/1/time +millisec /man/2/daytime +millisec /man/2/sys-millisec +millisec /man/2/sys-sleep +millisec /man/2/timers +millisecond /man/10/delay +millisecond /man/2/sys-millisec +millisecond /man/3/cons +milliseconds /man/1/timestamp +milliseconds /man/10/delay +milliseconds /man/10/kprof +milliseconds /man/10/malloc +milliseconds /man/10/seconds +milliseconds /man/2/sys-millisec +milliseconds /man/2/sys-sleep +milliseconds /man/2/timers +milliseconds /man/3/cmd +milliseconds /man/3/cons +milliseconds /man/3/eia +milliseconds /man/3/ip +milliseconds /man/3/pointer +milliseconds /man/3/touch +milliseconds /man/8/ping +millliseconds /man/10/sleep +mime /man/1/charon +mime /man/2/encoding +mime /man/2/keyring-0intro +mime /man/6/sexprs +mimic /man/1/ebook +mimic /man/2/sys-werrstr +mimicked /man/1/tiny +mimics /man/1/miniterm +min /man/1/mc +min /man/2/daytime +min /man/2/draw-0intro +min /man/2/draw-image +min /man/2/draw-rect +min /man/2/ip +min /man/3/draw +min.add /man/2/draw-rect +min.sub /man/2/draw-rect +min.x /man/2/draw-rect +min.x /man/3/draw +min.y /man/2/draw-rect +min.y /man/3/draw +minbits /man/2/keyring-ipint +minded /man/1/wm-misc +mindx /man/2/wmclient +mindy /man/2/wmclient +mine /man/1/wm-misc +mingled /man/3/cmd +mini /man/1/ebook +miniaturise /man/1/sh-tk +minimal /man/4/kfs +minimal /man/4/namespace +minimal /man/8/dns +minimal /man/8/srv +minimise /man/4/dbfs +minimum /man/1/emu +minimum /man/1/math-misc +minimum /man/10/plan9.ini +minimum /man/10/print +minimum /man/2/dhcpclient +minimum /man/2/ida +minimum /man/2/math-fp +minimum /man/2/sys-print +minimum /man/2/timers +minimum /man/2/wmclient +minimum /man/3/ds +minimum /man/3/ip +minimum /man/3/logfs +minimum /man/4/cpu +minimum /man/6/font +minimum /man/8/createsignerkey +minimum /man/8/ping +minimum /man/9/grid +miniscule /man/3/tinyfs +minitel /man/1/miniterm +minitel® /man/1/miniterm +miniterm /man/1/miniterm +minms /man/2/timers +minraint /man/2/ip +minsize /man/9/grid +minus /man/1/cprof +minus /man/1/fc +minus /man/1/look +minus /man/1/sh-arg +minus /man/1/sh-expr +minus /man/1/sort +minus /man/10/styx +minus /man/2/alphabet-intro +minus /man/2/arg +minus /man/6/sbl +minus /man/9/pack +minus /man/9/types +minutes /man/2/daytime +minutes /man/2/geodesy +minutes /man/3/prog +minutes /man/3/vga +minutes /man/5/stat +minx /man/1/wm +minx /man/2/tk +minx /man/3/mpeg +minx /man/3/tv +minx /man/9/panel +minx..maxy /man/1/wm +miny /man/1/wm +miny /man/2/tk +miny /man/3/mpeg +miny /man/3/tv +miny /man/9/panel +mips /man/10/2c +mips /man/10/2l +mips /man/10/a.out +mips /man/10/acid +mipsco /man/10/acid +mirror /man/2/wmsrv +mirror /man/3/ds +mirrored /man/3/ds +mirroring /man/2/format +mirroring /man/3/ds +misbehaving /man/2/wmsrv +misc /man/1/emu +misc /man/1/math-misc +misc /man/1/ps +misc /man/1/wm-misc +misc /man/10/conf +misc /man/2/dis +misc /man/3/sign +miscellaneous /man/1/mash-tk +miscellaneous /man/1/math-misc +miscellaneous /man/1/sh-std +miscellaneous /man/1/unicode +miscellaneous /man/1/wm-misc +miscellaneous /man/3/cons +miscellany /man/1/acme +mishandled /man/3/draw +misleading /man/8/rip +mismatch /man/10/2c +mismatches /man/2/sys-stat +missing /man/1/acme +missing /man/1/look +missing /man/1/mk +missing /man/1/mkdir +missing /man/1/tiny +missing /man/1/yacc +missing /man/10/iar +missing /man/10/mk +missing /man/10/print +missing /man/2/sys-print +missing /man/2/w3c-css +missing /man/3/ip +missing /man/3/logfs +missing /man/4/factotum +missing /man/4/logfile +missing /man/6/sbl +missing /man/6/translate +missing /man/8/bootpd +missing /man/8/mkfs +mistakes /man/8/prep +mix /man/2/draw-display +mix /man/3/audio +mixed /man/1/tr +mixed /man/2/asn1 +mixed /man/2/keyring-0intro +mixing /man/2/draw-display +mixture /man/2/sexprs +mk /man/1/disdep +mk /man/1/limbo +mk /man/1/mk +mk /man/10/2c +mk /man/10/acid +mk /man/10/conf +mk /man/10/mk +mk /man/2/draw-display +mk /man/4/namespace +mk's /man/1/mk +mk's /man/10/mk +mk48t12 /man/3/rtc +mkargs /man/1/mk +mkargs /man/10/mk +mkbutton /man/2/popup +mkdevc /man/10/conf +mkdevlist /man/10/conf +mkdictname /man/2/translate +mkdir /man/1/mkdir +mkdir /man/4/ftpfs +mkdir /man/4/kfs +mkdir.b /man/1/mkdir +mkext /man/8/mkfs +mkext.b /man/8/mkfs +mkfile /man/1/mk +mkfile /man/10/2c +mkfile /man/10/conf +mkfile /man/10/mk +mkfile /man/10/styxserver +mkfilekey /man/2/secstore +mkfiles /man/1/mk +mkfiles /man/10/2c +mkfiles /man/10/mk +mkflags /man/1/mk +mkflags /man/10/mk +mkfs /man/1/alphabet-fs +mkfs /man/1/fs +mkfs /man/2/fsproto +mkfs /man/4/archfs +mkfs /man/4/kfs +mkfs /man/6/proto +mkfs /man/8/kfscmd +mkfs /man/8/mkfs +mkfs.b /man/8/mkfs +mklist /man/1/sh-sexprs +mkppcimage /man/10/5cv +mkroot /man/10/conf +mkseckey /man/2/secstore +mktabs /man/2/tabs +mktext /man/1/sh-sexprs +mktextlist /man/1/sh-sexprs +mm /man/2/spki +mmu /man/10/dev +mnemonic /man/6/keyboard +mnt /man/1/calendar +mnt /man/1/listen +mnt /man/1/passwd +mnt /man/1/secstore +mnt /man/10/newchan +mnt /man/2/factotum +mnt /man/2/registries +mnt /man/2/sys-bind +mnt /man/3/mnt +mnt /man/3/pipe +mnt /man/3/srv9 +mnt /man/4/acme +mnt /man/4/archfs +mnt /man/4/factotum +mnt /man/4/import +mnt /man/4/keyfs +mnt /man/4/keysrv +mnt /man/4/mntgen +mnt /man/4/namespace +mnt /man/4/registry +mnt /man/5/0intro +mnt /man/8/changelogin +mnt /man/8/svc +mntdir /man/1/calendar +mntdir /man/1/spree-join +mntgen /man/4/mntgen +mntgen.b /man/4/mntgen +mntpt /man/4/registry +mntpt /man/8/rip +mod /man/10/ar +mod /man/10/conf +mod /man/10/xalloc +mod /man/2/0intro +mod /man/2/dis +mod /man/2/draw-image +mod /man/2/keyring-auth +mod /man/2/keyring-ipint +mod /man/2/sh +mod /man/2/spree +mod /man/2/w3c-xpointers +mod /man/6/auth +mod /man/6/image +mod /man/6/login +mod.b /man/1/limbo +mod.code /man/2/dis +mod.dis /man/1/limbo +mod.types /man/2/dis +mode /man/1/9win +mode /man/1/alphabet-fs +mode /man/1/chmod +mode /man/1/cp +mode /man/1/crypt +mode /man/1/fs +mode /man/1/itest +mode /man/1/ls +mode /man/1/miniterm +mode /man/1/sh-tk +mode /man/1/tkcmd +mode /man/1/uuencode +mode /man/1/wm-sh +mode /man/10/9load +mode /man/10/ar +mode /man/10/dev +mode /man/10/devattach +mode /man/10/iar +mode /man/10/newchan +mode /man/10/odbc +mode /man/10/plan9.ini +mode /man/10/qio +mode /man/10/styx +mode /man/10/styxserver +mode /man/10ti925/tihost +mode /man/2/bufio +mode /man/2/convcs +mode /man/2/dbm +mode /man/2/dis +mode /man/2/disks +mode /man/2/filter-deflate +mode /man/2/math-0intro +mode /man/2/math-fp +mode /man/2/palmfile +mode /man/2/print +mode /man/2/styx +mode /man/2/styxservers +mode /man/2/sys-open +mode /man/2/sys-stat +mode /man/3/audio +mode /man/3/cons +mode /man/3/dup +mode /man/3/eia +mode /man/3/fpga +mode /man/3/i2c +mode /man/3/ip +mode /man/3/logfs +mode /man/3/mpeg +mode /man/3/prog +mode /man/3/srv +mode /man/3/srv9 +mode /man/3/ssl +mode /man/3/tv +mode /man/3/usb +mode /man/3/vga +mode /man/3/vid +mode /man/4/9srvfs +mode /man/4/ftpfs +mode /man/5/0intro +mode /man/5/open +mode /man/5/stat +mode /man/6/dis +mode /man/6/keyboard +mode /man/6/keys +mode /man/8/applylog +mode /man/8/createsignerkey +mode /man/8/init +mode /man/8/kfscmd +mode /man/8/prep +mode /man/8/styxchat +mode /man/9/listbox +mode /man/9/text +model /man/1/charon +model /man/2/ir +model /man/2/prefab-element +model /man/3/sd +models /man/10/plan9.ini +models /man/3/ip +modem /man/1/miniterm +modem /man/10/plan9.ini +modem /man/3/eia +modem /man/3/ip +modem /man/3/plap +modemctl /man/1/miniterm +modeminit /man/1/miniterm +modemport /man/10/plan9.ini +modern /man/2/disks +modern /man/3/logfs +modes /man/1/alphabet-fs +modes /man/1/chmod +modes /man/1/fs +modes /man/1/uuencode +modes /man/2/dis +modes /man/2/math-fp +modes /man/2/print +modes /man/2/styxservers +modes /man/6/dis +modes /man/9/listbox +modes /man/9/text +modf /man/2/math-fp +modification /man/1/alphabet-fs +modification /man/1/bind +modification /man/1/du +modification /man/1/fs +modification /man/1/gettar +modification /man/1/ls +modification /man/1/mash-make +modification /man/1/mdb +modification /man/1/mk +modification /man/1/tktester +modification /man/1/touch +modification /man/10/ar +modification /man/10/devattach +modification /man/10/iar +modification /man/10/mk +modification /man/10ti925/tihost +modification /man/2/daytime +modification /man/2/filter-deflate +modification /man/2/palmfile +modification /man/2/readdir +modification /man/2/sys-bind +modification /man/3/pointer +modification /man/4/acme +modification /man/4/kfs +modification /man/5/0intro +modification /man/5/stat +modification /man/6/namespace +modification /man/6/ndb +modification /man/8/mkfs +modifications /man/1/tiny +modifications /man/9/1copyright +modifications /man/9/entry +modifications /man/9/text +modified /man/1/acme +modified /man/1/alphabet-fs +modified /man/1/charon +modified /man/1/cp +modified /man/1/du +modified /man/1/fs +modified /man/1/ls +modified /man/1/mk +modified /man/1/tktester +modified /man/10/acid +modified /man/10/devattach +modified /man/10/iar +modified /man/10/mk +modified /man/10/parsecmd +modified /man/2/draw-image +modified /man/2/palmfile +modified /man/2/prefab-element +modified /man/2/readdir +modified /man/2/spree-cardlib +modified /man/2/sys-0intro +modified /man/2/sys-stat +modified /man/4/acme +modified /man/5/0intro +modified /man/5/stat +modified /man/8/changelogin +modified /man/8/prep +modified /man/8/rstyxd +modified /man/9/checkbutton +modified /man/9/menu +modified /man/9/radiobutton +modified /man/9/text +modifier /man/10/devattach +modifier /man/2/sys-stat +modifier /man/9/text +modifiers /man/10/iar +modifiers /man/9/text +modifies /man/2/command +modifies /man/9/button +modifies /man/9/canvas +modifies /man/9/checkbutton +modifies /man/9/choicebutton +modifies /man/9/entry +modifies /man/9/frame +modifies /man/9/label +modifies /man/9/listbox +modifies /man/9/menu +modifies /man/9/menubutton +modifies /man/9/panel +modifies /man/9/radiobutton +modifies /man/9/scale +modifies /man/9/scrollbar +modifies /man/9/text +modify /man/1/bind +modify /man/1/charon +modify /man/1/mk +modify /man/1/tiny +modify /man/1/tktester +modify /man/1/wm +modify /man/10/mk +modify /man/10/qlock +modify /man/2/prefab-0intro +modify /man/2/prefab-style +modify /man/2/security-0intro +modify /man/2/sys-bind +modify /man/2/sys-stat +modify /man/2/wmsrv +modify /man/4/cpu +modify /man/5/0intro +modify /man/9/1copyright +modify /man/9/button +modify /man/9/canvas +modify /man/9/checkbutton +modify /man/9/choicebutton +modify /man/9/entry +modify /man/9/frame +modify /man/9/label +modify /man/9/listbox +modify /man/9/menu +modify /man/9/menubutton +modify /man/9/panel +modify /man/9/radiobutton +modify /man/9/scale +modify /man/9/scrollbar +modify /man/9/text +modifying /man/1/mk +modifying /man/10/mk +modifying /man/2/secstore +modifying /man/5/stat +modifying /man/8/prep +modifying /man/9/canvas +modifying /man/9/checkbutton +modifying /man/9/text +modname /man/1/cprof +modname /man/1/mprof +modname /man/1/prof +modname /man/1/yacc +modno /man/2/palmfile +modprof /man/2/prof +mods /man/2/prof +modular /man/1/0intro +modular /man/2/keyring-0intro +module /man/1/0intro +module /man/1/acme +module /man/1/cprof +module /man/1/deb +module /man/1/emu +module /man/1/kill +module /man/1/limbo +module /man/1/mash +module /man/1/mash-make +module /man/1/mathcalc +module /man/1/mprof +module /man/1/mux +module /man/1/prof +module /man/1/ps +module /man/1/sendmail +module /man/1/sh +module /man/1/sh-alphabet +module /man/1/sh-arg +module /man/1/sh-csv +module /man/1/sh-expr +module /man/1/sh-file2chan +module /man/1/sh-regex +module /man/1/sh-sexprs +module /man/1/sh-std +module /man/1/sh-string +module /man/1/sh-test +module /man/1/sh-tk +module /man/1/spree-join +module /man/1/stack +module /man/1/tiny +module /man/1/wm-misc +module /man/1/yacc +module /man/10/c2l +module /man/10/conf +module /man/10/dynld +module /man/2/0intro +module /man/2/alphabet-intro +module /man/2/arg +module /man/2/asn1 +module /man/2/attrdb +module /man/2/bloomfilter +module /man/2/bufio +module /man/2/cfg +module /man/2/command +module /man/2/convcs +module /man/2/crc +module /man/2/dbm +module /man/2/debug +module /man/2/dhcpclient +module /man/2/dialog +module /man/2/dis +module /man/2/diskblocks +module /man/2/disks +module /man/2/draw-0intro +module /man/2/draw-context +module /man/2/draw-display +module /man/2/draw-example +module /man/2/env +module /man/2/ether +module /man/2/exception +module /man/2/filter +module /man/2/filter-deflate +module /man/2/filter-slip +module /man/2/fsproto +module /man/2/geodesy +module /man/2/hash +module /man/2/ida +module /man/2/imagefile +module /man/2/ip +module /man/2/ir +module /man/2/itslib +module /man/2/keyring-0intro +module /man/2/keyset +module /man/2/math-0intro +module /man/2/palmfile +module /man/2/plumbmsg +module /man/2/popup +module /man/2/prefab-0intro +module /man/2/prefab-element +module /man/2/print +module /man/2/prof +module /man/2/pslib +module /man/2/regex +module /man/2/registries +module /man/2/scsiio +module /man/2/secstore +module /man/2/security-0intro +module /man/2/security-login +module /man/2/sets +module /man/2/sexprs +module /man/2/sh +module /man/2/spki +module /man/2/spki-verifier +module /man/2/spree +module /man/2/spree-allow +module /man/2/spree-cardlib +module /man/2/spree-gather +module /man/2/spree-objstore +module /man/2/srv +module /man/2/stringinttab +module /man/2/styx +module /man/2/styxconv +module /man/2/styxservers +module /man/2/styxservers-nametree +module /man/2/sys-0intro +module /man/2/sys-dup +module /man/2/sys-self +module /man/2/sys-werrstr +module /man/2/tftp +module /man/2/timers +module /man/2/tk +module /man/2/tkclient +module /man/2/translate +module /man/2/ubfa +module /man/2/venti +module /man/2/w3c-css +module /man/2/w3c-xpointers +module /man/2/wait +module /man/2/wmclient +module /man/2/wmsrv +module /man/2/xml +module /man/3/draw +module /man/3/dynld +module /man/3/prof +module /man/3/prog +module /man/3/sign +module /man/4/cpu +module /man/4/factotum +module /man/4/namespace +module /man/5/0intro +module /man/6/dis +module /man/6/keyboard +module /man/6/plumbing +module /man/6/sbl +module /man/6/sexprs +module /man/7/db +module /man/7/dbsrv +module /man/8/httpd +module /man/8/init +module /man/8/logind +module /man/8/srv +module /man/9/0intro +module's /man/1/mash +module's /man/1/sh-tk +module's /man/1/tiny +module's /man/1/wm-misc +module's /man/1/yacc +module's /man/10/dynld +module's /man/2/0intro +module's /man/2/alphabet-intro +module's /man/2/bufio +module's /man/2/dis +module's /man/2/disks +module's /man/2/prefab-0intro +module's /man/2/prof +module's /man/2/secstore +module's /man/2/selectfile +module's /man/2/spree-allow +module's /man/2/srv +module's /man/2/styxservers-nametree +module's /man/2/sys-self +module's /man/3/dynld +module's /man/6/dis +module's /man/6/sbl +modules /man/1/0intro +modules /man/1/alphabet-abc +modules /man/1/alphabet-fs +modules /man/1/alphabet-grid +modules /man/1/alphabet-main +modules /man/1/cprof +modules /man/1/deb +modules /man/1/disdep +modules /man/1/limbo +modules /man/1/mash +modules /man/1/mprof +modules /man/1/prof +modules /man/1/sh +modules /man/1/sh-alphabet +modules /man/10/2c +modules /man/10/acid +modules /man/10/c2l +modules /man/10/conf +modules /man/10/dynld +modules /man/2/0intro +modules /man/2/alphabet-intro +modules /man/2/convcs +modules /man/2/filter-deflate +modules /man/2/imagefile +modules /man/2/ir +modules /man/2/math-fp +modules /man/2/print +modules /man/2/prof +modules /man/2/sh +modules /man/2/spree +modules /man/2/sys-self +modules /man/2/wmlib +modules /man/3/dynld +modules /man/3/prof +modules /man/3/sign +modules /man/4/namespace +modules /man/6/dis +modules /man/7/0intro +modules /man/8/collabsrv +modulo /man/10/9load +modulo /man/9/canvas +modulus /man/1/mdb +modulus /man/1/sh-expr +modulus /man/2/keyring-0intro +modulus /man/2/keyring-gensk +modulus /man/2/math-fp +modulus /man/2/rand +modulus /man/6/auth +modulus /man/6/login +mole /man/1/units +momentarily /man/2/wmsrv +mon /man/2/daytime +monitor /man/1/grid-monitor +monitor /man/1/grid-ns +monitor /man/1/grid-register +monitor /man/10/plan9.ini +monitor /man/2/dbm +monitor /man/2/wait +monitor /man/3/dbg +monitor /man/4/cpu +monitor /man/4/iostats +monitor /man/8/dhcp +monitor /man/8/mangaload +monitor /man/8/rdbgsrv +monitor /man/8/styxmon +monitor.b /man/1/grid-monitor +monitor.b /man/1/session +monitoring /man/8/styxmon +monitors /man/3/vga +monitors /man/9/radiobutton +mono /man/1/auplay +mono /man/3/audio +mono /man/6/audio +monochrome /man/3/tv +monochrome /man/9/options +monotone /man/2/imagefile +monotonically /man/10/plan9.ini +monotonically /man/8/applylog +month /man/1/cal +month /man/2/daytime +month /man/8/changelogin +months /man/1/cal +months /man/2/daytime +months /man/2/sys-millisec +moreover /man/10/a.out +moreover /man/2/dbm +moreover /man/2/prefab-0intro +moreover /man/2/prefab-compound +moreover /man/8/changelogin +moreover /man/9/0intro +moribund /man/3/dbg +mostek /man/3/rtc +mostly /man/3/cons +mostly /man/3/root +motherboard /man/10/plan9.ini +motion /man/1/acme +motion /man/1/emu +motion /man/2/math-0intro +motion /man/9/bind +motion /man/9/canvas +motion /man/9/grab +motion /man/9/text +motions /man/9/grab +motions /man/9/text +motorola /man/1/avr +motorola /man/10/2c +motorola /man/10/ms2 +motorola /man/3/touch +motorola /man/3/vid +mount /man/1/0intro +mount /man/1/acme +mount /man/1/alphabet-main +mount /man/1/bind +mount /man/1/collab-clients +mount /man/1/grid-query +mount /man/1/listen +mount /man/1/ns +mount /man/1/nsbuild +mount /man/1/passwd +mount /man/1/session +mount /man/1/sh-std +mount /man/1/wm-sh +mount /man/10/devattach +mount /man/10/newchan +mount /man/10/odbc +mount /man/10/styxserver +mount /man/2/alphabet-intro +mount /man/2/factotum +mount /man/2/readdir +mount /man/2/security-auth +mount /man/2/styxconv +mount /man/2/styxpersist +mount /man/2/sys-0intro +mount /man/2/sys-bind +mount /man/2/sys-export +mount /man/2/sys-fauth +mount /man/2/sys-fversion +mount /man/2/sys-pipe +mount /man/3/logfs +mount /man/3/mnt +mount /man/3/prog +mount /man/3/root +mount /man/3/srv9 +mount /man/3/tinyfs +mount /man/4/9srvfs +mount /man/4/acme +mount /man/4/archfs +mount /man/4/cpu +mount /man/4/factotum +mount /man/4/ftpfs +mount /man/4/import +mount /man/4/keysrv +mount /man/4/kfs +mount /man/4/lockfs +mount /man/4/memfs +mount /man/4/mntgen +mount /man/4/namespace +mount /man/4/ramfile +mount /man/4/registry +mount /man/4/spree +mount /man/4/tarfs +mount /man/5/0intro +mount /man/5/attach +mount /man/5/version +mount /man/5/walk +mount /man/6/namespace +mount /man/8/collabsrv +mount /man/8/cs +mount /man/8/dhcp +mount /man/8/dns +mount /man/8/getauthinfo +mount /man/8/mkfs +mount /man/8/rdbgsrv +mount /man/8/rstyxd +mount /man/8/styxmon +mount.b /man/1/bind +mount.b /man/2/security-auth +mounted /man/1/0intro +mounted /man/1/bind +mounted /man/1/calendar +mounted /man/1/ls +mounted /man/1/spree-join +mounted /man/10/9load +mounted /man/10/newchan +mounted /man/2/draw-display +mounted /man/2/sys-bind +mounted /man/2/sys-export +mounted /man/3/kprof +mounted /man/3/logfs +mounted /man/3/pipe +mounted /man/3/srv9 +mounted /man/4/0intro +mounted /man/4/9srvfs +mounted /man/4/acme +mounted /man/4/archfs +mounted /man/4/dbfs +mounted /man/4/kfs +mounted /man/4/lockfs +mounted /man/4/mntgen +mounted /man/4/namespace +mounted /man/4/registry +mounted /man/4/spree +mounted /man/6/namespace +mounted /man/8/applylog +mounted /man/8/changelogin +mounted /man/8/mkfs +mounting /man/1/collab +mounting /man/10/plan9.ini +mounting /man/2/factotum +mounting /man/2/sys-bind +mounting /man/3/mnt +mounting /man/8/init +mountpoint /man/1/os +mountpoint /man/4/archfs +mountpoint /man/4/dbfs +mountpoint /man/4/dossrv +mountpoint /man/4/ftpfs +mountpoint /man/4/keyfs +mountpoint /man/4/lockfs +mountpoint /man/4/memfs +mountpoint /man/8/rdbgsrv +mountpt /man/4/tarfs +mounts /man/1/alphabet-main +mounts /man/1/collab +mounts /man/1/ns +mounts /man/10/kproc +mounts /man/10/odbc +mounts /man/10/styxserver +mounts /man/2/sys-export +mounts /man/3/cmd +mounts /man/4/archfs +mounts /man/4/iostats +mounts /man/4/keysrv +mounts /man/4/memfs +mounts /man/8/rdbgsrv +mounts /man/8/rstyxd +mouse /man/1/0intro +mouse /man/1/9win +mouse /man/1/acme +mouse /man/1/brutus +mouse /man/1/charon +mouse /man/1/collab-clients +mouse /man/1/emu +mouse /man/1/keyboard +mouse /man/1/logon +mouse /man/1/mash-tk +mouse /man/1/miniterm +mouse /man/1/session +mouse /man/1/tktester +mouse /man/1/wm-misc +mouse /man/1/wm-sh +mouse /man/10/plan9.ini +mouse /man/2/draw-context +mouse /man/2/draw-display +mouse /man/2/draw-pointer +mouse /man/2/prefab-0intro +mouse /man/2/tk +mouse /man/2/wmclient +mouse /man/3/cons +mouse /man/3/pointer +mouse /man/3/touch +mouse /man/3/vga +mouse /man/4/acme +mouse /man/9/bind +mouse /man/9/button +mouse /man/9/canvas +mouse /man/9/checkbutton +mouse /man/9/choicebutton +mouse /man/9/cursor +mouse /man/9/entry +mouse /man/9/grab +mouse /man/9/listbox +mouse /man/9/menu +mouse /man/9/menubutton +mouse /man/9/options +mouse /man/9/radiobutton +mouse /man/9/scale +mouse /man/9/scrollbar +mouse /man/9/text +mouse /man/9/update +mouseport /man/10/plan9.ini +move /man/1/acme +move /man/1/cprof +move /man/1/ebook +move /man/1/ftree +move /man/1/mv +move /man/1/sh-tk +move /man/1/tktester +move /man/1/wm +move /man/1/wm-misc +move /man/10/iar +move /man/2/draw-image +move /man/2/prefab-element +move /man/2/tkclient +move /man/2/wmclient +move /man/3/cons +move /man/6/man +move /man/9/canvas +move /man/9/entry +move /man/9/scrollbar +move /man/9/text +moved /man/1/acme +moved /man/1/mv +moved /man/1/tktester +moved /man/1/wm-sh +moved /man/10/iar +moved /man/2/prefab-compound +moved /man/2/spree +moved /man/3/dbg +moved /man/3/draw +moved /man/8/mkfs +moved /man/9/bind +moved /man/9/canvas +moved /man/9/menubutton +moved /man/9/text +movefd /man/2/sys-pctl +movement /man/1/acme +movement /man/9/bind +movement /man/9/update +moves /man/1/acme +moves /man/1/brutus +moves /man/1/mv +moves /man/10/strcat +moves /man/2/draw-image +moves /man/2/prefab-element +moves /man/2/spree-cardlib +moves /man/2/xml +moves /man/3/pointer +moves /man/9/menu +moves /man/9/scale +moveto /man/9/canvas +moveto /man/9/entry +moveto /man/9/listbox +moveto /man/9/scrollbar +moveto /man/9/text +movie /man/1/mux +movie /man/2/mpeg +movies /man/1/mux +moving /man/1/acme +moving /man/1/ebook +moving /man/1/tktester +moving /man/1/wm-misc +moving /man/10/malloc +moving /man/3/vga +moving /man/9/text +movw /man/10/acid +mp /man/2/dis +mp /man/6/dis +mpc /man/3/kprof +mpc /man/3/switch +mpc /man/3/touch +mpc /man/3/usb +mpc /man/3/vid +mpc823 /man/3/usb +mpc823 /man/3/vid +mpc8xx /man/3/switch +mpc8xx /man/3/touch +mpeg /man/10/kproc +mpeg /man/2/mpeg +mpeg /man/3/mpeg +mpeg.b /man/2/mpeg +mpeg.m /man/2/mpeg +mpeg0 /man/3/mpeg +mpeg1,sif /man/3/mpeg +mpegctl /man/2/mpeg +mpegctl /man/3/mpeg +mprof /man/1/mprof +mprof /man/1/prof +mprof.b /man/1/mprof +mpx /man/8/collabsrv +mrepl /man/2/sys-bind +mrepl /man/3/0intro +mrepl /man/3/srv +mrepl /man/6/namespace +ms /man/1/itest +ms /man/1/prof +ms /man/10/9load +ms /man/10/plan9.ini +ms /man/10/sleep +ms /man/2/convcs +ms /man/2/prof +ms /man/3/prof +ms /man/8/prep +ms2 /man/1/avr +ms2 /man/10/5cv +ms2 /man/10/ms2 +ms2 /man/10ti925/epocimg +ms2hz /man/10/seconds +ms2tk /man/10/seconds +msb /man/2/asn1 +msb /man/2/sets +mschap /man/4/factotum +msec /man/2/timers +msec /man/3/cons +msec /man/3/pointer +msg /man/1/uuencode +msg /man/1/wm +msg /man/1/yacc +msg /man/10/allocb +msg /man/10/print +msg /man/10/qio +msg /man/10/styxserver +msg /man/2/dialog +msg /man/2/filter +msg /man/2/filter-deflate +msg /man/2/itslib +msg /man/2/mpeg +msg /man/2/plumbmsg +msg /man/2/sh +msg /man/2/smtp +msg /man/2/spree +msg /man/2/xml +msg.recv /man/2/plumbmsg +msg.unpack /man/2/plumbmsg +msglist /man/2/pop3 +msgmax /man/10/styxserver +msgnolist /man/2/pop3 +msgs /man/1/itest +msgs /man/8/collabsrv +msize /man/10/styx +msize /man/2/styx +msize /man/2/styxservers +msize /man/5/0intro +msize /man/5/version +mtime /man/10/devattach +mtime /man/2/attrdb +mtime /man/2/filter-deflate +mtime /man/2/palmfile +mtime /man/2/readdir +mtime /man/2/styxservers +mtime /man/2/sys-stat +mtime /man/3/logfs +mtime /man/5/stat +mtime /man/8/applylog +mtime /man/8/styxchat +mtpt /man/4/factotum +mtu /man/2/ip +mtu /man/3/ip +mtype /man/2/styx +muid /man/10/devattach +muid /man/2/styxservers +muid /man/2/sys-stat +muid /man/5/stat +muid /man/8/styxchat +mul /man/2/draw-point +mul /man/2/keyring-ipint +multi /man/1/acme +multi /man/1/brutus +multi /man/1/collab-clients +multi /man/1/wm-sh +multi /man/3/ip +multi /man/3/sd +multi /man/4/lockfs +multi /man/8/collabsrv +multibyte /man/3/draw +multibyte /man/6/utf +multicast /man/2/ip +multicast /man/3/ether +multicast /man/3/ip +multiflag /man/10/getfields +multimaster /man/10/plan9.ini +multiples /man/10/devattach +multiples /man/2/diskblocks +multiples /man/2/spree-cardlib +multiples /man/3/ftl +multiples /man/6/colour +multiplex /man/2/drawmux +multiplexed /man/2/ir +multiplexed /man/2/sys-dial +multiplexed /man/3/mnt +multiplexes /man/1/listen +multiplexes /man/3/mnt +multiplexes /man/3/plap +multiplexing /man/2/sys-file2chan +multiplexing /man/6/colour +multiplexing /man/8/collabsrv +multiplexor /man/2/drawmux +multiplexor /man/8/collabsrv +multiplexors /man/10/dev +multiplication /man/1/dd +multiplication /man/1/mdb +multiplication /man/1/sh-expr +multiplicative /man/1/units +multiplied /man/10/a.out +multiplied /man/9/types +multiplier /man/2/print +multiply /man/1/mathcalc +multiply /man/1/units +multiply /man/10/2l +multiply /man/2/math-0intro +multiply /man/2/math-linalg +multiplying /man/2/draw-0intro +multiprocessor /man/10/lock +multiprocessor /man/10/plan9.ini +multiprocessor /man/10/sleep +multiprocessors /man/10/splhi +multisync135 /man/10/plan9.ini +musicam,i /man/3/mpeg +musicam,ii /man/3/mpeg +mustcompile /man/2/dis +mustcompile /man/6/dis +mute /man/2/ir +mutual /man/10/qlock +mutual /man/2/keyring-auth +mutual /man/2/lock +mutual /man/2/registries +mutual /man/2/security-0intro +mutual /man/3/tls +mutual /man/4/factotum +mutual /man/6/auth +mutually /man/2/secstore +mutually /man/2/security-0intro +mutually /man/2/spree-cardlib +mutually /man/2/sys-export +mux /man/1/mux +mux /man/1/wish +mux /man/2/devpointer +mux /man/2/draw-context +mux /man/2/draw-pointer +mux /man/2/ir +mux /man/2/keyring-0intro +mux /man/2/volume +mux /man/8/manufacture +mux /man/8/register +mv /man/1/cp +mv /man/1/mv +mv /man/4/ftpfs +mv.b /man/1/mv +mx /man/6/ndb +mx /man/8/dns +mya4 /man/2/print +mycreate /man/10/styxserver +myinit /man/10/styxserver +mylex /man/10/plan9.ini +mypk /man/2/keyring-0intro +myread /man/10/styxserver +myremove /man/10/styxserver +myserv /man/3/srv9 +mysk /man/2/keyring-0intro +n.b /man/1/filename +n.b /man/1/mdb +n.b /man/2/sh +n.t.l /man/6/man +n1,n2 /man/1/diff +n3,n4 /man/1/diff +n:int /man/2/hash +nad /man/2/asn1 +naive /man/1/cal +naive /man/1/diff +naive /man/1/webgrab +nakd /man/3/usb +naked /man/6/man +name's /man/6/ndb +namec /man/10/newchan +namechan /man/1/sh-tk +namechan /man/2/tk +namechan /man/9/send +namedimage /man/2/draw-display +namelen /man/10/eve +namely /man/1/sh +namely /man/2/styxpersist +names /man/1/0intro +names /man/1/acme +names /man/1/alphabet-fs +names /man/1/alphabet-main +names /man/1/basename +names /man/1/charon +names /man/1/cleanname +names /man/1/collab-clients +names /man/1/cp +names /man/1/cprof +names /man/1/diff +names /man/1/disdep +names /man/1/ebook +names /man/1/fc +names /man/1/fs +names /man/1/gettar +names /man/1/grid-query +names /man/1/logon +names /man/1/man +names /man/1/mash +names /man/1/mc +names /man/1/mk +names /man/1/mprof +names /man/1/ns +names /man/1/prof +names /man/1/secstore +names /man/1/sendmail +names /man/1/sh +names /man/1/sh-alphabet +names /man/1/sh-expr +names /man/1/sh-std +names /man/1/tcs +names /man/1/tktester +names /man/1/units +names /man/1/webgrab +names /man/1/yacc +names /man/10/2c +names /man/10/a.out +names /man/10/c2l +names /man/10/conf +names /man/10/devattach +names /man/10/dynld +names /man/10/iar +names /man/10/mk +names /man/10/odbc +names /man/10/plan9.ini +names /man/10/srclist +names /man/2/0intro +names /man/2/arg +names /man/2/cfg +names /man/2/command +names /man/2/convcs +names /man/2/dhcpclient +names /man/2/dis +names /man/2/disks +names /man/2/filepat +names /man/2/format +names /man/2/keyring-auth +names /man/2/names +names /man/2/palmfile +names /man/2/plumbmsg +names /man/2/readdir +names /man/2/secstore +names /man/2/security-ssl +names /man/2/sh +names /man/2/smtp +names /man/2/spki +names /man/2/spree +names /man/2/spree-gather +names /man/2/spree-objstore +names /man/2/srv +names /man/2/styx +names /man/2/sys-bind +names /man/2/sys-chdir +names /man/2/sys-export +names /man/2/sys-pctl +names /man/2/sys-stat +names /man/2/translate +names /man/2/w3c-css +names /man/2/xml +names /man/3/0intro +names /man/3/cmd +names /man/3/dbg +names /man/3/dup +names /man/3/fs +names /man/3/gpio +names /man/3/indir +names /man/3/ip +names /man/3/root +names /man/3/srv9 +names /man/3/ssl +names /man/3/tls +names /man/4/archfs +names /man/4/kfs +names /man/4/registry +names /man/4/tarfs +names /man/5/0intro +names /man/5/open +names /man/5/stat +names /man/5/walk +names /man/6/dis +names /man/6/font +names /man/6/keyboard +names /man/6/man +names /man/6/ndb +names /man/6/plumbing +names /man/6/proto +names /man/6/sbl +names /man/6/users +names /man/7/db +names /man/7/dbsrv +names /man/8/applylog +names /man/8/bootpd +names /man/8/collabsrv +names /man/8/create +names /man/8/cs +names /man/8/dns +names /man/8/kfscmd +names /man/8/mkfs +names /man/8/prep +names /man/8/rstyxd +names /man/9/canvas +names /man/9/grid +names /man/9/image +names /man/9/options +names /man/9/pack +names /man/9/text +names /man/9/types +names.b /man/2/names +names.dis /man/6/proto +names.m /man/2/names +namesakes /man/2/wmsrv +namespace /man/1/0intro +namespace /man/1/9win +namespace /man/1/alphabet-main +namespace /man/1/cpu +namespace /man/1/ftree +namespace /man/1/grid-ns +namespace /man/1/grid-query +namespace /man/1/grid-register +namespace /man/1/logon +namespace /man/1/ns +namespace /man/1/nsbuild +namespace /man/1/os +namespace /man/1/session +namespace /man/1/sh +namespace /man/1/sh-file2chan +namespace /man/1/tiny +namespace /man/1/wm-sh +namespace /man/10/odbc +namespace /man/2/newns +namespace /man/2/styxpersist +namespace /man/2/styxservers +namespace /man/2/styxservers-nametree +namespace /man/2/sys-0intro +namespace /man/3/fs +namespace /man/3/pipe +namespace /man/3/prog +namespace /man/4/cpu +namespace /man/4/import +namespace /man/4/lockfs +namespace /man/4/namespace +namespace /man/4/spree +namespace /man/6/namespace +namespace /man/8/srv +namespaces /man/1/grid-query +namespaces /man/4/cpu +nametest /man/2/w3c-xpointers +nametree /man/2/styxservers +nametree /man/2/styxservers-nametree +nametree /man/2/sys-stat +nametree.b /man/2/styxservers-nametree +naming /man/1/collab-clients +naming /man/1/tiny +naming /man/10/9load +naming /man/10/plan9.ini +naming /man/2/fsproto +naming /man/2/spree-objstore +naming /man/3/logfs +naming /man/3/plap +naming /man/3/sd +naming /man/8/collabsrv +nan /man/1/mc +nan /man/2/math-fp +nan,infinity /man/2/math-fp +nand /man/1/mc +nand /man/3/flash +nand /man/3/logfs +nap /man/10/styx +natgrid /man/2/geodesy +native /man/1/0intro +native /man/1/emu +native /man/1/mdb +native /man/1/miniterm +native /man/1/mux +native /man/10/0intro +native /man/10/2c +native /man/10/a.out +native /man/10/conf +native /man/10/dev +native /man/10/error +native /man/10/eve +native /man/2/0intro +native /man/2/ip +native /man/2/math-0intro +native /man/3/audio +native /man/3/cons +native /man/3/dbg +native /man/3/ip +native /man/3/root +native /man/4/namespace +native /man/6/dis +native /man/6/keyboard +native /man/6/namespace +native /man/8/0intro +native /man/8/cs +native /man/8/init +native /man/8/ping +native /man/8/rdbgsrv +native /man/8/shutdown +natively /man/1/0intro +natural /man/2/math-elem +natural /man/2/prefab-element +natural /man/2/translate +nature /man/1/units +nature /man/1/zeros +nature /man/2/security-0intro +nature /man/2/spree-allow +nature /man/3/ip +nature /man/3/touch +nature /man/9/grab +navigate /man/1/charon +navigate /man/5/0intro +navigates /man/5/0intro +navigating /man/2/styxservers +navigating /man/2/xml +navigation /man/1/charon +navigation /man/2/xml +navigation /man/9/options +navigator /man/1/charon +navigator /man/2/styxservers +navigator /man/2/styxservers-nametree +navigator /man/6/colour +navigator.new /man/2/styxservers +navigator.new /man/2/styxservers-nametree +navop /man/2/styxservers +navop /man/2/styxservers-nametree +navy /man/9/types +nb /man/2/crc +nb /man/2/print +nb /man/3/usb +nbits /man/2/ip +nbits /man/2/keyring-gensk +nbuf /man/10/styx +nbytes /man/10/dev +nbytes /man/10/dynld +nbytes /man/2/convcs +nbytes /man/2/sys-read +nbytes /man/3/i2c +nbytes /man/6/sexprs +nc /man/10/dev +nc /man/10/devattach +nc /man/10/styxserver +nchange /man/2/scsiio +nchans /man/2/imagefile +ncharacters /man/1/tail +nchars /man/2/convcs +nclients /man/10/odbc +ncname /man/2/w3c-xpointers +ncol /man/1/acme +ncpu /man/10/plan9.ini +ncr /man/10/plan9.ini +nd /man/10/plan9.ini +ndb /man/1/grid-localreg +ndb /man/10/9load +ndb /man/2/attrdb +ndb /man/2/dhcpclient +ndb /man/4/namespace +ndb /man/4/registry +ndb /man/6/attrdb +ndb /man/6/ndb +ndb /man/8/bootpd +ndb /man/8/cs +ndb /man/8/dhcp +ndb /man/8/dns +ndb /man/8/getauthinfo +ndb /man/8/rip +ndb /man/8/svc +ndb /man/8/virgild +ne /man/2/dis +ne /man/9/options +ne /man/9/types +ne2000 /man/10/plan9.ini +ne4100 /man/3/i82365 +near /man/1/acme +near /man/10/acid +near /man/10/plan9.ini +near /man/2/dialog +near /man/2/selectfile +near /man/6/keyboard +near /man/9/0intro +near /man/9/listbox +nearby /man/10/0intro +nearest /man/1/du +nearest /man/10/acid +nearest /man/2/geodesy +nearest /man/2/math-fp +nearest /man/4/memfs +nearest /man/9/canvas +nearest /man/9/entry +nearest /man/9/listbox +nearly /man/10/dev +nearly /man/10/devattach +necessarily /man/1/acme +necessarily /man/2/draw-0intro +necessarily /man/2/draw-image +necessarily /man/2/spree +necessarily /man/9/options +necessary /man/1/acme +necessary /man/1/alphabet-abc +necessary /man/1/alphabet-grid +necessary /man/1/crypt +necessary /man/1/mdb +necessary /man/1/os +necessary /man/1/session +necessary /man/1/sh-alphabet +necessary /man/1/sh-csv +necessary /man/1/sh-string +necessary /man/10/2c +necessary /man/10/2l +necessary /man/10/allocb +necessary /man/10/ar +necessary /man/10/atoi +necessary /man/10/dev +necessary /man/10/dynld +necessary /man/10/newchan +necessary /man/10/plan9.ini +necessary /man/10/strcat +necessary /man/2/0intro +necessary /man/2/bufio +necessary /man/2/dbm +necessary /man/2/debug +necessary /man/2/dividers +necessary /man/2/draw-image +necessary /man/2/draw-screen +necessary /man/2/ir +necessary /man/2/keyring-0intro +necessary /man/2/palmfile +necessary /man/2/prefab-element +necessary /man/2/prefab-environ +necessary /man/2/security-0intro +necessary /man/2/spki +necessary /man/2/styxpersist +necessary /man/2/styxservers +necessary /man/2/sys-open +necessary /man/2/sys-print +necessary /man/2/sys-stat +necessary /man/2/tkclient +necessary /man/2/wmclient +necessary /man/3/boot +necessary /man/3/cmd +necessary /man/3/draw +necessary /man/3/ip +necessary /man/3/logfs +necessary /man/3/pbus +necessary /man/4/acme +necessary /man/4/factotum +necessary /man/4/namespace +necessary /man/4/spree +necessary /man/5/0intro +necessary /man/6/utf +necessary /man/8/collabsrv +necessary /man/8/plumber +necessary /man/9/canvas +necessary /man/9/listbox +necessary /man/9/menu +necessary /man/9/text +necessity /man/1/sh-expr +neck /man/9/canvas +needed /man/1/acme +needed /man/1/charon +needed /man/1/mash-tk +needed /man/1/mk +needed /man/1/session +needed /man/10/0intro +needed /man/10/2l +needed /man/10/conf +needed /man/10/devattach +needed /man/10/dynld +needed /man/10/error +needed /man/10/mk +needed /man/10/plan9.ini +needed /man/10/styx +needed /man/2/alphabet-intro +needed /man/2/draw-image +needed /man/2/draw-screen +needed /man/2/keyring-0intro +needed /man/2/palmfile +needed /man/2/plumbmsg +needed /man/2/pop3 +needed /man/2/print +needed /man/2/registries +needed /man/2/security-auth +needed /man/2/sh +needed /man/2/spree +needed /man/2/styxservers +needed /man/2/sys-dirread +needed /man/2/sys-pctl +needed /man/2/xml +needed /man/3/dbg +needed /man/3/ip +needed /man/3/plap +needed /man/3/root +needed /man/4/acme +needed /man/4/archfs +needed /man/4/factotum +needed /man/4/mntgen +needed /man/4/namespace +needed /man/5/0intro +needed /man/5/clunk +needed /man/5/flush +needed /man/8/ftl +needed /man/8/kfscmd +needed /man/8/register +needed /man/9/grid +needed /man/9/menu +needfile /man/10/styxserver +needing /man/2/spree +needkey /man/4/factotum +needless /man/3/logfs +needlessly /man/10/dev +needs /man/1/acme +needs /man/1/mash-make +needs /man/1/webgrab +needs /man/10/2c +needs /man/10/2l +needs /man/10/dynld +needs /man/10/plan9.ini +needs /man/2/alphabet-intro +needs /man/2/cfg +needs /man/2/debug +needs /man/2/prefab-element +needs /man/2/security-0intro +needs /man/2/styxservers +needs /man/3/cmd +needs /man/3/draw +needs /man/3/pnp +needs /man/4/factotum +needs /man/6/dis +needs /man/6/login +needs /man/8/getauthinfo +needs /man/9/grid +needs /man/9/options +needs /man/9/pack +neg /man/2/keyring-ipint +negate /man/1/mathcalc +negated /man/6/regexp +negation /man/1/sh-expr +negative /man/1/acme +negative /man/1/tail +negative /man/10/allocb +negative /man/10/c2l +negative /man/10/memory +negative /man/10/print +negative /man/10/ref +negative /man/2/0intro +negative /man/2/dbm +negative /man/2/draw-image +negative /man/2/env +negative /man/2/factotum +negative /man/2/geodesy +negative /man/2/ip +negative /man/2/keyring-getstring +negative /man/2/keyring-ipint +negative /man/2/math-fp +negative /man/2/plumbmsg +negative /man/2/prof +negative /man/2/rand +negative /man/2/secstore +negative /man/2/sets +negative /man/2/styxservers +negative /man/2/sys-0intro +negative /man/2/sys-export +negative /man/2/sys-print +negative /man/3/draw +negative /man/6/users +negative /man/7/db +negative /man/9/canvas +negative /man/9/entry +negative /man/9/grid +negative /man/9/listbox +negative /man/9/options +negative /man/9/scrollbar +negative /man/9/text +negotiable /man/5/0intro +negotiate /man/10/plan9.ini +negotiate /man/2/sys-fversion +negotiate /man/3/ip +negotiate /man/4/factotum +negotiate /man/5/version +negotiated /man/10/plan9.ini +negotiated /man/10/styx +negotiated /man/2/styx +negotiated /man/2/styxservers +negotiated /man/2/sys-fversion +negotiated /man/3/ip +negotiated /man/5/0intro +negotiates /man/2/sys-fversion +negotiates /man/5/version +negotiation /man/2/sys-fversion +negotiation /man/3/ip +negotiation /man/4/factotum +negotiation /man/4/import +negotiation /man/7/db +neighbour /man/9/text +neither /man/1/alphabet-fs +neither /man/1/charon +neither /man/1/cprof +neither /man/1/fs +neither /man/1/ftest +neither /man/1/lc +neither /man/1/listen +neither /man/1/mash +neither /man/1/mprof +neither /man/1/prof +neither /man/1/rm +neither /man/1/sh-std +neither /man/10/iar +neither /man/10/print +neither /man/2/convcs +neither /man/2/security-auth +neither /man/2/sets +neither /man/2/sys-export +neither /man/3/fs +neither /man/3/ip +neither /man/6/keytext +neither /man/6/namespace +neither /man/8/prep +neither /man/8/rip +neither /man/9/canvas +neither /man/9/menu +neither /man/9/see +neither /man/9/text +nelem /man/10/devattach +neomagic /man/3/vga +neomagichwgc /man/3/vga +neq /man/1/sh-expr +nested /man/1/acme +nested /man/1/brutus +nested /man/10/error +nested /man/10/lock +nested /man/2/asn1 +nested /man/2/dividers +nested /man/6/colour +nested /man/6/man +nested /man/9/0intro +nesting /man/2/sexprs +net /man/1/collab +net /man/1/cpu +net /man/1/listen +net /man/1/netstat +net /man/1/rcmd +net /man/1/secstore +net /man/1/telnet +net /man/10/plan9.ini +net /man/2/bufio +net /man/2/dhcpclient +net /man/2/ether +net /man/2/ip +net /man/2/keyring-auth +net /man/2/registries +net /man/2/secstore +net /man/2/sys-dial +net /man/3/ether +net /man/3/ip +net /man/3/plap +net /man/3/root +net /man/3/tls +net /man/4/namespace +net /man/4/registry +net /man/6/namespace +net /man/7/db +net /man/8/bootpd +net /man/8/cs +net /man/8/dhcp +net /man/8/dns +net /man/8/getauthinfo +net /man/8/init +net /man/8/rip +net /man/8/svc +net.alt /man/2/sys-dial +net.alt /man/3/root +net.sh /man/8/svc +netaddr /man/1/collab +netaddr /man/2/sys-dial +netaddr /man/8/cs +netaddress /man/1/collab +netaddress /man/8/collabsrv +netbios /man/2/dhcpclient +netbsd /man/10/5cv +netgear /man/10/plan9.ini +netif.c /man/3/ether +netif.h /man/10/0intro +netkey /man/1/netkey +netkey.b /man/1/netkey +netscape /man/1/charon +netscape /man/6/colour +netstat /man/1/netstat +netstat.b /man/1/netstat +network /man/1/alphabet-abc +network /man/1/alphabet-grid +network /man/1/alphabet-main +network /man/1/bind +network /man/1/charon +network /man/1/collab +network /man/1/collab-clients +network /man/1/cpu +network /man/1/dmview +network /man/1/emu +network /man/1/grid-ns +network /man/1/listen +network /man/1/miniterm +network /man/1/netstat +network /man/1/ns +network /man/1/secstore +network /man/1/spree-join +network /man/1/webgrab +network /man/10/0intro +network /man/10/9load +network /man/10/eve +network /man/10/odbc +network /man/10/plan9.ini +network /man/2/dhcpclient +network /man/2/ip +network /man/2/keyring-0intro +network /man/2/keyring-auth +network /man/2/keyring-certtostr +network /man/2/keyring-getmsg +network /man/2/keyring-getstring +network /man/2/keyring-ipint +network /man/2/secstore +network /man/2/security-login +network /man/2/sexprs +network /man/2/spree +network /man/2/srv +network /man/2/sys-bind +network /man/2/sys-dial +network /man/2/sys-open +network /man/2/sys-stat +network /man/2/virgil +network /man/3/cmd +network /man/3/ip +network /man/3/plap +network /man/3/ssl +network /man/4/cpu +network /man/4/ftpfs +network /man/4/import +network /man/4/namespace +network /man/4/registry +network /man/4/spree +network /man/6/attrdb +network /man/6/ndb +network /man/6/sexprs +network /man/7/db +network /man/8/0intro +network /man/8/bootpd +network /man/8/collabsrv +network /man/8/cs +network /man/8/dhcp +network /man/8/dns +network /man/8/getauthinfo +network /man/8/init +network /man/8/logind +network /man/8/ping +network /man/8/rip +network /man/8/rstyxd +network /man/8/signer +network /man/8/sntp +network /man/8/srv +network /man/8/styxchat +network /man/8/svc +network /man/8/virgild +networks /man/10/9load +networks /man/2/keyring-0intro +networks /man/2/keyring-certtostr +networks /man/2/keyring-getstring +networks /man/2/sys-dial +networks /man/3/ip +networks /man/8/bootpd +networks /man/8/rip +nevertheless /man/1/tiny +nevertheless /man/10/ar +new.bundle /man/1/alphabet-fs +new.bundle /man/1/fs +newchan /man/10/dev +newchan /man/10/newchan +newclient /man/1/wm +newclient /man/10/styxserver +newcol /man/1/acme +newdot /man/8/prep +newencin /man/3/tls +newencout /man/3/tls +newenv /man/2/sys-pctl +newenv /man/3/env +newer /man/1/ftest +newer /man/1/mk +newer /man/10/mk +newer /man/10/plan9.ini +newer /man/6/image +newer.b /man/1/ftest +newfd /man/1/sh-std +newfd /man/2/command +newfd /man/2/sys-dup +newfd /man/2/sys-export +newfd /man/2/sys-pctl +newfgrp /man/10/kproc +newfid /man/10/styx +newfid /man/2/styx +newfid /man/2/styxservers +newfid /man/5/0intro +newfid /man/5/walk +newfid /man/8/styxchat +newgrp /man/2/sys-pctl +newhashin /man/3/tls +newhashout /man/3/tls +newid /man/2/tabs +newimage /man/2/draw-display +newline /man/1/acme +newline /man/1/alphabet-abc +newline /man/1/alphabet-grid +newline /man/1/alphabet-main +newline /man/1/echo +newline /man/1/mash +newline /man/1/mc +newline /man/1/mdb +newline /man/1/mk +newline /man/1/mux +newline /man/1/p +newline /man/1/sh +newline /man/1/sh-csv +newline /man/1/sh-std +newline /man/1/tiny +newline /man/1/tr +newline /man/1/wish +newline /man/1/wm-sh +newline /man/10/ar +newline /man/10/mk +newline /man/10/odbc +newline /man/10/panic +newline /man/2/arg +newline /man/2/asn1 +newline /man/2/bufio +newline /man/2/dialog +newline /man/2/keyring-certtostr +newline /man/2/keyring-getmsg +newline /man/2/secstore +newline /man/2/string +newline /man/3/cons +newline /man/3/prog +newline /man/4/acme +newline /man/4/spree +newline /man/6/keyboard +newline /man/6/keytext +newline /man/6/regexp +newline /man/6/sbl +newline /man/6/sexprs +newline /man/6/translate +newline /man/6/ubfa +newline /man/9/canvas +newline /man/9/text +newlines /man/1/acme +newlines /man/1/crypt +newlines /man/1/deb +newlines /man/1/sh +newlines /man/1/sh-std +newlines /man/1/wc +newlines /man/10/a.out +newlines /man/2/prefab-element +newlines /man/2/sexprs +newlines /man/3/touch +newlines /man/4/acme +newlines /man/6/sexprs +newlines /man/9/button +newlines /man/9/checkbutton +newlines /man/9/label +newlines /man/9/menubutton +newlines /man/9/radiobutton +newly /man/1/acme +newly /man/1/alphabet-abc +newly /man/1/alphabet-grid +newly /man/1/mkdir +newly /man/1/sh-tk +newly /man/10/dev +newly /man/10/newchan +newly /man/10/odbc +newly /man/10/styxserver +newly /man/2/diskblocks +newly /man/2/keyring-sha1 +newly /man/2/pop3 +newly /man/2/prefab-element +newly /man/2/security-auth +newly /man/2/sh +newly /man/2/sys-0intro +newly /man/2/sys-pctl +newly /man/2/tabs +newly /man/2/tkclient +newly /man/3/fs +newly /man/3/ftl +newly /man/3/ip +newly /man/3/plap +newly /man/3/tls +newly /man/4/memfs +newly /man/5/open +newly /man/8/prep +newname /man/3/logfs +newns /man/1/nsbuild +newns /man/1/sh-std +newns /man/2/newns +newns /man/2/sys-pctl +newns /man/3/fs +newns /man/6/namespace +newns /man/8/srv +newns.b /man/2/newns +newns.m /man/2/newns +newobject /man/2/spree +newpgrp /man/1/sh-std +newpgrp /man/1/sh-tk +newpgrp /man/2/command +newpgrp /man/2/sys-pctl +newpgrp /man/3/prog +newprereq /man/1/mk +newprereq /man/10/mk +newproc /man/10/acid +news /man/1/mux +newsecret /man/4/keysrv +newspaper /man/1/mux +newspaper /man/6/translate +newspapers /man/1/mux +newstack /man/2/spree-cardlib +newuser /man/8/kfscmd +newv4 /man/2/ip +newv6 /man/2/ip +newviewer /man/2/drawmux +newwindow /man/2/draw-screen +nexport /man/10/dynld +nextafter /man/2/math-fp +nexterror /man/10/error +nextkey /man/2/dbm +nextrange /man/9/text +nextrow /man/7/db +nexttag /man/8/styxchat +nf /man/10/parsecmd +nf /man/2/styxservers +nfer /man/1/cprof +nibble /man/3/draw +nice /man/1/os +nice /man/3/cmd +niceness /man/3/cmd +nigel /man/10ti925/tihost +nil /man/1/grep +nil /man/1/limbo +nil /man/1/sh +nil /man/1/sh-file2chan +nil /man/1/sh-sexprs +nil /man/1/sh-std +nil /man/1/stack +nil /man/1/yacc +nil /man/10/devattach +nil /man/10/dynld +nil /man/10/error +nil /man/10/intrenable +nil /man/10/kproc +nil /man/10/sleep +nil /man/10/styx +nil /man/10/styxserver +nil /man/2/0intro +nil /man/2/alphabet-intro +nil /man/2/arg +nil /man/2/asn1 +nil /man/2/attrdb +nil /man/2/bufio +nil /man/2/cfg +nil /man/2/command +nil /man/2/convcs +nil /man/2/dbm +nil /man/2/debug +nil /man/2/devpointer +nil /man/2/dhcpclient +nil /man/2/dialog +nil /man/2/dict +nil /man/2/dis +nil /man/2/diskblocks +nil /man/2/disks +nil /man/2/draw-0intro +nil /man/2/draw-context +nil /man/2/draw-display +nil /man/2/draw-example +nil /man/2/draw-image +nil /man/2/draw-screen +nil /man/2/env +nil /man/2/ether +nil /man/2/exception +nil /man/2/factotum +nil /man/2/format +nil /man/2/fsproto +nil /man/2/hash +nil /man/2/ida +nil /man/2/imagefile +nil /man/2/ip +nil /man/2/ir +nil /man/2/itslib +nil /man/2/keyring-auth +nil /man/2/keyring-certtostr +nil /man/2/keyring-gensk +nil /man/2/keyring-getmsg +nil /man/2/keyring-getstring +nil /man/2/keyring-ipint +nil /man/2/keyring-sha1 +nil /man/2/keyset +nil /man/2/mpeg +nil /man/2/names +nil /man/2/newns +nil /man/2/palmfile +nil /man/2/plumbmsg +nil /man/2/pop3 +nil /man/2/popup +nil /man/2/prefab-compound +nil /man/2/prefab-element +nil /man/2/regex +nil /man/2/registries +nil /man/2/scsiio +nil /man/2/secstore +nil /man/2/security-auth +nil /man/2/security-login +nil /man/2/security-ssl +nil /man/2/selectfile +nil /man/2/sexprs +nil /man/2/sh +nil /man/2/smtp +nil /man/2/spki +nil /man/2/spki-verifier +nil /man/2/spree +nil /man/2/spree-allow +nil /man/2/spree-cardlib +nil /man/2/spree-gather +nil /man/2/spree-objstore +nil /man/2/string +nil /man/2/styx +nil /man/2/styxconv +nil /man/2/styxpersist +nil /man/2/styxservers +nil /man/2/styxservers-nametree +nil /man/2/sys-bind +nil /man/2/sys-dial +nil /man/2/sys-dirread +nil /man/2/sys-dup +nil /man/2/sys-export +nil /man/2/sys-fauth +nil /man/2/sys-fd2path +nil /man/2/sys-file2chan +nil /man/2/sys-open +nil /man/2/sys-self +nil /man/2/sys-stat +nil /man/2/sys-tokenize +nil /man/2/tftp +nil /man/2/tk +nil /man/2/tkclient +nil /man/2/translate +nil /man/2/ubfa +nil /man/2/virgil +nil /man/2/w3c-css +nil /man/2/w3c-xpointers +nil /man/2/wait +nil /man/2/wmclient +nil /man/2/wmlib +nil /man/2/wmsrv +nil /man/2/xml +nil /man/3/arch +nil /man/3/cap +nil /man/3/env +nil /man/3/prog +nil /man/6/sbl +nil /man/7/db +nil,nil /man/2/styxservers +nimport /man/10/dynld +nine /man/9/canvas +ninf /man/2/math-fp +nk /man/2/bloomfilter +nl /man/2/sh +nlab /man/6/dis +nlines /man/1/tail +nm /man/10/inm +nmembers /man/2/spree-cardlib +nname /man/10/dev +nname /man/10/devattach +nnnn /man/5/version +noaddr /man/2/ip +nobody /man/2/keyring-auth +nobody /man/3/cmd +nobroken /man/3/cons +nocase /man/9/text +noctl /man/2/disks +node /man/1/alphabet-abc +node /man/1/alphabet-grid +node /man/2/ip +node /man/2/w3c-xpointers +node /man/3/kprof +node1 /man/1/alphabet-abc +node1 /man/1/alphabet-grid +node2 /man/1/alphabet-abc +node2 /man/1/alphabet-grid +nodes /man/2/ip +nodetest /man/2/w3c-xpointers +nodetype /man/2/w3c-xpointers +nodev /man/6/namespace +nodevs /man/1/sh-std +nodevs /man/2/sys-pctl +nodevs /man/6/namespace +nodummyrr /man/10/plan9.ini +noecho /man/4/acme +noerror /man/1/dd +noetherprobe /man/10/plan9.ini +nofid /man/2/styx +nofid /man/5/attach +nofid /man/8/styxchat +nofill /man/2/draw-display +nofill /man/6/man +noir /man/10/odbc +noise /man/2/imagefile +nomark /man/4/acme +nomce /man/10/plan9.ini +nominal /man/9/grid +nominally /man/10/styxserver +nomp /man/10/plan9.ini +non /man/1/acme +non /man/1/charon +non /man/1/cp +non /man/1/fc +non /man/1/freq +non /man/1/ftest +non /man/1/grep +non /man/1/kill +non /man/1/mash +non /man/1/mash-tk +non /man/1/mathcalc +non /man/1/mc +non /man/1/mk +non /man/1/read +non /man/1/sh +non /man/1/sh-expr +non /man/1/sh-file2chan +non /man/1/sh-std +non /man/1/sh-string +non /man/1/sh-tk +non /man/1/tiny +non /man/1/tsort +non /man/1/wm +non /man/10/2c +non /man/10/5coff +non /man/10/9load +non /man/10/c2l +non /man/10/dev +non /man/10/devattach +non /man/10/dmainit +non /man/10/dynld +non /man/10/error +non /man/10/getfields +non /man/10/kbdputc +non /man/10/kproc +non /man/10/lock +non /man/10/malloc +non /man/10/mk +non /man/10/newchan +non /man/10/plan9.ini +non /man/10/print +non /man/10/qio +non /man/10/qlock +non /man/10/sleep +non /man/10/splhi +non /man/10/styxserver +non /man/2/asn1 +non /man/2/convcs +non /man/2/dbm +non /man/2/debug +non /man/2/dhcpclient +non /man/2/disks +non /man/2/draw-display +non /man/2/draw-image +non /man/2/draw-point +non /man/2/draw-pointer +non /man/2/draw-rect +non /man/2/draw-screen +non /man/2/factotum +non /man/2/ip +non /man/2/ir +non /man/2/keyring-auth +non /man/2/keyring-getstring +non /man/2/keyring-ipint +non /man/2/keyring-rc4 +non /man/2/keyring-sha1 +non /man/2/keyset +non /man/2/math-fp +non /man/2/palmfile +non /man/2/plumbmsg +non /man/2/prefab-element +non /man/2/print +non /man/2/rand +non /man/2/regex +non /man/2/registries +non /man/2/scsiio +non /man/2/security-auth +non /man/2/sets +non /man/2/sexprs +non /man/2/sh +non /man/2/spree +non /man/2/spree-allow +non /man/2/spree-cardlib +non /man/2/spree-gather +non /man/2/stringinttab +non /man/2/styxpersist +non /man/2/styxservers +non /man/2/sys-0intro +non /man/2/sys-byte2char +non /man/2/sys-dial +non /man/2/sys-export +non /man/2/sys-tokenize +non /man/2/tftp +non /man/2/translate +non /man/2/ubfa +non /man/2/w3c-css +non /man/2/w3c-xpointers +non /man/2/wmlib +non /man/2/wmsrv +non /man/2/xml +non /man/3/cmd +non /man/3/cons +non /man/3/dbg +non /man/3/draw +non /man/3/eia +non /man/3/ip +non /man/3/logfs +non /man/3/prof +non /man/3/rtc +non /man/3/tinyfs +non /man/3/tls +non /man/3/tv +non /man/4/acme +non /man/4/factotum +non /man/4/keysrv +non /man/4/logfile +non /man/4/namespace +non /man/4/registry +non /man/4/spree +non /man/5/read +non /man/5/stat +non /man/6/audio +non /man/6/colour +non /man/6/dis +non /man/6/font +non /man/6/man +non /man/6/namespace +non /man/6/proto +non /man/6/regexp +non /man/6/sexprs +non /man/6/ubfa +non /man/6/utf +non /man/7/db +non /man/8/create +non /man/8/kfscmd +non /man/8/prep +non /man/8/register +non /man/8/srv +non /man/9/1copyright +non /man/9/button +non /man/9/canvas +non /man/9/checkbutton +non /man/9/grid +non /man/9/menu +non /man/9/menubutton +non /man/9/options +non /man/9/pack +non /man/9/radiobutton +non /man/9/send +non /man/9/text +nonassoc /man/1/yacc +nonblock /man/10/qio +nonblocking /man/3/ip +noncommercial /man/2/keyring-crypt +none /man/1/acme +none /man/1/bind +none /man/1/collab +none /man/1/cprof +none /man/1/cpu +none /man/1/ftest +none /man/1/mash +none /man/1/math-misc +none /man/1/mprof +none /man/1/prof +none /man/1/rcmd +none /man/1/sh +none /man/1/sh-std +none /man/1/uuencode +none /man/10/plan9.ini +none /man/10/rune +none /man/10/strcat +none /man/2/bloomfilter +none /man/2/bufio +none /man/2/dbm +none /man/2/hash +none /man/2/keyring-0intro +none /man/2/readdir +none /man/2/security-auth +none /man/2/sets +none /man/2/spree +none /man/2/spree-objstore +none /man/2/styxservers +none /man/2/w3c-xpointers +none /man/2/wmsrv +none /man/3/flash +none /man/3/ip +none /man/3/mnt +none /man/3/prog +none /man/3/sign +none /man/3/tv +none /man/4/factotum +none /man/4/kfs +none /man/4/lockfs +none /man/4/logfile +none /man/4/namespace +none /man/4/registry +none /man/5/stat +none /man/6/dis +none /man/7/dbsrv +none /man/8/bootpd +none /man/8/rstyxd +none /man/8/srv +none /man/8/styxchat +none /man/9/button +none /man/9/canvas +none /man/9/checkbutton +none /man/9/grab +none /man/9/menu +none /man/9/menubutton +none /man/9/pack +none /man/9/radiobutton +none /man/9/scale +none /man/9/text +nonempty /man/10/acid +nonempty /man/2/filepat +nonempty /man/6/regexp +nonetheless /man/2/spree-cardlib +nonexistent /man/1/mk +nonexistent /man/10/mk +noninitial /man/1/tr +nop /man/3/0intro +nopcirouting /man/10/plan9.ini +noproxy /man/1/charon +noproxy /man/1/webgrab +noproxydoms /man/1/charon +noproxydoms /man/1/webgrab +nor /man/1/charon +nor /man/1/mc +nor /man/1/mprof +nor /man/1/prof +nor /man/1/rm +nor /man/10/lock +nor /man/10/print +nor /man/2/convcs +nor /man/2/prefab-element +nor /man/2/security-auth +nor /man/2/sets +nor /man/2/sys-0intro +nor /man/2/sys-export +nor /man/3/cmd +nor /man/3/flash +nor /man/3/fs +nor /man/3/ip +nor /man/6/keytext +nor /man/6/namespace +nor /man/8/prep +nor /man/8/rip +nor /man/9/canvas +nor /man/9/menu +norm /man/2/math-linalg +norm1 /man/2/math-linalg +norm2 /man/2/math-linalg +normalised /man/2/convcs +norms /man/2/math-linalg +north /man/9/grid +northeast /man/2/selectfile +northing /man/2/geodesy +northings /man/2/geodesy +northwest /man/2/dialog +noscroll /man/4/acme +noscsireset /man/10/plan9.ini +notably /man/10/plan9.ini +notably /man/2/dbm +notably /man/2/sys-0intro +notably /man/4/dossrv +notably /man/9/0intro +notacolor /man/2/draw-display +notafter /man/2/spki +notag /man/2/styx +notag /man/5/0intro +notag /man/5/version +notag /man/8/styxchat +notation /man/1/0intro +notation /man/1/alphabet-main +notation /man/1/fc +notation /man/1/sh-expr +notation /man/10/2c +notation /man/10/acid +notation /man/2/asn1 +notation /man/2/filepat +notation /man/3/dbg +notation /man/3/ip +notation /man/5/0intro +notation /man/6/regexp +notation /man/9/types +notbefore /man/2/spki +note /man/1/acme +note /man/1/alphabet-fs +note /man/1/bind +note /man/1/fc +note /man/1/fs +note /man/1/idea +note /man/1/mprof +note /man/1/prof +note /man/1/pwd +note /man/1/sh +note /man/1/sh-alphabet +note /man/1/sh-file2chan +note /man/1/sh-sexprs +note /man/1/tail +note /man/1/timestamp +note /man/1/tktester +note /man/1/wm-sh +note /man/10/2c +note /man/10/acid +note /man/10/dev +note /man/10/devattach +note /man/10/dynld +note /man/10/eve +note /man/10/intrenable +note /man/10/qio +note /man/10/strcat +note /man/10/styxserver +note /man/2/0intro +note /man/2/alphabet-intro +note /man/2/asn1 +note /man/2/bufio +note /man/2/cfg +note /man/2/command +note /man/2/convcs +note /man/2/daytime +note /man/2/geodesy +note /man/2/palmfile +note /man/2/plumbmsg +note /man/2/pop3 +note /man/2/prefab-style +note /man/2/security-auth +note /man/2/sets +note /man/2/spree +note /man/2/styx +note /man/2/styxpersist +note /man/2/styxservers +note /man/2/styxservers-nametree +note /man/2/sys-dial +note /man/2/sys-self +note /man/2/translate +note /man/2/wmsrv +note /man/2/xml +note /man/3/dbg +note /man/3/draw +note /man/3/dup +note /man/3/flash +note /man/3/ip +note /man/3/logfs +note /man/3/pnp +note /man/3/srv9 +note /man/3/usb +note /man/3/vga +note /man/4/cpu +note /man/4/dbfs +note /man/4/keyfs +note /man/4/registry +note /man/4/spree +note /man/5/stat +note /man/6/attrdb +note /man/6/font +note /man/6/keyboard +note /man/6/plumbing +note /man/6/sexprs +note /man/6/translate +note /man/6/ubfa +note /man/8/changelogin +note /man/8/getauthinfo +note /man/8/kfscmd +note /man/8/signer +note /man/8/svc +note /man/9/canvas +note /man/9/menu +note /man/9/text +notebook /man/2/tabs +noted /man/1/crypt +noted /man/10/dynld +noted /man/2/sys-0intro +noted /man/6/ubfa +noted /man/9/canvas +notes /man/1/collab-clients +notes /man/2/imagefile +notes /man/3/logfs +notes /man/8/rip +notice /man/1/mash-tk +notice /man/10/plan9.ini +notice /man/10/qio +notice /man/9/0intro +notice /man/9/1copyright +noticeable /man/9/text +notices /man/9/1copyright +notification /man/2/spree +notification /man/2/wmsrv +notification /man/9/options +notification /man/9/scrollbar +notifications /man/2/dhcpclient +notifications /man/2/wmsrv +notifications /man/9/options +notified /man/2/draw-image +notified /man/2/spree +notified /man/2/timers +notified /man/3/dbg +notifies /man/9/scrollbar +notify /man/10/qio +notify /man/2/mpeg +notify /man/2/spree +notify /man/3/tls +notify /man/9/scale +notifyleader /man/2/exception +notifyleader /man/3/prog +notion /man/1/diff +notion /man/2/security-0intro +notion /man/9/canvas +notional /man/10/devattach +notionally /man/10/styxserver +notionally /man/2/sets +notionally /man/4/ftpfs +notionally /man/8/applylog +notquiterandom /man/2/security-random +notquiterandom /man/3/cons +notstop /man/3/dbg +notwithstanding /man/9/1copyright +nousbprobe /man/10/plan9.ini +novel /man/1/0intro +novelties /man/1/webgrab +novga /man/10/plan9.ini +noworld /man/4/kfs +nping /man/8/ping +nproc /man/1/mk +nproc /man/10/mk +nptr /man/10/atoi +nq /man/10/styxserver +nqid /man/10/devattach +nr /man/1/cp +nr /man/1/sort +nr /man/2/ida +nr /man/2/math-fp +nread /man/10/styxserver +nrec /man/2/palmfile +nresrv /man/8/prep +ns /man/1/grid-monitor +ns /man/1/grid-ns +ns /man/1/ns +ns /man/1/session +ns /man/2/dividers +ns /man/2/newns +ns /man/2/sets +ns /man/2/sys-fd2path +ns /man/2/w3c-xpointers +ns /man/3/prog +ns /man/4/cpu +ns /man/6/ndb +ns /man/8/dns +ns.b /man/1/grid-ns +ns.b /man/1/ns +ns.b /man/1/session +nsbuild /man/1/nsbuild +nsbuild /man/6/namespace +nsbuild.b /man/1/nsbuild +nsfile /man/1/logon +nsfile /man/2/newns +nsfile /man/8/srv +nsgrp /man/3/prog +nstat /man/10/styx +nstatus /man/3/fpga +nsym /man/10/dynld +nt /man/1/unicode +nt /man/10/5cv +nt /man/10/conf +nt /man/10/ntsrv +nt /man/10/styxserver +nt /man/10ti925/epocimg +nt /man/10ti925/tihost +nt /man/3/fs +nt /man/4/namespace +nt /man/7/dbsrv +ntab /man/10/devattach +ntentry /man/2/disks +ntest /man/1/sh-expr +ntfs /man/3/fs +ntfs /man/8/prep +nthreads /man/1/charon +ntp /man/8/sntp +ntsc /man/2/draw-image +ntsc /man/3/tv +ntsc /man/3/vid +ntsc's /man/6/colour +ntsrv /man/10/ntsrv +ntsrv.exe /man/10/ntsrv +ntsrv4 /man/10/ntsrv +nuances /man/10/devattach +nul /man/10/a.out +nul /man/10/c2l +nul /man/10/print +nul /man/10/readnum +nul /man/10/rune +nul /man/2/draw-image +nul /man/5/0intro +nul /man/6/font +null /man/1/acme +null /man/1/charon +null /man/1/fc +null /man/1/mash +null /man/1/mk +null /man/1/os +null /man/1/sh +null /man/1/sh-regex +null /man/1/sh-std +null /man/10/a.out +null /man/10/allocb +null /man/10/c2l +null /man/10/dev +null /man/10/eve +null /man/10/getfields +null /man/10/malloc +null /man/10/mk +null /man/10/parsecmd +null /man/10/plan9.ini +null /man/10/qio +null /man/10/rune +null /man/10/strcat +null /man/10/xalloc +null /man/2/asn1 +null /man/2/debug +null /man/2/names +null /man/2/sys-pctl +null /man/3/cons +null /man/3/dbg +null /man/4/acme +null /man/4/factotum +null /man/6/ubfa +null /man/8/styxmon +nulldir /man/2/sys-stat +num /man/1/math-misc +num /man/1/sh-expr +num /man/10/c2l +num /man/2/asn1 +num /man/6/colour +num /man/6/users +numbered /man/1/itest +numbered /man/1/mash-tk +numbered /man/10/0intro +numbered /man/10/odbc +numbered /man/2/spree-cardlib +numbered /man/3/cmd +numbered /man/3/flash +numbered /man/3/ip +numbered /man/3/plap +numbered /man/3/prof +numbered /man/3/prog +numbered /man/3/ssl +numbered /man/3/tls +numbered /man/4/acme +numbered /man/4/dbfs +numbered /man/6/dis +numbered /man/6/image +numbered /man/8/collabsrv +numbered /man/8/prep +numbered /man/9/grid +numbered /man/9/text +numbering /man/3/gpio +numbering /man/4/dbfs +numbering /man/9/text +numblocks /man/1/zeros +numeral /man/1/acme +numeral /man/2/ir +numerator /man/6/keyboard +numeric /man/1/charon +numeric /man/1/kill +numeric /man/1/look +numeric /man/1/sh-tk +numeric /man/1/sort +numeric /man/1/unicode +numeric /man/10/iar +numeric /man/10/plan9.ini +numeric /man/10/print +numeric /man/2/styxservers +numeric /man/2/sys-print +numeric /man/2/virgil +numeric /man/3/cons +numeric /man/3/flash +numeric /man/4/tarfs +numeric /man/6/font +numeric /man/7/db +numeric /man/8/collabsrv +numeric /man/8/prep +numeric /man/9/text +numeric /man/9/types +numerical /man/10/9load +numerical /man/2/sys-pctl +numerical /man/9/canvas +numerical /man/9/entry +numerical /man/9/grid +numerical /man/9/listbox +numerical /man/9/menu +numerical /man/9/scale +numerical /man/9/text +numerically /man/1/chmod +numerically /man/1/sh-expr +numerically /man/9/menu +numerics /man/2/math-0intro +numericstring /man/2/asn1 +nums /man/2/asn1 +numsize /man/10/readnum +nuova /man/9/0intro +nuova /man/9/1copyright +nvfs /man/3/root +nvfs /man/3/tinyfs +nvfs /man/4/namespace +nvfs /man/8/manufacture +nvfs /man/8/register +nvr /man/10/plan9.ini +nvram /man/3/rtc +nvram /man/3/tinyfs +nvram /man/8/prep +nvram /man/8/touchcal +nw /man/1/cp +nw /man/9/options +nw /man/9/types +nwname /man/10/styx +nwname /man/5/0intro +nwname /man/5/walk +nwqid /man/10/styx +nwqid /man/5/0intro +nwqid /man/5/walk +o'clock /man/9/canvas +o:r /man/10/mk +oand /man/2/w3c-xpointers +obey /man/3/eia +obj /man/1/limbo +obj /man/1/mk +obj /man/10/2a +obj /man/10/2c +obj /man/10/dynld +obj /man/10/mk +obj /man/2/spree +obj /man/2/spree-allow +obj /man/2/spree-cardlib +obj /man/2/ubfa +object /man/1/asm +object /man/1/bind +object /man/1/disdep +object /man/1/limbo +object /man/1/mash +object /man/1/tiny +object /man/10/0intro +object /man/10/2a +object /man/10/2c +object /man/10/2l +object /man/10/a.out +object /man/10/ar +object /man/10/conf +object /man/10/dynld +object /man/10/iar +object /man/10/inm +object /man/2/asn1 +object /man/2/dis +object /man/2/draw-display +object /man/2/draw-font +object /man/2/draw-screen +object /man/2/prefab-0intro +object /man/2/prefab-element +object /man/2/spki +object /man/2/spree +object /man/2/spree-allow +object /man/2/spree-cardlib +object /man/2/spree-gather +object /man/2/spree-objstore +object /man/2/sys-0intro +object /man/2/sys-bind +object /man/3/draw +object /man/4/spree +object /man/6/dis +object /man/6/sbl +object's /man/2/spree +object's /man/4/spree +objectdescriptor /man/2/asn1 +objective /man/2/security-0intro +objects /man/1/charon +objects /man/10/print +objects /man/2/draw-0intro +objects /man/2/draw-display +objects /man/2/draw-image +objects /man/2/prefab-0intro +objects /man/2/prefab-element +objects /man/2/prefab-environ +objects /man/2/spree +objects /man/2/spree-cardlib +objects /man/2/spree-objstore +objects /man/2/sys-print +objects /man/4/spree +objects /man/9/canvas +objid /man/2/asn1 +objid /man/4/spree +objs /man/2/spree +objstore /man/2/spree +objstore /man/2/spree-allow +objstore /man/2/spree-cardlib +objstore /man/2/spree-objstore +objstore.m /man/2/spree-objstore +objtag /man/2/ubfa +objtype /man/10/2a +objtype /man/10/2c +objtype /man/10/2l +objtype /man/10/acid +objtype /man/10/c2l +objtype /man/10/conf +objtype /man/10/memory +objtype /man/10/mk +objtype /man/10/strcat +objtype /man/2/spree +objtype /man/4/namespace +objtype /man/4/spree +obligation /man/9/1copyright +oblivion /man/3/ip +obootfile /man/2/dhcpclient +obs /man/1/dd +obscure /man/9/canvas +obscure /man/9/lower +obscure /man/9/raise +obscured /man/2/draw-screen +obscured /man/9/lower +obscured /man/9/raise +obscuring /man/2/draw-image +observe /man/9/entry +obsolete /man/10/error +obsolete /man/3/ftl +obsolete /man/3/ip +obsolete /man/6/sbl +obsolete /man/8/srv +obsolete /man/9/text +obtain /man/1/sh-file2chan +obtain /man/10/devattach +obtain /man/10/kproc +obtain /man/10/qlock +obtain /man/10/rune +obtain /man/10/sleep +obtain /man/2/dhcpclient +obtain /man/2/ida +obtain /man/2/lock +obtain /man/2/scsiio +obtain /man/2/security-0intro +obtain /man/2/styx +obtain /man/2/styxservers +obtain /man/2/sys-self +obtain /man/3/pnp +obtain /man/3/touch +obtain /man/4/palmsrv +obtain /man/6/keys +obtain /man/6/sbl +obtain /man/8/bootpd +obtain /man/8/collabsrv +obtain /man/8/getauthinfo +obtain /man/8/register +obtain /man/8/svc +obtained /man/1/charon +obtained /man/1/date +obtained /man/1/netstat +obtained /man/1/passwd +obtained /man/1/wm +obtained /man/10/acid +obtained /man/10/error +obtained /man/10/odbc +obtained /man/10/print +obtained /man/10/strcat +obtained /man/2/asn1 +obtained /man/2/bufio +obtained /man/2/draw-screen +obtained /man/2/filter-slip +obtained /man/2/keyring-ipint +obtained /man/2/keyset +obtained /man/2/security-random +obtained /man/2/security-ssl +obtained /man/2/sh +obtained /man/2/styxservers +obtained /man/2/sys-0intro +obtained /man/2/sys-print +obtained /man/2/tk +obtained /man/3/env +obtained /man/3/ip +obtained /man/3/touch +obtained /man/4/lockfs +obtained /man/8/getauthinfo +obtaining /man/10/odbc +obtaining /man/2/security-0intro +obtaining /man/8/register +obtains /man/10/acid +obtains /man/2/daytime +obtains /man/2/lock +obtains /man/2/security-0intro +obtains /man/2/styxservers +obtains /man/4/lockfs +obtains /man/8/register +obviate /man/10/2c +obvious /man/1/charon +obvious /man/1/miniterm +obvious /man/2/dis +obvious /man/2/security-0intro +obvious /man/4/tarfs +obvious /man/5/walk +obvious /man/6/keyboard +obviously /man/1/crypt +occasion /man/10/error +occasionally /man/1/miniterm +occasions /man/2/sys-dup +occupied /man/10/styx +occupied /man/2/prefab-element +occupied /man/3/pbus +occupied /man/9/canvas +occupied /man/9/grid +occupied /man/9/text +occupies /man/10/a.out +occupies /man/2/draw-0intro +occupies /man/2/prefab-0intro +occupies /man/2/prefab-compound +occupies /man/2/prefab-element +occupies /man/9/grid +occupies /man/9/text +occupy /man/2/draw-font +occupy /man/2/prefab-element +occupy /man/9/button +occupy /man/9/checkbutton +occupy /man/9/label +occupy /man/9/menubutton +occupy /man/9/radiobutton +occupying /man/10/a.out +occupying /man/2/prefab-element +occur /man/1/acme +occur /man/1/sh +occur /man/1/tr +occur /man/10/memory +occur /man/10/rune +occur /man/10/strcat +occur /man/2/string +occur /man/2/xml +occur /man/3/draw +occur /man/3/prog +occur /man/4/acme +occur /man/8/collabsrv +occur /man/8/create +occur /man/9/bind +occur /man/9/button +occur /man/9/canvas +occur /man/9/checkbutton +occur /man/9/menubutton +occur /man/9/options +occur /man/9/radiobutton +occur /man/9/text +occurred /man/1/grep +occurred /man/1/sh +occurred /man/10/sleep +occurred /man/2/dhcpclient +occurred /man/2/exception +occurred /man/2/keyring-getstring +occurred /man/2/prof +occurred /man/2/registries +occurred /man/2/sh +occurred /man/2/sys-0intro +occurred /man/2/sys-file2chan +occurred /man/2/translate +occurred /man/2/xml +occurred /man/3/prog +occurred /man/7/db +occurrence /man/1/acme +occurrence /man/1/brutus +occurrence /man/1/mk +occurrence /man/1/sh-regex +occurrence /man/10/intrenable +occurrence /man/10/memory +occurrence /man/10/mk +occurrence /man/10/rune +occurrence /man/10/strcat +occurrences /man/1/acme +occurrences /man/1/mk +occurrences /man/1/xd +occurrences /man/10/mk +occurring /man/1/ls +occurring /man/6/image +occurs /man/1/acme +occurs /man/1/charon +occurs /man/1/emu +occurs /man/1/os +occurs /man/1/sh-alphabet +occurs /man/1/yacc +occurs /man/10/intrenable +occurs /man/2/asn1 +occurs /man/2/bufio +occurs /man/2/debug +occurs /man/2/dis +occurs /man/2/fsproto +occurs /man/2/ida +occurs /man/2/palmfile +occurs /man/2/registries +occurs /man/2/sh +occurs /man/2/styxpersist +occurs /man/2/sys-byte2char +occurs /man/2/sys-fd2path +occurs /man/2/sys-file2chan +occurs /man/2/sys-fversion +occurs /man/2/sys-iounit +occurs /man/2/sys-open +occurs /man/2/ubfa +occurs /man/2/xml +occurs /man/3/ip +occurs /man/3/prog +occurs /man/8/plumber +occurs /man/9/bind +occurs /man/9/button +occurs /man/9/canvas +occurs /man/9/destroy +occurs /man/9/options +occurs /man/9/scale +occurs /man/9/text +ocs /man/1/tcs +oct /man/6/proto +octal /man/1/chmod +octal /man/1/cmp +octal /man/1/fc +octal /man/1/freq +octal /man/1/mathcalc +octal /man/1/mdb +octal /man/1/tr +octal /man/1/xd +octal /man/10/2l +octal /man/10/ar +octal /man/10/atoi +octal /man/10/print +octal /man/2/sys-print +octal /man/3/dup +octal /man/3/ether +octal /man/3/flash +octal /man/3/lpt +octal /man/3/prog +octal /man/6/font +octal /man/6/proto +octal /man/6/sexprs +octal /man/8/kfscmd +octet /man/2/asn1 +octet /man/8/httpd +octets /man/2/asn1 +octetstring /man/2/asn1 +odbc /man/10/odbc +odbc /man/7/db +odbc /man/7/dbsrv +odbc.c /man/10/odbc +odbc.exe /man/10/odbc +odd /man/10/plan9.ini +odd /man/2/draw-image +odd /man/3/draw +odd /man/3/eia +odd /man/6/colour +odd /man/9/canvas +odiv /man/2/w3c-xpointers +odnsserver /man/2/dhcpclient +odomainname /man/2/dhcpclient +odown /man/2/spree-cardlib +oeb /man/1/ebook +oexcl /man/2/sys-open +oexcl /man/5/open +oexec /man/10/devattach +oexec /man/5/open +offending /man/1/emu +offending /man/3/tls +offer /man/1/ftree +offer /man/1/miniterm +offer /man/1/passwd +offer /man/10/error +offer /man/8/dhcp +offer /man/8/dns +offered /man/1/bind +offered /man/1/collab +offered /man/1/webgrab +offered /man/2/security-0intro +offering /man/2/popup +offering /man/8/getauthinfo +offers /man/1/miniterm +offers /man/1/wm-misc +offers /man/2/security-0intro +offers /man/2/sexprs +offers /man/3/logfs +offers /man/8/collabsrv +offscreen /man/2/prefab-compound +offscreen /man/9/canvas +offset /man/1/read +offset /man/1/sh-file2chan +offset /man/1/strings +offset /man/1/xd +offset /man/10/a.out +offset /man/10/allocb +offset /man/10/dev +offset /man/10/devattach +offset /man/10/dynld +offset /man/10/inm +offset /man/10/newchan +offset /man/10/qio +offset /man/10/readnum +offset /man/10/styx +offset /man/10/styxserver +offset /man/2/attrdb +offset /man/2/bufio +offset /man/2/daytime +offset /man/2/dis +offset /man/2/disks +offset /man/2/draw-display +offset /man/2/draw-image +offset /man/2/palmfile +offset /man/2/spree +offset /man/2/spree-gather +offset /man/2/styx +offset /man/2/styxservers +offset /man/2/sys-0intro +offset /man/2/sys-dirread +offset /man/2/sys-file2chan +offset /man/2/sys-read +offset /man/2/sys-seek +offset /man/2/xml +offset /man/3/arch +offset /man/3/boot +offset /man/3/cons +offset /man/3/dbg +offset /man/3/ds +offset /man/3/flash +offset /man/3/fpga +offset /man/3/ftl +offset /man/3/i2c +offset /man/3/prog +offset /man/3/tv +offset /man/3/vid +offset /man/4/acme +offset /man/4/ramfile +offset /man/4/registry +offset /man/5/0intro +offset /man/5/read +offset /man/5/stat +offset /man/6/dis +offset /man/6/image +offset /man/6/sbl +offset /man/8/cs +offset /man/8/prep +offset /man/8/styxchat +offset /man/9/cursor +offset /man/9/grid +offset /man/9/text +offset1 /man/1/cmp +offset2 /man/1/cmp +offsets /man/1/cmp +offsets /man/1/cp +offsets /man/2/disks +offsets /man/2/styx +offsets /man/2/styxservers +offsets /man/4/acme +offsets /man/4/dbfs +offsets /man/6/dis +offsets /man/6/image +offsets /man/6/sbl +offvalue /man/9/checkbutton +ofile /man/10/5coff +ofile /man/10/kstrip +ofilter /man/2/w3c-xpointers +oflag /man/2/ip +oge /man/2/w3c-xpointers +oh /man/7/db +ohostname /man/2/dhcpclient +oid /man/2/asn1 +oid.nums /man/2/asn1 +ok /man/1/listen +ok /man/1/session +ok /man/1/sh-test +ok /man/1/tktester +ok /man/2/ip +ok /man/2/itslib +ok /man/2/security-auth +ok /man/2/tkclient +ok /man/2/venti +ok /man/2/wmclient +ok /man/4/factotum +ok /man/4/keyfs +ok /man/8/rdbgsrv +ok /man/9/canvas +old.bundle /man/1/alphabet-fs +old.bundle /man/1/fs +old.index.html /man/1/webgrab +older /man/1/0intro +older /man/1/ftest +older /man/1/mash +older /man/1/mk +older /man/10/dmainit +older /man/10/mk +older /man/10/ms2 +older /man/10/plan9.ini +older /man/2/0intro +older /man/2/daytime +older /man/2/keyring-crypt +older /man/2/palmfile +older /man/2/styxconv +older /man/3/audio +older /man/6/dis +older /man/6/image +older /man/6/ndb +oldfd /man/2/sys-dup +oldh /man/7/db +oldhash /man/4/keysrv +oldheaders /man/3/ip +oldtag /man/10/styx +oldtag /man/2/styx +oldtag /man/5/0intro +oldtag /man/5/flush +oldtag /man/8/styxchat +ole /man/2/w3c-xpointers +olease /man/2/dhcpclient +oleft /man/2/spree-cardlib +olive /man/9/types +omask /man/2/dhcpclient +omaxmsg /man/2/dhcpclient +omit /man/10/ms2 +omit /man/10/styxserver +omits /man/2/pop3 +omitted /man/1/acme +omitted /man/1/cal +omitted /man/1/chmod +omitted /man/1/lc +omitted /man/1/mash-make +omitted /man/1/mk +omitted /man/1/sh-alphabet +omitted /man/1/sh-file2chan +omitted /man/1/sh-tk +omitted /man/10/9load +omitted /man/10/mk +omitted /man/10/plan9.ini +omitted /man/10/print +omitted /man/2/ip +omitted /man/2/spree +omitted /man/2/sys-print +omitted /man/3/audio +omitted /man/3/ftl +omitted /man/4/acme +omitted /man/6/sbl +omitted /man/8/prep +omitted /man/9/canvas +omitted /man/9/grid +omitted /man/9/image +omitted /man/9/listbox +omitted /man/9/menu +omitted /man/9/pack +omitted /man/9/scale +omitted /man/9/text +omitting /man/3/ftl +omitting /man/9/variable +omod /man/2/w3c-xpointers +omode /man/10/devattach +omode /man/10/newchan +omode /man/2/styxservers +omode /man/2/sys-open +omul /man/2/w3c-xpointers +onametest /man/2/w3c-xpointers +one's /man/1/mathcalc +one's /man/2/keyring-0intro +oneg /man/2/w3c-xpointers +ones /man/10/intrenable +ones /man/10/plan9.ini +ones /man/2/0intro +ones /man/2/draw-display +ones /man/2/ip +ones /man/2/translate +ones /man/3/cons +ones /man/3/ds +ones /man/4/registry +ones /man/5/0intro +ones /man/6/colour +ones /man/6/image +ones /man/6/scancode +ones /man/8/styxchat +ones /man/9/text +onetbiosns /man/2/dhcpclient +onodetype /man/2/w3c-xpointers +onscreen /man/1/wm +onscreen /man/2/tkclient +onscreen /man/2/wmclient +onto /man/1/alphabet-main +onto /man/1/cat +onto /man/1/cp +onto /man/1/sh-expr +onto /man/10/error +onto /man/10/ms2 +onto /man/10/styxserver +onto /man/10ti925/epocimg +onto /man/2/prof +onto /man/2/spree-cardlib +onto /man/2/translate +onto /man/6/translate +onto /man/6/ubfa +onto /man/8/rstyxd +onto /man/9/bind +onto /man/9/image +ontpserver /man/2/dhcpclient +onvalue /man/9/checkbutton +ooo /man/6/sexprs +oor /man/2/w3c-xpointers +op /man/1/acme +op /man/1/alphabet-fs +op /man/1/chmod +op /man/1/fs +op /man/1/limbo +op /man/1/mathcalc +op /man/1/secstore +op /man/1/sh-alphabet +op /man/1/sh-regex +op /man/10/dev +op /man/2/dis +op /man/2/draw-image +op /man/2/sets +op /man/2/sexprs +op /man/2/spki +op /man/2/spree-cardlib +op /man/2/translate +op /man/2/ubfa +op /man/2/w3c-css +op /man/2/w3c-xpointers +op /man/3/dbg +op /man/6/dis +op /man/8/collabsrv +op /man/8/prep +op /man/9/text +op.lbs /man/2/translate +op.lbs.a /man/2/translate +op.lbs.g /man/2/translate +op.lbs.l /man/2/translate +op.lbs.r /man/2/translate +op2s /man/2/dis +op9auth /man/2/dhcpclient +op9fs /man/2/dhcpclient +opacity /man/2/draw-image +opacity /man/6/colour +opaque /man/10/2c +opaque /man/2/draw-display +opaque /man/2/draw-image +opaque /man/2/sets +opaque /man/6/colour +opath /man/2/w3c-xpointers +opcode /man/6/dis +opcodes /man/6/dis +openctl /man/3/vga +opendict /man/2/translate +opendicts /man/2/translate +opendisk /man/2/disks +opened /man/1/bind +opened /man/1/brutus +opened /man/1/charon +opened /man/1/ftree +opened /man/1/grid-query +opened /man/1/look +opened /man/1/sh +opened /man/1/sh-std +opened /man/1/tktester +opened /man/10/dev +opened /man/10/devattach +opened /man/10/newchan +opened /man/10/styxserver +opened /man/2/bufio +opened /man/2/dbm +opened /man/2/disks +opened /man/2/plumbmsg +opened /man/2/pop3 +opened /man/2/pslib +opened /man/2/styxservers +opened /man/2/sys-0intro +opened /man/2/sys-dial +opened /man/2/sys-pipe +opened /man/2/sys-stat +opened /man/2/xml +opened /man/3/boot +opened /man/3/cap +opened /man/3/cmd +opened /man/3/cons +opened /man/3/dynld +opened /man/3/i2c +opened /man/3/ip +opened /man/3/prog +opened /man/3/sd +opened /man/3/sign +opened /man/3/snarf +opened /man/3/srv +opened /man/3/tls +opened /man/4/acme +opened /man/4/dbfs +opened /man/4/factotum +opened /man/4/registry +opened /man/4/spree +opened /man/5/0intro +opened /man/5/clunk +opened /man/5/open +opened /man/5/read +opened /man/5/walk +opened /man/6/attrdb +opened /man/7/db +opened /man/8/collabsrv +opening /man/1/acme +opening /man/1/grid-query +opening /man/10/odbc +opening /man/10/styxserver +opening /man/2/bufio +opening /man/2/sys-fd2path +opening /man/2/sys-open +opening /man/2/xml +opening /man/3/cmd +opening /man/3/cons +opening /man/3/draw +opening /man/3/ether +opening /man/3/ip +opening /man/3/plap +opening /man/3/srv +opening /man/3/ssl +opening /man/3/tls +opening /man/4/dbfs +opening /man/4/factotum +opening /man/4/lockfs +opening /man/4/registry +opening /man/8/collabsrv +opening /man/9/0intro +openmode /man/10/devattach +openmode /man/2/styxservers +openok /man/2/styxservers +opens /man/1/dmview +opens /man/1/mash +opens /man/1/miniterm +opens /man/1/sh +opens /man/1/tktester +opens /man/10/styxserver +opens /man/2/attrdb +opens /man/2/dbm +opens /man/2/disks +opens /man/2/format +opens /man/2/palmfile +opens /man/2/pop3 +opens /man/2/smtp +opens /man/2/spree +opens /man/2/sys-open +opens /man/2/translate +opens /man/2/xml +opens /man/3/cmd +opens /man/3/ip +opens /man/3/plap +opens /man/3/srv9 +opens /man/3/vga +opens /man/4/export +opens /man/4/iostats +opens /man/4/spree +opens /man/5/open +opens /man/7/db +opens /man/8/rstyxd +opens /man/9/text +operand /man/1/disdep +operand /man/1/fc +operand /man/1/mash +operand /man/1/sh +operand /man/1/sh-expr +operand /man/10/acid +operand /man/2/dis +operand /man/2/w3c-xpointers +operand /man/6/dis +operand's /man/2/dis +operands /man/1/fc +operands /man/1/mash +operands /man/1/sh +operands /man/1/sh-expr +operands /man/2/dis +operands /man/2/w3c-xpointers +operands /man/6/dis +operate /man/1/cook +operate /man/1/wish +operate /man/1/wm-misc +operate /man/10/9load +operate /man/10/memory +operate /man/2/draw-0intro +operate /man/2/spree-cardlib +operate /man/2/styx +operate /man/3/prog +operate /man/6/proto +operate /man/9/canvas +operate /man/9/grid +operate /man/9/menu +operated /man/6/colour +operates /man/1/du +operates /man/2/filter-slip +operates /man/2/sys-millisec +operates /man/3/fs +operates /man/6/plumbing +operates /man/8/prep +operates /man/9/canvas +operates /man/9/text +operating /man/1/0intro +operating /man/1/chgrp +operating /man/1/chmod +operating /man/1/emu +operating /man/10/9load +operating /man/10/kprof +operating /man/10/plan9.ini +operating /man/2/disks +operating /man/2/srv +operating /man/2/sys-0intro +operating /man/2/sys-dup +operating /man/2/sys-iounit +operating /man/3/cmd +operating /man/3/cons +operating /man/3/kprof +operating /man/5/0intro +operating /man/6/keyboard +operating /man/8/dns +operating /man/8/prep +operation /man/1/acme +operation /man/1/alphabet-main +operation /man/1/chgrp +operation /man/1/deb +operation /man/1/fc +operation /man/1/gzip +operation /man/1/sh +operation /man/1/sh-expr +operation /man/1/sh-file2chan +operation /man/1/sh-tk +operation /man/10/2c +operation /man/10/dmainit +operation /man/10/plan9.ini +operation /man/10/qio +operation /man/10/styxserver +operation /man/2/dbm +operation /man/2/dhcpclient +operation /man/2/dis +operation /man/2/draw-image +operation /man/2/filter +operation /man/2/filter-deflate +operation /man/2/filter-slip +operation /man/2/fsproto +operation /man/2/ida +operation /man/2/keyring-0intro +operation /man/2/keyring-auth +operation /man/2/keyring-certtostr +operation /man/2/keyring-ipint +operation /man/2/math-export +operation /man/2/math-fp +operation /man/2/prefab-element +operation /man/2/scsiio +operation /man/2/secstore +operation /man/2/sexprs +operation /man/2/spki +operation /man/2/spki-verifier +operation /man/2/styx +operation /man/2/sys-0intro +operation /man/2/sys-open +operation /man/2/sys-stat +operation /man/2/ubfa +operation /man/2/w3c-css +operation /man/2/w3c-xpointers +operation /man/3/dbg +operation /man/3/dup +operation /man/3/tls +operation /man/5/0intro +operation /man/6/dis +operation /man/6/namespace +operation /man/9/canvas +operation /man/9/text +operations /man/1/acme +operations /man/1/fc +operations /man/1/ftree +operations /man/1/mash +operations /man/1/mash-make +operations /man/1/mprof +operations /man/1/nsbuild +operations /man/1/secstore +operations /man/1/sh +operations /man/1/sh-alphabet +operations /man/1/sh-expr +operations /man/1/sh-regex +operations /man/1/sh-tk +operations /man/1/tktester +operations /man/10/a.out +operations /man/10/allocb +operations /man/10/dev +operations /man/10/memory +operations /man/10/newchan +operations /man/10/qio +operations /man/10/strcat +operations /man/10/styxserver +operations /man/2/alphabet-intro +operations /man/2/bufio +operations /man/2/dbm +operations /man/2/dhcpclient +operations /man/2/diskblocks +operations /man/2/disks +operations /man/2/draw-0intro +operations /man/2/draw-context +operations /man/2/draw-display +operations /man/2/draw-image +operations /man/2/drawmux +operations /man/2/format +operations /man/2/ida +operations /man/2/ip +operations /man/2/keyring-certtostr +operations /man/2/math-0intro +operations /man/2/names +operations /man/2/prefab-0intro +operations /man/2/registries +operations /man/2/scsiio +operations /man/2/sets +operations /man/2/sexprs +operations /man/2/spki +operations /man/2/spki-verifier +operations /man/2/string +operations /man/2/styxpersist +operations /man/2/styxservers +operations /man/2/styxservers-nametree +operations /man/2/sys-0intro +operations /man/2/sys-bind +operations /man/2/sys-export +operations /man/2/sys-iounit +operations /man/2/ubfa +operations /man/2/wmsrv +operations /man/3/dbg +operations /man/3/draw +operations /man/3/flash +operations /man/3/indir +operations /man/3/mnt +operations /man/3/prog +operations /man/3/sign +operations /man/3/srv +operations /man/3/tls +operations /man/4/0intro +operations /man/4/acme +operations /man/4/dbfs +operations /man/4/ftpfs +operations /man/4/keyfs +operations /man/6/colour +operations /man/6/image +operations /man/6/namespace +operations /man/9/button +operations /man/9/canvas +operations /man/9/checkbutton +operations /man/9/choicebutton +operations /man/9/entry +operations /man/9/frame +operations /man/9/label +operations /man/9/listbox +operations /man/9/menu +operations /man/9/menubutton +operations /man/9/panel +operations /man/9/radiobutton +operations /man/9/scale +operations /man/9/scrollbar +operations /man/9/text +operator /man/1/alphabet-fs +operator /man/1/disdep +operator /man/1/fc +operator /man/1/fs +operator /man/1/mash +operator /man/1/mc +operator /man/1/sh +operator /man/1/sh-expr +operator /man/1/sh-regex +operator /man/1/sh-std +operator /man/1/sh-string +operator /man/10/2c +operator /man/10/acid +operator /man/10/c2l +operator /man/10/dynld +operator /man/2/command +operator /man/2/draw-0intro +operator /man/2/draw-image +operator /man/2/plumbmsg +operator /man/2/regex +operator /man/2/sets +operator /man/2/sh +operator /man/2/sys-self +operator /man/2/ubfa +operator /man/2/w3c-css +operator /man/2/w3c-xpointers +operator /man/3/dbg +operator /man/3/draw +operator /man/6/keyboard +operator /man/8/signer +operator /man/9/text +operators /man/1/acme +operators /man/1/alphabet-fs +operators /man/1/alphabet-main +operators /man/1/fc +operators /man/1/fs +operators /man/1/mash +operators /man/1/mathcalc +operators /man/1/mc +operators /man/1/mdb +operators /man/1/sh-expr +operators /man/1/units +operators /man/10/acid +operators /man/2/draw-image +operators /man/2/sh +operators /man/2/w3c-xpointers +operators /man/3/dbg +operators /man/6/keyboard +operators /man/6/regexp +operators /man/6/ubfa +operators /man/8/prep +operators /man/9/text +opf /man/1/ebook +opop3server /man/2/dhcpclient +opposed /man/2/dis +opposed /man/6/0intro +opposite /man/1/diff +opposite /man/1/gzip +opposite /man/1/tktester +opposite /man/2/sh +opposite /man/2/spree-cardlib +opposite /man/9/canvas +ops /man/10/styxserver +opt /man/1/sh-arg +opt /man/2/arg +opt /man/6/dis +opt /man/6/sbl +optargs /man/2/alphabet-intro +optimization /man/10/2c +option /man/1/9win +option /man/1/acme +option /man/1/alphabet-fs +option /man/1/alphabet-main +option /man/1/asm +option /man/1/auplay +option /man/1/avr +option /man/1/basename +option /man/1/bind +option /man/1/charon +option /man/1/cleanname +option /man/1/collab-clients +option /man/1/comm +option /man/1/cp +option /man/1/cprof +option /man/1/cpu +option /man/1/crypt +option /man/1/dd +option /man/1/deb +option /man/1/diff +option /man/1/du +option /man/1/ebook +option /man/1/echo +option /man/1/emu +option /man/1/fc +option /man/1/freq +option /man/1/fs +option /man/1/ftree +option /man/1/gettar +option /man/1/grid-register +option /man/1/gzip +option /man/1/idea +option /man/1/keyboard +option /man/1/kill +option /man/1/limbo +option /man/1/listen +option /man/1/logon +option /man/1/ls +option /man/1/man +option /man/1/math-misc +option /man/1/mdb +option /man/1/mk +option /man/1/mkdir +option /man/1/mprof +option /man/1/ns +option /man/1/os +option /man/1/p +option /man/1/passwd +option /man/1/prof +option /man/1/rcmd +option /man/1/rm +option /man/1/secstore +option /man/1/session +option /man/1/sh +option /man/1/sh-arg +option /man/1/sh-expr +option /man/1/stack +option /man/1/stream +option /man/1/tail +option /man/1/tcs +option /man/1/tee +option /man/1/time +option /man/1/tktester +option /man/1/touch +option /man/1/wc +option /man/1/wish +option /man/1/wm-misc +option /man/1/xd +option /man/1/yacc +option /man/1/zeros +option /man/10/2a +option /man/10/2c +option /man/10/2l +option /man/10/5cv +option /man/10/9load +option /man/10/acid +option /man/10/c2l +option /man/10/dynld +option /man/10/iar +option /man/10/kproc +option /man/10/mk +option /man/10/ms2 +option /man/10/odbc +option /man/10/plan9.ini +option /man/10/srclist +option /man/10/styxserver +option /man/10ti925/epocimg +option /man/10ti925/tihost +option /man/2/alphabet-intro +option /man/2/arg +option /man/2/dhcpclient +option /man/2/filter-deflate +option /man/2/prof +option /man/2/readdir +option /man/2/styxservers +option /man/2/sys-chdir +option /man/2/virgil +option /man/3/cmd +option /man/3/dbg +option /man/3/env +option /man/3/fs +option /man/3/logfs +option /man/3/srv9 +option /man/3/switch +option /man/4/archfs +option /man/4/dbfs +option /man/4/export +option /man/4/factotum +option /man/4/ftpfs +option /man/4/import +option /man/4/iostats +option /man/4/keyfs +option /man/4/kfs +option /man/4/lockfs +option /man/4/memfs +option /man/4/namespace +option /man/4/ramfile +option /man/4/registry +option /man/6/namespace +option /man/6/sbl +option /man/8/applylog +option /man/8/bootpd +option /man/8/changelogin +option /man/8/create +option /man/8/createsignerkey +option /man/8/cs +option /man/8/dhcp +option /man/8/dns +option /man/8/init +option /man/8/kfscmd +option /man/8/mangaload +option /man/8/mkfs +option /man/8/plumber +option /man/8/prep +option /man/8/rdbgsrv +option /man/8/rip +option /man/8/sntp +option /man/8/srv +option /man/8/styxchat +option /man/9/button +option /man/9/canvas +option /man/9/checkbutton +option /man/9/choicebutton +option /man/9/entry +option /man/9/frame +option /man/9/grid +option /man/9/image +option /man/9/label +option /man/9/listbox +option /man/9/menu +option /man/9/menubutton +option /man/9/options +option /man/9/pack +option /man/9/panel +option /man/9/radiobutton +option /man/9/scale +option /man/9/scrollbar +option /man/9/see +option /man/9/text +option /man/9/types +option /man/9/update +option's /man/1/sh-arg +option's /man/9/options +option's /man/9/text +optional /man/1/acme +optional /man/1/bind +optional /man/1/calendar +optional /man/1/charon +optional /man/1/collab-clients +optional /man/1/date +optional /man/1/emu +optional /man/1/fc +optional /man/1/filename +optional /man/1/listen +optional /man/1/look +optional /man/1/mash-make +optional /man/1/mc +optional /man/1/mk +optional /man/1/read +optional /man/1/secstore +optional /man/1/sh-file2chan +optional /man/1/sort +optional /man/1/tktester +optional /man/1/webgrab +optional /man/1/wish +optional /man/10/2l +optional /man/10/atoi +optional /man/10/iar +optional /man/10/mk +optional /man/10/plan9.ini +optional /man/10/qio +optional /man/2/cfg +optional /man/2/convcs +optional /man/2/dialog +optional /man/2/draw-image +optional /man/2/factotum +optional /man/2/geodesy +optional /man/2/math-linalg +optional /man/2/palmfile +optional /man/2/spki +optional /man/2/w3c-css +optional /man/2/w3c-xpointers +optional /man/3/cmd +optional /man/3/cons +optional /man/3/dynld +optional /man/3/fs +optional /man/3/ftl +optional /man/3/ip +optional /man/3/tls +optional /man/3/vga +optional /man/4/acme +optional /man/4/ramfile +optional /man/4/registry +optional /man/6/dis +optional /man/6/font +optional /man/6/proto +optional /man/6/sbl +optional /man/6/sexprs +optional /man/6/translate +optional /man/8/create +optional /man/8/cs +optional /man/9/bind +optional /man/9/frame +optional /man/9/text +optional /man/9/types +optionally /man/1/alphabet-main +optionally /man/1/cprof +optionally /man/1/du +optionally /man/1/echo +optionally /man/1/grid-monitor +optionally /man/1/itest +optionally /man/10/atoi +optionally /man/10/conf +optionally /man/10/iar +optionally /man/2/ether +optionally /man/2/spki-verifier +optionally /man/2/sys-dirread +optionally /man/2/sys-export +optionally /man/2/translate +optionally /man/3/dynld +optionally /man/3/indir +optionally /man/4/keysrv +optionally /man/4/kfs +optionally /man/8/rstyxd +optionally /man/9/button +optionally /man/9/checkbutton +optionally /man/9/grid +optionally /man/9/label +optionally /man/9/menubutton +optionally /man/9/radiobutton +optionally /man/9/text +optioncfg /man/2/translate +options /man/1/alphabet-abc +options /man/1/alphabet-fs +options /man/1/alphabet-grid +options /man/1/auplay +options /man/1/bind +options /man/1/charon +options /man/1/chgrp +options /man/1/cmp +options /man/1/collab +options /man/1/cook +options /man/1/cp +options /man/1/cprof +options /man/1/crypt +options /man/1/date +options /man/1/dd +options /man/1/deb +options /man/1/disdep +options /man/1/du +options /man/1/emu +options /man/1/filename +options /man/1/fmt +options /man/1/freq +options /man/1/fs +options /man/1/ftree +options /man/1/grep +options /man/1/grid-ns +options /man/1/grid-register +options /man/1/itest +options /man/1/keyboard +options /man/1/lc +options /man/1/limbo +options /man/1/look +options /man/1/ls +options /man/1/math-misc +options /man/1/mk +options /man/1/mprof +options /man/1/plumb +options /man/1/prof +options /man/1/rm +options /man/1/secstore +options /man/1/sh-alphabet +options /man/1/sh-arg +options /man/1/sh-tk +options /man/1/sort +options /man/1/stack +options /man/1/tiny +options /man/1/tktester +options /man/1/tr +options /man/1/unicode +options /man/1/wc +options /man/1/webgrab +options /man/1/wm-misc +options /man/1/wm-sh +options /man/1/xd +options /man/1/yacc +options /man/10/2a +options /man/10/2c +options /man/10/2l +options /man/10/5coff +options /man/10/5cv +options /man/10/9load +options /man/10/acid +options /man/10/c2l +options /man/10/devattach +options /man/10/inm +options /man/10/mk +options /man/10/ms2 +options /man/10/plan9.ini +options /man/10ti925/epocimg +options /man/10ti925/tihost +options /man/2/alphabet-intro +options /man/2/arg +options /man/2/dhcpclient +options /man/2/dis +options /man/2/print +options /man/2/sh +options /man/2/spree-cardlib +options /man/2/tk +options /man/2/tkclient +options /man/3/sd +options /man/3/srv9 +options /man/4/archfs +options /man/4/cpu +options /man/4/dbfs +options /man/4/dossrv +options /man/4/factotum +options /man/4/ftpfs +options /man/4/import +options /man/4/kfs +options /man/4/memfs +options /man/4/namespace +options /man/4/tarfs +options /man/6/dis +options /man/6/namespace +options /man/8/applylog +options /man/8/create +options /man/8/dhcp +options /man/8/httpd +options /man/8/kfscmd +options /man/8/mkfs +options /man/8/ping +options /man/8/prep +options /man/8/rdbgsrv +options /man/8/shutdown +options /man/8/styxmon +options /man/9/0intro +options /man/9/button +options /man/9/canvas +options /man/9/checkbutton +options /man/9/choicebutton +options /man/9/cursor +options /man/9/entry +options /man/9/frame +options /man/9/grid +options /man/9/image +options /man/9/label +options /man/9/listbox +options /man/9/menu +options /man/9/menubutton +options /man/9/options +options /man/9/pack +options /man/9/panel +options /man/9/radiobutton +options /man/9/scale +options /man/9/scrollbar +options /man/9/see +options /man/9/text +options /man/9/types +options /man/9/update +opts /man/1/sh-arg +opts /man/2/alphabet-intro +or'd /man/2/dhcpclient +or'd /man/2/readdir +or'd /man/2/sys-bind +or'd /man/2/sys-open +orange /man/9/types +orclose /man/2/styxservers +orclose /man/2/sys-open +orclose /man/3/srv +orclose /man/5/clunk +orclose /man/5/open +ord /man/2/spree-cardlib +ordered /man/1/tr +ordered /man/2/asn1 +ordered /man/2/stringinttab +ordered /man/2/sys-tokenize +ordered /man/4/factotum +ordered /man/9/canvas +ordered /man/9/pack +ordering /man/1/ls +ordering /man/1/sort +ordering /man/2/stringinttab +ordering /man/6/colour +ordering /man/6/image +orderly /man/10/qlock +ordinal /man/2/spree-cardlib +ordinary /man/10/styxserver +ordinary /man/2/draw-screen +ordinary /man/2/sys-0intro +ordinary /man/2/sys-stat +ordinary /man/3/cons +ordinary /man/4/ftpfs +ordinary /man/6/keyboard +ordnance /man/2/geodesy +ordwr /man/10/devattach +ordwr /man/10/newchan +ordwr /man/10/styxserver +ordwr /man/2/bufio +ordwr /man/2/dbm +ordwr /man/2/disks +ordwr /man/2/factotum +ordwr /man/2/styxservers +ordwr /man/2/sys-open +ordwr /man/2/sys-pipe +ordwr /man/3/arch +ordwr /man/3/srv9 +ordwr /man/5/open +oread /man/1/yacc +oread /man/10/devattach +oread /man/10/newchan +oread /man/10/styxserver +oread /man/2/bufio +oread /man/2/dbm +oread /man/2/disks +oread /man/2/palmfile +oread /man/2/styxservers +oread /man/2/sys-open +oread /man/5/open +orebindingtime /man/2/dhcpclient +ored /man/2/prof +ored /man/2/styxservers +orenewaltime /man/2/dhcpclient +organise /man/6/attrdb +organised /man/3/ftl +organised /man/3/tv +organised /man/4/namespace +organised /man/6/image +organization /man/2/sys-0intro +organized /man/2/sys-0intro +organized /man/9/menu +organized /man/9/menubutton +organizes /man/2/draw-screen +orient /man/9/options +orient /man/9/scale +orient /man/9/scrollbar +orientation /man/2/prefab-element +orientation /man/2/print +orientation /man/2/spree-cardlib +orientation /man/9/options +orientation /man/9/scale +orientation /man/9/scrollbar +oriented /man/1/diff +oriented /man/10/dmainit +oriented /man/2/keyring-getmsg +oriented /man/2/plumbmsg +oriented /man/3/ds +oriented /man/3/ftl +oriented /man/3/ip +oriented /man/3/mnt +oriented /man/6/keytext +oright /man/2/spree-cardlib +origin /man/1/webgrab +origin /man/1/wm +origin /man/2/debug +origin /man/2/draw-0intro +origin /man/2/draw-context +origin /man/2/draw-image +origin /man/2/math-linalg +origin /man/2/palmfile +origin /man/2/styxservers +origin /man/2/tk +origin /man/2/w3c-xpointers +origin /man/2/wmsrv +origin /man/4/acme +origin /man/6/sbl +origin /man/9/bind +origin /man/9/canvas +origin /man/9/panel +origin /man/9/see +original /man/1/acme +original /man/1/bind +original /man/1/cp +original /man/1/cpu +original /man/1/mash +original /man/1/ns +original /man/1/sh +original /man/1/sh-alphabet +original /man/1/sort +original /man/1/uuencode +original /man/1/webgrab +original /man/1/wm-misc +original /man/10/allocb +original /man/10/lock +original /man/2/asn1 +original /man/2/disks +original /man/2/draw-context +original /man/2/draw-screen +original /man/2/filter-deflate +original /man/2/filter-slip +original /man/2/format +original /man/2/geodesy +original /man/2/ida +original /man/2/plumbmsg +original /man/2/security-0intro +original /man/2/security-ssl +original /man/2/sh +original /man/2/spki +original /man/2/styxconv +original /man/2/styxservers +original /man/2/sys-bind +original /man/2/sys-fd2path +original /man/2/sys-fversion +original /man/2/translate +original /man/2/w3c-css +original /man/3/srv +original /man/5/0intro +original /man/6/sbl +original /man/6/ubfa +original /man/9/button +original /man/9/image +originally /man/1/alphabet-fs +originally /man/1/bind +originally /man/1/fs +originally /man/1/sh +originally /man/1/sh-std +originally /man/10/dmainit +originally /man/10/newchan +originally /man/10/styxserver +originally /man/2/ida +originally /man/2/ir +originally /man/2/spki +originally /man/2/sys-bind +originally /man/2/xml +originally /man/4/lockfs +originally /man/4/registry +originally /man/6/man +originally /man/8/init +originals /man/1/wm-sh +originated /man/1/stack +originated /man/4/acme +origins /man/10/plan9.ini +orinoco /man/10/plan9.ini +orouter /man/2/dhcpclient +os /man/1/alphabet-abc +os /man/1/alphabet-grid +os /man/1/mk +os /man/1/os +os /man/10/5cv +os /man/10/9load +os /man/10/allocb +os /man/10/conf +os /man/10/devattach +os /man/10/dmainit +os /man/10/error +os /man/10/inb +os /man/10/intrenable +os /man/10/kbdputc +os /man/10/lock +os /man/10/mk +os /man/10/newchan +os /man/10/parsecmd +os /man/10/qio +os /man/10/qlock +os /man/10/readnum +os /man/10/ref +os /man/10/sleep +os /man/2/geodesy +os /man/2/sys-0intro +os /man/2/sys-dial +os /man/2/sys-export +os /man/2/sys-file2chan +os /man/2/sys-iounit +os /man/2/sys-print +os /man/3/arch +os /man/3/audio +os /man/3/boot +os /man/3/cap +os /man/3/cmd +os /man/3/cons +os /man/3/dbg +os /man/3/draw +os /man/3/ds +os /man/3/dup +os /man/3/dynld +os /man/3/eia +os /man/3/env +os /man/3/ether +os /man/3/flash +os /man/3/floppy +os /man/3/fpga +os /man/3/ftl +os /man/3/gpio +os /man/3/i2c +os /man/3/i82365 +os /man/3/indir +os /man/3/ip +os /man/3/kprof +os /man/3/logfs +os /man/3/lpt +os /man/3/mnt +os /man/3/mpeg +os /man/3/pbus +os /man/3/pipe +os /man/3/plap +os /man/3/pnp +os /man/3/pointer +os /man/3/prog +os /man/3/root +os /man/3/rtc +os /man/3/sd +os /man/3/sign +os /man/3/srv +os /man/3/switch +os /man/3/tinyfs +os /man/3/tls +os /man/3/touch +os /man/3/tv +os /man/3/usb +os /man/3/vga +os /man/3/vid +os /man/4/namespace +os /man/6/dis +os /man/6/sbl +os /man/8/init +os /man/8/mangaload +os /man/8/prep +os /man/8/rdbgsrv +os.b /man/1/os +os.c /man/10/lock +os2en /man/2/geodesy +oseek /man/1/dd +osenv.errstr /man/10/error +osgb36 /man/2/geodesy +osinit /man/3/rtc +osinit /man/8/init +osinit.dis /man/10/9load +osinit.dis /man/10/plan9.ini +osinit.dis /man/3/root +osinit.dis /man/8/init +osmtpserver /man/2/dhcpclient +otftpserver /man/2/dhcpclient +other's /man/2/keyring-0intro +other's /man/6/auth +otherhand /man/10/devattach +otrunc /man/10/devattach +otrunc /man/2/styxservers +otrunc /man/2/sys-open +otrunc /man/5/open +otrunc /man/5/stat +ouch /man/2/tk +oup /man/2/spree-cardlib +ouput /man/4/dossrv +ousterhout's /man/2/tk +outb /man/10/inb +outbound /man/4/factotum +outcome /man/10/strcat +outer /man/10/2c +outer /man/10/error +outer /man/9/0intro +outermost /man/1/disdep +outermost /man/1/sh-alphabet +outermost /man/10/error +outermost /man/2/asn1 +outermost /man/2/readdir +outermost /man/2/sh +outfile /man/1/cook +outfile /man/10/5cv +outgoing /man/3/ip +outgoing /man/3/ssl +outgoing /man/3/tls +outgooing /man/3/ip +outl /man/10/inb +outline /man/2/draw-image +outline /man/9/canvas +outlined /man/2/dialog +outlined /man/2/draw-image +outlines /man/9/canvas +outlinewidth /man/9/canvas +outlining /man/2/draw-image +outlining /man/3/draw +output /man/1/acme +output /man/1/alphabet-abc +output /man/1/alphabet-fs +output /man/1/alphabet-grid +output /man/1/asm +output /man/1/auplay +output /man/1/basename +output /man/1/cat +output /man/1/cleanname +output /man/1/cmp +output /man/1/collab +output /man/1/comm +output /man/1/cook +output /man/1/crypt +output /man/1/date +output /man/1/dd +output /man/1/diff +output /man/1/disdep +output /man/1/du +output /man/1/echo +output /man/1/env +output /man/1/fc +output /man/1/filename +output /man/1/fmt +output /man/1/fs +output /man/1/gettar +output /man/1/grep +output /man/1/gzip +output /man/1/idea +output /man/1/itest +output /man/1/kill +output /man/1/lc +output /man/1/limbo +output /man/1/listen +output /man/1/ls +output /man/1/man +output /man/1/mash +output /man/1/mash-tk +output /man/1/mathcalc +output /man/1/mc +output /man/1/mk +output /man/1/mprof +output /man/1/ns +output /man/1/os +output /man/1/p +output /man/1/prof +output /man/1/ps +output /man/1/read +output /man/1/secstore +output /man/1/sh +output /man/1/sh-arg +output /man/1/sh-expr +output /man/1/sh-file2chan +output /man/1/sh-std +output /man/1/sort +output /man/1/stack +output /man/1/stream +output /man/1/tail +output /man/1/tcs +output /man/1/tee +output /man/1/telnet +output /man/1/timestamp +output /man/1/tiny +output /man/1/tkcmd +output /man/1/tktester +output /man/1/tr +output /man/1/tsort +output /man/1/unicode +output /man/1/uniq +output /man/1/uuencode +output /man/1/wc +output /man/1/webgrab +output /man/1/wm-sh +output /man/1/xd +output /man/1/yacc +output /man/1/zeros +output /man/10/2a +output /man/10/2c +output /man/10/2l +output /man/10/5cv +output /man/10/acid +output /man/10/c2l +output /man/10/inb +output /man/10/inm +output /man/10/mk +output /man/10/ms2 +output /man/10/odbc +output /man/10/print +output /man/10/qio +output /man/10/srclist +output /man/10/xalloc +output /man/10ti925/epocimg +output /man/2/arg +output /man/2/asn1 +output /man/2/bufio +output /man/2/draw-context +output /man/2/filter-deflate +output /man/2/imagefile +output /man/2/ip +output /man/2/keyring-getstring +output /man/2/keyring-rc4 +output /man/2/keyring-sha1 +output /man/2/math-export +output /man/2/plumbmsg +output /man/2/print +output /man/2/prof +output /man/2/scsiio +output /man/2/security-0intro +output /man/2/sexprs +output /man/2/sys-0intro +output /man/2/sys-dup +output /man/2/sys-print +output /man/2/ubfa +output /man/2/w3c-css +output /man/3/audio +output /man/3/cmd +output /man/3/cons +output /man/3/dbg +output /man/3/draw +output /man/3/eia +output /man/3/fpga +output /man/3/ip +output /man/3/mpeg +output /man/3/usb +output /man/3/vid +output /man/4/acme +output /man/4/cpu +output /man/4/iostats +output /man/6/colour +output /man/6/man +output /man/8/applylog +output /man/8/bootpd +output /man/8/create +output /man/8/cs +output /man/8/dhcp +output /man/8/fpgaload +output /man/8/ftl +output /man/8/mkfs +output /man/8/ping +output /man/8/prep +output /man/8/rdbgsrv +output /man/8/srv +output /man/8/styxchat +output /man/8/touchcal +outputs /man/1/acme +outputs /man/1/du +outputs /man/1/mash +outputs /man/1/math-misc +outputs /man/1/mc +outputs /man/1/mprof +outputs /man/1/prof +outputs /man/1/sh-std +outputs /man/1/tcs +outputs /man/10/c2l +outputs /man/2/sys-werrstr +outputs /man/3/audio +outs /man/10/inb +outsb /man/10/inb +outside /man/1/grid-ns +outside /man/1/tktester +outside /man/1/tsort +outside /man/10/acid +outside /man/10/conf +outside /man/10/devattach +outside /man/10/dmainit +outside /man/10/intrenable +outside /man/2/draw-image +outside /man/2/plumbmsg +outside /man/2/sexprs +outside /man/2/sys-0intro +outside /man/2/sys-self +outside /man/2/ubfa +outside /man/2/w3c-css +outside /man/3/draw +outside /man/3/kprof +outside /man/3/tls +outside /man/4/cpu +outside /man/4/iostats +outside /man/4/namespace +outside /man/5/0intro +outside /man/6/ubfa +outside /man/8/touchcal +outside /man/9/bind +outside /man/9/canvas +outside /man/9/entry +outside /man/9/grab +outside /man/9/grid +outside /man/9/listbox +outside /man/9/options +outside /man/9/panel +outside /man/9/scrollbar +outsl /man/10/inb +outss /man/10/inb +outstanding /man/1/sh-file2chan +outstanding /man/2/styxpersist +outstanding /man/2/wmsrv +outstanding /man/5/0intro +outstanding /man/5/version +oval /man/9/canvas +oval's /man/9/canvas +ovals /man/9/canvas +ovendor /man/2/dhcpclient +ovendorclass /man/2/dhcpclient +ovendorinfo /man/2/dhcpclient +overall /man/2/draw-image +overall /man/2/regex +overall /man/9/canvas +overall /man/9/menu +overall /man/9/text +overestimate /man/9/canvas +overflow /man/10/memory +overflow /man/10/strcat +overflow /man/2/math-fp +overflow /man/2/print +overflows /man/2/sys-millisec +overflows /man/3/pbus +overhead /man/1/charon +overhead /man/2/dict +overhead /man/2/styx +overhead /man/4/iostats +overhead /man/8/ftl +overkill /man/6/login +overlap /man/10/memory +overlap /man/6/image +overlap /man/8/prep +overlap /man/9/canvas +overlap /man/9/lower +overlap /man/9/raise +overlap /man/9/scrollbar +overlapping /man/10/memory +overlapping /man/10/strcat +overlapping /man/2/math-fp +overlapping /man/3/draw +overlapping /man/9/canvas +overlaps /man/8/prep +overlay /man/3/mpeg +overlay /man/3/vga +overlays /man/1/blur +overridden /man/1/acme +overridden /man/1/emu +overridden /man/10/9load +overridden /man/9/text +override /man/1/charon +override /man/1/mk +override /man/10/acid +override /man/10/mk +override /man/10/plan9.ini +override /man/2/styxservers +override /man/2/translate +override /man/5/0intro +override /man/9/options +override /man/9/text +overriden /man/9/text +overrides /man/1/mk +overrides /man/10/mk +overrides /man/3/draw +overrides /man/9/menu +overrides /man/9/options +overrides /man/9/text +overriding /man/9/listbox +overstrike /man/9/text +overview /man/1/0intro +overview /man/2/tk +overview /man/4/namespace +overview /man/9/0intro +overview /man/9/canvas +overwrite /man/1/session +overwrite /man/1/uuencode +overwrite /man/2/palmfile +overwriting /man/1/gettar +overwritten /man/1/mv +overwritten /man/1/tiny +overwritten /man/10/getfields +ovfl /man/2/math-fp +ovid /man/1/mux +owing /man/8/ftl +owing /man/8/ping +owned /man/1/kill +owned /man/2/spree-cardlib +owned /man/2/styxservers +owned /man/3/cap +owned /man/3/draw +owned /man/3/srv +owned /man/4/memfs +owned /man/6/users +owner /man/1/alphabet-fs +owner /man/1/chgrp +owner /man/1/chmod +owner /man/1/cp +owner /man/1/fs +owner /man/1/ls +owner /man/1/ps +owner /man/10/devattach +owner /man/10/eve +owner /man/10/kproc +owner /man/10/styxserver +owner /man/2/debug +owner /man/2/keyring-0intro +owner /man/2/keyring-gensk +owner /man/2/keyset +owner /man/2/registries +owner /man/2/security-0intro +owner /man/2/spree +owner /man/2/spree-cardlib +owner /man/2/sys-open +owner /man/2/sys-stat +owner /man/3/boot +owner /man/3/cap +owner /man/3/dynld +owner /man/3/fs +owner /man/3/sign +owner /man/3/srv +owner /man/4/factotum +owner /man/4/memfs +owner /man/4/registry +owner /man/5/0intro +owner /man/5/open +owner /man/5/stat +owner /man/6/keytext +owner /man/6/proto +owner /man/8/create +owner /man/8/kfscmd +owner /man/8/signer +ownerid /man/2/spree-cardlib +owners /man/2/sys-stat +owners /man/8/mkfs +ownership /man/1/chgrp +ownership /man/2/security-0intro +ownership /man/2/sys-0intro +ownership /man/3/fs +ownership /man/4/kfs +ownership /man/8/applylog +owning /man/3/ip +owning /man/6/proto +owning /man/8/create +owns /man/2/keyset +owns /man/2/security-0intro +owns /man/2/spree-cardlib +owns /man/9/grab +owrite /man/10/devattach +owrite /man/10/newchan +owrite /man/10/styxserver +owrite /man/2/bufio +owrite /man/2/styxservers +owrite /man/2/sys-open +owrite /man/5/open +owwwserver /man/2/dhcpclient +p.b /man/1/p +p.i /man/6/man +p.x /man/6/font +p.y /man/6/font +p0,p1 /man/2/draw-image +p9any /man/4/factotum +p9sk1 /man/4/factotum +pa /man/2/ubfa +pa /man/6/ubfa +pack /man/1/tktester +pack /man/2/ida +pack /man/2/palmfile +pack /man/2/plumbmsg +pack /man/2/prefab-element +pack /man/2/sexprs +pack /man/2/spki +pack /man/2/spree-cardlib +pack /man/2/styx +pack /man/6/colour +pack /man/9/0intro +pack /man/9/grid +pack /man/9/pack +package /man/1/ebook +package /man/2/keyring-certtostr +package /man/6/man +package /man/8/create +package.tgz /man/4/ftpfs +packaged /man/2/prefab-element +packages /man/1/man +packages /man/8/create +packblock /man/10/allocb +packdir /man/2/styx +packdir /man/5/stat +packdirsize /man/2/styx +packed /man/1/tktester +packed /man/2/asn1 +packed /man/2/disks +packed /man/2/draw-image +packed /man/2/keyring-getmsg +packed /man/2/plumbmsg +packed /man/2/popup +packed /man/2/sets +packed /man/2/spree-cardlib +packed /man/2/styx +packed /man/2/tabs +packed /man/3/tls +packed /man/3/vga +packed /man/5/walk +packed /man/6/colour +packed /man/6/dis +packed /man/9/canvas +packed /man/9/pack +packedsize /man/2/sexprs +packedsize /man/2/styx +packer /man/9/pack +packet /man/10/qio +packet /man/3/ether +packet /man/3/ip +packet /man/3/pbus +packet /man/3/plap +packet /man/3/usb +packet /man/4/palmsrv +packet /man/8/ping +packet /man/8/rip +packets /man/10/plan9.ini +packets /man/2/ether +packets /man/2/ip +packets /man/3/ether +packets /man/3/ip +packets /man/3/pbus +packets /man/3/usb +packets /man/8/ping +packets /man/8/rip +packing /man/1/dd +packing /man/1/tktester +packing /man/10/styx +packing /man/2/spree-cardlib +packing /man/2/venti +packing /man/6/colour +packing /man/9/pack +packopts /man/2/spree-cardlib +packs /man/2/devpointer +packs /man/2/plumbmsg +packs /man/2/prefab-element +packs /man/9/pack +pad /man/1/dd +pad /man/10/allocb +pad /man/10/print +pad /man/9/grid +padblock /man/10/allocb +padded /man/1/tr +padded /man/1/xd +padded /man/10/5cv +padded /man/10/ar +padded /man/10/print +padded /man/2/encoding +padded /man/2/keyring-getmsg +padded /man/2/sys-print +padded /man/6/font +padded /man/6/image +padding /man/1/sh-string +padding /man/1/tktester +padding /man/10/allocb +padding /man/10/ar +padding /man/2/sets +padding /man/3/pbus +padding /man/3/tls +padding /man/6/colour +padding /man/9/grid +padding /man/9/options +padding /man/9/pack +padding /man/9/text +padl /man/1/sh-string +padr /man/1/sh-string +pads /man/3/pbus +pads /man/9/grid +padx /man/9/grid +padx /man/9/options +padx /man/9/pack +padx /man/9/text +pady /man/9/grid +pady /man/9/options +pady /man/9/pack +pady /man/9/text +pag /man/2/dbm +page /man/1/0intro +page /man/1/bind +page /man/1/charon +page /man/1/chgrp +page /man/1/man +page /man/1/p +page /man/1/webgrab +page /man/10/a.out +page /man/10/dmainit +page /man/10/ms2 +page /man/10/xalloc +page /man/10ti925/epocimg +page /man/10ti925/tihost +page /man/2/0intro +page /man/2/convcs +page /man/2/draw-example +page /man/2/filter +page /man/2/print +page /man/2/spree +page /man/2/tabs +page /man/2/w3c-css +page /man/3/flash +page /man/3/ip +page /man/6/keyboard +page /man/6/man +page /man/6/ubfa +page /man/9/0intro +page /man/9/1copyright +page /man/9/scrollbar +page /man/9/text +pages /man/1/charon +pages /man/1/ebook +pages /man/1/man +pages /man/1/tktester +pages /man/1/webgrab +pages /man/1/wm-misc +pages /man/10/intrenable +pages /man/2/0intro +pages /man/2/filter +pages /man/2/math-0intro +pages /man/2/print +pages /man/2/tabs +pages /man/3/0intro +pages /man/4/namespace +pages /man/6/man +pages /man/6/ndb +pages /man/8/httpd +pages /man/9/0intro +pages /man/9/1copyright +pages /man/9/canvas +pages /man/9/entry +pages /man/9/listbox +pages /man/9/scrollbar +pages /man/9/text +pagesm /man/1/miniterm +paginate /man/1/p +paint /man/2/draw-display +paint /man/2/draw-example +paint /man/2/draw-screen +paint /man/2/mpeg +paint /man/2/prefab-compound +pair /man/1/charon +pair /man/1/dd +pair /man/1/mash +pair /man/1/sh +pair /man/1/sh-csv +pair /man/2/attrdb +pair /man/2/dbm +pair /man/2/dict +pair /man/2/encoding +pair /man/2/ether +pair /man/2/hash +pair /man/2/keyring-0intro +pair /man/2/keyring-gensk +pair /man/2/regex +pair /man/2/security-0intro +pair /man/2/security-login +pair /man/2/string +pair /man/2/sys-dial +pair /man/3/prof +pair /man/3/prog +pair /man/4/factotum +pair /man/4/registry +pair /man/6/attrdb +pair /man/6/keyboard +pair /man/9/text +paired /man/2/string +paired /man/4/registry +pairs /man/1/acme +pairs /man/1/diff +pairs /man/1/disdep +pairs /man/1/grid-query +pairs /man/1/mash +pairs /man/1/sh +pairs /man/1/sh-arg +pairs /man/1/sh-std +pairs /man/1/stack +pairs /man/2/attrdb +pairs /man/2/cfg +pairs /man/2/dbm +pairs /man/2/dict +pairs /man/2/dis +pairs /man/2/env +pairs /man/2/factotum +pairs /man/2/hash +pairs /man/2/keyring-0intro +pairs /man/2/plumbmsg +pairs /man/2/pop3 +pairs /man/2/registries +pairs /man/2/spree +pairs /man/2/stringinttab +pairs /man/2/styxpersist +pairs /man/2/xml +pairs /man/3/prof +pairs /man/4/factotum +pairs /man/4/import +pairs /man/4/registry +pairs /man/6/attrdb +pairs /man/6/plumbing +pairs /man/8/collabsrv +pairs /man/8/cs +pairs /man/9/button +pairs /man/9/canvas +pairs /man/9/checkbutton +pairs /man/9/choicebutton +pairs /man/9/entry +pairs /man/9/frame +pairs /man/9/grid +pairs /man/9/label +pairs /man/9/listbox +pairs /man/9/menu +pairs /man/9/menubutton +pairs /man/9/pack +pairs /man/9/panel +pairs /man/9/radiobutton +pairs /man/9/scale +pairs /man/9/scrollbar +pairs /man/9/text +pairwise /man/1/mash +pairwise /man/1/sh +pal /man/3/vid +paleblue /man/2/draw-display +palebluegreen /man/2/draw-display +palegreen /man/2/draw-display +palegreyblue /man/2/draw-display +palegreygreen /man/2/draw-display +palette /man/1/collab-clients +palette /man/1/wm-misc +palette /man/3/vga +palettedepth /man/3/vga +paleyellow /man/2/draw-display +palm /man/2/palmfile +palm /man/4/palmsrv +palmfile /man/2/palmfile +palmfile /man/4/palmsrv +palmfile.b /man/2/palmfile +palmfile.m /man/2/palmfile +palmsrv /man/4/palmsrv +palmsrv.b /man/4/palmsrv +palm® /man/2/palmfile +palm™ /man/2/palmfile +pan /man/3/vga +pane /man/1/session +panel /man/1/charon +panel /man/1/deb +panel /man/1/ftree +panel /man/1/logon +panel /man/1/wm-misc +panel /man/2/selectfile +panel /man/2/tk +panel /man/3/touch +panel /man/3/vid +panel /man/8/touchcal +panel /man/9/panel +panel's /man/9/panel +panels /man/1/charon +panels /man/1/deb +panels /man/3/touch +panelx /man/9/panel +panely /man/9/panel +panic /man/10/allocb +panic /man/10/devattach +panic /man/10/error +panic /man/10/panic +panic /man/10/ref +panic /man/10/sleep +panic /man/10/xalloc +panning /man/3/vga +pap /man/3/ip +paper /man/1/0intro +paper /man/10ti925/tihost +paper /man/2/draw-image +paper /man/2/print +paper /man/2/pslib +paper /man/2/spree +paper /man/6/colour +paper.cfg /man/2/print +papers /man/1/0intro +papers /man/2/print +par /man/1/cook +parabolic /man/2/draw-example +paragraph /man/1/acme +paragraph /man/6/man +paragraphs /man/6/man +parallel /man/1/cp +parallel /man/1/mk +parallel /man/1/sh +parallel /man/1/sh-tk +parallel /man/10/mk +parallel /man/10ti925/tihost +parallel /man/2/sh +parallel /man/3/lpt +param /man/2/filter +param /man/2/filter-deflate +param /man/2/filter-slip +param /man/2/styxservers +param /man/7/db +paramaterized /man/2/convcs +parameter /man/1/collab-clients +parameter /man/1/mash-tk +parameter /man/1/mc +parameter /man/1/miniterm +parameter /man/10/2c +parameter /man/10/a.out +parameter /man/10/c2l +parameter /man/10/devattach +parameter /man/10/dynld +parameter /man/10/inm +parameter /man/10/ntsrv +parameter /man/10/odbc +parameter /man/10/plan9.ini +parameter /man/10/print +parameter /man/2/arg +parameter /man/2/bufio +parameter /man/2/crc +parameter /man/2/dbm +parameter /man/2/dhcpclient +parameter /man/2/draw-image +parameter /man/2/draw-screen +parameter /man/2/env +parameter /man/2/factotum +parameter /man/2/geodesy +parameter /man/2/ida +parameter /man/2/keyring-sha1 +parameter /man/2/plumbmsg +parameter /man/2/popup +parameter /man/2/secstore +parameter /man/2/styx +parameter /man/2/styxservers +parameter /man/2/sys-fversion +parameter /man/2/sys-read +parameter /man/2/sys-self +parameter /man/2/ubfa +parameter /man/2/w3c-css +parameter /man/2/w3c-xpointers +parameter /man/3/0intro +parameter /man/3/dbg +parameter /man/3/draw +parameter /man/3/flash +parameter /man/3/ip +parameter /man/4/factotum +parameter /man/5/0intro +parameter /man/8/cs +parameter /man/8/dhcp +parameter /man/8/prep +parameter /man/8/styxchat +parameter /man/9/types +parameters /man/1/blur +parameters /man/1/mash-tk +parameters /man/10/conf +parameters /man/10/dev +parameters /man/10/devattach +parameters /man/10/intrenable +parameters /man/10/qio +parameters /man/10/readnum +parameters /man/2/bloomfilter +parameters /man/2/bufio +parameters /man/2/dhcpclient +parameters /man/2/draw-image +parameters /man/2/factotum +parameters /man/2/geodesy +parameters /man/2/ida +parameters /man/2/ip +parameters /man/2/keyring-0intro +parameters /man/2/keyring-auth +parameters /man/2/keyring-gensk +parameters /man/2/math-linalg +parameters /man/2/security-0intro +parameters /man/2/security-login +parameters /man/2/sexprs +parameters /man/2/ubfa +parameters /man/3/draw +parameters /man/3/dynld +parameters /man/3/fpga +parameters /man/3/ftl +parameters /man/3/ip +parameters /man/3/logfs +parameters /man/3/touch +parameters /man/3/usb +parameters /man/4/cpu +parameters /man/4/factotum +parameters /man/5/0intro +parameters /man/6/auth +parameters /man/6/man +parameters /man/6/ndb +parameters /man/8/dhcp +params /man/10/plan9.ini +params /man/2/factotum +params /man/2/xml +parcel /man/9/pack +parent /man/1/0intro +parent /man/1/mkdir +parent /man/1/mv +parent /man/1/sh-alphabet +parent /man/1/tktester +parent /man/10/2c +parent /man/10/devattach +parent /man/10/styxserver +parent /man/2/alphabet-intro +parent /man/2/command +parent /man/2/dialog +parent /man/2/draw-context +parent /man/2/draw-screen +parent /man/2/selectfile +parent /man/2/spree +parent /man/2/spree-cardlib +parent /man/2/styxservers +parent /man/2/styxservers-nametree +parent /man/2/sys-0intro +parent /man/2/sys-pctl +parent /man/2/sys-stat +parent /man/2/xml +parent /man/3/flash +parent /man/4/ramfile +parent /man/5/0intro +parent /man/5/remove +parent /man/5/stat +parent /man/5/walk +parent /man/9/grid +parent /man/9/pack +parent's /man/1/0intro +parentheses /man/1/mash +parentheses /man/1/mk +parentheses /man/1/sh +parentheses /man/1/sh-expr +parentheses /man/10/mk +parentheses /man/2/math-0intro +parentheses /man/2/regex +parentheses /man/2/sexprs +parentheses /man/9/scale +parentheses /man/9/scrollbar +parenthesis /man/1/acme +parenthesised /man/1/sh-regex +parenthesised /man/6/plumbing +parenthesised /man/6/sexprs +parenthesized /man/1/sh-regex +parenthesized /man/2/regex +parentid /man/2/spree +parentid /man/4/spree +parentpath /man/2/styxservers-nametree +parents /man/1/grid-ns +parity /man/10/plan9.ini +parity /man/2/keyring-crypt +parity /man/3/eia +parity /man/8/mangaload +parlance /man/2/sys-0intro +parse /man/1/alphabet-main +parse /man/1/mash +parse /man/1/sh +parse /man/1/sh-csv +parse /man/1/sh-sexprs +parse /man/1/sh-std +parse /man/1/yacc +parse /man/10/parsecmd +parse /man/2/arg +parse /man/2/cfg +parse /man/2/dhcpclient +parse /man/2/ether +parse /man/2/ip +parse /man/2/math-0intro +parse /man/2/sexprs +parse /man/2/sh +parse /man/2/spki +parse /man/2/styxservers +parse /man/2/venti +parse /man/2/w3c-css +parse /man/2/w3c-xpointers +parse /man/2/wait +parse /man/5/stat +parse /man/6/sexprs +parse.c /man/10/parsecmd +parsecert /man/2/spki +parsecidr /man/2/ip +parsecmd /man/10/parsecmd +parsecmd /man/3/cmd +parsecompound /man/2/spki +parsed /man/1/mash +parsed /man/1/sh-arg +parsed /man/1/tiny +parsed /man/10/mk +parsed /man/2/plumbmsg +parsed /man/2/sh +parsed /man/2/spki +parsed /man/2/xml +parsed /man/3/cmd +parsed /man/8/rstyxd +parsedecl /man/2/w3c-css +parseentry /man/2/attrdb +parsefields /man/10/parsecmd +parsehash /man/2/spki +parsekey /man/2/spki +parseline /man/2/attrdb +parseman.b /man/1/man +parsemask /man/2/ip +parsename /man/2/spki +parser /man/1/yacc +parser /man/2/asn1 +parser /man/2/cfg +parser /man/2/w3c-css +parser /man/2/w3c-xpointers +parser /man/2/xml +parser /man/6/sexprs +parser /man/9/bind +parser.mark /man/2/xml +parses /man/1/alphabet-main +parses /man/1/sh-arg +parses /man/1/sh-std +parses /man/10/9load +parses /man/10/parsecmd +parses /man/2/arg +parses /man/2/cfg +parses /man/2/disks +parses /man/2/spki +parses /man/2/spree +parses /man/2/w3c-css +parses /man/2/w3c-xpointers +parseseq /man/2/spki +parsesig /man/2/spki +parsing /man/1/mash +parsing /man/1/mk +parsing /man/1/sh +parsing /man/1/sh-arg +parsing /man/1/webgrab +parsing /man/1/yacc +parsing /man/10/mk +parsing /man/2/spki +parsing /man/2/spree +parsing /man/2/w3c-css +parsing /man/2/xml +parsing /man/6/sexprs +partial /man/1/cprof +partial /man/1/dd +partial /man/1/tsort +partial /man/10/acid +partial /man/10/devattach +partial /man/2/draw-image +partial /man/2/prof +partial /man/2/spki +partial /man/4/acme +partial /man/8/create +partially /man/10/qio +partially /man/2/draw-image +partially /man/2/keyring-0intro +partially /man/9/text +participate /man/1/look +participate /man/2/regex +participate /man/2/spree +participate /man/2/spree-gather +particular /man/1/alphabet-fs +particular /man/1/bind +particular /man/1/cprof +particular /man/1/filename +particular /man/1/fs +particular /man/1/man +particular /man/1/mprof +particular /man/1/os +particular /man/1/prof +particular /man/1/sh-std +particular /man/1/tktester +particular /man/1/wm-misc +particular /man/10/0intro +particular /man/10/2c +particular /man/10/9load +particular /man/10/allocb +particular /man/10/conf +particular /man/10/devattach +particular /man/10/dynld +particular /man/10/error +particular /man/10/eve +particular /man/10/kproc +particular /man/10/newchan +particular /man/10/sleep +particular /man/10/styxserver +particular /man/2/0intro +particular /man/2/asn1 +particular /man/2/convcs +particular /man/2/draw-display +particular /man/2/draw-example +particular /man/2/draw-image +particular /man/2/draw-screen +particular /man/2/format +particular /man/2/math-0intro +particular /man/2/math-fp +particular /man/2/palmfile +particular /man/2/plumbmsg +particular /man/2/prof +particular /man/2/readdir +particular /man/2/registries +particular /man/2/security-auth +particular /man/2/sh +particular /man/2/spki +particular /man/2/spki-verifier +particular /man/2/spree +particular /man/2/spree-cardlib +particular /man/2/spree-objstore +particular /man/2/srv +particular /man/2/styx +particular /man/2/styxservers +particular /man/2/sys-bind +particular /man/2/sys-dial +particular /man/2/sys-stat +particular /man/3/0intro +particular /man/3/audio +particular /man/3/cmd +particular /man/3/draw +particular /man/3/dynld +particular /man/3/flash +particular /man/3/ip +particular /man/3/pipe +particular /man/3/pnp +particular /man/3/prof +particular /man/3/rtc +particular /man/3/vga +particular /man/4/acme +particular /man/4/factotum +particular /man/4/spree +particular /man/5/0intro +particular /man/5/stat +particular /man/6/image +particular /man/6/keyboard +particular /man/6/ndb +particular /man/6/translate +particular /man/8/applylog +particular /man/8/collabsrv +particular /man/8/create +particular /man/8/prep +particular /man/8/svc +particular /man/9/0intro +particular /man/9/1copyright +particular /man/9/bind +particular /man/9/canvas +particular /man/9/entry +particular /man/9/grab +particular /man/9/listbox +particular /man/9/menu +particular /man/9/options +particular /man/9/radiobutton +particular /man/9/scale +particular /man/9/text +particularly /man/1/acme +particularly /man/1/charon +particularly /man/1/chmod +particularly /man/1/dd +particularly /man/10/0intro +particularly /man/2/0intro +particularly /man/2/imagefile +particularly /man/2/sys-fauth +particularly /man/2/sys-iounit +particularly /man/3/audio +particularly /man/8/styxchat +particulary /man/2/sys-read +parties /man/1/alphabet-abc +parties /man/1/alphabet-grid +parties /man/2/keyring-0intro +parties /man/2/keyring-auth +parties /man/2/security-0intro +parties /man/6/auth +parties /man/9/1copyright +partition /man/10/9load +partition /man/10/plan9.ini +partition /man/2/disks +partition /man/3/flash +partition /man/3/ftl +partition /man/3/ip +partition /man/3/logfs +partition /man/3/sd +partition /man/4/kfs +partition /man/8/ftl +partition /man/8/prep +partition /man/8/rdbgsrv +partition's /man/2/disks +partition's /man/8/prep +partitioning /man/10/9load +partitioning /man/10/plan9.ini +partitioning /man/2/disks +partitioning /man/3/ds +partitions /man/1/cprof +partitions /man/1/math-misc +partitions /man/1/mprof +partitions /man/1/prof +partitions /man/10/9load +partitions /man/2/disks +partitions /man/3/flash +partitions /man/3/floppy +partitions /man/3/sd +partitions /man/8/prep +partitions /man/8/rdbgsrv +parts /man/1/acme +parts /man/1/blur +parts /man/1/math-misc +parts /man/1/mprof +parts /man/1/prof +parts /man/10/allocb +parts /man/10/conf +parts /man/2/draw-screen +parts /man/2/keyring-gensk +parts /man/2/math-fp +parts /man/4/import +parts /man/4/ramfile +parts /man/6/colour +parts.b /man/1/math-misc +party /man/1/listen +party /man/2/keyring-auth +party /man/2/security-0intro +party /man/3/ip +party /man/4/factotum +party /man/6/login +party /man/8/register +party /man/9/1copyright +party's /man/10/5cv +party's /man/2/keyring-0intro +party's /man/4/factotum +pass /man/1/alphabet-fs +pass /man/1/fs +pass /man/1/mash-tk +pass /man/1/p +pass /man/1/sh +pass /man/10/2c +pass /man/10/c2l +pass /man/10/dev +pass /man/10/qio +pass /man/2/dbm +pass /man/2/draw-pointer +pass /man/2/factotum +pass /man/2/filter +pass /man/2/imagefile +pass /man/2/itslib +pass /man/2/keyring-ipint +pass /man/2/popup +pass /man/2/secstore +pass /man/2/security-auth +pass /man/2/spree +pass /man/2/styxpersist +pass /man/2/sys-pipe +pass /man/2/tk +pass /man/3/ip +pass /man/3/ssl +pass /man/3/tls +pass /man/4/factotum +pass /man/6/plumbing +pass /man/8/mkfs +pass /man/8/prep +passes /man/1/alphabet-abc +passes /man/1/alphabet-grid +passes /man/1/wm +passes /man/10/c2l +passes /man/10/devattach +passes /man/10/intrenable +passes /man/2/command +passes /man/2/tk +passes /man/9/button +passes /man/9/checkbutton +passes /man/9/menubutton +passes /man/9/radiobutton +passing /man/1/mash +passing /man/1/sh-std +passing /man/10/conf +passing /man/2/plumbmsg +passing /man/2/spree +passing /man/2/sys-self +passing /man/2/tk +passing /man/6/namespace +passing /man/7/db +passing /man/8/plumber +passing /man/9/0intro +passive /man/4/ftpfs +passwd /man/1/passwd +passwd /man/4/keysrv +passwd /man/6/keys +passwd /man/8/changelogin +passwd.b /man/1/passwd +password /man/1/acme +password /man/1/miniterm +password /man/1/netkey +password /man/1/passwd +password /man/2/factotum +password /man/2/keyring-0intro +password /man/2/palmfile +password /man/2/pop3 +password /man/2/secstore +password /man/2/security-0intro +password /man/2/security-login +password /man/4/factotum +password /man/4/ftpfs +password /man/6/keys +password /man/6/login +password /man/7/db +password /man/8/changelogin +password /man/8/getauthinfo +password /man/8/logind +password /man/8/svc +password /man/9/entry +passwords /man/4/factotum +passwords /man/8/changelogin +passwords /man/8/svc +paste /man/1/acme +paste /man/1/brutus +paste /man/1/ftree +paste /man/1/mash-tk +paste /man/1/wm-misc +paste /man/1/wm-sh +paste /man/4/acme +pat /man/2/filepat +pat /man/2/selectfile +pat2regexp /man/1/sh-regex +patented /man/2/keyring-crypt +path /man/1/acme +path /man/1/alphabet-fs +path /man/1/cleanname +path /man/1/collab-clients +path /man/1/cprof +path /man/1/emu +path /man/1/fs +path /man/1/ftree +path /man/1/gettar +path /man/1/grid-ns +path /man/1/ls +path /man/1/mash +path /man/1/mash-tk +path /man/1/mkdir +path /man/1/mprof +path /man/1/prof +path /man/1/pwd +path /man/1/rcmd +path /man/1/sh +path /man/1/sh-alphabet +path /man/1/stack +path /man/1/tiny +path /man/1/webgrab +path /man/1/yacc +path /man/10/2a +path /man/10/9load +path /man/10/a.out +path /man/10/conf +path /man/10/dev +path /man/10/devattach +path /man/10/newchan +path /man/10/plan9.ini +path /man/10/styxserver +path /man/2/0intro +path /man/2/arg +path /man/2/asn1 +path /man/2/attrdb +path /man/2/bloomfilter +path /man/2/bufio +path /man/2/bufio-chanfill +path /man/2/cfg +path /man/2/command +path /man/2/convcs +path /man/2/crc +path /man/2/daytime +path /man/2/dbm +path /man/2/debug +path /man/2/devpointer +path /man/2/dhcpclient +path /man/2/dialog +path /man/2/dict +path /man/2/dis +path /man/2/diskblocks +path /man/2/disks +path /man/2/dividers +path /man/2/draw-0intro +path /man/2/draw-context +path /man/2/draw-display +path /man/2/draw-example +path /man/2/draw-font +path /man/2/draw-image +path /man/2/draw-point +path /man/2/draw-pointer +path /man/2/draw-rect +path /man/2/draw-screen +path /man/2/drawmux +path /man/2/encoding +path /man/2/env +path /man/2/ether +path /man/2/exception +path /man/2/factotum +path /man/2/filepat +path /man/2/format +path /man/2/fsproto +path /man/2/geodesy +path /man/2/hash +path /man/2/ida +path /man/2/imagefile +path /man/2/ip +path /man/2/ir +path /man/2/itslib +path /man/2/keyring-0intro +path /man/2/keyring-auth +path /man/2/keyring-certtostr +path /man/2/keyring-crypt +path /man/2/keyring-gensk +path /man/2/keyring-getmsg +path /man/2/keyring-getstring +path /man/2/keyring-ipint +path /man/2/keyring-rc4 +path /man/2/keyring-sha1 +path /man/2/keyset +path /man/2/lock +path /man/2/math-0intro +path /man/2/math-elem +path /man/2/math-export +path /man/2/math-fp +path /man/2/math-linalg +path /man/2/mpeg +path /man/2/names +path /man/2/newns +path /man/2/palmfile +path /man/2/plumbmsg +path /man/2/pop3 +path /man/2/popup +path /man/2/prefab-0intro +path /man/2/prefab-compound +path /man/2/prefab-element +path /man/2/prefab-environ +path /man/2/prefab-style +path /man/2/print +path /man/2/prof +path /man/2/pslib +path /man/2/rand +path /man/2/readdir +path /man/2/regex +path /man/2/registries +path /man/2/scsiio +path /man/2/secstore +path /man/2/security-auth +path /man/2/security-login +path /man/2/security-random +path /man/2/security-ssl +path /man/2/selectfile +path /man/2/sets +path /man/2/sexprs +path /man/2/sh +path /man/2/smtp +path /man/2/spki +path /man/2/spki-verifier +path /man/2/spree +path /man/2/spree-allow +path /man/2/spree-cardlib +path /man/2/spree-objstore +path /man/2/srv +path /man/2/string +path /man/2/stringinttab +path /man/2/styx +path /man/2/styxconv +path /man/2/styxpersist +path /man/2/styxservers +path /man/2/styxservers-nametree +path /man/2/sys-0intro +path /man/2/sys-bind +path /man/2/sys-byte2char +path /man/2/sys-chdir +path /man/2/sys-dial +path /man/2/sys-dirread +path /man/2/sys-dup +path /man/2/sys-export +path /man/2/sys-fauth +path /man/2/sys-fd2path +path /man/2/sys-file2chan +path /man/2/sys-fversion +path /man/2/sys-iounit +path /man/2/sys-millisec +path /man/2/sys-open +path /man/2/sys-pctl +path /man/2/sys-pipe +path /man/2/sys-print +path /man/2/sys-read +path /man/2/sys-remove +path /man/2/sys-seek +path /man/2/sys-sleep +path /man/2/sys-stat +path /man/2/sys-tokenize +path /man/2/sys-utfbytes +path /man/2/sys-werrstr +path /man/2/tabs +path /man/2/tftp +path /man/2/timers +path /man/2/tk +path /man/2/tkclient +path /man/2/translate +path /man/2/ubfa +path /man/2/venti +path /man/2/virgil +path /man/2/volume +path /man/2/w3c-css +path /man/2/w3c-xpointers +path /man/2/wait +path /man/2/wmclient +path /man/2/wmlib +path /man/2/wmsrv +path /man/2/workdir +path /man/2/xml +path /man/3/cap +path /man/3/cmd +path /man/3/prof +path /man/3/prog +path /man/3/srv9 +path /man/4/archfs +path /man/4/cpu +path /man/4/ramfile +path /man/5/0intro +path /man/5/stat +path /man/5/walk +path /man/6/namespace +path /man/6/proto +path /man/7/db +path /man/8/applylog +path /man/8/bootpd +path /man/8/collabsrv +path /man/8/create +path /man/8/mkfs +path /man/8/srv +path /man/8/styxchat +path /man/9/bind +path /man/9/canvas +path /man/9/frame +path /man/9/menu +path /man/9/menubutton +path /man/9/options +path /man/9/text +path /man/9/types +path1 /man/1/grid-ns +path2...path /man/1/grid-ns +pathname /man/1/alphabet-fs +pathname /man/1/bind +pathname /man/1/fs +pathname /man/1/mash-tk +pathname /man/1/passwd +pathname /man/1/sh +pathname /man/1/tiny +pathname /man/10/9load +pathname /man/10/newchan +pathname /man/2/debug +pathname /man/2/names +pathname /man/2/sys-0intro +pathname /man/2/sys-dial +pathname /man/9/bind +pathname /man/9/button +pathname /man/9/canvas +pathname /man/9/checkbutton +pathname /man/9/choicebutton +pathname /man/9/entry +pathname /man/9/frame +pathname /man/9/label +pathname /man/9/listbox +pathname /man/9/menu +pathname /man/9/menubutton +pathname /man/9/panel +pathname /man/9/radiobutton +pathname /man/9/scale +pathname /man/9/scrollbar +pathname /man/9/see +pathname /man/9/text +pathnames /man/1/0intro +pathnames /man/8/bootpd +pathonly /man/10/newchan +pathprefix /man/2/print +paths /man/1/alphabet-fs +paths /man/1/fs +paths /man/1/grid-ns +paths /man/2/debug +paths /man/2/styx +paths /man/2/styxservers-nametree +paths /man/2/sys-0intro +paths /man/8/applylog +pattern /man/1/acme +pattern /man/1/alphabet-fs +pattern /man/1/filename +pattern /man/1/fs +pattern /man/1/grep +pattern /man/1/mash +pattern /man/1/mash-make +pattern /man/1/mash-tk +pattern /man/1/mk +pattern /man/1/sh +pattern /man/1/sh-regex +pattern /man/1/sh-std +pattern /man/10/mk +pattern /man/2/0intro +pattern /man/2/arg +pattern /man/2/filepat +pattern /man/2/security-0intro +pattern /man/2/spki +pattern /man/2/spree-allow +pattern /man/2/spree-cardlib +pattern /man/6/plumbing +pattern /man/9/bind +pattern /man/9/canvas +pattern /man/9/text +pattern's /man/2/spree-allow +patterns /man/1/filename +patterns /man/1/sh-regex +patterns /man/1/sh-std +patterns /man/2/math-fp +patterns /man/2/spree-allow +patterns /man/6/plumbing +patterns /man/9/bind +paul /man/2/palmfile +paul /man/6/attrdb +pause /man/1/sleep +pause /man/1/wm-misc +pause /man/3/mpeg +pause.b /man/1/sleep +pawn /man/6/keyboard +pbit16 /man/10/styx +pbit32 /man/10/styx +pbit64 /man/10/styx +pbit8 /man/10/styx +pbs /man/10/9load +pbs /man/8/prep +pbslba /man/10/9load +pbslba /man/8/prep +pbss /man/10/9load +pbus /man/3/pbus +pbus /man/3/plap +pbusctl /man/3/pbus +pc /man/1/stack +pc /man/10/2c +pc /man/10/9load +pc /man/10/a.out +pc /man/10/conf +pc /man/10/dmainit +pc /man/10/inb +pc /man/10/lock +pc /man/10/plan9.ini +pc /man/2/debug +pc /man/2/dis +pc /man/2/disks +pc /man/2/exception +pc /man/3/arch +pc /man/3/floppy +pc /man/3/i82365 +pc /man/3/lpt +pc /man/3/mpeg +pc /man/3/pbus +pc /man/3/plap +pc /man/3/pnp +pc /man/3/prog +pc /man/3/rtc +pc /man/3/tv +pc /man/3/vga +pc /man/6/dis +pc /man/6/keyboard +pc /man/6/sbl +pc /man/8/prep +pc's /man/2/dis +pc1 /man/2/dis +pc1 /man/6/dis +pc2 /man/2/dis +pc2 /man/6/dis +pccard0 /man/10/plan9.ini +pcfile /man/10/acid +pci /man/10/intrenable +pci /man/10/plan9.ini +pci /man/3/pnp +pci /man/3/sd +pcimaxbno /man/10/plan9.ini +pcimaxdno /man/10/plan9.ini +pcl /man/2/print +pcline /man/10/acid +pcm /man/1/auplay +pcm /man/3/audio +pcm /man/3/i82365 +pcm /man/6/audio +pcm0attr /man/3/i82365 +pcm0ctl /man/3/i82365 +pcm0mem /man/3/i82365 +pcm100 /man/10/plan9.ini +pcm16 /man/3/audio +pcm1attr /man/3/i82365 +pcm1ctl /man/3/i82365 +pcm1mem /man/3/i82365 +pcmcia /man/10/plan9.ini +pcmcia /man/3/i82365 +pcmcia0 /man/10/plan9.ini +pcmciax /man/10/plan9.ini +pcmpc100 /man/10/plan9.ini +pcnet /man/10/plan9.ini +pcpart /man/2/disks +pcpart.active /man/2/disks +pcr /man/3/lpt +pcs /man/10/plan9.ini +pcs /man/8/prep +pcsz /man/10/a.out +pctl /man/1/0intro +pctl /man/1/bind +pctl /man/1/cd +pctl /man/1/kill +pctl /man/1/sh-std +pctl /man/1/sh-tk +pctl /man/1/tiny +pctl /man/2/command +pctl /man/2/env +pctl /man/2/newns +pctl /man/2/security-auth +pctl /man/2/styxservers +pctl /man/2/styxservers-nametree +pctl /man/2/sys-0intro +pctl /man/2/sys-chdir +pctl /man/2/sys-export +pctl /man/2/sys-pctl +pctl /man/3/env +pctl /man/3/prof +pctl /man/3/prog +pctl /man/3/sign +pctl /man/6/namespace +pctosrc /man/2/debug +pcwidth /man/2/print +pd /man/6/man +pda /man/2/palmfile +pda /man/3/pointer +pdb /man/2/palmfile +pdc.minitelfr.com /man/1/miniterm +pdriver /man/2/print +pdv /man/2/asn1 +peculiar /man/2/disks +peculiar /man/3/fs +peculiar /man/3/touch +peculiar /man/6/colour +peculiar /man/8/collabsrv +ped /man/2/sh +pedantry /man/1/limbo +peer /man/1/alphabet-grid +peer /man/3/plap +peers /man/2/security-auth +pelm /man/9/types +pen /man/1/keyboard +pen.b /man/1/keyboard +pending /man/10/qlock +pending /man/2/convcs +pending /man/3/srv +pending /man/3/tls +pending /man/5/flush +pending /man/9/update +pentium /man/10/2c +penultimate /man/1/webgrab +peplink /man/8/mangaload +perceived /man/1/tiny +percent /man/1/mk +percent /man/10/mk +percent /man/2/w3c-css +percent /man/9/bind +percentage /man/1/collab-clients +percentage /man/1/prof +percentage /man/10/kprof +percentage /man/10/plan9.ini +percentage /man/2/print +percentage /man/2/prof +percentage /man/2/w3c-css +perfom /man/3/prog +perform /man/1/0intro +perform /man/1/gzip +perform /man/1/mash-make +perform /man/1/sh +perform /man/1/spree-join +perform /man/10/9load +perform /man/10/error +perform /man/10/eve +perform /man/10/styxserver +perform /man/2/daytime +perform /man/2/keyring-0intro +perform /man/2/keyring-certtostr +perform /man/2/security-0intro +perform /man/2/spree-allow +perform /man/2/stringinttab +perform /man/3/ip +perform /man/3/pnp +perform /man/6/utf +performance /man/1/blur +performed /man/1/acme +performed /man/1/deb +performed /man/1/grid-query +performed /man/1/listen +performed /man/1/tiny +performed /man/1/wm-misc +performed /man/10/eve +performed /man/2/asn1 +performed /man/2/math-0intro +performed /man/2/prof +performed /man/2/spree-allow +performed /man/2/styxservers +performed /man/2/sys-fversion +performed /man/3/draw +performed /man/3/vga +performed /man/4/factotum +performed /man/4/lockfs +performed /man/8/register +performed /man/9/canvas +performed /man/9/text +performing /man/1/tiny +performs /man/1/gzip +performs /man/1/sh-expr +performs /man/1/sh-std +performs /man/10/styxserver +performs /man/2/draw-0intro +performs /man/2/filter-deflate +performs /man/2/keyring-auth +performs /man/2/keyring-certtostr +performs /man/2/security-0intro +performs /man/2/sh +performs /man/2/stringinttab +performs /man/2/sys-byte2char +performs /man/2/venti +performs /man/3/0intro +performs /man/4/dossrv +perimeter /man/9/canvas +periodic /man/2/draw-image +periodically /man/10/kbdputc +periodically /man/2/dhcpclient +periodically /man/2/tftp +periodically /man/8/dhcp +periodically /man/8/rip +periods /man/2/spki +periods /man/3/pnp +perle /man/10/plan9.ini +perm /man/10/dev +perm /man/10/devattach +perm /man/10/newchan +perm /man/10/styx +perm /man/10/styxserver +perm /man/2/bufio +perm /man/2/dbm +perm /man/2/palmfile +perm /man/2/styx +perm /man/2/styxservers +perm /man/2/styxservers-nametree +perm /man/2/sys-open +perm /man/3/logfs +perm /man/4/9srvfs +perm /man/5/0intro +perm /man/5/open +perm /man/6/proto +perm /man/8/styxchat +perm&dmdir /man/10/styxserver +permanent /man/1/bind +permanent /man/2/spree +permanent /man/2/sys-stat +permanent /man/5/0intro +permanent /man/6/users +permanently /man/10/xalloc +permanently /man/2/dhcpclient +permissible /man/2/alphabet-intro +permissible /man/2/draw-image +permissible /man/2/spree +permissible /man/2/spree-objstore +permissible /man/2/sys-0intro +permissible /man/9/canvas +permission /man/1/bind +permission /man/1/chmod +permission /man/1/ls +permission /man/1/mkdir +permission /man/1/mv +permission /man/1/rm +permission /man/1/tiny +permission /man/1/uuencode +permission /man/10/ar +permission /man/10/devattach +permission /man/10/eve +permission /man/10/kstrip +permission /man/10/styxserver +permission /man/2/dbm +permission /man/2/factotum +permission /man/2/styxservers +permission /man/2/sys-0intro +permission /man/2/sys-open +permission /man/2/sys-remove +permission /man/2/sys-stat +permission /man/3/fs +permission /man/3/logfs +permission /man/4/kfs +permission /man/5/0intro +permission /man/5/open +permission /man/5/remove +permission /man/5/stat +permission /man/5/walk +permission /man/8/bootpd +permission /man/8/kfscmd +permission /man/9/1copyright +permissions /man/1/alphabet-fs +permissions /man/1/chmod +permissions /man/1/cp +permissions /man/1/fs +permissions /man/1/ftest +permissions /man/1/ls +permissions /man/1/mkdir +permissions /man/10/dev +permissions /man/10/devattach +permissions /man/10/newchan +permissions /man/10/styxserver +permissions /man/2/bufio +permissions /man/2/spki +permissions /man/2/styxservers +permissions /man/2/sys-open +permissions /man/2/sys-stat +permissions /man/3/fs +permissions /man/3/srv +permissions /man/3/srv9 +permissions /man/4/9srvfs +permissions /man/4/import +permissions /man/4/kfs +permissions /man/4/memfs +permissions /man/5/0intro +permissions /man/5/open +permissions /man/5/remove +permissions /man/5/stat +permissions /man/6/proto +permissions /man/8/applylog +permissions /man/8/create +permissions /man/8/cs +permissions /man/8/mkfs +permit /man/1/bind +permit /man/1/chgrp +permit /man/2/security-0intro +permit /man/2/sys-open +permit /man/4/acme +permit /man/5/0intro +permit /man/9/grid +permits /man/1/chgrp +permits /man/10/2c +permits /man/9/grid +permitted /man/1/wm-misc +permitted /man/8/mkfs +permitted /man/9/canvas +permitted /man/9/grid +permitting /man/1/emu +permitting /man/2/spree-allow +perms /man/1/math-misc +perms.b /man/1/math-misc +permutation /man/2/math-linalg +permutations /man/1/math-misc +permutations /man/2/spree-cardlib +permuted /man/1/0intro +perpendicular /man/2/draw-image +perpendicularly /man/2/draw-image +persist /man/2/registries +persist /man/3/eia +persist /man/4/registry +persistent /man/1/ebook +persistent /man/2/spree-objstore +persistent /man/2/styxpersist +persistent /man/4/registry +persistently /man/3/pipe +persists /man/3/pipe +persists /man/8/cs +person /man/4/import +person /man/8/create +personal /man/2/palmfile +personal /man/3/i82365 +personal /man/6/attrdb +pertain /man/1/diff +pexit /man/10/error +pexit /man/10/kproc +pf /man/2/palmfile +pfd /man/2/print +pfile /man/2/palmfile +pfile.open /man/2/palmfile +pg /man/6/keyboard +pgrp /man/2/debug +pgrp /man/3/prog +pgrps /man/2/sys-0intro +phase /man/4/factotum +phases /man/8/register +phi /man/1/mc +phi /man/2/draw-image +phi /man/3/draw +phil /man/10/acid +phone /man/1/miniterm +phone /man/2/format +phone /man/2/security-0intro +photographic /man/6/colour +phrase /man/2/secstore +phrase /man/6/translate +phrases /man/6/translate +physical /man/1/dd +physical /man/10/9load +physical /man/10/kbdputc +physical /man/10/plan9.ini +physical /man/2/attrdb +physical /man/2/draw-0intro +physical /man/2/draw-display +physical /man/2/draw-image +physical /man/2/drawmux +physical /man/2/venti +physical /man/2/wmsrv +physical /man/3/draw +physical /man/3/ether +physical /man/3/flash +physical /man/3/ftl +physical /man/3/ip +physical /man/3/logfs +physical /man/3/rtc +physical /man/3/vga +physical /man/6/attrdb +physical /man/6/colour +physical /man/8/init +physical /man/8/prep +physically /man/8/prep +physics /man/6/colour +pi /man/1/fc +pi /man/1/math-misc +pi /man/1/mc +pi /man/1/units +pi /man/2/math-fp +pi /man/3/sd +pi.b /man/1/math-misc +pic /man/1/man +piccenter /man/2/draw-example +piccenter.x /man/2/draw-example +piccenter.y /man/2/draw-example +picfile /man/3/tv +pick /man/10/acid +pick /man/10/c2l +pick /man/2/alphabet-intro +pick /man/2/asn1 +pick /man/2/attrdb +pick /man/2/dis +pick /man/2/filter +pick /man/2/hash +pick /man/2/sexprs +pick /man/2/spki +pick /man/2/styx +pick /man/2/styxservers +pick /man/2/styxservers-nametree +pick /man/2/ubfa +pick /man/2/w3c-css +pick /man/2/w3c-xpointers +pick /man/2/xml +pick /man/6/colour +pick /man/6/sbl +picked /man/10/2l +picking /man/6/colour +pickplace /man/9/text +picks /man/10/plan9.ini +picks /man/9/canvas +picks /man/9/image +picreader /man/2/imagefile +picture /man/2/draw-0intro +picture /man/2/draw-display +picture /man/2/draw-example +picture /man/2/draw-image +picture /man/2/imagefile +picture /man/2/prefab-element +picture /man/6/colour +pictures /man/1/wm-misc +pictures /man/2/draw-image +pictures /man/2/imagefile +pictures /man/2/prefab-element +pid /man/1/deb +pid /man/1/grid-monitor +pid /man/1/kill +pid /man/1/mk +pid /man/1/ns +pid /man/1/sh-std +pid /man/1/stack +pid /man/10/acid +pid /man/10/mk +pid /man/2/command +pid /man/2/debug +pid /man/2/exception +pid /man/2/filter +pid /man/2/ir +pid /man/2/prof +pid /man/2/sh +pid /man/2/styxconv +pid /man/2/sys-export +pid /man/2/sys-pctl +pid /man/2/wait +pid /man/3/dbg +pid /man/3/prog +pidc /man/2/command +pidc /man/2/ir +pidc /man/2/styxconv +pids /man/1/deb +pids /man/1/grid-monitor +pids /man/3/prog +piece /man/6/keyboard +pieces /man/1/wm-misc +pieces /man/2/ida +pieces /man/2/prefab-element +pieces /man/2/sys-iounit +pieces /man/6/keyboard +pieslice /man/9/canvas +pike /man/1/acme +pike /man/1/yacc +pike /man/10/2a +pike /man/10/2c +pike /man/10/2l +pile /man/2/spree-cardlib +piled /man/2/spree-cardlib +pin /man/1/secstore +pin /man/10/kproc +pin /man/2/secstore +pin /man/3/cons +pin /man/3/gpio +pinf /man/2/math-fp +ping /man/8/ping +ping.b /man/8/ping +pinot /man/10/odbc +pins /man/3/fpga +pins /man/3/tinyfs +pipe /man/1/alphabet-fs +pipe /man/1/alphabet-main +pipe /man/1/fs +pipe /man/1/mash +pipe /man/1/ns +pipe /man/1/sh +pipe /man/1/sh-alphabet +pipe /man/1/sh-std +pipe /man/1/tee +pipe /man/1/tiny +pipe /man/10/odbc +pipe /man/2/styxconv +pipe /man/2/sys-bind +pipe /man/2/sys-pctl +pipe /man/2/sys-pipe +pipe /man/2/sys-seek +pipe /man/3/cmd +pipe /man/3/pipe +pipe /man/3/srv9 +pipe /man/4/registry +pipe /man/5/attach +pipe /man/8/styxchat +piped /man/1/alphabet-abc +piped /man/1/alphabet-fs +piped /man/1/alphabet-grid +piped /man/1/fs +pipeline /man/1/alphabet-abc +pipeline /man/1/alphabet-grid +pipeline /man/1/du +pipeline /man/1/sh +pipeline /man/1/stack +pipeline /man/1/time +pipeline /man/1/tiny +pipelines /man/1/mash +pipelines /man/1/sh-std +pipelines /man/1/tiny +pipes /man/1/alphabet-main +pipes /man/1/mk +pipes /man/1/sh +pipes /man/1/sh-std +pipes /man/1/stack +pipes /man/1/tiny +pipes /man/10/mk +pipes /man/2/sys-pipe +pipes /man/2/sys-stat +pitch /man/1/acme +pitfalls /man/1/sh-std +pittsburg /man/2/ubfa +pittsburg /man/6/ubfa +pixel /man/1/ebook +pixel /man/2/draw-0intro +pixel /man/2/draw-display +pixel /man/2/draw-image +pixel /man/2/draw-rect +pixel /man/2/drawmux +pixel /man/2/imagefile +pixel /man/2/mpeg +pixel /man/2/prefab-element +pixel /man/2/prefab-style +pixel /man/2/pslib +pixel /man/3/draw +pixel /man/3/vga +pixel /man/3/vid +pixel /man/6/colour +pixel /man/6/image +pixel /man/9/grid +pixel /man/9/listbox +pixel /man/9/menu +pixel /man/9/scale +pixel /man/9/scrollbar +pixel /man/9/text +pixel's /man/2/draw-image +pixel's /man/6/colour +pixel's /man/6/image +pixels /man/1/emu +pixels /man/1/filename +pixels /man/1/wm-sh +pixels /man/2/draw-0intro +pixels /man/2/draw-display +pixels /man/2/draw-example +pixels /man/2/draw-font +pixels /man/2/draw-image +pixels /man/2/draw-rect +pixels /man/2/print +pixels /man/2/pslib +pixels /man/3/draw +pixels /man/3/vga +pixels /man/6/colour +pixels /man/6/font +pixels /man/6/image +pixels /man/8/collabsrv +pixels /man/9/canvas +pixels /man/9/entry +pixels /man/9/grid +pixels /man/9/image +pixels /man/9/scrollbar +pixels /man/9/text +pixels /man/9/types +pizza /man/1/mux +pk /man/2/keyring-0intro +pk /man/2/keyring-certtostr +pk /man/2/keyring-gensk +pk /man/2/keyring-sha1 +pk /man/2/keyset +pk /man/2/spki +pk /man/6/auth +pkca /man/2/keyring-auth +pkhash /man/2/keyset +pkt /man/3/ip +pktin /man/2/ip +pktostr /man/2/keyring-certtostr +pktostr /man/2/keyset +pktostr /man/3/sign +pktout /man/2/ip +pku /man/2/keyring-auth +pku0 /man/2/keyring-auth +pku0 /man/6/auth +pku1 /man/2/keyring-auth +pku1 /man/6/auth +placeholder /man/1/sh-std +placeholder /man/3/ip +placeholder /man/7/db +placeholders /man/4/namespace +placeholders /man/7/db +placement /man/1/acme +placement /man/2/prefab-compound +placement /man/2/tkclient +placement /man/2/wmclient +placement /man/9/grid +places /man/1/charon +places /man/1/math-misc +places /man/1/mk +places /man/10/getfields +places /man/10/iar +places /man/10/mk +places /man/10/plan9.ini +places /man/10/print +places /man/10/qio +places /man/10/readnum +places /man/2/draw-screen +places /man/2/env +places /man/2/geodesy +places /man/2/sys-print +places /man/4/namespace +places /man/6/sexprs +places /man/8/prep +places /man/9/text +placing /man/1/filename +placing /man/1/tktester +placing /man/2/format +placing /man/2/spree-cardlib +placing /man/9/canvas +plain /man/1/acme +plain /man/1/charon +plain /man/1/collab-clients +plain /man/1/cp +plain /man/1/man +plain /man/1/wish +plain /man/10/print +plain /man/2/disks +plain /man/2/sys-print +plain /man/2/tkclient +plain /man/2/w3c-css +plain /man/2/wmclient +plain /man/3/fs +plain /man/4/acme +plain /man/5/0intro +plain /man/5/stat +plain /man/6/font +plain /man/6/man +plain /man/8/dhcp +plaintext /man/2/security-0intro +plan /man/1/0intro +plan /man/1/9win +plan /man/1/bind +plan /man/1/crypt +plan /man/1/diff +plan /man/1/mash +plan /man/1/mk +plan /man/1/secstore +plan /man/10/0intro +plan /man/10/2a +plan /man/10/2c +plan /man/10/2l +plan /man/10/5cv +plan /man/10/9load +plan /man/10/a.out +plan /man/10/acid +plan /man/10/conf +plan /man/10/kproc +plan /man/10/mk +plan /man/10/plan9.ini +plan /man/10/sleep +plan /man/10/styx +plan /man/10ti925/tihost +plan /man/2/dbm +plan /man/2/dhcpclient +plan /man/2/disks +plan /man/2/factotum +plan /man/2/secstore +plan /man/2/styxpersist +plan /man/3/cmd +plan /man/3/ds +plan /man/3/fs +plan /man/3/ip +plan /man/3/srv9 +plan /man/3/tv +plan /man/4/9srvfs +plan /man/4/dossrv +plan /man/4/factotum +plan /man/4/import +plan /man/4/kfs +plan /man/4/namespace +plan /man/5/0intro +plan /man/6/man +plan /man/6/namespace +plan /man/8/cs +plan /man/8/ping +plan /man/8/prep +plan9 /man/1/man +plan9 /man/10/9load +plan9 /man/10/conf +plan9 /man/2/dhcpclient +plan9 /man/3/srv9 +plan9 /man/4/namespace +plan9 /man/8/prep +plan9's /man/1/acme +plan9.ini /man/10/9load +plan9.ini /man/10/plan9.ini +plan9.ini /man/3/ds +plan9.ini /man/3/i82365 +plan9.ini /man/3/pnp +plan9.ini /man/8/prep +plan9.nvr /man/10/plan9.ini +plan9.nvr /man/8/prep +plan9partition /man/8/prep +plane /man/2/draw-0intro +plane /man/2/draw-image +plane /man/2/draw-rect +plane /man/2/prefab-element +plane's /man/2/draw-0intro +plap /man/3/pbus +plap /man/3/plap +platform /man/1/0intro +platform /man/1/mk +platform /man/10/0intro +platform /man/10/conf +platform /man/10/dev +platform /man/10/dmainit +platform /man/10/inb +platform /man/10/intrenable +platform /man/10/mk +platform /man/10/panic +platform /man/10/seconds +platform /man/3/audio +platform /man/3/ether +platform /man/3/flash +platform /man/3/rtc +platform /man/3/vga +platform /man/4/namespace +platform /man/8/init +platform's /man/10/conf +platform's /man/10/intrenable +platforms /man/1/0intro +platforms /man/10/0intro +platforms /man/10/2c +platforms /man/10/conf +platforms /man/10/dev +platforms /man/10/dmainit +platforms /man/10/intrenable +platforms /man/2/srv +platforms /man/3/ip +platforms /man/3/pnp +platforms /man/3/pointer +platforms /man/3/rtc +platforms /man/4/namespace +plausible /man/8/sntp +play /man/2/mpeg +play /man/2/security-auth +play /man/3/pnp +played /man/1/auplay +player /man/1/wm-misc +player /man/2/spree-allow +player /man/2/spree-cardlib +players /man/2/spree +players /man/2/spree-cardlib +players /man/2/spree-gather +playing /man/2/mpeg +playing /man/2/spree-cardlib +plays /man/1/auplay +plays /man/2/mpeg +plaything /man/1/wm-misc +please /man/1/collab-clients +plethora /man/6/keyboard +plot /man/1/wm-misc +plotted /man/1/wm-misc +plug /man/1/miniterm +plug /man/3/pnp +plumb /man/1/plumb +plumb /man/1/wm-sh +plumb /man/2/plumbmsg +plumb /man/3/srv +plumb /man/6/plumbing +plumb /man/8/plumber +plumb.b /man/1/plumb +plumb.input /man/1/plumb +plumb.input /man/2/plumbmsg +plumb.rcvport /man/2/plumbmsg +plumbed /man/2/plumbmsg +plumbed /man/8/plumber +plumber /man/1/brutus +plumber /man/1/ftree +plumber /man/1/plumb +plumber /man/1/wm-misc +plumber /man/1/wm-sh +plumber /man/2/plumbmsg +plumber /man/6/plumbing +plumber /man/8/plumber +plumber.b /man/8/plumber +plumbing /man/1/brutus +plumbing /man/1/deb +plumbing /man/1/ftree +plumbing /man/1/plumb +plumbing /man/1/wm-misc +plumbing /man/1/wm-sh +plumbing /man/2/plumbmsg +plumbing /man/6/plumbing +plumbing /man/8/plumber +plumbing.b /man/8/plumber +plumbmsg /man/1/plumb +plumbmsg /man/2/plumbmsg +plumbmsg /man/6/plumbing +plumbmsg /man/8/plumber +plumbmsg.b /man/2/plumbmsg +plumbmsg.m /man/2/plumbmsg +plumbs /man/1/brutus +plumbs /man/1/deb +plumbs /man/1/ftree +plumbs /man/1/wm-sh +plus /man/1/cprof +plus /man/1/mathcalc +plus /man/1/sh-arg +plus /man/1/sort +plus /man/10/c2l +plus /man/10/print +plus /man/10/styx +plus /man/2/sys-seek +plus /man/3/prog +plus /man/4/acme +plus /man/5/read +plus /man/6/colour +plus /man/8/prep +plus /man/9/canvas +plus /man/9/destroy +plus /man/9/grid +plus /man/9/pack +plus /man/9/radiobutton +pmode /man/2/print +pmode.cfg /man/2/print +pn /man/10/plan9.ini +png /man/1/wm-misc +pngreader /man/2/imagefile +pnic /man/10/plan9.ini +pnic2 /man/10/plan9.ini +pnp /man/3/pnp +pnp0 /man/3/pnp +po /man/10/plan9.ini +pocket /man/1/mux +point's /man/4/archfs +pointed /man/1/acme +pointed /man/10/atoi +pointed /man/10/malloc +pointed /man/10/strcat +pointed /man/10/styxserver +pointed /man/2/sys-dirread +pointer /man/1/emu +pointer /man/1/wish +pointer /man/1/wm +pointer /man/10/2c +pointer /man/10/a.out +pointer /man/10/acid +pointer /man/10/allocb +pointer /man/10/devattach +pointer /man/10/dynld +pointer /man/10/intrenable +pointer /man/10/malloc +pointer /man/10/memory +pointer /man/10/newchan +pointer /man/10/parsecmd +pointer /man/10/print +pointer /man/10/qio +pointer /man/10/rune +pointer /man/10/strcat +pointer /man/10/styx +pointer /man/10/styxserver +pointer /man/10/xalloc +pointer /man/2/0intro +pointer /man/2/attrdb +pointer /man/2/crc +pointer /man/2/devpointer +pointer /man/2/draw-0intro +pointer /man/2/draw-context +pointer /man/2/draw-display +pointer /man/2/draw-font +pointer /man/2/draw-pointer +pointer /man/2/sys-seek +pointer /man/2/tk +pointer /man/2/tkclient +pointer /man/2/w3c-xpointers +pointer /man/2/wmclient +pointer /man/2/wmsrv +pointer /man/3/cons +pointer /man/3/pointer +pointer /man/3/prog +pointer /man/6/dis +pointer /man/6/sbl +pointer /man/9/button +pointer /man/9/checkbutton +pointer /man/9/grab +pointer /man/9/menu +pointer /man/9/menubutton +pointer /man/9/radiobutton +pointer's /man/2/draw-pointer +pointer's /man/3/cons +pointers /man/10/2c +pointers /man/10/allocb +pointers /man/10/dynld +pointers /man/10/getfields +pointers /man/10/parsecmd +pointers /man/10/print +pointers /man/10/qio +pointers /man/10/styx +pointers /man/10/styxserver +pointers /man/2/dbm +pointers /man/2/dis +pointers /man/2/w3c-xpointers +pointers /man/3/prog +pointers /man/6/dis +pointertype /man/2/venti +pointing /man/1/acme +pointing /man/10/allocb +pointing /man/2/draw-0intro +pointing /man/2/draw-context +pointing /man/3/cons +pointing /man/3/pointer +pointing /man/5/0intro +points /man/1/0intro +points /man/1/math-misc +points /man/1/wm-misc +points /man/10/dev +points /man/10/devattach +points /man/10/dynld +points /man/10/intrenable +points /man/10/print +points /man/2/asn1 +points /man/2/draw-0intro +points /man/2/draw-image +points /man/2/draw-point +points /man/2/draw-rect +points /man/2/math-linalg +points /man/2/regex +points /man/3/draw +points /man/3/dup +points /man/3/ip +points /man/3/root +points /man/3/touch +points /man/4/mntgen +points /man/4/namespace +points /man/5/attach +points /man/5/clunk +points /man/5/open +points /man/5/read +points /man/5/remove +points /man/5/stat +points /man/5/version +points /man/5/walk +points /man/9/canvas +points /man/9/types +policy /man/2/keyring-crypt +polish /man/1/fc +polish /man/1/sh-expr +polish /man/3/dbg +poll /man/1/collab-clients +poll /man/8/collabsrv +poll.b /man/1/collab-clients +polled /man/1/collab-clients +poller /man/1/collab-clients +poller /man/8/collabsrv +poller.b /man/1/collab-clients +polling /man/1/collab-clients +polls /man/1/collab-clients +poly /man/2/crc +poly /man/2/draw-image +polygon /man/2/draw-image +polygon /man/3/draw +polygon /man/9/canvas +polygon's /man/2/draw-image +polygon's /man/3/draw +polygon's /man/9/canvas +polygonal /man/9/canvas +polygons /man/9/canvas +polyhedra /man/1/mprof +polyhedra /man/1/sh-alphabet +polyhedra /man/1/wm-misc +polyhedra.b /man/1/wm-misc +polynomial /man/1/math-misc +polynomial /man/2/crc +polyop /man/2/draw-image +pool /man/1/emu +pool /man/1/mprof +pool /man/1/wm-misc +pool /man/10/malloc +pool /man/10/plan9.ini +pool /man/2/0intro +pool /man/3/cons +pool /man/8/ftl +pools /man/1/emu +pools /man/1/wm-misc +pools /man/3/cons +poor /man/4/iostats +poorly /man/10/ms2 +pop /man/1/collab-clients +pop /man/1/fc +pop /man/1/wm-misc +pop /man/1/wm-sh +pop /man/10/a.out +pop /man/2/dialog +pop /man/2/dis +pop /man/2/sh +pop /man/2/wmsrv +pop /man/6/ubfa +pop3 /man/1/acme +pop3 /man/2/dhcpclient +pop3 /man/2/pop3 +pop3 /man/6/ndb +pop3.b /man/2/pop3 +pop3.m /man/2/pop3 +poperror /man/10/error +popped /man/1/ebook +popped /man/1/mash-tk +popped /man/1/sh-expr +popped /man/2/sh +popped /man/6/ubfa +pops /man/1/collab-clients +pops /man/1/cprof +pops /man/1/filename +pops /man/1/ftree +pops /man/1/logwindow +pops /man/1/mash-tk +pops /man/10/error +pops /man/2/dialog +pops /man/2/popup +pops /man/4/factotum +pops /man/6/dis +popserver /man/2/pop3 +popt /man/2/print +popts.cfg /man/2/print +popular /man/1/wm-misc +populate /man/2/tkclient +populate /man/3/tls +populated /man/1/netstat +populated /man/4/dbfs +populating /man/1/grid-ns +popup /man/1/charon +popup /man/1/mash-tk +popup /man/1/tktester +popup /man/2/popup +popup.b /man/2/popup +popup.m /man/2/popup +port /man/1/avr +port /man/1/charon +port /man/1/dmview +port /man/1/grid-localreg +port /man/1/grid-register +port /man/1/listen +port /man/1/netstat +port /man/1/telnet +port /man/10/0intro +port /man/10/acid +port /man/10/allocb +port /man/10/conf +port /man/10/devattach +port /man/10/error +port /man/10/inb +port /man/10/lock +port /man/10/newchan +port /man/10/odbc +port /man/10/parsecmd +port /man/10/plan9.ini +port /man/10/qio +port /man/10/qlock +port /man/10/readnum +port /man/10/ref +port /man/10/sleep +port /man/10/styxserver +port /man/10ti925/tihost +port /man/2/dhcpclient +port /man/2/plumbmsg +port /man/2/srv +port /man/2/sys-0intro +port /man/2/sys-dial +port /man/2/sys-export +port /man/2/sys-file2chan +port /man/2/sys-iounit +port /man/2/sys-print +port /man/2/virgil +port /man/3/arch +port /man/3/audio +port /man/3/boot +port /man/3/cap +port /man/3/cmd +port /man/3/cons +port /man/3/dbg +port /man/3/draw +port /man/3/ds +port /man/3/dup +port /man/3/dynld +port /man/3/eia +port /man/3/env +port /man/3/ether +port /man/3/fs +port /man/3/i2c +port /man/3/indir +port /man/3/ip +port /man/3/kprof +port /man/3/logfs +port /man/3/lpt +port /man/3/mnt +port /man/3/mpeg +port /man/3/pipe +port /man/3/pnp +port /man/3/pointer +port /man/3/prof +port /man/3/prog +port /man/3/root +port /man/3/sd +port /man/3/sign +port /man/3/srv +port /man/3/tinyfs +port /man/3/tls +port /man/3/tv +port /man/3/vga +port /man/4/export +port /man/4/ftpfs +port /man/4/namespace +port /man/6/ndb +port /man/6/plumbing +port /man/7/db +port /man/8/bootpd +port /man/8/cs +port /man/8/httpd +port /man/8/logind +port /man/8/mangaload +port /man/8/plumber +port /man/8/rdbgsrv +port /man/8/svc +port /man/8/virgild +portability /man/10/inb +portability /man/6/colour +portable /man/1/0intro +portable /man/1/mux +portable /man/10/0intro +portable /man/10/conf +portable /man/2/keyring-certtostr +portable /man/3/ip +portable /man/4/namespace +portdat.h /man/10/devattach +portdir /man/10/conf +porter /man/1/alphabet-fs +porter /man/1/fs +porter /man/2/draw-image +porter /man/6/colour +portion /man/1/0intro +portion /man/1/sh-regex +portion /man/10/styx +portion /man/2/draw-font +portion /man/2/draw-image +portion /man/2/draw-rect +portion /man/2/prefab-element +portion /man/2/sexprs +portion /man/3/mnt +portion /man/3/vga +portion /man/4/palmsrv +portion /man/7/db +portion /man/9/entry +portion /man/9/options +portion /man/9/scale +portion /man/9/scrollbar +portion /man/9/see +portion /man/9/text +portions /man/1/sh-regex +portions /man/2/draw-font +portions /man/3/draw +portions /man/3/pipe +portions /man/9/text +portmkfile /man/10/conf +portproto /man/6/proto +portproto /man/8/mkfs +portrait /man/2/print +ports /man/10/plan9.ini +ports /man/3/arch +ports /man/3/audio +ports /man/3/eia +ports /man/3/ip +ports /man/3/lpt +ports /man/4/ftpfs +ports /man/8/signer +pos /man/2/debug +pos /man/6/sbl +pose /man/1/collab-clients +pose /man/2/virgil +posible /man/9/image +positioned /man/2/draw-image +positioned /man/2/prefab-compound +positioned /man/2/sexprs +positioned /man/9/grid +positioned /man/9/options +positioned /man/9/panel +positioned /man/9/text +positioning /man/9/canvas +positions /man/1/deb +positions /man/1/tktester +positions /man/2/draw-context +positions /man/2/draw-pointer +positions /man/2/math-fp +positions /man/2/prof +positions /man/2/regex +positions /man/2/sexprs +positions /man/3/pointer +positions /man/6/sbl +positions /man/9/canvas +positions /man/9/entry +positions /man/9/listbox +positions /man/9/pack +positions /man/9/text +positive /man/10/print +positive /man/2/bloomfilter +positive /man/2/draw-image +positive /man/2/keyring-ipint +positive /man/2/math-fp +positive /man/2/sys-bind +positive /man/9/canvas +positive /man/9/entry +positive /man/9/listbox +positive /man/9/text +positve /man/2/bloomfilter +posix /man/1/tail +posix /man/4/tarfs +posix.1 /man/1/gettar +posix.c /man/3/fs +posn /man/2/devpointer +posname /man/10/iar +possess /man/2/keyring-0intro +possess /man/4/registry +possesses /man/4/keysrv +possessing /man/4/factotum +possessing /man/6/auth +possibility /man/10/lock +possibility /man/2/0intro +possibility /man/5/0intro +possibility /man/9/1copyright +possibly /man/1/acme +possibly /man/1/mash +possibly /man/1/mk +possibly /man/1/sh +possibly /man/1/tr +possibly /man/10/a.out +possibly /man/10/mk +possibly /man/2/format +possibly /man/2/palmfile +possibly /man/2/prefab-compound +possibly /man/2/security-0intro +possibly /man/2/styxservers +possibly /man/2/sys-bind +possibly /man/2/sys-fversion +possibly /man/2/tkclient +possibly /man/2/wmclient +possibly /man/2/wmsrv +possibly /man/3/dbg +possibly /man/3/prog +possibly /man/9/bind +possibly /man/9/types +post /man/1/diff +post /man/2/pop3 +post /man/3/srv9 +post /man/4/acme +post /man/9/menu +post /man/9/menubutton +postcascade /man/9/menu +postcommand /man/9/menu +posted /man/2/spree +posted /man/3/srv9 +posted /man/4/9srvfs +posted /man/9/menu +posted /man/9/menubutton +postfix /man/1/mc +postfix /man/1/sh-expr +posting /man/2/spree +posting /man/9/menu +posts /man/9/menu +posts /man/9/menubutton +postscript /man/2/pslib +pos• /man/6/sbl +potent /man/1/0intro +potential /man/1/mk +potential /man/10/mk +potentially /man/1/0intro +potentially /man/1/acme +potentially /man/10/allocb +potentially /man/2/asn1 +potentially /man/2/spree +potentially /man/2/styxservers-nametree +potentially /man/3/tls +pound /man/1/units +pounds /man/1/units +pow /man/1/fc +pow /man/1/mathcalc +pow /man/1/mc +pow /man/2/math-elem +pow10 /man/2/math-elem +powered /man/10/dev +powered /man/3/fpga +powerful /man/1/0intro +powerpc /man/10/5cv +powerpc /man/10/a.out +powerpc /man/10/inb +powers /man/1/math-misc +powers.b /man/1/math-misc +pp /man/1/alphabet-fs +pp /man/1/fs +pp /man/2/draw-image +pp /man/2/ida +pp /man/6/image +pp /man/6/man +ppath /man/10/styxserver +ppcboot /man/10/5cv +ppp /man/3/ip +pqid /man/10/styxserver +pr /man/2/print +practical /man/2/sys-self +practice /man/1/ns +practice /man/10/2l +practice /man/10/sleep +practice /man/2/0intro +practice /man/2/command +practice /man/2/draw-0intro +practice /man/2/plumbmsg +practice /man/2/prefab-style +pragma /man/10/2c +pragmas /man/10/2c +pragmatic /man/2/sh +prc /man/2/palmfile +pre /man/1/acme +pre /man/1/sh-string +pre /man/10/a.out +pre /man/2/spree-gather +pre /man/2/string +pre /man/9/types +pread /man/1/cp +pread /man/2/sys-read +precede /man/1/deb +precede /man/1/grep +precede /man/10/error +precede /man/10/iar +precede /man/3/mnt +precede /man/3/tls +precede /man/4/factotum +precedence /man/1/acme +precedence /man/1/deb +precedence /man/1/mash +precedence /man/1/mc +precedence /man/1/mk +precedence /man/1/stack +precedence /man/1/tiny +precedence /man/1/units +precedence /man/1/yacc +precedence /man/10/mk +precedence /man/2/spree-cardlib +precedence /man/8/cs +precedes /man/10/styx +precedes /man/3/cmd +precedes /man/9/grid +preceding /man/1/acme +preceding /man/1/mash +preceding /man/1/mk +preceding /man/10/2c +preceding /man/10/a.out +preceding /man/10/mk +preceding /man/2/alphabet-intro +preceding /man/2/w3c-css +preceding /man/2/w3c-xpointers +preceding /man/5/walk +preceding /man/6/regexp +preceding /man/6/sexprs +preceeding /man/2/cfg +precise /man/2/math-fp +precise /man/2/sexprs +precise /man/3/mpeg +precisely /man/3/sign +precision /man/1/fc +precision /man/10/print +precision /man/2/keyring-0intro +precision /man/2/keyring-ipint +precision /man/2/math-export +precision /man/2/math-fp +precision /man/3/vga +precision /man/6/keytext +precludes /man/10/print +preconditioning /man/10/2c +pred /man/2/w3c-xpointers +predecessors /man/1/tsort +predefined /man/1/brutus +predefined /man/1/mathcalc +predefined /man/1/mc +predefined /man/1/tkcmd +predefined /man/10/error +predefined /man/2/ip +predefined /man/2/w3c-xpointers +predefined /man/6/man +predicate /man/10/sleep +predicate /man/2/styx +predicate /man/2/w3c-xpointers +predictable /man/3/cons +preds /man/2/w3c-xpointers +preelem /man/2/xml +prefab /man/1/0intro +prefab /man/1/mux +prefab /man/2/0intro +prefab /man/2/draw-0intro +prefab /man/2/draw-context +prefab /man/2/ir +prefab /man/2/prefab-0intro +prefab /man/2/prefab-compound +prefab /man/2/prefab-element +prefab /man/2/prefab-environ +prefab /man/2/prefab-style +prefab /man/2/volume +prefab.c /man/2/prefab-0intro +prefab.c /man/2/prefab-compound +prefab.c /man/2/prefab-element +prefab.c /man/2/prefab-environ +prefab.c /man/2/prefab-style +prefab.m /man/2/prefab-0intro +prefab.m /man/2/prefab-compound +prefab.m /man/2/prefab-element +prefab.m /man/2/prefab-environ +prefab.m /man/2/prefab-style +preferable /man/10/qio +preferable /man/8/rip +preference /man/9/see +preferred /man/1/deb +preferred /man/1/tcs +preferred /man/2/dividers +preferred /man/2/ip +preferred /man/6/man +prefix /man/1/basename +prefix /man/1/cal +prefix /man/1/mdb +prefix /man/1/sh-alphabet +prefix /man/1/sh-std +prefix /man/1/sh-string +prefix /man/1/stack +prefix /man/1/webgrab +prefix /man/1/yacc +prefix /man/10/2c +prefix /man/10/panic +prefix /man/2/0intro +prefix /man/2/alphabet-intro +prefix /man/2/asn1 +prefix /man/2/disks +prefix /man/2/ip +prefix /man/2/names +prefix /man/2/prof +prefix /man/2/sh +prefix /man/2/spki +prefix /man/2/string +prefix /man/2/styx +prefix /man/2/sys-print +prefix /man/2/volume +prefix /man/4/archfs +prefix /man/6/keytext +prefix /man/8/collabsrv +prefix /man/8/create +prefix /man/9/options +prefix /man/9/scale +prefix /man/9/scrollbar +prefixed /man/1/acme +prefixed /man/1/cleanname +prefixed /man/1/fc +prefixed /man/1/miniterm +prefixed /man/1/sh-alphabet +prefixed /man/1/units +prefixed /man/1/xd +prefixed /man/10/acid +prefixed /man/10/plan9.ini +prefixed /man/2/sh +prefixed /man/3/logfs +prefixed /man/3/sd +prefixed /man/6/keytext +prefixed /man/8/collabsrv +prefixed /man/8/prep +prefixed /man/9/bind +prefixes /man/1/units +prefixes /man/4/archfs +prefixes /man/8/create +prefixing /man/1/mash +prefixing /man/1/sh +prefixing /man/1/timestamp +preflt /man/2/ip +premultiplied /man/2/draw-0intro +premultiplied /man/6/colour +prentice /man/1/yacc +prep /man/10/9load +prep /man/2/disks +prep /man/8/prep +prepare /man/10/dmainit +prepare /man/4/kfs +prepare /man/5/open +prepare /man/8/prep +prepared /man/1/acme +prepared /man/10/9load +prepared /man/2/plumbmsg +prepared /man/2/tk +prepared /man/5/0intro +prepared /man/8/prep +prepares /man/10/dmainit +prepares /man/2/drawmux +prepares /man/2/sys-open +prepares /man/8/prep +prepares /man/8/rstyxd +prepended /man/1/mash +prepending /man/1/mash-tk +preprocessed /man/10/a.out +preprocessing /man/10/2c +preprocessor /man/10/2a +preprocessor /man/10/2c +preprocessor /man/10/c2l +preprocessors /man/1/man +preprocessors /man/6/man +prereq /man/1/mk +prereq /man/10/mk +prereq1 /man/1/mk +prereq1 /man/10/mk +prereq2 /man/1/mk +prereq2 /man/10/mk +prerequisite /man/1/mash +prerequisite /man/1/mk +prerequisite /man/10/mk +prerequisite /man/2/styxservers +prerequisites /man/1/mash-make +prerequisites /man/1/mk +prerequisites /man/10/mk +prescient /man/6/image +prescribed /man/10/dev +presence /man/10/2c +presence /man/10/ar +presence /man/10/strcat +presence /man/2/readdir +presence /man/4/acme +presence /man/6/sbl +presence /man/9/grid +presentation /man/1/charon +presentation /man/3/cons +presentation /man/3/kprof +presentations /man/1/mux +presented /man/1/logon +presented /man/1/man +presented /man/1/mash-tk +presented /man/1/netstat +presented /man/10/dev +presented /man/10/plan9.ini +presented /man/2/bufio-chanfill +presented /man/2/dbm +presented /man/2/draw-image +presented /man/2/spree +presented /man/2/styxservers +presented /man/2/sys-export +presented /man/2/w3c-css +presented /man/3/fpga +presented /man/5/0intro +presented /man/5/attach +presented /man/6/login +presented /man/8/collabsrv +presented /man/8/getauthinfo +presenting /man/8/collabsrv +presents /man/1/0intro +presents /man/1/session +presents /man/10/kprof +presents /man/10/odbc +presents /man/2/dividers +presents /man/2/draw-example +presents /man/2/encoding +presents /man/2/sh +presents /man/2/sys-0intro +presents /man/2/sys-file2chan +presents /man/3/arch +preserve /man/1/dd +preserve /man/10/iar +preserve /man/2/keyring-getmsg +preserve /man/3/ip +preserved /man/1/cp +preserved /man/1/fmt +preserved /man/1/uuencode +preserved /man/2/sys-0intro +preserved /man/2/sys-pctl +preserved /man/3/pipe +preserves /man/10/c2l +preserves /man/2/styxservers +presotto /man/4/factotum +press /man/1/acme +press /man/3/touch +press /man/9/bind +press /man/9/text +pressed /man/1/acme +pressed /man/1/deb +pressed /man/1/wm +pressed /man/2/draw-pointer +pressed /man/2/popup +pressed /man/2/tk +pressed /man/9/bind +pressed /man/9/button +pressed /man/9/canvas +pressed /man/9/checkbutton +pressed /man/9/listbox +pressed /man/9/menubutton +pressed /man/9/radiobutton +pressed /man/9/scale +pressed /man/9/scrollbar +pressed /man/9/text +presses /man/9/bind +presses /man/9/button +presses /man/9/checkbutton +presses /man/9/grab +presses /man/9/menu +presses /man/9/menubutton +presses /man/9/radiobutton +presses /man/9/text +pressing /man/1/acme +pressing /man/1/deb +pressing /man/9/button +pressing /man/9/listbox +pressing /man/9/menu +pressing /man/9/menubutton +pressing /man/9/options +pressing /man/9/scrollbar +pressure /man/1/units +pressure /man/3/touch +presumably /man/10/ms2 +presumed /man/10/ms2 +presumed /man/10ti925/epocimg +presumed /man/10ti925/tihost +presumed /man/3/kprof +pretend /man/1/mk +pretend /man/10/mk +pretend /man/2/security-0intro +pretends /man/2/security-0intro +pretty /man/1/alphabet-main +pretty /man/10/c2l +prev /man/1/wm-misc +prev /man/2/spree-cardlib +prevailing /man/6/man +prevails /man/3/fs +prevent /man/1/filename +prevent /man/1/limbo +prevent /man/1/man +prevent /man/1/sh-tk +prevent /man/10/allocb +prevent /man/10/styxserver +prevent /man/2/disks +prevent /man/2/security-0intro +prevent /man/2/sys-chdir +prevent /man/2/sys-pctl +prevent /man/3/cap +prevent /man/3/cmd +prevent /man/9/bind +preventing /man/10/dmainit +preventing /man/6/regexp +prevents /man/1/charon +prevents /man/10/ref +prevents /man/2/prof +prevents /man/2/sys-export +prevents /man/3/cmd +prevents /man/3/flash +prevents /man/4/ramfile +previously /man/1/mv +previously /man/1/netstat +previously /man/1/ps +previously /man/1/sh +previously /man/1/sh-alphabet +previously /man/1/wm-sh +previously /man/10/acid +previously /man/10/dmainit +previously /man/10/intrenable +previously /man/10/lock +previously /man/10/xalloc +previously /man/2/bufio +previously /man/2/dhcpclient +previously /man/2/ida +previously /man/2/plumbmsg +previously /man/2/secstore +previously /man/2/security-0intro +previously /man/2/sh +previously /man/2/spree +previously /man/2/spree-cardlib +previously /man/2/styxservers +previously /man/2/styxservers-nametree +previously /man/2/xml +previously /man/3/cap +previously /man/3/cmd +previously /man/3/ftl +previously /man/3/ip +previously /man/3/tinyfs +previously /man/3/touch +previously /man/3/tv +previously /man/4/9srvfs +previously /man/4/ramfile +previously /man/5/attach +previously /man/6/image +previously /man/6/login +previously /man/6/sbl +previously /man/8/createsignerkey +previously /man/8/getauthinfo +previously /man/8/prep +previously /man/8/register +previously /man/8/signer +previously /man/9/canvas +previously /man/9/grid +previously /man/9/menu +previously /man/9/send +previously /man/9/types +prevrange /man/9/text +prf /man/1/cprof +prf /man/2/prof +pri /man/10/kproc +pribackground /man/10/kproc +prihi /man/10/kproc +prihicodec /man/10/kproc +prilo /man/10/kproc +prilock /man/10/kproc +prilock /man/10/lock +prilocodec /man/10/kproc +primality /man/1/math-misc +primaries /man/3/dbg +primarily /man/2/tk +primary /man/10/0intro +primary /man/10/styxserver +primary /man/2/attrdb +primary /man/2/cfg +primary /man/2/convcs +primary /man/2/disks +primary /man/2/w3c-xpointers +primary /man/3/cons +primary /man/3/flash +primary /man/6/colour +primary /man/6/scancode +primary /man/8/applylog +primary /man/8/prep +primary /man/9/frame +prime /man/1/math-misc +prime /man/2/hash +prime /man/2/keyring-gensk +primes /man/1/math-misc +primes.b /man/1/math-misc +primitive /man/10/qlock +primitive /man/2/asn1 +primitive /man/2/draw-0intro +primitive /man/2/draw-font +primitive /man/2/keyring-gensk +primitive /man/2/math-0intro +primitive /man/2/math-linalg +primitive /man/2/mpeg +primitive /man/6/sexprs +primitive /man/6/ubfa +primitives /man/1/0intro +primitives /man/1/mash-tk +primitives /man/1/sh-csv +primitives /man/1/sh-sexprs +primitives /man/1/sh-tk +primitives /man/10/lock +primitives /man/10/splhi +primitives /man/10/xalloc +primitives /man/2/alphabet-intro +primitives /man/2/draw-example +primitives /man/2/draw-image +primitives /man/2/math-linalg +primitives /man/2/security-auth +primitives /man/2/tk +primitives /man/3/draw +principal /man/1/0intro +principal /man/2/asn1 +principal /man/2/spki +principals /man/2/security-0intro +principals /man/2/spki +principles /man/1/0intro +principles /man/2/spki +prinormal /man/10/kproc +print /man/1/acme +print /man/1/alphabet-fs +print /man/1/alphabet-main +print /man/1/cal +print /man/1/cmp +print /man/1/comm +print /man/1/crypt +print /man/1/date +print /man/1/disdep +print /man/1/du +print /man/1/echo +print /man/1/emu +print /man/1/fc +print /man/1/freq +print /man/1/fs +print /man/1/gettar +print /man/1/grep +print /man/1/grid-monitor +print /man/1/limbo +print /man/1/look +print /man/1/ls +print /man/1/man +print /man/1/mash +print /man/1/math-misc +print /man/1/mc +print /man/1/mdb +print /man/1/mk +print /man/1/pwd +print /man/1/secstore +print /man/1/sh +print /man/1/sh-alphabet +print /man/1/sh-std +print /man/1/stack +print /man/1/tail +print /man/1/unicode +print /man/1/uniq +print /man/1/units +print /man/1/webgrab +print /man/1/xd +print /man/1/yacc +print /man/10/2c +print /man/10/2l +print /man/10/5coff +print /man/10/acid +print /man/10/error +print /man/10/iar +print /man/10/inm +print /man/10/ksize +print /man/10/mk +print /man/10/odbc +print /man/10/panic +print /man/10/print +print /man/10/qio +print /man/10/styxserver +print /man/2/arg +print /man/2/asn1 +print /man/2/bloomfilter +print /man/2/command +print /man/2/draw-0intro +print /man/2/ir +print /man/2/itslib +print /man/2/keyring-0intro +print /man/2/print +print /man/2/prof +print /man/2/sets +print /man/2/sys-0intro +print /man/2/sys-print +print /man/2/sys-werrstr +print /man/2/tftp +print /man/2/w3c-css +print /man/3/cons +print /man/4/dossrv +print /man/4/registry +print /man/8/applylog +print /man/8/bootpd +print /man/8/changelogin +print /man/8/create +print /man/8/cs +print /man/8/dhcp +print /man/8/kfscmd +print /man/8/mkfs +print /man/8/prep +print /man/8/rdbgsrv +print /man/8/styxchat +print.b /man/2/print +print.c /man/2/sys-print +print.dis /man/2/print +print.m /man/2/print +printable /man/1/acme +printable /man/1/freq +printable /man/1/mdb +printable /man/1/strings +printable /man/1/xd +printable /man/2/bufio +printable /man/2/encoding +printable /man/2/keyring-certtostr +printable /man/2/print +printable /man/2/sexprs +printable /man/2/styx +printable /man/2/sys-0intro +printable /man/2/ubfa +printable /man/2/w3c-xpointers +printable /man/5/0intro +printable /man/6/sexprs +printable /man/6/users +printablestring /man/2/asn1 +printbase /man/1/mc +printed /man/1/acme +printed /man/1/alphabet-fs +printed /man/1/basename +printed /man/1/cal +printed /man/1/disdep +printed /man/1/fc +printed /man/1/freq +printed /man/1/fs +printed /man/1/kill +printed /man/1/ls +printed /man/1/man +printed /man/1/mash +printed /man/1/mc +printed /man/1/mdb +printed /man/1/mk +printed /man/1/ps +printed /man/1/sh +printed /man/1/sh-alphabet +printed /man/1/sh-arg +printed /man/1/sh-expr +printed /man/1/sh-std +printed /man/1/sh-tk +printed /man/1/tkcmd +printed /man/1/unicode +printed /man/1/xd +printed /man/10/a.out +printed /man/10/inm +printed /man/10/kprof +printed /man/10/mk +printed /man/10/plan9.ini +printed /man/10/srclist +printed /man/2/arg +printed /man/2/sh +printed /man/2/sys-print +printed /man/3/cons +printed /man/4/iostats +printed /man/6/man +printed /man/8/ping +printed /man/8/prep +printed /man/8/styxmon +printed /man/9/send +printer /man/10/c2l +printer /man/2/print +printer /man/3/lpt +printer's /man/2/print +printer.cfg /man/2/print +printers /man/2/print +printers /man/3/lpt +printfd /man/2/print +printing /man/1/bind +printing /man/1/comm +printing /man/1/mdb +printing /man/1/mk +printing /man/1/sh-tk +printing /man/1/strings +printing /man/1/tail +printing /man/10/mk +printing /man/10/qio +printing /man/2/math-0intro +printing /man/2/print +printing /man/2/sh +printing /man/4/acme +printing /man/4/ftpfs +printing /man/6/man +printing /man/8/cs +printing /man/8/styxchat +printing /man/9/bind +printing /man/9/entry +printing /man/9/text +prints /man/1/acme +prints /man/1/asm +prints /man/1/basename +prints /man/1/cal +prints /man/1/cat +prints /man/1/cleanname +prints /man/1/cmp +prints /man/1/date +prints /man/1/env +prints /man/1/fc +prints /man/1/filename +prints /man/1/fortune +prints /man/1/freq +prints /man/1/fs +prints /man/1/grep +prints /man/1/grid-register +prints /man/1/kill +prints /man/1/look +prints /man/1/man +prints /man/1/math-misc +prints /man/1/mathcalc +prints /man/1/mc +prints /man/1/mdb +prints /man/1/mkdir +prints /man/1/netkey +prints /man/1/netstat +prints /man/1/ns +prints /man/1/ps +prints /man/1/pwd +prints /man/1/read +prints /man/1/sh +prints /man/1/sh-alphabet +prints /man/1/strings +prints /man/1/sum +prints /man/1/tsort +prints /man/1/unicode +prints /man/10/5cv +prints /man/10/9load +prints /man/10/acid +prints /man/10/inm +prints /man/10/ksize +prints /man/10/print +prints /man/10/srclist +prints /man/2/print +prints /man/2/prof +prints /man/2/sh +prints /man/2/sys-byte2char +prints /man/2/sys-print +prints /man/3/cons +prints /man/4/registry +prints /man/8/bootpd +prints /man/8/create +prints /man/8/cs +prints /man/8/dns +prints /man/8/mangaload +prints /man/8/mkfs +prints /man/8/prep +prints /man/8/sntp +prints /man/8/styxchat +prior /man/1/mk +prior /man/1/sh +prior /man/1/tkcmd +prior /man/10/mk +prior /man/2/spree +prior /man/2/spree-cardlib +prior /man/4/cpu +priori /man/2/tk +priorities /man/1/mash +prioritized /man/10/9load +priority /man/1/auplay +priority /man/1/mathcalc +priority /man/1/os +priority /man/10/kproc +priority /man/10/lock +priority /man/2/srv +priority /man/2/w3c-css +priority /man/3/cmd +priority /man/3/kprof +priority /man/9/text +prirealtime /man/10/kproc +prism /man/10/plan9.ini +priv /man/10/styxserver +privacy /man/2/secstore +private /man/10/styxserver +private /man/2/asn1 +private /man/2/draw-context +private /man/2/draw-example +private /man/2/draw-image +private /man/2/draw-screen +private /man/2/keyring-0intro +private /man/2/keyring-auth +private /man/2/keyring-certtostr +private /man/2/keyring-gensk +private /man/2/keyring-sha1 +private /man/2/security-0intro +private /man/2/security-login +private /man/2/sh +private /man/2/spki +private /man/2/spree +private /man/2/sys-pctl +private /man/3/draw +private /man/4/factotum +private /man/4/namespace +private /man/6/auth +private /man/6/keytext +private /man/6/users +private /man/8/collabsrv +private /man/8/createsignerkey +private /man/8/httpd +private /man/8/svc +privately /man/2/asn1 +privilege /man/1/wm +privileged /man/10/eve +privileged /man/3/cons +privileged /man/8/bootpd +privileges /man/10/eve +privileges /man/3/ip +privileges /man/5/0intro +privileges /man/8/cs +pro /man/10/plan9.ini +probabilistic /man/2/bloomfilter +probability /man/2/bloomfilter +probe /man/1/charon +probe /man/8/ping +probed /man/1/charon +probed /man/10/plan9.ini +probes /man/2/spree +probing /man/10/9load +probing /man/10/plan9.ini +proc /man/10/acid +proc /man/10/error +proc /man/10/kproc +proc /man/10/sleep +proc /man/2/draw-image +proc /man/3/dbg +proc.c /man/10/error +proc.c /man/10/sleep +procedure /man/1/mkdir +procedure /man/10/plan9.ini +procedure /man/2/draw-image +procedure /man/2/keyring-0intro +procedure /man/2/plumbmsg +procedure /man/2/security-login +procedure /man/2/sys-dial +procedure /man/3/0intro +procedure /man/3/ip +procedure /man/3/mnt +procedure /man/6/dis +procedures /man/10/0intro +procedures /man/10/9load +procedures /man/10/error +procedures /man/2/keyring-0intro +procedures /man/4/namespace +proceed /man/10/qio +proceed /man/2/lock +proceed /man/4/factotum +proceed /man/9/text +proceeded /man/1/listen +proceeding /man/1/bind +proceeding /man/10/9load +proceeds /man/10/9load +proceeds /man/10/qio +proceeds /man/2/draw-image +process /man/1/0intro +process /man/1/bind +process /man/1/blur +process /man/1/charon +process /man/1/deb +process /man/1/diff +process /man/1/emu +process /man/1/grid-monitor +process /man/1/kill +process /man/1/listen +process /man/1/mc +process /man/1/mk +process /man/1/nsbuild +process /man/1/ps +process /man/1/sh +process /man/1/sh-file2chan +process /man/1/sh-std +process /man/1/sh-tk +process /man/1/stack +process /man/1/stream +process /man/1/tiny +process /man/1/wm-misc +process /man/1/wm-sh +process /man/10/acid +process /man/10/c2l +process /man/10/dev +process /man/10/dynld +process /man/10/error +process /man/10/eve +process /man/10/intrenable +process /man/10/kproc +process /man/10/lock +process /man/10/mk +process /man/10/newchan +process /man/10/odbc +process /man/10/plan9.ini +process /man/10/qio +process /man/10/qlock +process /man/10/sleep +process /man/2/0intro +process /man/2/bufio-chanfill +process /man/2/command +process /man/2/dbm +process /man/2/debug +process /man/2/devpointer +process /man/2/dhcpclient +process /man/2/draw-display +process /man/2/draw-screen +process /man/2/env +process /man/2/exception +process /man/2/filter +process /man/2/imagefile +process /man/2/ir +process /man/2/keyring-getstring +process /man/2/mpeg +process /man/2/prof +process /man/2/secstore +process /man/2/sh +process /man/2/styxconv +process /man/2/styxpersist +process /man/2/styxservers +process /man/2/styxservers-nametree +process /man/2/sys-0intro +process /man/2/sys-bind +process /man/2/sys-chdir +process /man/2/sys-export +process /man/2/sys-file2chan +process /man/2/sys-open +process /man/2/sys-pctl +process /man/2/sys-pipe +process /man/2/sys-sleep +process /man/2/sys-stat +process /man/2/sys-werrstr +process /man/2/timers +process /man/2/tkclient +process /man/2/volume +process /man/2/wait +process /man/2/wmclient +process /man/2/wmlib +process /man/2/wmsrv +process /man/2/workdir +process /man/2/xml +process /man/3/cap +process /man/3/cmd +process /man/3/cons +process /man/3/dbg +process /man/3/draw +process /man/3/dup +process /man/3/env +process /man/3/ip +process /man/3/mnt +process /man/3/plap +process /man/3/prog +process /man/3/sd +process /man/3/sign +process /man/3/srv +process /man/3/touch +process /man/4/dbfs +process /man/4/export +process /man/4/factotum +process /man/4/import +process /man/4/lockfs +process /man/4/logfile +process /man/5/0intro +process /man/5/flush +process /man/5/open +process /man/6/login +process /man/7/db +process /man/8/collabsrv +process /man/8/cs +process /man/8/dhcp +process /man/8/mangaload +process /man/8/register +process /man/8/touchcal +process's /man/1/0intro +process's /man/1/env +process's /man/1/kill +process's /man/1/sh +process's /man/2/styxservers +process's /man/2/sys-0intro +process's /man/2/sys-werrstr +process's /man/3/cap +process's /man/8/collabsrv +processed /man/1/alphabet-abc +processed /man/1/alphabet-grid +processed /man/1/blur +processed /man/1/charon +processed /man/1/man +processed /man/1/mk +processed /man/1/xd +processed /man/10/getfields +processed /man/10/mk +processed /man/10/plan9.ini +processed /man/10/styxserver +processed /man/2/asn1 +processed /man/2/filter +processed /man/2/filter-slip +processed /man/2/tkclient +processed /man/2/wmclient +processed /man/8/applylog +processed /man/9/canvas +processed /man/9/pack +processes /man/1/bind +processes /man/1/blur +processes /man/1/cd +processes /man/1/grid-monitor +processes /man/1/kill +processes /man/1/man +processes /man/1/math-misc +processes /man/1/ps +processes /man/1/sh +processes /man/1/sh-tk +processes /man/1/stream +processes /man/1/wm-misc +processes /man/10/acid +processes /man/10/kproc +processes /man/10/newchan +processes /man/10/ntsrv +processes /man/10/plan9.ini +processes /man/10/qlock +processes /man/10/sleep +processes /man/10/splhi +processes /man/10/styxserver +processes /man/2/alphabet-intro +processes /man/2/bufio +processes /man/2/draw-display +processes /man/2/draw-screen +processes /man/2/env +processes /man/2/lock +processes /man/2/sh +processes /man/2/spki-verifier +processes /man/2/sys-0intro +processes /man/2/sys-pctl +processes /man/2/sys-pipe +processes /man/2/sys-read +processes /man/2/timers +processes /man/2/tkclient +processes /man/2/wmclient +processes /man/2/wmlib +processes /man/3/0intro +processes /man/3/cons +processes /man/3/dbg +processes /man/3/draw +processes /man/3/env +processes /man/3/mnt +processes /man/3/pipe +processes /man/3/prog +processes /man/4/factotum +processes /man/4/registry +processes /man/5/0intro +processes /man/8/collabsrv +processes /man/8/cs +processes /man/9/pack +processing /man/1/alphabet-abc +processing /man/1/alphabet-grid +processing /man/1/blur +processing /man/1/charon +processing /man/1/cleanname +processing /man/1/dd +processing /man/1/sh +processing /man/1/xd +processing /man/10/styxserver +processing /man/2/alphabet-intro +processing /man/2/cfg +processing /man/2/filter +processing /man/2/filter-deflate +processing /man/2/filter-slip +processing /man/2/fsproto +processing /man/2/imagefile +processing /man/2/keyring-0intro +processing /man/2/sexprs +processing /man/2/styxservers +processing /man/2/sys-file2chan +processing /man/2/w3c-xpointers +processing /man/2/wmclient +processing /man/2/xml +processing /man/3/cons +processing /man/3/sd +processing /man/3/touch +processing /man/3/tv +processing /man/4/cpu +processing /man/6/man +processing /man/6/utf +processor /man/1/0intro +processor /man/1/diff +processor /man/10/2c +processor /man/10/lock +processor /man/10/panic +processor /man/10/plan9.ini +processor /man/10/splhi +processor /man/2/filter +processor /man/3/arch +processor /man/8/ftl +processor's /man/3/fpga +processors /man/10/plan9.ini +processses /man/1/blur +prod /man/10/qio +produce /man/1/acme +produce /man/1/alphabet-abc +produce /man/1/alphabet-grid +produce /man/1/cook +produce /man/1/ls +produce /man/1/mash-make +produce /man/1/mc +produce /man/1/mk +produce /man/1/sh +produce /man/1/stack +produce /man/1/wm-misc +produce /man/10/2c +produce /man/10/2l +produce /man/10/mk +produce /man/2/keyring-0intro +produce /man/2/keyring-certtostr +produce /man/2/keyring-sha1 +produce /man/2/scsiio +produce /man/2/styx +produce /man/2/sys-pipe +produce /man/3/cons +produce /man/6/image +produce /man/8/applylog +produce /man/8/signer +produce /man/9/text +produced /man/1/acme +produced /man/1/alphabet-fs +produced /man/1/avr +produced /man/1/cal +produced /man/1/diff +produced /man/1/du +produced /man/1/fc +produced /man/1/fs +produced /man/1/gettar +produced /man/1/itest +produced /man/10/5coff +produced /man/10/ar +produced /man/10/conf +produced /man/10/devattach +produced /man/10/dynld +produced /man/10/styx +produced /man/2/draw-image +produced /man/2/fsproto +produced /man/2/ida +produced /man/2/keyring-crypt +produced /man/2/keyset +produced /man/2/names +produced /man/2/secstore +produced /man/2/sexprs +produced /man/2/styx +produced /man/3/cap +produced /man/3/cons +produced /man/3/sign +produced /man/4/archfs +produced /man/4/factotum +produced /man/5/read +produced /man/6/keytext +produced /man/8/applylog +produced /man/8/changelogin +produced /man/8/create +produced /man/8/fpgaload +producer /man/3/pipe +producers /man/10/qio +produces /man/1/alphabet-fs +produces /man/1/comm +produces /man/1/cook +produces /man/1/diff +produces /man/1/emu +produces /man/1/fs +produces /man/1/limbo +produces /man/1/mux +produces /man/10/odbc +produces /man/10/print +produces /man/2/draw-image +produces /man/2/keyring-certtostr +produces /man/2/keyring-sha1 +produces /man/2/sets +produces /man/2/sys-print +produces /man/3/ip +produces /man/3/prog +produces /man/3/srv +produces /man/3/switch +produces /man/8/applylog +produces /man/8/cs +producing /man/1/acme +producing /man/10/print +producing /man/2/sys-print +producing /man/2/translate +producing /man/4/logfile +producing /man/8/mkfs +producing /man/9/0intro +product /man/1/dd +product /man/1/mc +product /man/2/math-linalg +product /man/5/open +product /man/8/create +production /man/1/yacc +production /man/10/styxserver +productive /man/1/0intro +productivity /man/1/0intro +prof /man/1/cprof +prof /man/1/mprof +prof /man/1/prof +prof /man/2/prof +prof /man/3/prof +prof.b /man/1/prof +profile /man/1/cprof +profile /man/1/mprof +profile /man/1/prof +profile /man/1/sh +profile /man/10/kprof +profile /man/2/prof +profile /man/3/prof +profile's /man/2/prof +profile.b /man/2/prof +profile.m /man/2/prof +profiled /man/1/cprof +profiled /man/1/mprof +profiled /man/1/prof +profiled /man/10/kprof +profiled /man/2/prof +profiled /man/3/prof +profiler /man/1/mprof +profiler /man/1/prof +profiler /man/2/prof +profiler /man/3/prof +profilers /man/3/prof +profiles /man/1/cprof +profiles /man/1/mprof +profiles /man/1/prof +profiles /man/2/prof +profiles /man/3/prof +profiling /man/1/cprof +profiling /man/1/mprof +profiling /man/1/prof +profiling /man/10/2l +profiling /man/10/kprof +profiling /man/2/prof +profiling /man/3/kprof +profiling /man/3/prof +profusion /man/10/9load +prog /man/1/deb +prog /man/1/kill +prog /man/1/mk +prog /man/1/ns +prog /man/1/ps +prog /man/1/sh +prog /man/1/stack +prog /man/1/tiny +prog /man/10/2c +prog /man/10/mk +prog /man/2/0intro +prog /man/2/arg +prog /man/2/command +prog /man/2/debug +prog /man/2/exception +prog /man/2/secstore +prog /man/2/sh +prog /man/2/sys-0intro +prog /man/2/sys-fd2path +prog /man/2/sys-pctl +prog /man/2/wait +prog /man/3/dup +prog /man/3/prog +prog /man/3/root +prog /man/4/namespace +prog /man/5/0intro +prog.stack /man/2/debug +progargs /man/10/acid +progname /man/2/arg +program's /man/10/acid +program's /man/2/arg +program's /man/2/debug +program's /man/2/prefab-compound +program's /man/6/0intro +programmable /man/1/mash +programmable /man/1/sh +programmable /man/1/tiny +programmable /man/10/acid +programmed /man/10/inb +programmed /man/2/styxservers +programmed /man/3/flash +programmer /man/2/0intro +programmer's /man/1/0intro +programmer's /man/1/mash +programmer's /man/1/secstore +programmer's /man/1/yacc +programmer's /man/10/sleep +programmer's /man/4/factotum +programmers /man/1/0intro +programmers /man/1/acme +programmers /man/2/math-0intro +programming /man/1/0intro +programming /man/1/avr +programming /man/1/limbo +programming /man/1/sh +programming /man/1/yacc +programming /man/10/plan9.ini +programming /man/2/0intro +programming /man/2/sys-0intro +programming /man/2/sys-dup +programming /man/2/sys-self +programming /man/3/flash +programming /man/3/pnp +programming /man/9/0intro +programs /man/1/0intro +programs /man/1/9win +programs /man/1/acme +programs /man/1/calendar +programs /man/1/collab-clients +programs /man/1/cprof +programs /man/1/disdep +programs /man/1/itest +programs /man/1/mk +programs /man/1/mprof +programs /man/1/prof +programs /man/1/sh-file2chan +programs /man/1/tktester +programs /man/1/toolbar +programs /man/1/wish +programs /man/1/wm +programs /man/10/0intro +programs /man/10/2a +programs /man/10/2c +programs /man/10/9load +programs /man/10/plan9.ini +programs /man/10/rune +programs /man/2/0intro +programs /man/2/arg +programs /man/2/command +programs /man/2/draw-context +programs /man/2/draw-image +programs /man/2/format +programs /man/2/ir +programs /man/2/keyring-0intro +programs /man/2/keyring-auth +programs /man/2/sh +programs /man/2/styx +programs /man/2/sys-0intro +programs /man/3/cons +programs /man/3/lpt +programs /man/3/prog +programs /man/3/sd +programs /man/4/0intro +programs /man/4/factotum +programs /man/4/iostats +programs /man/4/namespace +programs /man/4/registry +programs /man/5/0intro +programs /man/5/open +programs /man/6/dis +programs /man/6/man +programs /man/6/proto +programs /man/6/sexprs +programs /man/6/utf +programs /man/7/db +programs /man/8/0intro +programs /man/8/createsignerkey +programs /man/8/httpd +programs /man/8/prep +programs /man/9/0intro +programs /man/9/text +progress /man/1/charon +progress /man/1/webgrab +progress /man/2/tftp +progresses /man/1/charon +projecting /man/9/canvas +projection /man/2/geodesy +projection.if /man/2/geodesy +projections /man/2/geodesy +prologue /man/10/c2l +promiscuous /man/3/ether +promoted /man/10/print +promoted /man/2/draw-image +promotes /man/10/2c +prompt /man/1/acme +prompt /man/1/logon +prompt /man/1/mash +prompt /man/1/miniterm +prompt /man/1/secstore +prompt /man/1/sh +prompt /man/1/sh-std +prompt /man/1/stack +prompt /man/1/tiny +prompt /man/1/tkcmd +prompt /man/1/wm-misc +prompt /man/10/9load +prompt /man/10/acid +prompt /man/10/plan9.ini +prompt /man/2/dialog +prompt /man/2/draw-example +prompt /man/4/ftpfs +prompt /man/8/mangaload +prompt /man/8/prep +prompt /man/8/signer +prompted /man/1/sh +prompted /man/10/plan9.ini +prompted /man/8/changelogin +prompted /man/8/getauthinfo +prompted /man/8/signer +prompting /man/1/miniterm +prompting /man/1/tiny +prompting /man/4/factotum +prompting /man/4/ftpfs +prompting /man/8/getauthinfo +prompts /man/1/crypt +prompts /man/1/dmview +prompts /man/1/mathcalc +prompts /man/1/netkey +prompts /man/1/passwd +prompts /man/1/secstore +prompts /man/1/wish +prompts /man/4/factotum +prompts /man/4/keyfs +prompts /man/4/registry +prompts /man/8/cs +prompts /man/8/dns +prompts /man/8/svc +prompts /man/8/touchcal +promulgated /man/1/tail +prone /man/1/wm-misc +prone /man/10/9load +proof /man/2/spki +proof /man/2/spki-verifier +proof /man/4/factotum +propagate /man/2/exception +propagate /man/2/spki +propagate /man/3/prog +propagate /man/9/grid +propagate /man/9/pack +propagated /man/1/mk +propagated /man/1/sh +propagated /man/10/mk +propagated /man/3/ip +propagation /man/9/grid +propagation /man/9/pack +proper /man/10/allocb +proper /man/10/ref +proper /man/2/0intro +proper /man/2/draw-image +proper /man/2/itslib +proper /man/9/bind +proper /man/9/pack +properly /man/1/0intro +properly /man/1/ebook +properly /man/10/plan9.ini +properly /man/10/styx +properly /man/2/draw-0intro +properly /man/2/math-0intro +properly /man/2/prefab-0intro +properly /man/6/colour +properly /man/6/utf +properties /man/1/0intro +properties /man/1/sh-file2chan +properties /man/1/tktester +properties /man/10/styxserver +properties /man/10/xalloc +properties /man/2/asn1 +properties /man/2/math-fp +properties /man/2/sys-0intro +properties /man/2/sys-pctl +properties /man/3/dup +properties /man/3/flash +properties /man/3/ftl +properties /man/3/mpeg +properties /man/3/prog +properties /man/3/vga +properties /man/5/0intro +properties /man/5/stat +properties /man/9/grid +properties /man/9/menu +property /man/1/charon +property /man/2/draw-0intro +property /man/2/security-0intro +property /man/2/sys-millisec +property /man/2/sys-pctl +property /man/2/w3c-css +property /man/6/colour +proportion /man/2/dividers +proportional /man/1/acme +proportional /man/2/dict +proportionally /man/1/ebook +proportionally /man/2/print +propose /man/2/spree-gather +proposed /man/1/idea +proposed /man/1/tktester +proposed /man/10/acid +proposed /man/10/ntsrv +proposed /man/2/spree-gather +proposed /man/4/registry +proposed /man/5/walk +proposed /man/6/utf +proposes /man/2/spree-gather +prospective /man/2/wmsrv +protect /man/10/lock +protect /man/2/0intro +protect /man/6/plumbing +protect /man/7/dbsrv +protect /man/8/rstyxd +protectboot /man/3/flash +protected /man/1/crypt +protected /man/2/draw-0intro +protected /man/2/draw-screen +protected /man/3/flash +protected /man/6/users +protecting /man/10/sleep +protecting /man/2/sys-export +protection /man/1/0intro +protection /man/3/flash +protects /man/2/security-0intro +protects /man/8/svc +proto /man/1/alphabet-fs +proto /man/1/fs +proto /man/2/factotum +proto /man/2/fsproto +proto /man/3/ip +proto /man/4/factotum +proto /man/6/proto +proto /man/8/applylog +proto /man/8/create +proto /man/8/cs +proto /man/8/mkfs +proto.b /man/8/create +protocol /man/1/0intro +protocol /man/1/acme +protocol /man/1/bind +protocol /man/1/charon +protocol /man/1/netstat +protocol /man/1/sendmail +protocol /man/1/telnet +protocol /man/10/allocb +protocol /man/10/conf +protocol /man/10/dev +protocol /man/10/qio +protocol /man/10/styx +protocol /man/10/styxserver +protocol /man/10ti925/tihost +protocol /man/2/dhcpclient +protocol /man/2/factotum +protocol /man/2/filter-slip +protocol /man/2/ip +protocol /man/2/keyring-0intro +protocol /man/2/keyring-auth +protocol /man/2/pop3 +protocol /man/2/registries +protocol /man/2/secstore +protocol /man/2/security-0intro +protocol /man/2/security-auth +protocol /man/2/security-login +protocol /man/2/smtp +protocol /man/2/srv +protocol /man/2/styx +protocol /man/2/styxconv +protocol /man/2/styxservers +protocol /man/2/sys-fauth +protocol /man/2/sys-fversion +protocol /man/2/sys-iounit +protocol /man/2/sys-pipe +protocol /man/2/tftp +protocol /man/3/0intro +protocol /man/3/dbg +protocol /man/3/draw +protocol /man/3/ip +protocol /man/3/logfs +protocol /man/3/mnt +protocol /man/3/pbus +protocol /man/3/plap +protocol /man/3/srv9 +protocol /man/3/ssl +protocol /man/3/tls +protocol /man/4/export +protocol /man/4/factotum +protocol /man/4/ftpfs +protocol /man/4/import +protocol /man/4/iostats +protocol /man/4/keyfs +protocol /man/4/kfs +protocol /man/4/palmsrv +protocol /man/5/0intro +protocol /man/5/attach +protocol /man/5/version +protocol /man/5/walk +protocol /man/6/auth +protocol /man/6/keytext +protocol /man/6/login +protocol /man/6/ndb +protocol /man/8/bootpd +protocol /man/8/cs +protocol /man/8/dhcp +protocol /man/8/httpd +protocol /man/8/logind +protocol /man/8/mangaload +protocol /man/8/rip +protocol /man/8/sntp +protocol /man/8/styxchat +protocol's /man/5/attach +protocols /man/1/charon +protocols /man/10/allocb +protocols /man/10/conf +protocols /man/2/keyring-getmsg +protocols /man/2/security-0intro +protocols /man/2/sys-open +protocols /man/3/ip +protocols /man/3/plap +protocols /man/3/tls +protocols /man/4/factotum +protocols /man/5/version +protocols /man/6/ndb +protofile /man/1/alphabet-fs +protofile /man/1/fs +prototype /man/1/yacc +prototype /man/10/2c +prototype /man/2/fsproto +prototype /man/6/proto +prototype /man/8/applylog +prototype /man/8/create +prototype /man/8/mkfs +prototypical /man/5/0intro +protrude /man/9/options +prove /man/2/security-0intro +prove /man/4/factotum +proven /man/5/0intro +proves /man/2/keyring-0intro +provide /man/1/0intro +provide /man/1/charon +provide /man/1/collab-clients +provide /man/1/grid-query +provide /man/1/logon +provide /man/1/mash +provide /man/1/mash-make +provide /man/1/sh-alphabet +provide /man/1/wm +provide /man/1/wm-misc +provide /man/1/wm-sh +provide /man/1/yacc +provide /man/10/0intro +provide /man/10/allocb +provide /man/10/ar +provide /man/10/dev +provide /man/10/devattach +provide /man/10/plan9.ini +provide /man/10/qio +provide /man/10/sleep +provide /man/10/splhi +provide /man/2/0intro +provide /man/2/alphabet-intro +provide /man/2/dhcpclient +provide /man/2/draw-0intro +provide /man/2/draw-context +provide /man/2/format +provide /man/2/hash +provide /man/2/ida +provide /man/2/keyring-0intro +provide /man/2/keyring-certtostr +provide /man/2/keyring-getstring +provide /man/2/math-0intro +provide /man/2/math-fp +provide /man/2/math-linalg +provide /man/2/prefab-environ +provide /man/2/registries +provide /man/2/secstore +provide /man/2/security-0intro +provide /man/2/sexprs +provide /man/2/spki +provide /man/2/styxservers +provide /man/2/timers +provide /man/2/wmlib +provide /man/3/audio +provide /man/3/dbg +provide /man/3/ip +provide /man/3/kprof +provide /man/3/logfs +provide /man/3/pbus +provide /man/3/touch +provide /man/3/usb +provide /man/4/0intro +provide /man/5/0intro +provide /man/6/sexprs +provide /man/8/0intro +provide /man/8/logind +provide /man/8/styxchat +provide /man/8/svc +provide /man/9/1copyright +provide /man/9/canvas +provide /man/9/text +provided /man/1/9win +provided /man/1/alphabet-abc +provided /man/1/alphabet-fs +provided /man/1/alphabet-grid +provided /man/1/alphabet-main +provided /man/1/deb +provided /man/1/du +provided /man/1/emu +provided /man/1/fc +provided /man/1/fs +provided /man/1/grid-ns +provided /man/1/listen +provided /man/1/mash-tk +provided /man/1/mux +provided /man/1/sh-csv +provided /man/1/sh-file2chan +provided /man/1/sh-sexprs +provided /man/1/sh-string +provided /man/1/stream +provided /man/1/tiny +provided /man/1/wm +provided /man/1/yacc +provided /man/10/0intro +provided /man/10/c2l +provided /man/10/conf +provided /man/10/dev +provided /man/10/devattach +provided /man/10/dynld +provided /man/10/plan9.ini +provided /man/10/sleep +provided /man/10/styxserver +provided /man/2/0intro +provided /man/2/command +provided /man/2/debug +provided /man/2/dhcpclient +provided /man/2/draw-context +provided /man/2/encoding +provided /man/2/filter-deflate +provided /man/2/format +provided /man/2/geodesy +provided /man/2/ida +provided /man/2/ip +provided /man/2/keyring-0intro +provided /man/2/keyring-crypt +provided /man/2/keyring-getstring +provided /man/2/keyring-sha1 +provided /man/2/palmfile +provided /man/2/prefab-element +provided /man/2/prof +provided /man/2/security-0intro +provided /man/2/security-login +provided /man/2/spree-allow +provided /man/2/styx +provided /man/2/styxservers +provided /man/2/sys-0intro +provided /man/2/sys-stat +provided /man/2/tkclient +provided /man/2/wmclient +provided /man/3/0intro +provided /man/3/cap +provided /man/3/cmd +provided /man/3/dbg +provided /man/3/dynld +provided /man/3/ftl +provided /man/3/ip +provided /man/3/mnt +provided /man/3/pnp +provided /man/3/tinyfs +provided /man/3/usb +provided /man/3/vga +provided /man/4/archfs +provided /man/4/cpu +provided /man/4/dbfs +provided /man/4/import +provided /man/4/kfs +provided /man/4/lockfs +provided /man/4/namespace +provided /man/4/ramfile +provided /man/6/keys +provided /man/6/plumbing +provided /man/8/applylog +provided /man/8/dhcp +provided /man/8/ftl +provided /man/8/httpd +provided /man/8/rdbgsrv +provided /man/8/styxchat +provided /man/8/touchcal +provided /man/9/1copyright +provided /man/9/bind +provided /man/9/choicebutton +provided /man/9/grid +provided /man/9/options +provider /man/1/mux +provider /man/2/registries +provider's /man/2/keyring-0intro +provider's /man/2/security-0intro +provides /man/1/0intro +provides /man/1/acme +provides /man/1/charon +provides /man/1/collab-clients +provides /man/1/deb +provides /man/1/ebook +provides /man/1/emu +provides /man/1/grid-ns +provides /man/1/keyboard +provides /man/1/mash +provides /man/1/mash-tk +provides /man/1/mathcalc +provides /man/1/miniterm +provides /man/1/sh-alphabet +provides /man/1/sh-csv +provides /man/1/sh-expr +provides /man/1/sh-file2chan +provides /man/1/sh-regex +provides /man/1/sh-sexprs +provides /man/1/sh-std +provides /man/1/sh-string +provides /man/1/sh-test +provides /man/1/sh-tk +provides /man/1/tiny +provides /man/1/toolbar +provides /man/1/wish +provides /man/1/wm +provides /man/1/wm-misc +provides /man/10/0intro +provides /man/10/allocb +provides /man/10/conf +provides /man/10/delay +provides /man/10/devattach +provides /man/10/dynld +provides /man/10/inb +provides /man/10/qio +provides /man/10/styxserver +provides /man/2/0intro +provides /man/2/alphabet-intro +provides /man/2/asn1 +provides /man/2/bufio +provides /man/2/command +provides /man/2/convcs +provides /man/2/crc +provides /man/2/debug +provides /man/2/devpointer +provides /man/2/dhcpclient +provides /man/2/dialog +provides /man/2/dict +provides /man/2/disks +provides /man/2/draw-0intro +provides /man/2/draw-context +provides /man/2/draw-image +provides /man/2/draw-screen +provides /man/2/env +provides /man/2/ether +provides /man/2/exception +provides /man/2/filter-slip +provides /man/2/format +provides /man/2/fsproto +provides /man/2/geodesy +provides /man/2/hash +provides /man/2/ida +provides /man/2/ip +provides /man/2/ir +provides /man/2/itslib +provides /man/2/keyring-crypt +provides /man/2/keyring-ipint +provides /man/2/lock +provides /man/2/math-linalg +provides /man/2/mpeg +provides /man/2/names +provides /man/2/palmfile +provides /man/2/plumbmsg +provides /man/2/pop3 +provides /man/2/prefab-0intro +provides /man/2/prefab-element +provides /man/2/print +provides /man/2/prof +provides /man/2/readdir +provides /man/2/registries +provides /man/2/scsiio +provides /man/2/security-0intro +provides /man/2/security-ssl +provides /man/2/selectfile +provides /man/2/sets +provides /man/2/sexprs +provides /man/2/smtp +provides /man/2/spki +provides /man/2/spki-verifier +provides /man/2/spree +provides /man/2/spree-cardlib +provides /man/2/spree-gather +provides /man/2/spree-objstore +provides /man/2/srv +provides /man/2/stringinttab +provides /man/2/styx +provides /man/2/styxservers +provides /man/2/styxservers-nametree +provides /man/2/sys-0intro +provides /man/2/sys-dirread +provides /man/2/sys-fauth +provides /man/2/timers +provides /man/2/tk +provides /man/2/tkclient +provides /man/2/translate +provides /man/2/ubfa +provides /man/2/venti +provides /man/2/virgil +provides /man/2/volume +provides /man/2/wait +provides /man/2/wmclient +provides /man/2/wmlib +provides /man/2/wmsrv +provides /man/2/xml +provides /man/3/cmd +provides /man/3/cons +provides /man/3/draw +provides /man/3/ds +provides /man/3/flash +provides /man/3/fpga +provides /man/3/fs +provides /man/3/ftl +provides /man/3/i82365 +provides /man/3/ip +provides /man/3/kprof +provides /man/3/lpt +provides /man/3/pipe +provides /man/3/pnp +provides /man/3/prof +provides /man/3/prog +provides /man/3/root +provides /man/3/rtc +provides /man/3/ssl +provides /man/3/tinyfs +provides /man/3/touch +provides /man/3/usb +provides /man/4/cpu +provides /man/4/factotum +provides /man/4/import +provides /man/4/lockfs +provides /man/4/registry +provides /man/5/0intro +provides /man/6/ndb +provides /man/6/proto +provides /man/6/sbl +provides /man/6/scancode +provides /man/6/sexprs +provides /man/6/translate +provides /man/6/ubfa +provides /man/6/utf +provides /man/8/collabsrv +provides /man/8/plumber +provides /man/8/rstyxd +provides /man/9/0intro +provides /man/9/canvas +provides /man/9/menu +provides /man/9/scrollbar +providing /man/1/man +providing /man/1/sh-alphabet +providing /man/1/wm +providing /man/1/yacc +providing /man/2/diskblocks +providing /man/2/filter-slip +providing /man/2/format +providing /man/2/prefab-element +providing /man/2/sys-0intro +providing /man/3/dbg +providing /man/3/draw +providing /man/3/tls +providing /man/4/factotum +providing /man/4/mntgen +providing /man/5/0intro +providing /man/5/stat +providing /man/8/0intro +providing /man/8/svc +provision /man/1/mash-tk +provision /man/10/ar +proxies /man/2/alphabet-intro +proxy /man/1/charon +proxy /man/1/webgrab +proxy /man/2/alphabet-intro +proxy /man/2/dhcpclient +proxy /man/2/factotum +proxy /man/2/styxpersist +proxy /man/6/ndb +prudent /man/2/command +ps /man/1/kill +ps /man/1/ps +ps /man/1/stack +ps /man/1/time +ps /man/2/print +ps.b /man/1/ps +ps2 /man/10/plan9.ini +ps2intellimouse /man/10/plan9.ini +pseudo /man/2/keyring-rc4 +pseudo /man/2/popup +pseudo /man/2/rand +pseudo /man/2/tabs +pseudo /man/2/w3c-css +pseudo /man/3/cons +pseudofn /man/2/w3c-css +pseudovariables /man/8/prep +pslib /man/2/pslib +pslib.b /man/2/pslib +pslib.m /man/2/pslib +psr /man/3/lpt +ptr /man/1/wm +ptr /man/2/attrdb +ptr /man/2/devpointer +ptr /man/2/draw-context +ptr /man/2/tkclient +ptr /man/2/wmclient +ptr /man/2/wmlib +ptr /man/2/wmsrv +ptr /man/8/dns +ptr2bytes /man/2/devpointer +ptype /man/2/disks +ptype /man/2/print +ptype.cfg /man/2/print +publication /man/1/ebook +publication /man/2/draw-image +publicid /man/2/xml +publicly /man/10/0intro +publicly /man/2/keyring-0intro +publicly /man/2/security-0intro +publicscreen /man/2/draw-display +publicscreen /man/3/draw +publicscreen:fn /man/2/draw-display +publish /man/2/draw-image +published /man/1/charon +published /man/2/draw-display +published /man/2/draw-image +published /man/2/security-0intro +pull /man/2/spki-verifier +pullblock /man/10/allocb +pulldown /man/1/mash-tk +pulls /man/2/draw-image +pullupblock /man/10/allocb +pulse /man/1/miniterm +punctuate /man/10/qio +punctuation /man/2/sexprs +punctuation /man/2/w3c-css +punctuation /man/6/man +purely /man/1/acme +purely /man/1/uuencode +purely /man/2/sexprs +purge /man/5/flush +purple /man/9/types +purpleblue /man/2/draw-display +purpose /man/1/charon +purpose /man/1/sh +purpose /man/1/tiny +purpose /man/10/iar +purpose /man/9/1copyright +purpose /man/9/frame +purpose /man/9/text +purposes /man/1/crypt +purposes /man/1/mux +purposes /man/1/tktester +purposes /man/10/plan9.ini +purposes /man/2/draw-image +purposes /man/2/itslib +purposes /man/2/math-linalg +purposes /man/2/prefab-element +purposes /man/2/wmsrv +purposes /man/3/cons +purposes /man/3/draw +purposes /man/3/logfs +purposes /man/3/pipe +purposes /man/3/sd +purposes /man/6/colour +purposes /man/9/canvas +purposes /man/9/text +purview /man/4/iostats +push /man/1/alphabet-main +push /man/1/fc +push /man/2/dialog +push /man/2/sh +push /man/6/ubfa +pushbutton /man/1/mash-tk +pushbuttons /man/1/mash-tk +pushed /man/1/fc +pushed /man/1/sh-expr +pushed /man/2/dialog +pushed /man/2/sh +pushed /man/6/ubfa +pushes /man/1/sh-expr +pushes /man/2/security-ssl +pushing /man/10/error +put2 /man/2/palmfile +put3 /man/2/palmfile +put4 /man/2/palmfile +putall /man/1/acme +putb /man/2/bufio +putbytearray /man/2/keyring-getstring +putc /man/2/bufio +puterror /man/2/keyring-getstring +putimage /man/2/tk +putimage /man/9/panel +putint /man/2/dhcpclient +putips /man/2/dhcpclient +putrdata /man/1/sh-file2chan +puts /man/1/mash-tk +puts /man/1/sh +puts /man/10/c2l +puts /man/10/devattach +puts /man/10/kbdputc +puts /man/10/plan9.ini +puts /man/10/qio +puts /man/2/bufio +puts /man/2/debug +puts /man/2/dhcpclient +puts /man/2/drawmux +puts /man/2/palmfile +puts /man/3/pbus +puts /man/4/factotum +puts /man/4/ramfile +putstring /man/2/keyring-getstring +puttar /man/1/gettar +puttar.b /man/1/gettar +putting /man/1/sh-regex +putting /man/10/c2l +putting /man/3/cons +putting /man/8/create +putting /man/8/svc +puzzle /man/1/math-misc +pwd /man/1/acme +pwd /man/1/basename +pwd /man/1/cd +pwd /man/1/cleanname +pwd /man/1/plumb +pwd /man/1/pwd +pwd /man/1/wm-sh +pwd.b /man/1/pwd +pwfile /man/8/changelogin +pwrite /man/1/cp +pwrite /man/2/sys-read +pxe /man/10/9load +q.v /man/1/acme +q.v /man/2/tk +q.v /man/3/draw +q.v /man/4/acme +q.v /man/8/prep +qa /man/10/2a +qbread /man/10/qio +qbwrite /man/10/qio +qc /man/10/2c +qcanread /man/10/qio +qclose /man/10/qio +qconsume /man/10/qio +qcopy /man/10/qio +qctl /man/2/styxservers-nametree +qdata /man/2/styxservers-nametree +qdiscard /man/10/qio +qflush /man/10/qio +qfree /man/10/qio +qfull /man/10/qio +qget /man/10/qio +qhangup /man/10/qio +qid /man/1/ls +qid /man/10/devattach +qid /man/10/newchan +qid /man/10/styx +qid /man/10/styxserver +qid /man/2/styx +qid /man/2/styxservers +qid /man/2/styxservers-nametree +qid /man/2/sys-stat +qid /man/3/prog +qid /man/5/0intro +qid /man/5/attach +qid /man/5/open +qid /man/5/walk +qid /man/8/collabsrv +qid /man/8/styxchat +qid.path /man/10/dev +qid.path /man/10/devattach +qid.path /man/10/newchan +qid.path /man/10/styxserver +qid.path /man/2/styxservers-nametree +qid.path /man/5/stat +qid.qtype /man/2/styxservers +qid.type /man/10/devattach +qid.type /man/5/stat +qid.vers /man/5/stat +qid2text /man/2/styx +qidgen /man/10/styxserver +qids /man/10/devattach +qids /man/2/styx +qids /man/2/styxservers-nametree +qids /man/5/0intro +qids /man/5/walk +qio /man/10/allocb +qio /man/10/dev +qio /man/10/devattach +qio /man/10/intrenable +qio /man/10/kbdputc +qio /man/10/lock +qio /man/10/qio +qio /man/10/sleep +qio /man/10/splhi +qio /man/3/pipe +qio.c /man/10/allocb +qio.c /man/10/qio +qiwrite /man/10/qio +ql /man/10/2l +qlen /man/10/qio +qlock /man/10/error +qlock /man/10/lock +qlock /man/10/qlock +qlock /man/10/sleep +qlock.c /man/10/qlock +qname /man/1/sh-alphabet +qname /man/2/w3c-xpointers +qnoblock /man/10/kbdputc +qnoblock /man/10/qio +qopen /man/10/kbdputc +qopen /man/10/qio +qpass /man/10/qio +qpassnolim /man/10/qio +qproduce /man/10/qio +qread /man/10/qio +qreopen /man/10/qio +qroot /man/10/styxserver +qroot /man/2/styxservers-nametree +qsetlimit /man/10/qio +qtappend /man/2/sys-stat +qtappend /man/5/0intro +qtappend /man/8/styxchat +qtauth /man/2/styxservers +qtauth /man/2/sys-stat +qtauth /man/5/0intro +qtauth /man/5/attach +qtauth /man/8/styxchat +qtdir /man/10/devattach +qtdir /man/2/styxservers +qtdir /man/2/styxservers-nametree +qtdir /man/2/sys-stat +qtdir /man/5/0intro +qtdir /man/8/styxchat +qtexcl /man/2/sys-stat +qtexcl /man/5/0intro +qtexcl /man/8/styxchat +qtfile /man/2/styxservers-nametree +qtfile /man/2/sys-stat +qtfile /man/5/0intro +qtmount /man/10/devattach +qtype /man/2/styxservers +qtype /man/2/sys-stat +quadratic /man/10/iar +quadratic /man/2/draw-image +qualified /man/1/acme +qualified /man/1/sh-alphabet +qualified /man/10/acid +qualified /man/2/translate +qualified /man/3/dynld +qualified /man/4/acme +qualified /man/6/dis +qualified /man/6/sbl +qualified /man/8/bootpd +qualifier /man/2/0intro +qualifier /man/2/w3c-css +qualifiers /man/2/w3c-css +qualifiers /man/3/audio +qualifies /man/6/translate +qualify /man/10/intrenable +qualify /man/2/0intro +qualify /man/6/ndb +qualifying /man/1/sh +quality /man/2/rand +quantisation /man/1/du +quantised /man/1/du +quantities /man/1/units +quantities /man/10/styx +quantities /man/3/cons +quantity /man/1/units +quantity /man/6/login +quantum /man/10/a.out +quarter /man/2/draw-example +queen /man/6/keyboard +queried /man/1/alphabet-fs +queried /man/1/fs +queried /man/1/sh-alphabet +queried /man/3/prog +queried /man/9/menu +queried /man/9/variable +queries /man/2/bloomfilter +queries /man/2/styxservers +queries /man/4/registry +queries /man/8/cs +queries /man/8/dns +queries /man/8/httpd +queries /man/9/variable +query /man/1/alphabet-fs +query /man/1/fs +query /man/1/grid-query +query /man/1/session +query /man/2/filepat +query /man/2/sh +query /man/3/prog +query /man/4/factotum +query /man/8/cs +query /man/8/dns +query /man/9/button +query /man/9/canvas +query /man/9/checkbutton +query /man/9/choicebutton +query /man/9/entry +query /man/9/focus +query /man/9/frame +query /man/9/image +query /man/9/label +query /man/9/listbox +query /man/9/menu +query /man/9/menubutton +query /man/9/panel +query /man/9/radiobutton +query /man/9/scale +query /man/9/scrollbar +query /man/9/text +query.b /man/1/grid-query +query.b /man/1/session +querying /man/2/styxservers +questionable /man/2/rand +questions /man/1/collab-clients +queue /man/10/allocb +queue /man/10/kbdputc +queue /man/10/qio +queue /man/10/qlock +queue /man/2/timers +queue /man/3/eia +queue /man/3/ip +queue /man/3/pbus +queue's /man/10/qio +queued /man/10/qio +queued /man/10/qlock +queued /man/3/ether +queued /man/3/pipe +queued /man/9/send +queueing /man/10/qlock +queueing /man/3/dbg +queues /man/10/kbdputc +queues /man/10/qio +queues /man/3/eia +queues /man/3/pipe +queuing /man/2/wmlib +quick /man/10/iar +quick /man/4/namespace +quickly /man/1/charon +quickly /man/8/mangaload +quiet /man/2/math-fp +quiet /man/3/audio +quiet /man/8/bootpd +quiet /man/8/kfscmd +quietly /man/1/bind +quietly /man/1/read +quietly /man/3/pbus +quit /man/1/mathcalc +quit /man/1/p +quit /man/1/wm-misc +quit /man/2/styxservers-nametree +quit /man/8/prep +quits /man/10/print +quiz /man/1/collab-clients +qunlock /man/10/error +qunlock /man/10/qlock +quota /man/10/allocb +quotation /man/1/mash +quotation /man/1/sh +quote /man/1/mash +quote /man/1/sh +quote /man/1/sh-csv +quote /man/1/sh-file2chan +quote /man/1/sh-regex +quote /man/1/tiny +quote /man/1/wm-sh +quote /man/2/attrdb +quote /man/2/string +quote /man/2/tk +quote /man/4/registry +quote /man/6/attrdb +quote /man/6/man +quote /man/6/plumbing +quote /man/6/sexprs +quote /man/9/0intro +quoted /man/1/bind +quoted /man/1/brutus +quoted /man/1/filename +quoted /man/1/fs +quoted /man/1/mash +quoted /man/1/mash-tk +quoted /man/1/mk +quoted /man/1/sh +quoted /man/1/sh-alphabet +quoted /man/1/sh-arg +quoted /man/1/sh-csv +quoted /man/1/sh-expr +quoted /man/1/sh-std +quoted /man/1/tiny +quoted /man/1/tr +quoted /man/1/wm-sh +quoted /man/10/getfields +quoted /man/10/mk +quoted /man/10/parsecmd +quoted /man/2/cfg +quoted /man/2/draw-context +quoted /man/2/string +quoted /man/2/sys-print +quoted /man/2/tk +quoted /man/2/tkclient +quoted /man/2/wmclient +quoted /man/2/wmsrv +quoted /man/3/cmd +quoted /man/4/factotum +quoted /man/4/registry +quoted /man/6/attrdb +quoted /man/6/sexprs +quoted /man/6/translate +quoted /man/8/kfscmd +quoted /man/9/bind +quotes /man/1/acme +quotes /man/1/idea +quotes /man/1/mash +quotes /man/1/mash-make +quotes /man/1/mk +quotes /man/1/sh +quotes /man/1/sh-csv +quotes /man/1/tiny +quotes /man/10/2c +quotes /man/10/c2l +quotes /man/10/getfields +quotes /man/10/mk +quotes /man/2/cfg +quotes /man/2/string +quotes /man/2/sys-print +quotes /man/4/registry +quotes /man/6/attrdb +quotes /man/6/man +quotes /man/6/plumbing +quotes /man/6/sexprs +quoting /man/1/fs +quoting /man/1/sh-alphabet +quoting /man/1/sh-expr +quoting /man/1/tiny +quoting /man/1/wm-sh +quoting /man/2/cfg +quoting /man/2/sexprs +quoting /man/3/cmd +quoting /man/6/sexprs +quoting /man/8/rstyxd +quoting /man/8/styxchat +quoting /man/9/bind +quoting /man/9/send +qwindow /man/10/qio +qwrite /man/10/qio +r.max.x /man/6/image +r.max.y /man/6/image +r.min /man/2/prefab-element +r.min /man/3/draw +r.min.x /man/6/image +r.min.y /man/6/image +r31,0x0 /man/10/acid +r5g6b5 /man/2/draw-display +r8g8b8 /man/6/image +rab /man/4/dossrv +rab /man/4/memfs +rabin /man/2/ida +rabin's /man/2/ida +race /man/5/open +rad /man/1/fc +radians /man/1/fc +radians /man/1/mc +radians /man/2/geodesy +radians /man/2/math-elem +radio /man/1/collab-clients +radio /man/9/menu +radiobutton /man/9/0intro +radiobutton /man/9/button +radiobutton /man/9/checkbutton +radiobutton /man/9/choicebutton +radiobutton /man/9/menu +radiobutton /man/9/radiobutton +radiobutton /man/9/send +radiobutton /man/9/variable +radiobutton's /man/9/radiobutton +radiobuttons /man/9/radiobutton +radius /man/1/blur +radix /man/1/fc +radix /man/1/sh-expr +raid /man/3/ds +raise /man/1/0intro +raise /man/1/mash +raise /man/1/sh +raise /man/1/sh-std +raise /man/1/sh-tk +raise /man/1/wm +raise /man/10/allocb +raise /man/10/dev +raise /man/10/devattach +raise /man/10/qio +raise /man/2/alphabet-intro +raise /man/2/draw-image +raise /man/2/sys-0intro +raise /man/2/tk +raise /man/2/wmsrv +raise /man/3/prog +raise /man/9/0intro +raise /man/9/canvas +raise /man/9/lower +raise /man/9/raise +raise /man/9/text +raised /man/1/charon +raised /man/1/sh +raised /man/1/sh-alphabet +raised /man/1/sh-arg +raised /man/1/sh-expr +raised /man/1/sh-std +raised /man/1/sh-tk +raised /man/10/qio +raised /man/2/0intro +raised /man/2/arg +raised /man/2/exception +raised /man/2/math-elem +raised /man/2/sh +raised /man/2/tk +raised /man/6/dis +raised /man/9/button +raised /man/9/checkbutton +raised /man/9/frame +raised /man/9/options +raised /man/9/radiobutton +raised /man/9/scrollbar +raised /man/9/types +raises /man/1/sh-alphabet +raises /man/1/sh-expr +raises /man/1/sh-std +raises /man/10/allocb +raises /man/10/devattach +raises /man/10/qio +raises /man/2/alphabet-intro +raises /man/2/command +raises /man/2/math-elem +raises /man/2/sh +raises /man/9/raise +raising /man/1/sh-std +raising /man/1/wm-misc +raising /man/2/alphabet-intro +ram /man/3/i82365 +ram /man/3/vid +ram /man/4/namespace +ram /man/8/prep +ramfile /man/4/dbfs +ramfile /man/4/memfs +ramfile /man/4/ramfile +ramfile.b /man/4/ramfile +rand /man/1/mc +rand /man/2/rand +rand /man/2/security-random +rand /man/2/spree +rand.b /man/2/rand +rand.m /man/2/rand +random /man/1/fortune +random /man/2/dbm +random /man/2/diskblocks +random /man/2/keyring-0intro +random /man/2/keyring-crypt +random /man/2/keyring-ipint +random /man/2/keyring-rc4 +random /man/2/rand +random /man/2/security-0intro +random /man/2/security-random +random /man/3/cap +random /man/3/cons +random /man/3/tinyfs +random /man/4/acme +random /man/6/auth +random /man/6/login +random /man/8/register +random /man/8/signer +random.b /man/2/security-random +randombuf /man/2/security-random +randomint /man/2/security-random +randomly /man/1/mux +randomly /man/1/zeros +randomly /man/3/ip +range /man/1/0intro +range /man/1/acme +range /man/1/emu +range /man/1/sh-string +range /man/1/tr +range /man/1/unicode +range /man/10/0intro +range /man/10/plan9.ini +range /man/10/xalloc +range /man/2/bloomfilter +range /man/2/daytime +range /man/2/debug +range /man/2/dis +range /man/2/draw-display +range /man/2/geodesy +range /man/2/palmfile +range /man/2/prof +range /man/2/spki +range /man/2/spree +range /man/2/spree-cardlib +range /man/2/string +range /man/2/sys-0intro +range /man/2/sys-dup +range /man/3/arch +range /man/3/cmd +range /man/3/ftl +range /man/3/i2c +range /man/3/ip +range /man/3/pnp +range /man/3/rtc +range /man/4/spree +range /man/6/colour +range /man/6/dis +range /man/6/font +range /man/6/regexp +range /man/6/sbl +range /man/7/db +range /man/9/canvas +range /man/9/choicebutton +range /man/9/entry +range /man/9/listbox +range /man/9/scale +range /man/9/scrollbar +range /man/9/text +ranges /man/10/plan9.ini +ranges /man/2/math-elem +ranges /man/2/prof +ranges /man/2/spree-cardlib +ranges /man/3/arch +ranges /man/3/flash +ranges /man/6/colour +ranges /man/9/listbox +ranges /man/9/text +ranging /man/1/sh-expr +ranging /man/2/draw-display +ranging /man/2/ip +ranging /man/3/tinyfs +rank /man/2/spree-cardlib +rankine /man/1/units +ranking /man/2/spree-cardlib +rapidly /man/3/logfs +rarchive /man/2/palmfile +rare /man/1/diff +rare /man/2/sys-fauth +rare /man/2/sys-fversion +rarely /man/1/charon +rarely /man/10/2l +rarely /man/10/plan9.ini +rarely /man/2/asn1 +rarely /man/6/man +raspberry /man/2/regex +rate /man/1/acme +rate /man/1/auplay +rate /man/1/prof +rate /man/10/9load +rate /man/2/bloomfilter +rate /man/3/arch +rate /man/3/audio +rate /man/3/dbg +rate /man/3/eia +rate /man/3/mpeg +rate /man/3/prof +rate /man/4/iostats +rate /man/6/audio +rate /man/9/grid +ratio /man/1/gzip +ratio /man/1/units +ratio /man/2/draw-display +rattach /man/10/styx +rattach /man/5/0intro +rattach /man/5/attach +rattach /man/8/styxchat +rattr /man/2/attrdb +rauth /man/10/styx +rauth /man/2/styxservers +rauth /man/5/0intro +rauth /man/5/attach +rauth /man/8/styxchat +raw /man/1/cprof +raw /man/1/dd +raw /man/1/keyboard +raw /man/1/ns +raw /man/1/webgrab +raw /man/10/ms2 +raw /man/10ti925/epocimg +raw /man/10ti925/tihost +raw /man/2/asn1 +raw /man/2/convcs +raw /man/2/dhcpclient +raw /man/2/ir +raw /man/2/prof +raw /man/2/scsiio +raw /man/3/cons +raw /man/3/flash +raw /man/3/fpga +raw /man/3/pnp +raw /man/3/sd +raw /man/3/touch +raw /man/6/sexprs +raw /man/8/fpgaload +raw /man/8/ftl +raw /man/8/prep +raw2iaf /man/1/auplay +raw2iaf.b /man/1/auplay +rawcmd /man/2/scsiio +rawdbfs /man/1/calendar +rawdbfs /man/4/dbfs +rawdbfs.b /man/4/dbfs +rawfd /man/2/scsiio +rawimage /man/2/imagefile +rawoff /man/1/wm-sh +rawoff /man/3/cons +rawon /man/1/wm-sh +rawon /man/3/cons +rawtab /man/2/prof +rblock /man/1/sh-file2chan +rc /man/1/mash +rc /man/10/acid +rc /man/10/mk +rc /man/2/sys-file2chan +rc /man/2/wmsrv +rc4 /man/1/alphabet-main +rc4 /man/2/keyring-crypt +rc4 /man/2/keyring-rc4 +rc4 /man/2/security-0intro +rc4 /man/3/ssl +rc4 /man/3/tls +rc4 /man/4/import +rc4 /man/4/keysrv +rc4 /man/6/login +rc4 /man/8/srv +rc4back /man/2/keyring-rc4 +rc4setup /man/2/keyring-rc4 +rc4skip /man/2/keyring-rc4 +rc4state /man/2/keyring-rc4 +rcl /man/2/ir +rclunk /man/5/0intro +rclunk /man/5/clunk +rclunk /man/8/styxchat +rcmd /man/1/os +rcmd /man/1/rcmd +rcmd /man/8/virgild +rcmd.b /man/1/rcmd +rcondbreak /man/3/dbg +rcreate /man/10/styx +rcreate /man/5/0intro +rcreate /man/5/open +rcreate /man/8/styxchat +rcvport /man/2/plumbmsg +rdata /man/1/sh-file2chan +rdbg /man/8/rdbgsrv +rdbg.h /man/3/dbg +rdbgsrv /man/8/rdbgsrv +rdbgsrv.b /man/8/rdbgsrv +rdelete /man/2/palmfile +rdirty /man/2/palmfile +rdonly /man/2/disks +rdtog /man/3/usb +re /man/1/acme +re /man/1/miniterm +re /man/1/sh +re /man/1/sh-expr +re /man/1/sh-regex +re /man/1/tiny +re /man/1/wm-misc +re /man/1/yacc +re /man/2/alphabet-intro +re /man/2/regex +re /man/2/sh +re /man/2/styxpersist +re /man/3/indir +re /man/3/ip +re /man/3/vid +re /man/4/dbfs +re /man/6/man +re /man/9/bind +re /man/9/canvas +re /man/9/menu +re /man/9/options +reach /man/3/dbg +reachable /man/2/sys-0intro +reached /man/1/charon +reached /man/1/grid-register +reached /man/10/lock +reached /man/2/debug +reached /man/2/disks +reached /man/2/registries +reached /man/2/sys-0intro +reached /man/3/prog +reached /man/5/walk +reached /man/9/0intro +reached /man/9/text +reaches /man/10/allocb +reaches /man/3/ds +reaches /man/3/pipe +reaches /man/4/keyfs +reaching /man/10/qio +reaching /man/6/man +reachtime /man/2/ip +reacquire /man/8/dhcp +reactivates /man/2/ir +read /man/1/0intro +read /man/1/acme +read /man/1/alphabet-abc +read /man/1/alphabet-fs +read /man/1/alphabet-grid +read /man/1/alphabet-main +read /man/1/auplay +read /man/1/blur +read /man/1/cd +read /man/1/charon +read /man/1/chmod +read /man/1/collab-clients +read /man/1/cook +read /man/1/cp +read /man/1/crypt +read /man/1/dd +read /man/1/deb +read /man/1/fs +read /man/1/ftest +read /man/1/grid-monitor +read /man/1/grid-register +read /man/1/idea +read /man/1/ls +read /man/1/mash +read /man/1/mash-make +read /man/1/math-misc +read /man/1/mc +read /man/1/mdb +read /man/1/mk +read /man/1/passwd +read /man/1/read +read /man/1/rm +read /man/1/secstore +read /man/1/sh +read /man/1/sh-alphabet +read /man/1/sh-csv +read /man/1/sh-file2chan +read /man/1/sh-sexprs +read /man/1/sh-std +read /man/1/sort +read /man/1/stack +read /man/1/stream +read /man/1/sum +read /man/1/tee +read /man/1/tiny +read /man/1/wc +read /man/1/webgrab +read /man/1/wm-misc +read /man/1/xd +read /man/10/2l +read /man/10/9load +read /man/10/allocb +read /man/10/ar +read /man/10/dev +read /man/10/devattach +read /man/10/dmainit +read /man/10/dynld +read /man/10/kprof +read /man/10/mk +read /man/10/odbc +read /man/10/plan9.ini +read /man/10/qio +read /man/10/qlock +read /man/10/readnum +read /man/10/styxserver +read /man/2/bufio +read /man/2/bufio-chanfill +read /man/2/debug +read /man/2/devpointer +read /man/2/dis +read /man/2/diskblocks +read /man/2/disks +read /man/2/draw-display +read /man/2/draw-font +read /man/2/draw-image +read /man/2/ether +read /man/2/exception +read /man/2/format +read /man/2/fsproto +read /man/2/imagefile +read /man/2/ip +read /man/2/keyring-0intro +read /man/2/keyring-auth +read /man/2/keyring-sha1 +read /man/2/keyset +read /man/2/newns +read /man/2/palmfile +read /man/2/plumbmsg +read /man/2/prefab-0intro +read /man/2/prefab-element +read /man/2/readdir +read /man/2/registries +read /man/2/secstore +read /man/2/security-0intro +read /man/2/security-ssl +read /man/2/sexprs +read /man/2/spree +read /man/2/styx +read /man/2/styxservers +read /man/2/sys-0intro +read /man/2/sys-dial +read /man/2/sys-dirread +read /man/2/sys-file2chan +read /man/2/sys-iounit +read /man/2/sys-open +read /man/2/sys-pipe +read /man/2/sys-read +read /man/2/sys-stat +read /man/2/tk +read /man/2/ubfa +read /man/2/venti +read /man/2/wait +read /man/3/arch +read /man/3/audio +read /man/3/cmd +read /man/3/cons +read /man/3/dbg +read /man/3/draw +read /man/3/ds +read /man/3/dup +read /man/3/dynld +read /man/3/eia +read /man/3/ether +read /man/3/flash +read /man/3/floppy +read /man/3/fpga +read /man/3/fs +read /man/3/ftl +read /man/3/gpio +read /man/3/i2c +read /man/3/ip +read /man/3/mnt +read /man/3/mpeg +read /man/3/pbus +read /man/3/pipe +read /man/3/plap +read /man/3/pnp +read /man/3/pointer +read /man/3/prof +read /man/3/prog +read /man/3/root +read /man/3/rtc +read /man/3/sd +read /man/3/sign +read /man/3/srv +read /man/3/ssl +read /man/3/switch +read /man/3/tls +read /man/3/touch +read /man/3/tv +read /man/3/usb +read /man/3/vid +read /man/4/9srvfs +read /man/4/acme +read /man/4/archfs +read /man/4/dbfs +read /man/4/factotum +read /man/4/iostats +read /man/4/keyfs +read /man/4/keysrv +read /man/4/kfs +read /man/4/logfile +read /man/4/memfs +read /man/4/palmsrv +read /man/4/ramfile +read /man/4/registry +read /man/4/spree +read /man/4/tarfs +read /man/5/0intro +read /man/5/attach +read /man/5/flush +read /man/5/open +read /man/5/read +read /man/5/stat +read /man/6/audio +read /man/6/font +read /man/6/image +read /man/6/ndb +read /man/6/proto +read /man/6/sexprs +read /man/6/ubfa +read /man/7/db +read /man/8/applylog +read /man/8/bootpd +read /man/8/collabsrv +read /man/8/create +read /man/8/cs +read /man/8/dns +read /man/8/kfscmd +read /man/8/mkfs +read /man/8/prep +read /man/8/rdbgsrv +read /man/8/rstyxd +read /man/8/signer +read /man/8/touchcal +read.2 /man/10/mk +read.b /man/1/read +readable /man/1/ftest +readable /man/1/sh +readable /man/10/qio +readable /man/2/bufio +readable /man/2/keyring-0intro +readable /man/2/sexprs +readable /man/3/sign +readable /man/6/image +readable /man/6/keys +readable /man/8/createsignerkey +readall /man/2/readdir +readauthinfo /man/2/keyring-0intro +readauthinfo /man/2/keyring-auth +readauthinfo /man/2/security-auth +readbytes /man/2/styxservers +readcmd /man/1/sh-file2chan +readdata /man/1/sh-file2chan +readdir /man/1/lc +readdir /man/1/ls +readdir /man/2/filepat +readdir /man/2/readdir +readdir /man/2/styxservers +readdir /man/2/styxservers-nametree +readdir /man/2/sys-0intro +readdir /man/2/sys-dirread +readdir.b /man/2/readdir +readdir.m /man/2/readdir +readdir:fn /man/2/styxservers +reader /man/1/ebook +reader /man/10/qio +reader /man/10/qlock +reader /man/2/imagefile +reader /man/2/sys-pipe +reader /man/3/pbus +reader /man/3/pipe +reader /man/4/acme +reader /man/4/factotum +reader /man/4/lockfs +reader /man/4/logfile +readerror /man/2/styx +readers /man/1/cp +readers /man/10/qio +readers /man/10/qlock +readers /man/2/imagefile +readers /man/2/palmfile +readers /man/3/pipe +readers /man/4/logfile +readfile /man/2/spree +readfile /man/2/spree-gather +readgif /man/2/imagefile +readgif.b /man/2/imagefile +readgifpath /man/2/imagefile +readheader /man/2/spree +readid /man/2/palmfile +readimage /man/2/draw-display +readiness /man/2/crc +reading /man/1/alphabet-main +reading /man/1/blur +reading /man/1/cat +reading /man/1/charon +reading /man/1/date +reading /man/1/diff +reading /man/1/mash +reading /man/1/mathcalc +reading /man/1/sh +reading /man/1/sh-alphabet +reading /man/1/sleep +reading /man/1/wm-sh +reading /man/10/devattach +reading /man/10/dynld +reading /man/10/odbc +reading /man/10/qio +reading /man/10/qlock +reading /man/2/bufio +reading /man/2/daytime +reading /man/2/dbm +reading /man/2/diskblocks +reading /man/2/disks +reading /man/2/draw-font +reading /man/2/env +reading /man/2/format +reading /man/2/imagefile +reading /man/2/keyring-getmsg +reading /man/2/math-0intro +reading /man/2/palmfile +reading /man/2/print +reading /man/2/readdir +reading /man/2/security-0intro +reading /man/2/styx +reading /man/2/styxservers +reading /man/2/sys-bind +reading /man/2/sys-dial +reading /man/2/sys-export +reading /man/2/sys-file2chan +reading /man/2/sys-open +reading /man/2/sys-pipe +reading /man/2/wait +reading /man/3/cmd +reading /man/3/cons +reading /man/3/draw +reading /man/3/ds +reading /man/3/dup +reading /man/3/env +reading /man/3/ether +reading /man/3/i82365 +reading /man/3/ip +reading /man/3/lpt +reading /man/3/pipe +reading /man/3/plap +reading /man/3/pnp +reading /man/3/pointer +reading /man/3/prog +reading /man/3/sd +reading /man/3/snarf +reading /man/3/ssl +reading /man/3/tls +reading /man/3/touch +reading /man/3/tv +reading /man/3/vga +reading /man/4/acme +reading /man/4/cpu +reading /man/4/dbfs +reading /man/4/factotum +reading /man/4/logfile +reading /man/4/registry +reading /man/4/spree +reading /man/5/0intro +reading /man/5/read +reading /man/6/image +reading /man/6/ndb +reading /man/6/ubfa +reading /man/8/collabsrv +reading /man/8/kfscmd +reading /man/8/rdbgsrv +reading /man/8/rip +reading /man/8/styxchat +readings /man/3/touch +readipifc /man/2/ip +readjpg /man/2/imagefile +readjpg.b /man/2/imagefile +readjpgpath /man/2/imagefile +readme /man/1/acme +readme /man/1/itest +readmsg /man/2/styx +readmulti /man/2/imagefile +readn /man/2/disks +readnum /man/10/readnum +readonly /man/2/disks +readpicfile /man/2/imagefile +readpicfile.b /man/2/imagefile +readpicpath /man/2/imagefile +readpixels /man/2/draw-image +readpng /man/2/imagefile +readpng.b /man/2/imagefile +readpngpath /man/2/imagefile +readprotofile /man/2/fsproto +readprotostring /man/2/fsproto +reads /man/1/0intro +reads /man/1/alphabet-abc +reads /man/1/alphabet-fs +reads /man/1/alphabet-grid +reads /man/1/alphabet-main +reads /man/1/asm +reads /man/1/auplay +reads /man/1/blur +reads /man/1/cat +reads /man/1/comm +reads /man/1/cook +reads /man/1/crypt +reads /man/1/disdep +reads /man/1/freq +reads /man/1/fs +reads /man/1/gettar +reads /man/1/grid-monitor +reads /man/1/logwindow +reads /man/1/mash +reads /man/1/mathcalc +reads /man/1/mc +reads /man/1/netkey +reads /man/1/nsbuild +reads /man/1/sendmail +reads /man/1/sh +reads /man/1/sh-csv +reads /man/1/sh-file2chan +reads /man/1/sh-sexprs +reads /man/1/sh-std +reads /man/1/sum +reads /man/1/tcs +reads /man/1/tee +reads /man/1/telnet +reads /man/1/timestamp +reads /man/1/tiny +reads /man/1/tsort +reads /man/1/uuencode +reads /man/1/webgrab +reads /man/1/wish +reads /man/10/odbc +reads /man/10/plan9.ini +reads /man/10/qio +reads /man/2/devpointer +reads /man/2/dis +reads /man/2/disks +reads /man/2/ether +reads /man/2/format +reads /man/2/fsproto +reads /man/2/ir +reads /man/2/keyring-auth +reads /man/2/keyring-getmsg +reads /man/2/keyring-getstring +reads /man/2/newns +reads /man/2/plumbmsg +reads /man/2/readdir +reads /man/2/scsiio +reads /man/2/styx +reads /man/2/styxpersist +reads /man/2/sys-dirread +reads /man/2/sys-iounit +reads /man/2/sys-pipe +reads /man/2/sys-read +reads /man/2/ubfa +reads /man/2/wait +reads /man/3/arch +reads /man/3/audio +reads /man/3/cmd +reads /man/3/cons +reads /man/3/ds +reads /man/3/eia +reads /man/3/flash +reads /man/3/ftl +reads /man/3/i2c +reads /man/3/i82365 +reads /man/3/ip +reads /man/3/lpt +reads /man/3/pnp +reads /man/3/ssl +reads /man/3/tls +reads /man/3/touch +reads /man/3/tv +reads /man/3/usb +reads /man/3/vid +reads /man/4/dbfs +reads /man/4/factotum +reads /man/4/iostats +reads /man/4/keyfs +reads /man/4/keysrv +reads /man/4/kfs +reads /man/4/registry +reads /man/4/spree +reads /man/5/0intro +reads /man/6/font +reads /man/8/changelogin +reads /man/8/collabsrv +reads /man/8/cs +reads /man/8/ftl +reads /man/8/plumber +reads /man/8/prep +reads /man/8/rstyxd +reads /man/8/styxchat +readstr /man/10/error +readstr /man/10/readnum +readstr /man/2/styxservers +readubf /man/2/ubfa +readxbitmap /man/2/imagefile +readxbitmap.b /man/2/imagefile +readxbmpath /man/2/imagefile +ready /man/1/secstore +ready /man/10/kproc +ready /man/2/convcs +ready /man/2/format +ready /man/2/scsiio +ready /man/2/styxpersist +ready /man/2/styxservers +ready /man/2/sys-bind +ready /man/2/tkclient +ready /man/3/dbg +ready /man/3/ip +ready /man/3/mnt +ready /man/3/prog +ready /man/3/tls +real /man/1/acme +real /man/1/charon +real /man/1/collab-clients +real /man/1/date +real /man/1/math-misc +real /man/1/time +real /man/1/yacc +real /man/10/0intro +real /man/10/c2l +real /man/10/kproc +real /man/10/splhi +real /man/2/asn1 +real /man/2/convcs +real /man/2/dis +real /man/2/geodesy +real /man/2/hash +real /man/2/ir +real /man/2/math-0intro +real /man/2/math-elem +real /man/2/math-export +real /man/2/math-fp +real /man/2/math-linalg +real /man/2/print +real /man/2/sys-print +real /man/2/w3c-xpointers +real /man/3/cmd +real /man/3/fs +real /man/3/rtc +real /man/3/tinyfs +real /man/6/dis +real /man/6/sbl +real /man/8/collabsrv +real /man/8/manufacture +real /man/9/canvas +real /man/9/entry +real /man/9/listbox +real /man/9/scale +real /man/9/scrollbar +real /man/9/text +real32 /man/2/math-export +reality /man/1/charon +reality /man/2/disks +realloc /man/10/malloc +reallocating /man/10/allocb +reallocation /man/2/diskblocks +reallocation /man/3/cmd +reallyrandom /man/2/security-random +reals /man/2/dis +reals /man/3/prog +realtek /man/10/plan9.ini +ream /man/1/zeros +reamed /man/4/kfs +reaming /man/1/zeros +reappear /man/1/logwindow +reappear /man/1/sh +rear /man/2/spree-cardlib +rearranged /man/9/grid +rearranges /man/10/allocb +rearranging /man/2/sys-dup +reasonable /man/2/styx +reasonable /man/5/stat +reasonable /man/6/colour +reasonable /man/9/canvas +reasonably /man/3/dbg +reasons /man/1/mux +reasons /man/10/print +reasons /man/5/0intro +reasons /man/5/stat +reasons /man/6/colour +reassigned /man/2/sys-0intro +reboot /man/1/bind +reboot /man/10/dev +reboot /man/10/panic +reboot /man/2/sys-millisec +reboot /man/3/boot +reboot /man/3/cons +rebooted /man/3/cons +rebooted /man/3/dbg +rebooted /man/8/getauthinfo +rebound /man/2/dhcpclient +rebound /man/2/sys-fd2path +rebound /man/3/fs +rebroadcast /man/8/collabsrv +rebuild /man/2/ida +rebuild /man/8/kfscmd +rebuilt /man/10/iar +rec /man/2/format +rec /man/2/palmfile +rec /man/2/prof +rec /man/2/xml +rec2val /man/2/format +recalculate /man/2/prefab-element +recall /man/1/mux +recall /man/2/ir +receipt /man/10/sleep +receipt /man/2/filter +receipt /man/3/tls +receive /man/1/cpu +receive /man/1/sh-tk +receive /man/2/0intro +receive /man/2/command +receive /man/2/draw-display +receive /man/2/filter +receive /man/2/ip +receive /man/2/ir +receive /man/2/keyring-getmsg +receive /man/2/mpeg +receive /man/2/plumbmsg +receive /man/2/popup +receive /man/2/styx +receive /man/2/styxpersist +receive /man/2/sys-bind +receive /man/2/sys-file2chan +receive /man/2/tftp +receive /man/2/tkclient +receive /man/2/wmsrv +receive /man/3/cmd +receive /man/3/i2c +receive /man/3/ip +receive /man/4/logfile +receive /man/5/flush +receive /man/5/version +receive /man/8/collabsrv +receive /man/8/plumber +receive /man/9/grab +receive /man/9/text +received /man/1/emu +received /man/1/secstore +received /man/1/sh-tk +received /man/2/arg +received /man/2/daytime +received /man/2/dhcpclient +received /man/2/dividers +received /man/2/keyring-getmsg +received /man/2/security-0intro +received /man/2/spree +received /man/2/styx +received /man/2/styxconv +received /man/2/styxpersist +received /man/2/sys-dial +received /man/2/sys-file2chan +received /man/2/tabs +received /man/2/tftp +received /man/2/tkclient +received /man/2/wmclient +received /man/2/wmlib +received /man/2/wmsrv +received /man/2/xml +received /man/3/ether +received /man/3/ip +received /man/3/pbus +received /man/3/prog +received /man/3/tls +received /man/3/touch +received /man/3/usb +received /man/5/flush +received /man/5/version +received /man/6/auth +received /man/8/register +received /man/8/sntp +received /man/8/styxmon +receiver /man/1/idea +receiver /man/2/security-0intro +receiver /man/3/pbus +receives /man/1/acme +receives /man/1/collab-clients +receives /man/1/sh +receives /man/1/sh-tk +receives /man/1/telnet +receives /man/1/wm-misc +receives /man/10/devattach +receives /man/10/plan9.ini +receives /man/2/dhcpclient +receives /man/2/draw-context +receives /man/2/ida +receives /man/2/popup +receives /man/2/spree +receives /man/2/styx +receives /man/2/sys-export +receives /man/2/sys-file2chan +receives /man/2/tk +receives /man/2/virgil +receives /man/2/volume +receives /man/3/dbg +receives /man/3/ether +receives /man/3/ftl +receives /man/3/usb +receives /man/5/0intro +receives /man/6/login +receives /man/6/utf +receives /man/8/dhcp +receives /man/8/logind +receives /man/8/plumber +receives /man/8/sntp +receives /man/8/virgild +receives /man/9/scale +receiving /man/10/memory +receiving /man/2/keyring-getstring +receiving /man/2/security-0intro +receiving /man/2/spree +receiving /man/2/sys-0intro +receiving /man/3/ip +receiving /man/3/prog +receiving /man/5/0intro +receiving /man/8/bootpd +receiving /man/9/grid +receiving /man/9/pack +recent /man/1/acme +recent /man/1/ls +recent /man/1/mk +recent /man/1/sh +recent /man/10/error +recent /man/10/mk +recent /man/2/sys-0intro +recent /man/2/sys-print +recent /man/3/dynld +recent /man/3/logfs +recent /man/5/stat +recent /man/6/plumbing +recent /man/8/rdbgsrv +recent /man/9/canvas +recent /man/9/entry +recent /man/9/scrollbar +recently /man/1/acme +recently /man/1/charon +recently /man/1/ls +recently /man/2/popup +recently /man/2/prefab-compound +recently /man/2/readdir +recently /man/2/wmsrv +recently /man/4/acme +recently /man/5/stat +recently /man/6/ubfa +recently /man/9/grid +receptacle /man/10/allocb +reception /man/10/plan9.ini +recipe /man/1/mk +recipe /man/10/mk +recipes /man/1/mk +recipes /man/10/mk +recipes /man/8/cs +recipient /man/1/sendmail +recipient /man/1/uuencode +recipient /man/2/security-0intro +recipient /man/8/svc +recipients /man/2/smtp +reclaim /man/3/ftl +reclaimed /man/3/tls +recognise /man/10ti925/epocimg +recognise /man/3/vga +recognised /man/1/brutus +recognised /man/1/cook +recognised /man/1/fc +recognised /man/1/filename +recognised /man/1/look +recognised /man/1/wish +recognised /man/2/xml +recognised /man/6/ubfa +recognises /man/1/sh-csv +recognises /man/1/sh-sexprs +recognising /man/3/logfs +recognizable /man/1/mk +recognizable /man/10/mk +recognizable /man/8/httpd +recognize /man/10/atoi +recognized /man/1/acme +recognized /man/1/units +recognized /man/10/9load +recognized /man/2/volume +recognized /man/4/acme +recognized /man/9/types +recognizer /man/2/regex +recognizes /man/10/atoi +recognizes /man/2/sys-print +recognizes /man/5/flush +recommendation /man/2/asn1 +recommended /man/1/session +recommended /man/10/mk +recommended /man/2/prof +recommended /man/4/cpu +reconfiguration /man/10/plan9.ini +reconfigured /man/9/image +reconnection /man/2/pop3 +reconnections /man/2/pop3 +reconstruct /man/1/mash-make +reconstruct /man/1/ns +reconstruct /man/2/ida +reconstructing /man/1/mash-make +reconstruction /man/2/ida +record /man/1/alphabet-abc +record /man/1/alphabet-grid +record /man/1/avr +record /man/1/dd +record /man/1/itest +record /man/1/spree-join +record /man/10/9load +record /man/10/error +record /man/10/ms2 +record /man/10/odbc +record /man/10ti925/epocimg +record /man/2/cfg +record /man/2/convcs +record /man/2/disks +record /man/2/format +record /man/2/ir +record /man/2/keyring-getmsg +record /man/2/keyring-getstring +record /man/2/palmfile +record /man/2/spree-cardlib +record /man/2/wait +record /man/2/wmsrv +record /man/3/pointer +record /man/3/ssl +record /man/3/tls +record /man/4/dbfs +record /man/6/keytext +record /man/8/prep +record /man/8/rip +record's /man/2/palmfile +recorddir /man/1/itest +recorded /man/1/cprof +recorded /man/1/itest +recorded /man/10/a.out +recorded /man/2/sys-stat +recorded /man/3/audio +recorded /man/5/read +recorded /man/6/audio +recorded /man/8/applylog +recording /man/1/cprof +recording /man/1/itest +recording /man/2/itslib +recording /man/3/audio +recording /man/3/kprof +recording /man/3/logfs +recording /man/6/audio +recordroot /man/1/itest +records /man/1/acme +records /man/1/alphabet-abc +records /man/1/alphabet-grid +records /man/1/dd +records /man/10/2c +records /man/10/odbc +records /man/2/format +records /man/2/palmfile +records /man/2/sys-0intro +records /man/2/sys-iounit +records /man/2/sys-werrstr +records /man/3/logfs +records /man/3/tls +records /man/3/usb +records /man/4/dbfs +records /man/4/iostats +records /man/5/read +records /man/5/stat +records /man/9/text +recover /man/10/a.out +recover /man/10/error +recover /man/2/math-0intro +recover /man/3/arch +recover /man/3/pbus +recover /man/3/prog +recover /man/4/acme +recovered /man/2/ida +recovered /man/3/draw +recovered /man/3/logfs +recovery /man/10/allocb +recovery /man/10/error +recovery /man/2/0intro +recovery /man/2/venti +recovery /man/3/prog +recovery /man/8/rdbgsrv +recreate /man/1/diff +recreate /man/1/mash-tk +recreate /man/1/sh +recreate /man/4/acme +recreated /man/2/spree +recreated /man/5/0intro +recreates /man/1/uuencode +recreation /man/1/acme +recroot /man/1/itest +recs /man/2/format +recsize /man/2/palmfile +rect /man/1/sh-arg +rect /man/1/wm +rect /man/2/draw-0intro +rect /man/2/draw-display +rect /man/2/draw-example +rect /man/2/draw-image +rect /man/2/draw-point +rect /man/2/draw-rect +rect /man/2/draw-screen +rect /man/2/imagefile +rect /man/2/mpeg +rect /man/2/prefab-compound +rect /man/2/prefab-element +rect /man/2/tk +rect /man/2/wmclient +rect /man/2/wmsrv +rectangle /man/1/wm +rectangle /man/1/wm-misc +rectangle /man/2/draw-0intro +rectangle /man/2/draw-context +rectangle /man/2/draw-image +rectangle /man/2/draw-point +rectangle /man/2/draw-rect +rectangle /man/2/draw-screen +rectangle /man/2/imagefile +rectangle /man/2/mpeg +rectangle /man/2/prefab-compound +rectangle /man/2/prefab-element +rectangle /man/2/tk +rectangle /man/2/wmclient +rectangle /man/2/wmsrv +rectangle /man/3/draw +rectangle /man/3/vga +rectangle /man/6/font +rectangle /man/6/image +rectangle /man/9/canvas +rectangle /man/9/listbox +rectangle /man/9/options +rectangle /man/9/panel +rectangle /man/9/scrollbar +rectangle /man/9/see +rectangle's /man/2/draw-image +rectangles /man/2/draw-0intro +rectangles /man/2/draw-image +rectangles /man/2/draw-rect +rectangles /man/2/prefab-element +rectangles /man/3/draw +rectangles /man/9/canvas +rectangular /man/1/charon +rectangular /man/2/draw-0intro +rectangular /man/2/draw-example +rectangular /man/2/draw-image +rectangular /man/2/draw-rect +rectangular /man/2/prefab-element +rectangular /man/6/image +rectangular /man/9/canvas +rectangular /man/9/pack +rectangular /man/9/scale +rectangular /man/9/see +recursion /man/1/math-misc +recursion /man/2/spree +recursive /man/1/sh +recursive /man/10/lock +recursive /man/6/sexprs +recursively /man/1/alphabet-fs +recursively /man/1/cp +recursively /man/1/diff +recursively /man/1/disdep +recursively /man/1/du +recursively /man/1/fs +recursively /man/1/rm +recursively /man/10/styxserver +recursively /man/2/draw-0intro +recursively /man/2/format +recursively /man/2/sexprs +recursively /man/2/ubfa +recursively /man/6/proto +recursively /man/8/create +recv /man/1/sh-tk +recv /man/2/0intro +recv /man/2/plumbmsg +recv /man/3/prog +recvra /man/2/ip +red /man/1/charon +red /man/1/cprof +red /man/1/deb +red /man/1/tktester +red /man/1/wm-misc +red /man/2/draw-0intro +red /man/2/draw-display +red /man/2/draw-example +red /man/3/draw +red /man/3/tv +red /man/6/colour +red /man/6/image +red /man/9/types +red,green,blue /man/6/colour +redefine /man/2/sh +redefined /man/1/sh +redefined /man/9/text +redefining /man/9/menubutton +redials /man/2/styxpersist +redir /man/1/sh +redirect /man/1/os +redirect /man/1/tiny +redirect /man/10/acid +redirect /man/8/httpd +redirected /man/1/listen +redirected /man/1/mash +redirected /man/1/sh +redirected /man/1/sh-alphabet +redirected /man/4/acme +redirecting /man/1/tiny +redirection /man/1/sh +redirection /man/1/tiny +redirection /man/10/odbc +redirection /man/2/sh +redirections /man/1/mash +redirections /man/1/sh +redirections /man/1/webgrab +redirects /man/1/mash +redirects /man/1/sh +redisplay /man/9/menu +redisplayed /man/1/miniterm +redisplaying /man/9/checkbutton +redo /man/1/acme +redoes /man/1/acme +redraw /man/2/prefab-compound +redrawn /man/2/prefab-compound +reduce /man/1/charon +reduce /man/10/dev +reduce /man/5/0intro +reduce /man/6/colour +reduce /man/8/ftl +reduced /man/1/charon +reduced /man/1/tiny +reduced /man/10/a.out +reduced /man/10/devattach +reduced /man/10/qio +reduced /man/2/sh +reduced /man/3/ds +reduced /man/3/pipe +reduces /man/1/blur +reduces /man/10/c2l +reduces /man/3/logfs +reducing /man/2/0intro +reductions /man/1/yacc +redundancy /man/2/crc +redundancy /man/2/ida +redundant /man/1/cleanname +redundant /man/2/names +redundant /man/8/kfscmd +reentered /man/3/cons +ref /man/1/cook +ref /man/1/yacc +ref /man/10/newchan +ref /man/10/qio +ref /man/10/ref +ref /man/10/styxserver +ref /man/2/0intro +ref /man/2/alphabet-intro +ref /man/2/arg +ref /man/2/asn1 +ref /man/2/attrdb +ref /man/2/bufio +ref /man/2/bufio-chanfill +ref /man/2/cfg +ref /man/2/command +ref /man/2/crc +ref /man/2/daytime +ref /man/2/dbm +ref /man/2/debug +ref /man/2/devpointer +ref /man/2/dhcpclient +ref /man/2/dialog +ref /man/2/dict +ref /man/2/dis +ref /man/2/diskblocks +ref /man/2/disks +ref /man/2/dividers +ref /man/2/draw-context +ref /man/2/draw-display +ref /man/2/draw-example +ref /man/2/draw-font +ref /man/2/draw-image +ref /man/2/draw-screen +ref /man/2/drawmux +ref /man/2/factotum +ref /man/2/filter +ref /man/2/filter-deflate +ref /man/2/filter-slip +ref /man/2/format +ref /man/2/fsproto +ref /man/2/hash +ref /man/2/ida +ref /man/2/imagefile +ref /man/2/ip +ref /man/2/ir +ref /man/2/itslib +ref /man/2/keyring-0intro +ref /man/2/keyring-auth +ref /man/2/keyring-certtostr +ref /man/2/keyring-crypt +ref /man/2/keyring-gensk +ref /man/2/keyring-getmsg +ref /man/2/keyring-getstring +ref /man/2/keyring-ipint +ref /man/2/keyring-rc4 +ref /man/2/keyring-sha1 +ref /man/2/lock +ref /man/2/mpeg +ref /man/2/palmfile +ref /man/2/plumbmsg +ref /man/2/popup +ref /man/2/prefab-compound +ref /man/2/prefab-element +ref /man/2/prefab-environ +ref /man/2/prefab-style +ref /man/2/print +ref /man/2/prof +ref /man/2/pslib +ref /man/2/readdir +ref /man/2/registries +ref /man/2/scsiio +ref /man/2/secstore +ref /man/2/security-auth +ref /man/2/security-login +ref /man/2/security-ssl +ref /man/2/selectfile +ref /man/2/sexprs +ref /man/2/sh +ref /man/2/spki +ref /man/2/spki-verifier +ref /man/2/spree +ref /man/2/spree-allow +ref /man/2/spree-cardlib +ref /man/2/spree-gather +ref /man/2/spree-objstore +ref /man/2/styx +ref /man/2/styxconv +ref /man/2/styxpersist +ref /man/2/styxservers +ref /man/2/styxservers-nametree +ref /man/2/sys-bind +ref /man/2/sys-dial +ref /man/2/sys-dirread +ref /man/2/sys-dup +ref /man/2/sys-export +ref /man/2/sys-fauth +ref /man/2/sys-fd2path +ref /man/2/sys-file2chan +ref /man/2/sys-fversion +ref /man/2/sys-iounit +ref /man/2/sys-open +ref /man/2/sys-pipe +ref /man/2/sys-print +ref /man/2/sys-read +ref /man/2/sys-seek +ref /man/2/sys-self +ref /man/2/sys-stat +ref /man/2/tabs +ref /man/2/tftp +ref /man/2/timers +ref /man/2/tk +ref /man/2/tkclient +ref /man/2/translate +ref /man/2/ubfa +ref /man/2/venti +ref /man/2/volume +ref /man/2/w3c-css +ref /man/2/w3c-xpointers +ref /man/2/wait +ref /man/2/wmclient +ref /man/2/wmlib +ref /man/2/wmsrv +ref /man/2/xml +ref /man/6/sbl +ref /man/7/db +refbackup /man/2/draw-screen +refbackup /man/3/draw +refer /man/1/bind +refer /man/1/mk +refer /man/1/ns +refer /man/1/sh +refer /man/10/dev +refer /man/10/devattach +refer /man/10/mk +refer /man/2/convcs +refer /man/2/dhcpclient +refer /man/2/diskblocks +refer /man/2/prefab-style +refer /man/2/print +refer /man/2/spree +refer /man/2/styxservers +refer /man/2/sys-bind +refer /man/2/sys-fd2path +refer /man/2/ubfa +refer /man/3/fs +refer /man/3/ip +refer /man/5/0intro +refer /man/6/ndb +refer /man/6/plumbing +refer /man/8/bootpd +refer /man/8/collabsrv +refer /man/8/srv +refer /man/9/canvas +refer /man/9/entry +refer /man/9/grid +refer /man/9/image +refer /man/9/listbox +refer /man/9/scrollbar +refer /man/9/text +reference /man/1/0intro +reference /man/1/charon +reference /man/1/limbo +reference /man/1/mk +reference /man/1/sh-tk +reference /man/1/yacc +reference /man/10/dev +reference /man/10/dynld +reference /man/10/kproc +reference /man/10/mk +reference /man/10/newchan +reference /man/10/qio +reference /man/10/ref +reference /man/2/0intro +reference /man/2/alphabet-intro +reference /man/2/asn1 +reference /man/2/attrdb +reference /man/2/bufio +reference /man/2/convcs +reference /man/2/dbm +reference /man/2/devpointer +reference /man/2/dhcpclient +reference /man/2/dis +reference /man/2/diskblocks +reference /man/2/disks +reference /man/2/draw-0intro +reference /man/2/draw-context +reference /man/2/draw-display +reference /man/2/factotum +reference /man/2/fsproto +reference /man/2/geodesy +reference /man/2/ida +reference /man/2/keyring-0intro +reference /man/2/keyring-auth +reference /man/2/keyring-certtostr +reference /man/2/keyring-ipint +reference /man/2/lock +reference /man/2/palmfile +reference /man/2/plumbmsg +reference /man/2/scsiio +reference /man/2/secstore +reference /man/2/security-login +reference /man/2/security-ssl +reference /man/2/styx +reference /man/2/styxservers +reference /man/2/sys-0intro +reference /man/2/sys-dup +reference /man/2/sys-open +reference /man/2/sys-self +reference /man/2/translate +reference /man/2/w3c-css +reference /man/3/draw +reference /man/3/prog +reference /man/3/touch +reference /man/6/proto +reference /man/6/sbl +reference /man/7/db +reference /man/8/prep +reference /man/9/0intro +referenced /man/1/0intro +referenced /man/1/disdep +referenced /man/10/2c +referenced /man/10/dev +referenced /man/10/devattach +referenced /man/2/daytime +referenced /man/2/keyring-sha1 +referenced /man/2/spree +referenced /man/2/styxservers-nametree +referenced /man/2/ubfa +referenced /man/3/srv9 +referenced /man/4/mntgen +referenced /man/6/sbl +referenced /man/8/mkfs +references /man/1/limbo +references /man/1/mash +references /man/1/mash-tk +references /man/1/mk +references /man/10/dynld +references /man/10/mk +references /man/10/newchan +references /man/10/plan9.ini +references /man/10/qio +references /man/10/styxserver +references /man/2/dis +references /man/2/draw-0intro +references /man/2/plumbmsg +references /man/2/readdir +references /man/2/sys-dup +references /man/2/sys-pipe +references /man/2/w3c-css +references /man/2/w3c-xpointers +references /man/2/wmsrv +references /man/3/srv +references /man/6/sbl +references /man/8/kfscmd +referential /man/6/sbl +referred /man/1/ps +referred /man/1/sh +referred /man/1/sh-alphabet +referred /man/2/alphabet-intro +referred /man/2/draw-0intro +referred /man/2/styxservers +referred /man/2/styxservers-nametree +referred /man/3/indir +referred /man/9/canvas +referred /man/9/scrollbar +referred /man/9/text +referring /man/1/mash +referring /man/10/conf +referring /man/2/arg +referring /man/2/diskblocks +referring /man/2/spree-objstore +referring /man/2/styxservers +referring /man/2/sys-dup +referring /man/6/ndb +refers /man/1/acme +refers /man/1/alphabet-main +refers /man/1/cal +refers /man/1/yacc +refers /man/10/9load +refers /man/10/conf +refers /man/10/dev +refers /man/2/dhcpclient +refers /man/2/draw-image +refers /man/2/secstore +refers /man/2/spki-verifier +refers /man/2/spree +refers /man/2/styxservers +refers /man/2/styxservers-nametree +refers /man/2/sys-0intro +refers /man/2/sys-bind +refers /man/2/sys-read +refers /man/2/sys-self +refers /man/2/w3c-css +refers /man/2/w3c-xpointers +refers /man/2/wmsrv +refers /man/3/cmd +refers /man/3/dbg +refers /man/3/fs +refers /man/3/tinyfs +refers /man/5/0intro +refers /man/9/canvas +refers /man/9/entry +refers /man/9/grid +refers /man/9/options +refers /man/9/scrollbar +refers /man/9/text +refers /man/9/types +refill /man/2/bufio-chanfill +refills /man/2/bufio-chanfill +reflect /man/1/ps +reflect /man/1/read +reflect /man/1/sh-alphabet +reflect /man/10/allocb +reflect /man/10/devattach +reflect /man/10/dynld +reflect /man/10/mk +reflect /man/2/keyring-getmsg +reflect /man/2/popup +reflect /man/9/0intro +reflect /man/9/checkbutton +reflect /man/9/variable +reflected /man/2/spree-objstore +reflected /man/9/menu +reflected /man/9/text +reflecting /man/1/acme +reflects /man/1/mash +reflects /man/1/os +reflects /man/10/ar +reflects /man/5/stat +reflects /man/9/text +refmesg /man/3/draw +refnone /man/2/draw-screen +refnone /man/3/draw +refresh /man/1/grid-query +refresh /man/1/session +refresh /man/1/wm-misc +refresh /man/2/draw-display +refresh /man/2/draw-screen +refresh /man/2/spki-verifier +refresh /man/3/draw +refreshed /man/3/draw +refreshing /man/3/draw +refuse /man/1/cp +refuse /man/8/prep +refuse /man/9/button +refuse /man/9/checkbutton +refuse /man/9/menu +refuse /man/9/menubutton +refuse /man/9/radiobutton +refused /man/1/emu +refused /man/2/spree +refused /man/8/getauthinfo +refuses /man/1/mv +refuses /man/8/prep +reg /man/2/crc +reg /man/2/registries +reg /man/3/gpio +reg /man/6/ubfa +regard /man/10/qio +regarded /man/2/itslib +regarded /man/2/sys-read +regarded /man/4/registry +regarded /man/5/0intro +regarding /man/2/spki-verifier +regardless /man/1/limbo +regardless /man/1/sh-tk +regardless /man/10/qio +regardless /man/2/draw-image +regardless /man/3/ether +regardless /man/3/flash +regardless /man/5/read +regardless /man/6/audio +regardless /man/8/create +regardless /man/8/prep +regardless /man/9/text +regards /man/6/keyboard +regenerate /man/3/logfs +regents /man/9/0intro +regents /man/9/1copyright +regex /man/1/grep +regex /man/1/mash +regex /man/1/sh +regex /man/1/sh-regex +regex /man/2/0intro +regex /man/2/filepat +regex /man/2/regex +regex /man/6/regexp +regex.b /man/1/sh-regex +regex.b /man/2/regex +regex.m /man/2/regex +regexp /man/1/acme +regexp /man/1/mk +regexp /man/1/sh-regex +regexp /man/10/mk +regexp /man/2/regex +regexp /man/6/regexp +region /man/1/avr +region /man/2/draw-0intro +region /man/2/draw-example +region /man/2/draw-image +region /man/2/sys-utfbytes +region /man/3/dbg +region /man/3/flash +region /man/3/ftl +region /man/6/sbl +region /man/8/mangaload +region /man/9/canvas +region /man/9/entry +region /man/9/scrollbar +region /man/9/see +regions /man/1/wm-misc +regions /man/10/memory +regions /man/2/draw-font +regions /man/3/draw +regions /man/3/ftl +regions /man/3/logfs +regions /man/3/pnp +regions /man/8/prep +regions /man/9/canvas +register /man/1/grid-monitor +register /man/1/grid-ns +register /man/1/grid-register +register /man/1/mash +register /man/1/mux +register /man/10/2c +register /man/10/a.out +register /man/2/crc +register /man/2/math-fp +register /man/2/registries +register /man/2/security-0intro +register /man/2/virgil +register /man/3/dbg +register /man/3/gpio +register /man/3/lpt +register /man/3/pnp +register /man/4/cpu +register /man/4/registry +register /man/6/dis +register /man/6/ubfa +register /man/8/manufacture +register /man/8/register +register /man/8/signer +register.b /man/1/grid-register +register.b /man/8/register +registered /man/1/grid-query +registered /man/1/grid-register +registered /man/1/mash +registered /man/1/passwd +registered /man/1/session +registered /man/2/registries +registered /man/2/secstore +registered /man/3/ip +registered /man/4/registry +registered /man/6/keys +registered /man/8/getauthinfo +registered /man/8/svc +registerization /man/10/2c +registers /man/1/grid-register +registers /man/10/acid +registers /man/10/error +registers /man/10/intrenable +registers /man/2/registries +registers /man/3/gpio +registers /man/3/pnp +registers /man/3/vga +registers /man/6/ubfa +registration /man/10/intrenable +registration /man/2/keyring-0intro +registration /man/2/registries +registration /man/4/registry +registration /man/8/svc +registries /man/1/grid-localreg +registries /man/1/grid-query +registries /man/1/grid-register +registries /man/1/session +registries /man/2/registries +registries /man/4/registry +registries.m /man/2/registries +registry /man/1/grid-localreg +registry /man/1/grid-ns +registry /man/1/grid-query +registry /man/1/grid-register +registry /man/1/session +registry /man/2/registries +registry /man/3/srv +registry /man/3/srv9 +registry /man/4/9srvfs +registry /man/4/cpu +registry /man/4/registry +registry /man/8/svc +registry.b /man/1/grid-localreg +registry.b /man/4/registry +registry.connect /man/2/registries +registry.new /man/2/registries +registry.sh /man/8/svc +regquery /man/4/registry +regs /man/10/acid +regular /man/1/acme +regular /man/1/alphabet-fs +regular /man/1/fs +regular /man/1/ftest +regular /man/1/grep +regular /man/1/mash +regular /man/1/mk +regular /man/1/sh-regex +regular /man/1/tiny +regular /man/1/wm-misc +regular /man/10/2l +regular /man/10/mk +regular /man/2/draw-0intro +regular /man/2/draw-image +regular /man/2/imagefile +regular /man/2/prefab-0intro +regular /man/2/prefab-style +regular /man/2/regex +regular /man/2/sys-0intro +regular /man/4/acme +regular /man/5/open +regular /man/6/keyboard +regular /man/6/plumbing +regular /man/6/regexp +regular /man/8/prep +regulated /man/1/yacc +regulations /man/9/1copyright +reinitialise /man/3/mpeg +reinitialise /man/8/kfscmd +reinitialised /man/3/tinyfs +reject /man/1/comm +reject /man/1/dmview +reject /man/10/2c +reject /man/3/usb +reject /man/5/stat +rejected /man/1/tiny +rejected /man/2/sys-fversion +rejected /man/5/open +rejected /man/8/getauthinfo +rejecting /man/3/ip +rejecting /man/3/usb +rejects /man/4/palmsrv +relate /man/1/ls +related /man/1/acme +related /man/1/mk +related /man/1/telnet +related /man/10/0intro +related /man/10/2c +related /man/10/mk +related /man/10/styx +related /man/2/0intro +related /man/2/exception +related /man/3/ip +related /man/4/acme +related /man/4/namespace +related /man/6/attrdb +related /man/6/keyboard +related /man/6/sexprs +related /man/9/1copyright +related /man/9/canvas +related /man/9/text +relates /man/6/sbl +relating /man/1/ls +relating /man/6/attrdb +relation /man/1/disdep +relation /man/1/tsort +relation /man/2/prof +relational /man/1/mathcalc +relational /man/1/sh-expr +relational /man/9/text +relations /man/1/tsort +relationship /man/9/text +relationships /man/1/tsort +relative /man/1/alphabet-fs +relative /man/1/alphabet-main +relative /man/1/gettar +relative /man/1/grid-ns +relative /man/1/limbo +relative /man/1/mash-tk +relative /man/1/sh +relative /man/1/tiny +relative /man/10/dynld +relative /man/2/daytime +relative /man/2/dis +relative /man/2/disks +relative /man/2/fsproto +relative /man/2/names +relative /man/2/spree +relative /man/2/sys-export +relative /man/2/tk +relative /man/2/wmsrv +relative /man/3/flash +relative /man/6/font +relative /man/6/man +relative /man/6/proto +relative /man/6/sbl +relative /man/8/applylog +relative /man/8/bootpd +relative /man/8/collabsrv +relative /man/9/bind +relative /man/9/canvas +relative /man/9/entry +relative /man/9/grid +relative /man/9/listbox +relative /man/9/options +relative /man/9/panel +relative /man/9/scrollbar +relative /man/9/see +relative /man/9/text +relatives /man/10/print +relaxed /man/5/stat +release /man/1/acme +release /man/1/cpu +release /man/1/mux +release /man/10/error +release /man/10/ref +release /man/2/debug +release /man/2/dhcpclient +release /man/2/diskblocks +release /man/2/lock +release /man/3/touch +release /man/9/bind +release /man/9/grab +release /man/9/listbox +released /man/1/acme +released /man/2/draw-pointer +released /man/2/sys-0intro +released /man/2/sys-open +released /man/9/bind +released /man/9/button +released /man/9/checkbutton +released /man/9/choicebutton +released /man/9/grab +released /man/9/image +released /man/9/listbox +released /man/9/menu +released /man/9/menubutton +released /man/9/options +released /man/9/radiobutton +released /man/9/scrollbar +released /man/9/text +releaseing /man/9/menubutton +releases /man/10/lock +releases /man/2/lock +releases /man/9/grab +releases /man/9/menu +releasing /man/1/kill +releasing /man/10/error +releasing /man/10/lock +releasing /man/2/diskblocks +releasing /man/9/menubutton +relevant /man/1/acme +relevant /man/1/blur +relevant /man/1/cprof +relevant /man/1/mprof +relevant /man/1/prof +relevant /man/1/tktester +relevant /man/10/plan9.ini +relevant /man/2/0intro +relevant /man/2/disks +relevant /man/2/print +relevant /man/2/prof +relevant /man/2/w3c-css +relevant /man/3/ip +relevant /man/4/acme +reliable /man/10/qio +reliable /man/3/ip +reliably /man/3/ip +relied /man/10/devattach +relied /man/2/wmsrv +relief /man/2/translate +relief /man/9/button +relief /man/9/canvas +relief /man/9/checkbutton +relief /man/9/choicebutton +relief /man/9/entry +relief /man/9/frame +relief /man/9/label +relief /man/9/listbox +relief /man/9/menu +relief /man/9/menubutton +relief /man/9/options +relief /man/9/panel +relief /man/9/radiobutton +relief /man/9/scale +relief /man/9/scrollbar +relief /man/9/text +relief /man/9/types +relies /man/1/netstat +relies /man/2/convcs +relies /man/2/keyring-0intro +relies /man/7/dbsrv +relinquish /man/1/wm +reload /man/1/charon +reload /man/1/cprof +reloaded /man/1/charon +relocation /man/1/mprof +relocation /man/10/dynld +relpath /man/1/grid-ns +relpath /man/2/w3c-xpointers +rely /man/1/mk +rely /man/10/mk +rely /man/4/ramfile +remade /man/1/mk +remade /man/10/mk +remain /man/1/charon +remain /man/1/collab-clients +remain /man/1/wm-sh +remain /man/10/devattach +remain /man/10/newchan +remain /man/10/print +remain /man/10/qio +remain /man/2/styxservers +remain /man/2/sys-dial +remain /man/2/sys-open +remain /man/2/sys-pipe +remain /man/2/timers +remain /man/3/srv +remain /man/4/dbfs +remain /man/4/factotum +remain /man/4/registry +remain /man/9/text +remainder /man/1/charon +remainder /man/1/mash +remainder /man/1/mathcalc +remainder /man/1/sh +remainder /man/10/5cv +remainder /man/10/plan9.ini +remainder /man/10/qio +remainder /man/2/math-fp +remainder /man/3/audio +remainder /man/3/cons +remainder /man/3/kprof +remainder /man/3/pnp +remainder /man/3/sd +remainder /man/6/regexp +remained /man/2/palmfile +remaining /man/1/cprof +remaining /man/1/ls +remaining /man/1/man +remaining /man/1/mkdir +remaining /man/1/mprof +remaining /man/1/plumb +remaining /man/1/prof +remaining /man/1/sh +remaining /man/1/sh-arg +remaining /man/1/sh-expr +remaining /man/1/sh-tk +remaining /man/1/tiny +remaining /man/10/2l +remaining /man/10/a.out +remaining /man/10/inb +remaining /man/10/plan9.ini +remaining /man/2/arg +remaining /man/2/bufio +remaining /man/2/dbm +remaining /man/2/dis +remaining /man/2/palmfile +remaining /man/2/pop3 +remaining /man/2/sexprs +remaining /man/2/styx +remaining /man/2/styxservers +remaining /man/2/sys-pipe +remaining /man/3/draw +remaining /man/3/ftl +remaining /man/3/gpio +remaining /man/3/pipe +remaining /man/3/sd +remaining /man/3/sign +remaining /man/4/registry +remaining /man/5/0intro +remaining /man/8/collabsrv +remaining /man/8/create +remaining /man/8/httpd +remaining /man/8/prep +remaining /man/9/canvas +remaining /man/9/destroy +remaining /man/9/pack +remaining /man/9/types +remains /man/1/blur +remains /man/1/collab-clients +remains /man/10/allocb +remains /man/10/devattach +remains /man/10/odbc +remains /man/10/qio +remains /man/2/popup +remains /man/3/cons +remains /man/3/ether +remains /man/3/ip +remains /man/4/mntgen +remains /man/4/registry +remains /man/9/bind +remains /man/9/menubutton +remap /man/2/imagefile +remapping /man/3/ftl +remember /man/2/styxservers +remembered /man/1/tktester +remembered /man/6/man +remembering /man/9/text +remembers /man/2/styxservers +remind /man/3/ip +remmulti /man/3/ether +remmulti /man/3/ip +remote /man/1/alphabet-abc +remote /man/1/alphabet-grid +remote /man/1/charon +remote /man/1/collab +remote /man/1/collab-clients +remote /man/1/cpu +remote /man/1/deb +remote /man/1/dmview +remote /man/1/listen +remote /man/1/mux +remote /man/1/netkey +remote /man/1/os +remote /man/1/passwd +remote /man/1/ps +remote /man/1/rcmd +remote /man/1/secstore +remote /man/1/sh-file2chan +remote /man/1/spree-join +remote /man/1/telnet +remote /man/1/uuencode +remote /man/1/wm-sh +remote /man/10/odbc +remote /man/10/plan9.ini +remote /man/10/styxserver +remote /man/2/draw-screen +remote /man/2/drawmux +remote /man/2/ir +remote /man/2/prefab-0intro +remote /man/2/prefab-compound +remote /man/2/prefab-element +remote /man/2/registries +remote /man/2/secstore +remote /man/2/sys-dial +remote /man/3/0intro +remote /man/3/dbg +remote /man/3/eia +remote /man/3/ip +remote /man/3/kprof +remote /man/3/mnt +remote /man/3/plap +remote /man/4/ftpfs +remote /man/4/import +remote /man/4/keysrv +remote /man/4/lockfs +remote /man/4/namespace +remote /man/4/spree +remote /man/5/attach +remote /man/6/namespace +remote /man/8/bootpd +remote /man/8/getauthinfo +remote /man/8/init +remote /man/8/mkfs +remote /man/8/rdbgsrv +remote /man/8/rstyxd +remote /man/8/signer +remote /man/8/styxmon +remote /man/8/svc +remote /man/8/virgild +remoteaddr /man/3/plap +remoteclosed /man/3/tls +remotedir /man/6/namespace +remotefile /man/1/uuencode +remotely /man/1/cpu +remotely /man/3/dbg +remotely /man/3/pipe +remotely /man/8/svc +remotes /man/2/ir +remoteuser /man/2/registries +removable /man/3/sd +removal /man/1/rm +removal /man/10/styxserver +removal /man/2/math-0intro +removal /man/2/styxservers-nametree +removal /man/8/create +remove /man/1/alphabet-fs +remove /man/1/fs +remove /man/1/ftree +remove /man/1/grid-monitor +remove /man/1/rm +remove /man/1/session +remove /man/10/dev +remove /man/10/devattach +remove /man/10/error +remove /man/10/kstrip +remove /man/10/qio +remove /man/10/styxserver +remove /man/2/registries +remove /man/2/secstore +remove /man/2/spree-cardlib +remove /man/2/styx +remove /man/2/styxpersist +remove /man/2/styxservers +remove /man/2/styxservers-nametree +remove /man/2/sys-0intro +remove /man/2/sys-open +remove /man/2/sys-remove +remove /man/2/wmsrv +remove /man/3/dbg +remove /man/3/ether +remove /man/3/ip +remove /man/3/srv +remove /man/4/acme +remove /man/4/keyfs +remove /man/4/registry +remove /man/5/0intro +remove /man/5/open +remove /man/5/remove +remove /man/5/stat +remove /man/5/walk +remove /man/8/kfscmd +remove /man/9/text +removebuiltin /man/2/sh +removecfg /man/2/dhcpclient +removed /man/1/alphabet-fs +removed /man/1/diff +removed /man/1/fs +removed /man/1/grid-query +removed /man/1/gzip +removed /man/1/mash-tk +removed /man/1/mv +removed /man/1/rm +removed /man/1/session +removed /man/1/sh-std +removed /man/1/tiny +removed /man/1/uniq +removed /man/10/print +removed /man/10/styxserver +removed /man/2/dbm +removed /man/2/diskblocks +removed /man/2/registries +removed /man/2/sets +removed /man/2/sh +removed /man/2/styxservers +removed /man/2/sys-fd2path +removed /man/2/sys-print +removed /man/2/timers +removed /man/3/cap +removed /man/3/flash +removed /man/3/fs +removed /man/3/ip +removed /man/3/srv +removed /man/3/srv9 +removed /man/4/9srvfs +removed /man/4/cpu +removed /man/4/dbfs +removed /man/4/logfile +removed /man/4/registry +removed /man/5/clunk +removed /man/5/open +removed /man/8/cs +removed /man/8/mkfs +removed /man/9/bind +removed /man/9/grid +removed /man/9/text +removes /man/1/blur +removes /man/1/cleanname +removes /man/1/mash +removes /man/1/mash-tk +removes /man/1/mv +removes /man/1/rm +removes /man/1/sh-alphabet +removes /man/1/tiny +removes /man/1/tktester +removes /man/10/intrenable +removes /man/10/kstrip +removes /man/10/qio +removes /man/10/styxserver +removes /man/2/dhcpclient +removes /man/2/hash +removes /man/2/sh +removes /man/2/spree +removes /man/2/string +removes /man/2/sys-remove +removes /man/3/cons +removes /man/3/flash +removes /man/3/ftl +removes /man/3/ip +removes /man/3/logfs +removes /man/3/srv +removes /man/9/grid +removes /man/9/pack +removes /man/9/text +removesbuiltin /man/2/sh +removing /man/1/rm +removing /man/3/env +removing /man/4/dbfs +removing /man/4/registry +removing /man/5/remove +rename /man/2/styxpersist +rename /man/4/ftpfs +rename /man/4/keyfs +rename /man/8/kfscmd +renamed /man/1/mv +renamed /man/1/ns +renamed /man/1/pwd +renamed /man/2/palmfile +renamed /man/2/sys-fd2path +renames /man/3/logfs +renaming /man/1/tktester +renamings /man/10/acid +render /man/1/alphabet-abc +render /man/1/alphabet-grid +render /man/3/draw +render /man/9/image +rendered /man/2/pslib +rendered /man/9/canvas +rendering /man/1/alphabet-abc +rendering /man/1/alphabet-grid +rendering /man/2/imagefile +rendering /man/9/image +rendez /man/10/sleep +rendezvous /man/10/sleep +rendezvous /man/3/dbg +renegotiation /man/3/tls +renew /man/2/dhcpclient +renewed /man/8/dhcp +renews /man/8/dhcp +renumber /man/2/pop3 +reopen /man/3/eia +reopened /man/10/qio +reopened /man/3/ip +reopened /man/3/usb +rep /man/1/fc +rep /man/1/sh-expr +rep /man/6/regexp +repaint /man/2/draw-screen +repainted /man/3/draw +repaired /man/1/acme +repaired /man/3/logfs +reparsed /man/1/sh +repeat /man/1/itest +repeat /man/10/kbdputc +repeat /man/2/sys-0intro +repeat /man/6/keyboard +repeated /man/1/mdb +repeated /man/1/tr +repeated /man/1/uniq +repeated /man/1/xd +repeated /man/10/acid +repeated /man/10/kbdputc +repeated /man/2/ida +repeated /man/2/prof +repeated /man/6/keyboard +repeated /man/8/prep +repeated /man/8/touchcal +repeatedly /man/1/acme +repeatedly /man/1/fc +repeatedly /man/1/mash +repeatedly /man/1/netkey +repeatedly /man/1/sh-std +repeatedly /man/10/2l +repeatedly /man/10/acid +repeatedly /man/10/lock +repeatedly /man/2/crc +repeatedly /man/2/keyring-crypt +repeatedly /man/2/styxpersist +repeatedly /man/3/touch +repeating /man/3/ip +repeats /man/1/sh-expr +repeats /man/2/dhcpclient +repeats /man/9/scale +repeats /man/9/scrollbar +repetition /man/2/alphabet-intro +repetitions /man/1/mdb +repl /man/2/draw-display +repl /man/2/draw-image +repl /man/3/draw +replace /man/1/acme +replace /man/1/bind +replace /man/1/brutus +replace /man/1/secstore +replace /man/1/tr +replace /man/10/iar +replace /man/2/dbm +replace /man/2/sys-0intro +replace /man/2/sys-bind +replace /man/2/tkclient +replace /man/2/wmclient +replace /man/2/wmlib +replace /man/3/draw +replace /man/3/ip +replace /man/4/archfs +replace /man/4/dossrv +replace /man/4/factotum +replace /man/4/tarfs +replace /man/6/sexprs +replace /man/9/canvas +replaceable /man/10/acid +replaced /man/1/charon +replaced /man/1/gzip +replaced /man/1/mash +replaced /man/1/mc +replaced /man/1/mk +replaced /man/1/sh +replaced /man/1/wm-sh +replaced /man/10/c2l +replaced /man/10/mk +replaced /man/10/print +replaced /man/2/asn1 +replaced /man/2/ip +replaced /man/2/keyring-getmsg +replaced /man/2/math-0intro +replaced /man/2/sh +replaced /man/2/sys-dial +replaced /man/2/sys-print +replaced /man/3/kprof +replaced /man/6/plumbing +replaced /man/6/proto +replaced /man/6/sbl +replaced /man/6/sexprs +replaced /man/9/bind +replaced /man/9/image +replaced /man/9/send +replacement /man/1/acme +replacement /man/9/bind +replaces /man/1/acme +replaces /man/1/brutus +replaces /man/1/wm-sh +replaces /man/1/yacc +replaces /man/2/draw-image +replaces /man/2/styxservers +replaces /man/4/acme +replaces /man/4/import +replaces /man/4/keysrv +replaces /man/5/error +replaces /man/6/image +replaces /man/8/cs +replaces /man/8/srv +replaces /man/9/bind +replacing /man/1/acme +replacing /man/1/gzip +replacing /man/2/0intro +replacing /man/6/ubfa +replacing /man/8/mangaload +replacing /man/9/bind +replacing /man/9/canvas +replacing /man/9/text +replay /man/1/itest +replay /man/2/security-0intro +replay /man/6/login +replayed /man/1/itest +replayed /man/3/logfs +replays /man/1/itest +replenishes /man/2/bufio +replica /man/1/dmview +replica /man/8/applylog +replicas /man/8/applylog +replicate /man/1/secstore +replicate /man/2/draw-image +replicate /man/2/drawmux +replicate /man/3/draw +replicated /man/2/draw-0intro +replicated /man/2/draw-display +replicated /man/2/draw-image +replicated /man/2/drawmux +replicated /man/2/mpeg +replicated /man/2/prefab-style +replicated /man/8/collabsrv +replicated /man/9/panel +replicating /man/2/draw-image +replicating /man/6/colour +replication /man/2/draw-0intro +replication /man/2/draw-image +replied /man/1/sh-file2chan +replied /man/5/0intro +replies /man/1/sh-file2chan +replies /man/2/bufio-chanfill +replies /man/2/styx +replies /man/2/styxservers +replies /man/2/sys-export +replies /man/2/wmsrv +replies /man/3/ip +replies /man/3/mnt +replies /man/3/usb +replies /man/4/factotum +replies /man/5/0intro +replies /man/8/bootpd +replies /man/8/rip +replies /man/8/virgild +reply /man/1/acme +reply /man/1/sh-file2chan +reply /man/2/dhcpclient +reply /man/2/draw-context +reply /man/2/filter +reply /man/2/styx +reply /man/2/styxservers +reply /man/2/sys-file2chan +reply /man/2/virgil +reply /man/2/wmsrv +reply /man/3/dbg +reply /man/3/ip +reply /man/3/mnt +reply /man/3/srv +reply /man/3/usb +reply /man/4/factotum +reply /man/4/palmsrv +reply /man/5/0intro +reply /man/5/error +reply /man/5/open +reply /man/5/read +reply /man/5/stat +reply /man/5/version +reply /man/8/bootpd +reply /man/8/dhcp +reply /man/8/ping +reply /man/8/rdbgsrv +reply /man/8/sntp +report /man/1/date +report /man/1/gzip +report /man/1/limbo +report /man/1/sh-test +report /man/1/uniq +report /man/1/webgrab +report /man/1/yacc +report /man/2/alphabet-intro +report /man/2/disks +report /man/2/imagefile +report /man/2/itslib +report /man/2/sys-stat +report /man/3/draw +report /man/3/eia +report /man/3/ip +report /man/4/iostats +report /man/8/kfscmd +report.start /man/2/alphabet-intro +reported /man/1/emu +reported /man/1/mash +reported /man/1/plumb +reported /man/1/ps +reported /man/1/sh +reported /man/1/sh-test +reported /man/1/timestamp +reported /man/1/tktester +reported /man/10/acid +reported /man/2/xml +reported /man/3/fs +reported /man/4/acme +reported /man/8/signer +reported /man/9/bind +reported /man/9/grab +reporting /man/1/math-misc +reporting /man/1/sh-test +reporting /man/2/itslib +reporting /man/2/sys-werrstr +reporting /man/3/draw +reporting /man/4/acme +reports /man/1/dd +reports /man/1/mk +reports /man/1/mux +reports /man/1/strings +reports /man/1/time +reports /man/10/mk +reports /man/10/styx +reports /man/2/alphabet-intro +reports /man/3/cons +reports /man/4/iostats +reports /man/5/read +repository /man/8/register +repository /man/8/signer +represent /man/1/acme +represent /man/1/fs +represent /man/1/ls +represent /man/1/tsort +represent /man/10/a.out +represent /man/10/lock +represent /man/10/newchan +represent /man/10/rune +represent /man/2/asn1 +represent /man/2/debug +represent /man/2/disks +represent /man/2/draw-display +represent /man/2/draw-font +represent /man/2/draw-pointer +represent /man/2/ida +represent /man/2/prefab-element +represent /man/2/registries +represent /man/2/scsiio +represent /man/2/sexprs +represent /man/2/sh +represent /man/2/styx +represent /man/2/styxservers +represent /man/2/sys-0intro +represent /man/2/ubfa +represent /man/2/venti +represent /man/2/w3c-css +represent /man/2/w3c-xpointers +represent /man/4/registry +represent /man/5/open +represent /man/5/walk +represent /man/6/colour +represent /man/6/font +represent /man/6/sbl +represent /man/6/ubfa +represent /man/6/utf +represent /man/8/collabsrv +represent /man/8/cs +represent /man/8/styxchat +represent /man/9/text +representating /man/2/sexprs +representation /man/1/alphabet-main +representation /man/1/sh-sexprs +representation /man/1/uuencode +representation /man/10/atoi +representation /man/10/dev +representation /man/10/readnum +representation /man/10/styx +representation /man/2/asn1 +representation /man/2/debug +representation /man/2/dis +representation /man/2/disks +representation /man/2/draw-0intro +representation /man/2/draw-display +representation /man/2/ether +representation /man/2/format +representation /man/2/imagefile +representation /man/2/ip +representation /man/2/keyring-auth +representation /man/2/keyring-certtostr +representation /man/2/keyring-ipint +representation /man/2/keyring-rc4 +representation /man/2/keyset +representation /man/2/math-export +representation /man/2/palmfile +representation /man/2/sexprs +representation /man/2/spki +representation /man/2/spree-allow +representation /man/2/spree-cardlib +representation /man/2/styx +representation /man/2/styxservers +representation /man/2/sys-0intro +representation /man/2/ubfa +representation /man/2/w3c-xpointers +representation /man/2/workdir +representation /man/3/cons +representation /man/3/prog +representation /man/3/sign +representation /man/4/kfs +representation /man/6/colour +representation /man/6/dis +representation /man/6/utf +representation /man/8/collabsrv +representation /man/8/styxchat +representations /man/1/math-misc +representations /man/1/unicode +representations /man/10/kbdputc +representations /man/10/styx +representations /man/2/math-export +representations /man/2/plumbmsg +representations /man/2/ubfa +representations /man/6/sexprs +representative /man/10/plan9.ini +representative /man/10/print +representaton /man/2/sets +representing /man/1/acme +representing /man/1/cp +representing /man/1/fc +representing /man/1/ls +representing /man/1/sh-csv +representing /man/1/sort +representing /man/1/toolbar +representing /man/1/xd +representing /man/10/dev +representing /man/10/devattach +representing /man/10/dynld +representing /man/10/odbc +representing /man/10/splhi +representing /man/2/alphabet-intro +representing /man/2/asn1 +representing /man/2/attrdb +representing /man/2/bloomfilter +representing /man/2/debug +representing /man/2/dhcpclient +representing /man/2/dict +representing /man/2/dis +representing /man/2/draw-display +representing /man/2/draw-screen +representing /man/2/drawmux +representing /man/2/encoding +representing /man/2/ida +representing /man/2/imagefile +representing /man/2/ip +representing /man/2/ir +representing /man/2/keyring-0intro +representing /man/2/keyring-certtostr +representing /man/2/keyring-ipint +representing /man/2/plumbmsg +representing /man/2/prefab-element +representing /man/2/registries +representing /man/2/secstore +representing /man/2/sets +representing /man/2/sexprs +representing /man/2/spki +representing /man/2/spree-cardlib +representing /man/2/styxservers +representing /man/2/sys-dial +representing /man/2/sys-file2chan +representing /man/2/sys-fversion +representing /man/2/sys-pipe +representing /man/2/sys-utfbytes +representing /man/2/w3c-css +representing /man/2/w3c-xpointers +representing /man/3/0intro +representing /man/3/boot +representing /man/3/cons +representing /man/3/dbg +representing /man/3/ether +representing /man/3/flash +representing /man/3/ip +representing /man/3/lpt +representing /man/3/plap +representing /man/3/pnp +representing /man/3/prof +representing /man/3/prog +representing /man/3/ssl +representing /man/3/switch +representing /man/4/archfs +representing /man/4/keyfs +representing /man/5/stat +representing /man/6/colour +representing /man/6/dis +representing /man/6/sbl +representing /man/6/ubfa +representing /man/8/applylog +representing /man/8/rdbgsrv +representing /man/8/styxchat +representing /man/9/bind +representing /man/9/types +represents /man/1/acme +represents /man/1/alphabet-abc +represents /man/1/alphabet-grid +represents /man/1/collab-clients +represents /man/1/ftest +represents /man/1/sh-tk +represents /man/1/tsort +represents /man/10/2c +represents /man/10/2l +represents /man/10/a.out +represents /man/10/conf +represents /man/10/dev +represents /man/10/devattach +represents /man/10/dynld +represents /man/10/newchan +represents /man/10/qlock +represents /man/10/styxserver +represents /man/2/asn1 +represents /man/2/attrdb +represents /man/2/convcs +represents /man/2/debug +represents /man/2/dis +represents /man/2/disks +represents /man/2/draw-0intro +represents /man/2/draw-display +represents /man/2/format +represents /man/2/ip +represents /man/2/keyring-auth +represents /man/2/keyring-ipint +represents /man/2/palmfile +represents /man/2/readdir +represents /man/2/registries +represents /man/2/sexprs +represents /man/2/sh +represents /man/2/spki +represents /man/2/spki-verifier +represents /man/2/spree +represents /man/2/spree-cardlib +represents /man/2/styxservers +represents /man/2/sys-fversion +represents /man/2/translate +represents /man/2/ubfa +represents /man/2/venti +represents /man/2/w3c-css +represents /man/2/w3c-xpointers +represents /man/2/wmsrv +represents /man/2/xml +represents /man/3/audio +represents /man/3/cmd +represents /man/3/eia +represents /man/3/flash +represents /man/3/fs +represents /man/3/ip +represents /man/3/logfs +represents /man/3/ssl +represents /man/4/factotum +represents /man/5/0intro +represents /man/5/walk +represents /man/6/auth +represents /man/6/colour +represents /man/6/keytext +represents /man/6/sexprs +represents /man/6/ubfa +represents /man/6/utf +represents /man/8/collabsrv +represents /man/8/rdbgsrv +represents /man/8/styxchat +represents /man/9/bind +represents /man/9/grid +represents /man/9/text +reproduced /man/2/sexprs +reproduced /man/5/0intro +reproduced /man/6/sexprs +reproduction /man/1/man +reprogrammed /man/3/vid +reprogramming /man/3/flash +reprograms /man/3/flash +republicca /man/6/translate +reqid /man/1/wm +reqid /man/2/tk +request /man/1/alphabet-main +request /man/1/dmview +request /man/1/emu +request /man/1/keyboard +request /man/1/listen +request /man/1/sh-file2chan +request /man/1/sh-tk +request /man/1/spree-join +request /man/1/wm +request /man/1/wm-sh +request /man/10/dev +request /man/10/devattach +request /man/10/dmainit +request /man/10/kproc +request /man/10/styxserver +request /man/2/alphabet-intro +request /man/2/bufio-chanfill +request /man/2/dhcpclient +request /man/2/dis +request /man/2/draw-context +request /man/2/draw-font +request /man/2/filter +request /man/2/format +request /man/2/scsiio +request /man/2/spki +request /man/2/spree +request /man/2/spree-gather +request /man/2/styxpersist +request /man/2/styxservers +request /man/2/sys-0intro +request /man/2/sys-file2chan +request /man/2/sys-fversion +request /man/2/timers +request /man/2/tk +request /man/2/tkclient +request /man/2/virgil +request /man/2/wmclient +request /man/2/wmlib +request /man/2/wmsrv +request /man/2/xml +request /man/3/cmd +request /man/3/dbg +request /man/3/ftl +request /man/3/gpio +request /man/3/i2c +request /man/3/ip +request /man/3/sign +request /man/3/usb +request /man/4/factotum +request /man/4/palmsrv +request /man/4/spree +request /man/5/0intro +request /man/5/clunk +request /man/5/error +request /man/5/flush +request /man/5/open +request /man/5/read +request /man/5/remove +request /man/5/stat +request /man/5/version +request /man/5/walk +request /man/6/man +request /man/6/ndb +request /man/7/db +request /man/7/dbsrv +request /man/8/bootpd +request /man/8/collabsrv +request /man/8/cs +request /man/8/dhcp +request /man/8/getauthinfo +request /man/8/ping +request /man/8/rstyxd +request /man/8/virgild +request /man/9/canvas +request /man/9/frame +request /man/9/grid +request /man/9/options +requested /man/1/charon +requested /man/1/sh-file2chan +requested /man/1/wm +requested /man/10/dynld +requested /man/10/qio +requested /man/10/qlock +requested /man/10/readnum +requested /man/2/asn1 +requested /man/2/convcs +requested /man/2/dhcpclient +requested /man/2/prefab-compound +requested /man/2/prefab-element +requested /man/2/security-auth +requested /man/2/spree-cardlib +requested /man/2/styxservers +requested /man/2/sys-bind +requested /man/2/sys-open +requested /man/2/sys-read +requested /man/2/sys-sleep +requested /man/2/tk +requested /man/2/wmclient +requested /man/3/cons +requested /man/3/dbg +requested /man/5/0intro +requested /man/5/attach +requested /man/5/read +requested /man/5/walk +requested /man/7/db +requested /man/8/bootpd +requested /man/8/collabsrv +requested /man/8/httpd +requested /man/8/signer +requested /man/9/bind +requested /man/9/grid +requested /man/9/pack +requested /man/9/text +requesting /man/10/qlock +requesting /man/2/styxservers +requesting /man/6/keys +requesting /man/8/bootpd +requesting /man/8/signer +requesting /man/8/virgild +requests /man/1/dmview +requests /man/1/miniterm +requests /man/1/sh-file2chan +requests /man/1/sh-tk +requests /man/1/wm +requests /man/1/wm-misc +requests /man/1/zeros +requests /man/10/2c +requests /man/10/dev +requests /man/10/devattach +requests /man/10/qio +requests /man/2/diskblocks +requests /man/2/draw-context +requests /man/2/draw-image +requests /man/2/draw-screen +requests /man/2/drawmux +requests /man/2/filter +requests /man/2/spree +requests /man/2/spree-cardlib +requests /man/2/styx +requests /man/2/styxservers +requests /man/2/sys-export +requests /man/2/sys-fversion +requests /man/2/timers +requests /man/2/tk +requests /man/2/tkclient +requests /man/2/wmclient +requests /man/2/wmsrv +requests /man/3/arch +requests /man/3/cmd +requests /man/3/dbg +requests /man/3/draw +requests /man/3/fpga +requests /man/3/gpio +requests /man/3/i2c +requests /man/3/ip +requests /man/3/logfs +requests /man/3/srv9 +requests /man/3/usb +requests /man/4/factotum +requests /man/4/ramfile +requests /man/5/0intro +requests /man/5/version +requests /man/6/man +requests /man/7/db +requests /man/7/dbsrv +requests /man/8/applylog +requests /man/8/bootpd +requests /man/8/collabsrv +requests /man/8/cs +requests /man/8/dhcp +requests /man/8/getauthinfo +requests /man/8/httpd +requests /man/8/logind +requests /man/8/ping +requests /man/8/plumber +requests /man/8/rip +requests /man/8/signer +requests /man/8/sntp +requests /man/8/virgild +requests /man/9/canvas +requests /man/9/scrollbar +requests /man/9/text +require /man/1/session +require /man/1/tktester +require /man/10/plan9.ini +require /man/2/0intro +require /man/2/factotum +require /man/2/keyring-0intro +require /man/2/palmfile +require /man/2/security-0intro +require /man/2/sys-fauth +require /man/2/sys-open +require /man/3/vga +require /man/5/attach +require /man/6/colour +require /man/6/keytext +required /man/1/0intro +required /man/1/acme +required /man/1/grid-ns +required /man/1/itest +required /man/1/miniterm +required /man/1/mprof +required /man/1/prof +required /man/1/session +required /man/1/sh +required /man/1/sh-expr +required /man/1/sh-string +required /man/1/tktester +required /man/1/wm-misc +required /man/1/yacc +required /man/10/9load +required /man/10/c2l +required /man/10/conf +required /man/10/devattach +required /man/10/dmainit +required /man/10/dynld +required /man/10/iar +required /man/10/intrenable +required /man/10/print +required /man/10/qio +required /man/10/rune +required /man/10/styx +required /man/10/styxserver +required /man/2/alphabet-intro +required /man/2/asn1 +required /man/2/dhcpclient +required /man/2/disks +required /man/2/encoding +required /man/2/factotum +required /man/2/filter-slip +required /man/2/geodesy +required /man/2/ida +required /man/2/keyring-crypt +required /man/2/keyring-ipint +required /man/2/palmfile +required /man/2/print +required /man/2/prof +required /man/2/registries +required /man/2/sexprs +required /man/2/styx +required /man/2/styxconv +required /man/2/styxservers +required /man/2/sys-print +required /man/2/tk +required /man/2/tkclient +required /man/2/w3c-css +required /man/2/wmclient +required /man/3/env +required /man/3/flash +required /man/3/fpga +required /man/3/ip +required /man/3/pbus +required /man/3/root +required /man/3/usb +required /man/4/cpu +required /man/4/export +required /man/4/factotum +required /man/4/kfs +required /man/4/lockfs +required /man/5/attach +required /man/5/version +required /man/7/db +required /man/8/cs +required /man/8/styxchat +required /man/9/0intro +required /man/9/1copyright +required /man/9/listbox +required /man/9/types +requirement /man/1/blur +requirement /man/1/sh-tk +requirement /man/2/security-0intro +requirement /man/2/spree-gather +requirement /man/8/changelogin +requirements /man/1/sh-alphabet +requirements /man/8/svc +requires /man/1/0intro +requires /man/1/logon +requires /man/1/mash +requires /man/1/mkdir +requires /man/1/mv +requires /man/1/ps +requires /man/1/rm +requires /man/1/sh +requires /man/1/sh-alphabet +requires /man/1/sh-tk +requires /man/1/tiny +requires /man/10/2c +requires /man/10/devattach +requires /man/10/kstrip +requires /man/10/ntsrv +requires /man/2/alphabet-intro +requires /man/2/draw-image +requires /man/2/factotum +requires /man/2/keyring-0intro +requires /man/2/secstore +requires /man/2/security-0intro +requires /man/2/styxconv +requires /man/2/sys-bind +requires /man/2/sys-open +requires /man/2/sys-pipe +requires /man/2/w3c-css +requires /man/3/dbg +requires /man/3/pbus +requires /man/3/usb +requires /man/3/vid +requires /man/4/factotum +requires /man/4/import +requires /man/5/open +requires /man/5/stat +requires /man/6/colour +requires /man/6/image +requires /man/8/virgild +requiring /man/10/allocb +requiring /man/10/error +requiring /man/2/draw-image +requiring /man/2/security-0intro +requiring /man/2/sys-fauth +requiring /man/3/flash +requiring /man/3/logfs +requiring /man/4/keysrv +requiring /man/8/cs +requoted /man/3/cmd +reread /man/2/bufio +reread /man/3/cons +reread /man/6/ndb +rereading /man/2/draw-font +rereads /man/8/bootpd +rerouting /man/3/ip +rerr /man/3/dbg +rerror /man/1/sh-file2chan +rerror /man/10/styx +rerror /man/5/0intro +rerror /man/5/attach +rerror /man/5/error +rerror /man/5/flush +rerror /man/5/version +rerror /man/5/walk +rerror /man/8/styxchat +rerun /man/1/acme +rescale /man/9/canvas +reschedule /man/10/kproc +reschedule /man/10/lock +rescheduled /man/10/lock +reschedules /man/10/lock +rescue /man/1/mash +rescue /man/1/sh +rescue /man/1/sh-std +rescueblock /man/1/sh-std +rescued /man/1/sh +research /man/1/yacc +research /man/3/indir +resemblance /man/2/disks +resemble /man/1/diff +resemble /man/3/usb +resembling /man/1/mash +reserve /man/10/allocb +reserve /man/10/odbc +reserve /man/10/styx +reserve /man/8/ftl +reserved /man/10/dev +reserved /man/10/devattach +reserved /man/10/plan9.ini +reserved /man/6/dis +reserved /man/8/prep +reserves /man/10/odbc +reserves /man/2/dhcpclient +reserves /man/3/cmd +reserves /man/3/ip +reserves /man/3/ssl +reserves /man/3/tls +reset /man/1/chmod +reset /man/1/mash-make +reset /man/10/9load +reset /man/10/conf +reset /man/10/dev +reset /man/10/devattach +reset /man/10/intrenable +reset /man/10/plan9.ini +reset /man/10/qio +reset /man/2/crc +reset /man/2/palmfile +reset /man/2/sh +reset /man/2/spree-objstore +reset /man/3/audio +reset /man/3/cons +reset /man/3/dbg +reset /man/3/floppy +reset /man/3/fpga +reset /man/3/ftl +reset /man/3/ip +reset /man/3/pbus +reset /man/3/pnp +reset /man/3/tv +reset /man/3/usb +reset /man/4/kfs +reset /man/6/man +reset /man/8/cs +reset /man/8/touchcal +reset /man/9/canvas +reset /man/9/menu +reset /man/9/options +resets /man/10/plan9.ini +resets /man/10/qio +resets /man/2/sys-millisec +resets /man/3/usb +resets /man/4/keyfs +resets /man/9/variable +resetting /man/10/error +reshape /man/1/wm +reshape /man/2/tk +reshape /man/2/wmclient +reshaped /man/1/keyboard +reside /man/1/acme +reside /man/10/9load +reside /man/2/draw-context +reside /man/3/root +resident /man/1/charon +resident /man/10/5cv +resident /man/2/sys-0intro +resides /man/1/charon +resides /man/10/9load +resides /man/2/draw-0intro +resides /man/2/draw-font +resides /man/2/draw-image +resides /man/2/draw-screen +resides /man/2/sys-stat +resize /man/1/charon +resize /man/1/ftree +resize /man/1/sh-tk +resize /man/1/wm +resize /man/2/tkclient +resize /man/2/wmclient +resized /man/2/wmlib +resizing /man/2/draw-context +resolution /man/10/2c +resolution /man/2/print +resolution /man/2/srv +resolution /man/2/sys-millisec +resolution /man/2/virgil +resolution /man/3/ip +resolution /man/4/iostats +resolution /man/6/colour +resolution /man/9/scale +resolve /man/10/2l +resolve /man/3/pnp +resolve /man/8/applylog +resolved /man/1/alphabet-fs +resolved /man/1/fs +resolved /man/2/virgil +resolver /man/2/virgil +resolver /man/6/ndb +resolver /man/8/dns +resolvers /man/6/ndb +resolvers /man/8/dns +resolves /man/2/draw-image +resolves /man/3/draw +resolves /man/8/prep +resolving /man/1/tiny +resolving /man/6/ndb +resorting /man/8/dns +resource /man/1/charon +resource /man/1/grid-monitor +resource /man/1/grid-ns +resource /man/1/grid-query +resource /man/1/grid-register +resource /man/1/session +resource /man/10/error +resource /man/10/kproc +resource /man/10/lock +resource /man/10/qlock +resource /man/2/palmfile +resource /man/2/sys-pctl +resource /man/3/draw +resource /man/4/cpu +resources /man/1/0intro +resources /man/1/charon +resources /man/1/collab +resources /man/1/collab-clients +resources /man/1/grid-monitor +resources /man/1/grid-query +resources /man/1/kill +resources /man/1/session +resources /man/10/error +resources /man/10/kproc +resources /man/10/lock +resources /man/10/qlock +resources /man/2/draw-image +resources /man/2/palmfile +resources /man/2/sys-fauth +resources /man/2/sys-pctl +resources /man/3/draw +resources /man/3/pnp +resources /man/3/vga +resources /man/4/registry +respect /man/1/cp +respect /man/1/mk +respect /man/10/mk +respect /man/2/draw-display +respect /man/2/format +respect /man/2/tkclient +respect /man/2/wmclient +respect /man/8/create +respect /man/9/panel +respect /man/9/text +respectable /man/10/5cv +respective /man/1/sh +respective /man/1/wm-misc +respective /man/1/wm-sh +respective /man/2/tkclient +respects /man/1/mk +respects /man/1/yacc +respects /man/10/mk +respond /man/2/dhcpclient +respond /man/2/styxservers +respond /man/2/tk +respond /man/3/usb +respond /man/5/0intro +respond /man/5/flush +respond /man/5/version +responded /man/1/sh-tk +responded /man/2/styxservers +responded /man/5/flush +responding /man/2/tk +responds /man/2/scsiio +responds /man/2/spree +responds /man/2/styxservers +responds /man/3/ip +responds /man/3/usb +responds /man/5/0intro +responds /man/5/version +responds /man/8/bootpd +responds /man/8/getauthinfo +response /man/1/netkey +response /man/1/wm +response /man/10/9load +response /man/10/plan9.ini +response /man/10/xalloc +response /man/2/factotum +response /man/2/spree +response /man/2/styxservers +response /man/2/sys-file2chan +response /man/2/wmsrv +response /man/3/draw +response /man/3/ip +response /man/3/usb +response /man/5/0intro +response /man/5/flush +response /man/5/version +response /man/6/colour +response /man/8/plumber +response /man/8/rstyxd +response /man/8/signer +response /man/8/virgild +response /man/9/text +responses /man/2/tk +responses /man/3/usb +responses /man/5/0intro +responsibility /man/10/dynld +responsibility /man/10/print +responsibility /man/2/sys-stat +responsibilty /man/3/prog +responsible /man/10/intrenable +responsible /man/10/kbdputc +responsible /man/10/parsecmd +responsible /man/2/alphabet-intro +responsible /man/2/spree +responsible /man/2/sys-stat +responsible /man/3/tls +responsible /man/3/vid +responsive /man/9/button +responsive /man/9/checkbutton +responsive /man/9/menu +responsive /man/9/menubutton +responsive /man/9/radiobutton +rest /man/1/lc +rest /man/1/mux +rest /man/1/p +rest /man/1/sh-tk +rest /man/2/arg +rest /man/2/filter-deflate +rest /man/2/prefab-element +rest /man/2/sets +rest /man/2/sexprs +rest /man/2/sh +rest /man/2/spree +rest /man/2/xml +rest /man/3/cons +rest /man/3/sd +rest /man/4/archfs +rest /man/4/registry +rest /man/5/walk +rest /man/6/attrdb +rest /man/6/colour +rest /man/6/image +rest /man/6/sbl +rest /man/9/0intro +rest /man/9/grid +restart /man/10/qio +restart /man/2/spree +restarted /man/3/dbg +restarted /man/4/factotum +restarted /man/8/shutdown +restarts /man/3/kprof +restarts /man/8/shutdown +restore /man/1/acme +restore /man/2/math-fp +restore /man/3/touch +restore /man/6/dis +restore /man/6/man +restore /man/6/ubfa +restore /man/8/prep +restored /man/1/sh +restored /man/1/sh-std +restored /man/10/lock +restored /man/10/qio +restored /man/2/spree-cardlib +restored /man/2/spree-gather +restored /man/2/spree-objstore +restored /man/3/touch +restored /man/9/button +restores /man/10/splhi +restores /man/2/draw-image +restores /man/2/prefab-compound +restores /man/3/flash +restores /man/8/mkfs +restoring /man/2/spree-allow +restoring /man/2/spree-objstore +restrict /man/1/cprof +restrict /man/1/mprof +restrict /man/1/prof +restrict /man/8/styxmon +restricted /man/1/0intro +restricted /man/1/acme +restricted /man/10/qio +restricted /man/2/draw-image +restricted /man/2/ip +restricted /man/2/security-0intro +restricted /man/2/sexprs +restricted /man/3/ip +restricted /man/3/prog +restricted /man/3/sign +restricted /man/5/0intro +restricted /man/6/sexprs +restricted /man/8/applylog +restricted /man/8/bootpd +restricted /man/8/rip +restricted /man/9/1copyright +restricting /man/4/factotum +restriction /man/2/asn1 +restriction /man/2/spki +restriction /man/2/sys-self +restriction /man/5/0intro +restriction /man/5/walk +restriction /man/6/sexprs +restrictions /man/1/mk +restrictions /man/1/sh +restrictions /man/10/dmainit +restrictions /man/10/intrenable +restrictions /man/10/mk +restrictions /man/10/xalloc +restrictions /man/2/draw-display +restrictions /man/2/security-0intro +restrictions /man/3/flash +restrictions /man/3/ftl +restrictions /man/4/logfile +restrictions /man/5/walk +restrictions /man/9/pack +restricts /man/1/charon +restricts /man/10/2l +restricts /man/10/plan9.ini +restricts /man/10/srclist +restricts /man/2/prefab-compound +restricts /man/4/acme +restricts /man/9/grab +resultant /man/2/asn1 +resultant /man/9/image +resulted /man/2/wait +resulting /man/1/acme +resulting /man/1/alphabet-abc +resulting /man/1/alphabet-fs +resulting /man/1/alphabet-grid +resulting /man/1/alphabet-main +resulting /man/1/collab +resulting /man/1/cook +resulting /man/1/emu +resulting /man/1/fs +resulting /man/1/plumb +resulting /man/1/wm +resulting /man/10/allocb +resulting /man/10/c2l +resulting /man/10/conf +resulting /man/10/devattach +resulting /man/10/dynld +resulting /man/10/odbc +resulting /man/10/parsecmd +resulting /man/10/print +resulting /man/10/styx +resulting /man/2/0intro +resulting /man/2/alphabet-intro +resulting /man/2/asn1 +resulting /man/2/bufio +resulting /man/2/diskblocks +resulting /man/2/disks +resulting /man/2/draw-image +resulting /man/2/draw-rect +resulting /man/2/filter-slip +resulting /man/2/keyring-certtostr +resulting /man/2/popup +resulting /man/2/prefab-compound +resulting /man/2/prefab-element +resulting /man/2/pslib +resulting /man/2/readdir +resulting /man/2/scsiio +resulting /man/2/secstore +resulting /man/2/security-ssl +resulting /man/2/string +resulting /man/2/styx +resulting /man/2/styxpersist +resulting /man/2/sys-byte2char +resulting /man/2/sys-dial +resulting /man/2/sys-dirread +resulting /man/2/sys-fd2path +resulting /man/2/sys-tokenize +resulting /man/2/tk +resulting /man/2/wait +resulting /man/2/xml +resulting /man/3/i2c +resulting /man/3/indir +resulting /man/3/ip +resulting /man/3/srv9 +resulting /man/3/ssl +resulting /man/4/keysrv +resulting /man/4/registry +resulting /man/5/0intro +resulting /man/6/plumbing +resulting /man/6/proto +resulting /man/6/sexprs +resulting /man/8/applylog +resulting /man/8/collabsrv +resulting /man/8/cs +resulting /man/8/dhcp +resulting /man/9/0intro +resulting /man/9/canvas +results /man/1/0intro +results /man/1/blur +results /man/1/charon +results /man/1/cmp +results /man/1/collab-clients +results /man/1/cook +results /man/1/cprof +results /man/1/deb +results /man/1/emu +results /man/1/itest +results /man/1/mathcalc +results /man/1/mc +results /man/1/miniterm +results /man/1/os +results /man/10/allocb +results /man/10/odbc +results /man/10/print +results /man/2/dhcpclient +results /man/2/dis +results /man/2/draw-rect +results /man/2/itslib +results /man/2/prefab-style +results /man/2/prof +results /man/2/srv +results /man/2/sys-0intro +results /man/2/sys-print +results /man/2/sys-utfbytes +results /man/3/cons +results /man/3/dup +results /man/3/ftl +results /man/3/ip +results /man/3/mpeg +results /man/3/touch +results /man/5/walk +results /man/6/colour +results /man/6/image +results /man/7/db +results /man/8/cs +results /man/8/dhcp +results /man/8/dns +results /man/9/canvas +results /man/9/pack +resume /man/6/sexprs +resumed /man/1/strings +resumes /man/1/deb +resumption /man/2/spree-gather +resx /man/2/print +resy /man/2/print +retain /man/2/dhcpclient +retain /man/9/grid +retain /man/9/pack +retained /man/9/1copyright +retained /man/9/text +retaining /man/9/text +retransmission /man/10/allocb +retransmission /man/10/qio +retransmissions /man/2/keyring-rc4 +retransmitted /man/3/ip +retransmitting /man/2/virgil +retried /man/1/mash +retries /man/10/malloc +retries /man/8/dhcp +retrievable /man/2/spree-objstore +retrieval /man/1/charon +retrieval /man/2/spree-objstore +retrieve /man/1/charon +retrieve /man/1/secstore +retrieve /man/1/sh-file2chan +retrieve /man/10/devattach +retrieve /man/10/odbc +retrieve /man/10/styx +retrieve /man/2/filter-slip +retrieve /man/2/spree-objstore +retrieve /man/2/sys-stat +retrieve /man/2/tkclient +retrieve /man/2/venti +retrieve /man/2/wmclient +retrieve /man/2/wmlib +retrieve /man/3/dbg +retrieve /man/3/sd +retrieve /man/4/factotum +retrieve /man/4/palmsrv +retrieve /man/8/dns +retrieved /man/1/alphabet-fs +retrieved /man/1/fs +retrieved /man/2/dhcpclient +retrieved /man/2/draw-image +retrieved /man/2/sh +retrieved /man/2/spree-cardlib +retrieved /man/2/sys-0intro +retrieved /man/3/prog +retrieved /man/4/factotum +retrieved /man/8/kfscmd +retrieved /man/9/listbox +retrieves /man/1/mash-tk +retrieves /man/1/sh-file2chan +retrieves /man/2/palmfile +retrieves /man/2/secstore +retrieves /man/2/sh +retrieves /man/5/0intro +retrieving /man/2/spree +retry /man/4/factotum +retry /man/8/dhcp +return /man/1/0intro +return /man/1/acme +return /man/1/alphabet-main +return /man/1/collab-clients +return /man/1/deb +return /man/1/grid-query +return /man/1/limbo +return /man/1/mash +return /man/1/mash-tk +return /man/1/mc +return /man/1/miniterm +return /man/1/mk +return /man/1/mux +return /man/1/pwd +return /man/1/sh +return /man/1/sh-alphabet +return /man/1/sh-file2chan +return /man/1/sh-sexprs +return /man/1/sh-std +return /man/1/sh-string +return /man/1/sh-tk +return /man/1/stream +return /man/1/tkcmd +return /man/1/yacc +return /man/10/acid +return /man/10/c2l +return /man/10/dev +return /man/10/devattach +return /man/10/dynld +return /man/10/error +return /man/10/getfields +return /man/10/malloc +return /man/10/mk +return /man/10/newchan +return /man/10/odbc +return /man/10/print +return /man/10/qio +return /man/10/qlock +return /man/10/readnum +return /man/10/rune +return /man/10/seconds +return /man/10/styx +return /man/10/styxserver +return /man/2/0intro +return /man/2/alphabet-intro +return /man/2/arg +return /man/2/asn1 +return /man/2/attrdb +return /man/2/bloomfilter +return /man/2/bufio +return /man/2/bufio-chanfill +return /man/2/cfg +return /man/2/command +return /man/2/convcs +return /man/2/dbm +return /man/2/debug +return /man/2/dhcpclient +return /man/2/diskblocks +return /man/2/disks +return /man/2/draw-0intro +return /man/2/draw-display +return /man/2/draw-font +return /man/2/draw-image +return /man/2/draw-screen +return /man/2/format +return /man/2/hash +return /man/2/ip +return /man/2/ir +return /man/2/keyring-certtostr +return /man/2/keyring-getmsg +return /man/2/keyring-getstring +return /man/2/math-fp +return /man/2/names +return /man/2/palmfile +return /man/2/pop3 +return /man/2/prefab-compound +return /man/2/prof +return /man/2/rand +return /man/2/registries +return /man/2/scsiio +return /man/2/security-random +return /man/2/sexprs +return /man/2/sh +return /man/2/spki +return /man/2/spree +return /man/2/spree-cardlib +return /man/2/spree-gather +return /man/2/spree-objstore +return /man/2/styx +return /man/2/styxconv +return /man/2/styxservers +return /man/2/styxservers-nametree +return /man/2/sys-0intro +return /man/2/sys-bind +return /man/2/sys-dial +return /man/2/sys-dirread +return /man/2/sys-fauth +return /man/2/sys-fd2path +return /man/2/sys-file2chan +return /man/2/sys-iounit +return /man/2/sys-open +return /man/2/sys-pctl +return /man/2/sys-pipe +return /man/2/sys-print +return /man/2/sys-read +return /man/2/sys-sleep +return /man/2/sys-stat +return /man/2/tk +return /man/2/translate +return /man/2/ubfa +return /man/2/wmsrv +return /man/2/xml +return /man/3/arch +return /man/3/audio +return /man/3/boot +return /man/3/cons +return /man/3/dbg +return /man/3/draw +return /man/3/flash +return /man/3/ip +return /man/3/lpt +return /man/3/mnt +return /man/3/pipe +return /man/3/plap +return /man/3/prog +return /man/3/ssl +return /man/3/tls +return /man/3/touch +return /man/3/usb +return /man/3/vid +return /man/4/dbfs +return /man/4/factotum +return /man/4/import +return /man/4/logfile +return /man/4/ramfile +return /man/4/registry +return /man/4/spree +return /man/5/error +return /man/5/open +return /man/5/walk +return /man/6/keyboard +return /man/6/man +return /man/6/sbl +return /man/6/sexprs +return /man/6/translate +return /man/6/ubfa +return /man/7/db +return /man/8/collabsrv +return /man/8/cs +return /man/9/0intro +return /man/9/button +return /man/9/canvas +return /man/9/checkbutton +return /man/9/choicebutton +return /man/9/grid +return /man/9/radiobutton +return /man/9/scale +return /man/9/send +return /man/9/text +return0 /man/10/sleep +returned /man/1/mash-tk +returned /man/1/mc +returned /man/1/sh-file2chan +returned /man/1/sh-tk +returned /man/1/tktester +returned /man/1/yacc +returned /man/10/atoi +returned /man/10/devattach +returned /man/10/malloc +returned /man/10/odbc +returned /man/10/print +returned /man/10/qio +returned /man/10/readnum +returned /man/10/splhi +returned /man/10/styx +returned /man/10/styxserver +returned /man/10/xalloc +returned /man/2/alphabet-intro +returned /man/2/arg +returned /man/2/asn1 +returned /man/2/bufio +returned /man/2/cfg +returned /man/2/convcs +returned /man/2/crc +returned /man/2/dbm +returned /man/2/debug +returned /man/2/devpointer +returned /man/2/dialog +returned /man/2/diskblocks +returned /man/2/disks +returned /man/2/exception +returned /man/2/geodesy +returned /man/2/ida +returned /man/2/imagefile +returned /man/2/ip +returned /man/2/keyring-auth +returned /man/2/keyring-gensk +returned /man/2/keyring-sha1 +returned /man/2/math-fp +returned /man/2/names +returned /man/2/palmfile +returned /man/2/popup +returned /man/2/prefab-compound +returned /man/2/prof +returned /man/2/readdir +returned /man/2/scsiio +returned /man/2/secstore +returned /man/2/security-login +returned /man/2/security-ssl +returned /man/2/selectfile +returned /man/2/sets +returned /man/2/sh +returned /man/2/spree-allow +returned /man/2/spree-cardlib +returned /man/2/string +returned /man/2/styx +returned /man/2/styxservers +returned /man/2/sys-0intro +returned /man/2/sys-byte2char +returned /man/2/sys-dial +returned /man/2/sys-export +returned /man/2/sys-fd2path +returned /man/2/sys-fversion +returned /man/2/sys-open +returned /man/2/sys-pipe +returned /man/2/sys-read +returned /man/2/sys-seek +returned /man/2/sys-stat +returned /man/2/sys-tokenize +returned /man/2/tabs +returned /man/2/timers +returned /man/2/tk +returned /man/2/w3c-css +returned /man/2/wmsrv +returned /man/2/xml +returned /man/3/cons +returned /man/3/dup +returned /man/3/ftl +returned /man/3/i2c +returned /man/3/mnt +returned /man/3/pipe +returned /man/3/rtc +returned /man/3/sd +returned /man/3/srv9 +returned /man/3/tls +returned /man/3/tv +returned /man/4/acme +returned /man/4/factotum +returned /man/4/keyfs +returned /man/5/attach +returned /man/5/open +returned /man/5/read +returned /man/5/stat +returned /man/5/walk +returned /man/7/db +returned /man/9/canvas +returned /man/9/choicebutton +returned /man/9/grid +returned /man/9/listbox +returned /man/9/menu +returned /man/9/pack +returned /man/9/panel +returned /man/9/scale +returned /man/9/text +returned /man/9/variable +returning /man/1/deb +returning /man/1/mk +returning /man/1/sh-std +returning /man/1/sleep +returning /man/1/stream +returning /man/10/devattach +returning /man/10/error +returning /man/10/mk +returning /man/10/odbc +returning /man/10/qio +returning /man/10/styx +returning /man/10/styxserver +returning /man/2/alphabet-intro +returning /man/2/bufio +returning /man/2/diskblocks +returning /man/2/draw-0intro +returning /man/2/format +returning /man/2/keyring-ipint +returning /man/2/math-fp +returning /man/2/mpeg +returning /man/2/palmfile +returning /man/2/readdir +returning /man/2/scsiio +returning /man/2/secstore +returning /man/2/sexprs +returning /man/2/sh +returning /man/2/spree +returning /man/2/styxservers +returning /man/2/sys-dirread +returning /man/2/sys-read +returning /man/2/sys-sleep +returning /man/2/tftp +returning /man/2/translate +returning /man/2/venti +returning /man/2/w3c-xpointers +returning /man/3/mpeg +returning /man/4/acme +returns /man/1/alphabet-main +returns /man/1/grep +returns /man/1/mash-tk +returns /man/1/mkdir +returns /man/1/read +returns /man/1/session +returns /man/1/sh-alphabet +returns /man/1/sh-expr +returns /man/1/sh-sexprs +returns /man/1/sh-std +returns /man/1/sh-string +returns /man/1/sleep +returns /man/10/acid +returns /man/10/allocb +returns /man/10/devattach +returns /man/10/dmainit +returns /man/10/dynld +returns /man/10/error +returns /man/10/eve +returns /man/10/intrenable +returns /man/10/kproc +returns /man/10/lock +returns /man/10/malloc +returns /man/10/memory +returns /man/10/newchan +returns /man/10/odbc +returns /man/10/parsecmd +returns /man/10/print +returns /man/10/qio +returns /man/10/qlock +returns /man/10/ref +returns /man/10/rune +returns /man/10/seconds +returns /man/10/sleep +returns /man/10/splhi +returns /man/10/strcat +returns /man/10/styx +returns /man/10/styxserver +returns /man/10/xalloc +returns /man/2/alphabet-intro +returns /man/2/asn1 +returns /man/2/attrdb +returns /man/2/bloomfilter +returns /man/2/bufio-chanfill +returns /man/2/cfg +returns /man/2/convcs +returns /man/2/crc +returns /man/2/daytime +returns /man/2/dbm +returns /man/2/debug +returns /man/2/devpointer +returns /man/2/dhcpclient +returns /man/2/dialog +returns /man/2/dict +returns /man/2/dis +returns /man/2/diskblocks +returns /man/2/disks +returns /man/2/dividers +returns /man/2/draw-display +returns /man/2/draw-font +returns /man/2/draw-image +returns /man/2/draw-point +returns /man/2/draw-rect +returns /man/2/drawmux +returns /man/2/encoding +returns /man/2/env +returns /man/2/ether +returns /man/2/exception +returns /man/2/factotum +returns /man/2/filepat +returns /man/2/filter +returns /man/2/filter-slip +returns /man/2/format +returns /man/2/hash +returns /man/2/ida +returns /man/2/imagefile +returns /man/2/ip +returns /man/2/ir +returns /man/2/itslib +returns /man/2/keyring-0intro +returns /man/2/keyring-auth +returns /man/2/keyring-certtostr +returns /man/2/keyring-gensk +returns /man/2/keyring-getmsg +returns /man/2/keyring-getstring +returns /man/2/keyring-ipint +returns /man/2/keyring-rc4 +returns /man/2/keyring-sha1 +returns /man/2/keyset +returns /man/2/lock +returns /man/2/math-elem +returns /man/2/math-fp +returns /man/2/mpeg +returns /man/2/palmfile +returns /man/2/plumbmsg +returns /man/2/pop3 +returns /man/2/popup +returns /man/2/prefab-compound +returns /man/2/print +returns /man/2/prof +returns /man/2/readdir +returns /man/2/regex +returns /man/2/registries +returns /man/2/scsiio +returns /man/2/secstore +returns /man/2/security-0intro +returns /man/2/security-auth +returns /man/2/security-login +returns /man/2/security-random +returns /man/2/security-ssl +returns /man/2/sets +returns /man/2/sexprs +returns /man/2/sh +returns /man/2/smtp +returns /man/2/spki +returns /man/2/spki-verifier +returns /man/2/spree +returns /man/2/spree-allow +returns /man/2/spree-cardlib +returns /man/2/spree-gather +returns /man/2/srv +returns /man/2/string +returns /man/2/stringinttab +returns /man/2/styx +returns /man/2/styxpersist +returns /man/2/styxservers +returns /man/2/styxservers-nametree +returns /man/2/sys-byte2char +returns /man/2/sys-chdir +returns /man/2/sys-dial +returns /man/2/sys-dirread +returns /man/2/sys-dup +returns /man/2/sys-export +returns /man/2/sys-fauth +returns /man/2/sys-fd2path +returns /man/2/sys-file2chan +returns /man/2/sys-fversion +returns /man/2/sys-iounit +returns /man/2/sys-millisec +returns /man/2/sys-open +returns /man/2/sys-pipe +returns /man/2/sys-print +returns /man/2/sys-read +returns /man/2/sys-remove +returns /man/2/sys-sleep +returns /man/2/sys-tokenize +returns /man/2/sys-utfbytes +returns /man/2/sys-werrstr +returns /man/2/tabs +returns /man/2/tftp +returns /man/2/timers +returns /man/2/tk +returns /man/2/tkclient +returns /man/2/translate +returns /man/2/ubfa +returns /man/2/venti +returns /man/2/virgil +returns /man/2/w3c-css +returns /man/2/w3c-xpointers +returns /man/2/wait +returns /man/2/wmclient +returns /man/2/wmlib +returns /man/2/wmsrv +returns /man/2/workdir +returns /man/2/xml +returns /man/3/cmd +returns /man/3/cons +returns /man/3/dbg +returns /man/3/draw +returns /man/3/dup +returns /man/3/dynld +returns /man/3/ether +returns /man/3/flash +returns /man/3/floppy +returns /man/3/fpga +returns /man/3/gpio +returns /man/3/i2c +returns /man/3/i82365 +returns /man/3/indir +returns /man/3/ip +returns /man/3/mnt +returns /man/3/mpeg +returns /man/3/pbus +returns /man/3/plap +returns /man/3/pnp +returns /man/3/pointer +returns /man/3/prof +returns /man/3/rtc +returns /man/3/sd +returns /man/3/snarf +returns /man/3/switch +returns /man/3/tls +returns /man/3/touch +returns /man/3/usb +returns /man/3/vga +returns /man/4/acme +returns /man/4/dbfs +returns /man/4/export +returns /man/4/factotum +returns /man/4/import +returns /man/4/keysrv +returns /man/4/palmsrv +returns /man/4/registry +returns /man/5/0intro +returns /man/5/attach +returns /man/5/clunk +returns /man/5/read +returns /man/7/db +returns /man/8/collabsrv +returns /man/8/cs +returns /man/8/dhcp +returns /man/8/httpd +returns /man/8/plumber +returns /man/8/rdbgsrv +returns /man/9/bind +returns /man/9/button +returns /man/9/canvas +returns /man/9/checkbutton +returns /man/9/choicebutton +returns /man/9/entry +returns /man/9/focus +returns /man/9/frame +returns /man/9/grab +returns /man/9/grid +returns /man/9/image +returns /man/9/label +returns /man/9/listbox +returns /man/9/menu +returns /man/9/menubutton +returns /man/9/options +returns /man/9/pack +returns /man/9/panel +returns /man/9/radiobutton +returns /man/9/scale +returns /man/9/scrollbar +returns /man/9/see +returns /man/9/text +returns /man/9/variable +reusable /man/3/ftl +reuse /man/10/newchan +reuse /man/10/plan9.ini +reuse /man/2/spree +reused /man/2/keyring-crypt +reused /man/2/spree +reused /man/3/logfs +reused /man/3/pipe +reused /man/5/0intro +reused /man/5/clunk +reuses /man/2/security-0intro +reusing /man/5/flush +reveal /man/1/grid-query +reveal /man/1/session +reveal /man/1/stack +reveal /man/2/draw-example +reveal /man/2/secstore +revealing /man/10/ref +revealing /man/2/security-0intro +revealing /man/3/flash +reveals /man/3/cmd +reverse /man/1/acme +reverse /man/1/fc +reverse /man/1/ls +reverse /man/1/mc +reverse /man/1/sh-expr +reverse /man/1/tail +reverse /man/1/xd +reverse /man/10/styx +reverse /man/2/stringinttab +reverse /man/3/dbg +reverse /man/3/ds +reverse /man/6/ubfa +reversed /man/1/acme +reversed /man/10/2l +reversed /man/2/readdir +reverses /man/1/sh +reverses /man/1/sort +reverses /man/1/wm-sh +reverses /man/2/math-export +reverses /man/2/spree-allow +reverses /man/2/spree-cardlib +reverses /man/9/update +reversi /man/1/wm-misc +reversi.b /man/1/wm-misc +reversing /man/2/spree-cardlib +revert /man/9/cursor +reverts /man/1/sh-alphabet +review /man/1/charon +revised /man/1/charon +revised /man/10/allocb +revision /man/1/emu +revision /man/2/w3c-css +revisiting /man/1/charon +revlookup /man/2/stringinttab +rew /man/2/ir +rewind /man/1/mux +rewind /man/2/ir +rewritable /man/3/ftl +rewrite /man/1/alphabet-main +rewrite /man/1/sh-alphabet +rewrite /man/10/c2l +rewrite /man/2/sys-open +rewrite /man/4/dbfs +rewrites /man/1/alphabet-main +rewrites /man/1/tee +rewriting /man/1/sh-alphabet +rewriting /man/10/kstrip +rewritten /man/1/alphabet-main +rewritten /man/1/sh-alphabet +rewritten /man/3/ftl +rewritten /man/3/tinyfs +rewritten /man/4/dbfs +rexec /man/1/alphabet-abc +rexec /man/1/alphabet-grid +rf /man/1/tail +rfc /man/2/xml +rfc1055 /man/2/filter-slip +rfc1058 /man/8/rip +rfc1361 /man/8/sntp +rfc1942 /man/1/charon +rfc2104 /man/2/keyring-sha1 +rfc2131 /man/2/dhcpclient +rfc2373 /man/2/ip +rfc2453 /man/8/rip +rfc3548 /man/2/encoding +rfc854 /man/1/telnet +rfcs /man/1/telnet +rflush /man/5/0intro +rflush /man/5/flush +rflush /man/8/styxchat +rgb /man/1/wm-misc +rgb /man/2/draw-0intro +rgb /man/2/draw-display +rgb /man/2/imagefile +rgb /man/2/w3c-css +rgb /man/9/types +rgb16 /man/2/draw-display +rgb24 /man/2/draw-display +rgb24 /man/6/colour +rgb2cmap /man/2/draw-display +rgb524hwgc /man/3/vga +rgba /man/2/draw-0intro +rgba /man/2/draw-display +rgba /man/2/draw-screen +rgba /man/2/tk +rgba32 /man/2/draw-display +rgbv /man/2/draw-display +rgbv /man/6/colour +rgbv /man/8/collabsrv +rget /man/1/sh-file2chan +rh /man/3/tv +ri /man/6/man +rich /man/1/0intro +ridge /man/4/dossrv +ridge /man/9/options +ridge /man/9/types +riesling /man/10/odbc +rightmost /man/2/string +rights /man/2/spki +rights /man/3/fs +rights /man/9/1copyright +rigid /man/6/font +rigorously /man/2/security-0intro +rijndael /man/1/crypt +rijndael /man/2/keyring-crypt +rimagefile /man/2/imagefile +rings /man/2/translate +rint /man/2/math-fp +rinuse /man/2/palmfile +rio /man/1/9win +rip /man/8/rip +rip.b /man/8/rip +ripoff /man/9/canvas +riscos /man/10/5cv +rise /man/1/charon +rise /man/9/pack +rivest /man/2/sexprs +rivest /man/6/sexprs +rkill /man/3/dbg +rl /man/3/tv +rl /man/6/man +rlock /man/10/qlock +rm /man/1/alphabet-fs +rm /man/1/fs +rm /man/1/mkdir +rm /man/1/mv +rm /man/1/rm +rm /man/1/tiny +rm /man/10/mk +rm /man/2/arg +rm /man/3/srv +rm /man/4/kfs +rm /man/4/registry +rm.b /man/1/rm +rm.b /man/1/tiny +rmargin /man/9/text +rmcat /man/2/palmfile +rmget /man/3/dbg +rmput /man/3/dbg +rmsg /man/2/styx +rmsg /man/2/styxservers +rmsg /man/8/styxchat +rmsg.create /man/2/styxservers +rmsg.error /man/2/styxservers +rmsg.open /man/2/styxservers +rmsg.qids /man/2/styx +rmsg.read /man/2/styx +rmsg.read /man/2/styxservers +rmsg.read /man/8/styxchat +rmsg.tag /man/2/styx +rmsg.unpack /man/2/styx +rmsg.version /man/2/styx +rn /man/10ti925/tihost +rnd /man/2/math-fp +rngtab /man/2/prof +road /man/6/attrdb +rob /man/1/acme +rob /man/1/yacc +rob /man/10/2a +rob /man/10/2c +rob /man/10/2l +robotics /man/3/pbus +rock /man/4/dossrv +rogue /man/8/rip +role /man/4/factotum +role /man/6/login +rollback /man/10/odbc +rolled /man/1/0intro +rom /man/10/5cv +rom /man/3/sd +rom /man/8/manufacture +rom /man/8/register +roman /man/1/brutus +roman /man/1/cook +roman /man/1/grep +roman /man/6/man +rook /man/6/keyboard +root /man/1/0intro +root /man/1/alphabet-abc +root /man/1/alphabet-fs +root /man/1/alphabet-grid +root /man/1/alphabet-main +root /man/1/emu +root /man/1/fs +root /man/1/ftree +root /man/1/rcmd +root /man/1/sh-alphabet +root /man/1/tiny +root /man/10/9load +root /man/10/conf +root /man/10/dev +root /man/10/devattach +root /man/10/kproc +root /man/10/newchan +root /man/10/ntsrv +root /man/10/plan9.ini +root /man/10/srclist +root /man/10/styxserver +root /man/2/alphabet-intro +root /man/2/dis +root /man/2/drawmux +root /man/2/fsproto +root /man/2/keyring-gensk +root /man/2/math-elem +root /man/2/names +root /man/2/spree +root /man/2/spree-cardlib +root /man/2/styxservers +root /man/2/styxservers-nametree +root /man/2/sys-0intro +root /man/2/sys-bind +root /man/2/sys-pctl +root /man/2/venti +root /man/2/w3c-xpointers +root /man/3/0intro +root /man/3/cmd +root /man/3/fs +root /man/3/root +root /man/3/sign +root /man/3/tinyfs +root /man/4/9srvfs +root /man/4/export +root /man/4/ftpfs +root /man/4/memfs +root /man/4/namespace +root /man/4/spree +root /man/5/0intro +root /man/5/attach +root /man/5/stat +root /man/5/walk +root /man/6/namespace +root /man/6/ndb +root /man/8/applylog +root /man/8/collabsrv +root /man/8/create +root /man/8/httpd +root /man/8/init +root /man/8/mangaload +root /man/8/mkfs +root /man/8/prep +root /man/8/svc +rootdir /man/10/ntsrv +rootdir /man/10/srclist +rooted /man/1/alphabet-fs +rooted /man/1/alphabet-main +rooted /man/1/fs +rooted /man/1/itest +rooted /man/10/conf +rooted /man/2/disks +rooted /man/2/fsproto +rooted /man/2/names +rooted /man/2/spree +rooted /man/2/sys-export +rooted /man/2/sys-fd2path +rooted /man/4/export +rooted /man/4/import +rooted /man/8/applylog +rooted /man/8/httpd +rooted /man/8/mkfs +rootpath /man/1/emu +rootpath /man/2/styxservers +roots /man/1/mc +roots /man/2/disks +roots /man/2/sys-pctl +roottype /man/2/venti +ropen /man/10/styx +ropen /man/5/0intro +ropen /man/5/open +ropen /man/8/styxchat +rotate /man/1/wm-misc +rotated /man/9/canvas +rotation /man/1/wm-misc +rotation /man/9/canvas +rotta.b /man/1/mash-make +rotta.dis /man/1/mash-make +rotta.m /man/1/mash-make +roughly /man/1/charon +round /man/1/collab-clients +round /man/1/mc +round /man/1/sh-std +round /man/2/math-fp +round /man/8/ping +round /man/9/canvas +rounded /man/1/du +rounded /man/10/2l +rounded /man/10/5coff +rounded /man/10/a.out +rounded /man/2/geodesy +rounded /man/2/math-0intro +rounded /man/3/draw +rounded /man/4/memfs +rounded /man/9/canvas +rounded /man/9/scale +rounding /man/10/seconds +rounding /man/2/math-0intro +rounding /man/2/math-fp +rounding /man/9/scale +rounds /man/2/math-fp +route /man/1/plumb +route /man/2/ip +route /man/2/plumbmsg +route /man/3/ip +route /man/6/plumbing +route /man/8/plumber +route /man/8/rip +routed /man/2/plumbmsg +routed /man/8/plumber +routed /man/8/rip +router /man/2/dhcpclient +router /man/2/ip +router /man/8/rip +routerlt /man/2/ip +routers /man/2/ip +routes /man/3/ip +routes /man/8/init +routes /man/8/rip +routine /man/1/yacc +routine /man/10/2c +routine /man/10/devattach +routine /man/10/lock +routine /man/10/qio +routine /man/10/readnum +routine /man/10/rune +routine /man/10/styx +routine /man/2/draw-image +routine /man/2/env +routine /man/2/prefab-style +routine /man/2/prof +routine /man/2/scsiio +routine /man/2/styxservers +routine /man/2/sys-dial +routine /man/2/sys-open +routines /man/10/0intro +routines /man/10/2l +routines /man/10/allocb +routines /man/10/delay +routines /man/10/error +routines /man/10/malloc +routines /man/10/print +routines /man/10/qio +routines /man/10/readnum +routines /man/10/rune +routines /man/10/splhi +routines /man/10/strcat +routines /man/10/styx +routines /man/10/styxserver +routines /man/10/xalloc +routines /man/2/crc +routines /man/2/daytime +routines /man/2/dbm +routines /man/2/debug +routines /man/2/draw-0intro +routines /man/2/exception +routines /man/2/geodesy +routines /man/2/imagefile +routines /man/2/keyring-certtostr +routines /man/2/math-0intro +routines /man/2/math-elem +routines /man/2/math-export +routines /man/2/math-fp +routines /man/2/math-linalg +routines /man/2/prefab-style +routines /man/2/prof +routines /man/2/security-0intro +routines /man/2/sets +routines /man/2/spree-cardlib +routines /man/2/sys-0intro +routines /man/2/sys-dial +routines /man/2/sys-stat +routines /man/2/tkclient +routines /man/2/wmclient +routines /man/2/wmlib +routines /man/3/i82365 +routines /man/4/factotum +routines /man/5/0intro +routines /man/5/stat +routines /man/6/utf +routing /man/10/plan9.ini +routing /man/2/ida +routing /man/2/ip +routing /man/2/plumbmsg +routing /man/3/ip +routing /man/8/plumber +routing /man/8/rip +row /man/1/miniterm +row /man/1/sh-csv +row /man/1/tktester +row /man/2/ida +row /man/6/image +row /man/7/db +row /man/9/grid +row2 /man/9/grid +rowconfigure /man/9/grid +rowdelete /man/9/grid +rowindex /man/9/grid +rowinsert /man/9/grid +rows /man/1/tktester +rows /man/6/image +rows /man/7/db +rows /man/9/grid +rowspan /man/1/tktester +rowspan /man/9/grid +rowspans /man/9/grid +royalty /man/9/1copyright +rp /man/10/allocb +rp /man/2/ip +rpc /man/2/factotum +rpc /man/4/factotum +rpc /man/4/iostats +rpc's /man/4/factotum +rproc /man/3/dbg +rptr /man/10/atoi +rq /man/2/filter +rq /man/2/filter-deflate +rq /man/2/filter-slip +rq /man/2/wmsrv +rq.error /man/2/filter +rq.fill /man/2/filter +rq.fill /man/2/filter-slip +rq.finished /man/2/filter +rq.info /man/2/filter +rq.info /man/2/filter-deflate +rq.result /man/2/filter +rq.result /man/2/filter-slip +rq.start /man/2/filter +rr /man/9/types +rread /man/1/sh-file2chan +rread /man/10/styx +rread /man/10/styxserver +rread /man/2/sys-file2chan +rread /man/5/0intro +rread /man/5/read +rread /man/8/styxchat +rreadone /man/1/sh-file2chan +rremove /man/5/0intro +rremove /man/5/remove +rremove /man/8/styxchat +rrggbb /man/9/types +rrggbbaa /man/9/types +rrnote /man/3/dbg +rs /man/10/odbc +rs /man/10/plan9.ini +rs /man/6/man +rsa /man/2/keyring-gensk +rsa /man/2/keyring-rc4 +rsa /man/2/security-0intro +rsa /man/6/keytext +rsa /man/8/createsignerkey +rsecret /man/2/palmfile +rst /man/3/ip +rstart /man/3/dbg +rstartstop /man/3/dbg +rstat /man/10/styx +rstat /man/5/0intro +rstat /man/5/stat +rstat /man/8/styxchat +rstatus /man/3/dbg +rstop /man/3/dbg +rstyx /man/1/rcmd +rstyx /man/8/srv +rstyx /man/8/svc +rstyx.sh /man/8/svc +rstyxd /man/1/rcmd +rstyxd /man/8/rstyxd +rstyxd /man/8/srv +rstyxd /man/8/svc +rstyxd.b /man/8/rstyxd +rstyxd.dis /man/8/srv +rt /man/1/emu +rt /man/1/wm-misc +rt /man/2/dis +rt /man/3/sign +rt.b /man/1/wm-misc +rtc /man/3/rtc +rtc /man/8/manufacture +rtc /man/8/sntp +rtcid /man/3/rtc +rtcid /man/8/manufacture +rtl8139 /man/10/plan9.ini +rts /man/3/eia +rudimentary /man/1/tiny +rule /man/1/acme +rule /man/1/mash +rule /man/1/mash-make +rule /man/1/mk +rule /man/10/mk +rule /man/2/draw-image +rule /man/2/sys-0intro +rule /man/2/w3c-xpointers +rule /man/3/draw +rule /man/6/attrdb +rule /man/6/plumbing +rule /man/6/sexprs +rule /man/8/plumber +rule /man/9/canvas +rule /man/9/text +rule's /man/6/plumbing +rulefile /man/8/plumber +rules /man/1/acme +rules /man/1/brutus +rules /man/1/fc +rules /man/1/fs +rules /man/1/ftree +rules /man/1/mash +rules /man/1/mash-make +rules /man/1/mc +rules /man/1/mk +rules /man/1/plumb +rules /man/1/sh +rules /man/1/sh-alphabet +rules /man/1/sh-std +rules /man/1/tiny +rules /man/1/wm-misc +rules /man/1/wm-sh +rules /man/1/yacc +rules /man/10/2c +rules /man/10/dev +rules /man/10/mk +rules /man/2/asn1 +rules /man/2/command +rules /man/2/draw-display +rules /man/2/math-0intro +rules /man/2/plumbmsg +rules /man/2/spree +rules /man/2/styx +rules /man/2/w3c-css +rules /man/2/w3c-xpointers +rules /man/3/fs +rules /man/6/keyboard +rules /man/6/plumbing +rules /man/6/sexprs +rules /man/6/ubfa +rules /man/8/plumber +rules /man/8/styxchat +rules /man/9/cursor +rules /man/9/entry +rules /man/9/send +ruleset /man/2/w3c-css +run /man/1/0intro +run /man/1/9win +run /man/1/acme +run /man/1/alphabet-fs +run /man/1/calendar +run /man/1/cprof +run /man/1/cpu +run /man/1/deb +run /man/1/dmview +run /man/1/emu +run /man/1/fs +run /man/1/itest +run /man/1/limbo +run /man/1/listen +run /man/1/mash +run /man/1/mash-make +run /man/1/mk +run /man/1/mprof +run /man/1/mux +run /man/1/os +run /man/1/prof +run /man/1/ps +run /man/1/runas +run /man/1/sh +run /man/1/sh-arg +run /man/1/sh-std +run /man/1/sh-test +run /man/1/stack +run /man/1/tiny +run /man/1/tktester +run /man/1/toolbar +run /man/1/units +run /man/1/wish +run /man/1/wm-sh +run /man/10/2c +run /man/10/9load +run /man/10/a.out +run /man/10/acid +run /man/10/conf +run /man/10/kproc +run /man/10/mk +run /man/10/ntsrv +run /man/10/plan9.ini +run /man/2/0intro +run /man/2/alphabet-intro +run /man/2/cfg +run /man/2/command +run /man/2/debug +run /man/2/dis +run /man/2/draw-0intro +run /man/2/draw-example +run /man/2/itslib +run /man/2/keyring-0intro +run /man/2/math-0intro +run /man/2/sh +run /man/2/sys-byte2char +run /man/2/sys-sleep +run /man/3/cmd +run /man/3/dbg +run /man/3/ds +run /man/3/fs +run /man/3/ip +run /man/3/prog +run /man/4/acme +run /man/4/cpu +run /man/4/dbfs +run /man/4/export +run /man/4/factotum +run /man/4/import +run /man/4/keysrv +run /man/4/lockfs +run /man/4/namespace +run /man/6/dis +run /man/7/dbsrv +run /man/8/applylog +run /man/8/init +run /man/8/mangaload +run /man/8/rstyxd +run /man/8/signer +run /man/8/svc +runas /man/1/runas +runas.b /man/1/runas +runbuiltin /man/2/sh +runcmd /man/1/sh-file2chan +runcpu /man/4/cpu +rune /man/10/2c +rune /man/10/dev +rune /man/10/devattach +rune /man/10/kbdputc +rune /man/10/rune +rune /man/10/strcat +rune /man/6/keyboard +rune /man/6/regexp +rune /man/6/utf +rune.c /man/10/rune +runefprint /man/10/print +runelen /man/10/rune +runeprint /man/10/print +runes /man/1/freq +runes /man/1/strings +runes /man/1/tcs +runes /man/1/tr +runes /man/10/print +runes /man/10/rune +runes /man/2/convcs +runes /man/4/acme +runes /man/6/keyboard +runesprint /man/10/print +runestrlen.c /man/10/rune +runetochar /man/10/rune +runflag /man/6/dis +runit /man/1/stack +runlock /man/10/qlock +runme.dis /man/1/session +runnable /man/10/kproc +running /man/1/9win +running /man/1/acme +running /man/1/blur +running /man/1/calendar +running /man/1/charon +running /man/1/collab +running /man/1/collab-clients +running /man/1/deb +running /man/1/diff +running /man/1/emu +running /man/1/grid-query +running /man/1/kill +running /man/1/mux +running /man/1/ps +running /man/1/sendmail +running /man/1/sh +running /man/1/sh-arg +running /man/1/sh-tk +running /man/1/tr +running /man/1/webgrab +running /man/1/wm +running /man/1/wm-misc +running /man/1/wm-sh +running /man/10/9load +running /man/10/acid +running /man/10/c2l +running /man/10/eve +running /man/10/intrenable +running /man/10/kprof +running /man/10/lock +running /man/10/sleep +running /man/10/styxserver +running /man/10ti925/tihost +running /man/2/0intro +running /man/2/debug +running /man/2/ir +running /man/2/keyring-sha1 +running /man/2/plumbmsg +running /man/2/sh +running /man/2/spree-allow +running /man/2/srv +running /man/2/tk +running /man/3/cmd +running /man/3/dbg +running /man/3/dynld +running /man/3/fpga +running /man/3/fs +running /man/3/prof +running /man/3/prog +running /man/3/touch +running /man/4/acme +running /man/4/import +running /man/4/kfs +running /man/4/namespace +running /man/6/ndb +running /man/6/plumbing +running /man/7/db +running /man/8/collabsrv +running /man/8/createsignerkey +running /man/8/dns +running /man/8/prep +running /man/8/rdbgsrv +running /man/8/register +running /man/8/rip +running /man/8/signer +running /man/8/svc +running /man/8/touchcal +running /man/8/virgild +runns /man/1/grid-ns +runpipeline /man/1/stack +runs /man/1/acme +runs /man/1/alphabet-fs +runs /man/1/charon +runs /man/1/collab-clients +runs /man/1/cprof +runs /man/1/emu +runs /man/1/fs +runs /man/1/itest +runs /man/1/mash +runs /man/1/mk +runs /man/1/mux +runs /man/1/nsbuild +runs /man/1/sh +runs /man/1/sh-std +runs /man/1/toolbar +runs /man/1/wish +runs /man/1/wm +runs /man/10/allocb +runs /man/10/c2l +runs /man/10/mk +runs /man/10/odbc +runs /man/2/alphabet-intro +runs /man/2/command +runs /man/2/debug +runs /man/2/dhcpclient +runs /man/2/keyring-auth +runs /man/2/keyring-rc4 +runs /man/2/mpeg +runs /man/2/sh +runs /man/2/xml +runs /man/3/cmd +runs /man/3/fs +runs /man/3/ip +runs /man/3/kprof +runs /man/4/dbfs +runs /man/6/keys +runs /man/8/bootpd +runs /man/8/getauthinfo +runs /man/8/prep +runs /man/8/register +runs /man/8/svc +runs /man/9/choicebutton +runsbuiltin /man/2/sh +runt.c /man/2/sys-byte2char +runt.c /man/2/sys-print +runtime /man/1/limbo +runtime /man/1/mprof +runtime /man/10/conf +runtime /man/6/dis +russian /man/2/convcs +rversion /man/10/styx +rversion /man/2/styx +rversion /man/5/0intro +rversion /man/5/version +rversion /man/8/styxchat +rw /man/3/prog +rwaitstop /man/3/dbg +rwalk /man/10/styx +rwalk /man/5/0intro +rwalk /man/5/walk +rwalk /man/8/styxchat +rwlock /man/10/qlock +rwm /man/3/sd +rwrite /man/1/sh-file2chan +rwrite /man/2/bufio-chanfill +rwrite /man/2/sys-file2chan +rwrite /man/2/wmsrv +rwrite /man/5/0intro +rwrite /man/5/read +rwrite /man/8/styxchat +rws /man/2/alphabet-intro +rwstat /man/5/0intro +rwstat /man/5/stat +rwstat /man/8/styxchat +rx /man/6/auth +rx /man/6/login +rxmitra /man/2/ip +rôle /man/1/sh +rôle /man/9/0intro +rôles /man/2/security-auth +s.next /man/10/acid +s.text /man/2/w3c-xpointers +s.val /man/10/acid +s3hwgc /man/3/vga +s:string /man/2/hash +sa /man/2/keyring-0intro +sa /man/2/spki +sa1100 /man/1/mk +sa1100 /man/10/mk +sa1100 /man/3/gpio +sa1100 /man/3/touch +sa1100 /man/8/rdbgsrv +safe /man/1/0intro +safe /man/1/charon +safe /man/10/intrenable +safe /man/2/styxservers +safe /man/6/sexprs +safely /man/10/malloc +safely /man/10/parsecmd +safely /man/10/qio +safely /man/2/bufio +safely /man/2/command +safely /man/3/logfs +safely /man/3/rtc +safely /man/3/srv9 +safer /man/1/sh +safer /man/10/9load +safety /man/10/print +sake /man/1/mc +sam /man/1/acme +sam /man/10/acid +sample /man/1/acme +sample /man/1/auplay +sample /man/1/fortune +sample /man/1/keyboard +sample /man/1/prof +sample /man/2/prof +sample /man/3/audio +sample /man/3/kprof +sample /man/3/touch +sample /man/6/audio +sample /man/6/colour +sampled /man/3/prof +samples /man/2/prof +samples /man/3/audio +samples /man/3/touch +samples /man/6/audio +samples /man/6/colour +sampling /man/2/prof +sampling /man/3/prof +sampling /man/6/colour +sane /man/10/dev +sanity /man/6/login +sap /man/3/plap +sar /man/10/ar +sarmag /man/10/ar +sat /man/2/daytime +satisfied /man/1/sh-std +satisfied /man/9/text +satisfies /man/1/mk +satisfies /man/10/conf +satisfies /man/10/mk +satisfies /man/10/readnum +satisfy /man/1/alphabet-fs +satisfy /man/1/fs +satisfy /man/1/wm +satisfy /man/10/xalloc +satisfy /man/2/keyset +satisfy /man/9/canvas +satisfy /man/9/options +satisfying /man/1/alphabet-fs +satisfying /man/1/fs +satopd /man/2/draw-image +saturated /man/2/draw-display +saturated /man/6/colour +saturation /man/3/tv +sauvignon /man/10/odbc +save /man/1/acme +save /man/1/brutus +save /man/1/charon +save /man/1/tktester +save /man/10/dev +save /man/2/print +save /man/2/spree +save /man/3/ds +save /man/3/touch +save /man/6/dis +save /man/8/getauthinfo +saved /man/1/deb +saved /man/1/sh +saved /man/1/tktester +saved /man/1/webgrab +saved /man/10/intrenable +saved /man/2/bufio-chanfill +saved /man/2/disks +saved /man/2/prof +saved /man/2/spree +saved /man/3/dbg +saved /man/3/touch +saved /man/7/db +saved /man/8/register +saved /man/8/touchcal +saves /man/1/tktester +saves /man/10/qio +saves /man/3/ip +saves /man/8/signer +saving /man/1/uuencode +saving /man/1/webgrab +saving /man/10/dev +saving /man/10/plan9.ini +saying /man/1/fortune +says /man/1/collab-clients +says /man/2/spki +says /man/2/sys-open +says /man/2/sys-stat +says /man/5/0intro +sb /man/1/tktester +sb16 /man/10/plan9.ini +sb16 /man/3/audio +sbl /man/1/deb +sbl /man/1/limbo +sbl /man/1/sh-regex +sbl /man/1/stack +sbl /man/2/debug +sbl /man/2/prof +sbl /man/6/dis +sbl /man/6/sbl +sblpath /man/1/stack +sboot /man/8/rdbgsrv +sbootconsole /man/8/rdbgsrv +sbuiltin /man/2/sh +scalar /man/10/c2l +scalbn /man/2/math-fp +scale /man/1/units +scale /man/1/wm-misc +scale /man/2/imagefile +scale /man/3/audio +scale /man/3/tv +scale /man/9/0intro +scale /man/9/canvas +scale /man/9/scale +scale's /man/9/scale +scaled /man/2/math-fp +scaled /man/2/print +scaled /man/3/mpeg +scaled /man/6/colour +scaled /man/9/canvas +scaler /man/2/print +scaler.b /man/2/print +scales /man/1/units +scales /man/9/scale +scaling /man/9/canvas +scan /man/10/2l +scan /man/10/a.out +scan /man/10/atoi +scan /man/10/plan9.ini +scan /man/2/draw-image +scan /man/3/cons +scan /man/3/sd +scan /man/3/tv +scan /man/6/scancode +scan /man/9/text +scancode /man/3/cons +scancode /man/6/scancode +scanned /man/1/sendmail +scanned /man/2/string +scanning /man/10/2l +scanning /man/10/plan9.ini +scanning /man/9/menubutton +scanning /man/9/pack +scanning /man/9/text +scans /man/2/spree-objstore +scans /man/3/tinyfs +scans /man/8/prep +scavenge /man/3/ftl +scavenging /man/3/ftl +scenes /man/2/spree +scheding /man/3/dbg +schedule /man/1/calendar +scheduled /man/10/qlock +scheduled /man/2/sys-0intro +scheduler /man/1/alphabet-abc +scheduler /man/1/alphabet-grid +scheduler /man/10/kproc +scheduler /man/10/lock +scheduler /man/3/dbg +schedules /man/10/qlock +scheduling /man/3/cmd +scheme /man/10/intrenable +scheme /man/2/0intro +scheme /man/2/convcs +scheme /man/2/ida +scheme /man/2/spree +scheme /man/2/spree-cardlib +scheme /man/2/w3c-xpointers +scheme /man/3/ip +scheme /man/3/mnt +scheme /man/6/image +scheme /man/9/bind +scheme /man/9/canvas +scheme /man/9/text +schemes /man/2/convcs +schemes /man/2/sexprs +schemes /man/2/w3c-xpointers +schemes /man/6/sexprs +schneier /man/2/keyring-0intro +schneier /man/2/security-0intro +schneier /man/3/ssl +scope /man/1/mash +scope /man/1/mc +scope /man/1/sh +scope /man/2/0intro +scope /man/2/sh +scope /man/2/sys-0intro +scope /man/6/sbl +scope /man/8/applylog +score /man/1/wm-misc +score /man/2/venti +scores /man/1/wm-misc +scr /man/2/draw-image +scr /man/3/draw +scrambled /man/2/security-0intro +scratch /man/1/acme +scratch /man/6/namespace +screen /man/1/blur +screen /man/1/brutus +screen /man/1/charon +screen /man/1/emu +screen /man/1/filename +screen /man/1/ftree +screen /man/1/keyboard +screen /man/1/logon +screen /man/1/mash-tk +screen /man/1/miniterm +screen /man/1/mux +screen /man/1/tktester +screen /man/1/wish +screen /man/1/wm +screen /man/1/wm-misc +screen /man/10/conf +screen /man/10/dev +screen /man/10/plan9.ini +screen /man/2/dialog +screen /man/2/draw-0intro +screen /man/2/draw-context +screen /man/2/draw-display +screen /man/2/draw-example +screen /man/2/draw-image +screen /man/2/draw-pointer +screen /man/2/draw-screen +screen /man/2/drawmux +screen /man/2/keyring-0intro +screen /man/2/mpeg +screen /man/2/prefab-0intro +screen /man/2/prefab-compound +screen /man/2/prefab-element +screen /man/2/prefab-environ +screen /man/2/security-0intro +screen /man/2/selectfile +screen /man/2/tk +screen /man/2/tkclient +screen /man/2/wmclient +screen /man/2/wmsrv +screen /man/3/cons +screen /man/3/draw +screen /man/3/mpeg +screen /man/3/touch +screen /man/3/vga +screen /man/8/touchcal +screen /man/9/bind +screen /man/9/button +screen /man/9/canvas +screen /man/9/checkbutton +screen /man/9/entry +screen /man/9/grab +screen /man/9/grid +screen /man/9/label +screen /man/9/listbox +screen /man/9/menu +screen /man/9/menubutton +screen /man/9/options +screen /man/9/pack +screen /man/9/panel +screen /man/9/radiobutton +screen /man/9/text +screen /man/9/types +screen /man/9/update +screen's /man/2/draw-screen +screen's /man/3/vga +screen.c /man/10/conf +screen.c /man/3/draw +screen.fill /man/2/draw-screen +screenful /man/9/scrollbar +screenful /man/9/text +screenfuls /man/9/entry +screenfuls /man/9/listbox +screenfuls /man/9/text +screenid /man/3/draw +screenr /man/2/tk +screenr /man/2/wmclient +screenr2imager /man/2/wmclient +screens /man/1/miniterm +screens /man/2/draw-0intro +screens /man/2/draw-screen +screens /man/3/draw +screenx /man/9/canvas +screenx /man/9/panel +screeny /man/9/canvas +screeny /man/9/panel +script /man/1/0intro +script /man/1/charon +script /man/1/diff +script /man/1/grid-ns +script /man/1/itest +script /man/1/mk +script /man/1/plumb +script /man/1/sh +script /man/1/sh-arg +script /man/1/sh-file2chan +script /man/1/sh-regex +script /man/1/sh-string +script /man/1/sh-tk +script /man/1/toolbar +script /man/10/mk +script /man/10/plan9.ini +script /man/2/sh +script /man/4/cpu +script /man/6/keyboard +script /man/8/plumber +script /man/9/bind +script /man/9/canvas +script /man/9/menu +script /man/9/text +scripting /man/1/wish +scripting /man/2/sh +scripts /man/1/charon +scripts /man/1/diff +scripts /man/1/echo +scripts /man/1/itest +scripts /man/10/plan9.ini +scripts /man/8/svc +scripts /man/9/bind +scripts /man/9/canvas +scripts /man/9/text +scroll /man/1/acme +scroll /man/1/deb +scroll /man/1/tktester +scroll /man/2/palmfile +scroll /man/2/prefab-compound +scroll /man/2/prefab-element +scroll /man/4/acme +scroll /man/9/canvas +scroll /man/9/entry +scroll /man/9/listbox +scroll /man/9/scrollbar +scroll /man/9/see +scroll /man/9/text +scrollable /man/1/collab-clients +scrollable /man/1/wm-sh +scrollable /man/9/scrollbar +scrollbar /man/9/0intro +scrollbar /man/9/canvas +scrollbar /man/9/options +scrollbar /man/9/scrollbar +scrollbar's /man/9/scrollbar +scrollbars /man/1/tktester +scrollbars /man/9/canvas +scrollbars /man/9/entry +scrollbars /man/9/listbox +scrollbars /man/9/options +scrollbars /man/9/scrollbar +scrollbars /man/9/text +scrolled /man/1/deb +scrolled /man/2/prefab-element +scrolled /man/9/text +scrolling /man/1/acme +scrolling /man/1/mux +scrolling /man/1/wm-sh +scrolling /man/2/prefab-compound +scrolling /man/4/acme +scrolling /man/9/canvas +scrolling /man/9/listbox +scrolling /man/9/options +scrolling /man/9/scrollbar +scrollregion /man/9/canvas +scrolls /man/9/listbox +scs /man/8/cs +scsi /man/10/conf +scsi /man/10/plan9.ini +scsi /man/2/scsiio +scsi /man/3/sd +scsi.cmd /man/2/scsiio +scsi.m /man/2/scsiio +scsi.open /man/2/scsiio +scsicodes /man/2/scsiio +scsierror /man/2/scsiio +scsiio /man/2/disks +scsiio /man/2/scsiio +scsiio.b /man/2/scsiio +scsix /man/10/plan9.ini +sd /man/10/9load +sd /man/2/disks +sd /man/2/scsiio +sd /man/3/sd +sd /man/4/kfs +sd /man/8/kfscmd +sd /man/8/prep +sd00 /man/3/sd +sdc0 /man/3/ds +sdc0 /man/3/sd +sdc0 /man/8/prep +sdc1 /man/3/ds +sdd0 /man/3/ds +sdd0 /man/3/sd +sdd1 /man/3/ds +sdns /man/8/dns +se /man/2/format +se /man/2/regex +se /man/2/spki +se /man/9/options +se /man/9/types +se2fmt /man/2/format +search /man/1/acme +search /man/1/brutus +search /man/1/chmod +search /man/1/disdep +search /man/1/grid-query +search /man/1/look +search /man/1/math-misc +search /man/1/mc +search /man/1/sh +search /man/1/stack +search /man/1/wm-misc +search /man/10/2c +search /man/10/2l +search /man/10/9load +search /man/10/devattach +search /man/2/hash +search /man/2/selectfile +search /man/2/stringinttab +search /man/2/sys-stat +search /man/5/walk +search /man/6/attrdb +search /man/8/httpd +search /man/9/text +searchcommand /man/9/canvas +searched /man/1/acme +searched /man/1/grid-query +searched /man/1/mash +searched /man/10/2a +searched /man/10/ar +searched /man/2/sys-0intro +searched /man/2/sys-bind +searched /man/3/ftl +searched /man/4/namespace +searched /man/9/text +searches /man/1/acme +searches /man/1/limbo +searches /man/1/sh-alphabet +searches /man/10/9load +searches /man/10/devattach +searches /man/10/plan9.ini +searches /man/2/plumbmsg +searches /man/2/spree +searches /man/2/stringinttab +searches /man/4/acme +searches /man/9/text +searching /man/1/acme +searching /man/1/brutus +searching /man/1/deb +searching /man/1/grid-query +searching /man/1/mc +searching /man/10/2c +searching /man/10/2l +searching /man/10/9load +searching /man/8/dns +searchspec /man/9/canvas +sec /man/2/daytime +sec /man/2/keyring-crypt +seckey /man/2/secstore +secondary /man/6/colour +secondary /man/6/man +secondary /man/8/prep +seconds /man/1/date +seconds /man/1/du +seconds /man/1/gettar +seconds /man/1/itest +seconds /man/1/ls +seconds /man/1/mash +seconds /man/1/sleep +seconds /man/1/time +seconds /man/10/9load +seconds /man/10/plan9.ini +seconds /man/10/seconds +seconds /man/2/daytime +seconds /man/2/dhcpclient +seconds /man/2/geodesy +seconds /man/2/palmfile +seconds /man/2/sys-stat +seconds /man/2/virgil +seconds /man/2/volume +seconds /man/3/cap +seconds /man/3/prog +seconds /man/3/rtc +seconds /man/3/sd +seconds /man/4/keyfs +seconds /man/5/stat +seconds /man/6/keytext +seconds /man/8/applylog +seconds /man/8/createsignerkey +secret /man/1/crypt +secret /man/1/netkey +secret /man/1/passwd +secret /man/1/secstore +secret /man/2/factotum +secret /man/2/keyring-0intro +secret /man/2/keyring-auth +secret /man/2/keyring-certtostr +secret /man/2/keyring-crypt +secret /man/2/palmfile +secret /man/2/secstore +secret /man/2/security-0intro +secret /man/2/security-login +secret /man/2/security-ssl +secret /man/2/spki +secret /man/3/ip +secret /man/3/sign +secret /man/3/ssl +secret /man/3/tls +secret /man/4/factotum +secret /man/4/keyfs +secret /man/4/keysrv +secret /man/6/auth +secret /man/6/keys +secret /man/6/keytext +secret /man/6/login +secret /man/8/signer +secretdata /man/3/tls +secretin /man/2/security-ssl +secretin /man/3/ssl +secretout /man/2/security-ssl +secretout /man/3/ssl +secrets /man/1/passwd +secrets /man/2/keyring-0intro +secrets /man/3/tls +secrets /man/4/keyfs +secrets /man/4/namespace +secrets /man/6/keys +secrets /man/8/svc +secs /man/2/disks +secs2time /man/2/spki +secsize /man/2/disks +secsize /man/8/ftl +secstore /man/1/crypt +secstore /man/1/secstore +secstore /man/2/secstore +secstore.b /man/1/secstore +secstore.b /man/2/secstore +secstore.m /man/2/secstore +section /man/1/0intro +section /man/1/acme +section /man/1/charon +section /man/1/cprof +section /man/1/man +section /man/1/sh +section /man/1/sh-alphabet +section /man/1/sh-string +section /man/10/0intro +section /man/10/2l +section /man/10/a.out +section /man/10/conf +section /man/10/kproc +section /man/10/lock +section /man/10/print +section /man/10/qlock +section /man/10/styx +section /man/10ti925/tihost +section /man/2/0intro +section /man/2/asn1 +section /man/2/dhcpclient +section /man/2/dis +section /man/2/security-0intro +section /man/2/styx +section /man/2/styxservers +section /man/2/sys-0intro +section /man/2/tk +section /man/2/w3c-css +section /man/3/0intro +section /man/3/dbg +section /man/4/0intro +section /man/4/factotum +section /man/4/iostats +section /man/4/namespace +section /man/6/0intro +section /man/6/dis +section /man/6/sbl +section /man/7/0intro +section /man/8/0intro +section /man/8/init +section /man/8/prep +section /man/9/0intro +section /man/9/canvas +section /man/9/grid +section /man/9/scale +section /man/9/scrollbar +section /man/9/text +sections /man/1/cprof +sections /man/1/man +sections /man/10/a.out +sections /man/10/conf +sections /man/10/dynld +sections /man/10/lock +sections /man/10/plan9.ini +sections /man/2/0intro +sections /man/2/dis +sections /man/2/palmfile +sections /man/2/prefab-0intro +sections /man/2/sys-0intro +sections /man/3/0intro +sections /man/3/ip +sections /man/4/factotum +sections /man/4/iostats +sections /man/6/dis +sections /man/6/sbl +sections /man/9/canvas +sections /man/9/menu +sector /man/10/9load +sector /man/10/plan9.ini +sector /man/2/disks +sector /man/2/draw-image +sector /man/3/draw +sector /man/3/sd +sector /man/8/ftl +sector /man/8/prep +sectors /man/10/9load +sectors /man/2/disks +sectors /man/3/sd +sectors /man/4/dossrv +sectors /man/8/ftl +sectors /man/8/prep +sectorsize /man/8/prep +secure /man/1/secstore +secure /man/1/sum +secure /man/1/webgrab +secure /man/2/keyring-0intro +secure /man/2/keyring-crypt +secure /man/2/keyring-sha1 +secure /man/2/secstore +secure /man/2/security-0intro +secure /man/2/security-login +secure /man/2/security-ssl +secure /man/3/sign +secure /man/3/ssl +secure /man/3/tls +secure /man/6/login +secure /man/8/getauthinfo +secure /man/8/logind +secure /man/8/register +secure /man/8/signer +secured /man/3/sign +securely /man/2/keyring-0intro +securely /man/2/security-0intro +securenet /man/1/netkey +security /man/1/bind +security /man/1/charon +security /man/1/cpu +security /man/1/rcmd +security /man/1/secstore +security /man/2/0intro +security /man/2/ida +security /man/2/keyring-0intro +security /man/2/keyring-auth +security /man/2/keyring-certtostr +security /man/2/keyring-crypt +security /man/2/keyset +security /man/2/rand +security /man/2/registries +security /man/2/security-0intro +security /man/2/security-auth +security /man/2/security-login +security /man/2/security-random +security /man/2/security-ssl +security /man/2/styxservers +security /man/2/sys-export +security /man/2/sys-fauth +security /man/3/cap +security /man/3/fs +security /man/3/mnt +security /man/3/sign +security /man/3/ssl +security /man/3/tls +security /man/4/keysrv +security /man/4/lockfs +security /man/6/keys +security /man/6/login +security /man/7/db +security /man/7/dbsrv +security /man/8/collabsrv +security /man/8/createsignerkey +security /man/8/logind +security /man/8/rstyxd +security /man/8/srv +security's /man/2/keyring-rc4 +security.m /man/2/0intro +security.m /man/2/security-0intro +security.m /man/2/security-auth +security.m /man/2/security-login +security.m /man/2/security-random +security.m /man/2/security-ssl +security.m /man/2/virgil +security.m /man/7/db +sed /man/1/mk +sed /man/10/mk +seed /man/2/keyring-ipint +seed /man/2/keyring-rc4 +seed /man/2/palmfile +seed /man/2/rand +seeing /man/1/blur +seeing /man/2/sys-export +seek /man/1/dd +seek /man/1/read +seek /man/10/dynld +seek /man/2/bufio +seek /man/2/sys-0intro +seek /man/2/sys-dirread +seek /man/2/sys-seek +seek /man/3/arch +seek /man/3/cons +seek /man/3/tinyfs +seek /man/4/registry +seek /man/5/read +seek /man/8/cs +seekable /man/2/xml +seekend /man/2/bufio +seekend /man/2/sys-seek +seeking /man/2/sys-seek +seeking /man/5/read +seekrela /man/2/bufio +seekrela /man/2/sys-seek +seeks /man/2/sys-dirread +seekstart /man/2/bufio +seekstart /man/2/sys-seek +seemingly /man/10/mk +sees /man/1/collab-clients +sees /man/2/spree +sees /man/3/cmd +sees /man/3/pipe +sees /man/8/collabsrv +sees /man/8/rdbgsrv +sees /man/8/styxmon +segment /man/10/2l +segment /man/10/5coff +segment /man/10/a.out +segment /man/10/acid +segment /man/10/inm +segment /man/10/ms2 +segment /man/10ti925/epocimg +segment /man/2/dis +segment /man/2/string +segment /man/3/flash +segment /man/6/dis +segment /man/9/canvas +segments /man/10/a.out +segments /man/10/ksize +segments /man/10/kstrip +segments /man/10ti925/tihost +segments /man/3/draw +segments /man/3/flash +segments /man/3/ip +segments /man/8/collabsrv +segments /man/9/canvas +segue /man/1/wm +sel /man/1/mash-tk +sel /man/2/spree-cardlib +sel /man/9/text +sel.first /man/9/canvas +sel.first /man/9/entry +sel.last /man/9/canvas +sel.last /man/9/entry +select /man/1/acme +select /man/1/alphabet-fs +select /man/1/brutus +select /man/1/comm +select /man/1/filename +select /man/1/fs +select /man/1/mux +select /man/1/session +select /man/1/tktester +select /man/1/wc +select /man/1/wm-misc +select /man/10/9load +select /man/10/acid +select /man/10/conf +select /man/10/odbc +select /man/10/plan9.ini +select /man/2/dict +select /man/2/dis +select /man/2/ir +select /man/2/prefab-compound +select /man/2/print +select /man/2/registries +select /man/2/security-random +select /man/2/selectfile +select /man/2/w3c-css +select /man/3/ds +select /man/3/fs +select /man/5/attach +select /man/7/db +select /man/8/plumber +select /man/9/canvas +select /man/9/checkbutton +select /man/9/entry +select /man/9/radiobutton +select.any /man/2/w3c-css +select.attrib /man/2/w3c-css +select.class /man/2/w3c-css +select.element /man/2/w3c-css +select.id /man/2/w3c-css +select.pseudo /man/2/w3c-css +select.pseudofn /man/2/w3c-css +selectbackground /man/9/canvas +selectbackground /man/9/entry +selectbackground /man/9/listbox +selectbackground /man/9/options +selectbackground /man/9/text +selectborderwidth /man/9/canvas +selectborderwidth /man/9/listbox +selectborderwidth /man/9/options +selectborderwidth /man/9/text +selectcolor /man/9/checkbutton +selectcolor /man/9/choicebutton +selectcolor /man/9/menu +selectcolor /man/9/radiobutton +selected /man/1/acme +selected /man/1/brutus +selected /man/1/collab-clients +selected /man/1/deb +selected /man/1/fortune +selected /man/1/grid-ns +selected /man/1/keyboard +selected /man/1/logon +selected /man/1/ls +selected /man/1/mash-tk +selected /man/1/mux +selected /man/1/session +selected /man/1/tktester +selected /man/1/toolbar +selected /man/1/tr +selected /man/1/wm-misc +selected /man/1/wm-sh +selected /man/10/kproc +selected /man/10/plan9.ini +selected /man/10/readnum +selected /man/2/dis +selected /man/2/draw-font +selected /man/2/factotum +selected /man/2/prefab-element +selected /man/2/prefab-style +selected /man/2/prof +selected /man/2/security-auth +selected /man/2/selectfile +selected /man/2/spree-cardlib +selected /man/2/styxservers +selected /man/2/tabs +selected /man/2/w3c-xpointers +selected /man/3/ip +selected /man/3/mpeg +selected /man/3/tls +selected /man/3/vid +selected /man/4/acme +selected /man/4/cpu +selected /man/4/factotum +selected /man/4/registry +selected /man/6/dis +selected /man/6/plumbing +selected /man/8/init +selected /man/8/plumber +selected /man/9/canvas +selected /man/9/checkbutton +selected /man/9/choicebutton +selected /man/9/entry +selected /man/9/listbox +selected /man/9/menu +selected /man/9/options +selected /man/9/radiobutton +selected /man/9/text +selectedbutton /man/9/radiobutton +selectfile /man/2/selectfile +selectfile.b /man/2/selectfile +selectfile.m /man/2/selectfile +selectforeground /man/9/canvas +selectforeground /man/9/entry +selectforeground /man/9/listbox +selectforeground /man/9/options +selectforeground /man/9/text +selectimage /man/9/checkbutton +selectimage /man/9/menu +selectimage /man/9/radiobutton +selecting /man/1/acme +selecting /man/1/ftree +selecting /man/1/mash-tk +selecting /man/1/tktester +selecting /man/1/wm-misc +selecting /man/10/plan9.ini +selecting /man/2/prefab-compound +selecting /man/2/prefab-element +selecting /man/2/selectfile +selecting /man/2/sys-0intro +selecting /man/4/registry +selecting /man/9/canvas +selecting /man/9/choicebutton +selecting /man/9/menu +selection /man/1/acme +selection /man/1/brutus +selection /man/1/collab-clients +selection /man/1/grid-monitor +selection /man/1/mash-tk +selection /man/1/wm-sh +selection /man/10/acid +selection /man/10/error +selection /man/10/plan9.ini +selection /man/2/popup +selection /man/2/prefab-compound +selection /man/2/security-auth +selection /man/2/spree-cardlib +selection /man/4/acme +selection /man/4/import +selection /man/4/registry +selection /man/6/colour +selection /man/7/db +selection /man/9/canvas +selection /man/9/checkbutton +selection /man/9/entry +selection /man/9/listbox +selection /man/9/text +selections /man/1/tktester +selections /man/1/wm-misc +selections /man/1/wm-sh +selections /man/10/plan9.ini +selections /man/2/spree-cardlib +selections /man/9/listbox +selectively /man/10/styx +selectively /man/2/spree +selectmode /man/9/listbox +selector /man/1/alphabet-fs +selector /man/1/fs +selector /man/2/dhcpclient +selector /man/2/w3c-css +selector /man/2/w3c-xpointers +selectors /man/2/w3c-css +selectors /man/4/factotum +selects /man/1/acme +selects /man/1/alphabet-fs +selects /man/1/bind +selects /man/1/brutus +selects /man/1/collab-clients +selects /man/1/fs +selects /man/1/mash-tk +selects /man/1/tktester +selects /man/1/wm-sh +selects /man/10/conf +selects /man/10/plan9.ini +selects /man/2/prefab-compound +selects /man/2/sys-bind +selects /man/2/sys-stat +selects /man/2/w3c-xpointers +selects /man/3/flash +selects /man/3/vid +selects /man/6/dis +selects /man/6/proto +selects /man/6/sbl +selects /man/8/rdbgsrv +selects /man/9/canvas +selects /man/9/checkbutton +selects /man/9/entry +selects /man/9/listbox +selects /man/9/radiobutton +selects /man/9/scale +selects /man/9/text +self /man/1/yacc +self /man/2/0intro +self /man/2/asn1 +self /man/2/attrdb +self /man/2/bufio +self /man/2/cfg +self /man/2/dbm +self /man/2/debug +self /man/2/dhcpclient +self /man/2/dict +self /man/2/diskblocks +self /man/2/disks +self /man/2/dividers +self /man/2/draw-display +self /man/2/draw-example +self /man/2/draw-font +self /man/2/draw-image +self /man/2/draw-point +self /man/2/draw-rect +self /man/2/draw-screen +self /man/2/format +self /man/2/ida +self /man/2/ip +self /man/2/itslib +self /man/2/keyring-0intro +self /man/2/keyring-ipint +self /man/2/lock +self /man/2/palmfile +self /man/2/plumbmsg +self /man/2/prefab-compound +self /man/2/prefab-element +self /man/2/registries +self /man/2/scsiio +self /man/2/sets +self /man/2/sexprs +self /man/2/sh +self /man/2/spki +self /man/2/spree +self /man/2/spree-cardlib +self /man/2/styx +self /man/2/styxservers +self /man/2/styxservers-nametree +self /man/2/sys-self +self /man/2/timers +self /man/2/translate +self /man/2/ubfa +self /man/2/venti +self /man/2/w3c-xpointers +self /man/2/wmclient +self /man/2/wmsrv +self /man/2/xml +self /man/3/draw +self /man/3/ip +self /man/6/sbl +self /man/7/db +self /man/8/srv +selfv4 /man/2/ip +selfv6 /man/2/ip +semantic /man/6/utf +semantically /man/1/acme +semantically /man/10/c2l +semantics /man/1/mash +semantics /man/10/c2l +semantics /man/2/convcs +semantics /man/2/spree-cardlib +semantics /man/5/flush +semaphore /man/2/lock +semaphore.new /man/2/lock +semi /man/1/mc +semi /man/1/tiny +semiaxes /man/2/draw-image +semiaxes /man/3/draw +semicolon /man/1/charon +semicolon /man/1/mash +semicolon /man/9/0intro +semicolons /man/1/sh +semicolons /man/9/0intro +semiconductor /man/10/plan9.ini +semiconductor /man/3/rtc +semigraphic /man/1/miniterm +send /man/1/acme +send /man/1/collab-clients +send /man/1/plumb +send /man/1/sendmail +send /man/1/sh-tk +send /man/1/uuencode +send /man/1/wm +send /man/1/wm-sh +send /man/10/c2l +send /man/10/kproc +send /man/10/odbc +send /man/10ti925/tihost +send /man/2/0intro +send /man/2/alphabet-intro +send /man/2/devpointer +send /man/2/dhcpclient +send /man/2/draw-context +send /man/2/filter +send /man/2/fsproto +send /man/2/ip +send /man/2/keyring-0intro +send /man/2/keyring-getmsg +send /man/2/plumbmsg +send /man/2/prof +send /man/2/scsiio +send /man/2/spree +send /man/2/spree-allow +send /man/2/styx +send /man/2/styxpersist +send /man/2/styxservers +send /man/2/sys-dial +send /man/2/timers +send /man/2/tk +send /man/2/wait +send /man/2/wmsrv +send /man/3/draw +send /man/3/eia +send /man/3/ip +send /man/3/prog +send /man/3/ssl +send /man/3/tls +send /man/4/factotum +send /man/5/0intro +send /man/5/open +send /man/6/login +send /man/6/ndb +send /man/8/bootpd +send /man/8/mangaload +send /man/8/ping +send /man/9/0intro +send /man/9/send +sender /man/1/sendmail +sender /man/2/security-0intro +sender /man/2/smtp +sender /man/8/collabsrv +sender /man/8/plumber +sender's /man/1/collab-clients +sender's /man/1/sendmail +senderrmsg /man/2/keyring-getmsg +sendimage /man/2/print +sending /man/1/collab-clients +sending /man/1/dd +sending /man/1/miniterm +sending /man/1/wm +sending /man/10ti925/tihost +sending /man/2/filter +sending /man/2/ir +sending /man/2/plumbmsg +sending /man/2/security-0intro +sending /man/2/styxservers +sending /man/2/wait +sending /man/2/wmsrv +sending /man/3/ip +sending /man/3/pnp +sending /man/3/prog +sending /man/5/flush +sending /man/8/bootpd +sending /man/8/collabsrv +sending /man/8/plumber +sendmail /man/1/sendmail +sendmail /man/2/smtp +sendmail.b /man/1/sendmail +sendmsg /man/2/keyring-getmsg +sendpin /man/2/secstore +sendra /man/2/ip +sends /man/1/acme +sends /man/1/collab-clients +sends /man/1/miniterm +sends /man/1/plumb +sends /man/1/sendmail +sends /man/1/sh +sends /man/1/sh-tk +sends /man/1/telnet +sends /man/1/tktester +sends /man/1/wm +sends /man/10/kproc +sends /man/2/command +sends /man/2/dhcpclient +sends /man/2/draw-context +sends /man/2/fsproto +sends /man/2/keyring-getmsg +sends /man/2/plumbmsg +sends /man/2/scsiio +sends /man/2/security-login +sends /man/2/smtp +sends /man/2/spree +sends /man/2/spree-gather +sends /man/2/sys-file2chan +sends /man/2/tk +sends /man/2/wait +sends /man/2/wmlib +sends /man/2/wmsrv +sends /man/3/dbg +sends /man/3/i2c +sends /man/3/lpt +sends /man/3/tls +sends /man/5/flush +sends /man/6/auth +sends /man/6/login +sends /man/6/plumbing +sends /man/7/db +sends /man/8/ping +sends /man/8/rdbgsrv +sends /man/8/signer +sends /man/8/styxchat +sends /man/8/virgild +sends /man/9/send +sendtext /man/1/wm-sh +sendtextfd /man/2/print +sensible /man/2/prefab-element +sensible /man/2/sys-fversion +sensible /man/8/getauthinfo +sensible /man/8/prep +sensibly /man/8/httpd +sensitive /man/10/eve +sensitive /man/10/plan9.ini +sensitive /man/3/touch +sensitive /man/6/colour +sensitive /man/9/grab +sent /man/1/acme +sent /man/1/collab-clients +sent /man/1/idea +sent /man/1/mash +sent /man/1/miniterm +sent /man/1/plumb +sent /man/1/sh +sent /man/1/sh-file2chan +sent /man/1/sh-tk +sent /man/1/tkcmd +sent /man/1/tktester +sent /man/1/uuencode +sent /man/1/wm +sent /man/1/wm-sh +sent /man/10/odbc +sent /man/10/plan9.ini +sent /man/10ti925/tihost +sent /man/2/draw-context +sent /man/2/encoding +sent /man/2/filter +sent /man/2/ir +sent /man/2/keyring-0intro +sent /man/2/print +sent /man/2/security-0intro +sent /man/2/spree +sent /man/2/spree-cardlib +sent /man/2/spree-gather +sent /man/2/styxconv +sent /man/2/sys-file2chan +sent /man/2/timers +sent /man/2/tk +sent /man/2/tkclient +sent /man/2/wmclient +sent /man/2/wmsrv +sent /man/2/xml +sent /man/3/cons +sent /man/3/dbg +sent /man/3/draw +sent /man/3/ether +sent /man/3/ip +sent /man/3/tls +sent /man/3/vga +sent /man/4/acme +sent /man/4/iostats +sent /man/5/flush +sent /man/5/open +sent /man/5/stat +sent /man/5/version +sent /man/6/login +sent /man/7/db +sent /man/8/collabsrv +sent /man/8/httpd +sent /man/8/plumber +sent /man/8/prep +sent /man/8/register +sent /man/8/signer +sent /man/8/styxchat +sent /man/8/styxmon +sent /man/9/send +sep /man/1/cal +sep /man/2/w3c-css +separately /man/1/ls +separately /man/1/man +separately /man/1/secstore +separately /man/1/tail +separately /man/10/qio +separately /man/2/secstore +separately /man/2/sys-pctl +separately /man/3/cmd +separately /man/3/draw +separately /man/3/ip +separately /man/3/mnt +separately /man/3/mpeg +separately /man/3/pipe +separately /man/3/rtc +separating /man/1/charon +separating /man/1/mk +separating /man/10/mk +separating /man/2/cfg +separation /man/1/alphabet-abc +separation /man/1/alphabet-grid +separator /man/1/sh-std +separator /man/1/sh-string +separator /man/1/toolbar +separator /man/10/plan9.ini +separator /man/2/bufio +separator /man/2/prefab-element +separator /man/9/0intro +separator /man/9/menu +separators /man/1/mash +separators /man/1/sh +separators /man/1/sh-std +separators /man/10/parsecmd +separators /man/2/prefab-compound +separators /man/2/prefab-element +sepchar /man/2/bufio +seperated /man/1/math-misc +seperated /man/3/prof +seprint /man/10/print +sepstring /man/2/bufio +seq /man/1/sh-expr +seq /man/2/asn1 +seq /man/2/spki +seq /man/2/spki-verifier +seq /man/8/collabsrv +seqel /man/2/spki +seqel /man/2/spki-verifier +sequences /man/1/freq +sequences /man/1/limbo +sequences /man/1/tsort +sequences /man/1/wc +sequences /man/1/wish +sequences /man/1/xd +sequences /man/10/2c +sequences /man/10/9load +sequences /man/10/acid +sequences /man/2/asn1 +sequences /man/2/convcs +sequences /man/2/sexprs +sequences /man/2/spki +sequences /man/2/spki-verifier +sequences /man/2/sys-tokenize +sequences /man/6/keyboard +sequences /man/6/sexprs +sequences /man/6/translate +sequences /man/6/utf +sequences /man/9/0intro +sequences /man/9/canvas +sequential /man/2/imagefile +sequential /man/2/stringinttab +sequential /man/2/sys-0intro +sequentially /man/1/acme +sequentially /man/1/mk +sequentially /man/10/mk +sequentially /man/2/sys-0intro +sequentially /man/3/ds +sequentially /man/4/acme +serial /man/1/avr +serial /man/10/5cv +serial /man/10/plan9.ini +serial /man/10/qio +serial /man/10/qlock +serial /man/3/cons +serial /man/3/dbg +serial /man/3/eia +serial /man/3/ip +serial /man/3/pnp +serial /man/3/rtc +serial /man/4/export +serial /man/4/palmsrv +serial /man/8/mangaload +serial /man/8/manufacture +serial /man/8/rdbgsrv +serial0 /man/10/plan9.ini +serialise /man/10/qlock +serialised /man/10/sleep +series /man/1/cprof +series /man/1/mash +series /man/1/math-misc +series /man/10/plan9.ini +series /man/2/crc +series /man/2/draw-font +series /man/2/draw-image +series /man/3/draw +series /man/9/canvas +serve /man/1/calendar +serve /man/1/emu +serve /man/1/grid-ns +serve /man/1/listen +serve /man/1/mash +serve /man/1/sh-file2chan +serve /man/1/tiny +serve /man/2/prefab-element +serve /man/2/styxpersist +serve /man/2/styxservers-nametree +serve /man/2/wmsrv +serve /man/4/0intro +serve /man/4/cpu +serve /man/4/dossrv +serve /man/4/export +serve /man/4/import +serve /man/4/kfs +serve /man/4/memfs +serve /man/5/0intro +serve /man/8/cs +serve /man/8/init +serve /man/8/mkfs +serve /man/8/rdbgsrv +serve /man/8/styxmon +serve /man/9/text +served /man/1/9win +served /man/1/acme +served /man/1/collab +served /man/1/logwindow +served /man/10/dev +served /man/10/devattach +served /man/2/styxservers +served /man/2/sys-bind +served /man/2/tk +served /man/3/cons +served /man/3/ip +served /man/3/mnt +served /man/3/pnp +served /man/4/cpu +served /man/4/import +served /man/4/keysrv +served /man/4/lockfs +served /man/4/registry +served /man/5/0intro +served /man/8/changelogin +served /man/8/httpd +server /man/1/9win +server /man/1/acme +server /man/1/alphabet-abc +server /man/1/alphabet-grid +server /man/1/alphabet-main +server /man/1/bind +server /man/1/charon +server /man/1/chgrp +server /man/1/collab +server /man/1/cp +server /man/1/emu +server /man/1/ftest +server /man/1/listen +server /man/1/miniterm +server /man/1/passwd +server /man/1/secstore +server /man/1/sendmail +server /man/1/webgrab +server /man/10/9load +server /man/10/devattach +server /man/10/odbc +server /man/10/plan9.ini +server /man/10/styxserver +server /man/2/dhcpclient +server /man/2/factotum +server /man/2/format +server /man/2/keyring-auth +server /man/2/plumbmsg +server /man/2/pop3 +server /man/2/secstore +server /man/2/security-0intro +server /man/2/security-auth +server /man/2/smtp +server /man/2/spree +server /man/2/styx +server /man/2/styxconv +server /man/2/styxpersist +server /man/2/styxservers +server /man/2/sys-0intro +server /man/2/sys-bind +server /man/2/sys-dial +server /man/2/sys-export +server /man/2/sys-fauth +server /man/2/sys-file2chan +server /man/2/sys-fversion +server /man/2/sys-open +server /man/2/sys-stat +server /man/2/tftp +server /man/2/venti +server /man/3/0intro +server /man/3/draw +server /man/3/ds +server /man/3/ip +server /man/3/kprof +server /man/3/mnt +server /man/3/pbus +server /man/3/prog +server /man/3/srv +server /man/3/srv9 +server /man/3/tinyfs +server /man/3/tls +server /man/4/cpu +server /man/4/factotum +server /man/4/ftpfs +server /man/4/iostats +server /man/4/keyfs +server /man/4/keysrv +server /man/4/lockfs +server /man/4/namespace +server /man/4/palmsrv +server /man/4/registry +server /man/5/0intro +server /man/5/attach +server /man/5/clunk +server /man/5/flush +server /man/5/open +server /man/5/remove +server /man/5/stat +server /man/5/version +server /man/5/walk +server /man/6/keys +server /man/6/ndb +server /man/6/users +server /man/7/db +server /man/7/dbsrv +server /man/8/applylog +server /man/8/bootpd +server /man/8/collabsrv +server /man/8/createsignerkey +server /man/8/cs +server /man/8/dhcp +server /man/8/dns +server /man/8/getauthinfo +server /man/8/httpd +server /man/8/init +server /man/8/kfscmd +server /man/8/logind +server /man/8/mkfs +server /man/8/rdbgsrv +server /man/8/rstyxd +server /man/8/signer +server /man/8/sntp +server /man/8/srv +server /man/8/styxchat +server /man/8/svc +server /man/8/virgild +server's /man/1/listen +server's /man/2/security-auth +server's /man/2/security-login +server's /man/2/styxservers +server's /man/2/sys-file2chan +server's /man/3/srv +server's /man/5/0intro +server's /man/5/attach +server's /man/5/stat +server's /man/5/version +server's /man/7/dbsrv +server's /man/8/applylog +server's /man/8/createsignerkey +server's /man/8/rstyxd +server's /man/8/srv +server's /man/8/styxchat +serverid /man/2/dhcpclient +serverpath /man/8/applylog +serverroot /man/8/applylog +servers /man/1/bind +servers /man/1/charon +servers /man/1/chgrp +servers /man/1/logon +servers /man/1/miniterm +servers /man/1/secstore +servers /man/10/eve +servers /man/10/plan9.ini +servers /man/2/dhcpclient +servers /man/2/factotum +servers /man/2/format +servers /man/2/registries +servers /man/2/styx +servers /man/2/styxpersist +servers /man/2/styxservers +servers /man/2/sys-stat +servers /man/2/virgil +servers /man/3/mnt +servers /man/4/0intro +servers /man/4/namespace +servers /man/5/0intro +servers /man/5/stat +servers /man/5/walk +servers /man/6/ndb +servers /man/8/bootpd +servers /man/8/changelogin +servers /man/8/collabsrv +servers /man/8/cs +servers /man/8/dns +servers /man/8/getauthinfo +servers /man/8/httpd +servers /man/8/srv +servers /man/8/svc +servers.net /man/6/ndb +serves /man/1/alphabet-main +serves /man/1/bind +serves /man/1/grid-ns +serves /man/1/grid-register +serves /man/1/wm-sh +serves /man/10/dev +serves /man/10/devattach +serves /man/2/keyring-gensk +serves /man/2/prefab-element +serves /man/2/styxconv +serves /man/2/sys-pipe +serves /man/3/audio +serves /man/3/boot +serves /man/3/cmd +serves /man/3/cons +serves /man/3/dbg +serves /man/3/draw +serves /man/3/ds +serves /man/3/dup +serves /man/3/dynld +serves /man/3/eia +serves /man/3/env +serves /man/3/ether +serves /man/3/flash +serves /man/3/floppy +serves /man/3/fs +serves /man/3/ftl +serves /man/3/gpio +serves /man/3/i2c +serves /man/3/ip +serves /man/3/logfs +serves /man/3/mpeg +serves /man/3/pbus +serves /man/3/plap +serves /man/3/pnp +serves /man/3/prof +serves /man/3/prog +serves /man/3/sd +serves /man/3/snarf +serves /man/3/srv9 +serves /man/3/switch +serves /man/3/touch +serves /man/3/tv +serves /man/3/usb +serves /man/3/vid +serves /man/4/acme +serves /man/4/export +serves /man/4/factotum +serves /man/4/import +serves /man/4/keyfs +serves /man/4/keysrv +serves /man/4/lockfs +serves /man/4/mntgen +serves /man/4/palmsrv +serves /man/4/registry +serves /man/4/spree +serves /man/5/attach +serves /man/8/collabsrv +serves /man/8/cs +serves /man/8/dns +serves /man/8/httpd +serves /man/8/rip +serves /man/8/styxmon +service's /man/2/registries +service1 /man/3/srv9 +service2 /man/3/srv9 +servicedir /man/1/collab-clients +services /man/1/0intro +services /man/1/charon +services /man/1/collab +services /man/1/collab-clients +services /man/1/cp +services /man/1/emu +services /man/1/grid-localreg +services /man/1/miniterm +services /man/1/mux +services /man/1/ns +services /man/1/webgrab +services /man/10/ntsrv +services /man/2/0intro +services /man/2/pop3 +services /man/2/registries +services /man/2/security-0intro +services /man/2/smtp +services /man/2/srv +services /man/2/sys-pctl +services /man/3/cmd +services /man/3/ip +services /man/3/srv9 +services /man/3/usb +services /man/4/0intro +services /man/4/acme +services /man/4/factotum +services /man/4/mntgen +services /man/4/namespace +services /man/4/ramfile +services /man/4/registry +services /man/6/keys +services /man/6/namespace +services /man/8/0intro +services /man/8/bootpd +services /man/8/collabsrv +services /man/8/cs +services /man/8/getauthinfo +services /man/8/httpd +services /man/8/register +services /man/8/rstyxd +services /man/8/srv +services /man/8/svc +services /man/8/virgild +services.cfg /man/8/collabsrv +serving /man/1/bind +serving /man/2/styxservers +serving /man/2/sys-bind +serving /man/2/sys-export +serving /man/2/sys-file2chan +serving /man/3/srv9 +serving /man/4/export +serving /man/5/0intro +serving /man/8/getauthinfo +serving /man/8/httpd +session /man/1/charon +session /man/1/grid-ns +session /man/1/session +session /man/1/spree-join +session /man/2/prof +session /man/2/spree +session /man/2/venti +session /man/3/dbg +session /man/3/tls +session /man/4/cpu +session /man/5/0intro +session /man/5/version +session /man/5/walk +session /man/7/db +session /man/8/rdbgsrv +session.b /man/1/session +session.rpc /man/2/venti +sessions /man/2/spree +sessions /man/4/spree +set.bytes /man/2/sets +set.str /man/2/sets +setalpha /man/2/draw-0intro +setalpha /man/6/colour +setappinfo /man/2/palmfile +setarchivename /man/2/spree-cardlib +setattr /man/2/spree +setattrvisibility /man/2/spree +setbpt /man/2/debug +sete /man/2/spki-verifier +setenv /man/2/env +setexcl /man/2/spree-cardlib +setexcnotifyleader /man/2/exception +setexcpropagate /man/2/exception +setface /man/2/spree-cardlib +setfill /man/2/bufio +sethi /man/1/yacc +setid /man/2/keyring-auth +setid /man/2/security-auth +setimage /man/2/wmsrv +setjmp /man/10/error +setlocal /man/2/sh +setmaprgbv /man/6/colour +setname /man/2/spree-objstore +setoptions /man/2/sh +setorigin /man/2/wmsrv +setorigin:fn /man/2/wmsrv +setpri /man/10/kproc +setproc /man/10/acid +setrange /man/2/spree-cardlib +setroot /man/1/alphabet-fs +setroot /man/1/fs +sets.m /man/2/bloomfilter +sets.m /man/2/sets +sets.m /man/2/spree +sets.m /man/2/spree-cardlib +sets32.m /man/2/sets +setsortinfo /man/2/palmfile +setting /man/1/auplay +setting /man/1/charon +setting /man/1/deb +setting /man/1/emu +setting /man/1/runas +setting /man/1/sh-std +setting /man/1/tktester +setting /man/10/a.out +setting /man/10/allocb +setting /man/10/plan9.ini +setting /man/2/dbm +setting /man/2/disks +setting /man/2/geodesy +setting /man/2/itslib +setting /man/2/prefab-element +setting /man/2/print +setting /man/2/spree-cardlib +setting /man/2/sys-stat +setting /man/2/ubfa +setting /man/3/cmd +setting /man/3/flash +setting /man/3/ftl +setting /man/3/i2c +setting /man/3/mpeg +setting /man/3/rtc +setting /man/3/vga +setting /man/4/factotum +setting /man/5/open +setting /man/6/man +setting /man/8/init +setting /man/9/canvas +setting /man/9/grid +setting /man/9/scrollbar +setting /man/9/text +settings /man/1/charon +settings /man/1/ebook +settings /man/10/mk +settings /man/10/panic +settings /man/10/plan9.ini +settings /man/2/exception +settings /man/2/geodesy +settings /man/2/print +settings /man/3/draw +settings /man/3/eia +settings /man/3/fs +settings /man/3/i2c +settings /man/3/ip +settings /man/3/pnp +settings /man/3/touch +settings /man/3/tv +settings /man/3/vga +settings /man/8/touchcal +settings /man/9/grid +settings /man/9/scrollbar +settitle /man/2/tkclient +settitle /man/2/wmclient +setup /man/1/grid-monitor +setup /man/10/plan9.ini +setup /man/2/keyring-crypt +setup /man/3/usb +setup /man/3/vga +setusage /man/2/arg +setvalue /man/9/choicebutton +setvisibility /man/2/spree +sev /man/2/itslib +seven /man/1/ps +seven /man/3/prog +severity /man/1/sh-test +severity /man/2/itslib +sexp /man/1/sh-sexprs +sexp /man/2/format +sexp /man/2/sexprs +sexp /man/2/spki +sexp /man/2/spki-verifier +sexp /man/6/sexprs +sexp.binary /man/2/sexprs +sexp.list /man/2/sexprs +sexp.parse /man/2/format +sexp.parse /man/2/sexprs +sexp.read /man/2/sexprs +sexp.string /man/2/sexprs +sexp.txt /man/2/sexprs +sexpr /man/1/sh-sexprs +sexpr /man/2/spki +sexpr /man/6/sexprs +sexprs /man/1/sh-sexprs +sexprs /man/2/format +sexprs /man/2/sexprs +sexprs /man/2/spki +sexprs /man/2/spki-verifier +sexprs /man/2/ubfa +sexprs /man/4/factotum +sexprs /man/6/sexprs +sexprs /man/6/ubfa +sexprs.b /man/1/sh-sexprs +sexprs.b /man/2/sexprs +sexprs.m /man/2/format +sexprs.m /man/2/sexprs +sexprs.m /man/2/spki +sexprs.m /man/2/spki-verifier +sfactotum /man/4/factotum +sfn /man/1/sh-std +sg /man/1/sh-regex +sget /man/1/mash-tk +sgi /man/10/2l +sgml /man/1/brutus +sgml /man/1/cook +sh /man/1/0intro +sh /man/1/alphabet-abc +sh /man/1/alphabet-fs +sh /man/1/alphabet-grid +sh /man/1/alphabet-main +sh /man/1/bind +sh /man/1/cpu +sh /man/1/du +sh /man/1/echo +sh /man/1/env +sh /man/1/fc +sh /man/1/filename +sh /man/1/fs +sh /man/1/ftest +sh /man/1/itest +sh /man/1/listen +sh /man/1/mk +sh /man/1/rcmd +sh /man/1/read +sh /man/1/sh +sh /man/1/sh-alphabet +sh /man/1/sh-arg +sh /man/1/sh-csv +sh /man/1/sh-expr +sh /man/1/sh-file2chan +sh /man/1/sh-regex +sh /man/1/sh-sexprs +sh /man/1/sh-std +sh /man/1/sh-string +sh /man/1/sh-test +sh /man/1/sh-tk +sh /man/1/time +sh /man/1/tiny +sh /man/1/tkcmd +sh /man/1/toolbar +sh /man/1/wish +sh /man/1/wm-sh +sh /man/10/mk +sh /man/10/parsecmd +sh /man/2/0intro +sh /man/2/arg +sh /man/2/command +sh /man/2/itslib +sh /man/2/sh +sh /man/2/string +sh /man/2/sys-file2chan +sh /man/2/sys-pctl +sh /man/2/sys-print +sh /man/2/tk +sh /man/2/wait +sh /man/3/cmd +sh /man/3/env +sh /man/3/kprof +sh /man/4/9srvfs +sh /man/4/dbfs +sh /man/4/factotum +sh /man/4/iostats +sh /man/4/registry +sh /man/6/man +sh /man/6/proto +sh /man/6/regexp +sh /man/8/kfscmd +sh /man/8/rstyxd +sh /man/8/srv +sh /man/8/styxchat +sh /man/8/svc +sh /man/9/0intro +sh's /man/1/sh +sh.b /man/1/tiny +sh.b /man/1/wm-sh +sh.dis /man/1/acme +sh.dis /man/1/emu +sh.dis /man/1/sh-alphabet +sh.dis /man/2/command +sh.dis /man/8/init +sh.m /man/1/tiny +sh.m /man/2/command +sh.m /man/2/sh +sh.y /man/1/sh +sh.y /man/2/sh +sha /man/1/secstore +sha /man/1/sum +sha /man/2/keyring-sha1 +sha /man/2/keyset +sha /man/2/registries +sha /man/3/ssl +sha /man/6/keys +sha /man/6/login +sha /man/8/changelogin +sha /man/8/srv +sha1 /man/1/sum +sha1 /man/2/ida +sha1 /man/2/keyring-0intro +sha1 /man/2/keyring-sha1 +sha1 /man/2/keyset +sha1 /man/2/security-0intro +sha1 /man/2/spki +sha1 /man/2/venti +sha1 /man/3/cap +sha1 /man/3/dynld +sha1 /man/3/sign +sha1 /man/3/tls +sha1 /man/4/import +sha1 /man/4/keysrv +sha1 /man/6/keytext +sha1 /man/8/changelogin +sha1.c /man/2/keyring-sha1 +sha1dlen /man/2/keyring-sha1 +sha1dlen /man/3/cap +sha1sum /man/1/sum +sha1sum.b /man/1/sum +shade /man/6/colour +shaded /man/2/draw-example +shades /man/6/colour +shadlen /man/2/keyring-sha1 +shape /man/2/imagefile +shape /man/9/canvas +shaped /man/2/draw-display +shaped /man/2/draw-image +shaped /man/9/canvas +shapes /man/1/collab-clients +shapes /man/2/draw-image +share /man/1/charon +share /man/1/tiny +share /man/10/acid +share /man/10/sleep +share /man/2/0intro +share /man/2/bufio +share /man/2/draw-0intro +share /man/2/draw-display +share /man/2/draw-rect +share /man/2/keyring-auth +share /man/2/styxservers +share /man/2/sys-0intro +share /man/2/sys-pctl +share /man/2/sys-pipe +share /man/3/dbg +share /man/4/keyfs +share /man/5/0intro +share /man/8/collabsrv +share /man/8/prep +share /man/9/radiobutton +shared /man/1/collab-clients +shared /man/1/netkey +shared /man/1/passwd +shared /man/1/ps +shared /man/10/kproc +shared /man/10/lock +shared /man/10/newchan +shared /man/10/sleep +shared /man/2/command +shared /man/2/draw-context +shared /man/2/env +shared /man/2/factotum +shared /man/2/keyring-auth +shared /man/2/security-0intro +shared /man/2/sys-0intro +shared /man/3/logfs +shared /man/3/sign +shared /man/3/srv9 +shared /man/4/factotum +shared /man/6/auth +shared /man/6/dis +shared /man/6/keys +shared /man/6/login +shared /man/8/collabsrv +shared /man/8/svc +shared /man/9/text +sharemp /man/2/dis +sharemp /man/6/dis +shares /man/10/kproc +shares /man/2/dhcpclient +shares /man/2/security-0intro +shares /man/2/sys-0intro +shares /man/2/sys-pctl +shares /man/7/db +sharing /man/10/intrenable +sharing /man/2/sexprs +sharing /man/2/sys-file2chan +sharing /man/2/sys-pctl +sharing /man/3/env +sharing /man/5/0intro +sharing /man/6/ndb +sharing /man/8/collabsrv +shctl /man/1/wm-sh +sheet /man/2/w3c-css +sheets /man/2/w3c-css +shell /man/1/0intro +shell /man/1/acme +shell /man/1/alphabet-fs +shell /man/1/alphabet-main +shell /man/1/bind +shell /man/1/cd +shell /man/1/echo +shell /man/1/emu +shell /man/1/fc +shell /man/1/filename +shell /man/1/fs +shell /man/1/grid-ns +shell /man/1/grid-query +shell /man/1/idea +shell /man/1/listen +shell /man/1/mash +shell /man/1/mash-tk +shell /man/1/mk +shell /man/1/p +shell /man/1/sh +shell /man/1/sh-alphabet +shell /man/1/sh-arg +shell /man/1/sh-expr +shell /man/1/sh-file2chan +shell /man/1/sh-regex +shell /man/1/sh-std +shell /man/1/sh-string +shell /man/1/sh-test +shell /man/1/sh-tk +shell /man/1/tiny +shell /man/1/toolbar +shell /man/1/wish +shell /man/1/wm-sh +shell /man/10/acid +shell /man/10/mk +shell /man/10/odbc +shell /man/10/plan9.ini +shell /man/2/0intro +shell /man/2/alphabet-intro +shell /man/2/arg +shell /man/2/draw-context +shell /man/2/draw-example +shell /man/2/sh +shell /man/2/sys-pctl +shell /man/3/0intro +shell /man/4/cpu +shell /man/4/iostats +shell /man/9/0intro +shell's /man/1/mash-tk +shell's /man/1/tiny +shell's /man/1/wm-sh +shell's /man/2/sh +shellbuiltin /man/2/sh +shells /man/1/ftest +shells /man/1/sh-std +shells /man/1/wm-sh +shells /man/2/command +shells /man/2/sh +shield /man/6/login +shift /man/1/fc +shift /man/1/mathcalc +shift /man/1/sh-expr +shift /man/9/scrollbar +shifts /man/9/canvas +shifts /man/9/entry +shifts /man/9/listbox +shifts /man/9/text +shl /man/1/fc +shl /man/1/sh-expr +shl /man/2/keyring-ipint +shnew.b /man/1/stack +shnew.b:105.7 /man/1/stack +shnew.b:483.2 /man/1/stack +shnew.b:552.3 /man/1/stack +shnew.b:83.3 /man/1/stack +shorn /man/10/devattach +shorn /man/2/names +shorn /man/2/w3c-css +short /man/1/dd +short /man/1/fmt +short /man/1/tr +short /man/10/c2l +short /man/10/devattach +short /man/10/inb +short /man/10/lock +short /man/10/print +short /man/10/splhi +short /man/10/styx +short /man/2/palmfile +short /man/2/print +short /man/2/w3c-xpointers +short /man/3/mnt +short /man/3/tv +short /man/4/factotum +short /man/6/man +short /man/6/ndb +short /man/9/text +shortened /man/6/utf +shorter /man/1/cprof +shorter /man/1/mprof +shorter /man/1/prof +shorter /man/10/qio +shorter /man/9/canvas +shorter /man/9/text +shortest /man/6/utf +shorthand /man/2/sexprs +shorthand /man/2/w3c-xpointers +shorthand /man/5/0intro +shorthands /man/6/keyboard +shortly /man/2/ip +shorts /man/10/inb +showing /man/1/asm +showing /man/1/blur +showing /man/1/collab-clients +showing /man/1/cprof +showing /man/1/mprof +showing /man/1/prof +showing /man/10/iar +showing /man/2/styx +showing /man/3/dbg +showing /man/3/sign +showing /man/9/choicebutton +showing /man/9/menu +shown /man/1/cprof +shown /man/1/deb +shown /man/1/filename +shown /man/1/lc +shown /man/1/mathcalc +shown /man/1/ns +shown /man/1/ps +shown /man/1/wm-misc +shown /man/1/wm-sh +shown /man/10/devattach +shown /man/10/error +shown /man/10/kproc +shown /man/2/command +shown /man/2/math-linalg +shown /man/2/palmfile +shown /man/2/prof +shown /man/2/sexprs +shown /man/2/sys-stat +shown /man/2/tkclient +shown /man/2/wmclient +shown /man/3/fs +shown /man/3/root +shown /man/3/sign +shown /man/3/srv9 +shown /man/4/cpu +shown /man/4/kfs +shown /man/6/sexprs +shown /man/8/create +shown /man/8/register +shown /man/9/see +showprogress /man/1/charon +shows /man/1/collab-clients +shows /man/1/cprof +shows /man/1/deb +shows /man/1/grid-monitor +shows /man/1/logwindow +shows /man/1/mprof +shows /man/1/prof +shows /man/1/session +shows /man/1/tktester +shows /man/1/toolbar +shows /man/1/wm-misc +shows /man/10/print +shows /man/10/styxserver +shows /man/10/xalloc +shows /man/2/math-0intro +shows /man/2/prof +shows /man/2/security-auth +shows /man/2/translate +shows /man/3/ftl +shows /man/3/gpio +shows /man/3/ip +shows /man/8/styxchat +showvalue /man/9/scale +shr /man/1/fc +shr /man/1/sh-expr +shr /man/2/keyring-ipint +shrinks /man/9/grid +shrinks /man/9/pack +shuffle /man/2/spree-cardlib +shuffles /man/2/spree-cardlib +shut /man/10/dev +shut /man/10/devattach +shut /man/2/draw-context +shut /man/2/styxservers-nametree +shut /man/2/timers +shut /man/4/ftpfs +shut /man/4/palmsrv +shut /man/8/0intro +shut /man/8/shutdown +shutdown /man/10/dev +shutdown /man/2/plumbmsg +shutdown /man/2/sys-open +shutdown /man/2/timers +shutdown /man/8/shutdown +shutdown.b /man/8/shutdown +shuts /man/2/drawmux +shuts /man/2/plumbmsg +shutting /man/2/drawmux +shutting /man/3/logfs +shuttling /man/4/factotum +si /man/2/dis +si /man/6/dis +siaddr /man/2/dhcpclient +sibling /man/10/styxserver +sibling /man/2/w3c-xpointers +siblings /man/9/lower +siblings /man/9/raise +sic /man/10/plan9.ini +sic /man/2/dhcpclient +sic /man/4/9srvfs +sic /man/7/db +sides /man/5/version +sieve /man/1/cprof +sieve /man/1/math-misc +sieve.b /man/1/math-misc +sieve.dis /man/1/cprof +sig /man/10/dynld +sig /man/2/dis +sig /man/2/spki +sig /man/6/auth +sig /man/6/dis +sig /man/6/keytext +sig0 /man/2/keyring-auth +sig0 /man/6/auth +sig1 /man/2/keyring-auth +sig1 /man/6/auth +sigalg /man/2/keyring-0intro +sigalg /man/2/spki +sigalg /man/6/keytext +siggraph /man/2/draw-image +sigma /man/1/mc +sign /man/1/cprof +sign /man/1/look +sign /man/1/mash +sign /man/1/mc +sign /man/1/mk +sign /man/1/sh +sign /man/1/sort +sign /man/10/2c +sign /man/10/a.out +sign /man/10/atoi +sign /man/10/mk +sign /man/10/plan9.ini +sign /man/10/print +sign /man/2/alphabet-intro +sign /man/2/daytime +sign /man/2/dis +sign /man/2/keyring-0intro +sign /man/2/keyring-sha1 +sign /man/2/math-fp +sign /man/2/spki +sign /man/2/sys-print +sign /man/2/w3c-css +sign /man/3/sign +sign /man/6/keyboard +sign /man/6/keys +sign /man/6/sbl +sign /man/8/register +sign /man/9/types +signal /man/10/dev +signal /man/10/intrenable +signal /man/10ti925/tihost +signal /man/3/eia +signaled /man/9/0intro +signalled /man/10/sleep +signals /man/10/dev +signals /man/10ti925/tihost +signals /man/2/bufio-chanfill +signals /man/2/sys-file2chan +signals /man/3/tv +signals /man/3/vga +signature /man/10/2c +signature /man/10/5cv +signature /man/10/dynld +signature /man/10ti925/epocimg +signature /man/2/alphabet-intro +signature /man/2/command +signature /man/2/dis +signature /man/2/keyring-0intro +signature /man/2/keyring-sha1 +signature /man/2/security-0intro +signature /man/2/spki +signature /man/3/dynld +signature /man/3/sign +signature /man/6/dis +signature /man/6/keytext +signature /man/8/createsignerkey +signatures /man/1/limbo +signatures /man/10/2c +signatures /man/2/alphabet-intro +signatures /man/2/keyring-0intro +signatures /man/2/keyring-sha1 +signatures /man/2/security-0intro +signatures /man/2/spki +signatures /man/2/spki-verifier +signatures /man/8/createsignerkey +signctl /man/3/sign +signed /man/1/passwd +signed /man/1/sh-expr +signed /man/1/tail +signed /man/10/atoi +signed /man/2/dis +signed /man/2/keyring-0intro +signed /man/2/keyring-auth +signed /man/2/keyset +signed /man/2/security-0intro +signed /man/2/security-login +signed /man/2/spki +signed /man/2/spki-verifier +signed /man/2/styx +signed /man/2/sys-print +signed /man/3/draw +signed /man/3/sign +signed /man/3/tv +signed /man/4/factotum +signed /man/6/auth +signed /man/6/dis +signed /man/6/keytext +signed /man/8/signer +signed /man/8/svc +signer /man/1/mux +signer /man/1/passwd +signer /man/2/keyring-0intro +signer /man/2/keyring-sha1 +signer /man/2/keyset +signer /man/2/registries +signer /man/2/security-0intro +signer /man/2/security-login +signer /man/2/sys-dial +signer /man/3/sign +signer /man/4/factotum +signer /man/4/keyfs +signer /man/4/namespace +signer /man/6/keys +signer /man/6/keytext +signer /man/6/login +signer /man/6/ndb +signer /man/8/changelogin +signer /man/8/createsignerkey +signer /man/8/cs +signer /man/8/getauthinfo +signer /man/8/logind +signer /man/8/register +signer /man/8/signer +signer /man/8/svc +signer's /man/2/keyring-0intro +signer's /man/2/keyring-sha1 +signer's /man/2/keyset +signer's /man/2/registries +signer's /man/2/security-login +signer's /man/3/sign +signer's /man/4/factotum +signer's /man/6/keys +signer's /man/6/keytext +signer's /man/8/createsignerkey +signer's /man/8/getauthinfo +signer's /man/8/logind +signer's /man/8/signer +signer.b /man/8/signer +signer.dis /man/8/srv +signer.froop.com /man/8/getauthinfo +signerkey /man/3/sign +signerkey /man/4/namespace +signerkey /man/8/createsignerkey +signerkey /man/8/logind +signerkey /man/8/signer +signerkey /man/8/svc +signername /man/2/keyset +signerpkhash /man/2/registries +signers /man/4/namespace +significance /man/9/text +significant /man/1/mdb +significant /man/10/memory +significant /man/10/print +significant /man/2/draw-0intro +significant /man/2/draw-display +significant /man/2/draw-image +significant /man/2/draw-pointer +significant /man/2/itslib +significant /man/2/math-export +significant /man/2/sets +significant /man/2/sys-print +significant /man/3/tls +significant /man/5/0intro +significant /man/5/stat +significant /man/6/colour +significant /man/6/dis +significant /man/6/proto +significant /man/8/create +significant /man/9/text +significantly /man/9/0intro +signifier /man/3/cons +signifies /man/1/grid-monitor +signifies /man/2/spree +signify /man/1/grid-monitor +signify /man/10/styxserver +signify /man/5/flush +signify /man/8/cs +signifying /man/1/ftest +signifying /man/10/sleep +signing /man/2/security-0intro +signing /man/2/sexprs +signing /man/2/spki +signing /man/3/sign +signing /man/6/dis +signing /man/6/keys +signing /man/6/keytext +signing /man/6/login +signing /man/6/sexprs +signing /man/8/changelogin +signing /man/8/getauthinfo +signing /man/8/logind +signing /man/8/register +signing /man/8/signer +signing /man/8/svc +signof /man/10/2c +signof /man/10/dynld +signs /man/10/acid +signs /man/10/atoi +signs /man/6/auth +sigplan /man/2/ubfa +sigplan /man/6/ubfa +silent /man/2/math-fp +silently /man/1/mv +silently /man/3/ds +similar /man/1/0intro +similar /man/1/acme +similar /man/1/alphabet-fs +similar /man/1/dd +similar /man/1/diff +similar /man/1/fs +similar /man/1/listen +similar /man/1/mash +similar /man/1/sh-alphabet +similar /man/1/sh-file2chan +similar /man/1/sh-regex +similar /man/1/sh-std +similar /man/1/sh-string +similar /man/1/sum +similar /man/1/webgrab +similar /man/10/a.out +similar /man/10/allocb +similar /man/10/delay +similar /man/10/dev +similar /man/10/devattach +similar /man/10/dmainit +similar /man/10/error +similar /man/10/iar +similar /man/10/inb +similar /man/10/lock +similar /man/10/malloc +similar /man/10/print +similar /man/10/sleep +similar /man/2/bufio +similar /man/2/debug +similar /man/2/dhcpclient +similar /man/2/dis +similar /man/2/draw-image +similar /man/2/factotum +similar /man/2/keyring-crypt +similar /man/2/keyring-getmsg +similar /man/2/palmfile +similar /man/2/print +similar /man/2/regex +similar /man/2/sexprs +similar /man/2/sh +similar /man/2/sys-0intro +similar /man/2/sys-print +similar /man/2/translate +similar /man/2/ubfa +similar /man/2/wmsrv +similar /man/3/audio +similar /man/3/dbg +similar /man/3/ftl +similar /man/3/srv9 +similar /man/3/touch +similar /man/4/dossrv +similar /man/4/registry +similar /man/6/sbl +similar /man/6/sexprs +similar /man/8/prep +similar /man/8/register +similar /man/9/canvas +similar /man/9/cursor +similar /man/9/menu +similar /man/9/text +similarly /man/1/acme +similarly /man/1/diff +similarly /man/1/sh-tk +similarly /man/10/0intro +similarly /man/10/atoi +similarly /man/10/conf +similarly /man/10/plan9.ini +similarly /man/2/bufio +similarly /man/2/math-linalg +similarly /man/2/sexprs +similarly /man/2/spree-cardlib +similarly /man/2/sys-stat +similarly /man/2/w3c-css +similarly /man/3/ds +similarly /man/3/env +similarly /man/3/tls +similarly /man/5/stat +similarly /man/9/canvas +similiarly /man/1/sh-csv +similiarly /man/1/sh-sexprs +simir /man/2/ir +simpath /man/2/ir +simpler /man/1/fs +simpler /man/1/mux +simpler /man/1/tiny +simpler /man/10/plan9.ini +simpler /man/3/ds +simpler /man/8/rip +simplesel /man/2/w3c-css +simplest /man/1/grid-monitor +simplest /man/1/mash +simplest /man/1/mprof +simplest /man/1/sh +simplest /man/2/sh +simplest /man/2/tkclient +simplest /man/3/logfs +simplest /man/4/spree +simplest /man/9/bind +simplicity /man/1/cprof +simplicity /man/2/asn1 +simplification /man/2/math-0intro +simplifies /man/10/error +simplifies /man/4/ramfile +simplify /man/10/readnum +simplify /man/2/keyring-0intro +simplify /man/5/walk +simplify /man/8/kfscmd +simplistic /man/1/mux +simply /man/1/0intro +simply /man/1/acme +simply /man/1/cprof +simply /man/1/deb +simply /man/1/grid-monitor +simply /man/1/idea +simply /man/1/mc +simply /man/1/mv +simply /man/1/sh +simply /man/1/sh-alphabet +simply /man/10/dev +simply /man/10/devattach +simply /man/10/intrenable +simply /man/10/print +simply /man/10/styxserver +simply /man/2/dbm +simply /man/2/draw-image +simply /man/2/factotum +simply /man/2/prof +simply /man/2/scsiio +simply /man/2/secstore +simply /man/2/smtp +simply /man/2/styx +simply /man/2/sys-dup +simply /man/2/sys-print +simply /man/3/indir +simply /man/3/ip +simply /man/3/logfs +simply /man/3/touch +simply /man/4/registry +simply /man/4/tarfs +simply /man/6/attrdb +simply /man/8/applylog +simply /man/8/svc +simulate /man/1/bind +simulate /man/1/wm +simulate /man/2/ir +simulate /man/8/prep +simulated /man/2/ir +simulates /man/2/draw-display +simulation /man/2/ir +simulator /man/2/ir +simultaneous /man/1/acme +simultaneously /man/1/blur +simultaneously /man/1/mk +simultaneously /man/10/mk +simultaneously /man/2/wmsrv +simultaneously /man/3/draw +simultaneously /man/4/registry +simultaneously /man/8/styxchat +sin /man/1/mathcalc +sin /man/1/mc +sin /man/2/math-elem +sind /man/2/draw-image +singleton /man/1/mash +singleton /man/2/prefab-compound +singly /man/2/math-linalg +sinh /man/1/mathcalc +sinh /man/1/mc +sinh /man/2/math-elem +sink /man/1/stream +sink /man/10/plan9.ini +sink /man/3/ip +sis /man/10/plan9.ini +sis900 /man/10/plan9.ini +sit /man/2/spree-cardlib +site /man/1/collab +site /man/4/ftpfs +site /man/6/ndb +site /man/8/cs +site /man/8/getauthinfo +site /man/8/register +site /man/8/svc +site's /man/6/ndb +sits /man/8/rip +sitting /man/2/spree-cardlib +situation /man/1/charon +situation /man/5/0intro +situations /man/9/listbox +sitution /man/2/styxpersist +six /man/1/fs +six /man/10/a.out +six /man/2/ether +six /man/2/prefab-element +six /man/3/ip +six /man/3/kprof +six /man/3/plap +six /man/3/prog +six /man/3/usb +six /man/6/man +sixteen /man/5/walk +sixth /man/3/kprof +size /man/1/alphabet-fs +size /man/1/blur +size /man/1/brutus +size /man/1/cook +size /man/1/dd +size /man/1/du +size /man/1/ebook +size /man/1/emu +size /man/1/fs +size /man/1/ftest +size /man/1/gettar +size /man/1/ls +size /man/1/mdb +size /man/1/secstore +size /man/1/sh-file2chan +size /man/1/sh-tk +size /man/1/wm +size /man/1/wm-misc +size /man/1/yacc +size /man/1/zeros +size /man/10/2c +size /man/10/9load +size /man/10/a.out +size /man/10/allocb +size /man/10/ar +size /man/10/dev +size /man/10/dynld +size /man/10/iar +size /man/10/ksize +size /man/10/malloc +size /man/10/ms2 +size /man/10/plan9.ini +size /man/10/print +size /man/10/qio +size /man/10/readnum +size /man/10/styx +size /man/10/xalloc +size /man/10ti925/epocimg +size /man/10ti925/tihost +size /man/2/0intro +size /man/2/attrdb +size /man/2/dbm +size /man/2/devpointer +size /man/2/dhcpclient +size /man/2/dis +size /man/2/diskblocks +size /man/2/disks +size /man/2/dividers +size /man/2/draw-0intro +size /man/2/draw-display +size /man/2/draw-font +size /man/2/factotum +size /man/2/hash +size /man/2/keyring-crypt +size /man/2/math-linalg +size /man/2/palmfile +size /man/2/plumbmsg +size /man/2/prefab-compound +size /man/2/prefab-element +size /man/2/print +size /man/2/pslib +size /man/2/readdir +size /man/2/secstore +size /man/2/security-0intro +size /man/2/sexprs +size /man/2/spree-cardlib +size /man/2/styx +size /man/2/styxservers +size /man/2/sys-0intro +size /man/2/sys-fversion +size /man/2/sys-iounit +size /man/2/sys-print +size /man/2/sys-seek +size /man/2/sys-stat +size /man/2/tkclient +size /man/2/wmclient +size /man/3/audio +size /man/3/cons +size /man/3/dbg +size /man/3/ds +size /man/3/dynld +size /man/3/flash +size /man/3/ftl +size /man/3/i2c +size /man/3/ip +size /man/3/kprof +size /man/3/logfs +size /man/3/mnt +size /man/3/mpeg +size /man/3/pipe +size /man/3/pnp +size /man/3/sd +size /man/3/tls +size /man/3/tv +size /man/3/usb +size /man/3/vga +size /man/4/kfs +size /man/4/logfile +size /man/4/memfs +size /man/5/0intro +size /man/5/attach +size /man/5/clunk +size /man/5/error +size /man/5/flush +size /man/5/open +size /man/5/read +size /man/5/remove +size /man/5/stat +size /man/5/version +size /man/5/walk +size /man/6/audio +size /man/6/colour +size /man/6/dis +size /man/6/man +size /man/6/sbl +size /man/8/ftl +size /man/8/httpd +size /man/8/ping +size /man/8/prep +size /man/8/styxchat +size /man/9/bind +size /man/9/button +size /man/9/canvas +size /man/9/checkbutton +size /man/9/choicebutton +size /man/9/frame +size /man/9/grid +size /man/9/label +size /man/9/listbox +size /man/9/menubutton +size /man/9/options +size /man/9/pack +size /man/9/radiobutton +size /man/9/scale +size /man/9/scrollbar +size /man/9/text +size:int /man/2/hash +sized /man/10/dmainit +sized /man/10/qio +sized /man/10/styx +sized /man/2/diskblocks +sized /man/2/draw-rect +sized /man/2/prefab-element +sized /man/9/grid +sized2m /man/10/styx +sizeof /man/10/print +sizes /man/1/dd +sizes /man/10/a.out +sizes /man/10/dynld +sizes /man/10/malloc +sizes /man/10/print +sizes /man/10/styx +sizes /man/2/dbm +sizes /man/2/draw-font +sizes /man/2/draw-image +sizes /man/2/keyring-crypt +sizes /man/2/math-linalg +sizes /man/2/palmfile +sizes /man/2/prefab-element +sizes /man/2/print +sizes /man/3/flash +sizes /man/5/0intro +sizes /man/6/colour +sizes /man/6/dis +sizes /man/8/mkfs +sizes /man/9/grid +sizes /man/9/pack +sizes /man/9/update +sizes2m /man/10/styx +sizing /man/10/plan9.ini +sk /man/2/keyring-0intro +sk /man/2/keyring-certtostr +sk /man/2/keyring-gensk +sk /man/2/keyring-sha1 +sk /man/2/spki +sk /man/6/auth +skeleton /man/4/namespace +skip /man/1/dd +skipped /man/1/tiny +skipped /man/4/archfs +skipped /man/5/0intro +skipping /man/5/0intro +skips /man/2/keyring-rc4 +skips /man/2/sys-tokenize +skips /man/9/canvas +sktopk /man/2/keyring-gensk +sktostr /man/2/keyring-certtostr +sku /man/2/keyring-auth +sl /man/2/sh +slash /man/1/acme +slash /man/1/basename +slash /man/1/crypt +slash /man/1/limbo +slash /man/1/mash +slash /man/1/mk +slash /man/1/sh +slash /man/1/tiny +slash /man/10/2c +slash /man/10/a.out +slash /man/10/c2l +slash /man/10/mk +slash /man/2/names +slash /man/2/palmfile +slash /man/2/sys-0intro +slash /man/2/w3c-xpointers +slash /man/3/pnp +slash /man/5/0intro +slash /man/6/font +slashes /man/1/acme +slashes /man/1/cleanname +slashes /man/10/a.out +slashes /man/2/names +slashes /man/2/sys-0intro +slashes /man/3/cmd +slashes /man/5/0intro +slate /man/1/sh-alphabet +slave /man/1/blur +slave /man/3/i2c +slave /man/3/usb +slave /man/9/grid +slave /man/9/pack +slave's /man/9/grid +slave's /man/9/pack +slaves /man/9/grid +slaves /man/9/pack +sleep /man/1/sleep +sleep /man/1/timestamp +sleep /man/10/allocb +sleep /man/10/delay +sleep /man/10/intrenable +sleep /man/10/kproc +sleep /man/10/lock +sleep /man/10/qio +sleep /man/10/qlock +sleep /man/10/sleep +sleep /man/10/splhi +sleep /man/2/draw-example +sleep /man/2/sys-millisec +sleep /man/2/sys-sleep +sleep /man/2/timers +sleep.b /man/1/sleep +sleeping /man/10/newchan +sleeping /man/10/qio +sleeping /man/10/sleep +sleeps /man/10/malloc +slice /man/1/sh-string +slice /man/2/secstore +slice /man/2/sexprs +slices /man/2/secstore +slicing /man/1/sh-string +slider /man/2/volume +slider /man/9/options +slider /man/9/scale +slider /man/9/scrollbar +slider's /man/9/scale +sliderlength /man/9/scale +sliderrelief /man/9/scale +sliding /man/6/image +slight /man/2/palmfile +slight /man/9/scrollbar +slightly /man/1/acme +slightly /man/1/dd +slightly /man/1/grid-monitor +slightly /man/2/prof +slightly /man/9/scrollbar +slip /man/2/filter +slip /man/2/filter-slip +slip.b /man/2/filter-slip +slippath /man/2/filter-slip +sloppier /man/2/math-0intro +slot /man/1/grid-monitor +slot /man/1/mk +slot /man/10/mk +slot /man/10/plan9.ini +slot /man/2/spree-cardlib +slot /man/3/pbus +slot /man/3/plap +slots /man/1/grid-monitor +slots /man/10/plan9.ini +slots /man/2/hash +slots /man/3/i82365 +slots /man/8/prep +slow /man/1/sh +slow /man/10ti925/tihost +slow /man/9/text +slower /man/2/security-0intro +slowest /man/4/iostats +slowly /man/1/acme +sm /man/6/man +smagic /man/2/dis +smagic /man/6/dis +smaller /man/1/emu +smaller /man/1/tiny +smaller /man/2/draw-0intro +smaller /man/2/draw-image +smaller /man/2/math-0intro +smaller /man/2/prefab-element +smaller /man/2/sys-0intro +smaller /man/2/sys-iounit +smaller /man/2/ubfa +smaller /man/6/sbl +smaller /man/6/sexprs +smaller /man/9/grid +smaller /man/9/pack +smallest /man/1/diff +smallest /man/1/ls +smallest /man/1/math-misc +smallest /man/10/print +smallest /man/2/draw-rect +smallest /man/2/math-fp +smallest /man/2/sys-print +smalloc /man/10/malloc +smalloc /man/10/parsecmd +smc /man/10/plan9.ini +smc91cxx /man/10/conf +smc91cxx /man/10/plan9.ini +smooth /man/2/draw-image +smooth /man/3/draw +smooth /man/9/canvas +smoothed /man/9/canvas +smoother /man/2/imagefile +smoothly /man/1/wm +smoothly /man/9/options +smprint /man/10/print +smtp /man/1/sendmail +smtp /man/2/dhcpclient +smtp /man/2/smtp +smtp /man/6/ndb +smtp.b /man/2/smtp +smtp.m /man/2/smtp +snapshot /man/4/registry +snarf /man/1/acme +snarf /man/1/brutus +snarf /man/1/mash-tk +snarf /man/1/tktester +snarf /man/1/wm-misc +snarf /man/1/wm-sh +snarf /man/2/tkclient +snarf /man/2/wmclient +snarf /man/2/wmlib +snarf /man/3/snarf +snarfget /man/2/tkclient +snarfget /man/2/wmclient +snarfget /man/2/wmlib +snarfput /man/2/tkclient +snarfput /man/2/wmclient +snarfput /man/2/wmlib +snicker /man/2/sexprs +sniff /man/8/bootpd +snmp /man/3/ip +snone /man/2/scsiio +snprint /man/10/print +sntp /man/8/sntp +sntp.b /man/8/sntp +soa /man/6/ndb +soa /man/8/dns +soap /man/2/registries +socket /man/3/ip +socket /man/3/ssl +socket /man/8/logind +sockets /man/2/keyring-0intro +sockets /man/2/security-0intro +sockets /man/2/security-ssl +sockets /man/3/ip +sockets /man/3/ssl +sockets /man/3/tls +soft /man/1/keyboard +soft /man/1/miniterm +soft /man/10/dev +soft /man/3/draw +software /man/1/0intro +software /man/1/miniterm +software /man/10/2c +software /man/10/kbdputc +software /man/10/kproc +software /man/10/plan9.ini +software /man/10/sleep +software /man/2/keyring-sha1 +software /man/2/palmfile +software /man/3/vga +software /man/8/create +software /man/9/1copyright +solaris /man/10/conf +solaris /man/10/styxserver +solaris /man/4/namespace +sole /man/1/acme +sole /man/3/prog +solely /man/10/devattach +solid /man/1/wm-misc +solid /man/9/canvas +solution /man/1/mc +solution /man/1/sh +solve /man/1/mc +solve /man/10/plan9.ini +solvelimit /man/1/mc +solves /man/1/math-misc +solves /man/2/security-0intro +solvestep /man/1/mc +somedata /man/1/alphabet-abc +somedata /man/1/alphabet-grid +somedata.result /man/1/alphabet-abc +somedata.result /man/1/alphabet-grid +somehost /man/1/listen +somehost.com /man/4/spree +someone /man/1/units +someone /man/2/security-0intro +someone /man/5/0intro +someone /man/6/login +sometimes /man/1/0intro +sometimes /man/1/charon +sometimes /man/1/mk +sometimes /man/1/tktester +sometimes /man/10/dev +sometimes /man/10/devattach +sometimes /man/10/mk +sometimes /man/10/print +sometimes /man/10/xalloc +sometimes /man/2/security-0intro +sometimes /man/2/sh +sometimes /man/3/dbg +sometimes /man/4/factotum +sometimes /man/5/0intro +sometimes /man/6/keyboard +sometimes /man/6/sexprs +sometimes /man/6/utf +sometimes /man/9/canvas +somewhat /man/1/sh +somewhat /man/10/iar +somewhat /man/2/dividers +somewhat /man/2/security-0intro +somewhat /man/2/sets +somewhat /man/5/0intro +somewhere /man/1/collab-clients +somewhere /man/1/spree-join +somewhere /man/9/text +sons /man/2/keyring-0intro +sons /man/2/security-0intro +sons /man/3/ssl +soon /man/1/wm-sh +soon /man/3/cons +soon /man/3/prog +sopen /man/2/attrdb +sopen /man/2/bufio +sophisticated /man/1/mash-tk +sophistication /man/1/math-misc +sort /man/1/acme +sort /man/1/comm +sort /man/1/look +sort /man/1/ls +sort /man/1/sort +sort /man/1/tsort +sort /man/1/uniq +sort /man/10/c2l +sort /man/10/inm +sort /man/10/newchan +sort /man/2/math-linalg +sort /man/2/palmfile +sort /man/2/readdir +sort /man/2/spree-cardlib +sort /man/2/tkclient +sort /man/2/wmclient +sort /man/9/scrollbar +sortdir /man/2/readdir +sorted /man/1/comm +sorted /man/1/look +sorted /man/1/ls +sorted /man/1/sort +sorted /man/1/tsort +sorted /man/10/dynld +sorted /man/10/inm +sorted /man/2/readdir +sorted /man/2/sys-dirread +sorted /man/6/keyboard +sorted /man/9/text +sortinfo /man/2/palmfile +sorting /man/2/draw-rect +sorting /man/2/math-linalg +sorting /man/2/palmfile +sorting /man/2/readdir +sortkey /man/2/readdir +sorts /man/1/sort +sorts /man/2/readdir +sorts /man/2/spree-cardlib +sorts /man/2/ubfa +sorts /man/6/dis +sought /man/1/limbo +sought /man/10/2c +sought /man/10/c2l +sought /man/10/conf +sought /man/10/devattach +sought /man/2/sys-dial +sought /man/8/bootpd +sound /man/10/plan9.ini +sound /man/3/dbg +sound /man/3/kprof +source /man/1/0intro +source /man/1/9win +source /man/1/acme +source /man/1/alphabet-abc +source /man/1/alphabet-fs +source /man/1/alphabet-grid +source /man/1/alphabet-main +source /man/1/asm +source /man/1/auplay +source /man/1/avr +source /man/1/basename +source /man/1/bind +source /man/1/blur +source /man/1/brutus +source /man/1/cal +source /man/1/calendar +source /man/1/cat +source /man/1/cd +source /man/1/charon +source /man/1/chgrp +source /man/1/chmod +source /man/1/cleanname +source /man/1/cmp +source /man/1/collab +source /man/1/collab-clients +source /man/1/comm +source /man/1/cook +source /man/1/cp +source /man/1/cprof +source /man/1/cpu +source /man/1/crypt +source /man/1/date +source /man/1/dd +source /man/1/deb +source /man/1/diff +source /man/1/disdep +source /man/1/dmview +source /man/1/du +source /man/1/ebook +source /man/1/echo +source /man/1/emu +source /man/1/env +source /man/1/filename +source /man/1/fmt +source /man/1/fortune +source /man/1/freq +source /man/1/fs +source /man/1/ftest +source /man/1/ftree +source /man/1/gettar +source /man/1/grep +source /man/1/grid-localreg +source /man/1/grid-monitor +source /man/1/grid-ns +source /man/1/grid-query +source /man/1/grid-register +source /man/1/gzip +source /man/1/idea +source /man/1/itest +source /man/1/keyboard +source /man/1/kill +source /man/1/lc +source /man/1/limbo +source /man/1/listen +source /man/1/logon +source /man/1/logwindow +source /man/1/look +source /man/1/ls +source /man/1/man +source /man/1/mash +source /man/1/mash-make +source /man/1/mash-tk +source /man/1/math-misc +source /man/1/mathcalc +source /man/1/mc +source /man/1/mdb +source /man/1/miniterm +source /man/1/mk +source /man/1/mkdir +source /man/1/mprof +source /man/1/mux +source /man/1/mv +source /man/1/netkey +source /man/1/netstat +source /man/1/ns +source /man/1/nsbuild +source /man/1/os +source /man/1/p +source /man/1/passwd +source /man/1/plumb +source /man/1/prof +source /man/1/ps +source /man/1/pwd +source /man/1/rcmd +source /man/1/read +source /man/1/rm +source /man/1/runas +source /man/1/secstore +source /man/1/sendmail +source /man/1/session +source /man/1/sh +source /man/1/sh-alphabet +source /man/1/sh-arg +source /man/1/sh-csv +source /man/1/sh-expr +source /man/1/sh-file2chan +source /man/1/sh-regex +source /man/1/sh-sexprs +source /man/1/sh-std +source /man/1/sh-string +source /man/1/sh-tk +source /man/1/sleep +source /man/1/spree-join +source /man/1/stack +source /man/1/stream +source /man/1/strings +source /man/1/sum +source /man/1/tcs +source /man/1/tee +source /man/1/telnet +source /man/1/time +source /man/1/timestamp +source /man/1/tiny +source /man/1/tkcmd +source /man/1/tktester +source /man/1/toolbar +source /man/1/touch +source /man/1/tr +source /man/1/tsort +source /man/1/unicode +source /man/1/uniq +source /man/1/units +source /man/1/uuencode +source /man/1/wc +source /man/1/webgrab +source /man/1/wish +source /man/1/wm +source /man/1/wm-misc +source /man/1/wm-sh +source /man/1/xd +source /man/1/yacc +source /man/1/zeros +source /man/10/0intro +source /man/10/2a +source /man/10/2c +source /man/10/2l +source /man/10/5coff +source /man/10/5cv +source /man/10/9load +source /man/10/a.out +source /man/10/acid +source /man/10/allocb +source /man/10/atoi +source /man/10/c2l +source /man/10/conf +source /man/10/dev +source /man/10/devattach +source /man/10/dmainit +source /man/10/dynld +source /man/10/error +source /man/10/getfields +source /man/10/iar +source /man/10/inb +source /man/10/inm +source /man/10/intrenable +source /man/10/kbdputc +source /man/10/kprof +source /man/10/ksize +source /man/10/kstrip +source /man/10/lock +source /man/10/memory +source /man/10/mk +source /man/10/ms2 +source /man/10/newchan +source /man/10/ntsrv +source /man/10/odbc +source /man/10/parsecmd +source /man/10/print +source /man/10/qio +source /man/10/qlock +source /man/10/readnum +source /man/10/ref +source /man/10/rune +source /man/10/sleep +source /man/10/srclist +source /man/10/strcat +source /man/10/styx +source /man/10/styxserver +source /man/10ti925/epocimg +source /man/10ti925/tihost +source /man/2/arg +source /man/2/asn1 +source /man/2/attrdb +source /man/2/bloomfilter +source /man/2/bufio +source /man/2/cfg +source /man/2/convcs +source /man/2/crc +source /man/2/daytime +source /man/2/dbm +source /man/2/debug +source /man/2/dhcpclient +source /man/2/dialog +source /man/2/dict +source /man/2/dis +source /man/2/diskblocks +source /man/2/disks +source /man/2/dividers +source /man/2/draw-0intro +source /man/2/draw-example +source /man/2/draw-image +source /man/2/encoding +source /man/2/env +source /man/2/ether +source /man/2/exception +source /man/2/factotum +source /man/2/filepat +source /man/2/filter +source /man/2/filter-deflate +source /man/2/filter-slip +source /man/2/format +source /man/2/fsproto +source /man/2/geodesy +source /man/2/hash +source /man/2/ida +source /man/2/imagefile +source /man/2/ip +source /man/2/ir +source /man/2/keyring-0intro +source /man/2/keyring-auth +source /man/2/keyring-certtostr +source /man/2/keyring-getmsg +source /man/2/keyring-getstring +source /man/2/keyring-sha1 +source /man/2/keyset +source /man/2/lock +source /man/2/math-0intro +source /man/2/math-elem +source /man/2/math-export +source /man/2/math-fp +source /man/2/math-linalg +source /man/2/mpeg +source /man/2/names +source /man/2/newns +source /man/2/palmfile +source /man/2/plumbmsg +source /man/2/pop3 +source /man/2/popup +source /man/2/prefab-0intro +source /man/2/prefab-compound +source /man/2/prefab-element +source /man/2/prefab-environ +source /man/2/prefab-style +source /man/2/print +source /man/2/prof +source /man/2/pslib +source /man/2/rand +source /man/2/readdir +source /man/2/regex +source /man/2/scsiio +source /man/2/secstore +source /man/2/security-auth +source /man/2/security-login +source /man/2/security-random +source /man/2/security-ssl +source /man/2/selectfile +source /man/2/sexprs +source /man/2/sh +source /man/2/smtp +source /man/2/spki +source /man/2/spki-verifier +source /man/2/spree +source /man/2/spree-allow +source /man/2/spree-cardlib +source /man/2/srv +source /man/2/string +source /man/2/stringinttab +source /man/2/styx +source /man/2/styxconv +source /man/2/styxpersist +source /man/2/styxservers +source /man/2/styxservers-nametree +source /man/2/sys-0intro +source /man/2/sys-byte2char +source /man/2/sys-dial +source /man/2/sys-export +source /man/2/sys-file2chan +source /man/2/sys-iounit +source /man/2/sys-print +source /man/2/tabs +source /man/2/tftp +source /man/2/tk +source /man/2/tkclient +source /man/2/translate +source /man/2/ubfa +source /man/2/venti +source /man/2/virgil +source /man/2/volume +source /man/2/w3c-css +source /man/2/w3c-xpointers +source /man/2/wmclient +source /man/2/wmlib +source /man/2/wmsrv +source /man/2/workdir +source /man/2/xml +source /man/3/arch +source /man/3/audio +source /man/3/boot +source /man/3/cap +source /man/3/cmd +source /man/3/cons +source /man/3/dbg +source /man/3/draw +source /man/3/ds +source /man/3/dup +source /man/3/dynld +source /man/3/eia +source /man/3/env +source /man/3/ether +source /man/3/flash +source /man/3/floppy +source /man/3/fpga +source /man/3/fs +source /man/3/ftl +source /man/3/gpio +source /man/3/i2c +source /man/3/i82365 +source /man/3/indir +source /man/3/ip +source /man/3/kprof +source /man/3/logfs +source /man/3/lpt +source /man/3/mnt +source /man/3/mpeg +source /man/3/pbus +source /man/3/pipe +source /man/3/plap +source /man/3/pnp +source /man/3/pointer +source /man/3/prof +source /man/3/prog +source /man/3/root +source /man/3/rtc +source /man/3/sd +source /man/3/sign +source /man/3/srv +source /man/3/srv9 +source /man/3/switch +source /man/3/tinyfs +source /man/3/tls +source /man/3/touch +source /man/3/tv +source /man/3/usb +source /man/3/vga +source /man/3/vid +source /man/4/9srvfs +source /man/4/acme +source /man/4/archfs +source /man/4/cpu +source /man/4/dbfs +source /man/4/dossrv +source /man/4/export +source /man/4/factotum +source /man/4/ftpfs +source /man/4/import +source /man/4/iostats +source /man/4/keyfs +source /man/4/keysrv +source /man/4/kfs +source /man/4/lockfs +source /man/4/logfile +source /man/4/memfs +source /man/4/mntgen +source /man/4/namespace +source /man/4/palmsrv +source /man/4/ramfile +source /man/4/registry +source /man/4/spree +source /man/4/tarfs +source /man/6/dis +source /man/6/man +source /man/6/plumbing +source /man/6/proto +source /man/6/sbl +source /man/6/translate +source /man/7/db +source /man/7/dbsrv +source /man/8/applylog +source /man/8/bootpd +source /man/8/changelogin +source /man/8/collabsrv +source /man/8/create +source /man/8/createsignerkey +source /man/8/cs +source /man/8/dhcp +source /man/8/dns +source /man/8/fpgaload +source /man/8/ftl +source /man/8/getauthinfo +source /man/8/httpd +source /man/8/init +source /man/8/kfscmd +source /man/8/logind +source /man/8/mangaload +source /man/8/manufacture +source /man/8/mkfs +source /man/8/ping +source /man/8/plumber +source /man/8/prep +source /man/8/rdbgsrv +source /man/8/register +source /man/8/rip +source /man/8/rstyxd +source /man/8/shutdown +source /man/8/signer +source /man/8/sntp +source /man/8/srv +source /man/8/styxchat +source /man/8/styxmon +source /man/8/svc +source /man/8/touchcal +source /man/8/virgild +source /man/9/image +sourcefile /man/1/uuencode +sourcefile /man/10/acid +sources /man/10/odbc +sources /man/10/styxserver +sources /man/3/ip +sources /man/4/cpu +soutd /man/2/draw-image +soverd /man/2/draw-image +sp /man/10/a.out +sp /man/2/draw-image +sp /man/3/draw +sp /man/6/man +space /man/1/0intro +space /man/1/acme +space /man/1/bind +space /man/1/cd +space /man/1/charon +space /man/1/collab +space /man/1/collab-clients +space /man/1/crypt +space /man/1/diff +space /man/1/disdep +space /man/1/emu +space /man/1/fmt +space /man/1/gettar +space /man/1/listen +space /man/1/logon +space /man/1/mash +space /man/1/mash-tk +space /man/1/math-misc +space /man/1/mc +space /man/1/mk +space /man/1/mprof +space /man/1/mux +space /man/1/ns +space /man/1/nsbuild +space /man/1/pwd +space /man/1/sh +space /man/1/tiny +space /man/1/tsort +space /man/1/wm-misc +space /man/1/wm-sh +space /man/10/9load +space /man/10/acid +space /man/10/allocb +space /man/10/conf +space /man/10/dev +space /man/10/devattach +space /man/10/dmainit +space /man/10/dynld +space /man/10/inb +space /man/10/kproc +space /man/10/malloc +space /man/10/mk +space /man/10/newchan +space /man/10/odbc +space /man/10/plan9.ini +space /man/10/print +space /man/10/strcat +space /man/10/xalloc +space /man/2/attrdb +space /man/2/bufio +space /man/2/dis +space /man/2/dividers +space /man/2/draw-font +space /man/2/drawmux +space /man/2/encoding +space /man/2/factotum +space /man/2/filter-deflate +space /man/2/geodesy +space /man/2/ip +space /man/2/ir +space /man/2/keyring-0intro +space /man/2/newns +space /man/2/palmfile +space /man/2/prefab-compound +space /man/2/prefab-element +space /man/2/registries +space /man/2/secstore +space /man/2/sexprs +space /man/2/spki +space /man/2/spree +space /man/2/spree-allow +space /man/2/spree-cardlib +space /man/2/string +space /man/2/styx +space /man/2/styxservers +space /man/2/styxservers-nametree +space /man/2/sys-0intro +space /man/2/sys-bind +space /man/2/sys-chdir +space /man/2/sys-export +space /man/2/sys-fd2path +space /man/2/sys-file2chan +space /man/2/sys-pctl +space /man/2/tk +space /man/2/w3c-css +space /man/2/w3c-xpointers +space /man/2/xml +space /man/3/0intro +space /man/3/arch +space /man/3/cmd +space /man/3/cons +space /man/3/dbg +space /man/3/draw +space /man/3/ds +space /man/3/flash +space /man/3/fpga +space /man/3/fs +space /man/3/ftl +space /man/3/gpio +space /man/3/indir +space /man/3/ip +space /man/3/logfs +space /man/3/mnt +space /man/3/pnp +space /man/3/prof +space /man/3/prog +space /man/3/root +space /man/3/sign +space /man/3/srv +space /man/3/srv9 +space /man/3/ssl +space /man/3/tls +space /man/3/touch +space /man/4/0intro +space /man/4/9srvfs +space /man/4/dossrv +space /man/4/export +space /man/4/factotum +space /man/4/ftpfs +space /man/4/import +space /man/4/iostats +space /man/4/keyfs +space /man/4/keysrv +space /man/4/mntgen +space /man/4/namespace +space /man/4/ramfile +space /man/4/registry +space /man/4/spree +space /man/4/tarfs +space /man/5/0intro +space /man/6/attrdb +space /man/6/colour +space /man/6/font +space /man/6/keyboard +space /man/6/keys +space /man/6/keytext +space /man/6/namespace +space /man/6/proto +space /man/6/sbl +space /man/6/sexprs +space /man/6/ubfa +space /man/8/changelogin +space /man/8/collabsrv +space /man/8/create +space /man/8/cs +space /man/8/httpd +space /man/8/prep +space /man/8/rdbgsrv +space /man/8/rstyxd +space /man/8/srv +space /man/8/styxchat +space /man/8/styxmon +space /man/9/bind +space /man/9/button +space /man/9/canvas +space /man/9/grid +space /man/9/options +space /man/9/pack +space /man/9/scale +space /man/9/text +spaced /man/1/acme +spaced /man/2/print +spaced /man/9/text +spacer /man/9/frame +spaces /man/1/0intro +spaces /man/1/diff +spaces /man/1/fmt +spaces /man/1/mash +spaces /man/1/plumb +spaces /man/1/sh +spaces /man/1/sh-string +spaces /man/1/sh-tk +spaces /man/1/tktester +spaces /man/10/atoi +spaces /man/10/print +spaces /man/2/spree +spaces /man/2/sys-print +spaces /man/3/touch +spaces /man/4/factotum +spaces /man/4/import +spaces /man/6/attrdb +spaces /man/6/sbl +spaces /man/8/styxchat +spaces /man/9/bind +spaces /man/9/grid +spaces /man/9/text +spacing /man/2/cfg +spacing /man/2/draw-font +spacing /man/2/prefab-element +spacing /man/3/draw +spacing /man/6/font +spacing /man/9/scale +spacing /man/9/text +spacing1 /man/9/text +spacing2 /man/9/text +spacing3 /man/9/text +spades /man/2/spree-cardlib +span /man/1/tiny +span /man/10/0intro +span /man/10/xalloc +span /man/2/attrdb +span /man/9/canvas +span /man/9/entry +span /man/9/listbox +span /man/9/text +spanned /man/9/grid +spanning /man/1/tktester +spanning /man/10/xalloc +spanning /man/9/entry +spanning /man/9/grid +spans /man/6/utf +spans /man/8/prep +sparc /man/10/2c +sparc /man/10/a.out +sparc /man/10/acid +sparingly /man/10/xalloc +spawn /man/2/command +spawn /man/2/draw-display +spawn /man/2/sh +spawn /man/2/styxconv +spawn /man/2/sys-0intro +spawn /man/2/sys-export +spawn /man/3/cmd +spawn /man/3/sign +spawned /man/1/math-misc +spawned /man/1/sh-file2chan +spawned /man/2/filter +spawned /man/2/sh +spawned /man/2/styxconv +spawned /man/2/sys-0intro +spawned /man/2/sys-pctl +spawned /man/2/volume +spawned /man/3/prog +spawning /man/1/stream +spawns /man/1/sh-file2chan +spawns /man/2/alphabet-intro +spawns /man/2/devpointer +spawns /man/2/filter +spawns /man/2/ir +spawns /man/2/mpeg +spawns /man/2/styxservers +spawns /man/2/styxservers-nametree +spawns /man/2/sys-export +spawns /man/3/prog +spawns /man/8/cs +speaks /man/2/spki-verifier +speaksfor /man/2/spki-verifier +speaksfor /man/4/factotum +spec /man/1/alphabet-fs +spec /man/1/bind +spec /man/1/fs +spec /man/10/dev +spec /man/10/devattach +spec /man/2/format +spec /man/2/spree-cardlib +spec /man/3/fs +spec /man/3/indir +spec /man/3/srv +spec /man/6/namespace +spec2fmt /man/2/format +spec2se /man/2/format +specfies /man/9/scale +specialised /man/1/zeros +specialised /man/10/0intro +specialised /man/2/plumbmsg +specialised /man/2/styx +specialised /man/3/logfs +specialised /man/3/plap +specialised /man/8/plumber +specialised /man/9/send +specialized /man/2/security-0intro +specially /man/1/mk +specially /man/1/sh-std +specially /man/1/tiny +specially /man/10/allocb +specially /man/10/mk +specially /man/2/dialog +specially /man/3/cons +specially /man/8/cs +specially /man/9/bind +species /man/2/xml +specifed /man/9/pack +specific /man/1/acme +specific /man/1/charon +specific /man/1/grid-monitor +specific /man/1/grid-query +specific /man/1/mprof +specific /man/1/mux +specific /man/1/session +specific /man/1/tktester +specific /man/10/0intro +specific /man/10/conf +specific /man/10/dev +specific /man/10/devattach +specific /man/10/dmainit +specific /man/10/intrenable +specific /man/10/xalloc +specific /man/2/asn1 +specific /man/2/convcs +specific /man/2/dhcpclient +specific /man/2/filter +specific /man/2/palmfile +specific /man/2/prefab-element +specific /man/2/print +specific /man/2/prof +specific /man/2/sexprs +specific /man/2/sh +specific /man/2/spree-allow +specific /man/2/spree-cardlib +specific /man/2/sys-iounit +specific /man/2/tabs +specific /man/2/ubfa +specific /man/3/arch +specific /man/3/cons +specific /man/3/ether +specific /man/3/fs +specific /man/3/ip +specific /man/3/prog +specific /man/3/srv +specific /man/4/acme +specific /man/4/factotum +specific /man/4/namespace +specific /man/4/spree +specific /man/6/ndb +specific /man/6/sexprs +specific /man/6/translate +specific /man/8/bootpd +specific /man/8/collabsrv +specific /man/8/create +specific /man/8/httpd +specific /man/8/init +specific /man/8/prep +specific /man/8/svc +specific /man/9/button +specific /man/9/canvas +specific /man/9/checkbutton +specific /man/9/choicebutton +specific /man/9/entry +specific /man/9/frame +specific /man/9/label +specific /man/9/listbox +specific /man/9/menu +specific /man/9/menubutton +specific /man/9/panel +specific /man/9/radiobutton +specific /man/9/scale +specific /man/9/scrollbar +specific /man/9/text +specifically /man/10/devattach +specifically /man/3/draw +specifically /man/3/fs +specifically /man/3/logfs +specifically /man/4/keyfs +specifically /man/9/1copyright +specification /man/1/telnet +specification /man/10/devattach +specification /man/10/print +specification /man/2/filter +specification /man/2/format +specification /man/2/palmfile +specification /man/2/print +specification /man/2/string +specification /man/2/sys-print +specification /man/2/w3c-css +specification /man/2/w3c-xpointers +specification /man/3/i2c +specification /man/3/usb +specification /man/5/flush +specification /man/6/dis +specification /man/6/font +specification /man/6/regexp +specification /man/9/menu +specifications /man/1/sh-arg +specifications /man/10/print +specifications /man/2/format +specifications /man/2/spree-cardlib +specifications /man/2/sys-print +specifications /man/6/font +specifications /man/9/canvas +specifier /man/10/devattach +specifier /man/2/asn1 +specifier /man/2/sys-print +specifier /man/3/flash +specifier /man/3/indir +specifier /man/3/sd +specifier /man/3/srv9 +specifier /man/3/tinyfs +specifier /man/6/dis +specifier /man/9/canvas +specifier /man/9/types +specifiers /man/1/xd +specifiers /man/10/9load +specifiers /man/10/c2l +specifiers /man/3/lpt +specifiers /man/9/types +specifies /man/1/alphabet-abc +specifies /man/1/alphabet-fs +specifies /man/1/alphabet-grid +specifies /man/1/alphabet-main +specifies /man/1/calendar +specifies /man/1/charon +specifies /man/1/crypt +specifies /man/1/deb +specifies /man/1/filename +specifies /man/1/fs +specifies /man/1/grid-register +specifies /man/1/man +specifies /man/1/mash-tk +specifies /man/1/mc +specifies /man/1/miniterm +specifies /man/1/sh-alphabet +specifies /man/1/sh-expr +specifies /man/1/sh-std +specifies /man/1/tcs +specifies /man/1/units +specifies /man/10/2a +specifies /man/10/2l +specifies /man/10/9load +specifies /man/10/conf +specifies /man/10/dev +specifies /man/10/plan9.ini +specifies /man/2/asn1 +specifies /man/2/convcs +specifies /man/2/draw-0intro +specifies /man/2/draw-font +specifies /man/2/draw-point +specifies /man/2/filter-deflate +specifies /man/2/format +specifies /man/2/imagefile +specifies /man/2/keyring-0intro +specifies /man/2/mpeg +specifies /man/2/prefab-element +specifies /man/2/prefab-environ +specifies /man/2/prefab-style +specifies /man/2/print +specifies /man/2/sh +specifies /man/2/spree-cardlib +specifies /man/2/sys-byte2char +specifies /man/2/tkclient +specifies /man/2/wmclient +specifies /man/3/draw +specifies /man/4/dbfs +specifies /man/4/factotum +specifies /man/5/attach +specifies /man/6/dis +specifies /man/6/namespace +specifies /man/6/proto +specifies /man/6/regexp +specifies /man/6/sbl +specifies /man/8/create +specifies /man/8/createsignerkey +specifies /man/8/dns +specifies /man/8/mkfs +specifies /man/8/rdbgsrv +specifies /man/9/bind +specifies /man/9/button +specifies /man/9/canvas +specifies /man/9/checkbutton +specifies /man/9/choicebutton +specifies /man/9/entry +specifies /man/9/frame +specifies /man/9/grid +specifies /man/9/image +specifies /man/9/label +specifies /man/9/listbox +specifies /man/9/menu +specifies /man/9/menubutton +specifies /man/9/options +specifies /man/9/pack +specifies /man/9/panel +specifies /man/9/radiobutton +specifies /man/9/scale +specifies /man/9/scrollbar +specifies /man/9/see +specifies /man/9/text +specifies /man/9/types +specify /man/1/alphabet-fs +specify /man/1/bind +specify /man/1/charon +specify /man/1/collab +specify /man/1/cprof +specify /man/1/dd +specify /man/1/emu +specify /man/1/freq +specify /man/1/fs +specify /man/1/grid-ns +specify /man/1/grid-register +specify /man/1/mash-make +specify /man/1/mc +specify /man/1/mdb +specify /man/1/mk +specify /man/1/mprof +specify /man/1/prof +specify /man/1/sh-alphabet +specify /man/1/tiny +specify /man/1/wm-sh +specify /man/1/yacc +specify /man/1/zeros +specify /man/10/2c +specify /man/10/a.out +specify /man/10/mk +specify /man/10/plan9.ini +specify /man/2/draw-image +specify /man/2/format +specify /man/2/keyring-0intro +specify /man/2/prefab-0intro +specify /man/2/prefab-environ +specify /man/2/spree-cardlib +specify /man/2/sys-print +specify /man/3/draw +specify /man/3/ssl +specify /man/4/factotum +specify /man/5/0intro +specify /man/6/ndb +specify /man/6/proto +specify /man/8/cs +specify /man/8/prep +specify /man/9/canvas +specify /man/9/grid +specify /man/9/menu +specify /man/9/options +specify /man/9/pack +specify /man/9/text +specifying /man/1/charon +specifying /man/1/lc +specifying /man/10/dev +specifying /man/10/plan9.ini +specifying /man/2/draw-image +specifying /man/2/keyring-sha1 +specifying /man/2/prefab-element +specifying /man/2/pslib +specifying /man/2/spree-cardlib +specifying /man/2/sys-tokenize +specifying /man/3/draw +specifying /man/3/pnp +specifying /man/4/factotum +specifying /man/5/0intro +specifying /man/6/audio +specifying /man/8/collabsrv +specifying /man/9/canvas +specifying /man/9/entry +specifying /man/9/grid +specifying /man/9/image +specifying /man/9/listbox +specifying /man/9/scale +spectrum /man/1/0intro +speculative /man/1/ftest +speed /man/1/units +speed /man/1/wm-misc +speed /man/10ti925/tihost +speed /man/2/security-0intro +speed /man/4/palmsrv +speed /man/8/rdbgsrv +speed /man/9/text +speeds /man/1/acme +spelling /man/2/ubfa +spellings /man/2/ubfa +spending /man/1/prof +spent /man/1/prof +spent /man/10/kprof +spent /man/2/prof +spent /man/3/cmd +spent /man/3/touch +spi /man/3/touch +spim /man/10/2c +spin /man/10/lock +spin /man/10/qlock +spite /man/1/miniterm +spk /man/2/keyring-0intro +spki /man/2/sexprs +spki /man/2/spki +spki /man/2/spki-verifier +spki /man/6/sexprs +spki's /man/2/spki +spki.b /man/2/spki +spki.m /man/2/spki +spki.m /man/2/spki-verifier +spkthumb /man/2/keyset +splhi /man/10/intrenable +splhi /man/10/lock +splhi /man/10/qlock +splhi /man/10/splhi +spline /man/2/draw-image +spline /man/9/canvas +splines /man/9/canvas +split /man/1/alphabet-abc +split /man/1/alphabet-grid +split /man/1/session +split /man/1/sh +split /man/1/sh-std +split /man/1/sh-string +split /man/1/tktester +split /man/10/dmainit +split /man/10/qio +split /man/2/imagefile +split /man/2/sys-tokenize +split /man/3/pipe +split /man/3/sd +split /man/6/namespace +split /man/9/grid +splitl /man/1/sh-string +splitl /man/2/string +splitr /man/1/sh-string +splitr /man/2/string +splits /man/1/sh-std +splits /man/1/sh-string +splits /man/2/string +splitstrl /man/1/sh-string +splitstrl /man/2/string +splitstrr /man/1/sh-string +splitstrr /man/2/string +splitting /man/1/blur +splitting /man/1/mash +spllo /man/10/error +spllo /man/10/splhi +splx /man/10/splhi +spoof /man/2/keyring-0intro +spoofing /man/6/login +sports /man/1/wm-misc +spot /man/1/filename +spot /man/9/cursor +spr /man/10/acid +spread /man/2/spree-cardlib +spree /man/1/spree-join +spree /man/2/spree +spree /man/2/spree-allow +spree /man/2/spree-cardlib +spree /man/2/spree-gather +spree /man/2/spree-objstore +spree /man/4/spree +spree.b /man/2/spree +spree.b /man/4/spree +spree.m /man/2/spree +spree.m /man/2/spree-allow +spree.m /man/2/spree-cardlib +spree.m /man/2/spree-gather +spree.m /man/2/spree-objstore +sprint /man/10/2c +sprint /man/10/print +sprint /man/2/itslib +sprint /man/2/sys-print +sprint /man/3/arch +sprint /man/3/cap +spsz /man/10/a.out +sput /man/1/mash-tk +sql /man/7/db +sqlclose /man/7/db +sqlcolumns /man/10/odbc +sqlconn /man/7/db +sqlexecdirect /man/10/odbc +sqlopen /man/7/db +sqlstream /man/7/db +sqltables /man/10/odbc +sqrt /man/1/mathcalc +sqrt /man/1/mc +sqrt /man/2/math-elem +sqrt /man/2/math-linalg +square /man/1/math-misc +square /man/1/sh +square /man/10/2c +square /man/2/math-elem +square /man/3/draw +square /man/3/vid +square /man/9/canvas +square /man/9/checkbutton +squeeze /man/1/tr +squeezes /man/10/5cv +sqz /man/10/5cv +sr /man/2/wmclient +src /man/1/acme +src /man/1/plumb +src /man/10/acid +src /man/2/debug +src /man/2/dis +src /man/2/draw-image +src /man/2/plumbmsg +src /man/2/sys-read +src /man/3/draw +src /man/6/plumbing +src /man/6/sbl +src.start /man/2/debug +src.stop /man/2/debug +srcid /man/3/draw +srcid /man/4/spree +srclist /man/10/srclist +srcp /man/3/draw +srcpath /man/2/dis +srcpath /man/2/prof +srcstr /man/2/debug +srctopc /man/2/debug +srctype /man/1/sh-alphabet +sread /man/2/scsiio +srv /man/1/grid-monitor +srv /man/1/grid-ns +srv /man/2/srv +srv /man/2/styxservers +srv /man/2/styxservers-nametree +srv /man/2/sys-file2chan +srv /man/2/sys-pctl +srv /man/3/root +srv /man/3/srv +srv /man/3/srv9 +srv /man/4/9srvfs +srv /man/4/cpu +srv /man/4/factotum +srv /man/4/ramfile +srv /man/8/cs +srv /man/8/dns +srv /man/8/srv +srv.b /man/1/gettar +srv.b /man/8/srv +srv.c /man/2/srv +srv.default /man/2/styxservers-nametree +srv.dis /man/8/init +srv.m /man/2/srv +srv9 /man/3/srv9 +srv9 /man/4/9srvfs +srvbrowse.b /man/1/grid-query +srvbrowse.b /man/1/session +srvmod /man/2/spree +srvname /man/2/secstore +srvname /man/4/9srvfs +srvname /man/4/factotum +ss /man/6/keyboard +ss /man/6/man +ssdd0 /man/3/sd +ssh /man/4/factotum +ssize /man/2/dis +ssl /man/1/bind +ssl /man/1/charon +ssl /man/1/collab +ssl /man/1/cpu +ssl /man/1/crypt +ssl /man/1/listen +ssl /man/1/rcmd +ssl /man/10/dev +ssl /man/2/keyring-0intro +ssl /man/2/keyring-auth +ssl /man/2/keyring-getmsg +ssl /man/2/keyring-getstring +ssl /man/2/keyring-ipint +ssl /man/2/security-0intro +ssl /man/2/security-auth +ssl /man/2/security-ssl +ssl /man/2/sys-pctl +ssl /man/3/ssl +ssl /man/3/tls +ssl /man/4/import +ssl /man/7/dbsrv +ssl /man/8/logind +ssl /man/8/rstyxd +ssl /man/8/srv +ssl.b /man/2/security-ssl +ssl3 /man/3/tls +sslv2 /man/3/ssl +sslv3.0 /man/3/tls +sslv3.01 /man/3/tls +st /man/6/attrdb +sta /man/10/plan9.ini +stable /man/1/sort +stable /man/2/readdir +stable /man/3/touch +stable /man/5/stat +stack /man/1/0intro +stack /man/1/deb +stack /man/1/fc +stack /man/1/ps +stack /man/1/sh +stack /man/1/sh-expr +stack /man/1/stack +stack /man/1/wm-misc +stack /man/1/yacc +stack /man/10/a.out +stack /man/10/acid +stack /man/10/error +stack /man/10/panic +stack /man/2/debug +stack /man/2/dis +stack /man/2/dividers +stack /man/2/draw-image +stack /man/2/spree-cardlib +stack /man/2/wmsrv +stack /man/3/cons +stack /man/3/draw +stack /man/3/prog +stack /man/6/dis +stack /man/6/ubfa +stack /man/8/cs +stack's /man/3/ip +stack.b /man/1/stack +stacked /man/10/error +stacked /man/2/dis +stacked /man/2/dividers +stacking /man/2/wmsrv +stacking /man/9/lower +stacking /man/9/raise +stacks /man/1/mprof +stacks /man/2/spree-cardlib +stacks /man/6/dis +stackspec /man/2/spree-cardlib +stage /man/1/tiny +stage /man/2/sys-fversion +stage1 /man/1/alphabet-abc +stage1 /man/1/alphabet-grid +stage2 /man/1/alphabet-abc +stage2 /man/1/alphabet-grid +stall /man/3/usb +stalled /man/3/usb +stalling /man/3/usb +stamp /man/1/mk +stamp /man/1/timestamp +stamp /man/10/mk +stamp /man/3/cons +stamp /man/3/pointer +stamp /man/8/applylog +stamp /man/8/create +stamped /man/8/create +stamps /man/1/mk +stamps /man/10/mk +stamps /man/8/applylog +stand /man/2/math-fp +standalone /man/1/mux +standard /man/1/9win +standard /man/1/acme +standard /man/1/alphabet-fs +standard /man/1/asm +standard /man/1/auplay +standard /man/1/basename +standard /man/1/bind +standard /man/1/cat +standard /man/1/charon +standard /man/1/cleanname +standard /man/1/collab +standard /man/1/comm +standard /man/1/cook +standard /man/1/crypt +standard /man/1/date +standard /man/1/dd +standard /man/1/disdep +standard /man/1/du +standard /man/1/ebook +standard /man/1/echo +standard /man/1/env +standard /man/1/filename +standard /man/1/fmt +standard /man/1/freq +standard /man/1/fs +standard /man/1/gettar +standard /man/1/grep +standard /man/1/gzip +standard /man/1/idea +standard /man/1/itest +standard /man/1/kill +standard /man/1/limbo +standard /man/1/listen +standard /man/1/logwindow +standard /man/1/look +standard /man/1/man +standard /man/1/mash +standard /man/1/mash-tk +standard /man/1/math-misc +standard /man/1/mathcalc +standard /man/1/mc +standard /man/1/mdb +standard /man/1/mk +standard /man/1/ns +standard /man/1/os +standard /man/1/p +standard /man/1/ps +standard /man/1/read +standard /man/1/secstore +standard /man/1/sendmail +standard /man/1/sh +standard /man/1/sh-csv +standard /man/1/sh-file2chan +standard /man/1/sh-sexprs +standard /man/1/sh-std +standard /man/1/sleep +standard /man/1/sort +standard /man/1/stack +standard /man/1/stream +standard /man/1/strings +standard /man/1/sum +standard /man/1/tail +standard /man/1/tcs +standard /man/1/tee +standard /man/1/telnet +standard /man/1/time +standard /man/1/timestamp +standard /man/1/tiny +standard /man/1/tkcmd +standard /man/1/toolbar +standard /man/1/tr +standard /man/1/tsort +standard /man/1/unicode +standard /man/1/uniq +standard /man/1/units +standard /man/1/uuencode +standard /man/1/wc +standard /man/1/wish +standard /man/1/wm-sh +standard /man/1/xd +standard /man/1/zeros +standard /man/10/0intro +standard /man/10/2c +standard /man/10/5cv +standard /man/10/acid +standard /man/10/c2l +standard /man/10/devattach +standard /man/10/mk +standard /man/10/ms2 +standard /man/10/plan9.ini +standard /man/10/print +standard /man/10/srclist +standard /man/10ti925/epocimg +standard /man/2/arg +standard /man/2/asn1 +standard /man/2/bufio +standard /man/2/convcs +standard /man/2/debug +standard /man/2/draw-0intro +standard /man/2/draw-image +standard /man/2/filter +standard /man/2/filter-deflate +standard /man/2/keyring-crypt +standard /man/2/math-0intro +standard /man/2/math-fp +standard /man/2/math-linalg +standard /man/2/palmfile +standard /man/2/prof +standard /man/2/security-0intro +standard /man/2/sexprs +standard /man/2/sh +standard /man/2/spree-cardlib +standard /man/2/styxservers +standard /man/2/sys-0intro +standard /man/2/sys-dial +standard /man/2/sys-dup +standard /man/2/sys-print +standard /man/2/w3c-css +standard /man/3/cmd +standard /man/3/flash +standard /man/3/ip +standard /man/3/srv9 +standard /man/3/tv +standard /man/3/usb +standard /man/4/9srvfs +standard /man/4/acme +standard /man/4/dossrv +standard /man/4/export +standard /man/4/factotum +standard /man/4/import +standard /man/4/iostats +standard /man/4/keysrv +standard /man/4/kfs +standard /man/4/mntgen +standard /man/4/namespace +standard /man/4/registry +standard /man/6/sexprs +standard /man/6/utf +standard /man/8/applylog +standard /man/8/bootpd +standard /man/8/create +standard /man/8/cs +standard /man/8/dhcp +standard /man/8/dns +standard /man/8/kfscmd +standard /man/8/mkfs +standard /man/8/rstyxd +standard /man/8/srv +standard /man/8/styxchat +standard /man/8/styxmon +standard /man/8/touchcal +standard /man/9/0intro +standard /man/9/button +standard /man/9/canvas +standard /man/9/checkbutton +standard /man/9/choicebutton +standard /man/9/entry +standard /man/9/frame +standard /man/9/label +standard /man/9/listbox +standard /man/9/menu +standard /man/9/menubutton +standard /man/9/options +standard /man/9/panel +standard /man/9/radiobutton +standard /man/9/scale +standard /man/9/scrollbar +standard /man/9/text +standard /man/9/types +standardly /man/10/2c +standards /man/1/charon +standards /man/1/sum +standards /man/3/rtc +standby /man/10/plan9.ini +standby /man/3/sd +standing /man/1/mash +standing /man/1/sh +stands /man/1/acme +stands /man/1/chmod +stands /man/1/mash +stands /man/1/sh +stands /man/1/tr +stands /man/2/keyring-0intro +stands /man/2/sys-dial +stands /man/3/ether +stands /man/6/regexp +star /man/10/plan9.ini +star /man/3/fpga +star /man/8/fpgaload +start.html /man/1/charon +startclr /man/3/kprof +startcp /man/3/prof +startdir /man/1/filename +started /man/1/9win +started /man/1/alphabet-fs +started /man/1/blur +started /man/1/charon +started /man/1/fs +started /man/1/listen +started /man/1/logon +started /man/1/mash +started /man/1/mash-tk +started /man/1/mux +started /man/1/plumb +started /man/1/rcmd +started /man/1/session +started /man/1/sh +started /man/1/spree-join +started /man/1/timestamp +started /man/1/tiny +started /man/1/tkcmd +started /man/1/toolbar +started /man/1/wm +started /man/10/dev +started /man/10/dmainit +started /man/10/eve +started /man/10/ntsrv +started /man/10/odbc +started /man/2/command +started /man/2/disks +started /man/2/spree +started /man/2/spree-gather +started /man/2/styxpersist +started /man/2/styxservers +started /man/2/tkclient +started /man/2/wmclient +started /man/3/cmd +started /man/3/dbg +started /man/3/ip +started /man/4/9srvfs +started /man/4/dbfs +started /man/4/factotum +started /man/4/keyfs +started /man/4/keysrv +started /man/4/kfs +started /man/4/spree +started /man/6/keys +started /man/8/changelogin +started /man/8/collabsrv +started /man/8/cs +started /man/8/kfscmd +started /man/8/logind +started /man/8/plumber +started /man/8/rdbgsrv +started /man/8/rstyxd +started /man/8/shutdown +started /man/8/svc +started /man/8/virgild +startinput /man/2/tkclient +startinput /man/2/wmclient +startinput /man/2/wmlib +startmp /man/3/prof +startprog /man/2/debug +startrefresh /man/2/draw-display +startrefresh:fn /man/2/draw-display +starts /man/1/acme +starts /man/1/alphabet-abc +starts /man/1/alphabet-grid +starts /man/1/alphabet-main +starts /man/1/calendar +starts /man/1/charon +starts /man/1/cmp +starts /man/1/collab-clients +starts /man/1/emu +starts /man/1/grid-localreg +starts /man/1/listen +starts /man/1/logon +starts /man/1/mash +starts /man/1/mprof +starts /man/1/os +starts /man/1/prof +starts /man/1/sh +starts /man/1/sh-alphabet +starts /man/1/strings +starts /man/1/tktester +starts /man/1/wm +starts /man/1/wm-misc +starts /man/10/2l +starts /man/10/5coff +starts /man/10/9load +starts /man/10/a.out +starts /man/10/conf +starts /man/10/dmainit +starts /man/10/kbdputc +starts /man/10/ntsrv +starts /man/10ti925/tihost +starts /man/2/debug +starts /man/2/draw-0intro +starts /man/2/draw-image +starts /man/2/ir +starts /man/2/names +starts /man/2/plumbmsg +starts /man/2/prof +starts /man/2/styxpersist +starts /man/2/sys-pctl +starts /man/2/timers +starts /man/2/w3c-xpointers +starts /man/2/wait +starts /man/2/wmsrv +starts /man/3/flash +starts /man/3/fs +starts /man/3/i2c +starts /man/3/mpeg +starts /man/3/prog +starts /man/3/sd +starts /man/3/snarf +starts /man/3/srv9 +starts /man/3/ssl +starts /man/3/touch +starts /man/4/acme +starts /man/4/export +starts /man/4/import +starts /man/4/kfs +starts /man/6/attrdb +starts /man/6/image +starts /man/6/sbl +starts /man/7/db +starts /man/8/getauthinfo +starts /man/8/plumber +starts /man/8/prep +starts /man/8/rip +starts /man/8/srv +starts /man/8/svc +starts /man/9/text +startstate /man/2/convcs +startup /man/1/charon +startup /man/1/deb +startup /man/1/sh +startup /man/10/2l +startup /man/10/acid +startup /man/10/plan9.ini +startup /man/3/dbg +startup /man/8/plumber +starturl /man/1/charon +startx /man/1/wm +starty /man/1/wm +stat /man/1/alphabet-fs +stat /man/1/chgrp +stat /man/1/chmod +stat /man/1/cp +stat /man/1/du +stat /man/1/fs +stat /man/1/ftest +stat /man/1/ls +stat /man/1/mv +stat /man/1/touch +stat /man/10/ar +stat /man/10/dev +stat /man/10/devattach +stat /man/10/newchan +stat /man/10/styx +stat /man/10/styxserver +stat /man/2/disks +stat /man/2/fsproto +stat /man/2/palmfile +stat /man/2/pop3 +stat /man/2/readdir +stat /man/2/styx +stat /man/2/styxservers +stat /man/2/styxservers-nametree +stat /man/2/sys-0intro +stat /man/2/sys-dirread +stat /man/2/sys-open +stat /man/2/sys-stat +stat /man/2/workdir +stat /man/3/dup +stat /man/3/fs +stat /man/3/ftl +stat /man/3/i2c +stat /man/3/pipe +stat /man/3/srv +stat /man/4/dbfs +stat /man/4/keyfs +stat /man/4/kfs +stat /man/4/ramfile +stat /man/5/0intro +stat /man/5/open +stat /man/5/read +stat /man/5/stat +stat /man/5/walk +stat /man/6/users +stat /man/8/collabsrv +statcheck /man/10/styx +stated /man/1/cprof +stated /man/1/sh-std +stated /man/1/sh-tk +stated /man/2/debug +statement /man/1/cprof +statement /man/1/deb +statement /man/1/limbo +statement /man/1/mc +statement /man/1/sh +statement /man/10/2c +statement /man/10/acid +statement /man/10/c2l +statement /man/10/odbc +statement /man/2/debug +statement /man/2/popup +statement /man/2/spki-verifier +statement /man/2/ubfa +statement /man/2/w3c-css +statement /man/3/prog +statement /man/6/sbl +statement /man/7/db +statement /man/8/dns +statement.ruleset /man/2/w3c-css +statements /man/1/limbo +statements /man/1/mc +statements /man/10/acid +statements /man/2/0intro +statements /man/2/spki-verifier +statements /man/2/timers +statements /man/2/w3c-css +statements /man/3/cons +statements /man/7/db +static /man/1/mk +static /man/10/a.out +static /man/10/dev +static /man/10/devattach +static /man/10/inm +static /man/10/mk +static /man/2/pop3 +static /man/4/namespace +static /man/4/registry +static /man/8/svc +statically /man/1/disdep +statically /man/2/spree +statically /man/8/rip +stating /man/2/styxservers +station /man/1/collab-clients +station /man/10/plan9.ini +station /man/2/keyring-0intro +station /man/2/keyring-auth +station /man/2/security-0intro +station /man/2/security-auth +station /man/6/auth +stations /man/2/security-auth +statisics /man/2/prof +statistics /man/1/cprof +statistics /man/1/math-misc +statistics /man/1/mprof +statistics /man/1/prof +statistics /man/1/wm-misc +statistics /man/10/5cv +statistics /man/10/xalloc +statistics /man/2/prof +statistics /man/3/ether +statistics /man/3/ip +statistics /man/3/prof +statistics /man/3/usb +statistics /man/4/iostats +stats /man/10/plan9.ini +stats /man/2/prof +stats /man/3/ether +stats /man/3/ip +stats /man/3/tls +stats /man/4/dbfs +stats /man/8/httpd +status /man/1/0intro +status /man/1/alphabet-fs +status /man/1/alphabet-main +status /man/1/charon +status /man/1/cmp +status /man/1/diff +status /man/1/fc +status /man/1/fs +status /man/1/ftest +status /man/1/grep +status /man/1/grid-monitor +status /man/1/grid-register +status /man/1/kill +status /man/1/look +status /man/1/mk +status /man/1/mkdir +status /man/1/netstat +status /man/1/os +status /man/1/ps +status /man/1/read +status /man/1/sh +status /man/1/sh-alphabet +status /man/1/sh-file2chan +status /man/1/sh-regex +status /man/1/sh-sexprs +status /man/1/sh-std +status /man/1/sh-tk +status /man/1/stack +status /man/1/wm +status /man/10/mk +status /man/10/odbc +status /man/10/qio +status /man/10/xalloc +status /man/2/0intro +status /man/2/alphabet-intro +status /man/2/debug +status /man/2/ip +status /man/2/math-0intro +status /man/2/math-fp +status /man/2/mpeg +status /man/2/pop3 +status /man/2/scsiio +status /man/2/sets +status /man/2/sh +status /man/2/styxservers +status /man/2/sys-0intro +status /man/2/sys-byte2char +status /man/2/sys-stat +status /man/2/wait +status /man/3/cmd +status /man/3/cons +status /man/3/dbg +status /man/3/eia +status /man/3/ether +status /man/3/flash +status /man/3/fpga +status /man/3/i82365 +status /man/3/ip +status /man/3/logfs +status /man/3/lpt +status /man/3/mnt +status /man/3/plap +status /man/3/prog +status /man/3/sd +status /man/3/sign +status /man/3/tls +status /man/3/usb +status /man/4/keyfs +status /man/5/stat +status /man/6/keys +status /man/8/applylog +status /man/8/dhcp +status /man/8/mangaload +status /man/8/ping +status /man/9/grab +std /man/1/read +std /man/1/sh +std /man/1/sh-arg +std /man/1/sh-csv +std /man/1/sh-expr +std /man/1/sh-file2chan +std /man/1/sh-regex +std /man/1/sh-sexprs +std /man/1/sh-std +std /man/1/sh-string +std /man/1/sh-test +std /man/1/sh-tk +std /man/2/sh +std /man/2/sys-pctl +std.b /man/1/sh-std +stderr /man/1/itest +stderr /man/1/sh +stderr /man/1/sh-std +stderr /man/1/yacc +stderr /man/2/security-auth +stdin /man/1/grid-monitor +stdin /man/1/grid-ns +stdin /man/1/grid-register +stdin /man/2/security-auth +stdin /man/4/cpu +stdout /man/1/grid-monitor +stdout /man/1/grid-register +stdout /man/1/itest +stdout /man/1/tkcmd +stdsym /man/2/debug +stein /man/9/grid +steinberg /man/2/imagefile +stem /man/1/mash +stem /man/1/mk +stem /man/1/sh +stem /man/1/webgrab +stem /man/1/yacc +stem /man/10/mk +stem.2 /man/10/mk +stem.b /man/1/mash +stem.b /man/1/mk +stem.b /man/1/sh +stem.c /man/10/mk +stem.dis /man/1/mk +stem0 /man/1/mk +stem0 /man/10/mk +stem1 /man/1/mk +stem1 /man/10/mk +stem2.b /man/1/mk +stem2.c /man/10/mk +stem9 /man/1/mk +stem9 /man/10/mk +step /man/1/cprof +step /man/1/deb +step /man/10/acid +step /man/2/debug +step /man/2/draw-example +step /man/2/security-0intro +step /man/2/sys-0intro +step /man/2/w3c-xpointers +step /man/3/prog +step /man/8/register +step /man/9/canvas +step /man/9/grid +stepexp /man/2/debug +stepout /man/2/debug +stepover /man/2/debug +stepped /man/1/deb +stepping /man/1/deb +stepping /man/10/acid +stepping /man/2/debug +steps /man/2/debug +steps /man/2/w3c-xpointers +steps /man/3/sd +steps /man/9/grid +steps /man/9/pack +stepstmt /man/2/debug +stereo /man/1/auplay +stereo /man/3/audio +stereo /man/6/audio +stick /man/9/grid +sticky /man/9/grid +stime /man/2/itslib +stipple /man/2/draw-example +stipple /man/9/canvas +stipple.draw /man/2/draw-example +stippled /man/9/canvas +stk /man/10/acid +stk /man/2/spree-cardlib +stmt /man/6/sbl +stob /man/2/convcs +stob.b /man/2/convcs +stob.dis /man/2/convcs +stop /man/1/charon +stop /man/1/collab-clients +stop /man/1/cprof +stop /man/1/dd +stop /man/1/deb +stop /man/1/mprof +stop /man/1/prof +stop /man/1/sh-std +stop /man/1/sleep +stop /man/1/stream +stop /man/10/acid +stop /man/10/plan9.ini +stop /man/2/debug +stop /man/2/dhcpclient +stop /man/2/prof +stop /man/2/sys-export +stop /man/2/sys-file2chan +stop /man/2/timers +stop /man/2/tkclient +stop /man/2/wmsrv +stop /man/3/dbg +stop /man/3/eia +stop /man/3/ftl +stop /man/3/ip +stop /man/3/kprof +stop /man/3/mpeg +stop /man/3/prof +stop /man/3/prog +stop /man/3/vid +stop /man/4/acme +stop /man/8/kfscmd +stop /man/8/mangaload +stop /man/9/text +stop /man/9/update +stopindex /man/9/text +stopped /man/1/listen +stopped /man/10/acid +stopped /man/10/devattach +stopped /man/10/ntsrv +stopped /man/2/debug +stopped /man/2/palmfile +stopped /man/2/prof +stopped /man/2/sys-export +stopped /man/2/timers +stopped /man/3/dbg +stopped /man/3/mpeg +stopping /man/1/p +stopping /man/1/sh +stopping /man/10/memory +stopping /man/10/strcat +stopping /man/9/text +stops /man/1/avr +stops /man/10/9load +stops /man/10/acid +stops /man/10/plan9.ini +stops /man/2/debug +stops /man/2/prof +stops /man/2/timers +stops /man/8/dns +stops /man/8/sntp +stops /man/9/text +stopwatch /man/1/wm-misc +stopwatch.b /man/1/wm-misc +storage /man/1/du +storage /man/1/ebook +storage /man/1/emu +storage /man/1/secstore +storage /man/10/print +storage /man/10/styx +storage /man/2/dbm +storage /man/2/diskblocks +storage /man/2/draw-display +storage /man/2/ida +storage /man/2/math-linalg +storage /man/2/secstore +storage /man/2/sexprs +storage /man/2/spree +storage /man/2/spree-objstore +storage /man/2/styxservers-nametree +storage /man/2/sys-stat +storage /man/2/ubfa +storage /man/2/venti +storage /man/2/xml +storage /man/3/draw +storage /man/3/ds +storage /man/3/logfs +storage /man/3/sd +storage /man/4/dbfs +storage /man/4/keyfs +storage /man/4/kfs +storage /man/4/logfile +storage /man/4/memfs +storage /man/4/namespace +storage /man/5/stat +storage /man/6/keytext +storage /man/6/sexprs +storage /man/8/mangaload +storage /man/8/rdbgsrv +store /man/1/acme +store /man/1/calendar +store /man/1/itest +store /man/1/secstore +store /man/10/acid +store /man/10/dev +store /man/10/styx +store /man/2/dbm +store /man/2/disks +store /man/2/draw-context +store /man/2/draw-screen +store /man/2/palmfile +store /man/2/scsiio +store /man/2/secstore +store /man/2/spree-gather +store /man/2/spree-objstore +store /man/2/styxservers +store /man/2/wmsrv +store /man/3/draw +store /man/3/logfs +store /man/4/dbfs +store /man/6/sexprs +store /man/6/ubfa +store /man/6/utf +store /man/8/getauthinfo +store /man/8/prep +store /man/9/checkbutton +store /man/9/menu +store /man/9/radiobutton +stored /man/1/acme +stored /man/1/cprof +stored /man/1/ebook +stored /man/1/env +stored /man/1/secstore +stored /man/1/sh +stored /man/1/sh-file2chan +stored /man/1/sh-std +stored /man/1/webgrab +stored /man/1/wm-misc +stored /man/10/qio +stored /man/10/readnum +stored /man/10/styx +stored /man/2/alphabet-intro +stored /man/2/asn1 +stored /man/2/convcs +stored /man/2/dbm +stored /man/2/dhcpclient +stored /man/2/disks +stored /man/2/draw-0intro +stored /man/2/hash +stored /man/2/ida +stored /man/2/imagefile +stored /man/2/ip +stored /man/2/keyring-0intro +stored /man/2/palmfile +stored /man/2/prof +stored /man/2/scsiio +stored /man/2/secstore +stored /man/2/security-login +stored /man/2/spree +stored /man/2/spree-objstore +stored /man/2/styxservers-nametree +stored /man/2/sys-fd2path +stored /man/2/ubfa +stored /man/2/xml +stored /man/3/logfs +stored /man/3/pipe +stored /man/3/tinyfs +stored /man/3/touch +stored /man/3/tv +stored /man/4/dbfs +stored /man/4/factotum +stored /man/4/keyfs +stored /man/4/keysrv +stored /man/4/kfs +stored /man/4/logfile +stored /man/4/ramfile +stored /man/5/0intro +stored /man/6/audio +stored /man/6/colour +stored /man/6/dis +stored /man/6/image +stored /man/6/keys +stored /man/6/man +stored /man/6/ndb +stored /man/6/sbl +stored /man/8/changelogin +stored /man/8/createsignerkey +stored /man/8/getauthinfo +stored /man/8/httpd +stored /man/8/prep +stored /man/9/canvas +stored /man/9/menu +stored /man/9/radiobutton +storer /man/6/image +stores /man/1/webgrab +stores /man/2/0intro +stores /man/2/disks +stores /man/2/draw-0intro +stores /man/2/palmfile +stores /man/2/sets +stores /man/2/spree-allow +stores /man/2/sys-fd2path +stores /man/4/dbfs +stores /man/5/0intro +stores /man/6/attrdb +stores /man/8/createsignerkey +stores /man/9/menu +storing /man/10/styx +storing /man/2/keyring-auth +storing /man/2/math-fp +storing /man/2/spree-objstore +storing /man/2/styx +storing /man/2/sys-self +storing /man/4/dbfs +storing /man/4/keyfs +str /man/10/acid +str /man/10/getfields +str /man/10/readnum +str /man/10/rune +str /man/10/strcat +str /man/10/styxserver +str /man/2/convcs +str /man/2/dis +str /man/2/draw-font +str /man/2/draw-image +str /man/2/keyring-ipint +str /man/2/prefab-element +str /man/2/sets +str /man/2/string +str /man/2/w3c-xpointers +str /man/2/xml +str2en /man/2/geodesy +str2lalo /man/2/geodesy +str2mark /man/2/xml +str2set /man/2/sets +straddle /man/1/acme +straight /man/2/asn1 +straight /man/9/canvas +straightforward /man/1/0intro +straightforward /man/10/qlock +straightforward /man/2/dis +strange /man/1/wm-misc +strategies /man/2/security-0intro +strcat /man/10/getfields +strcat /man/10/memory +strcat /man/10/strcat +strchr /man/10/strcat +strcmp /man/10/strcat +strcpy /man/10/strcat +strcspn /man/10/strcat +strdup /man/10/strcat +strdup.c /man/10/strcat +stream /man/1/alphabet-main +stream /man/1/auplay +stream /man/1/cat +stream /man/1/crypt +stream /man/1/diff +stream /man/1/read +stream /man/1/stream +stream /man/1/wm-sh +stream /man/10/a.out +stream /man/10/atoi +stream /man/10/print +stream /man/10/qio +stream /man/10/rune +stream /man/2/bufio +stream /man/2/convcs +stream /man/2/dis +stream /man/2/draw-context +stream /man/2/drawmux +stream /man/2/filter +stream /man/2/filter-deflate +stream /man/2/filter-slip +stream /man/2/imagefile +stream /man/2/keyring-rc4 +stream /man/2/spree +stream /man/2/sys-print +stream /man/2/sys-read +stream /man/2/ubfa +stream /man/3/ip +stream /man/3/mpeg +stream /man/3/pipe +stream /man/3/ssl +stream /man/6/audio +stream /man/6/dis +stream /man/6/image +stream /man/6/ubfa +stream /man/6/utf +stream /man/7/db +stream /man/8/httpd +stream.b /man/1/stream +streamed /man/2/convcs +streamers /man/1/stream +streaming /man/1/stream +streams /man/1/stream +streams /man/2/convcs +streams /man/2/keyring-getmsg +streams /man/2/keyring-getstring +streams /man/2/sys-stat +streams /man/2/wmlib +streams /man/3/audio +streams /man/3/cmd +streams /man/6/ubfa +streams /man/6/utf +streams /man/7/db +strengths /man/1/0intro +stretch /man/9/grid +stretch /man/9/pack +stretch /man/9/text +stretched /man/1/tktester +stretched /man/9/grid +stretched /man/9/text +strict /man/1/mc +strict /man/10/error +strict /man/2/wmsrv +strictly /man/10/eve +strictly /man/2/draw-0intro +strictly /man/4/factotum +stride /man/2/math-linalg +string /man/1/0intro +string /man/1/acme +string /man/1/alphabet-abc +string /man/1/alphabet-fs +string /man/1/alphabet-grid +string /man/1/alphabet-main +string /man/1/basename +string /man/1/brutus +string /man/1/charon +string /man/1/collab-clients +string /man/1/diff +string /man/1/disdep +string /man/1/fs +string /man/1/grid-monitor +string /man/1/idea +string /man/1/look +string /man/1/mash +string /man/1/mash-tk +string /man/1/mc +string /man/1/miniterm +string /man/1/mk +string /man/1/sh +string /man/1/sh-alphabet +string /man/1/sh-file2chan +string /man/1/sh-regex +string /man/1/sh-sexprs +string /man/1/sh-std +string /man/1/sh-string +string /man/1/sh-tk +string /man/1/sort +string /man/1/strings +string /man/1/tiny +string /man/1/tr +string /man/1/unicode +string /man/1/wm-sh +string /man/1/yacc +string /man/10/2c +string /man/10/acid +string /man/10/ar +string /man/10/atoi +string /man/10/c2l +string /man/10/dev +string /man/10/devattach +string /man/10/dynld +string /man/10/eve +string /man/10/getfields +string /man/10/intrenable +string /man/10/kproc +string /man/10/mk +string /man/10/odbc +string /man/10/parsecmd +string /man/10/plan9.ini +string /man/10/print +string /man/10/readnum +string /man/10/rune +string /man/10/strcat +string /man/10/styx +string /man/10/styxserver +string /man/2/0intro +string /man/2/alphabet-intro +string /man/2/arg +string /man/2/asn1 +string /man/2/attrdb +string /man/2/bloomfilter +string /man/2/bufio +string /man/2/cfg +string /man/2/command +string /man/2/convcs +string /man/2/daytime +string /man/2/dbm +string /man/2/debug +string /man/2/devpointer +string /man/2/dhcpclient +string /man/2/dialog +string /man/2/dict +string /man/2/dis +string /man/2/diskblocks +string /man/2/disks +string /man/2/dividers +string /man/2/draw-0intro +string /man/2/draw-context +string /man/2/draw-display +string /man/2/draw-example +string /man/2/draw-font +string /man/2/draw-image +string /man/2/drawmux +string /man/2/encoding +string /man/2/env +string /man/2/ether +string /man/2/exception +string /man/2/factotum +string /man/2/filepat +string /man/2/filter +string /man/2/filter-deflate +string /man/2/filter-slip +string /man/2/format +string /man/2/fsproto +string /man/2/geodesy +string /man/2/hash +string /man/2/ida +string /man/2/imagefile +string /man/2/ip +string /man/2/ir +string /man/2/itslib +string /man/2/keyring-0intro +string /man/2/keyring-auth +string /man/2/keyring-certtostr +string /man/2/keyring-gensk +string /man/2/keyring-getmsg +string /man/2/keyring-getstring +string /man/2/keyring-ipint +string /man/2/keyring-sha1 +string /man/2/keyset +string /man/2/mpeg +string /man/2/names +string /man/2/newns +string /man/2/palmfile +string /man/2/plumbmsg +string /man/2/pop3 +string /man/2/popup +string /man/2/prefab-compound +string /man/2/prefab-element +string /man/2/print +string /man/2/prof +string /man/2/pslib +string /man/2/readdir +string /man/2/regex +string /man/2/registries +string /man/2/scsiio +string /man/2/secstore +string /man/2/security-0intro +string /man/2/security-auth +string /man/2/security-login +string /man/2/security-ssl +string /man/2/selectfile +string /man/2/sets +string /man/2/sexprs +string /man/2/sh +string /man/2/smtp +string /man/2/spki +string /man/2/spki-verifier +string /man/2/spree +string /man/2/spree-allow +string /man/2/spree-cardlib +string /man/2/spree-gather +string /man/2/spree-objstore +string /man/2/srv +string /man/2/string +string /man/2/stringinttab +string /man/2/styx +string /man/2/styxpersist +string /man/2/styxservers +string /man/2/styxservers-nametree +string /man/2/sys-0intro +string /man/2/sys-bind +string /man/2/sys-chdir +string /man/2/sys-dial +string /man/2/sys-export +string /man/2/sys-fauth +string /man/2/sys-fd2path +string /man/2/sys-file2chan +string /man/2/sys-fversion +string /man/2/sys-open +string /man/2/sys-print +string /man/2/sys-remove +string /man/2/sys-self +string /man/2/sys-stat +string /man/2/sys-tokenize +string /man/2/sys-werrstr +string /man/2/tabs +string /man/2/tftp +string /man/2/tk +string /man/2/tkclient +string /man/2/translate +string /man/2/ubfa +string /man/2/venti +string /man/2/virgil +string /man/2/volume +string /man/2/w3c-css +string /man/2/w3c-xpointers +string /man/2/wait +string /man/2/wmclient +string /man/2/wmlib +string /man/2/wmsrv +string /man/2/workdir +string /man/2/xml +string /man/3/0intro +string /man/3/cap +string /man/3/cmd +string /man/3/cons +string /man/3/dbg +string /man/3/draw +string /man/3/ether +string /man/3/flash +string /man/3/floppy +string /man/3/fs +string /man/3/indir +string /man/3/ip +string /man/3/kprof +string /man/3/logfs +string /man/3/mnt +string /man/3/plap +string /man/3/prog +string /man/3/sign +string /man/3/ssl +string /man/3/tls +string /man/4/acme +string /man/4/dbfs +string /man/4/factotum +string /man/4/import +string /man/4/keyfs +string /man/4/registry +string /man/4/spree +string /man/5/0intro +string /man/5/error +string /man/5/version +string /man/6/attrdb +string /man/6/audio +string /man/6/dis +string /man/6/font +string /man/6/image +string /man/6/man +string /man/6/namespace +string /man/6/plumbing +string /man/6/regexp +string /man/6/sbl +string /man/6/sexprs +string /man/6/ubfa +string /man/7/db +string /man/8/changelogin +string /man/8/collabsrv +string /man/8/logind +string /man/8/manufacture +string /man/8/rstyxd +string /man/8/styxchat +string /man/9/0intro +string /man/9/bind +string /man/9/button +string /man/9/canvas +string /man/9/checkbutton +string /man/9/choicebutton +string /man/9/entry +string /man/9/frame +string /man/9/grab +string /man/9/grid +string /man/9/image +string /man/9/label +string /man/9/listbox +string /man/9/menu +string /man/9/menubutton +string /man/9/options +string /man/9/pack +string /man/9/panel +string /man/9/radiobutton +string /man/9/scale +string /man/9/scrollbar +string /man/9/send +string /man/9/text +string.b /man/1/sh-string +string.b /man/2/string +string.m /man/2/string +string1 /man/1/tr +string2 /man/1/tr +string2attrs /man/2/plumbmsg +stringint /man/2/stringinttab +stringinttab /man/2/stringinttab +stringlist2list /man/2/sh +strings /man/1/acme +strings /man/1/diff +strings /man/1/disdep +strings /man/1/look +strings /man/1/mash +strings /man/1/mash-tk +strings /man/1/mdb +strings /man/1/mk +strings /man/1/sh +strings /man/1/strings +strings /man/1/tiny +strings /man/1/wm-misc +strings /man/10/acid +strings /man/10/c2l +strings /man/10/devattach +strings /man/10/mk +strings /man/10/odbc +strings /man/10/print +strings /man/10/readnum +strings /man/10/strcat +strings /man/10/styx +strings /man/2/asn1 +strings /man/2/command +strings /man/2/convcs +strings /man/2/dhcpclient +strings /man/2/dialog +strings /man/2/dis +strings /man/2/filter-slip +strings /man/2/keyring-0intro +strings /man/2/keyring-getstring +strings /man/2/palmfile +strings /man/2/prefab-element +strings /man/2/security-0intro +strings /man/2/sexprs +strings /man/2/sh +strings /man/2/smtp +strings /man/2/string +strings /man/2/styx +strings /man/2/styxservers +strings /man/2/sys-0intro +strings /man/2/sys-fversion +strings /man/2/sys-print +strings /man/2/tk +strings /man/2/ubfa +strings /man/3/audio +strings /man/3/cons +strings /man/3/draw +strings /man/3/ds +strings /man/3/ip +strings /man/3/plap +strings /man/3/pnp +strings /man/3/prog +strings /man/3/vga +strings /man/4/factotum +strings /man/4/registry +strings /man/5/0intro +strings /man/5/stat +strings /man/5/version +strings /man/6/font +strings /man/6/image +strings /man/6/man +strings /man/6/regexp +strings /man/6/sbl +strings /man/6/sexprs +strings /man/6/translate +strings /man/6/ubfa +strings /man/6/users +strings /man/9/0intro +strings /man/9/entry +strings /man/9/listbox +strings.b /man/1/strings +strinttab /man/2/stringinttab +strinttab.b /man/2/stringinttab +strinttab.m /man/2/stringinttab +strip /man/1/basename +strip /man/1/deb +strip /man/1/limbo +strip /man/10/2a +strip /man/10/2c +strip /man/10/2l +strip /man/10/5cv +stripped /man/1/tiny +stripped /man/10/5cv +stripped /man/10/9load +stripped /man/10/kstrip +stripped /man/10/ms2 +stripped /man/10ti925/epocimg +stripped /man/10ti925/tihost +stripped /man/2/asn1 +stripped /man/3/tls +stripped /man/9/0intro +stripping /man/1/asm +stripping /man/1/limbo +stripping /man/10/kstrip +stripping /man/2/string +stripping /man/5/version +strlen /man/10/strcat +strncat /man/10/strcat +strncmp /man/10/strcat +strncpy /man/10/strcat +stroke /man/1/keyboard +stroke /man/2/draw-example +stroke /man/8/collabsrv +strokes /man/1/collab-clients +strokes /man/1/keyboard +strokes /man/3/cons +strokes /man/8/collabsrv +strokes /man/9/entry +strokes /man/9/text +strongarm /man/10/inb +strongly /man/2/keyring-crypt +strpbrk /man/10/strcat +strrchr /man/10/strcat +strs /man/10/styx +strspn /man/10/strcat +strstr /man/10/strcat +strtocert /man/2/keyring-certtostr +strtod /man/10/atoi +strtod.c /man/10/atoi +strtoip /man/2/keyring-ipint +strtok /man/10/strcat +strtol /man/10/atoi +strtol.c /man/10/atoi +strtol.c /man/10/strcat +strtoll /man/10/atoi +strtoll.c /man/10/strcat +strtopk /man/2/keyring-certtostr +strtosk /man/2/keyring-certtostr +strtoul /man/10/atoi +strtoul /man/3/flash +strtoul.c /man/10/atoi +strtoul.c /man/10/strcat +struck /man/4/registry +struct /man/10/2c +struct /man/10/a.out +struct /man/10/allocb +struct /man/10/ar +struct /man/10/dev +struct /man/10/devattach +struct /man/10/dynld +struct /man/10/newchan +struct /man/10/parsecmd +struct /man/10/ref +struct /man/10/styx +struct /man/10/styxserver +struct /man/6/man +structurally /man/2/format +structure /man/1/0intro +structure /man/1/alphabet-fs +structure /man/1/dd +structure /man/1/disdep +structure /man/1/ebook +structure /man/1/fs +structure /man/1/ftree +structure /man/1/grid-ns +structure /man/1/sh +structure /man/10/2c +structure /man/10/a.out +structure /man/10/ar +structure /man/10/c2l +structure /man/10/conf +structure /man/10/dev +structure /man/10/devattach +structure /man/10/dynld +structure /man/10/error +structure /man/10/kproc +structure /man/10/lock +structure /man/10/newchan +structure /man/10/parsecmd +structure /man/10/qio +structure /man/10/qlock +structure /man/10/ref +structure /man/10/sleep +structure /man/10/styx +structure /man/10/styxserver +structure /man/2/asn1 +structure /man/2/daytime +structure /man/2/debug +structure /man/2/dis +structure /man/2/draw-0intro +structure /man/2/draw-display +structure /man/2/draw-image +structure /man/2/draw-screen +structure /man/2/format +structure /man/2/ip +structure /man/2/keyring-getmsg +structure /man/2/keyring-getstring +structure /man/2/palmfile +structure /man/2/plumbmsg +structure /man/2/prefab-compound +structure /man/2/prefab-element +structure /man/2/sexprs +structure /man/2/styx +structure /man/2/styxservers +structure /man/2/sys-dial +structure /man/2/sys-dirread +structure /man/2/sys-dup +structure /man/2/sys-open +structure /man/2/sys-stat +structure /man/2/tk +structure /man/2/w3c-css +structure /man/2/wmsrv +structure /man/2/xml +structure /man/3/dbg +structure /man/3/logfs +structure /man/3/prof +structure /man/3/prog +structure /man/3/root +structure /man/3/tinyfs +structure /man/4/factotum +structure /man/4/namespace +structure /man/5/0intro +structure /man/5/stat +structure /man/6/colour +structure /man/6/dis +structure /man/6/sexprs +structured /man/2/asn1 +structured /man/2/format +structured /man/2/prefab-0intro +structured /man/3/logfs +structured /man/6/sexprs +structured /man/9/canvas +structures /man/1/0intro +structures /man/1/mprof +structures /man/10/2c +structures /man/10/acid +structures /man/10/c2l +structures /man/10/devattach +structures /man/10/lock +structures /man/10/qlock +structures /man/10/xalloc +structures /man/2/asn1 +structures /man/2/debug +structures /man/2/dis +structures /man/2/draw-0intro +structures /man/2/format +structures /man/2/prefab-compound +structures /man/2/prefab-element +structures /man/2/print +structures /man/2/prof +structures /man/2/spki +structures /man/2/styx +structures /man/2/sys-0intro +structures /man/2/sys-dirread +structures /man/3/dbg +structures /man/5/0intro +structures /man/6/keys +structures /man/8/ftl +strucures /man/10/c2l +sts /man/2/keyring-0intro +sts /man/2/security-0intro +stub /man/1/limbo +stub /man/10/5cv +stubs /man/10/devattach +stxyd /man/8/srv +style /man/1/acme +style /man/1/alphabet-fs +style /man/1/dd +style /man/1/fs +style /man/1/grid-monitor +style /man/1/mdb +style /man/1/mux +style /man/1/sh-regex +style /man/1/xd +style /man/10/2c +style /man/10/acid +style /man/10/atoi +style /man/10/dmainit +style /man/10/parsecmd +style /man/2/0intro +style /man/2/draw-font +style /man/2/prefab-0intro +style /man/2/prefab-compound +style /man/2/prefab-element +style /man/2/prefab-environ +style /man/2/prefab-style +style /man/2/spree-cardlib +style /man/2/string +style /man/2/styxpersist +style /man/2/sys-print +style /man/2/translate +style /man/2/w3c-css +style /man/4/acme +style /man/4/registry +style /man/6/man +style /man/9/0intro +style /man/9/canvas +style /man/9/grid +style /man/9/pack +style /man/9/text +style.edgecolor /man/2/prefab-compound +style.elemcolor /man/2/prefab-element +style.highlightcolor /man/2/prefab-compound +style.textcolor /man/2/prefab-element +style.textfont /man/2/prefab-element +style.titlecolor /man/2/prefab-element +style.titlefont /man/2/prefab-element +styles /man/1/xd +styles /man/2/draw-image +styles /man/2/prefab-style +styles /man/9/listbox +stylesheet /man/1/ebook +stylesheet /man/2/w3c-css +stylesheet /man/2/xml +stylised /man/10/error +stylus /man/1/collab-clients +stylus /man/1/emu +stylus /man/1/keyboard +stylus /man/1/wm-misc +stylus /man/3/pointer +stylus /man/8/touchcal +styx /man/1/0intro +styx /man/1/alphabet-main +styx /man/1/bind +styx /man/1/grid-register +styx /man/1/listen +styx /man/1/ls +styx /man/1/session +styx /man/1/sh-file2chan +styx /man/10/dev +styx /man/10/devattach +styx /man/10/odbc +styx /man/10/styx +styx /man/10/styxserver +styx /man/2/registries +styx /man/2/styx +styx /man/2/styxconv +styx /man/2/styxpersist +styx /man/2/styxservers +styx /man/2/styxservers-nametree +styx /man/2/sys-0intro +styx /man/2/sys-bind +styx /man/2/sys-export +styx /man/2/sys-fauth +styx /man/2/sys-file2chan +styx /man/2/sys-fversion +styx /man/2/sys-iounit +styx /man/2/sys-pipe +styx /man/2/sys-stat +styx /man/3/0intro +styx /man/3/logfs +styx /man/3/mnt +styx /man/4/0intro +styx /man/4/cpu +styx /man/4/dossrv +styx /man/4/export +styx /man/4/ftpfs +styx /man/4/iostats +styx /man/4/kfs +styx /man/4/memfs +styx /man/4/mntgen +styx /man/4/registry +styx /man/4/spree +styx /man/5/0intro +styx /man/5/attach +styx /man/5/open +styx /man/5/read +styx /man/5/stat +styx /man/5/version +styx /man/5/walk +styx /man/6/image +styx /man/6/namespace +styx /man/8/collabsrv +styx /man/8/rdbgsrv +styx /man/8/rstyxd +styx /man/8/srv +styx /man/8/styxchat +styx /man/8/styxmon +styx /man/8/svc +styx.b /man/2/styx +styx.h /man/10/styx +styx.h /man/5/0intro +styx.m /man/2/styx +styx.m /man/2/styxservers +styx.m /man/2/styxservers-nametree +styx.sh /man/8/svc +styxadddir /man/10/styxserver +styxaddfile /man/10/styxserver +styxchat /man/8/styxchat +styxchat /man/8/styxmon +styxchat.b /man/8/styxchat +styxclient /man/10/styxserver +styxconv /man/2/styxconv +styxconv.m /man/2/styxconv +styxd /man/2/security-auth +styxd /man/8/rstyxd +styxd.b /man/2/security-auth +styxd.b /man/8/rstyxd +styxd.dis /man/8/srv +styxdebug /man/10/styxserver +styxend /man/10/styxserver +styxfile /man/10/styxserver +styxfindfile /man/10/styxserver +styxfree /man/10/styxserver +styxinit /man/10/styxserver +styxlisten /man/1/listen +styxlisten /man/4/spree +styxmalloc /man/10/styxserver +styxmon /man/8/rdbgsrv +styxmon /man/8/styxchat +styxmon /man/8/styxmon +styxmon.b /man/8/styxmon +styxops /man/10/styxserver +styxperm /man/10/styxserver +styxpersist /man/1/bind +styxpersist /man/2/styxpersist +styxpersist.b /man/2/styxpersist +styxpersist.m /man/2/styxpersist +styxprocess /man/10/styxserver +styxqid /man/10/styxserver +styxreadstr /man/10/styxserver +styxrmfile /man/10/styxserver +styxserver /man/10/styxserver +styxserver /man/2/styxservers +styxserver /man/2/styxservers-nametree +styxserver.c /man/10/styxserver +styxserver.canopen /man/2/styxservers +styxserver.h /man/10/styxserver +styxserver.new /man/2/styxservers +styxserver.new /man/2/styxservers-nametree +styxserver.reply /man/2/styxservers +styxserver.walk /man/2/styxservers +styxservers /man/2/styx +styxservers /man/2/styxservers +styxservers /man/2/styxservers-nametree +styxservers /man/2/sys-stat +styxservers /man/5/0intro +styxservers.b /man/2/styxservers +styxservers.m /man/2/styxservers +styxservers.m /man/2/styxservers-nametree +styxtest /man/10/styxserver +styxtest.c /man/10/styxserver +styxtest0.c /man/10/styxserver +styxwait /man/10/styxserver +sub /man/1/acme +sub /man/1/charon +sub /man/1/deb +sub /man/1/toolbar +sub /man/1/webgrab +sub /man/2/draw-point +sub /man/2/format +sub /man/2/keyring-ipint +sub /man/2/prefab-element +sub /man/2/sexprs +sub /man/3/ip +sub /man/3/pnp +sub /man/9/grab +sub /man/9/grid +sub /man/9/pack +sub.2 /man/10/2c +sub.c /man/10/2c +subaddress /man/3/i2c +subaddressed /man/3/i2c +subaddresses /man/3/i2c +subaddressing /man/3/i2c +subcommand /man/1/mash-tk +subcommand /man/1/tktester +subcommands /man/1/mash-tk +subcommands /man/1/tktester +subcomponent /man/10/conf +subcomponents /man/1/webgrab +subcomponents /man/2/ubfa +subcube /man/6/colour +subcubes /man/6/colour +subdirectories /man/1/acme +subdirectories /man/1/bind +subdirectories /man/1/diff +subdirectories /man/1/ftree +subdirectories /man/1/grid-ns +subdirectories /man/10/odbc +subdirectories /man/3/ip +subdirectories /man/3/tls +subdirectories /man/5/0intro +subdirectories /man/6/proto +subdirectories /man/8/collabsrv +subdirectories /man/8/create +subdirectories /man/8/mkfs +subdirectory /man/1/acme +subdirectory /man/1/bind +subdirectory /man/1/du +subdirectory /man/1/ftree +subdirectory /man/1/grid-ns +subdirectory /man/3/sd +subdirectory /man/4/acme +subdirectory /man/4/mntgen +subdivision /man/6/colour +subexpression /man/1/acme +subexpression /man/1/sh-alphabet +subexpression /man/1/sh-regex +subexpression /man/2/math-0intro +subexpression /man/2/regex +subexpressions /man/1/mk +subexpressions /man/1/sh-alphabet +subexpressions /man/10/mk +subfn /man/1/sh-regex +subfn /man/1/sh-std +subfont /man/6/font +subfonts /man/2/draw-font +subfonts /man/3/draw +subfonts /man/6/font +subfonts /man/6/image +subhead /man/6/man +subitem /man/10/conf +subitems /man/10/conf +subject /man/1/tiny +subject /man/2/bufio +subject /man/2/draw-display +subject /man/2/sexprs +subject /man/2/spki +subject /man/2/spki-verifier +subject /man/2/spree-cardlib +subject /man/2/sys-fversion +subject /man/3/dbg +subject /man/3/logfs +subject /man/9/send +subject.kh /man/2/spki +subject.n /man/2/spki +subject.o /man/2/spki +subject.p /man/2/spki +subject.t /man/2/spki +subjects /man/2/spki +sublists /man/2/sexprs +submenu /man/9/menu +submenus /man/1/tktester +submenus /man/9/menubutton +submit /man/9/send +subnet /man/2/dhcpclient +subnet /man/2/ip +subnet /man/3/ip +subnet /man/8/bootpd +subnets /man/8/rip +subnetwork /man/6/ndb +subordinate /man/1/du +subordinate /man/1/webgrab +subpartitions /man/8/prep +subprocess /man/2/sys-dup +subpt /man/2/draw-rect +subregions /man/6/colour +subroutine /man/3/0intro +subroutines /man/2/math-linalg +subs /man/1/sh-regex +subs /man/2/spki +subscript /man/10/acid +subscript /man/2/0intro +subscripted /man/2/math-linalg +subscripts /man/10/acid +subscripts /man/9/text +subsection /man/1/grid-ns +subsections /man/10/0intro +subsections /man/9/canvas +subsequently /man/1/collab-clients +subsequently /man/1/mash +subsequently /man/1/sh-file2chan +subsequently /man/10/plan9.ini +subsequently /man/2/registries +subsequently /man/2/security-0intro +subsequently /man/2/sh +subsequently /man/2/spki +subsequently /man/2/styx +subsequently /man/2/styxservers +subsequently /man/2/sys-0intro +subsequently /man/2/sys-fauth +subsequently /man/3/boot +subsequently /man/3/sign +subsequently /man/4/export +subsequently /man/5/0intro +subsequently /man/8/svc +subsequently /man/9/variable +subset /man/1/freq +subset /man/10/kproc +subset /man/2/bloomfilter +subset /man/2/format +subset /man/2/ida +subset /man/2/sys-self +subset /man/3/audio +subset /man/3/ip +subset /man/6/proto +subset /man/6/sexprs +subsets /man/2/draw-0intro +subshell /man/1/sh +subsidiary /man/2/spki +substantially /man/4/dbfs +substitute /man/1/acme +substitute /man/1/mc +substitute /man/1/mk +substitute /man/10/mk +substituted /man/1/acme +substituted /man/1/mash +substituted /man/1/mk +substituted /man/1/sh +substituted /man/1/sh-regex +substituted /man/10/mk +substituted /man/10/rune +substituted /man/2/convcs +substituted /man/2/sh +substituted /man/3/ip +substituted /man/9/0intro +substituted /man/9/bind +substitutes /man/1/alphabet-fs +substitutes /man/1/fs +substitutes /man/1/sh-regex +substituting /man/1/mk +substituting /man/10/mk +substituting /man/9/0intro +substitution /man/1/mk +substitution /man/1/sh +substitution /man/1/sh-expr +substitution /man/1/sh-regex +substitution /man/1/sh-std +substitution /man/1/sh-string +substitution /man/1/tr +substitution /man/10/mk +substitution /man/2/sh +substitution /man/6/image +substitution /man/9/bind +substitutions /man/1/sh +substitutions /man/1/sh-regex +substitutions /man/1/tiny +substitutions /man/9/bind +substitutions /man/9/canvas +substitutions /man/9/text +substring /man/1/acme +substring /man/10/rune +substring /man/10/strcat +substring /man/2/regex +substring /man/3/pnp +substring /man/5/version +substring /man/6/image +substring /man/6/plumbing +substring /man/6/regexp +substrings /man/1/acme +substrings /man/6/image +substrings /man/6/plumbing +substructure /man/1/gettar +substructure /man/1/rm +substructure /man/10/2c +substructures /man/10/2c +subsumes /man/9/grid +subsystem /man/3/fpga +subsystem /man/3/ip +subsystems /man/10/dev +subsystems /man/3/ds +subsystems /man/3/mpeg +subtle /man/2/w3c-css +subtract /man/1/mathcalc +subtract /man/1/units +subtracted /man/10/a.out +subtracted /man/9/pack +subtraction /man/1/mdb +subtraction /man/1/sh-expr +subtree /man/9/grab +subtrees /man/8/applylog +subtype /man/10/devattach +subtype /man/2/sys-self +subtype /man/2/sys-stat +subtypes /man/2/xml +subunions /man/10/2c +subwindowing /man/2/draw-0intro +subwindows /man/2/draw-screen +succeed /man/1/acme +succeed /man/1/sh +succeed /man/2/keyring-auth +succeed /man/2/sys-open +succeed /man/2/wmsrv +succeed /man/3/ip +succeed /man/5/walk +succeeded /man/10/devattach +succeeded /man/2/factotum +succeeded /man/4/factotum +succeeding /man/1/uniq +succeeds /man/1/runas +succeeds /man/1/sh +succeeds /man/1/sh-file2chan +succeeds /man/10/lock +succeeds /man/2/alphabet-intro +succeeds /man/2/asn1 +succeeds /man/2/debug +succeeds /man/2/secstore +succeeds /man/2/sys-byte2char +succeeds /man/2/sys-open +succeeds /man/3/ds +succeeds /man/3/ip +succeeds /man/4/keysrv +succeeds /man/4/spree +succeeds /man/5/open +succeeds /man/5/stat +succeeds /man/8/dhcp +success /man/1/sh +success /man/10/devattach +success /man/10/dynld +success /man/10/styxserver +success /man/2/asn1 +success /man/2/dbm +success /man/2/debug +success /man/2/exception +success /man/2/factotum +success /man/2/keyset +success /man/2/registries +success /man/2/scsiio +success /man/2/secstore +success /man/2/security-login +success /man/2/security-ssl +success /man/2/sexprs +success /man/2/spki-verifier +success /man/2/styxservers +success /man/2/sys-0intro +success /man/2/sys-bind +success /man/2/sys-chdir +success /man/2/sys-dial +success /man/2/sys-export +success /man/2/sys-pipe +success /man/2/sys-stat +success /man/2/tftp +success /man/2/ubfa +success /man/3/boot +success /man/3/cmd +success /man/3/flash +success /man/7/db +successful /man/1/0intro +successful /man/1/bind +successful /man/1/collab-clients +successful /man/1/sh +successful /man/10/conf +successful /man/10/dev +successful /man/10/devattach +successful /man/10/newchan +successful /man/10/qio +successful /man/10/qlock +successful /man/10/styx +successful /man/10/styxserver +successful /man/2/asn1 +successful /man/2/dbm +successful /man/2/draw-context +successful /man/2/factotum +successful /man/2/keyring-auth +successful /man/2/keyring-crypt +successful /man/2/keyring-getstring +successful /man/2/registries +successful /man/2/scsiio +successful /man/2/security-auth +successful /man/2/security-ssl +successful /man/2/styx +successful /man/2/styxservers +successful /man/2/sys-bind +successful /man/2/sys-dial +successful /man/2/sys-dirread +successful /man/2/sys-fauth +successful /man/2/sys-file2chan +successful /man/3/cap +successful /man/3/dbg +successful /man/3/ip +successful /man/3/sign +successful /man/3/srv9 +successful /man/3/tls +successful /man/4/factotum +successful /man/4/keysrv +successful /man/5/error +successful /man/5/open +successful /man/5/stat +successful /man/5/version +successful /man/5/walk +successful /man/7/db +successful /man/7/dbsrv +successful /man/8/applylog +successful /man/8/collabsrv +successful /man/8/dhcp +successful /man/8/fpgaload +successful /man/8/register +successful /man/8/rstyxd +successful /man/8/styxchat +successfully /man/1/alphabet-main +successfully /man/1/mkdir +successfully /man/1/os +successfully /man/1/sh-alphabet +successfully /man/1/sh-file2chan +successfully /man/10/devattach +successfully /man/10/lock +successfully /man/10/qlock +successfully /man/2/dbm +successfully /man/2/dhcpclient +successfully /man/2/pop3 +successfully /man/2/spree-gather +successfully /man/2/styxpersist +successfully /man/2/styxservers +successfully /man/2/sys-bind +successfully /man/2/wmclient +successfully /man/3/cmd +successfully /man/5/walk +successfully /man/8/applylog +successfully /man/8/changelogin +successive /man/1/acme +successive /man/10/atoi +successive /man/10/devattach +successive /man/10/styx +successive /man/2/arg +successive /man/2/sys-byte2char +successive /man/2/ubfa +successive /man/4/registry +successive /man/5/walk +successive /man/6/font +successive /man/6/man +successively /man/3/tv +successively /man/8/bootpd +successively /man/9/grid +successor /man/1/mk +successor /man/1/tr +successor /man/10/mk +suffer /man/1/miniterm +suffer /man/10/splhi +suffice /man/10/dev +suffice /man/10/plan9.ini +suffice /man/2/dis +sufficent /man/3/logfs +sufficient /man/1/acme +sufficient /man/1/diff +sufficient /man/10/5cv +sufficient /man/10/lock +sufficient /man/10ti925/epocimg +sufficient /man/2/alphabet-intro +sufficient /man/2/draw-image +sufficient /man/2/draw-rect +sufficient /man/2/security-0intro +sufficient /man/2/styxservers +sufficient /man/2/sys-fversion +sufficient /man/3/lpt +suffix /man/1/acme +suffix /man/1/basename +suffix /man/1/ebook +suffix /man/1/gzip +suffix /man/1/tiny +suffix /man/1/webgrab +suffix /man/2/dbm +suffix /man/2/disks +suffix /man/2/draw-image +suffix /man/2/names +suffix /man/2/spki +suffix /man/2/w3c-css +suffix /man/5/version +suffix /man/6/dis +suffix /man/6/plumbing +suffix /man/6/sbl +suffix /man/8/prep +suffix /man/9/types +suffix1 /man/1/webgrab +suffix2 /man/1/webgrab +suffixed /man/1/du +suffixed /man/1/tiny +suffixed /man/10/atoi +suffixes /man/8/httpd +suggest /man/1/sh +suggest /man/2/dhcpclient +suggest /man/8/dhcp +suggested /man/4/namespace +suggests /man/5/version +suggests /man/6/colour +suid /man/2/factotum +suit /man/1/acme +suit /man/2/spree-cardlib +suit /man/8/svc +suitable /man/1/9win +suitable /man/1/ebook +suitable /man/1/ftree +suitable /man/1/sh +suitable /man/1/sh-expr +suitable /man/1/sh-std +suitable /man/1/sh-tk +suitable /man/10/9load +suitable /man/10/devattach +suitable /man/10/error +suitable /man/10/kbdputc +suitable /man/10/newchan +suitable /man/10/styx +suitable /man/10/styxserver +suitable /man/10ti925/tihost +suitable /man/2/convcs +suitable /man/2/dhcpclient +suitable /man/2/diskblocks +suitable /man/2/factotum +suitable /man/2/ida +suitable /man/2/keyring-certtostr +suitable /man/2/keyset +suitable /man/2/palmfile +suitable /man/2/prefab-0intro +suitable /man/2/pslib +suitable /man/2/registries +suitable /man/2/secstore +suitable /man/2/spki +suitable /man/2/styxservers +suitable /man/2/sys-dup +suitable /man/2/tk +suitable /man/2/tkclient +suitable /man/2/wmclient +suitable /man/3/indir +suitable /man/3/ip +suitable /man/3/logfs +suitable /man/3/vid +suitable /man/4/dbfs +suitable /man/4/factotum +suitable /man/4/import +suitable /man/4/keysrv +suitable /man/6/audio +suitable /man/6/colour +suitable /man/6/keyboard +suitable /man/8/bootpd +suitable /man/8/dns +suitable /man/8/ftl +suitable /man/8/getauthinfo +suitable /man/8/mkfs +suitable /man/8/prep +suitable /man/9/canvas +suitable /man/9/scrollbar +suitably /man/2/prefab-element +suite /man/1/miniterm +suite /man/10/qio +suite /man/10/styxserver +suite /man/2/convcs +suites /man/1/0intro +suites /man/10/0intro +suitrank /man/2/spree-cardlib +suits /man/2/spree-cardlib +sum /man/1/alphabet-fs +sum /man/1/fc +sum /man/1/fs +sum /man/1/math-misc +sum /man/1/mc +sum /man/1/sum +sum /man/10/styx +sum /man/2/crc +sum /man/2/dbm +sum /man/2/math-linalg +sum /man/6/colour +sum /man/6/image +sum /man/8/applylog +sum /man/9/grid +sum.b /man/1/sum +summaries /man/2/spki-verifier +summarised /man/1/yacc +summarised /man/10/0intro +summarised /man/8/logind +summarises /man/2/translate +summarises /man/3/ip +summarises /man/9/0intro +summarize /man/1/netstat +summary /man/1/du +summary /man/1/fc +summary /man/1/fs +summary /man/1/itest +summary /man/1/limbo +summary /man/10/9load +summary /man/10/xalloc +summary /man/3/ip +summary /man/3/pnp +summary /man/4/iostats +summary /man/4/namespace +summary /man/6/man +summary /man/8/applylog +summary /man/8/dhcp +summary /man/8/kfscmd +summary /man/8/ping +sums /man/1/du +sun /man/10/2c +sun /man/9/0intro +sun /man/9/1copyright +sunday /man/2/daytime +sunken /man/9/button +sunken /man/9/checkbutton +sunken /man/9/frame +sunken /man/9/options +sunken /man/9/radiobutton +sunken /man/9/types +sunsparc /man/10/acid +super /man/3/cmd +super /man/3/fs +super /man/9/0intro +superficially /man/1/0intro +superimposition /man/6/keyboard +superscript /man/6/keyboard +superscripts /man/9/text +superseded /man/1/wish +superseded /man/2/popup +superseding /man/1/dd +superset /man/3/ip +supplement /man/9/text +supplementary /man/1/acme +supplies /man/10/devattach +supply /man/1/secstore +supply /man/2/dhcpclient +supply /man/2/draw-context +supply /man/2/draw-display +supply /man/2/factotum +supply /man/2/styxservers +supply /man/4/acme +supply /man/5/0intro +supply /man/8/srv +supplying /man/1/mk +supplying /man/10/mk +support /man/1/acme +support /man/1/avr +support /man/1/brutus +support /man/1/charon +support /man/1/mc +support /man/1/sh +support /man/1/sh-alphabet +support /man/1/sh-expr +support /man/1/sh-file2chan +support /man/1/uuencode +support /man/10/0intro +support /man/10/2c +support /man/10/conf +support /man/10/devattach +support /man/10/dmainit +support /man/10/plan9.ini +support /man/2/asn1 +support /man/2/bloomfilter +support /man/2/disks +support /man/2/format +support /man/2/hash +support /man/2/imagefile +support /man/2/keyring-ipint +support /man/2/print +support /man/2/prof +support /man/2/spki-verifier +support /man/2/spree-cardlib +support /man/2/spree-gather +support /man/2/spree-objstore +support /man/2/sys-fversion +support /man/3/fs +support /man/3/i2c +support /man/3/ip +support /man/3/tinyfs +support /man/3/vga +support /man/4/factotum +support /man/4/ftpfs +support /man/4/kfs +support /man/4/lockfs +support /man/4/palmsrv +support /man/5/0intro +support /man/6/man +support /man/6/sbl +support /man/6/ubfa +support /man/6/utf +support /man/7/db +support /man/8/0intro +support /man/9/1copyright +support /man/9/canvas +support /man/9/options +support /man/9/text +supported /man/1/bind +supported /man/1/charon +supported /man/1/collab +supported /man/1/cpu +supported /man/1/crypt +supported /man/1/miniterm +supported /man/1/mk +supported /man/1/rcmd +supported /man/1/sh-expr +supported /man/1/tcs +supported /man/10/9load +supported /man/10/mk +supported /man/10/plan9.ini +supported /man/10/styxserver +supported /man/2/convcs +supported /man/2/geodesy +supported /man/2/palmfile +supported /man/2/print +supported /man/2/spki-verifier +supported /man/2/sys-0intro +supported /man/2/w3c-xpointers +supported /man/3/dynld +supported /man/3/flash +supported /man/3/logfs +supported /man/3/plap +supported /man/3/rtc +supported /man/3/sd +supported /man/3/ssl +supported /man/3/tls +supported /man/3/vga +supported /man/4/factotum +supported /man/4/ftpfs +supported /man/4/tarfs +supported /man/6/keyboard +supported /man/6/sexprs +supported /man/8/bootpd +supported /man/8/prep +supported /man/8/srv +supported /man/9/canvas +supported /man/9/cursor +supported /man/9/grid +supported /man/9/image +supported /man/9/options +supported /man/9/pack +supported /man/9/see +supported /man/9/text +supported /man/9/update +supporting /man/1/charon +supporting /man/10/dev +supporting /man/10/kproc +supporting /man/4/namespace +supporting /man/4/registry +supports /man/1/avr +supports /man/1/charon +supports /man/1/emu +supports /man/1/mash +supports /man/10/9load +supports /man/10/intrenable +supports /man/2/asn1 +supports /man/2/security-0intro +supports /man/2/spki-verifier +supports /man/2/sys-open +supports /man/2/ubfa +supports /man/3/audio +supports /man/3/i82365 +supports /man/3/sd +supports /man/4/factotum +supports /man/4/ftpfs +supports /man/6/colour +supports /man/8/httpd +supports /man/9/canvas +suppose /man/2/alphabet-intro +supposed /man/2/disks +supposedly /man/4/keyfs +suppress /man/1/bind +suppress /man/1/rm +suppress /man/1/tkcmd +suppress /man/10/2c +suppress /man/10/2l +suppress /man/3/srv9 +suppress /man/4/ftpfs +suppress /man/4/kfs +suppress /man/6/man +suppress /man/8/kfscmd +suppress /man/8/ping +suppressed /man/1/sh +suppresses /man/1/comm +suppresses /man/1/echo +suppresses /man/1/limbo +suppresses /man/1/mash-tk +suppresses /man/1/yacc +suppresses /man/10/acid +suppresses /man/10/iar +surfer /man/1/charon +surprisingly /man/1/0intro +surrounded /man/1/bind +surrounded /man/1/mash +surrounded /man/1/sh +surrounded /man/1/sh-csv +surrounded /man/1/sh-std +surrounded /man/10/acid +surrounded /man/2/sexprs +surrounded /man/4/9srvfs +surrounded /man/8/styxchat +surrounded /man/9/bind +surrounding /man/1/mk +surrounding /man/1/sh +surrounding /man/1/wm-sh +surrounding /man/10/mk +surrounding /man/2/string +surrounding /man/2/styxservers +surrounding /man/2/sys-chdir +surrounding /man/2/w3c-css +survey /man/2/geodesy +survive /man/2/registries +survived /man/1/0intro +suspect /man/10/plan9.ini +suspend /man/1/emu +suspend /man/1/sleep +suspend /man/10/plan9.ini +suspend /man/2/draw-context +suspend /man/2/spree +suspend /man/2/wmsrv +suspend /man/3/mpeg +suspended /man/1/kill +suspended /man/2/spree +suspends /man/1/sleep +suspends /man/2/sys-sleep +suspension /man/2/spree-gather +suspension /man/2/sys-sleep +svc /man/1/listen +svc /man/1/rcmd +svc /man/10/odbc +svc /man/2/registries +svc /man/2/security-login +svc /man/4/keysrv +svc /man/6/keys +svc /man/6/namespace +svc /man/7/db +svc /man/7/dbsrv +svc /man/8/changelogin +svc /man/8/cs +svc /man/8/getauthinfo +svc /man/8/httpd +svc /man/8/logind +svc /man/8/rstyxd +svc /man/8/signer +svc /man/8/srv +svc /man/8/svc +svcname /man/10/ntsrv +svcname /man/4/registry +svcs /man/2/registries +svideo /man/3/tv +sw /man/9/options +sw /man/9/pack +sw /man/9/types +swab /man/1/dd +swap /man/1/dd +swap /man/1/fc +swap /man/8/prep +swapped /man/1/miniterm +sweep /man/1/acme +sweep /man/3/logfs +sweeper /man/1/wm-misc +sweeping /man/1/acme +sweeping /man/1/wm-misc +swept /man/3/logfs +swiproc /man/10/kproc +swiproc /man/10/sleep +switch /man/1/session +switch /man/10/devattach +switch /man/10/plan9.ini +switch /man/3/switch +switch /man/9/options +switch /man/9/text +switched /man/3/vid +switches /man/10/9load +switches /man/3/i2c +switches /man/9/text +swrite /man/2/scsiio +sx /man/3/touch +sxord /man/2/draw-image +sy /man/3/touch +sym /man/2/debug +symbios /man/10/plan9.ini +symbol /man/1/cprof +symbol /man/1/deb +symbol /man/1/ftree +symbol /man/1/mprof +symbol /man/1/prof +symbol /man/1/stack +symbol /man/1/yacc +symbol /man/10/2l +symbol /man/10/5cv +symbol /man/10/a.out +symbol /man/10/dynld +symbol /man/10/inm +symbol /man/10/kprof +symbol /man/10/kstrip +symbol /man/10/ms2 +symbol /man/10/odbc +symbol /man/10ti925/epocimg +symbol /man/10ti925/tihost +symbol /man/2/debug +symbol /man/2/prof +symbol /man/2/w3c-xpointers +symbol /man/3/0intro +symbol /man/6/keyboard +symbol /man/6/man +symbol /man/6/sbl +symbol /man/9/canvas +symbol's /man/10/dynld +symbol's /man/3/dynld +symbolic /man/1/chmod +symbolic /man/1/fc +symbolic /man/1/limbo +symbolic /man/1/sendmail +symbolic /man/1/webgrab +symbolic /man/10/acid +symbolic /man/10/seconds +symbolic /man/2/dis +symbolic /man/2/format +symbolic /man/2/registries +symbolic /man/2/sexprs +symbolic /man/2/sys-stat +symbolic /man/2/ubfa +symbolic /man/4/ftpfs +symbolic /man/6/dis +symbolic /man/6/ndb +symbolic /man/6/sexprs +symbolic /man/6/ubfa +symbolic /man/7/db +symbolic /man/8/cs +symbolically /man/6/dis +symbols /man/1/acme +symbols /man/1/unicode +symbols /man/10/2l +symbols /man/10/5cv +symbols /man/10/a.out +symbols /man/10/acid +symbols /man/10/ar +symbols /man/10/dynld +symbols /man/10/inm +symbols /man/10/kstrip +symbols /man/2/w3c-xpointers +symbols /man/3/dynld +symbols /man/6/keyboard +symdef /man/10/ar +symmetric /man/2/keyring-auth +symmetric /man/2/keyring-rc4 +symmetric /man/2/security-0intro +symmetric /man/2/security-auth +symmetry /man/2/draw-image +syms /man/10/a.out +syms /man/10/dynld +sync /man/1/dd +sync /man/2/venti +sync /man/3/flash +sync /man/3/logfs +sync /man/8/kfscmd +synchronisation /man/1/blur +synchronisation /man/10/lock +synchronisation /man/10/qlock +synchronisation /man/10/sleep +synchronisation /man/10/splhi +synchronisation /man/6/dis +synchronise /man/10/sleep +synchronise /man/2/sh +synchronise /man/2/sys-read +synchronised /man/2/palmfile +synchronize /man/2/sys-0intro +synchronize /man/3/tls +synchronous /man/2/sys-0intro +synchronously /man/1/listen +synchronously /man/1/tiny +synchronously /man/2/mpeg +synchronously /man/2/spree +synchronously /man/2/timers +synonym /man/1/fmt +synonym /man/10/print +synonym /man/2/dbm +synonym /man/2/sys-self +synonym /man/2/w3c-css +synopses /man/8/prep +synopsys /man/3/flash +synopsys /man/3/switch +synopsys /man/3/usb +synopsys /man/8/cs +syntactic /man/1/sh-std +syntactic /man/2/w3c-css +syntactic /man/5/0intro +syntactic /man/6/sbl +syntactically /man/10/c2l +syntax /man/1/charon +syntax /man/1/mash +syntax /man/1/mathcalc +syntax /man/1/mc +syntax /man/1/mdb +syntax /man/1/sh +syntax /man/1/sh-alphabet +syntax /man/1/sh-regex +syntax /man/1/sh-std +syntax /man/1/tail +syntax /man/1/tiny +syntax /man/10/5cv +syntax /man/10/atoi +syntax /man/10/plan9.ini +syntax /man/2/asn1 +syntax /man/2/attrdb +syntax /man/2/draw-display +syntax /man/2/ip +syntax /man/2/names +syntax /man/2/tk +syntax /man/2/w3c-css +syntax /man/2/w3c-xpointers +syntax /man/3/cmd +syntax /man/3/flash +syntax /man/3/ip +syntax /man/6/keytext +syntax /man/6/regexp +syntax /man/6/sexprs +syntax /man/6/translate +syntax /man/6/ubfa +syntax /man/8/ping +syntax /man/9/bind +syntax /man/9/canvas +syntax /man/9/cursor +syntax /man/9/text +synthesise /man/1/0intro +synthesise /man/4/ramfile +synthesised /man/4/ramfile +synthesiser /man/3/fpga +synthesize /man/5/0intro +synthesizes /man/5/0intro +sys /man/1/0intro +sys /man/1/alphabet-fs +sys /man/1/auplay +sys /man/1/bind +sys /man/1/cd +sys /man/1/chgrp +sys /man/1/chmod +sys /man/1/cp +sys /man/1/cpu +sys /man/1/du +sys /man/1/fc +sys /man/1/fs +sys /man/1/ftest +sys /man/1/kill +sys /man/1/limbo +sys /man/1/listen +sys /man/1/ls +sys /man/1/mkdir +sys /man/1/mv +sys /man/1/ns +sys /man/1/pwd +sys /man/1/read +sys /man/1/rm +sys /man/1/secstore +sys /man/1/sh +sys /man/1/sh-file2chan +sys /man/1/sh-std +sys /man/1/sleep +sys /man/1/stack +sys /man/1/stream +sys /man/1/telnet +sys /man/1/time +sys /man/1/tiny +sys /man/1/touch +sys /man/1/yacc +sys /man/10/2a +sys /man/10/2c +sys /man/10/ar +sys /man/10/c2l +sys /man/10/dev +sys /man/10/devattach +sys /man/10/error +sys /man/10/newchan +sys /man/10/odbc +sys /man/10/styx +sys /man/2/0intro +sys /man/2/arg +sys /man/2/attrdb +sys /man/2/bloomfilter +sys /man/2/bufio +sys /man/2/bufio-chanfill +sys /man/2/command +sys /man/2/daytime +sys /man/2/dbm +sys /man/2/dhcpclient +sys /man/2/diskblocks +sys /man/2/disks +sys /man/2/draw-0intro +sys /man/2/draw-context +sys /man/2/draw-display +sys /man/2/draw-example +sys /man/2/drawmux +sys /man/2/env +sys /man/2/factotum +sys /man/2/filepat +sys /man/2/fsproto +sys /man/2/ir +sys /man/2/itslib +sys /man/2/keyring-auth +sys /man/2/keyring-getmsg +sys /man/2/keyring-getstring +sys /man/2/keyring-sha1 +sys /man/2/names +sys /man/2/newns +sys /man/2/palmfile +sys /man/2/plumbmsg +sys /man/2/print +sys /man/2/readdir +sys /man/2/registries +sys /man/2/scsiio +sys /man/2/secstore +sys /man/2/security-auth +sys /man/2/security-login +sys /man/2/security-ssl +sys /man/2/sets +sys /man/2/sh +sys /man/2/spree +sys /man/2/srv +sys /man/2/styx +sys /man/2/styxconv +sys /man/2/styxpersist +sys /man/2/styxservers +sys /man/2/styxservers-nametree +sys /man/2/sys-0intro +sys /man/2/sys-bind +sys /man/2/sys-byte2char +sys /man/2/sys-chdir +sys /man/2/sys-dial +sys /man/2/sys-dirread +sys /man/2/sys-dup +sys /man/2/sys-export +sys /man/2/sys-fauth +sys /man/2/sys-fd2path +sys /man/2/sys-file2chan +sys /man/2/sys-fversion +sys /man/2/sys-iounit +sys /man/2/sys-millisec +sys /man/2/sys-open +sys /man/2/sys-pctl +sys /man/2/sys-pipe +sys /man/2/sys-print +sys /man/2/sys-read +sys /man/2/sys-remove +sys /man/2/sys-seek +sys /man/2/sys-self +sys /man/2/sys-sleep +sys /man/2/sys-stat +sys /man/2/sys-tokenize +sys /man/2/sys-utfbytes +sys /man/2/sys-werrstr +sys /man/2/tftp +sys /man/2/timers +sys /man/2/venti +sys /man/2/virgil +sys /man/2/wait +sys /man/2/wmsrv +sys /man/2/workdir +sys /man/3/0intro +sys /man/3/arch +sys /man/3/cap +sys /man/3/cons +sys /man/3/draw +sys /man/3/dup +sys /man/3/eia +sys /man/3/env +sys /man/3/fs +sys /man/3/ftl +sys /man/3/gpio +sys /man/3/i2c +sys /man/3/indir +sys /man/3/ip +sys /man/3/mnt +sys /man/3/mpeg +sys /man/3/pipe +sys /man/3/plap +sys /man/3/prog +sys /man/3/root +sys /man/3/sign +sys /man/3/srv +sys /man/3/srv9 +sys /man/3/ssl +sys /man/3/tls +sys /man/4/9srvfs +sys /man/4/dbfs +sys /man/4/export +sys /man/4/keyfs +sys /man/4/kfs +sys /man/4/logfile +sys /man/4/namespace +sys /man/4/ramfile +sys /man/4/registry +sys /man/5/0intro +sys /man/5/attach +sys /man/5/clunk +sys /man/5/error +sys /man/5/flush +sys /man/5/open +sys /man/5/read +sys /man/5/remove +sys /man/5/stat +sys /man/5/version +sys /man/5/walk +sys /man/6/audio +sys /man/6/namespace +sys /man/6/ndb +sys /man/6/utf +sys /man/7/db +sys /man/8/bootpd +sys /man/8/collabsrv +sys /man/8/cs +sys /man/8/ping +sys /man/8/rstyxd +sys /man/8/styxchat +sys /man/9/types +sys.m /man/1/acme +sys.m /man/1/yacc +sys.m /man/2/0intro +sys.m /man/2/arg +sys.m /man/2/draw-example +sys.m /man/2/format +sys.m /man/2/ir +sys.m /man/2/itslib +sys.m /man/2/security-ssl +sys.m /man/2/spree +sys.m /man/2/spree-cardlib +sys.m /man/2/styxpersist +sys.m /man/2/styxservers +sys.m /man/2/styxservers-nametree +sys.m /man/2/sys-0intro +sys.m /man/2/sys-bind +sys.m /man/2/sys-byte2char +sys.m /man/2/sys-chdir +sys.m /man/2/sys-dial +sys.m /man/2/sys-dirread +sys.m /man/2/sys-dup +sys.m /man/2/sys-export +sys.m /man/2/sys-fauth +sys.m /man/2/sys-fd2path +sys.m /man/2/sys-file2chan +sys.m /man/2/sys-fversion +sys.m /man/2/sys-iounit +sys.m /man/2/sys-millisec +sys.m /man/2/sys-open +sys.m /man/2/sys-pctl +sys.m /man/2/sys-pipe +sys.m /man/2/sys-print +sys.m /man/2/sys-read +sys.m /man/2/sys-remove +sys.m /man/2/sys-seek +sys.m /man/2/sys-self +sys.m /man/2/sys-sleep +sys.m /man/2/sys-stat +sys.m /man/2/sys-tokenize +sys.m /man/2/sys-utfbytes +sys.m /man/2/sys-werrstr +sys.m /man/2/wmlib +sys.m /man/2/wmsrv +sysctl /man/3/cons +sysctl /man/8/shutdown +sysname /man/1/tiny +sysname /man/3/cons +systarg /man/10/conf +systec /man/2/keyring-crypt +system's /man/1/emu +system's /man/1/netkey +system's /man/10/seconds +system's /man/2/dis +system's /man/2/plumbmsg +system's /man/2/srv +system's /man/2/styxservers-nametree +system's /man/3/cmd +system's /man/3/flash +system's /man/3/fpga +system's /man/3/i2c +system's /man/3/ip +system's /man/3/pointer +system's /man/3/snarf +system's /man/4/archfs +system's /man/8/bootpd +systemid /man/2/xml +systems /man/1/0intro +systems /man/1/chgrp +systems /man/1/chmod +systems /man/1/emu +systems /man/10/0intro +systems /man/10/9load +systems /man/10/eve +systems /man/10/plan9.ini +systems /man/2/command +systems /man/2/dbm +systems /man/2/disks +systems /man/2/draw-display +systems /man/2/encoding +systems /man/2/geodesy +systems /man/2/math-0intro +systems /man/2/plumbmsg +systems /man/2/security-0intro +systems /man/2/srv +systems /man/2/styx +systems /man/2/sys-0intro +systems /man/3/cmd +systems /man/3/cons +systems /man/3/ds +systems /man/3/ip +systems /man/3/logfs +systems /man/4/dossrv +systems /man/4/ftpfs +systems /man/4/mntgen +systems /man/4/namespace +systems /man/4/spree +systems /man/5/0intro +systems /man/6/colour +systems /man/6/keyboard +systems /man/7/db +systems /man/8/applylog +systems /man/8/ping +systems /man/8/prep +szelem /man/10/malloc +szymanski /man/6/image +t's /man/3/cons +t.dis /man/1/itest +t.sh /man/1/itest +t.stat /man/2/styxservers +t.stop /man/2/timers +t.timeout /man/2/timers +t0x04010000 /man/10/5coff +t2r4 /man/3/vga +t2r4hwgc /man/3/vga +ta /man/10/styx +tab /man/1/acme +tab /man/1/charon +tab /man/1/look +tab /man/1/mash +tab /man/1/sh +tab /man/1/sum +tab /man/1/tiny +tab /man/1/tsort +tab /man/1/wish +tab /man/10/conf +tab /man/10/devattach +tab /man/10/parsecmd +tab /man/2/asn1 +tab /man/2/plumbmsg +tab /man/2/string +tab /man/2/stringinttab +tab /man/2/tabs +tab /man/4/registry +tab /man/6/dis +tab /man/6/keyboard +tab /man/6/sexprs +tab /man/6/translate +tab /man/6/ubfa +tab /man/9/text +tabbed /man/2/tabs +table /man/1/charon +table /man/1/cprof +table /man/1/fortune +table /man/1/freq +table /man/1/limbo +table /man/1/math-misc +table /man/1/mprof +table /man/1/prof +table /man/1/secstore +table /man/1/sh-csv +table /man/1/unicode +table /man/1/wm-misc +table /man/10/2l +table /man/10/5cv +table /man/10/a.out +table /man/10/conf +table /man/10/dev +table /man/10/devattach +table /man/10/dynld +table /man/10/iar +table /man/10/inm +table /man/10/kprof +table /man/10/kstrip +table /man/10/ms2 +table /man/10/plan9.ini +table /man/10/styxserver +table /man/10ti925/epocimg +table /man/10ti925/tihost +table /man/2/alphabet-intro +table /man/2/asn1 +table /man/2/crc +table /man/2/dis +table /man/2/disks +table /man/2/hash +table /man/2/prof +table /man/2/spree-cardlib +table /man/2/stringinttab +table /man/2/styxservers +table /man/2/sys-0intro +table /man/3/ip +table /man/3/logfs +table /man/3/tinyfs +table /man/6/dis +table /man/6/keyboard +table /man/6/man +table /man/6/sbl +table /man/8/prep +table /man/8/rip +table /man/9/grid +table's /man/10/dynld +tablename /man/10/odbc +tables /man/1/date +tables /man/1/yacc +tables /man/10/2l +tables /man/10/9load +tables /man/10/dynld +tables /man/10/odbc +tables /man/10/xalloc +tables /man/2/dis +tables /man/2/disks +tables /man/3/ip +tables /man/6/man +tables /man/6/sbl +tables /man/8/rip +tablist /man/9/text +tabs /man/1/diff +tabs /man/1/look +tabs /man/1/mash +tabs /man/1/sh +tabs /man/1/tktester +tabs /man/1/wc +tabs /man/10/atoi +tabs /man/2/plumbmsg +tabs /man/2/popup +tabs /man/2/selectfile +tabs /man/2/styxservers +tabs /man/2/tabs +tabs /man/6/attrdb +tabs /man/6/man +tabs /man/9/0intro +tabs /man/9/text +tabs.b /man/2/tabs +tabs.m /man/2/tabs +tabsctl /man/2/tabs +tag /man/1/acme +tag /man/1/cook +tag /man/1/sh-file2chan +tag /man/1/timestamp +tag /man/1/wm +tag /man/10/2c +tag /man/10/plan9.ini +tag /man/10/styx +tag /man/10/styxserver +tag /man/2/asn1 +tag /man/2/attrdb +tag /man/2/dis +tag /man/2/ida +tag /man/2/prefab-element +tag /man/2/spki +tag /man/2/spki-verifier +tag /man/2/spree-allow +tag /man/2/styx +tag /man/2/ubfa +tag /man/2/wmlib +tag /man/2/wmsrv +tag /man/2/xml +tag /man/3/dynld +tag /man/3/ip +tag /man/3/tls +tag /man/4/acme +tag /man/4/factotum +tag /man/5/0intro +tag /man/5/attach +tag /man/5/clunk +tag /man/5/error +tag /man/5/flush +tag /man/5/open +tag /man/5/read +tag /man/5/remove +tag /man/5/stat +tag /man/5/version +tag /man/5/walk +tag /man/6/man +tag /man/6/sbl +tag /man/6/ubfa +tag /man/8/styxchat +tag /man/9/bind +tag /man/9/canvas +tag /man/9/text +tag's /man/9/text +tag.class /man/2/asn1 +tag.constr /man/2/asn1 +tag.num /man/2/asn1 +tag.tostring /man/2/asn1 +tag1 /man/2/asn1 +tag2 /man/2/asn1 +tagged /man/1/collab-clients +tagged /man/1/sh +tagged /man/10/styxserver +tagged /man/2/asn1 +tagged /man/2/spree-allow +tagged /man/2/ubfa +tagged /man/2/venti +tagged /man/2/wmsrv +tagged /man/3/tls +tagged /man/9/text +tagging /man/1/timestamp +tagging /man/2/asn1 +tagimplies /man/2/spki +tagintersect /man/2/spki +taglist /man/9/canvas +taglist /man/9/text +tagname /man/10/2c +tagname /man/9/text +tagno /man/4/factotum +tagof /man/2/asn1 +tagof /man/2/ubfa +tagorid /man/9/canvas +tags /man/1/acme +tags /man/1/brutus +tags /man/1/cook +tags /man/1/sh-file2chan +tags /man/2/asn1 +tags /man/2/dis +tags /man/2/prefab-compound +tags /man/2/prefab-element +tags /man/2/spki +tags /man/3/tls +tags /man/5/0intro +tags /man/8/kfscmd +tags /man/8/styxchat +tags /man/9/canvas +tags /man/9/text +tagselect /man/2/prefab-compound +tagtodelete /man/9/canvas +tail /man/1/mk +tail /man/1/tail +tail /man/1/tee +tail /man/10/acid +tail /man/10/mk +tail /man/10/qio +tail /man/2/sexprs +tail /man/3/cons +tail /man/3/prog +tailored /man/2/security-0intro +takefocus /man/9/button +takefocus /man/9/canvas +takefocus /man/9/checkbutton +takefocus /man/9/entry +takefocus /man/9/label +takefocus /man/9/listbox +takefocus /man/9/menubutton +takefocus /man/9/options +takefocus /man/9/radiobutton +takefocus /man/9/scale +takefocus /man/9/text +takes /man/1/0intro +takes /man/1/acme +takes /man/1/alphabet-fs +takes /man/1/alphabet-main +takes /man/1/bind +takes /man/1/blur +takes /man/1/charon +takes /man/1/deb +takes /man/1/disdep +takes /man/1/ebook +takes /man/1/fs +takes /man/1/grid-register +takes /man/1/look +takes /man/1/mk +takes /man/1/session +takes /man/1/sh +takes /man/1/sh-alphabet +takes /man/1/sh-arg +takes /man/1/sh-expr +takes /man/1/sh-string +takes /man/1/sh-tk +takes /man/1/tiny +takes /man/1/wish +takes /man/1/yacc +takes /man/10/devattach +takes /man/10/mk +takes /man/10/print +takes /man/10/styx +takes /man/2/arg +takes /man/2/attrdb +takes /man/2/bufio +takes /man/2/disks +takes /man/2/draw-image +takes /man/2/ether +takes /man/2/filter-slip +takes /man/2/ida +takes /man/2/keyring-certtostr +takes /man/2/plumbmsg +takes /man/2/prefab-compound +takes /man/2/prefab-element +takes /man/2/prof +takes /man/2/secstore +takes /man/2/security-0intro +takes /man/2/sh +takes /man/2/string +takes /man/2/styxconv +takes /man/2/sys-dial +takes /man/2/sys-dup +takes /man/2/sys-export +takes /man/2/sys-print +takes /man/2/w3c-css +takes /man/2/wait +takes /man/3/ftl +takes /man/3/prog +takes /man/6/colour +takes /man/8/applylog +takes /man/8/dhcp +takes /man/8/getauthinfo +takes /man/8/prep +takes /man/9/scrollbar +taking /man/1/alphabet-fs +taking /man/1/asm +taking /man/1/blur +taking /man/1/fs +taking /man/1/mash-make +taking /man/2/bufio +taking /man/2/draw-example +taking /man/2/sh +taking /man/2/styxservers +taking /man/3/boot +talk /man/1/telnet +talk /man/2/ubfa +talk /man/6/ubfa +tall /man/2/prefab-element +tall /man/9/text +tallied /man/1/du +tally /man/1/wc +tampered /man/2/security-0intro +tampering /man/3/tls +tan /man/1/mathcalc +tan /man/1/mc +tan /man/2/math-elem +tanh /man/1/mathcalc +tanh /man/1/mc +tanh /man/2/math-elem +tape /man/1/dd +tape /man/1/mux +tapping /man/1/wm-misc +tar /man/1/gettar +tar /man/4/tarfs +tarfile /man/4/tarfs +tarfs /man/1/gettar +tarfs /man/4/archfs +tarfs /man/4/tarfs +tarfs.b /man/4/tarfs +target /man/1/bind +target /man/1/cp +target /man/1/mash-make +target /man/1/mk +target /man/1/wm-misc +target /man/10/2c +target /man/10/conf +target /man/10/dmainit +target /man/10/mk +target /man/10ti925/tihost +target /man/2/xml +target /man/3/dbg +target /man/3/dup +target /man/3/ftl +target /man/3/i2c +target /man/6/translate +target /man/8/ftl +target /man/8/ping +target's /man/1/mk +target's /man/10/mk +target1 /man/1/mk +target1 /man/10/mk +target2 /man/1/mk +target2 /man/10/mk +targeted /man/1/0intro +targets /man/1/mash-make +targets /man/1/mk +targets /man/10/mk +tarlist /man/1/gettar +task /man/1/blur +task /man/1/keyboard +task /man/1/ps +task /man/1/sh-tk +task /man/1/tiny +task /man/1/wm +task /man/1/wm-misc +task /man/10/kproc +task /man/2/tkclient +task /man/4/cpu +task.b /man/1/wm-misc +taskbar /man/1/mash-tk +tasks /man/1/0intro +tasks /man/1/alphabet-abc +tasks /man/1/alphabet-grid +tasks /man/1/grid-query +tasks /man/1/session +tasks /man/1/sh +tasks /man/1/tiny +tasks /man/10/devattach +tasks /man/2/styxservers +tasks /man/9/canvas +tasktype /man/1/alphabet-abc +tasktype /man/1/alphabet-grid +taslock.c /man/10/lock +tattach /man/10/styx +tattach /man/2/styxservers +tattach /man/5/0intro +tattach /man/5/attach +tattach /man/8/styxchat +taught /man/1/mash-make +tauth /man/10/styx +tauth /man/2/styxservers +tauth /man/5/0intro +tauth /man/5/attach +tauth /man/8/styxchat +tb /man/4/factotum +tba /man/10/c2l +tbdf /man/10/intrenable +tbl /man/1/man +tbl /man/6/man +tc /man/10/devattach +tchan /man/2/styxservers-nametree +tcl /man/1/mathcalc +tcl /man/1/wish +tcl /man/2/tk +tcl /man/9/0intro +tcllib /man/1/mathcalc +tclunk /man/5/0intro +tclunk /man/5/clunk +tclunk /man/8/styxchat +tcondbreak /man/3/dbg +tconf /man/2/itslib +tconf.done /man/2/itslib +tconf.report /man/2/itslib +tconfig /man/2/itslib +tcp /man/1/alphabet-abc +tcp /man/1/alphabet-grid +tcp /man/1/cpu +tcp /man/1/dmview +tcp /man/1/grid-localreg +tcp /man/1/grid-register +tcp /man/1/listen +tcp /man/1/miniterm +tcp /man/1/netstat +tcp /man/1/telnet +tcp /man/10/odbc +tcp /man/10/styxserver +tcp /man/2/bufio +tcp /man/2/keyring-getmsg +tcp /man/2/srv +tcp /man/2/sys-dial +tcp /man/3/ip +tcp /man/4/cpu +tcp /man/4/ftpfs +tcp /man/4/import +tcp /man/4/keysrv +tcp /man/4/lockfs +tcp /man/4/registry +tcp /man/4/spree +tcp /man/6/ndb +tcp /man/8/collabsrv +tcp /man/8/cs +tcp /man/8/httpd +tcp /man/8/logind +tcp /man/8/mkfs +tcp /man/8/srv +tcp /man/8/svc +tcpmsg /man/3/ip +tcreate /man/10/styx +tcreate /man/5/0intro +tcreate /man/5/flush +tcreate /man/5/open +tcreate /man/8/styxchat +tcs /man/1/tcs +tcs /man/2/convcs +tcs.b /man/1/tcs +teal /man/9/types +tech /man/2/keyring-crypt +technicality /man/2/spree +technique /man/1/mk +technique /man/10/9load +technique /man/10/mk +technique /man/10/xalloc +technique /man/2/security-0intro +technology /man/1/avr +technology's /man/1/sum +tedious /man/2/styxservers +tee /man/1/tee +tee.b /man/1/tee +tel /man/6/attrdb +telecom /man/1/miniterm +telecom's /man/1/miniterm +telephone /man/2/keyring-0intro +telephone /man/8/register +telephone /man/8/signer +telephones /man/1/mux +telephones /man/2/security-0intro +telephony /man/10/kproc +teletexstring /man/2/asn1 +television /man/1/mux +television /man/2/prefab-0intro +television /man/3/tv +television /man/6/colour +televisions /man/1/mux +tells /man/1/9win +tells /man/1/blur +tells /man/1/collab +tells /man/1/diff +tells /man/1/gettar +tells /man/1/grid-register +tells /man/1/miniterm +tells /man/1/tktester +tells /man/1/wm +tells /man/10/2c +tells /man/10/ntsrv +tells /man/2/dis +tells /man/2/draw-display +tells /man/2/draw-font +tells /man/2/draw-image +tells /man/2/security-auth +tells /man/2/venti +tells /man/2/wmlib +tells /man/8/bootpd +tells /man/8/register +tells /man/8/rip +tells /man/9/canvas +telnet /man/1/miniterm +telnet /man/1/telnet +telnet.b /man/1/telnet +temp /man/10/plan9.ini +tempfile /man/2/diskblocks +template /man/1/acme +template /man/1/tktester +template /man/4/factotum +templates /man/1/tktester +templates /man/4/factotum +temporaries /man/10/iar +temporarily /man/1/acme +temporarily /man/10/lock +temporarily /man/4/ftpfs +temporarily /man/4/import +temporary /man/1/chmod +temporary /man/1/sh-std +temporary /man/10/iar +temporary /man/2/diskblocks +temporary /man/4/namespace +temporary /man/5/stat +temporary /man/8/getauthinfo +temporary /man/8/mkfs +temporary /man/8/rdbgsrv +ten /man/1/tail +tend /man/10/intrenable +tend /man/2/0intro +tend /man/6/colour +tenth /man/1/yacc +tenth /man/10/2c +tenth /man/9/canvas +tenths /man/3/prog +tenths /man/9/canvas +tentrysize /man/2/disks +term /man/1/sh +term /man/1/yacc +term /man/2/w3c-css +term /man/3/dbg +term /man/3/touch +term /man/6/proto +terminal /man/1/sh +terminal /man/4/acme +terminals /man/10/plan9.ini +terminals /man/2/w3c-css +terminals /man/6/sbl +terminate /man/1/kill +terminate /man/1/mk +terminate /man/1/sh +terminate /man/10/error +terminate /man/10/mk +terminate /man/2/convcs +terminate /man/2/filter +terminate /man/3/ether +terminate /man/3/tls +terminate /man/4/logfile +terminate /man/6/login +terminate /man/9/text +terminates /man/1/deb +terminates /man/1/kill +terminates /man/1/look +terminates /man/1/os +terminates /man/1/tkcmd +terminates /man/10/atoi +terminates /man/10/kproc +terminates /man/2/draw-image +terminates /man/2/filter +terminates /man/2/spree +terminates /man/2/sys-export +terminates /man/3/cmd +terminates /man/3/kprof +terminates /man/3/pipe +terminates /man/3/vga +terminates /man/4/9srvfs +terminates /man/9/canvas +termination /man/1/alphabet-fs +termination /man/1/fs +termination /man/1/tiny +termination /man/10/acid +termination /man/10/kproc +terminator /man/1/tiny +terminology /man/2/draw-0intro +terms /man/1/charon +terms /man/1/math-misc +terms /man/1/sh-alphabet +terms /man/10/odbc +terms /man/2/convcs +terms /man/2/draw-image +terms /man/2/w3c-css +terms /man/2/w3c-xpointers +terms /man/4/iostats +terms /man/9/1copyright +ternary /man/10/c2l +terr /man/3/dbg +terrestrial /man/2/geodesy +terror /man/5/error +test /man/1/0intro +test /man/1/ftest +test /man/1/itest +test /man/1/sh +test /man/1/sh-expr +test /man/1/sh-std +test /man/1/sh-test +test /man/1/tktester +test /man/10/plan9.ini +test /man/10/styx +test /man/10ti925/tihost +test /man/2/asn1 +test /man/2/bloomfilter +test /man/2/draw-example +test /man/2/itslib +test /man/3/kprof +test /man/6/sbl +test.b /man/1/gettar +test.tar /man/1/gettar +testdir /man/1/itest +tested /man/1/ftest +tested /man/10/error +tested /man/10/plan9.ini +tested /man/2/0intro +tested /man/2/security-0intro +testifies /man/2/security-0intro +testifying /man/2/security-0intro +testing /man/1/sh-std +testing /man/1/sh-test +testing /man/1/tkcmd +testing /man/1/tktester +testing /man/1/wish +testing /man/2/itslib +testing /man/3/ftl +tests /man/1/ftest +tests /man/1/itest +tests /man/1/math-misc +tests /man/1/sh-test +tests /man/1/tktester +tests /man/10ti925/tihost +tests /man/2/asn1 +tests /man/2/itslib +tetris /man/1/wm-misc +tetris.b /man/1/wm-misc +text /man/1/acme +text /man/1/brutus +text /man/1/charon +text /man/1/collab-clients +text /man/1/cprof +text /man/1/crypt +text /man/1/deb +text /man/1/diff +text /man/1/ebook +text /man/1/fmt +text /man/1/logwindow +text /man/1/man +text /man/1/mash +text /man/1/mash-make +text /man/1/mash-tk +text /man/1/miniterm +text /man/1/mk +text /man/1/mprof +text /man/1/plumb +text /man/1/prof +text /man/1/secstore +text /man/1/sendmail +text /man/1/sh-sexprs +text /man/1/sh-tk +text /man/1/strings +text /man/1/tcs +text /man/1/tktester +text /man/1/toolbar +text /man/1/unicode +text /man/1/wc +text /man/1/wm-misc +text /man/1/wm-sh +text /man/1/yacc +text /man/10/2l +text /man/10/5coff +text /man/10/5cv +text /man/10/a.out +text /man/10/acid +text /man/10/ar +text /man/10/atoi +text /man/10/conf +text /man/10/dynld +text /man/10/inm +text /man/10/kproc +text /man/10/mk +text /man/10/ms2 +text /man/10/odbc +text /man/10/print +text /man/10ti925/epocimg +text /man/10ti925/tihost +text /man/2/0intro +text /man/2/alphabet-intro +text /man/2/asn1 +text /man/2/bufio +text /man/2/convcs +text /man/2/daytime +text /man/2/disks +text /man/2/draw-0intro +text /man/2/draw-display +text /man/2/draw-font +text /man/2/draw-image +text /man/2/encoding +text /man/2/ether +text /man/2/format +text /man/2/ip +text /man/2/keyring-certtostr +text /man/2/names +text /man/2/palmfile +text /man/2/plumbmsg +text /man/2/pop3 +text /man/2/popup +text /man/2/prefab-0intro +text /man/2/prefab-compound +text /man/2/prefab-element +text /man/2/prefab-style +text /man/2/print +text /man/2/secstore +text /man/2/sexprs +text /man/2/smtp +text /man/2/spki +text /man/2/spree-cardlib +text /man/2/string +text /man/2/styx +text /man/2/sys-fversion +text /man/2/sys-print +text /man/2/tk +text /man/2/translate +text /man/2/ubfa +text /man/2/venti +text /man/2/w3c-css +text /man/2/w3c-xpointers +text /man/2/xml +text /man/3/dbg +text /man/3/draw +text /man/3/dynld +text /man/3/ether +text /man/3/fpga +text /man/3/ip +text /man/3/kprof +text /man/3/mpeg +text /man/3/plap +text /man/3/pnp +text /man/3/prog +text /man/3/sd +text /man/3/sign +text /man/3/ssl +text /man/3/tls +text /man/4/acme +text /man/4/dbfs +text /man/4/keyfs +text /man/4/keysrv +text /man/4/palmsrv +text /man/4/ramfile +text /man/4/registry +text /man/4/spree +text /man/5/0intro +text /man/5/stat +text /man/6/attrdb +text /man/6/audio +text /man/6/font +text /man/6/keytext +text /man/6/login +text /man/6/man +text /man/6/plumbing +text /man/6/sbl +text /man/6/sexprs +text /man/6/translate +text /man/6/utf +text /man/8/applylog +text /man/8/collabsrv +text /man/8/cs +text /man/8/sntp +text /man/8/srv +text /man/8/styxchat +text /man/9/0intro +text /man/9/button +text /man/9/canvas +text /man/9/checkbutton +text /man/9/choicebutton +text /man/9/entry +text /man/9/label +text /man/9/listbox +text /man/9/menu +text /man/9/menubutton +text /man/9/options +text /man/9/radiobutton +text /man/9/scrollbar +text /man/9/see +text /man/9/send +text /man/9/text +text /man/9/variable +text's /man/9/text +textbg /man/2/draw-image +textbgop /man/2/draw-image +textbox /man/2/prefab-compound +textcolor /man/2/prefab-style +textels /man/1/sh-sexprs +textfd /man/2/print +textfile /man/10/acid +textfont /man/2/prefab-style +textlength /man/2/palmfile +textop /man/2/draw-image +texts /man/2/security-0intro +texts /man/9/text +textsize /man/10/ksize +textual /man/1/acme +textual /man/1/mux +textual /man/2/asn1 +textual /man/2/attrdb +textual /man/2/draw-font +textual /man/2/encoding +textual /man/2/ether +textual /man/2/format +textual /man/2/ip +textual /man/2/keyring-0intro +textual /man/2/keyring-certtostr +textual /man/2/keyset +textual /man/2/prefab-element +textual /man/2/scsiio +textual /man/2/secstore +textual /man/2/sexprs +textual /man/2/spki +textual /man/2/w3c-xpointers +textual /man/3/arch +textual /man/3/cmd +textual /man/3/cons +textual /man/3/dbg +textual /man/3/eia +textual /man/3/ether +textual /man/3/flash +textual /man/3/gpio +textual /man/3/ip +textual /man/3/pnp +textual /man/3/sd +textual /man/3/sign +textual /man/3/tls +textual /man/3/tv +textual /man/3/usb +textual /man/4/acme +textual /man/5/0intro +textual /man/6/image +textual /man/6/keytext +textual /man/6/utf +textual /man/8/prep +textual /man/8/register +textual /man/8/styxchat +textual /man/9/button +textual /man/9/canvas +textual /man/9/checkbutton +textual /man/9/choicebutton +textual /man/9/label +textual /man/9/menu +textual /man/9/menubutton +textual /man/9/options +textual /man/9/radiobutton +textual /man/9/text +textually /man/1/acme +textually /man/2/ip +textually /man/2/keyring-ipint +textually /man/3/dbg +textually /man/3/pnp +textually /man/8/signer +texture /man/2/draw-example +texture.clipr /man/2/draw-example +texture.draw /man/2/draw-example +textured /man/2/draw-example +tf /man/6/man +tfd /man/10/plan9.ini +tfd /man/2/print +tflush /man/10/styx +tflush /man/5/0intro +tflush /man/5/flush +tflush /man/8/styxchat +tftp /man/2/dhcpclient +tftp /man/2/tftp +tftp /man/3/boot +tftp /man/8/bootpd +tftp.b /man/2/tftp +tftpd /man/8/bootpd +tftpd /man/8/mangaload +tftpd /man/8/srv +tftpd.b /man/8/bootpd +th /man/1/acme +th /man/1/sh +th /man/1/sh-regex +th /man/1/sh-std +th /man/10/devattach +th /man/2/regex +th /man/2/spree-cardlib +th /man/6/colour +th /man/6/man +th /man/9/choicebutton +th /man/9/grid +th /man/9/text +that's /man/1/fs +that's /man/2/spree-cardlib +thenceforth /man/5/version +theory.lcs.mit.edu /man/2/sexprs +there's /man/1/sh-file2chan +there's /man/2/pslib +there's /man/4/lockfs +there's /man/6/man +thereafter /man/1/mash +thereafter /man/1/mash-make +thereby /man/1/acme +thereby /man/10/kproc +thereby /man/3/srv +thereby /man/4/0intro +therefore /man/1/asm +therefore /man/1/collab-clients +therefore /man/1/netstat +therefore /man/1/session +therefore /man/1/sh +therefore /man/10/allocb +therefore /man/10/atoi +therefore /man/10/intrenable +therefore /man/10/qio +therefore /man/10/sleep +therefore /man/10/styx +therefore /man/10/styxserver +therefore /man/10ti925/epocimg +therefore /man/2/draw-image +therefore /man/2/geodesy +therefore /man/2/math-0intro +therefore /man/2/palmfile +therefore /man/2/security-0intro +therefore /man/2/sh +therefore /man/2/styxservers +therefore /man/2/sys-fd2path +therefore /man/2/tkclient +therefore /man/2/wmclient +therefore /man/3/ip +therefore /man/3/logfs +therefore /man/3/pipe +therefore /man/3/prof +therefore /man/3/usb +therefore /man/4/0intro +therefore /man/5/0intro +therefore /man/5/walk +therefore /man/6/colour +therefore /man/6/sexprs +therefore /man/6/ubfa +therefore /man/8/collabsrv +therein /man/1/gettar +therein /man/1/secstore +therein /man/10/allocb +therein /man/2/popup +therein /man/3/boot +therein /man/4/lockfs +therein /man/4/namespace +thereof /man/1/sh-alphabet +thereof /man/9/1copyright +thick /man/2/draw-image +thick /man/2/regex +thick /man/3/draw +thickness /man/2/draw-image +thickness /man/3/draw +third /man/1/cat +third /man/1/deb +third /man/1/mash +third /man/1/uuencode +third /man/10/2c +third /man/10/5cv +third /man/10/plan9.ini +third /man/2/pop3 +third /man/2/security-0intro +third /man/2/styxconv +third /man/3/kprof +third /man/3/pnp +third /man/4/acme +third /man/6/colour +third /man/8/changelogin +third /man/8/create +third /man/8/styxchat +third /man/9/canvas +third /man/9/listbox +third /man/9/menu +third /man/9/options +third /man/9/scrollbar +third /man/9/text +thirteen /man/5/0intro +thorough /man/2/styx +thoughtful /man/1/0intro +thread /man/1/deb +thread /man/1/emu +thread /man/1/ps +thread /man/1/sh-file2chan +thread /man/2/draw-display +thread /man/2/filter +thread /man/2/ir +thread /man/2/lock +thread /man/2/math-fp +thread /man/2/styxservers +thread /man/2/sys-0intro +thread /man/2/sys-bind +thread /man/2/sys-pctl +thread /man/2/sys-sleep +thread /man/6/dis +threaded /man/1/sh-file2chan +threaded /man/8/virgild +threads /man/1/deb +threads /man/1/tiny +threads /man/10/ntsrv +threads /man/2/sys-0intro +threads /man/2/sys-pctl +threads /man/2/sys-sleep +threads /man/6/dis +threshold /man/1/grid-register +threshold /man/2/spki +threshold /man/3/touch +throughout /man/1/0intro +throughout /man/3/logfs +throughout /man/6/utf +throughout /man/9/0intro +thrown /man/1/sh-string +throws /man/3/cons +thumbprint /man/2/keyset +thumbprint /man/2/registries +thwart /man/2/security-0intro +tick /man/10/kbdputc +tick /man/10/seconds +tick /man/3/kprof +tick /man/9/scale +ticker /man/1/mux +ticket /man/2/sys-fauth +tickinterval /man/9/scale +tickle /man/4/palmsrv +ticks /man/10/delay +ticks /man/10/seconds +ticks /man/3/kprof +tidier /man/2/ubfa +tidies /man/1/cleanname +tied /man/9/text +tighter /man/6/attrdb +tightly /man/10/plan9.ini +tightly /man/2/draw-image +tightly /man/2/prefab-element +tihost /man/10ti925/tihost +tilde /man/1/strings +tile /man/1/wm-misc +tile /man/2/draw-image +tiled /man/2/draw-image +tiles /man/2/draw-example +tiling /man/2/draw-0intro +tiling /man/2/draw-image +tim /man/2/daytime +time /man/1/0intro +time /man/1/acme +time /man/1/alphabet-fs +time /man/1/bind +time /man/1/blur +time /man/1/charon +time /man/1/collab-clients +time /man/1/cp +time /man/1/date +time /man/1/deb +time /man/1/du +time /man/1/emu +time /man/1/fs +time /man/1/gettar +time /man/1/grid-monitor +time /man/1/grid-register +time /man/1/itest +time /man/1/limbo +time /man/1/ls +time /man/1/mash +time /man/1/math-misc +time /man/1/mk +time /man/1/mprof +time /man/1/prof +time /man/1/ps +time /man/1/sh +time /man/1/sh-file2chan +time /man/1/sh-std +time /man/1/time +time /man/1/timestamp +time /man/1/touch +time /man/1/units +time /man/1/webgrab +time /man/1/wm-misc +time /man/10/2c +time /man/10/2l +time /man/10/9load +time /man/10/allocb +time /man/10/ar +time /man/10/devattach +time /man/10/intrenable +time /man/10/kproc +time /man/10/kprof +time /man/10/mk +time /man/10/odbc +time /man/10/plan9.ini +time /man/10/rune +time /man/10/seconds +time /man/10/sleep +time /man/10/splhi +time /man/10/styxserver +time /man/2/0intro +time /man/2/asn1 +time /man/2/daytime +time /man/2/dhcpclient +time /man/2/dis +time /man/2/draw-0intro +time /man/2/draw-image +time /man/2/filter-deflate +time /man/2/geodesy +time /man/2/ip +time /man/2/keyring-certtostr +time /man/2/keyring-crypt +time /man/2/keyring-sha1 +time /man/2/math-0intro +time /man/2/palmfile +time /man/2/prof +time /man/2/readdir +time /man/2/registries +time /man/2/scsiio +time /man/2/secstore +time /man/2/security-0intro +time /man/2/sh +time /man/2/spki-verifier +time /man/2/spree +time /man/2/spree-cardlib +time /man/2/styxservers +time /man/2/sys-bind +time /man/2/sys-byte2char +time /man/2/sys-millisec +time /man/2/sys-sleep +time /man/2/sys-stat +time /man/2/tftp +time /man/2/w3c-css +time /man/2/wmsrv +time /man/3/boot +time /man/3/cmd +time /man/3/cons +time /man/3/ds +time /man/3/ip +time /man/3/pnp +time /man/3/pointer +time /man/3/prof +time /man/3/prog +time /man/3/rtc +time /man/3/srv +time /man/3/ssl +time /man/3/tinyfs +time /man/3/tls +time /man/4/dbfs +time /man/4/iostats +time /man/4/keyfs +time /man/4/registry +time /man/5/0intro +time /man/5/open +time /man/5/stat +time /man/6/dis +time /man/6/keys +time /man/6/keytext +time /man/6/ndb +time /man/6/utf +time /man/8/applylog +time /man/8/bootpd +time /man/8/changelogin +time /man/8/collabsrv +time /man/8/create +time /man/8/ping +time /man/8/prep +time /man/8/sntp +time /man/8/styxchat +time /man/8/touchcal +time /man/8/virgild +time /man/9/button +time /man/9/canvas +time /man/9/checkbutton +time /man/9/choicebutton +time /man/9/entry +time /man/9/grid +time /man/9/label +time /man/9/listbox +time /man/9/menu +time /man/9/menubutton +time /man/9/pack +time /man/9/panel +time /man/9/radiobutton +time /man/9/scale +time /man/9/scrollbar +time /man/9/text +time.b /man/1/time +time2secs /man/2/spki +timed /man/2/timers +timefile /man/8/applylog +timekeeper /man/3/rtc +timeout /man/10/plan9.ini +timeout /man/10/sleep +timeout /man/2/tftp +timeout /man/2/timers +timeout /man/3/vga +timeout /man/5/stat +timeouts /man/2/timers +timeouts /man/3/ip +timer /man/2/sys-millisec +timer /man/2/timers +timer /man/3/kprof +timer /man/3/sd +timer.start /man/2/timers +timers /man/2/timers +timers.m /man/2/timers +times /man/1/acme +times /man/1/cprof +times /man/1/itest +times /man/1/mash-make +times /man/1/math-misc +times /man/1/mdb +times /man/1/timestamp +times /man/1/tiny +times /man/10/allocb +times /man/10/dev +times /man/10/iar +times /man/10/seconds +times /man/2/alphabet-intro +times /man/2/dbm +times /man/2/scsiio +times /man/2/security-0intro +times /man/2/timers +times /man/3/kprof +times /man/3/prof +times /man/3/tls +times /man/4/kfs +times /man/5/0intro +times /man/6/translate +times /man/8/changelogin +times /man/8/mkfs +times /man/9/text +timestamp /man/1/timestamp +timestamp.b /man/1/timestamp +timestamps /man/1/timestamp +timetable /man/1/mux +timetable /man/6/translate +timezone /man/1/date +timezone /man/4/namespace +timing /man/10/seconds +timing /man/10/sleep +timing /man/2/timers +timings /man/1/timestamp +timings /man/1/wm-misc +tiny /man/1/0intro +tiny /man/1/mash +tiny /man/1/rm +tiny /man/1/tiny +tiny /man/2/command +tiny /man/3/tinyfs +tinyfs /man/3/tinyfs +tinyfs /man/8/touchcal +tip /man/2/draw-image +tip /man/9/canvas +title /man/1/charon +title /man/1/cook +title /man/1/filename +title /man/1/grid-monitor +title /man/1/keyboard +title /man/1/logwindow +title /man/1/man +title /man/1/mash-tk +title /man/1/sh-tk +title /man/1/tktester +title /man/1/wm-sh +title /man/2/dialog +title /man/2/prefab-compound +title /man/2/prefab-element +title /man/2/prefab-style +title /man/2/selectfile +title /man/2/spree-cardlib +title /man/2/tkclient +title /man/2/wmclient +title /man/6/attrdb +title /man/7/db +title1 /man/1/toolbar +title2 /man/1/toolbar +titlebar /man/1/sh-tk +titlebar /man/1/tkcmd +titlebar /man/1/wish +titlebar /man/2/command +titlebar /man/2/tkclient +titlebar /man/2/wmclient +titlecolor /man/2/prefab-style +titled /man/1/wish +titlefont /man/2/prefab-style +tk /man/1/0intro +tk /man/1/cpu +tk /man/1/emu +tk /man/1/filename +tk /man/1/keyboard +tk /man/1/limbo +tk /man/1/mash +tk /man/1/mash-tk +tk /man/1/mprof +tk /man/1/mux +tk /man/1/prof +tk /man/1/sh +tk /man/1/sh-expr +tk /man/1/sh-std +tk /man/1/sh-tk +tk /man/1/tkcmd +tk /man/1/tktester +tk /man/1/wish +tk /man/1/wm-sh +tk /man/2/0intro +tk /man/2/command +tk /man/2/dialog +tk /man/2/dividers +tk /man/2/draw-0intro +tk /man/2/draw-context +tk /man/2/draw-pointer +tk /man/2/keyring-0intro +tk /man/2/popup +tk /man/2/prefab-0intro +tk /man/2/selectfile +tk /man/2/sh +tk /man/2/spree-cardlib +tk /man/2/tabs +tk /man/2/tk +tk /man/2/tkclient +tk /man/2/wmclient +tk /man/2/wmlib +tk /man/4/namespace +tk /man/6/keyboard +tk /man/9/0intro +tk /man/9/1copyright +tk /man/9/bind +tk /man/9/button +tk /man/9/canvas +tk /man/9/checkbutton +tk /man/9/choicebutton +tk /man/9/entry +tk /man/9/focus +tk /man/9/frame +tk /man/9/grab +tk /man/9/image +tk /man/9/label +tk /man/9/listbox +tk /man/9/menu +tk /man/9/menubutton +tk /man/9/options +tk /man/9/panel +tk /man/9/radiobutton +tk /man/9/scale +tk /man/9/scrollbar +tk /man/9/send +tk /man/9/text +tk /man/9/types +tk /man/9/update +tk /man/9/variable +tk's /man/4/namespace +tk's /man/9/canvas +tk's /man/9/grab +tk.b /man/1/mash +tk.b /man/1/mash-tk +tk.b /man/1/sh-tk +tk.c /man/2/tk +tk.m /man/2/0intro +tk.m /man/2/tk +tk.m /man/2/wmclient +tk2ms /man/10/seconds +tk2sec /man/10/seconds +tkarg /man/1/tkcmd +tkclient /man/1/toolbar +tkclient /man/1/wm +tkclient /man/2/draw-context +tkclient /man/2/tk +tkclient /man/2/tkclient +tkclient /man/2/wmlib +tkclient /man/2/wmsrv +tkclient.b /man/2/tkclient +tkclient.m /man/2/tkclient +tkcmd /man/1/sh-tk +tkcmd /man/1/tkcmd +tkcmd /man/1/wish +tkcmd /man/2/tk +tkcmd /man/9/0intro +tkcmd /man/9/button +tkcmd.b /man/1/tkcmd +tkcmds /man/2/translate +tkill /man/3/dbg +tktester /man/1/tktester +tkwargs /man/1/tktester +tl /man/1/mash +tl /man/1/sh-std +tl /man/2/arg +tl /man/2/debug +tls /man/3/tls +tls /man/4/factotum +tls1 /man/3/tls +tlsv1.0 /man/3/tls +tm /man/2/daytime +tm2epoch /man/2/daytime +tmget /man/3/dbg +tmp /man/1/alphabet-abc +tmp /man/1/alphabet-fs +tmp /man/1/alphabet-grid +tmp /man/1/blur +tmp /man/1/diff +tmp /man/1/fs +tmp /man/1/grid-ns +tmp /man/1/mash +tmp /man/1/sh +tmp /man/1/sh-file2chan +tmp /man/1/sh-std +tmp /man/1/sh-test +tmp /man/1/uuencode +tmp /man/10/c2l +tmp /man/10/iar +tmp /man/10/plan9.ini +tmp /man/3/kprof +tmp /man/4/ftpfs +tmp /man/4/memfs +tmp /man/4/namespace +tmp /man/8/prep +tmp /man/8/rdbgsrv +tmp.dis /man/1/uuencode +tmput /man/3/dbg +tmsg /man/2/styx +tmsg /man/2/styxservers +tmsg /man/8/styxchat +tmsg.attach /man/2/styxservers +tmsg.clunk /man/2/styxservers +tmsg.create /man/2/styxservers +tmsg.names /man/2/styx +tmsg.open /man/2/styxservers +tmsg.read /man/2/styx +tmsg.read /man/2/styxservers +tmsg.read /man/2/styxservers-nametree +tmsg.readerror /man/2/styx +tmsg.remove /man/2/styxservers +tmsg.stat /man/2/styxservers +tmsg.tag /man/2/styx +tmsg.unpack /man/2/styx +tmsg.version /man/2/styx +tmsg.walk /man/2/styxservers +tmsg.write /man/2/styx +tmsg.write /man/2/styxservers +tmsg.write /man/2/styxservers-nametree +tmsg.write /man/8/styxchat +tobig /man/2/string +today's /man/1/mux +todir /man/1/cp +todir /man/1/mv +todo /man/1/blur +toffset /man/2/disks +tofile /man/1/cp +tofile /man/1/mv +toggle /man/1/session +toggle /man/3/switch +toggle /man/3/usb +toggle /man/4/factotum +toggle /man/9/checkbutton +toggled /man/1/deb +toggled /man/1/tktester +toggles /man/3/switch +toggles /man/3/usb +toggles /man/9/checkbutton +toggles /man/9/listbox +toggles /man/9/menu +toggling /man/9/menu +toint /man/2/string +token /man/1/yacc +token /man/2/sexprs +token /man/2/sys-dial +token /man/6/sexprs +tokenised /man/2/filepat +tokenization /man/1/sh +tokenize /man/10/getfields +tokenize /man/10/parsecmd +tokenize /man/2/filepat +tokenize /man/2/sys-tokenize +tokenize.c /man/10/getfields +tokens /man/1/yacc +tokens /man/10/getfields +tokens /man/2/sexprs +tokens /man/2/spree +tokens /man/2/wmsrv +tokens /man/3/cons +tokens /man/3/usb +tokens /man/6/namespace +tokens /man/6/sexprs +toks /man/2/spree-allow +tolerance /man/2/ida +tolerant /man/2/ida +tolerate /man/1/charon +tolower /man/1/sh-string +tolower /man/2/string +tom /man/1/mash +tone /man/1/miniterm +tone /man/6/colour +tones /man/2/draw-display +tones /man/6/colour +tookit /man/2/prefab-0intro +tool /man/1/cprof +tool /man/1/mprof +tool /man/1/prof +tool /man/1/wm-misc +tool /man/10ti925/tihost +toolbar /man/1/logon +toolbar /man/1/toolbar +toolbar /man/1/wm +toolbar /man/2/tkclient +toolbar /man/2/wmclient +toolbar /man/4/factotum +toolbar.b /man/1/toolbar +toolkit /man/1/wish +toolkit /man/2/ir +toolkit /man/2/prefab-0intro +toolkit /man/2/prefab-compound +toolkit /man/2/prefab-element +toolkit /man/2/prefab-environ +toolkit /man/2/prefab-style +toolkit /man/2/tk +toolkit /man/9/options +tools /man/1/0intro +tools /man/10/odbc +tools /man/10/styxserver +tools /man/10ti925/epocimg +tools /man/2/math-0intro +tools /man/4/namespace +tools /man/8/fpgaload +toosmall /man/4/factotum +top.ctxt.ctl /man/2/tkclient +top.ctxt.kbd /man/2/tkclient +top.ctxt.ptr /man/2/tkclient +top.wreq /man/2/tkclient +topconfig /man/2/tkclient +topen /man/10/styx +topen /man/5/0intro +topen /man/5/open +topen /man/8/styxchat +topic /man/1/cook +toplev /man/2/spki +toplevel /man/1/wish +toplevel /man/2/dialog +toplevel /man/2/dividers +toplevel /man/2/popup +toplevel /man/2/selectfile +toplevel /man/2/tabs +toplevel /man/2/tk +toplevel /man/2/tkclient +toplevel /man/9/bind +topmost /man/2/sets +topmost /man/9/canvas +topmost /man/9/menu +topological /man/1/tsort +topological /man/10/2l +topp /man/2/regex +toret /man/3/prog +torn /man/9/menu +tos /man/3/ip +tostring /man/2/asn1 +total /man/1/charon +total /man/1/du +total /man/1/mash +total /man/1/time +total /man/10/dynld +total /man/10/kprof +total /man/10/ksize +total /man/10/xalloc +total /man/2/pop3 +total /man/2/print +total /man/2/prof +total /man/3/cons +total /man/3/dynld +total /man/3/ftl +total /man/3/kprof +total /man/3/prog +total /man/4/factotum +total /man/4/iostats +total /man/5/stat +total /man/8/prep +total /man/9/canvas +total /man/9/listbox +total /man/9/options +totally /man/9/canvas +totals /man/1/wc +totals /man/2/prof +touch /man/1/charon +touch /man/1/ftree +touch /man/1/keyboard +touch /man/1/logon +touch /man/1/mk +touch /man/1/touch +touch /man/10/mk +touch /man/3/touch +touch /man/5/stat +touch /man/8/touchcal +touch.b /man/1/touch +touchcal /man/3/touch +touchcal /man/8/touchcal +touchcal.b /man/8/touchcal +touchctl /man/3/touch +touchctl /man/8/touchcal +touched /man/3/touch +touched /man/8/kfscmd +touches /man/1/emu +touches /man/2/draw-image +touchstat /man/3/touch +toupper /man/1/sh-string +toupper /man/2/string +touser /man/3/cap +towards /man/10/dev +towards /man/10/devattach +towards /man/2/geodesy +towards /man/9/scale +towhom /man/2/smtp +tp /man/3/cons +tp /man/6/man +tproc /man/3/dbg +tr /man/1/tr +tr /man/1/unicode +tr /man/1/wc +tr /man/2/w3c-css +tr /man/2/w3c-xpointers +tr /man/2/xml +tr /man/3/cons +tr.b /man/1/tr +trace /man/1/deb +trace /man/1/stack +trace /man/10/acid +trace /man/2/styxservers +trace /man/3/ftl +trace /man/3/logfs +trace /man/3/prog +trace /man/4/dossrv +trace /man/8/bootpd +trace /man/8/mangaload +trace /man/8/rdbgsrv +traceback /man/1/stack +traces /man/1/emu +traces /man/3/cons +traceset /man/2/styxservers +tracing /man/2/dhcpclient +tracing /man/2/styx +tracing /man/2/ubfa +tracing /man/3/ftl +tracing /man/3/ip +tracing /man/3/logfs +tracing /man/4/keyfs +track /man/1/blur +track /man/2/disks +track /man/4/dossrv +track /man/4/spree +track /man/8/plumber +track /man/8/prep +track /man/9/menu +track /man/9/text +trackballs /man/2/draw-0intro +trademark /man/6/man +traditional /man/10/plan9.ini +traditional /man/2/arg +traditional /man/2/security-0intro +traditionally /man/1/sh +traditionally /man/2/arg +traffic /man/3/ip +traffic /man/3/pbus +traffic /man/4/iostats +traffic /man/8/bootpd +trailers /man/10/allocb +trailers /man/2/secstore +trailers /man/3/tls +trans /man/10/odbc +transa /man/2/math-linalg +transaction /man/10/odbc +transaction /man/3/usb +transaction /man/5/0intro +transaction /man/5/attach +transaction /man/5/error +transaction /man/5/flush +transaction /man/5/stat +transaction /man/7/db +transactions /man/10/odbc +transactions /man/3/usb +transactions /man/4/ftpfs +transactions /man/4/iostats +transation /man/10/odbc +transb /man/2/math-linalg +transcript /man/1/collab-clients +transfer /man/10/dmainit +transfer /man/10/error +transfer /man/10/inb +transfer /man/10ti925/tihost +transfer /man/2/keyring-0intro +transfer /man/2/smtp +transfer /man/2/spree +transfer /man/2/spree-cardlib +transfer /man/2/sys-iounit +transfer /man/2/tftp +transfer /man/3/boot +transfer /man/3/i2c +transfer /man/3/ip +transfer /man/3/sd +transfer /man/4/ftpfs +transfer /man/4/spree +transfer /man/5/open +transfer /man/5/read +transfer /man/8/bootpd +transferred /man/1/sh +transferred /man/1/sh-std +transferred /man/10/dmainit +transferred /man/10/dynld +transferred /man/10/readnum +transferred /man/2/spree +transferred /man/3/mnt +transferred /man/3/tv +transferred /man/4/iostats +transferred /man/4/spree +transferred /man/5/read +transfers /man/1/webgrab +transfers /man/10/9load +transfers /man/10/dmainit +transfers /man/2/spree +transfers /man/3/ip +transfers /man/8/bootpd +transform /man/2/keyring-0intro +transformation /man/2/devpointer +transformation /man/2/geodesy +transformation /man/2/math-export +transformation /man/2/secstore +transformation /man/3/touch +transformation /man/6/utf +transformation /man/8/touchcal +transformations /man/1/sh-alphabet +transformations /man/10/c2l +transformations /man/2/geodesy +transformations /man/9/canvas +transient /man/2/draw-screen +transient /man/2/spree +transition /man/2/debug +transitions /man/3/prog +translate /man/1/tcs +translate /man/1/tr +translate /man/2/draw-image +translate /man/2/ir +translate /man/2/prefab-element +translate /man/2/security-0intro +translate /man/2/security-login +translate /man/2/styxservers +translate /man/2/sys-dial +translate /man/2/translate +translate /man/6/namespace +translate /man/6/translate +translate /man/8/cs +translate /man/8/prep +translate.b /man/2/translate +translate.m /man/2/translate +translated /man/1/bind +translated /man/1/secstore +translated /man/10/c2l +translated /man/2/srv +translated /man/2/sys-bind +translated /man/3/cons +translated /man/3/draw +translated /man/3/mnt +translated /man/5/0intro +translated /man/8/cs +translated /man/8/virgild +translates /man/1/asm +translates /man/1/bind +translates /man/1/unicode +translates /man/10/c2l +translates /man/2/alphabet-intro +translates /man/2/prefab-element +translates /man/2/sys-byte2char +translates /man/3/mnt +translates /man/7/dbsrv +translates /man/8/virgild +translating /man/10/c2l +translating /man/2/prefab-element +translating /man/2/security-0intro +translating /man/8/virgild +translation /man/1/yacc +translation /man/10/c2l +translation /man/10/styx +translation /man/2/alphabet-intro +translation /man/2/draw-display +translation /man/2/secstore +translation /man/2/srv +translation /man/2/sys-0intro +translation /man/2/sys-bind +translation /man/2/sys-byte2char +translation /man/2/sys-dial +translation /man/2/translate +translation /man/3/ftl +translation /man/6/translate +translation /man/8/cs +translation /man/8/dns +translation /man/8/ftl +translation /man/8/init +translations /man/2/translate +translations /man/6/translate +translations /man/8/cs +translator /man/1/yacc +translator /man/10/c2l +translator /man/2/alphabet-intro +translator /man/4/ftpfs +transmission /man/1/uuencode +transmission /man/10/qio +transmission /man/2/keyring-ipint +transmission /man/2/plumbmsg +transmission /man/8/styxchat +transmissions /man/2/keyring-rc4 +transmit /man/1/uuencode +transmit /man/10/plan9.ini +transmit /man/2/filter-deflate +transmit /man/3/ip +transmits /man/2/styx +transmits /man/3/i2c +transmits /man/3/pbus +transmits /man/5/0intro +transmits /man/8/rip +transmitted /man/1/idea +transmitted /man/1/sh-file2chan +transmitted /man/10/print +transmitted /man/2/ida +transmitted /man/2/keyring-0intro +transmitted /man/2/keyring-getmsg +transmitted /man/2/plumbmsg +transmitted /man/2/scsiio +transmitted /man/2/sys-iounit +transmitted /man/2/sys-print +transmitted /man/2/ubfa +transmitted /man/3/dbg +transmitted /man/3/draw +transmitted /man/3/ip +transmitted /man/3/mnt +transmitted /man/3/pbus +transmitted /man/3/usb +transmitted /man/5/0intro +transmitted /man/5/walk +transmitted /man/8/collabsrv +transmitted /man/8/styxchat +transmitting /man/2/security-0intro +transmitting /man/2/sys-file2chan +transmitting /man/3/ip +transmitting /man/5/0intro +transparency /man/2/draw-image +transparency /man/9/image +transparency /man/9/types +transparent /man/2/draw-display +transparent /man/2/draw-example +transparent /man/2/draw-image +transparent /man/6/colour +transparent /man/6/dis +transparent /man/9/canvas +transparent /man/9/image +transparent /man/9/types +transport /man/1/sendmail +transport /man/10/allocb +transport /man/10/qio +transport /man/2/keyring-getmsg +transport /man/2/sexprs +transport /man/2/smtp +transport /man/2/ubfa +transport /man/3/ip +transport /man/3/tls +transport /man/4/export +transport /man/5/version +transport /man/6/keytext +transport /man/6/sexprs +transport /man/6/ubfa +transported /man/5/0intro +transposition /man/2/math-linalg +transverse /man/2/geodesy +trap /man/1/emu +trap /man/2/math-fp +trap /man/3/arch +trap /man/3/dbg +trap.c /man/10/intrenable +trap.c /man/3/dbg +traps /man/1/emu +traps /man/10/dev +traveling /man/3/tls +traversal /man/1/alphabet-fs +traversal /man/1/fs +traversal /man/9/menu +traversal /man/9/menubutton +traversal /man/9/options +traverse /man/2/dbm +traversed /man/10/devattach +traversed /man/2/styxservers-nametree +traverses /man/2/fsproto +traversing /man/1/alphabet-fs +traversing /man/1/fs +traversing /man/3/pnp +traversing /man/5/walk +tread /man/10/styx +tread /man/10/styxserver +tread /man/2/sys-file2chan +tread /man/5/0intro +tread /man/5/read +tread /man/8/styxchat +treat /man/1/acme +treat /man/1/keyboard +treat /man/10ti925/tihost +treat /man/2/attrdb +treat /man/2/prefab-0intro +treat /man/3/draw +treatment /man/1/mk +treatment /man/10/mk +treatment /man/2/xml +treatment /man/6/man +treatment /man/6/sbl +treats /man/1/sh-csv +treble /man/3/tv +tree /man/1/0intro +tree /man/1/ftree +tree /man/1/gettar +tree /man/1/grid-query +tree /man/1/itest +tree /man/1/session +tree /man/1/wm-misc +tree /man/10/conf +tree /man/10/dev +tree /man/10/devattach +tree /man/10/ntsrv +tree /man/10/styxserver +tree /man/2/disks +tree /man/2/math-0intro +tree /man/2/sexprs +tree /man/2/spree +tree /man/2/styxservers +tree /man/2/styxservers-nametree +tree /man/2/sys-0intro +tree /man/2/sys-bind +tree /man/2/ubfa +tree /man/2/venti +tree /man/2/w3c-xpointers +tree /man/2/xml +tree /man/3/0intro +tree /man/3/fs +tree /man/3/root +tree /man/4/import +tree /man/4/namespace +tree /man/5/0intro +tree /man/5/attach +tree /man/6/namespace +tree /man/6/proto +tree /man/6/sexprs +tree /man/8/applylog +tree /man/8/collabsrv +tree /man/8/create +tree /man/8/mkfs +tree /man/9/grab +tree /man/9/grid +tree /man/9/pack +tree.create /man/2/styxservers-nametree +tree.quit /man/2/styxservers-nametree +treeop /man/2/styxservers-nametree +trees /man/1/bind +trees /man/2/sexprs +trees /man/2/spki +trees /man/2/styxservers +trees /man/2/sys-bind +trees /man/2/sys-pctl +trees /man/4/namespace +trees /man/5/0intro +trees /man/8/applylog +tremove /man/5/0intro +tremove /man/5/remove +tremove /man/8/styxchat +tricky /man/2/xml +tried /man/10/plan9.ini +tried /man/2/sys-dial +tried /man/3/fs +tries /man/1/charon +tries /man/1/listen +tries /man/1/sh +tries /man/10/c2l +tries /man/10/qlock +tries /man/2/dict +tries /man/2/scsiio +tries /man/2/styxpersist +tries /man/2/sys-dial +tries /man/2/tkclient +tries /man/2/venti +tries /man/2/wmclient +tries /man/3/tls +trigger /man/2/tk +trigger /man/5/stat +trigger /man/9/canvas +triggered /man/1/mk +triggered /man/10/intrenable +triggered /man/10/mk +triggered /man/2/debug +triggers /man/2/prefab-compound +triggers /man/9/text +trigonometric /man/1/mc +trigonometric /man/2/math-elem +trimblock /man/10/allocb +trimmed /man/1/dd +trimmed /man/1/sh-string +trimmed /man/3/i2c +trimming /man/10/parsecmd +trims /man/10/allocb +trip /man/1/webgrab +trip /man/8/ping +triple /man/2/draw-display +triple /man/2/exception +triple /man/2/w3c-css +triple /man/6/colour +triplets /man/2/draw-0intro +trivial /man/2/tftp +trivial /man/6/colour +trivial /man/8/httpd +trnote /man/3/dbg +troff /man/1/man +troff /man/6/man +trouble /man/1/diff +troublesome /man/10/plan9.ini +troublesome /man/6/sexprs +trough /man/9/scale +trough /man/9/scrollbar +trough1 /man/9/scale +trough1 /man/9/scrollbar +trough2 /man/9/scale +trough2 /man/9/scrollbar +trtod.c /man/10/strcat +truemobile /man/10/plan9.ini +truly /man/3/prog +truncate /man/1/tiny +truncate /man/2/dbm +truncate /man/2/sys-open +truncate /man/5/error +truncate /man/5/open +truncated /man/1/sh-std +truncated /man/2/draw-image +truncated /man/2/keyring-getstring +truncated /man/2/sys-open +truncated /man/3/tinyfs +truncated /man/4/ramfile +truncated /man/5/0intro +truncated /man/5/open +truncated /man/9/0intro +truncates /man/2/bufio +truncates /man/4/ramfile +truncating /man/10/seconds +truncating /man/10/strcat +truncating /man/2/sh +truncating /man/5/0intro +truncation /man/5/open +truncation /man/5/stat +trust /man/1/mk +trust /man/10/mk +trust /man/2/keyring-0intro +trust /man/2/security-0intro +trusted /man/1/listen +trusted /man/2/keyring-0intro +trusts /man/2/security-0intro +truth /man/10/acid +try /man/1/alphabet-fs +try /man/1/bind +try /man/1/cal +try /man/1/ebook +try /man/1/fs +try /man/1/passwd +try /man/1/sh +try /man/1/sh-alphabet +try /man/2/debug +try /man/2/dhcpclient +try /man/2/ir +try /man/2/registries +try /man/2/scsiio +try /man/2/styx +try /man/2/tkclient +try /man/2/wmclient +try /man/5/open +trying /man/1/sh +trying /man/2/styxservers +trying /man/3/cmd +trying /man/4/namespace +ts /man/2/attrdb +ts /man/3/cons +ts /man/6/man +tsize /man/2/dis +tsleep /man/10/delay +tsleep /man/10/sleep +tsort /man/1/tsort +tsort.b /man/1/tsort +tst /man/2/styxservers-nametree +tstart /man/3/dbg +tstartstop /man/3/dbg +tstat /man/5/0intro +tstat /man/5/stat +tstat /man/8/styxchat +tstatus /man/3/dbg +tstop /man/3/dbg +ttc /man/10/plan9.ini +ttl /man/2/ip +ttl /man/3/ip +tune /man/1/mc +tuning /man/3/tv +tuple /man/1/sh-string +tuple /man/2/alphabet-intro +tuple /man/2/asn1 +tuple /man/2/attrdb +tuple /man/2/bufio-chanfill +tuple /man/2/cfg +tuple /man/2/convcs +tuple /man/2/debug +tuple /man/2/dhcpclient +tuple /man/2/dict +tuple /man/2/dis +tuple /man/2/draw-context +tuple /man/2/factotum +tuple /man/2/format +tuple /man/2/fsproto +tuple /man/2/geodesy +tuple /man/2/ida +tuple /man/2/imagefile +tuple /man/2/ip +tuple /man/2/keyring-getstring +tuple /man/2/keyset +tuple /man/2/math-elem +tuple /man/2/math-fp +tuple /man/2/palmfile +tuple /man/2/plumbmsg +tuple /man/2/pop3 +tuple /man/2/prefab-compound +tuple /man/2/readdir +tuple /man/2/regex +tuple /man/2/registries +tuple /man/2/secstore +tuple /man/2/security-ssl +tuple /man/2/sexprs +tuple /man/2/sh +tuple /man/2/spki-verifier +tuple /man/2/spree-allow +tuple /man/2/string +tuple /man/2/stringinttab +tuple /man/2/styx +tuple /man/2/styxpersist +tuple /man/2/styxservers +tuple /man/2/styxservers-nametree +tuple /man/2/sys-byte2char +tuple /man/2/sys-dial +tuple /man/2/sys-dirread +tuple /man/2/sys-file2chan +tuple /man/2/sys-fversion +tuple /man/2/sys-stat +tuple /man/2/sys-tokenize +tuple /man/2/tkclient +tuple /man/2/translate +tuple /man/2/ubfa +tuple /man/2/venti +tuple /man/2/w3c-css +tuple /man/2/w3c-xpointers +tuple /man/2/wait +tuple /man/2/wmlib +tuple /man/2/wmsrv +tuple /man/2/xml +tuple /man/4/factotum +tuple /man/6/sbl +tuple /man/6/ubfa +tuple /man/7/db +tuple's /man/6/sbl +tuples /man/1/limbo +tuples /man/2/attrdb +tuples /man/2/cfg +tuples /man/2/convcs +tuples /man/2/keyset +tuples /man/2/pop3 +tuples /man/2/registries +tuples /man/2/sh +tuples /man/2/sys-0intro +tuples /man/2/sys-file2chan +tuples /man/2/ubfa +tuples /man/2/w3c-css +tuples /man/2/w3c-xpointers +tuples /man/4/factotum +tuples /man/6/ubfa +turning /man/1/acme +turning /man/1/emu +turning /man/1/wm-sh +turning /man/10/styx +turning /man/2/spree-cardlib +turning /man/9/text +turns /man/1/sh-alphabet +turns /man/1/wm-sh +turns /man/10/plan9.ini +turns /man/2/draw-image +turns /man/2/xml +turns /man/3/cons +turns /man/4/acme +turns /man/4/factotum +turns /man/6/ubfa +turns /man/9/text +tutorial /man/9/0intro +tv /man/1/mux +tv /man/2/prefab-0intro +tv /man/3/tv +tv.h /man/3/tv +tvctl /man/3/tv +tversion /man/10/styx +tversion /man/2/styx +tversion /man/5/0intro +tversion /man/5/version +tversion /man/8/styxchat +tvlist /man/1/mux +tvp3020hwgc /man/3/vga +tvp3026hwgc /man/3/vga +twaitstop /man/3/dbg +twalk /man/10/styx +twalk /man/5/0intro +twalk /man/5/flush +twalk /man/5/walk +twalk /man/8/styxchat +twelve /man/1/cal +twelve /man/2/ether +twelve /man/3/cons +twelve /man/3/ether +twelve /man/6/image +twice /man/1/charon +twice /man/10/iar +twice /man/2/cfg +twice /man/5/stat +twice /man/8/bootpd +twice /man/9/grid +twice /man/9/pack +two's /man/3/audio +two's /man/6/dis +twrite /man/10/styx +twrite /man/2/sys-file2chan +twrite /man/5/0intro +twrite /man/5/read +twrite /man/8/styxchat +twstat /man/10/styx +twstat /man/5/0intro +twstat /man/5/stat +twstat /man/8/styxchat +tx /man/10/plan9.ini +tx /man/3/cons +tx /man/3/pbus +tx /man/4/spree +txfd /man/10/plan9.ini +txkey /man/10/plan9.ini +type /man/1/acme +type /man/1/alphabet-abc +type /man/1/alphabet-fs +type /man/1/alphabet-grid +type /man/1/alphabet-main +type /man/1/bind +type /man/1/brutus +type /man/1/charon +type /man/1/cook +type /man/1/deb +type /man/1/fs +type /man/1/limbo +type /man/1/ls +type /man/1/mash +type /man/1/session +type /man/1/sh-alphabet +type /man/1/tktester +type /man/1/yacc +type /man/10/2c +type /man/10/2l +type /man/10/5cv +type /man/10/9load +type /man/10/a.out +type /man/10/acid +type /man/10/atoi +type /man/10/c2l +type /man/10/dev +type /man/10/devattach +type /man/10/dynld +type /man/10/intrenable +type /man/10/kproc +type /man/10/newchan +type /man/10/odbc +type /man/10/plan9.ini +type /man/10/print +type /man/10/styx +type /man/10/styxserver +type /man/10ti925/epocimg +type /man/2/alphabet-intro +type /man/2/asn1 +type /man/2/bufio +type /man/2/convcs +type /man/2/dbm +type /man/2/debug +type /man/2/dhcpclient +type /man/2/dialog +type /man/2/dis +type /man/2/diskblocks +type /man/2/disks +type /man/2/draw-0intro +type /man/2/draw-context +type /man/2/draw-display +type /man/2/draw-font +type /man/2/draw-image +type /man/2/draw-point +type /man/2/draw-rect +type /man/2/filter +type /man/2/filter-deflate +type /man/2/filter-slip +type /man/2/format +type /man/2/fsproto +type /man/2/hash +type /man/2/imagefile +type /man/2/keyring-sha1 +type /man/2/palmfile +type /man/2/plumbmsg +type /man/2/prefab-0intro +type /man/2/prefab-compound +type /man/2/prefab-element +type /man/2/prefab-environ +type /man/2/prefab-style +type /man/2/print +type /man/2/prof +type /man/2/registries +type /man/2/selectfile +type /man/2/sexprs +type /man/2/sh +type /man/2/spree +type /man/2/spree-cardlib +type /man/2/styx +type /man/2/styxservers +type /man/2/sys-0intro +type /man/2/sys-dup +type /man/2/sys-file2chan +type /man/2/sys-print +type /man/2/sys-self +type /man/2/sys-stat +type /man/2/ubfa +type /man/2/venti +type /man/2/w3c-css +type /man/2/w3c-xpointers +type /man/2/xml +type /man/3/arch +type /man/3/dbg +type /man/3/draw +type /man/3/dynld +type /man/3/ether +type /man/3/flash +type /man/3/floppy +type /man/3/fs +type /man/3/indir +type /man/3/ip +type /man/3/pnp +type /man/3/prog +type /man/3/sd +type /man/3/tv +type /man/3/vga +type /man/4/acme +type /man/4/iostats +type /man/4/namespace +type /man/4/spree +type /man/5/0intro +type /man/5/attach +type /man/5/open +type /man/5/stat +type /man/6/dis +type /man/6/keyboard +type /man/6/keytext +type /man/6/man +type /man/6/sbl +type /man/8/collabsrv +type /man/8/dns +type /man/8/httpd +type /man/8/mangaload +type /man/8/prep +type /man/8/srv +type /man/8/styxchat +type /man/9/0intro +type /man/9/canvas +type /man/9/image +type /man/9/menu +type /man/9/types +type /man/9/variable +type1 /man/2/asn1 +type2 /man/2/asn1 +type3 /man/2/asn1 +type9 /man/2/disks +typeable /man/10/kbdputc +typechecking /man/1/sh-alphabet +typed /man/1/acme +typed /man/1/ebook +typed /man/1/mash-tk +typed /man/1/mdb +typed /man/1/miniterm +typed /man/1/sh +typed /man/1/sh-alphabet +typed /man/1/tkcmd +typed /man/1/wm +typed /man/1/wm-sh +typed /man/10/9load +typed /man/10/c2l +typed /man/2/alphabet-intro +typed /man/2/dialog +typed /man/2/keyring-0intro +typed /man/2/sys-pipe +typed /man/3/cons +typed /man/6/keyboard +typed /man/9/entry +typed /man/9/text +typedef /man/10/2c +typedef /man/10/a.out +typedef /man/10/allocb +typedef /man/10/devattach +typedef /man/10/dynld +typedef /man/10/newchan +typedef /man/10/parsecmd +typedef /man/10/ref +typedef /man/10/styx +typedef /man/10/styxserver +typedefs /man/10/2c +types /man/1/alphabet-fs +types /man/1/alphabet-main +types /man/1/charon +types /man/1/collab-clients +types /man/1/fs +types /man/1/limbo +types /man/1/mk +types /man/1/sh-alphabet +types /man/1/wm-misc +types /man/1/yacc +types /man/10/2c +types /man/10/2l +types /man/10/a.out +types /man/10/acid +types /man/10/c2l +types /man/10/conf +types /man/10/mk +types /man/10/plan9.ini +types /man/10/print +types /man/10/styx +types /man/2/0intro +types /man/2/alphabet-intro +types /man/2/asn1 +types /man/2/cfg +types /man/2/debug +types /man/2/dialog +types /man/2/dis +types /man/2/draw-context +types /man/2/draw-display +types /man/2/imagefile +types /man/2/ip +types /man/2/keyring-0intro +types /man/2/palmfile +types /man/2/prefab-0intro +types /man/2/prefab-element +types /man/2/prefab-environ +types /man/2/print +types /man/2/security-0intro +types /man/2/spki +types /man/2/styx +types /man/2/sys-print +types /man/2/sys-self +types /man/2/tk +types /man/2/tkclient +types /man/2/w3c-xpointers +types /man/3/draw +types /man/3/dynld +types /man/3/ether +types /man/3/flash +types /man/3/ip +types /man/4/spree +types /man/6/dis +types /man/6/keytext +types /man/6/sbl +types /man/6/sexprs +types /man/6/ubfa +types /man/8/prep +types /man/8/rdbgsrv +types /man/8/styxchat +types /man/9/0intro +types /man/9/bind +types /man/9/button +types /man/9/canvas +types /man/9/checkbutton +types /man/9/choicebutton +types /man/9/cursor +types /man/9/entry +types /man/9/frame +types /man/9/grid +types /man/9/image +types /man/9/label +types /man/9/listbox +types /man/9/menu +types /man/9/menubutton +types /man/9/options +types /man/9/pack +types /man/9/panel +types /man/9/radiobutton +types /man/9/scale +types /man/9/scrollbar +types /man/9/see +types /man/9/text +types /man/9/types +typeset /man/1/alphabet-abc +typeset /man/1/alphabet-fs +typeset /man/1/alphabet-grid +typeset /man/1/alphabet-main +typeset /man/1/sh-alphabet +typeset /man/2/alphabet-intro +typeset's /man/2/alphabet-intro +typesets /man/1/sh-alphabet +typesets /man/2/alphabet-intro +typex /man/10/c2l +typex /man/2/dis +typical /man/10/error +typical /man/10/plan9.ini +typical /man/10/styxserver +typically /man/1/acme +typically /man/1/cprof +typically /man/1/disdep +typically /man/1/ftree +typically /man/1/mash-make +typically /man/1/mc +typically /man/1/mk +typically /man/1/rcmd +typically /man/1/sleep +typically /man/1/strings +typically /man/1/tiny +typically /man/1/zeros +typically /man/10/2c +typically /man/10/2l +typically /man/10/9load +typically /man/10/conf +typically /man/10/dev +typically /man/10/devattach +typically /man/10/intrenable +typically /man/10/kbdputc +typically /man/10/mk +typically /man/10/newchan +typically /man/10/plan9.ini +typically /man/10/qio +typically /man/10/styxserver +typically /man/2/bufio +typically /man/2/command +typically /man/2/draw-0intro +typically /man/2/draw-context +typically /man/2/draw-image +typically /man/2/drawmux +typically /man/2/factotum +typically /man/2/keyring-certtostr +typically /man/2/palmfile +typically /man/2/popup +typically /man/2/prefab-compound +typically /man/2/registries +typically /man/2/sexprs +typically /man/2/srv +typically /man/2/styx +typically /man/2/styxservers +typically /man/2/sys-fd2path +typically /man/2/sys-pctl +typically /man/2/sys-pipe +typically /man/2/sys-self +typically /man/2/tftp +typically /man/3/cons +typically /man/3/dbg +typically /man/3/dynld +typically /man/3/flash +typically /man/3/fs +typically /man/3/ftl +typically /man/3/i2c +typically /man/3/kprof +typically /man/3/pipe +typically /man/3/pnp +typically /man/3/prog +typically /man/3/root +typically /man/3/sd +typically /man/3/srv9 +typically /man/4/archfs +typically /man/4/factotum +typically /man/4/keysrv +typically /man/4/kfs +typically /man/4/mntgen +typically /man/4/registry +typically /man/5/0intro +typically /man/6/attrdb +typically /man/6/audio +typically /man/6/keys +typically /man/6/namespace +typically /man/6/ubfa +typically /man/8/applylog +typically /man/8/bootpd +typically /man/8/create +typically /man/8/createsignerkey +typically /man/8/logind +typically /man/8/plumber +typically /man/8/prep +typically /man/8/rip +typically /man/8/signer +typically /man/8/srv +typically /man/8/styxchat +typically /man/9/0intro +typically /man/9/button +typically /man/9/canvas +typically /man/9/checkbutton +typically /man/9/choicebutton +typically /man/9/entry +typically /man/9/menu +typically /man/9/menubutton +typically /man/9/options +typically /man/9/radiobutton +typically /man/9/scrollbar +typically /man/9/text +typing /man/1/acme +typing /man/1/brutus +typing /man/1/charon +typing /man/1/mash-tk +typing /man/1/miniterm +typing /man/1/session +typing /man/1/wm-sh +typing /man/2/security-0intro +typing /man/3/cons +typing /man/6/keyboard +typing /man/8/prep +tzoff /man/2/daytime +u.h /man/10/0intro +u.s /man/9/1copyright +u32int /man/10/styx +u32int /man/5/attach +uart /man/10/plan9.ini +uart0 /man/10/intrenable +uarts /man/10/plan9.ini +ubf /man/2/ubfa +ubf /man/6/ubfa +ubfa /man/2/ubfa +ubfa /man/6/ubfa +ubfa.b /man/2/ubfa +ubfa.m /man/2/ubfa +ubiquitous /man/1/wm-misc +uboot /man/10/5cv +uc /man/3/fs +ucase /man/1/dd +uchar /man/10/a.out +uchar /man/10/allocb +uchar /man/10/dev +uchar /man/10/devattach +uchar /man/10/dynld +uchar /man/10/styx +uchar /man/6/colour +ucr /man/3/sd +ud /man/1/uniq +udp /man/1/netstat +udp /man/2/dhcpclient +udp /man/2/srv +udp /man/2/sys-dial +udp /man/2/virgil +udp /man/3/ip +udp /man/6/ndb +udp /man/8/bootpd +udp /man/8/sntp +udp /man/8/srv +udp /man/8/virgild +udpmsg /man/3/ip +uexp /man/1/yacc +ugo /man/1/chmod +uhci /man/10/plan9.ini +uid /man/10/ar +uid /man/10/devattach +uid /man/10/iar +uid /man/10/styxserver +uid /man/2/styxservers +uid /man/2/sys-0intro +uid /man/2/sys-stat +uid /man/3/fs +uid /man/3/logfs +uid /man/5/stat +uid /man/6/proto +uid /man/8/applylog +uid /man/8/create +uid /man/8/styxchat +uids /man/2/palmfile +uids /man/3/logfs +uidseed /man/2/palmfile +uint /man/10/devattach +uint /man/10/styx +uint /man/10/styxserver +ulaw /man/3/audio +ulaw /man/6/audio +ulong /man/10/allocb +ulong /man/10/atoi +ulong /man/10/dev +ulong /man/10/devattach +ulong /man/10/dynld +ulong /man/10/inb +ulong /man/10/malloc +ulong /man/10/newchan +ulong /man/10/qio +ulong /man/10/readnum +ulong /man/10/seconds +ulong /man/10/styx +ulong /man/10/styxserver +ulong /man/10/xalloc +ultimately /man/2/asn1 +ultimately /man/2/draw-0intro +ultimately /man/2/styxservers-nametree +ultimately /man/3/ip +ultimately /man/6/sexprs +ultimately /man/8/logind +ultra /man/10/plan9.ini +um /man/1/alphabet-fs +um /man/1/fs +uments /man/1/alphabet-abc +uments /man/1/alphabet-grid +uments /man/1/alphabet-main +un /man/1/session +un /man/1/tiny +unabated /man/1/deb +unable /man/2/fsproto +unable /man/2/styxpersist +unable /man/4/spree +unacceptable /man/2/sys-open +unacknowledged /man/10/qio +unaffected /man/1/acme +unaffected /man/1/listen +unaffected /man/1/sh-alphabet +unaffected /man/2/sys-pctl +unaffected /man/5/walk +unaffected /man/9/canvas +unallocated /man/9/pack +unaltered /man/1/wm-sh +uname /man/1/listen +uname /man/10/styx +uname /man/10/styxserver +uname /man/2/styx +uname /man/2/styxservers +uname /man/3/logfs +uname /man/5/0intro +uname /man/5/attach +uname /man/8/styxchat +unames /man/3/logfs +unannounced /man/3/ip +unarchive /man/2/spree-allow +unarchive /man/2/spree-cardlib +unarchive /man/2/spree-objstore +unarchives /man/2/spree-cardlib +unarchiving /man/2/spree-cardlib +unary /man/1/fc +unary /man/1/mathcalc +unary /man/1/mc +unary /man/1/sh-expr +unary /man/10/acid +unary /man/2/w3c-xpointers +unary /man/3/dbg +unassigned /man/2/dis +unattractive /man/1/tiny +unauthenticated /man/1/alphabet-abc +unauthenticated /man/1/alphabet-grid +unauthenticated /man/4/cpu +unavailable /man/10/lock +unavailable /man/10/malloc +unavailable /man/10/qlock +unaware /man/2/sys-0intro +unbind /man/3/ip +unblanked /man/3/vga +unblind /man/8/register +unblinded /man/8/signer +unblock /man/1/dd +unblocked /man/3/prog +unbound /man/2/sys-bind +unbound /man/3/ip +unbound /man/9/bind +unbuffered /man/1/xd +unbuffered /man/3/flash +unbundle /man/1/alphabet-fs +unbundle /man/1/fs +unchanged /man/1/acme +unchanged /man/1/fmt +unchanged /man/1/sh-regex +unchanged /man/1/sh-string +unchanged /man/10/allocb +unchanged /man/10/kstrip +unchanged /man/10/malloc +unchanged /man/2/math-fp +unchanged /man/2/math-linalg +unchanged /man/2/names +unchanged /man/2/sys-byte2char +unchanged /man/2/sys-open +unchanged /man/3/dbg +unchanged /man/4/factotum +unchanged /man/8/changelogin +unchanged /man/9/0intro +unclassified /man/2/security-0intro +unclear /man/2/styxpersist +uncompressed /man/1/gzip +uncompressed /man/10/5cv +uncompressed /man/2/palmfile +uncompressed /man/3/boot +uncompressed /man/3/draw +uncompressed /man/6/image +uncompressed /man/8/collabsrv +uncompressing /man/2/palmfile +unconfig /man/3/logfs +unconstrained /man/9/canvas +unconsumed /man/10/allocb +uncorrupted /man/1/sh-file2chan +uncovered /man/3/draw +undeclare /man/1/sh-alphabet +undeclared /man/1/mc +undeclared /man/1/sh-alphabet +undef /man/10/2c +undefined /man/1/sh-string +undefined /man/10/2l +undefined /man/10/inm +undefined /man/10/print +undefined /man/2/draw-image +undefined /man/2/draw-rect +undefined /man/2/sets +undefined /man/2/sys-0intro +undefined /man/3/draw +undefined /man/9/bind +undefined /man/9/canvas +undelimited /man/2/keyring-getmsg +underflow /man/2/math-fp +underlies /man/2/styx +underline /man/9/button +underline /man/9/checkbutton +underline /man/9/label +underline /man/9/listbox +underline /man/9/menu +underline /man/9/menubutton +underline /man/9/options +underline /man/9/radiobutton +underline /man/9/text +underlined /man/9/button +underlined /man/9/checkbutton +underlined /man/9/label +underlined /man/9/menu +underlined /man/9/menubutton +underlined /man/9/radiobutton +underlines /man/9/text +underlying /man/1/0intro +underlying /man/1/chgrp +underlying /man/10/intrenable +underlying /man/2/asn1 +underlying /man/2/bufio +underlying /man/2/disks +underlying /man/2/draw-0intro +underlying /man/2/drawmux +underlying /man/2/security-auth +underlying /man/2/sys-0intro +underlying /man/2/sys-dup +underlying /man/2/sys-fd2path +underlying /man/2/sys-millisec +underlying /man/2/sys-open +underlying /man/2/xml +underlying /man/3/cmd +underlying /man/3/cons +underlying /man/3/flash +underlying /man/3/ftl +underlying /man/3/logfs +underlying /man/3/tls +underlying /man/4/acme +underlying /man/6/colour +undermine /man/2/security-0intro +underneath /man/1/alphabet-fs +underneath /man/1/fs +underneath /man/2/spree-cardlib +underneath /man/9/entry +underneath /man/9/grab +underneath /man/9/menu +underneath /man/9/menubutton +underneath /man/9/text +underscore /man/1/mash +underscore /man/1/sh +underscores /man/9/text +understand /man/1/env +understand /man/1/wm +understand /man/10/styxserver +understand /man/2/plumbmsg +understand /man/5/version +understanding /man/3/logfs +understands /man/1/miniterm +understands /man/1/tcs +understands /man/1/wm +understands /man/8/rip +understood /man/1/0intro +understood /man/1/fc +understood /man/1/filename +understood /man/1/fs +understood /man/10/atoi +understood /man/10/devattach +understood /man/2/sys-dup +understood /man/2/tkclient +understood /man/4/acme +understood /man/6/keyboard +understood /man/9/scrollbar +undesirable /man/1/listen +undesirable /man/2/sys-read +undirtied /man/1/acme +undo /man/1/acme +undo /man/1/bind +undo /man/4/acme +undo /man/6/namespace +undoes /man/1/acme +undoes /man/1/sh +undoes /man/2/bufio +undoing /man/1/acme +undone /man/1/bind +undone /man/2/sys-bind +undone /man/4/acme +unencoded /man/2/sexprs +unencrypted /man/10/plan9.ini +unencrypted /man/2/palmfile +unescaped /man/6/regexp +unexecuted /man/1/cprof +unexpectedly /man/1/acme +unexpectedly /man/2/draw-context +unexpired /man/2/keyset +unfilled /man/9/canvas +unfl /man/2/math-fp +unformatted /man/4/factotum +unfortunate /man/10/9load +unfortunately /man/1/charon +unfortunately /man/1/sh-alphabet +unfortunately /man/3/cmd +unfreeze /man/3/tv +ungetb /man/2/bufio +ungetc /man/2/bufio +unhandled /man/2/0intro +unibrowse /man/1/wm-misc +unibrowse.b /man/1/wm-misc +unicast /man/3/ip +unicode /man/1/charon +unicode /man/1/fc +unicode /man/1/freq +unicode /man/1/sort +unicode /man/1/tcs +unicode /man/1/unicode +unicode /man/1/wm-misc +unicode /man/10/dev +unicode /man/10/devattach +unicode /man/10/kbdputc +unicode /man/2/asn1 +unicode /man/2/bufio +unicode /man/2/convcs +unicode /man/2/draw-0intro +unicode /man/2/draw-font +unicode /man/2/keyring-certtostr +unicode /man/2/stringinttab +unicode /man/2/sys-byte2char +unicode /man/2/sys-print +unicode /man/2/sys-utfbytes +unicode /man/5/0intro +unicode /man/6/font +unicode /man/6/keyboard +unicode /man/6/sbl +unicode /man/6/translate +unicode /man/6/utf +unicode /man/8/styxmon +unicode.9.font /man/1/acme +unicode.9.font /man/1/emu +unicode.9.font /man/9/types +unicode.b /man/1/unicode +unicoderange /man/2/w3c-css +unidata /man/1/wm-misc +uniformly /man/1/acme +uniformly /man/6/colour +uniformly /man/9/pack +unimplemented /man/1/mdb +unimplemented /man/2/imagefile +unimplemented /man/3/dbg +unimplemented /man/3/ip +unimplemented /man/3/prog +uninitialised /man/2/0intro +uninitialised /man/2/draw-display +uninitialized /man/10/a.out +uninitialized /man/5/attach +uninitialized /man/5/version +unintercepted /man/2/security-0intro +uninterpreted /man/1/sh-alphabet +uninterpreted /man/2/w3c-css +uninterpreted /man/6/utf +uninterrupted /man/2/spree +unintuitive /man/6/colour +union /man/1/alphabet-fs +union /man/1/bind +union /man/1/fs +union /man/1/ls +union /man/1/tiny +union /man/1/yacc +union /man/10/2c +union /man/10/c2l +union /man/10/styx +union /man/2/alphabet-intro +union /man/2/bloomfilter +union /man/2/readdir +union /man/2/sets +union /man/2/sys-0intro +union /man/2/sys-bind +union /man/2/sys-open +union /man/4/archfs +union /man/4/dossrv +union /man/4/import +union /man/4/memfs +union /man/4/ramfile +union /man/5/open +unions /man/10/c2l +uniprocessor /man/10/lock +uniq /man/1/comm +uniq /man/1/uniq +uniq /man/2/ubfa +uniq.b /man/1/uniq +unique /man/1/acme +unique /man/1/deb +unique /man/1/disdep +unique /man/1/sh-file2chan +unique /man/1/sh-tk +unique /man/1/uniq +unique /man/10/a.out +unique /man/10/c2l +unique /man/10/dev +unique /man/10/devattach +unique /man/10/newchan +unique /man/10/plan9.ini +unique /man/10/styxserver +unique /man/2/dict +unique /man/2/draw-screen +unique /man/2/palmfile +unique /man/2/prefab-0intro +unique /man/2/spree +unique /man/2/spree-cardlib +unique /man/2/styxservers +unique /man/2/sys-bind +unique /man/2/sys-stat +unique /man/2/wmsrv +unique /man/3/pnp +unique /man/4/acme +unique /man/5/0intro +unique /man/5/stat +unique /man/6/sbl +unique /man/8/collabsrv +unique /man/8/mangaload +unique /man/8/prep +unique /man/9/canvas +uniquely /man/10/intrenable +uniquely /man/2/registries +uniquely /man/2/security-0intro +uniquely /man/2/styxservers +uniquely /man/4/factotum +uniquely /man/6/sexprs +unit /man/1/du +unit /man/1/units +unit /man/10/ar +unit /man/10/plan9.ini +unit /man/2/math-linalg +unit /man/2/scsiio +unit /man/2/spree +unit /man/2/sys-0intro +unit /man/2/sys-iounit +unit /man/2/w3c-css +unit /man/3/flash +unit /man/3/ftl +unit /man/3/ip +unit /man/3/prog +unit /man/3/sd +unit /man/6/sbl +unit /man/8/ftl +unit /man/9/scrollbar +unit /man/9/types +unites /man/1/bind +units /man/1/du +units /man/1/units +units /man/1/xd +units /man/10/9load +units /man/10/seconds +units /man/2/prefab-0intro +units /man/2/styxservers +units /man/2/w3c-css +units /man/3/cons +units /man/3/flash +units /man/3/ftl +units /man/3/prog +units /man/3/sd +units /man/6/man +units /man/8/prep +units /man/9/canvas +units /man/9/entry +units /man/9/grid +units /man/9/listbox +units /man/9/scrollbar +units /man/9/text +units /man/9/types +units.b /man/1/units +units.y /man/1/units +universal /man/2/asn1 +universal /man/2/geodesy +universal /man/6/ubfa +universal /man/6/utf +universalstring /man/2/asn1 +university /man/9/0intro +university /man/9/1copyright +unix /man/1/0intro +unix /man/1/diff +unix /man/1/gzip +unix /man/1/mash +unix /man/1/yacc +unix /man/10/2l +unix /man/10/ar +unix /man/10/conf +unix /man/10/iar +unix /man/2/dbm +unix /man/2/srv +unix /man/2/sys-0intro +unix /man/3/cmd +unix /man/3/fs +unix /man/3/ip +unix /man/4/tarfs +unix /man/6/man +unix /man/6/scancode +unix /man/9/text +unix's /man/3/fs +unixware /man/4/namespace +unk /man/3/dbg +unknown /man/1/sh-arg +unknown /man/1/sh-tk +unknown /man/1/stack +unknown /man/2/arg +unknown /man/2/asn1 +unknown /man/2/ir +unknown /man/2/keyring-gensk +unknown /man/2/plumbmsg +unknown /man/2/styx +unknown /man/2/sys-iounit +unknown /man/3/cmd +unknown /man/3/dbg +unknown /man/3/ip +unknown /man/5/version +unless /man/1/0intro +unless /man/1/9win +unless /man/1/acme +unless /man/1/alphabet-fs +unless /man/1/emu +unless /man/1/fs +unless /man/1/grid-ns +unless /man/1/limbo +unless /man/1/listen +unless /man/1/mash-tk +unless /man/1/mc +unless /man/1/mk +unless /man/1/mprof +unless /man/1/prof +unless /man/1/session +unless /man/1/sh +unless /man/1/sh-std +unless /man/1/sh-tk +unless /man/1/stream +unless /man/1/touch +unless /man/1/wish +unless /man/1/yacc +unless /man/10/9load +unless /man/10/kproc +unless /man/10/lock +unless /man/10/mk +unless /man/10/plan9.ini +unless /man/10ti925/tihost +unless /man/2/debug +unless /man/2/registries +unless /man/2/sys-print +unless /man/2/tkclient +unless /man/2/wmclient +unless /man/3/cmd +unless /man/3/ip +unless /man/3/srv +unless /man/3/tls +unless /man/4/cpu +unless /man/4/export +unless /man/4/kfs +unless /man/5/0intro +unless /man/5/clunk +unless /man/5/walk +unless /man/8/changelogin +unless /man/8/dhcp +unless /man/8/init +unless /man/8/prep +unless /man/8/virgild +unless /man/9/1copyright +unless /man/9/bind +unless /man/9/canvas +unless /man/9/checkbutton +unless /man/9/grid +unless /man/9/menu +unless /man/9/pack +unless /man/9/radiobutton +unless /man/9/text +unlike /man/1/sh-std +unlike /man/1/sh-string +unlike /man/10/plan9.ini +unlike /man/2/sexprs +unlike /man/3/ip +unlike /man/6/sexprs +unlikely /man/2/keyring-crypt +unlikely /man/5/0intro +unlimited /man/1/grid-monitor +unlimited /man/2/alphabet-intro +unload /man/1/sh +unload /man/3/dynld +unloaded /man/1/sh +unloading /man/3/dynld +unlock /man/10/lock +unlock /man/10/qlock +unlock /man/3/pnp +unlocked /man/10/lock +unlocking /man/10/error +unlocking /man/10/lock +unlocks /man/10/qlock +unlocks /man/2/security-0intro +unmap /man/9/bind +unmap /man/9/menu +unmapped /man/2/tk +unmapped /man/9/bind +unmapped /man/9/destroy +unmapped /man/9/pack +unmaps /man/9/grid +unmaps /man/9/pack +unmarshal /man/2/format +unmasks /man/10/intrenable +unmatched /man/1/tiny +unmatched /man/2/attrdb +unmodified /man/3/cmd +unmount /man/1/bind +unmount /man/2/sys-bind +unmount /man/3/logfs +unmount /man/4/ftpfs +unmount /man/5/walk +unmount /man/6/namespace +unmount.b /man/1/bind +unmounted /man/1/bind +unmounted /man/2/sys-bind +unmounted /man/3/logfs +unmounted /man/3/pipe +unmounted /man/4/logfile +unmounted /man/4/ramfile +unmounted /man/6/namespace +unmounted /man/8/cs +unmounted /man/8/getauthinfo +unmounting /man/4/ftpfs +unmounts /man/4/cpu +unnamed /man/10/2c +unnamed /man/8/prep +unnecessarily /man/1/acme +unneeded /man/10/allocb +unoccupied /man/9/grid +unopened /man/2/styxservers +unordered /man/2/asn1 +unpack /man/2/dis +unpack /man/2/ida +unpack /man/2/palmfile +unpack /man/2/plumbmsg +unpack /man/2/sexprs +unpack /man/2/styx +unpack /man/8/mkfs +unpackdir /man/2/styx +unpackdir /man/5/stat +unpacked /man/2/styx +unpacked /man/8/mkfs +unpackentry /man/2/venti +unpacking /man/2/palmfile +unpacking /man/2/venti +unpacking /man/8/mkfs +unpackroot /man/2/venti +unpacks /man/1/gettar +unpacks /man/2/plumbmsg +unpacks /man/8/mkfs +unpacktext /man/2/palmfile +unpaddable /man/2/palmfile +unparse /man/1/alphabet-main +unparsed /man/2/sexprs +unpartitioned /man/8/prep +unpleasant /man/10/error +unpost /man/9/menu +unposted /man/9/menu +unposted /man/9/menubutton +unposts /man/9/menu +unposts /man/9/menubutton +unpredictable /man/10/error +unpredictable /man/2/keyring-crypt +unpredictable /man/2/prefab-style +unpredictable /man/9/pack +unprotected /man/6/login +unqualified /man/1/sendmail +unqualified /man/1/sh-alphabet +unqualified /man/2/0intro +unqualified /man/6/ndb +unqualified /man/6/sbl +unquote /man/1/sh +unquote /man/1/sh-file2chan +unquote /man/3/cmd +unquoted /man/1/mash +unquoted /man/1/mk +unquoted /man/1/sh +unquoted /man/1/wm-sh +unquoted /man/10/mk +unquoted /man/2/sexprs +unquoted /man/2/string +unquoted /man/6/sexprs +unreachable /man/3/ip +unread /man/1/wm-sh +unread /man/10/allocb +unread /man/10/qio +unread /man/8/collabsrv +unreadable /man/2/security-0intro +unrecognised /man/2/w3c-css +unrecognized /man/10/atoi +unrecoverable /man/2/xml +unrecoverable /man/3/ip +unregister /man/2/registries +unrelated /man/2/draw-display +unrelated /man/3/dbg +unreliable /man/3/ip +unresponsive /man/10/sleep +unrestricted /man/3/prog +unsafe /man/4/export +unscrambled /man/2/security-0intro +unset /man/2/env +unset /man/3/env +unset /man/9/text +unsigned /man/1/auplay +unsigned /man/1/mdb +unsigned /man/1/tail +unsigned /man/10/c2l +unsigned /man/10/memory +unsigned /man/10/print +unsigned /man/10/readnum +unsigned /man/10/strcat +unsigned /man/2/dis +unsigned /man/2/styx +unsigned /man/2/sys-print +unsigned /man/2/sys-stat +unsigned /man/3/prog +unsigned /man/3/sign +unsigned /man/5/0intro +unsigned /man/5/stat +unsigned /man/6/audio +unsigned /man/6/dis +unsigned /man/6/keytext +unsorted /man/2/readdir +unspecified /man/1/dd +unspecified /man/1/emu +unspecified /man/1/plumb +unspecified /man/10/2c +unspecified /man/10/plan9.ini +unspecified /man/2/sys-iounit +unspecified /man/3/ip +unspecified /man/6/dis +unspecified /man/9/grid +unspecified /man/9/pack +unspecified /man/9/text +unstall /man/3/usb +unstop /man/2/debug +unstop /man/3/prog +unsuccessful /man/10/devattach +unsuccessful /man/2/styxpersist +unsuitable /man/10/allocb +unsuitable /man/3/ftl +unsup /man/3/dbg +unsupported /man/3/dbg +untapped /man/2/security-0intro +untapped /man/8/register +untask /man/1/wm +untouched /man/2/styxservers +untouched /man/2/sys-read +untoward /man/1/sh-string +untoward /man/2/command +untransmitted /man/3/ip +unused /man/1/limbo +unused /man/10/2c +unused /man/10/ar +unused /man/2/asn1 +unused /man/2/palmfile +unused /man/2/spree-cardlib +unused /man/2/styx +unused /man/2/styxservers +unused /man/2/sys-0intro +unused /man/3/cmd +unused /man/3/dbg +unused /man/3/ether +unused /man/3/fpga +unused /man/3/plap +unused /man/3/tinyfs +unused /man/3/usb +unused /man/5/stat +unused /man/6/image +unused /man/6/sbl +unused /man/6/sexprs +unused /man/8/prep +unused /man/8/virgild +unused /man/9/pack +unusedbits /man/2/asn1 +unusually /man/8/rstyxd +unwritable /man/4/acme +unwritable /man/4/namespace +uo /man/1/chgrp +update /man/1/cpu +update /man/1/mash +update /man/1/mash-make +update /man/1/mk +update /man/1/sh-tk +update /man/1/tkcmd +update /man/1/touch +update /man/1/wm-sh +update /man/10/iar +update /man/10/lock +update /man/10/mk +update /man/10/odbc +update /man/10/styxserver +update /man/2/registries +update /man/2/sys-fd2path +update /man/3/prog +update /man/4/kfs +update /man/4/ramfile +update /man/4/spree +update /man/7/db +update /man/8/applylog +update /man/8/changelogin +update /man/8/create +update /man/8/mkfs +update /man/9/0intro +update /man/9/text +update /man/9/update +updated /man/1/collab +updated /man/1/cpu +updated /man/1/deb +updated /man/1/mash +updated /man/1/mash-make +updated /man/1/mk +updated /man/1/units +updated /man/10/atoi +updated /man/10/mk +updated /man/2/keyring-crypt +updated /man/2/prefab-compound +updated /man/2/sys-pipe +updated /man/3/ftl +updated /man/3/logfs +updated /man/6/keys +updated /man/8/create +updated /man/8/mkfs +updated /man/9/checkbutton +updated /man/9/choicebutton +updated /man/9/options +updated /man/9/radiobutton +updated /man/9/text +updatelog /man/8/applylog +updatelog.b /man/8/applylog +updates /man/1/grid-query +updates /man/1/mk +updates /man/1/session +updates /man/1/wm-misc +updates /man/10/mk +updates /man/10/ref +updates /man/2/keyring-sha1 +updates /man/2/math-linalg +updates /man/2/spree +updates /man/3/logfs +updates /man/3/prog +updates /man/3/tinyfs +updates /man/4/spree +updates /man/8/applylog +updates /man/8/create +updates /man/8/mangaload +updates /man/8/rip +updates /man/9/1copyright +updates /man/9/options +updates /man/9/update +updating /man/1/mk +updating /man/10/mk +updating /man/2/keyring-rc4 +updating /man/4/ramfile +updating /man/8/sntp +updwards /man/2/spree-cardlib +upper /man/1/acme +upper /man/1/dd +upper /man/1/look +upper /man/1/mash-tk +upper /man/1/tr +upper /man/10/print +upper /man/2/asn1 +upper /man/2/convcs +upper /man/2/dis +upper /man/2/draw-0intro +upper /man/2/draw-image +upper /man/2/draw-rect +upper /man/2/encoding +upper /man/2/geodesy +upper /man/2/math-linalg +upper /man/2/prefab-compound +upper /man/2/sexprs +upper /man/2/string +upper /man/2/sys-0intro +upper /man/2/sys-print +upper /man/2/w3c-css +upper /man/3/cons +upper /man/3/draw +upper /man/3/pnp +upper /man/6/sexprs +upper /man/9/canvas +upper /man/9/entry +upper /man/9/menu +upper /man/9/text +upwards /man/10/9load +upwards /man/2/spree-cardlib +ureg /man/10/intrenable +ureg /man/3/dbg +ureg.h /man/10/0intro +ureg.h /man/10/intrenable +uri /man/2/w3c-css +uri /man/2/w3c-xpointers +uri /man/8/httpd +url /man/1/charon +url /man/1/webgrab +url /man/2/w3c-css +urls /man/1/charon +us005214703 /man/2/keyring-crypt +usa /man/1/miniterm +usa /man/2/ubfa +usa /man/6/ubfa +usable /man/1/collab-clients +usable /man/10/allocb +usable /man/2/imagefile +usable /man/2/ip +usable /man/2/wmclient +usable /man/4/9srvfs +usable /man/4/ramfile +usable /man/6/colour +usable /man/9/text +usage /man/1/alphabet-abc +usage /man/1/alphabet-grid +usage /man/1/du +usage /man/1/ebook +usage /man/1/fc +usage /man/1/sh +usage /man/1/sh-alphabet +usage /man/1/sh-arg +usage /man/1/sh-std +usage /man/1/sh-string +usage /man/1/wm-misc +usage /man/10/print +usage /man/2/arg +usage /man/2/sh +usage /man/9/menubutton +usb /man/10/plan9.ini +usb /man/3/usb +usb /man/4/palmsrv +usbaddr /man/3/usb +usbctl /man/3/usb +usbdata /man/3/usb +usbframe /man/3/usb +usbsetup /man/3/usb +usbstat /man/3/usb +usbx /man/10/plan9.ini +usefac /man/2/styxpersist +usefully /man/1/acme +usefully /man/2/draw-0intro +usefully /man/2/prefab-compound +user /man/1/0intro +user /man/1/acme +user /man/1/alphabet-fs +user /man/1/alphabet-main +user /man/1/bind +user /man/1/cd +user /man/1/charon +user /man/1/collab +user /man/1/collab-clients +user /man/1/cp +user /man/1/deb +user /man/1/dmview +user /man/1/ebook +user /man/1/filename +user /man/1/fs +user /man/1/ftree +user /man/1/grid-monitor +user /man/1/grid-ns +user /man/1/grid-query +user /man/1/grid-register +user /man/1/kill +user /man/1/listen +user /man/1/logon +user /man/1/ls +user /man/1/mash-tk +user /man/1/math-misc +user /man/1/mathcalc +user /man/1/miniterm +user /man/1/netkey +user /man/1/netstat +user /man/1/p +user /man/1/passwd +user /man/1/runas +user /man/1/secstore +user /man/1/sendmail +user /man/1/session +user /man/1/sh +user /man/1/sh-std +user /man/1/tiny +user /man/1/tktester +user /man/1/toolbar +user /man/1/wm +user /man/1/wm-misc +user /man/1/wm-sh +user /man/1/yacc +user /man/10/9load +user /man/10/acid +user /man/10/devattach +user /man/10/eve +user /man/10/iar +user /man/10/inm +user /man/10/kproc +user /man/10/odbc +user /man/10/plan9.ini +user /man/10/styxserver +user /man/2/debug +user /man/2/dialog +user /man/2/dividers +user /man/2/factotum +user /man/2/ida +user /man/2/keyring-0intro +user /man/2/keyring-auth +user /man/2/keyring-certtostr +user /man/2/keyring-gensk +user /man/2/keyset +user /man/2/newns +user /man/2/palmfile +user /man/2/plumbmsg +user /man/2/pop3 +user /man/2/prefab-0intro +user /man/2/registries +user /man/2/secstore +user /man/2/security-0intro +user /man/2/security-auth +user /man/2/security-login +user /man/2/selectfile +user /man/2/spree +user /man/2/styxservers +user /man/2/sys-0intro +user /man/2/sys-fauth +user /man/2/sys-open +user /man/2/sys-remove +user /man/2/sys-stat +user /man/2/tabs +user /man/2/tk +user /man/2/tkclient +user /man/2/wmclient +user /man/3/arch +user /man/3/cap +user /man/3/cmd +user /man/3/cons +user /man/3/fs +user /man/3/ip +user /man/3/logfs +user /man/3/mnt +user /man/3/pnp +user /man/3/prog +user /man/3/srv +user /man/3/tls +user /man/3/vga +user /man/4/acme +user /man/4/cpu +user /man/4/factotum +user /man/4/ftpfs +user /man/4/import +user /man/4/iostats +user /man/4/keyfs +user /man/4/keysrv +user /man/4/kfs +user /man/4/memfs +user /man/4/namespace +user /man/4/spree +user /man/4/tarfs +user /man/5/0intro +user /man/5/attach +user /man/5/flush +user /man/5/open +user /man/5/stat +user /man/5/walk +user /man/6/auth +user /man/6/keyboard +user /man/6/keys +user /man/6/login +user /man/6/plumbing +user /man/6/proto +user /man/6/sexprs +user /man/6/users +user /man/7/db +user /man/7/dbsrv +user /man/8/bootpd +user /man/8/changelogin +user /man/8/collabsrv +user /man/8/create +user /man/8/createsignerkey +user /man/8/getauthinfo +user /man/8/httpd +user /man/8/kfscmd +user /man/8/plumber +user /man/8/register +user /man/8/rstyxd +user /man/8/signer +user /man/8/svc +user /man/8/touchcal +user /man/9/button +user /man/9/checkbutton +user /man/9/choicebutton +user /man/9/radiobutton +user /man/9/scrollbar +user's /man/1/acme +user's /man/1/chmod +user's /man/1/collab-clients +user's /man/1/deb +user's /man/1/ftree +user's /man/1/passwd +user's /man/10/print +user's /man/10/readnum +user's /man/2/keyring-0intro +user's /man/2/keyset +user's /man/2/pop3 +user's /man/2/secstore +user's /man/2/security-0intro +user's /man/3/cmd +user's /man/3/fs +user's /man/4/acme +user's /man/4/factotum +user's /man/4/ftpfs +user's /man/4/import +user's /man/4/keyfs +user's /man/4/keysrv +user's /man/6/keys +user's /man/6/login +user's /man/6/proto +user's /man/8/getauthinfo +userdir /man/1/charon +userid /man/8/virgild +username /man/1/deb +username /man/1/rcmd +username /man/1/toolbar +username /man/10/odbc +username /man/3/ip +username /man/7/db +username /man/8/getauthinfo +usernames /man/10/eve +users /man/1/0intro +users /man/1/collab-clients +users /man/1/emu +users /man/1/secstore +users /man/1/tktester +users /man/2/secstore +users /man/2/security-0intro +users /man/2/sys-stat +users /man/3/cap +users /man/3/logfs +users /man/3/mnt +users /man/4/factotum +users /man/4/kfs +users /man/4/registry +users /man/5/0intro +users /man/5/stat +users /man/6/users +users /man/8/collabsrv +users /man/8/createsignerkey +users /man/8/kfscmd +users /man/8/mkfs +users /man/8/svc +users's /man/8/collabsrv +userxx /man/1/logon +user→ca /man/6/login +usessl /man/1/charon +useversion /man/2/sys-fversion +ushort /man/10/devattach +ushort /man/10/inb +ushort /man/10/newchan +ushort /man/10/styx +ushort /man/5/version +using /man/1/acme +using /man/1/auplay +using /man/1/bind +using /man/1/calendar +using /man/1/charon +using /man/1/collab-clients +using /man/1/cprof +using /man/1/cpu +using /man/1/crypt +using /man/1/deb +using /man/1/grid-ns +using /man/1/idea +using /man/1/keyboard +using /man/1/listen +using /man/1/logon +using /man/1/man +using /man/1/mash +using /man/1/mash-tk +using /man/1/math-misc +using /man/1/mathcalc +using /man/1/mc +using /man/1/miniterm +using /man/1/mk +using /man/1/mux +using /man/1/netkey +using /man/1/passwd +using /man/1/sendmail +using /man/1/session +using /man/1/sh +using /man/1/sh-tk +using /man/1/sort +using /man/1/telnet +using /man/1/tktester +using /man/1/wm-misc +using /man/1/wm-sh +using /man/10/2c +using /man/10/5cv +using /man/10/9load +using /man/10/a.out +using /man/10/acid +using /man/10/conf +using /man/10/dev +using /man/10/devattach +using /man/10/dmainit +using /man/10/dynld +using /man/10/error +using /man/10/getfields +using /man/10/inb +using /man/10/kproc +using /man/10/lock +using /man/10/mk +using /man/10/newchan +using /man/10/ntsrv +using /man/10/odbc +using /man/10/parsecmd +using /man/10/plan9.ini +using /man/10/print +using /man/10/qio +using /man/10/sleep +using /man/10/styxserver +using /man/10ti925/tihost +using /man/2/0intro +using /man/2/alphabet-intro +using /man/2/asn1 +using /man/2/bufio +using /man/2/cfg +using /man/2/command +using /man/2/convcs +using /man/2/dbm +using /man/2/debug +using /man/2/dhcpclient +using /man/2/disks +using /man/2/draw-example +using /man/2/draw-image +using /man/2/draw-screen +using /man/2/encoding +using /man/2/ether +using /man/2/filepat +using /man/2/geodesy +using /man/2/ida +using /man/2/imagefile +using /man/2/ip +using /man/2/keyring-0intro +using /man/2/keyring-certtostr +using /man/2/keyring-crypt +using /man/2/keyring-getmsg +using /man/2/keyring-sha1 +using /man/2/keyset +using /man/2/math-0intro +using /man/2/math-fp +using /man/2/plumbmsg +using /man/2/popup +using /man/2/prefab-0intro +using /man/2/prefab-compound +using /man/2/prefab-element +using /man/2/prefab-style +using /man/2/registries +using /man/2/scsiio +using /man/2/secstore +using /man/2/security-0intro +using /man/2/security-auth +using /man/2/security-login +using /man/2/security-ssl +using /man/2/sexprs +using /man/2/spki +using /man/2/spree +using /man/2/spree-allow +using /man/2/spree-cardlib +using /man/2/spree-objstore +using /man/2/srv +using /man/2/styx +using /man/2/styxservers +using /man/2/sys-0intro +using /man/2/sys-dial +using /man/2/sys-export +using /man/2/sys-iounit +using /man/2/sys-pctl +using /man/2/sys-read +using /man/2/sys-self +using /man/2/sys-stat +using /man/2/tftp +using /man/2/timers +using /man/2/tk +using /man/2/translate +using /man/2/ubfa +using /man/2/w3c-xpointers +using /man/2/wmsrv +using /man/3/arch +using /man/3/audio +using /man/3/cap +using /man/3/cmd +using /man/3/cons +using /man/3/draw +using /man/3/env +using /man/3/flash +using /man/3/fs +using /man/3/indir +using /man/3/ip +using /man/3/mpeg +using /man/3/plap +using /man/3/pnp +using /man/3/sd +using /man/3/sign +using /man/3/srv +using /man/3/srv9 +using /man/3/ssl +using /man/3/tls +using /man/4/cpu +using /man/4/dbfs +using /man/4/factotum +using /man/4/ftpfs +using /man/4/keyfs +using /man/4/keysrv +using /man/4/kfs +using /man/4/mntgen +using /man/4/registry +using /man/5/0intro +using /man/5/attach +using /man/5/walk +using /man/6/attrdb +using /man/6/audio +using /man/6/auth +using /man/6/colour +using /man/6/dis +using /man/6/font +using /man/6/image +using /man/6/keyboard +using /man/6/keys +using /man/6/keytext +using /man/6/login +using /man/6/ndb +using /man/6/plumbing +using /man/6/sbl +using /man/6/sexprs +using /man/6/translate +using /man/6/ubfa +using /man/7/dbsrv +using /man/8/collabsrv +using /man/8/cs +using /man/8/dhcp +using /man/8/dns +using /man/8/getauthinfo +using /man/8/httpd +using /man/8/init +using /man/8/prep +using /man/8/rip +using /man/8/rstyxd +using /man/8/signer +using /man/8/srv +using /man/8/styxchat +using /man/8/virgild +using /man/9/0intro +using /man/9/button +using /man/9/canvas +using /man/9/checkbutton +using /man/9/cursor +using /man/9/entry +using /man/9/label +using /man/9/listbox +using /man/9/menu +using /man/9/menubutton +using /man/9/options +using /man/9/panel +using /man/9/radiobutton +using /man/9/scale +using /man/9/text +using /man/9/types +usr /man/1/alphabet-main +usr /man/1/bind +usr /man/1/cd +usr /man/1/charon +usr /man/1/collab +usr /man/1/deb +usr /man/1/emu +usr /man/1/filename +usr /man/1/grid-ns +usr /man/1/listen +usr /man/1/logon +usr /man/1/passwd +usr /man/1/rcmd +usr /man/1/session +usr /man/1/toolbar +usr /man/2/keyring-auth +usr /man/2/keyset +usr /man/2/registries +usr /man/2/security-auth +usr /man/3/dup +usr /man/3/kprof +usr /man/3/pbus +usr /man/3/plap +usr /man/4/namespace +usr /man/6/plumbing +usr /man/6/proto +usr /man/7/db +usr /man/7/dbsrv +usr /man/8/getauthinfo +usr /man/8/plumber +usr /man/8/rstyxd +ustom /man/10/print +usual /man/1/acme +usual /man/1/dmview +usual /man/1/fs +usual /man/1/ftree +usual /man/1/listen +usual /man/1/mathcalc +usual /man/1/mc +usual /man/1/sh +usual /man/1/sh-alphabet +usual /man/1/sh-arg +usual /man/1/sh-csv +usual /man/1/sh-sexprs +usual /man/1/sh-std +usual /man/1/wm-misc +usual /man/2/secstore +usual /man/2/sh +usual /man/2/spree-cardlib +usual /man/3/ip +usual /man/4/acme +usual /man/5/attach +usual /man/6/image +usual /man/6/keyboard +usual /man/8/svc +usual /man/9/canvas +usual /man/9/send +usual /man/9/text +utctime /man/2/asn1 +utf /man/1/brutus +utf /man/1/charon +utf /man/1/freq +utf /man/1/mdb +utf /man/1/sh-file2chan +utf /man/1/sh-sexprs +utf /man/1/strings +utf /man/1/tcs +utf /man/1/unicode +utf /man/1/wc +utf /man/10/getfields +utf /man/10/kbdputc +utf /man/10/print +utf /man/10/rune +utf /man/10/strcat +utf /man/2/asn1 +utf /man/2/bufio +utf /man/2/convcs +utf /man/2/draw-0intro +utf /man/2/draw-image +utf /man/2/keyring-getmsg +utf /man/2/palmfile +utf /man/2/plumbmsg +utf /man/2/sexprs +utf /man/2/styxservers +utf /man/2/sys-byte2char +utf /man/2/sys-print +utf /man/2/sys-utfbytes +utf /man/3/cons +utf /man/3/prog +utf /man/4/keysrv +utf /man/5/0intro +utf /man/6/dis +utf /man/6/keyboard +utf /man/6/keytext +utf /man/6/sexprs +utf /man/6/utf +utf /man/8/rstyxd +utf /man/8/styxchat +utf8 /man/1/tcs +utf8 /man/2/wmsrv +utfbytes /man/2/sys-byte2char +utfbytes /man/2/sys-utfbytes +utferror /man/2/sys-byte2char +utflen /man/10/rune +utflen.c /man/10/rune +utfmax /man/10/rune +utfmax /man/2/sys-byte2char +utfrrune /man/10/rune +utfrrune.c /man/10/rune +utfrune /man/10/rune +utfrune.c /man/10/rune +utfutf /man/10/rune +utilise /man/1/0intro +utilities /man/1/gettar +utilities /man/1/gzip +utilities /man/1/math-misc +utilities /man/1/wm-misc +utilities /man/4/namespace +utilities /man/8/0intro +utility /man/1/wm-misc +utility /man/10/0intro +utility /man/10/styxserver +utility /man/2/exception +utility /man/2/keyring-ipint +utility /man/2/sh +utility /man/2/styxservers +utils /man/1/idea +utils /man/10/2a +utils /man/10/2c +utils /man/10/2l +utils /man/10/5coff +utils /man/10/5cv +utils /man/10/acid +utils /man/10/c2l +utils /man/10/iar +utils /man/10/inm +utils /man/10/kprof +utils /man/10/ksize +utils /man/10/kstrip +utils /man/10/mk +utils /man/10/ntsrv +utils /man/10/srclist +utils /man/10ti925/epocimg +utils /man/10ti925/tihost +utils /man/4/namespace +utils.c /man/10/atoi +utm /man/2/geodesy +utmeur /man/2/geodesy +uudecode /man/1/uuencode +uudecode.b /man/1/uuencode +uuencode /man/1/uuencode +uuencode.b /man/1/uuencode +uvalue /man/2/ubfa +uvalue.atom /man/2/ubfa +uvalue.atom.s /man/2/ubfa +uvalue.binary /man/2/ubfa +uvalue.int /man/2/ubfa +uvalue.list /man/2/ubfa +uvalue.string /man/2/ubfa +uvalue.tag /man/2/ubfa +uvalue.tuple /man/2/ubfa +uvatom /man/2/ubfa +uvbinary /man/2/ubfa +uvint /man/2/ubfa +uvlist /man/2/ubfa +uvlong /man/10/styxserver +uvstring /man/2/ubfa +uvtag /man/2/ubfa +uvtuple /man/2/ubfa +ux /man/10/print +uy0 /man/3/tv +v.bytes /man/2/asn1 +v.out /man/10/acid +v4allrouter /man/2/ip +v4allsys /man/2/ip +v4bcast /man/2/ip +v4noaddr /man/2/ip +v4prefix /man/2/ip +va /man/10/2a +va /man/10/dmainit +va /man/10/print +vain /man/3/cmd +val /man/1/sh-sexprs +val /man/10/acid +val /man/10/readnum +val /man/2/asn1 +val /man/2/attrdb +val /man/2/debug +val /man/2/env +val /man/2/format +val /man/2/hash +val /man/2/plumbmsg +val /man/2/registries +val /man/2/spree +val /man/2/stringinttab +val /man/2/ubfa +val /man/2/w3c-xpointers +val /man/3/dbg +val /man/3/gpio +val /man/4/factotum +val /man/4/spree +val /man/6/keytext +val /man/9/listbox +val /man/9/options +val /man/9/text +val.tostring /man/2/asn1 +val1 /man/2/asn1 +val1 /man/8/cs +val2 /man/2/asn1 +val2 /man/8/cs +val:hashval /man/2/hash +valid /man/1/acme +valid /man/1/alphabet-fs +valid /man/1/charon +valid /man/1/fc +valid /man/1/fs +valid /man/1/pwd +valid /man/1/sh-file2chan +valid /man/1/sh-sexprs +valid /man/1/tktester +valid /man/1/wm-sh +valid /man/10/devattach +valid /man/10/error +valid /man/10/iar +valid /man/10/newchan +valid /man/10/styx +valid /man/10/styxserver +valid /man/2/convcs +valid /man/2/dhcpclient +valid /man/2/dis +valid /man/2/factotum +valid /man/2/ip +valid /man/2/keyring-sha1 +valid /man/2/palmfile +valid /man/2/regex +valid /man/2/security-0intro +valid /man/2/spki +valid /man/2/spki-verifier +valid /man/2/spree-allow +valid /man/2/styx +valid /man/2/styxservers +valid /man/2/sys-byte2char +valid /man/2/sys-dup +valid /man/2/xml +valid /man/3/0intro +valid /man/3/gpio +valid /man/3/i2c +valid /man/3/ip +valid /man/3/mpeg +valid /man/3/pnp +valid /man/3/sign +valid /man/3/tls +valid /man/3/touch +valid /man/3/tv +valid /man/3/vga +valid /man/4/factotum +valid /man/4/keysrv +valid /man/5/0intro +valid /man/5/clunk +valid /man/5/walk +valid /man/6/sbl +valid /man/8/changelogin +valid /man/8/ftl +valid /man/8/prep +valid /man/8/svc +valid /man/9/bind +valid /man/9/grid +valid /man/9/pack +validate /man/5/attach +validated /man/2/security-0intro +validated /man/5/attach +validity /man/1/secstore +validity /man/10/styx +validity /man/2/spki +validity /man/2/spki-verifier +validity /man/2/styxservers +validity /man/2/sys-byte2char +validlt /man/2/ip +validly /man/10/styx +validly /man/8/register +value /man/1/acme +value /man/1/alphabet-fs +value /man/1/charon +value /man/1/cprof +value /man/1/dd +value /man/1/du +value /man/1/emu +value /man/1/env +value /man/1/fc +value /man/1/freq +value /man/1/fs +value /man/1/grid-query +value /man/1/grid-register +value /man/1/itest +value /man/1/mash +value /man/1/mash-tk +value /man/1/math-misc +value /man/1/mc +value /man/1/mdb +value /man/1/mk +value /man/1/plumb +value /man/1/sendmail +value /man/1/sh +value /man/1/sh-alphabet +value /man/1/sh-csv +value /man/1/sh-file2chan +value /man/1/sh-sexprs +value /man/1/sh-std +value /man/1/sh-string +value /man/1/sh-tk +value /man/1/strings +value /man/1/tail +value /man/1/tkcmd +value /man/1/tktester +value /man/1/tr +value /man/1/unicode +value /man/1/wm +value /man/1/yacc +value /man/1/zeros +value /man/10/2c +value /man/10/a.out +value /man/10/acid +value /man/10/atoi +value /man/10/dev +value /man/10/devattach +value /man/10/dmainit +value /man/10/dynld +value /man/10/error +value /man/10/inb +value /man/10/inm +value /man/10/intrenable +value /man/10/kbdputc +value /man/10/kproc +value /man/10/lock +value /man/10/memory +value /man/10/mk +value /man/10/newchan +value /man/10/plan9.ini +value /man/10/print +value /man/10/qio +value /man/10/readnum +value /man/10/splhi +value /man/10/styx +value /man/10/styxserver +value /man/2/0intro +value /man/2/alphabet-intro +value /man/2/asn1 +value /man/2/attrdb +value /man/2/bufio +value /man/2/cfg +value /man/2/convcs +value /man/2/crc +value /man/2/dbm +value /man/2/debug +value /man/2/dhcpclient +value /man/2/dialog +value /man/2/dict +value /man/2/dis +value /man/2/diskblocks +value /man/2/disks +value /man/2/draw-0intro +value /man/2/draw-context +value /man/2/draw-display +value /man/2/draw-image +value /man/2/draw-rect +value /man/2/draw-screen +value /man/2/env +value /man/2/exception +value /man/2/factotum +value /man/2/filter +value /man/2/format +value /man/2/hash +value /man/2/ida +value /man/2/ip +value /man/2/keyring-certtostr +value /man/2/keyring-getstring +value /man/2/keyring-ipint +value /man/2/keyring-sha1 +value /man/2/math-0intro +value /man/2/math-export +value /man/2/math-fp +value /man/2/palmfile +value /man/2/plumbmsg +value /man/2/popup +value /man/2/prefab-compound +value /man/2/prof +value /man/2/pslib +value /man/2/readdir +value /man/2/registries +value /man/2/scsiio +value /man/2/secstore +value /man/2/security-0intro +value /man/2/security-auth +value /man/2/selectfile +value /man/2/sexprs +value /man/2/sh +value /man/2/spki +value /man/2/spki-verifier +value /man/2/spree +value /man/2/spree-cardlib +value /man/2/string +value /man/2/stringinttab +value /man/2/styx +value /man/2/styxpersist +value /man/2/styxservers +value /man/2/styxservers-nametree +value /man/2/sys-0intro +value /man/2/sys-bind +value /man/2/sys-dial +value /man/2/sys-dirread +value /man/2/sys-export +value /man/2/sys-fauth +value /man/2/sys-fversion +value /man/2/sys-millisec +value /man/2/sys-open +value /man/2/sys-pctl +value /man/2/sys-print +value /man/2/sys-read +value /man/2/sys-seek +value /man/2/sys-stat +value /man/2/sys-utfbytes +value /man/2/sys-werrstr +value /man/2/timers +value /man/2/ubfa +value /man/2/w3c-css +value /man/2/w3c-xpointers +value /man/2/wait +value /man/2/wmsrv +value /man/2/xml +value /man/3/audio +value /man/3/cmd +value /man/3/cons +value /man/3/dbg +value /man/3/env +value /man/3/ether +value /man/3/flash +value /man/3/ftl +value /man/3/gpio +value /man/3/i2c +value /man/3/ip +value /man/3/lpt +value /man/3/pnp +value /man/3/pointer +value /man/3/prof +value /man/3/prog +value /man/3/sign +value /man/3/switch +value /man/3/tls +value /man/3/tv +value /man/3/vga +value /man/4/acme +value /man/4/dbfs +value /man/4/factotum +value /man/4/import +value /man/4/keysrv +value /man/4/registry +value /man/5/0intro +value /man/5/open +value /man/5/read +value /man/5/stat +value /man/5/version +value /man/5/walk +value /man/6/attrdb +value /man/6/colour +value /man/6/dis +value /man/6/font +value /man/6/image +value /man/6/keyboard +value /man/6/keytext +value /man/6/man +value /man/6/namespace +value /man/6/ndb +value /man/6/plumbing +value /man/6/proto +value /man/6/sbl +value /man/6/sexprs +value /man/6/ubfa +value /man/6/utf +value /man/7/db +value /man/8/bootpd +value /man/8/changelogin +value /man/8/cs +value /man/8/getauthinfo +value /man/8/init +value /man/8/ping +value /man/8/prep +value /man/8/rstyxd +value /man/8/styxchat +value /man/9/0intro +value /man/9/bind +value /man/9/button +value /man/9/canvas +value /man/9/checkbutton +value /man/9/choicebutton +value /man/9/entry +value /man/9/frame +value /man/9/grid +value /man/9/image +value /man/9/label +value /man/9/listbox +value /man/9/menu +value /man/9/menubutton +value /man/9/options +value /man/9/pack +value /man/9/panel +value /man/9/radiobutton +value /man/9/scale +value /man/9/scrollbar +value /man/9/send +value /man/9/text +value /man/9/types +value /man/9/variable +value's /man/2/asn1 +value.bigint /man/2/asn1 +value.bitstring /man/2/asn1 +value.bool /man/2/asn1 +value.eoc /man/2/asn1 +value.function /man/2/w3c-css +value.hexcolour /man/2/w3c-css +value.int /man/2/asn1 +value.null /man/2/asn1 +value.objid /man/2/asn1 +value.octets /man/2/asn1 +value.other /man/2/asn1 +value.real /man/2/asn1 +value.rgb /man/2/w3c-css +value.s /man/2/alphabet-intro +value.seq /man/2/asn1 +value.set /man/2/asn1 +value.string /man/2/asn1 +value.unit /man/2/w3c-css +valuecount /man/9/choicebutton +valued /man/1/fs +valued /man/2/sys-dial +valued /man/2/sys-dup +valued /man/6/ndb +valued /man/6/utf +valued /man/8/mkfs +values /man/1/charon +values /man/1/chmod +values /man/1/deb +values /man/1/emu +values /man/1/env +values /man/1/fc +values /man/1/fs +values /man/1/grid-query +values /man/1/mash +values /man/1/mash-tk +values /man/1/math-misc +values /man/1/mathcalc +values /man/1/mc +values /man/1/mk +values /man/1/sh +values /man/1/sh-alphabet +values /man/1/sh-csv +values /man/1/sh-expr +values /man/1/sh-sexprs +values /man/1/sh-tk +values /man/1/sort +values /man/1/stack +values /man/1/tcs +values /man/1/unicode +values /man/1/wm-misc +values /man/1/xd +values /man/10/2c +values /man/10/2l +values /man/10/a.out +values /man/10/acid +values /man/10/c2l +values /man/10/dev +values /man/10/devattach +values /man/10/dynld +values /man/10/inb +values /man/10/mk +values /man/10/newchan +values /man/10/odbc +values /man/10/plan9.ini +values /man/10/print +values /man/10/qio +values /man/10/readnum +values /man/10/styx +values /man/2/0intro +values /man/2/alphabet-intro +values /man/2/asn1 +values /man/2/attrdb +values /man/2/bufio-chanfill +values /man/2/cfg +values /man/2/convcs +values /man/2/daytime +values /man/2/dbm +values /man/2/dhcpclient +values /man/2/dis +values /man/2/disks +values /man/2/draw-0intro +values /man/2/draw-display +values /man/2/draw-image +values /man/2/factotum +values /man/2/format +values /man/2/geodesy +values /man/2/hash +values /man/2/ida +values /man/2/ip +values /man/2/keyring-0intro +values /man/2/math-export +values /man/2/math-fp +values /man/2/palmfile +values /man/2/popup +values /man/2/readdir +values /man/2/registries +values /man/2/secstore +values /man/2/security-0intro +values /man/2/sexprs +values /man/2/sh +values /man/2/spki +values /man/2/spree +values /man/2/spree-cardlib +values /man/2/styx +values /man/2/styxservers +values /man/2/sys-0intro +values /man/2/sys-fversion +values /man/2/sys-open +values /man/2/sys-stat +values /man/2/ubfa +values /man/2/volume +values /man/2/w3c-css +values /man/2/w3c-xpointers +values /man/3/audio +values /man/3/cons +values /man/3/dbg +values /man/3/draw +values /man/3/eia +values /man/3/env +values /man/3/flash +values /man/3/fs +values /man/3/ftl +values /man/3/gpio +values /man/3/ip +values /man/3/pnp +values /man/3/touch +values /man/3/tv +values /man/3/vga +values /man/3/vid +values /man/4/factotum +values /man/4/registry +values /man/5/stat +values /man/6/audio +values /man/6/auth +values /man/6/colour +values /man/6/dis +values /man/6/font +values /man/6/image +values /man/6/keyboard +values /man/6/keytext +values /man/6/login +values /man/6/man +values /man/6/namespace +values /man/6/ndb +values /man/6/plumbing +values /man/6/sbl +values /man/6/sexprs +values /man/6/ubfa +values /man/6/utf +values /man/8/collabsrv +values /man/8/dhcp +values /man/8/styxchat +values /man/9/button +values /man/9/canvas +values /man/9/checkbutton +values /man/9/choicebutton +values /man/9/entry +values /man/9/frame +values /man/9/grid +values /man/9/label +values /man/9/listbox +values /man/9/menu +values /man/9/menubutton +values /man/9/options +values /man/9/pack +values /man/9/panel +values /man/9/radiobutton +values /man/9/scale +values /man/9/scrollbar +values /man/9/send +values /man/9/text +values /man/9/types +van /man/2/math-linalg +vanished /man/2/plumbmsg +vanishes /man/1/collab-clients +vanishes /man/2/registries +var /man/1/acme +var /man/1/mk +var /man/1/sh-std +var /man/10/mk +var /man/2/env +var /man/2/w3c-xpointers +var /man/9/variable +varargck /man/10/2c +varfont /man/1/acme +varfont /man/4/acme +variable /man/1/0intro +variable /man/1/acme +variable /man/1/alphabet-fs +variable /man/1/dd +variable /man/1/deb +variable /man/1/emu +variable /man/1/env +variable /man/1/fs +variable /man/1/limbo +variable /man/1/listen +variable /man/1/mash +variable /man/1/mash-make +variable /man/1/math-misc +variable /man/1/mc +variable /man/1/mk +variable /man/1/sendmail +variable /man/1/sh +variable /man/1/sh-arg +variable /man/1/sh-file2chan +variable /man/1/sh-regex +variable /man/1/sh-std +variable /man/1/sh-string +variable /man/1/stack +variable /man/10/2c +variable /man/10/a.out +variable /man/10/acid +variable /man/10/inm +variable /man/10/kbdputc +variable /man/10/mk +variable /man/10/plan9.ini +variable /man/10/print +variable /man/10/qio +variable /man/10/sleep +variable /man/2/0intro +variable /man/2/asn1 +variable /man/2/bufio +variable /man/2/convcs +variable /man/2/diskblocks +variable /man/2/env +variable /man/2/plumbmsg +variable /man/2/sh +variable /man/2/spree-objstore +variable /man/2/sys-dial +variable /man/2/sys-dirread +variable /man/2/sys-self +variable /man/2/ubfa +variable /man/2/w3c-xpointers +variable /man/3/cons +variable /man/3/dbg +variable /man/3/ds +variable /man/3/env +variable /man/4/namespace +variable /man/5/0intro +variable /man/5/stat +variable /man/6/dis +variable /man/6/image +variable /man/6/proto +variable /man/6/sbl +variable /man/6/ubfa +variable /man/8/init +variable /man/8/prep +variable /man/9/0intro +variable /man/9/checkbutton +variable /man/9/choicebutton +variable /man/9/menu +variable /man/9/radiobutton +variable /man/9/send +variable /man/9/variable +variable's /man/9/radiobutton +variables /man/1/0intro +variables /man/1/acme +variables /man/1/alphabet-fs +variables /man/1/deb +variables /man/1/env +variables /man/1/fs +variables /man/1/limbo +variables /man/1/mash +variables /man/1/mash-make +variables /man/1/mash-tk +variables /man/1/mc +variables /man/1/mk +variables /man/1/sh +variables /man/1/sh-std +variables /man/1/stack +variables /man/1/yacc +variables /man/10/2c +variables /man/10/acid +variables /man/10/c2l +variables /man/10/error +variables /man/10/mk +variables /man/10/plan9.ini +variables /man/10/qlock +variables /man/2/debug +variables /man/2/draw-0intro +variables /man/2/env +variables /man/2/itslib +variables /man/2/math-0intro +variables /man/2/sh +variables /man/2/spree-objstore +variables /man/2/styxservers-nametree +variables /man/2/sys-0intro +variables /man/2/sys-pctl +variables /man/3/dbg +variables /man/3/env +variables /man/3/srv9 +variables /man/4/9srvfs +variables /man/6/namespace +variables /man/6/plumbing +variables /man/6/sbl +variables /man/8/create +variables /man/9/menu +variadic /man/10/print +variant /man/1/0intro +variant /man/10/dynld +variant /man/10/plan9.ini +variant /man/10/qio +variant /man/2/asn1 +variant /man/2/dis +variant /man/2/sexprs +variant /man/2/spki +variant /man/2/ubfa +variant /man/4/dossrv +variant /man/6/keyboard +variant /man/6/sbl +variant /man/6/sexprs +variant /man/9/0intro +variants /man/1/chmod +variants /man/1/wish +variants /man/2/asn1 +variants /man/2/sexprs +variants /man/2/spki +variants /man/3/ip +variants /man/3/touch +variants /man/6/sbl +variation /man/2/security-0intro +variations /man/1/chgrp +varies /man/10/devattach +varies /man/10/strcat +varies /man/2/alphabet-intro +varies /man/3/logfs +varies /man/3/prog +varieties /man/2/prefab-element +variety /man/1/charon +variety /man/1/mash-tk +variety /man/2/security-0intro +variety /man/4/acme +various /man/1/0intro +various /man/1/alphabet-abc +various /man/1/alphabet-grid +various /man/1/brutus +various /man/1/chgrp +various /man/1/cook +various /man/1/grid-register +various /man/1/math-misc +various /man/1/session +various /man/1/tktester +various /man/1/units +various /man/10/0intro +various /man/10/plan9.ini +various /man/2/0intro +various /man/2/asn1 +various /man/2/convcs +various /man/2/draw-font +various /man/2/draw-image +various /man/2/ida +various /man/2/imagefile +various /man/2/keyring-getmsg +various /man/2/prefab-environ +various /man/2/styx +various /man/2/styxservers +various /man/2/ubfa +various /man/2/w3c-xpointers +various /man/2/wmsrv +various /man/2/xml +various /man/3/gpio +various /man/3/mnt +various /man/3/pnp +various /man/3/rtc +various /man/3/srv +various /man/3/usb +various /man/4/factotum +various /man/4/spree +various /man/6/colour +various /man/6/dis +various /man/6/scancode +various /man/6/sexprs +various /man/8/collabsrv +various /man/8/cs +various /man/8/dhcp +various /man/9/button +various /man/9/canvas +various /man/9/checkbutton +various /man/9/choicebutton +various /man/9/entry +various /man/9/frame +various /man/9/label +various /man/9/listbox +various /man/9/menu +various /man/9/menubutton +various /man/9/options +various /man/9/panel +various /man/9/radiobutton +various /man/9/scale +various /man/9/scrollbar +various /man/9/text +variously /man/2/keyring-0intro +varname /man/1/sh +vary /man/4/kfs +varying /man/10/plan9.ini +varying /man/2/keyring-0intro +vc /man/10/2c +vclk /man/3/fpga +vctl /man/2/volume +vector /man/10/intrenable +vector /man/2/bloomfilter +vector /man/2/keyring-crypt +vector /man/2/math-linalg +vector /man/2/prefab-element +vector /man/5/stat +vector /man/6/login +vectors /man/10/intrenable +vectors /man/2/math-linalg +vectors /man/3/tls +vendor /man/2/dhcpclient +vendor /man/3/pnp +vendor /man/8/bootpd +venti /man/2/venti +venti /man/8/prep +venti.b /man/2/venti +venti.m /man/2/venti +verb /man/1/alphabet-fs +verb /man/1/alphabet-main +verb /man/1/fs +verb /man/10/print +verb /man/2/factotum +verb /man/2/itslib +verb /man/2/sys-print +verb /man/2/sys-werrstr +verb /man/4/factotum +verb /man/6/plumbing +verb /man/8/applylog +verbatim /man/1/alphabet-abc +verbatim /man/1/alphabet-grid +verbatim /man/6/sexprs +verbatim /man/9/1copyright +verbose /man/1/secstore +verbose /man/10/iar +verbose /man/2/filter-deflate +verbose /man/2/prof +verbose /man/2/scsiio +verbose /man/2/sh +verbosity /man/1/itest +verbosity /man/1/sh-test +verbosity /man/2/itslib +verbs /man/1/alphabet-fs +verbs /man/1/fs +verbs /man/10/print +verbs /man/2/sys-print +verbs /man/4/factotum +verbs /man/6/plumbing +verification /man/2/spki-verifier +verified /man/2/security-0intro +verified /man/2/spki-verifier +verified /man/3/logfs +verified /man/4/keysrv +verifier /man/2/spki +verifier /man/2/spki-verifier +verifier.b /man/2/spki-verifier +verifies /man/1/avr +verifies /man/10/styx +verify /man/10/ar +verify /man/2/keyring-0intro +verify /man/2/keyring-sha1 +verify /man/2/security-0intro +verify /man/2/security-login +verify /man/2/spki-verifier +verify /man/2/sys-open +verify /man/6/auth +verify /man/6/keys +verify /man/8/createsignerkey +verify /man/8/register +verify /man/8/signer +verify.b /man/8/signer +verifying /man/2/security-0intro +vers /man/10/newchan +vers /man/10/styxserver +vers /man/2/sys-stat +vers /man/3/tls +vers /man/8/httpd +vers /man/8/styxchat +versa /man/1/acme +versa /man/2/debug +versa /man/2/security-0intro +verse /man/1/cprof +version /man/1/asm +version /man/1/bind +version /man/1/blur +version /man/1/charon +version /man/1/cprof +version /man/1/ebook +version /man/1/echo +version /man/1/emu +version /man/1/ls +version /man/1/mprof +version /man/1/prof +version /man/1/sh-file2chan +version /man/1/sh-std +version /man/1/wm-misc +version /man/1/yacc +version /man/10/2c +version /man/10/9load +version /man/10/newchan +version /man/10/styx +version /man/10/styxserver +version /man/10ti925/tihost +version /man/2/names +version /man/2/palmfile +version /man/2/security-0intro +version /man/2/styx +version /man/2/styxconv +version /man/2/styxservers +version /man/2/sys-fversion +version /man/2/sys-stat +version /man/2/w3c-xpointers +version /man/3/cons +version /man/3/draw +version /man/3/dynld +version /man/3/ether +version /man/3/ip +version /man/3/pbus +version /man/3/prog +version /man/3/tls +version /man/3/touch +version /man/4/namespace +version /man/5/0intro +version /man/5/attach +version /man/5/stat +version /man/5/version +version /man/6/image +version /man/6/sbl +version /man/8/applylog +version /man/8/collabsrv +version /man/8/getauthinfo +version /man/8/httpd +version /man/8/rip +version /man/8/signer +version /man/8/styxchat +version1 /man/8/rip +version2 /man/1/charon +versions /man/1/charon +versions /man/1/keyboard +versions /man/1/tiny +versions /man/1/wm-sh +versions /man/10/conf +versions /man/10/styx +versions /man/2/keyring-sha1 +versions /man/2/security-0intro +versions /man/3/ftl +versions /man/3/tls +versions /man/4/acme +versions /man/4/namespace +versions /man/6/dis +versions /man/6/sbl +versions /man/8/rdbgsrv +vertical /man/1/acme +vertical /man/1/charon +vertical /man/1/tiny +vertical /man/2/draw-font +vertical /man/2/draw-image +vertical /man/2/draw-rect +vertical /man/2/prefab-element +vertical /man/3/draw +vertical /man/4/acme +vertical /man/6/sexprs +vertical /man/9/canvas +vertical /man/9/grid +vertical /man/9/listbox +vertical /man/9/options +vertical /man/9/pack +vertical /man/9/scale +vertical /man/9/scrollbar +vertical /man/9/text +vertically /man/2/dividers +vertically /man/9/pack +vertically /man/9/text +vesa /man/3/vga +vestige /man/10/plan9.ini +vfprint /man/10/print +vga /man/10/conf +vga /man/10/plan9.ini +vga /man/3/vga +vga /man/6/colour +vgactl /man/3/vga +vgaovl /man/3/vga +vgaovlctl /man/3/vga +vgasize /man/10/plan9.ini +via /man/1/keyboard +via /man/1/mash-tk +via /man/1/miniterm +via /man/1/rcmd +via /man/1/tiny +via /man/1/wm +via /man/10/allocb +via /man/10/plan9.ini +via /man/10ti925/tihost +via /man/2/ether +via /man/2/filter-slip +via /man/2/itslib +via /man/2/plumbmsg +via /man/2/scsiio +via /man/2/sh +via /man/2/spki-verifier +via /man/2/sys-dup +via /man/2/sys-pipe +via /man/2/tk +via /man/2/tkclient +via /man/2/volume +via /man/2/wmclient +via /man/2/wmsrv +via /man/3/cap +via /man/3/cmd +via /man/3/cons +via /man/3/draw +via /man/3/eia +via /man/3/ip +via /man/3/pipe +via /man/3/pnp +via /man/3/sd +via /man/3/touch +via /man/4/9srvfs +via /man/4/factotum +via /man/4/import +via /man/4/keyfs +via /man/4/keysrv +via /man/4/namespace +via /man/4/registry +via /man/6/colour +via /man/6/image +via /man/6/keys +via /man/6/users +via /man/7/db +via /man/7/dbsrv +via /man/8/dns +via /man/8/plumber +via /man/8/rdbgsrv +via /man/8/rstyxd +via /man/8/signer +via /man/9/0intro +via /man/9/canvas +via /man/9/entry +via /man/9/listbox +via /man/9/scale +via /man/9/text +via /man/9/update +vice /man/1/acme +vice /man/1/cprof +vice /man/2/debug +vice /man/2/security-0intro +vid /man/3/vid +vidcram /man/3/vid +vidctl /man/3/vid +viddata /man/3/vid +video /man/1/mux +video /man/10/kproc +video /man/10/plan9.ini +video /man/3/mpeg +video /man/3/pnp +video /man/3/tv +video /man/3/vid +videotex /man/1/miniterm +videotexstring /man/2/asn1 +view /man/1/collab +view /man/1/cprof +view /man/1/dmview +view /man/1/ebook +view /man/1/grid-query +view /man/1/session +view /man/1/wm-misc +view /man/8/styxchat +view /man/9/canvas +view /man/9/entry +view /man/9/listbox +view /man/9/options +view /man/9/scrollbar +view /man/9/see +view /man/9/text +view.b /man/1/wm-misc +viewed /man/1/0intro +viewed /man/1/dmview +viewed /man/1/ebook +viewed /man/1/grid-ns +viewed /man/1/grid-query +viewer /man/1/wm-misc +viewer /man/2/drawmux +viewer's /man/2/drawmux +viewing /man/1/charon +viewing /man/1/deb +viewing /man/1/dmview +viewing /man/1/grid-monitor +views /man/9/scrollbar +villas /man/6/attrdb +virgil /man/1/mux +virgil /man/2/virgil +virgil /man/8/srv +virgil /man/8/virgild +virgil.b /man/2/virgil +virgild /man/1/mux +virgild /man/2/virgil +virgild /man/8/virgild +virgild.b /man/8/virgild +virgild.dis /man/8/srv +virtual /man/1/0intro +virtual /man/1/asm +virtual /man/1/emu +virtual /man/1/limbo +virtual /man/1/mk +virtual /man/1/sh-alphabet +virtual /man/1/time +virtual /man/10/0intro +virtual /man/10/9load +virtual /man/10/a.out +virtual /man/10/dev +virtual /man/10/dmainit +virtual /man/10/mk +virtual /man/2/0intro +virtual /man/2/dis +virtual /man/2/drawmux +virtual /man/2/wmsrv +virtual /man/3/dbg +virtual /man/3/ip +virtual /man/3/vga +virtual /man/4/acme +virtual /man/4/ramfile +virtual /man/6/dis +virtual /man/6/scancode +virtual /man/6/ubfa +virtualised /man/1/0intro +virtualised /man/1/wm-sh +vis /man/2/spree +vis /man/4/spree +visibility /man/2/spree +visibility /man/2/spree-cardlib +visibility /man/4/spree +visible /man/1/0intro +visible /man/1/acme +visible /man/1/cpu +visible /man/1/listen +visible /man/1/mash-tk +visible /man/1/mk +visible /man/10/2c +visible /man/10/kproc +visible /man/10/mk +visible /man/2/draw-display +visible /man/2/draw-example +visible /man/2/draw-font +visible /man/2/draw-image +visible /man/2/draw-screen +visible /man/2/prefab-0intro +visible /man/2/prefab-compound +visible /man/2/prefab-element +visible /man/2/spree +visible /man/2/spree-cardlib +visible /man/2/sys-bind +visible /man/2/sys-pctl +visible /man/2/tkclient +visible /man/2/wmclient +visible /man/3/boot +visible /man/3/cmd +visible /man/3/cons +visible /man/3/dbg +visible /man/3/fpga +visible /man/3/tls +visible /man/3/usb +visible /man/4/0intro +visible /man/4/acme +visible /man/4/dossrv +visible /man/4/export +visible /man/4/ftpfs +visible /man/4/import +visible /man/4/spree +visible /man/4/tarfs +visible /man/6/colour +visible /man/6/keys +visible /man/8/changelogin +visible /man/8/rdbgsrv +visible /man/9/canvas +visible /man/9/entry +visible /man/9/grab +visible /man/9/listbox +visible /man/9/menu +visible /man/9/options +visible /man/9/scrollbar +visible /man/9/see +visible /man/9/text +visible /man/9/update +visiblestring /man/2/asn1 +vision864 /man/3/vga +vision964 /man/3/vga +visited /man/5/walk +visual /man/1/brutus +visual /man/1/deb +visual /man/1/mash +visual /man/1/mash-tk +visual /man/6/colour +visual /man/8/getauthinfo +visually /man/1/grid-monitor +visually /man/1/grid-ns +visually /man/4/cpu +vita /man/9/0intro +vita /man/9/1copyright +vitanuova /man/1/webgrab +vitanuova.com /man/6/ndb +vivido /man/6/ndb +vl /man/10/2l +vlevel /man/1/itest +vlong /man/10/2c +vlong /man/10/atoi +vlong /man/10/dev +vlong /man/10/devattach +vlong /man/10/dynld +vlong /man/10/print +vlong /man/10/styx +vlong /man/10/styxserver +vlong,int /man/10/dynld +vmail /man/2/translate +vmsgs /man/2/venti +vmware /man/10/plan9.ini +voice /man/2/translate +void /man/1/alphabet-fs +void /man/1/fs +void /man/10/2c +void /man/10/allocb +void /man/10/atoi +void /man/10/c2l +void /man/10/conf +void /man/10/delay +void /man/10/dev +void /man/10/devattach +void /man/10/dmainit +void /man/10/dynld +void /man/10/error +void /man/10/eve +void /man/10/inb +void /man/10/intrenable +void /man/10/kbdputc +void /man/10/kproc +void /man/10/lock +void /man/10/malloc +void /man/10/memory +void /man/10/newchan +void /man/10/panic +void /man/10/print +void /man/10/qio +void /man/10/qlock +void /man/10/seconds +void /man/10/sleep +void /man/10/splhi +void /man/10/styx +void /man/10/styxserver +void /man/10/xalloc +void /man/6/colour +volatile /man/2/dhcpclient +volatile /man/3/rtc +volatile /man/3/tinyfs +volatile /man/4/namespace +volatile /man/8/prep +volatile /man/8/register +voldn /man/2/ir +voldn /man/2/volume +volume /man/1/0intro +volume /man/1/acme +volume /man/1/asm +volume /man/1/limbo +volume /man/1/mash +volume /man/1/mux +volume /man/1/secstore +volume /man/1/yacc +volume /man/10/2a +volume /man/10/sleep +volume /man/2/dis +volume /man/2/ir +volume /man/2/sys-self +volume /man/2/tk +volume /man/2/volume +volume /man/3/audio +volume /man/3/tv +volume /man/6/dis +volume /man/9/0intro +volume.b /man/2/volume +volume.m /man/2/volume +volumectl /man/2/volume +volumes /man/3/tv +volup /man/2/ir +volup /man/2/volume +vseprint /man/10/print +vsmprint /man/10/print +vsnprint /man/10/print +vsync /man/3/vga +vuaibclo /man/10/iar +vulnerable /man/2/security-0intro +vv /man/1/webgrab +vxxxx /man/10/iar +vy1 /man/3/tv +w3c /man/2/w3c-css +w3c /man/2/w3c-xpointers +wait /man/1/charon +wait /man/1/mash +wait /man/1/p +wait /man/1/sh +wait /man/1/tiny +wait /man/10/acid +wait /man/10/sleep +wait /man/2/command +wait /man/2/sh +wait /man/2/timers +wait /man/2/wait +wait /man/3/cmd +wait /man/3/cons +wait /man/3/dbg +wait /man/3/prog +wait /man/3/touch +wait /man/5/0intro +wait /man/5/flush +waitfor /man/1/stack +waiting /man/1/blur +waiting /man/1/p +waiting /man/1/sh +waiting /man/10/delay +waiting /man/10/qio +waiting /man/10/qlock +waiting /man/10/sleep +waiting /man/2/lock +waiting /man/2/sys-sleep +waiting /man/3/ip +waiting /man/3/pipe +waiting /man/3/touch +waiting /man/5/0intro +waits /man/1/dmview +waits /man/1/listen +waits /man/1/sh-tk +waits /man/1/stream +waits /man/1/tiny +waits /man/10/delay +waits /man/10/styxserver +waits /man/2/bufio-chanfill +waits /man/2/debug +waits /man/2/dialog +waits /man/2/plumbmsg +waits /man/2/virgil +waits /man/3/mpeg +waits /man/4/factotum +waits /man/8/styxchat +waits /man/8/touchcal +wake /man/10/kproc +wake /man/10/sleep +wakeme /man/3/dbg +wakes /man/10/qio +wakes /man/10/sleep +wakeup /man/10/intrenable +wakeup /man/10/sleep +waking /man/10/qio +walk /man/1/0intro +walk /man/1/alphabet-fs +walk /man/1/fs +walk /man/10/dev +walk /man/10/devattach +walk /man/10/styxserver +walk /man/2/styx +walk /man/2/styxservers +walk /man/2/styxservers-nametree +walk /man/5/0intro +walk /man/5/clunk +walk /man/5/open +walk /man/5/stat +walk /man/5/walk +walked /man/2/prefab-element +walked /man/5/walk +walking /man/2/styxservers +walking /man/5/walk +walkqid /man/10/dev +walkqid /man/10/devattach +walks /man/10/dev +walks /man/10/devattach +walks /man/5/0intro +walks /man/5/walk +wan /man/3/pbus +wanted /man/1/sh-file2chan +wanted /man/3/prof +wants /man/2/security-0intro +wants /man/2/sh +warn /man/10/2c +warn /man/2/itslib +warning /man/1/acme +warning /man/1/limbo +warning /man/1/mkdir +warning /man/10/2c +warning /man/10/c2l +warning /man/10/iar +warning /man/2/xml +warning /man/8/prep +warning /man/9/send +warnings /man/1/sh-test +warnings /man/10/c2l +warnings /man/2/fsproto +warnings /man/2/itslib +warped /man/3/touch +warranties /man/9/1copyright +waserror /man/10/error +wasn't /man/9/canvas +wasted /man/10/xalloc +watch /man/1/tail +watch /man/10/plan9.ini +watch /man/2/command +watch /man/2/spree +watch /man/2/spree-gather +watch /man/2/wait +watch /man/4/spree +watchdog /man/2/dhcpclient +watches /man/2/popup +watches /man/8/rip +wav /man/1/auplay +wav2iaf /man/1/auplay +wav2iaf.b /man/1/auplay +wavelan /man/10/plan9.ini +wavelanpci /man/10/plan9.ini +ways /man/1/0intro +ways /man/10/9load +ways /man/2/encoding +ways /man/2/keyring-0intro +ways /man/2/sh +ways /man/6/utf +ways /man/9/0intro +ways /man/9/button +ways /man/9/canvas +ways /man/9/checkbutton +ways /man/9/entry +ways /man/9/label +ways /man/9/listbox +ways /man/9/radiobutton +wb.bit /man/8/collabsrv +wbsrv /man/8/collabsrv +wc /man/1/freq +wc /man/1/sh-alphabet +wc /man/1/sum +wc /man/1/wc +wc /man/2/bufio-chanfill +wc /man/2/sys-file2chan +wc.b /man/1/wc +wctl /man/2/draw-context +wd8003 /man/10/plan9.ini +wd8013 /man/10/plan9.ini +wday /man/2/daytime +wdir /man/3/cmd +weakness /man/6/login +wear /man/4/kfs +wearing /man/3/ftl +web /man/1/charon +web /man/1/mux +web /man/1/webgrab +web /man/2/w3c-css +web /man/2/w3c-xpointers +web /man/6/ubfa +web /man/8/httpd +webget /man/1/charon +webget /man/1/webgrab +webgrab /man/1/webgrab +webgrab.b /man/1/webgrab +webphone /man/3/touch +wed /man/1/date +weight /man/9/grid +weights /man/9/grid +werrstr /man/10/dynld +werrstr /man/2/sys-werrstr +wfd /man/1/alphabet-main +wfd /man/1/sh-alphabet +wfd /man/2/alphabet-intro +wfd /man/2/disks +wgs84 /man/2/geodesy +wh /man/10/odbc +what's /man/1/mk +what's /man/10/mk +what's /man/2/draw-example +whatever /man/1/acme +whatever /man/1/mash-tk +whatever /man/10/intrenable +whatever /man/3/draw +whatever /man/6/keyboard +whatever /man/9/canvas +whatever /man/9/pack +whatever /man/9/scrollbar +whatis /man/1/mash +whatis /man/1/sh +whatis /man/1/sh-std +whatis /man/10/acid +whatis /man/2/sh +whence /man/6/colour +whenever /man/1/acme +whenever /man/1/mash +whenever /man/1/sh +whenever /man/1/sh-file2chan +whenever /man/1/toolbar +whenever /man/10/iar +whenever /man/10/styxserver +whenever /man/2/sys-0intro +whenever /man/2/sys-stat +whenever /man/2/tabs +whenever /man/3/pbus +whenever /man/4/dbfs +whenever /man/4/factotum +whenever /man/5/stat +whenever /man/8/dhcp +whenever /man/9/bind +whenever /man/9/button +whenever /man/9/canvas +whenever /man/9/checkbutton +whenever /man/9/choicebutton +whenever /man/9/grab +whenever /man/9/menu +whenever /man/9/menubutton +whenever /man/9/options +whenever /man/9/radiobutton +whenever /man/9/scale +whenever /man/9/text +whereas /man/2/asn1 +whereas /man/4/spree +whereas /man/9/menu +whereas /man/9/text +whereby /man/1/charon +whereby /man/1/deb +whereever /man/1/alphabet-fs +whereever /man/1/fs +whereever /man/1/sh +whereever /man/1/sh-alphabet +wherein /man/4/acme +whereupon /man/1/sh-expr +whereupon /man/1/wm-sh +whereupon /man/4/spree +wherever /man/10/c2l +whichever /man/1/sh +whichever /man/10/memory +whichever /man/2/timers +whichever /man/3/pipe +whichever /man/9/grid +whilst /man/1/blur +whilst /man/1/session +whilst /man/8/touchcal +whimsical /man/1/wm-misc +whiteboard /man/1/collab-clients +whiteboard /man/8/collabsrv +whiteboard.b /man/1/collab-clients +whitespace /man/1/brutus +whitespace /man/1/mash +whitespace /man/2/w3c-css +whitespace /man/6/sexprs +whoever /man/2/security-0intro +wholly /man/1/cprof +whom /man/2/security-0intro +whom /man/4/keyfs +whom /man/8/getauthinfo +whoto /man/2/spree +wid /man/1/sh-tk +wide /man/1/0intro +wide /man/1/charon +wide /man/1/sh-string +wide /man/1/wm-sh +wide /man/1/xd +wide /man/10/error +wide /man/2/bloomfilter +wide /man/2/keyring-0intro +wide /man/2/prefab-element +wide /man/2/w3c-css +wide /man/2/w3c-xpointers +wide /man/3/arch +wide /man/3/cons +wide /man/3/draw +wide /man/3/vga +wide /man/6/auth +wide /man/6/image +wide /man/6/login +wide /man/6/man +wide /man/6/utf +wide /man/8/cs +wide /man/8/ftl +wide /man/9/canvas +wide /man/9/text +widely /man/1/sh-csv +widely /man/2/security-0intro +widen /man/1/sh-string +widened /man/2/alphabet-intro +wider /man/2/draw-display +wider /man/4/registry +wider /man/9/text +widest /man/2/prefab-element +widest /man/9/choicebutton +widget /man/1/logwindow +widget /man/1/mprof +widget /man/1/prof +widget /man/1/tktester +widget /man/2/dialog +widget /man/2/dividers +widget /man/2/popup +widget /man/2/spree-cardlib +widget /man/2/tabs +widget /man/2/tk +widget /man/2/volume +widget /man/9/0intro +widget /man/9/bind +widget /man/9/button +widget /man/9/canvas +widget /man/9/checkbutton +widget /man/9/choicebutton +widget /man/9/entry +widget /man/9/focus +widget /man/9/frame +widget /man/9/label +widget /man/9/listbox +widget /man/9/menu +widget /man/9/menubutton +widget /man/9/options +widget /man/9/pack +widget /man/9/panel +widget /man/9/radiobutton +widget /man/9/scale +widget /man/9/scrollbar +widget /man/9/see +widget /man/9/text +widget /man/9/types +widget's /man/1/tktester +widget's /man/2/tk +widget's /man/9/checkbutton +widget's /man/9/entry +widget's /man/9/frame +widget's /man/9/listbox +widget's /man/9/options +widget's /man/9/radiobutton +widget's /man/9/text +widget's /man/9/types +widgetname /man/9/menubutton +widgets /man/1/mash-tk +widgets /man/1/tktester +widgets /man/2/dividers +widgets /man/2/popup +widgets /man/2/spree-cardlib +widgets /man/2/tk +widgets /man/2/tkclient +widgets /man/9/0intro +widgets /man/9/button +widgets /man/9/canvas +widgets /man/9/checkbutton +widgets /man/9/choicebutton +widgets /man/9/entry +widgets /man/9/frame +widgets /man/9/grid +widgets /man/9/image +widgets /man/9/label +widgets /man/9/listbox +widgets /man/9/menu +widgets /man/9/menubutton +widgets /man/9/options +widgets /man/9/pack +widgets /man/9/panel +widgets /man/9/radiobutton +widgets /man/9/scale +widgets /man/9/scrollbar +widgets /man/9/text +widows /man/6/man +width /man/1/9win +width /man/1/acme +width /man/1/brutus +width /man/1/charon +width /man/1/emu +width /man/1/fc +width /man/1/lc +width /man/1/man +width /man/1/wm-sh +width /man/1/xd +width /man/10/print +width /man/2/disks +width /man/2/dividers +width /man/2/draw-font +width /man/2/draw-image +width /man/2/prefab-element +width /man/2/print +width /man/2/pslib +width /man/2/spree-cardlib +width /man/2/sys-print +width /man/3/draw +width /man/3/flash +width /man/3/vga +width /man/6/font +width /man/6/image +width /man/6/man +width /man/8/collabsrv +width /man/8/ftl +width /man/9/bind +width /man/9/button +width /man/9/canvas +width /man/9/checkbutton +width /man/9/choicebutton +width /man/9/entry +width /man/9/frame +width /man/9/grid +width /man/9/image +width /man/9/label +width /man/9/listbox +width /man/9/menubutton +width /man/9/options +width /man/9/pack +width /man/9/panel +width /man/9/radiobutton +width /man/9/scale +width /man/9/scrollbar +width /man/9/text +width /man/9/types +widths /man/1/lc +wihch /man/2/draw-screen +wildcard /man/1/filename +wildcard /man/1/mash-make +wildcard /man/6/dis +wiley /man/2/keyring-0intro +wiley /man/2/security-0intro +wiley /man/3/ssl +willing /man/2/dhcpclient +willing /man/8/logind +willis /man/6/attrdb +willsend /man/2/plumbmsg +wilson /man/6/attrdb +wimagefile /man/2/imagefile +win /man/1/acme +win /man/1/sh-tk +win /man/10/acid +win /man/2/dividers +win /man/2/draw-image +win /man/2/popup +win /man/4/acme +win.b /man/1/acme +win.c /man/3/draw +win32vk /man/6/scancode +winctl /man/1/sh-tk +winctl /man/1/wm-misc +winctl.b /man/1/wm-misc +wind /man/2/draw-image +wind /man/3/draw +wind:int /man/2/draw-image +winding /man/2/draw-image +winding /man/3/draw +winding /man/9/canvas +window /man/1/0intro +window /man/1/9win +window /man/1/acme +window /man/1/blur +window /man/1/brutus +window /man/1/charon +window /man/1/collab-clients +window /man/1/cprof +window /man/1/deb +window /man/1/dmview +window /man/1/ebook +window /man/1/filename +window /man/1/ftree +window /man/1/grid-monitor +window /man/1/grid-query +window /man/1/keyboard +window /man/1/logwindow +window /man/1/man +window /man/1/mash +window /man/1/mash-tk +window /man/1/miniterm +window /man/1/session +window /man/1/sh-tk +window /man/1/tkcmd +window /man/1/tktester +window /man/1/toolbar +window /man/1/wish +window /man/1/wm +window /man/1/wm-misc +window /man/1/wm-sh +window /man/10/acid +window /man/2/command +window /man/2/dialog +window /man/2/dividers +window /man/2/draw-context +window /man/2/draw-display +window /man/2/draw-example +window /man/2/draw-image +window /man/2/draw-screen +window /man/2/drawmux +window /man/2/mpeg +window /man/2/plumbmsg +window /man/2/prefab-0intro +window /man/2/prefab-compound +window /man/2/prof +window /man/2/selectfile +window /man/2/sys-pctl +window /man/2/tk +window /man/2/tkclient +window /man/2/wmclient +window /man/2/wmlib +window /man/2/wmsrv +window /man/3/draw +window /man/3/mpeg +window /man/3/prog +window /man/3/snarf +window /man/3/touch +window /man/3/tv +window /man/4/acme +window /man/4/factotum +window /man/4/namespace +window /man/6/image +window /man/8/getauthinfo +window /man/8/plumber +window /man/8/touchcal +window /man/9/bind +window /man/9/button +window /man/9/canvas +window /man/9/checkbutton +window /man/9/choicebutton +window /man/9/destroy +window /man/9/entry +window /man/9/focus +window /man/9/frame +window /man/9/grab +window /man/9/grid +window /man/9/label +window /man/9/listbox +window /man/9/lower +window /man/9/menu +window /man/9/menubutton +window /man/9/options +window /man/9/pack +window /man/9/panel +window /man/9/radiobutton +window /man/9/raise +window /man/9/scale +window /man/9/scrollbar +window /man/9/text +window /man/9/update +window's /man/1/acme +window's /man/1/sh-tk +window's /man/2/dialog +window's /man/2/draw-image +window's /man/2/selectfile +window's /man/2/tkclient +window's /man/2/wmclient +window's /man/4/acme +window's /man/9/canvas +window's /man/9/grab +window's /man/9/lower +window's /man/9/raise +window's /man/9/text +window.open /man/1/charon +windowing /man/1/cpu +windowing /man/1/sh-tk +windowing /man/2/command +windowing /man/8/plumber +windows /man/1/0intro +windows /man/1/9win +windows /man/1/acme +windows /man/1/auplay +windows /man/1/chmod +windows /man/1/deb +windows /man/1/emu +windows /man/1/tktester +windows /man/1/toolbar +windows /man/1/wm +windows /man/10/conf +windows /man/10/ntsrv +windows /man/10/odbc +windows /man/10/styxserver +windows /man/2/draw-0intro +windows /man/2/draw-context +windows /man/2/draw-image +windows /man/2/draw-screen +windows /man/2/drawmux +windows /man/2/prefab-compound +windows /man/2/tk +windows /man/2/tkclient +windows /man/2/wmclient +windows /man/2/wmsrv +windows /man/3/cmd +windows /man/3/draw +windows /man/3/fs +windows /man/4/acme +windows /man/4/dossrv +windows /man/4/namespace +windows /man/4/spree +windows /man/7/dbsrv +windows /man/8/prep +windows /man/9/canvas +windows /man/9/destroy +windows /man/9/grab +windows /man/9/grid +windows /man/9/pack +windows /man/9/text +windows9x /man/3/fs +windows™ /man/6/scancode +wine /man/10/odbc +winid /man/1/sh-tk +winm /man/1/acme +winname /man/1/9win +wins /man/2/draw-screen +wins /man/2/wmsrv +winterbottom /man/10/acid +wintitle /man/1/grid-monitor +wintitle /man/1/sh-tk +wired /man/1/sh +wired /man/8/ftl +wireless /man/10/plan9.ini +wise /man/1/mathcalc +wise /man/3/dbg +wish /man/1/0intro +wish /man/1/9win +wish /man/1/wish +wish /man/2/format +wish /man/2/ir +wish /man/2/math-fp +wish /man/2/spree-gather +wish /man/4/spree +wish /man/5/attach +wish /man/8/getauthinfo +wish /man/9/grid +wish /man/9/pack +wish.b /man/1/wish +wishes /man/1/collab-clients +wishes /man/10/dynld +wishes /man/2/security-0intro +wishes /man/2/spree-objstore +wishes /man/2/tkclient +wishes /man/2/wmclient +wishes /man/5/walk +wishes /man/8/svc +wishing /man/2/command +wishing /man/8/collabsrv +wishpad /man/1/wish +withdrawn /man/2/draw-image +withtag /man/9/canvas +wk /man/6/keyboard +wl /man/2/dividers +wlock /man/10/qlock +wm /man/1/0intro +wm /man/1/brutus +wm /man/1/calendar +wm /man/1/charon +wm /man/1/collab +wm /man/1/collab-clients +wm /man/1/cook +wm /man/1/cprof +wm /man/1/deb +wm /man/1/dmview +wm /man/1/emu +wm /man/1/filename +wm /man/1/ftree +wm /man/1/keyboard +wm /man/1/logon +wm /man/1/logwindow +wm /man/1/man +wm /man/1/mash-tk +wm /man/1/miniterm +wm /man/1/mprof +wm /man/1/mux +wm /man/1/plumb +wm /man/1/prof +wm /man/1/ps +wm /man/1/tktester +wm /man/1/toolbar +wm /man/1/wish +wm /man/1/wm +wm /man/1/wm-misc +wm /man/1/wm-sh +wm /man/2/command +wm /man/2/debug +wm /man/2/dialog +wm /man/2/dis +wm /man/2/draw-context +wm /man/2/drawmux +wm /man/2/selectfile +wm /man/2/sys-pctl +wm /man/2/tk +wm /man/2/tkclient +wm /man/2/wmclient +wm /man/2/wmlib +wm /man/2/wmsrv +wm /man/3/pointer +wm /man/3/sign +wm /man/3/snarf +wm /man/3/srv +wm /man/4/dbfs +wm /man/4/factotum +wm /man/4/logfile +wm /man/4/namespace +wm /man/6/keyboard +wm /man/6/namespace +wm /man/6/plumbing +wm /man/6/sbl +wm /man/8/getauthinfo +wm /man/8/plumber +wm /man/8/touchcal +wm.b /man/1/wm +wm.dis /man/1/emu +wmchan /man/8/plumber +wmclient /man/1/toolbar +wmclient /man/1/wm +wmclient /man/2/wmclient +wmclient /man/2/wmlib +wmclient /man/2/wmsrv +wmclient.b /man/2/wmclient +wmclient.b /man/2/wmlib +wmclient.m /man/2/wmclient +wmcontext /man/1/wm +wmcontext /man/2/draw-context +wmcontext /man/2/tk +wmcontext /man/2/wmclient +wmcontext /man/2/wmlib +wmcontext /man/2/wmsrv +wmcontext.images /man/2/wmsrv +wmctl /man/2/tkclient +wmctl /man/2/wmclient +wmctl /man/2/wmlib +wmexport /man/2/wmsrv +wmgr /man/2/draw-context +wmlib /man/1/filename +wmlib /man/1/sh-tk +wmlib /man/1/wish +wmlib /man/2/command +wmlib /man/2/dialog +wmlib /man/2/draw-0intro +wmlib /man/2/draw-context +wmlib /man/2/selectfile +wmlib /man/2/tabs +wmlib /man/2/tk +wmlib /man/2/translate +wmlib /man/2/wmlib +wmlib /man/2/wmsrv +wmlib /man/9/0intro +wmlib.m /man/2/wmlib +wmmash /man/1/mash-tk +wmrect /man/1/wm +wmrect /man/2/tk +wmsetup /man/1/toolbar +wmsh /man/2/plumbmsg +wmsrv /man/2/wmsrv +wmsrv's /man/2/wmsrv +wmsrv.b /man/2/wmsrv +wmsrv.m /man/2/wmsrv +wname /man/10/styx +wname /man/5/0intro +wname /man/5/walk +won't /man/9/image +won't /man/9/scale +wordend /man/9/text +wordstart /man/9/text +wordy /man/1/alphabet-abc +wordy /man/1/alphabet-grid +workdir /man/1/plumb +workdir /man/1/pwd +workdir /man/2/names +workdir /man/2/plumbmsg +workdir /man/2/sys-fd2path +workdir /man/2/workdir +workdir.b /man/2/workdir +workdir.m /man/2/workdir +worked /man/1/blur +worker /man/1/alphabet-abc +worker /man/1/alphabet-grid +workflow /man/1/alphabet-abc +workflow /man/1/alphabet-grid +working /man/1/acme +working /man/1/blur +working /man/1/cd +working /man/1/itest +working /man/1/limbo +working /man/1/pwd +working /man/2/ip +working /man/2/sexprs +working /man/2/spree +working /man/2/sys-0intro +working /man/2/sys-chdir +working /man/2/sys-pctl +working /man/2/workdir +working /man/3/cmd +working /man/3/prog +working /man/6/namespace +working /man/6/plumbing +working /man/6/sexprs +works /man/1/blur +works /man/1/cp +works /man/1/sh-csv +works /man/1/sh-sexprs +works /man/1/units +works /man/10/plan9.ini +works /man/10/print +works /man/2/disks +works /man/2/hash +works /man/2/scsiio +works /man/4/ftpfs +works /man/6/image +works /man/6/namespace +works /man/6/ndb +works /man/8/ping +works /man/8/prep +workshop /man/2/ubfa +workshop /man/6/ubfa +worlds /man/3/fs +worrying /man/1/sh-regex +worse /man/1/miniterm +worth /man/1/sh-std +worth /man/10/qio +worth /man/9/text +wp /man/10/allocb +wq /man/10/acid +wqid /man/10/styx +wqid /man/5/0intro +wrap /man/1/deb +wrap /man/2/print +wrap /man/4/archfs +wrap /man/8/create +wrap /man/9/text +wrap.b /man/8/create +wrapped /man/10/odbc +wrapped /man/2/print +wrapped /man/9/text +wrappers /man/1/wm-sh +wrapping /man/1/cook +wrapping /man/9/text +wraps /man/9/text +wreq /man/2/tk +wreq /man/2/tkclient +writable /man/1/ftest +writable /man/2/styxservers +writable /man/3/ftl +writable /man/4/acme +writable /man/6/keys +writable /man/8/bootpd +write /man/1/0intro +write /man/1/acme +write /man/1/alphabet-fs +write /man/1/alphabet-main +write /man/1/bind +write /man/1/charon +write /man/1/chmod +write /man/1/cp +write /man/1/fs +write /man/1/ftest +write /man/1/grid-monitor +write /man/1/kill +write /man/1/limbo +write /man/1/ls +write /man/1/mash +write /man/1/mdb +write /man/1/mkdir +write /man/1/mv +write /man/1/rm +write /man/1/sh-file2chan +write /man/1/zeros +write /man/10/5cv +write /man/10/allocb +write /man/10/dev +write /man/10/devattach +write /man/10/dmainit +write /man/10/eve +write /man/10/kstrip +write /man/10/odbc +write /man/10/parsecmd +write /man/10/print +write /man/10/qio +write /man/10/qlock +write /man/10/styxserver +write /man/2/bufio +write /man/2/bufio-chanfill +write /man/2/dbm +write /man/2/diskblocks +write /man/2/draw-context +write /man/2/draw-display +write /man/2/draw-image +write /man/2/drawmux +write /man/2/exception +write /man/2/filter +write /man/2/imagefile +write /man/2/keyring-0intro +write /man/2/keyring-auth +write /man/2/plumbmsg +write /man/2/spree +write /man/2/styx +write /man/2/styxpersist +write /man/2/styxservers +write /man/2/sys-0intro +write /man/2/sys-file2chan +write /man/2/sys-open +write /man/2/sys-pipe +write /man/2/sys-read +write /man/2/sys-remove +write /man/2/sys-stat +write /man/2/ubfa +write /man/2/venti +write /man/3/boot +write /man/3/cap +write /man/3/cmd +write /man/3/cons +write /man/3/dbg +write /man/3/draw +write /man/3/ds +write /man/3/eia +write /man/3/ether +write /man/3/flash +write /man/3/fpga +write /man/3/fs +write /man/3/ftl +write /man/3/gpio +write /man/3/i2c +write /man/3/indir +write /man/3/ip +write /man/3/lpt +write /man/3/mnt +write /man/3/mpeg +write /man/3/pbus +write /man/3/pipe +write /man/3/pnp +write /man/3/prof +write /man/3/sd +write /man/3/sign +write /man/3/srv +write /man/3/ssl +write /man/3/tinyfs +write /man/3/tls +write /man/3/usb +write /man/3/vid +write /man/4/acme +write /man/4/dbfs +write /man/4/factotum +write /man/4/iostats +write /man/4/keysrv +write /man/4/logfile +write /man/4/memfs +write /man/4/palmsrv +write /man/4/ramfile +write /man/4/registry +write /man/4/spree +write /man/5/0intro +write /man/5/attach +write /man/5/open +write /man/5/read +write /man/5/remove +write /man/5/stat +write /man/6/audio +write /man/6/users +write /man/7/db +write /man/8/bootpd +write /man/8/collabsrv +write /man/8/cs +write /man/8/dhcp +write /man/8/dns +write /man/8/kfscmd +write /man/8/mkfs +write /man/8/prep +write.2 /man/10/mk +writeauthinfo /man/2/keyring-0intro +writeauthinfo /man/2/keyring-auth +writeauthinfo /man/2/security-login +writecmd /man/1/sh-file2chan +writeimage /man/2/draw-display +writeimage /man/2/imagefile +writeimage /man/2/pslib +writepixels /man/2/draw-image +writepixels:fn /man/2/draw-image +writer /man/10/qio +writer /man/10/qlock +writer /man/2/bufio-chanfill +writer /man/3/ds +writer /man/3/eia +writer /man/4/lockfs +writers /man/1/cp +writers /man/1/sh +writers /man/1/sh-file2chan +writers /man/1/timestamp +writers /man/10/qio +writers /man/10/qlock +writers /man/3/pipe +writes /man/1/alphabet-abc +writes /man/1/alphabet-fs +writes /man/1/alphabet-grid +writes /man/1/alphabet-main +writes /man/1/auplay +writes /man/1/blur +writes /man/1/cat +writes /man/1/crypt +writes /man/1/disdep +writes /man/1/du +writes /man/1/echo +writes /man/1/fs +writes /man/1/gettar +writes /man/1/netkey +writes /man/1/read +writes /man/1/runas +writes /man/1/sh-file2chan +writes /man/1/sort +writes /man/1/stack +writes /man/1/stream +writes /man/1/tee +writes /man/1/timestamp +writes /man/1/wc +writes /man/1/yacc +writes /man/1/zeros +writes /man/10/5coff +writes /man/10/dev +writes /man/10/devattach +writes /man/10/panic +writes /man/10/print +writes /man/10/qio +writes /man/2/bufio +writes /man/2/dbm +writes /man/2/dhcpclient +writes /man/2/draw-example +writes /man/2/draw-image +writes /man/2/factotum +writes /man/2/format +writes /man/2/keyring-auth +writes /man/2/keyring-getstring +writes /man/2/mpeg +writes /man/2/plumbmsg +writes /man/2/pslib +writes /man/2/security-ssl +writes /man/2/spree +writes /man/2/styxpersist +writes /man/2/sys-0intro +writes /man/2/sys-iounit +writes /man/2/sys-pipe +writes /man/2/sys-print +writes /man/2/sys-read +writes /man/2/tftp +writes /man/2/ubfa +writes /man/2/venti +writes /man/3/arch +writes /man/3/audio +writes /man/3/boot +writes /man/3/cmd +writes /man/3/ds +writes /man/3/flash +writes /man/3/ftl +writes /man/3/i2c +writes /man/3/i82365 +writes /man/3/ip +writes /man/3/pipe +writes /man/3/snarf +writes /man/3/ssl +writes /man/3/tls +writes /man/3/usb +writes /man/3/vid +writes /man/4/acme +writes /man/4/dbfs +writes /man/4/factotum +writes /man/4/iostats +writes /man/4/keysrv +writes /man/4/logfile +writes /man/4/spree +writes /man/5/0intro +writes /man/5/stat +writes /man/8/changelogin +writes /man/8/dhcp +writes /man/8/mkfs +writes /man/8/rdbgsrv +writes /man/8/signer +writes /man/8/styxchat +writes /man/8/styxmon +writes /man/8/touchcal +writeubf /man/2/ubfa +writing /man/1/alphabet-main +writing /man/1/charon +writing /man/1/crypt +writing /man/1/kill +writing /man/1/limbo +writing /man/1/sh +writing /man/1/sh-alphabet +writing /man/1/timestamp +writing /man/1/wm-sh +writing /man/10/odbc +writing /man/10/plan9.ini +writing /man/10/qio +writing /man/2/bufio +writing /man/2/dbm +writing /man/2/diskblocks +writing /man/2/disks +writing /man/2/env +writing /man/2/imagefile +writing /man/2/keyring-crypt +writing /man/2/keyring-getmsg +writing /man/2/palmfile +writing /man/2/plumbmsg +writing /man/2/pslib +writing /man/2/security-0intro +writing /man/2/styxservers +writing /man/2/sys-0intro +writing /man/2/sys-bind +writing /man/2/sys-dial +writing /man/2/sys-export +writing /man/2/sys-file2chan +writing /man/2/sys-open +writing /man/2/sys-pipe +writing /man/2/sys-print +writing /man/2/wmsrv +writing /man/3/cap +writing /man/3/cmd +writing /man/3/cons +writing /man/3/draw +writing /man/3/ds +writing /man/3/dup +writing /man/3/env +writing /man/3/ether +writing /man/3/flash +writing /man/3/i82365 +writing /man/3/ip +writing /man/3/kprof +writing /man/3/logfs +writing /man/3/lpt +writing /man/3/pipe +writing /man/3/plap +writing /man/3/pointer +writing /man/3/prog +writing /man/3/rtc +writing /man/3/sd +writing /man/3/sign +writing /man/3/snarf +writing /man/3/ssl +writing /man/3/tls +writing /man/3/touch +writing /man/3/vga +writing /man/4/acme +writing /man/4/dbfs +writing /man/4/factotum +writing /man/4/keyfs +writing /man/4/logfile +writing /man/4/palmsrv +writing /man/4/registry +writing /man/5/0intro +writing /man/5/read +writing /man/6/ubfa +writing /man/8/collabsrv +writing /man/8/mkfs +writing /man/8/rdbgsrv +written /man/1/0intro +written /man/1/acme +written /man/1/alphabet-fs +written /man/1/asm +written /man/1/auplay +written /man/1/cook +written /man/1/fs +written /man/1/itest +written /man/1/logon +written /man/1/man +written /man/1/mc +written /man/1/secstore +written /man/1/sh-file2chan +written /man/1/sh-std +written /man/1/timestamp +written /man/1/tiny +written /man/1/tktester +written /man/1/wc +written /man/1/webgrab +written /man/1/wm-sh +written /man/10/allocb +written /man/10/ar +written /man/10/dev +written /man/10/devattach +written /man/10/inb +written /man/10/kproc +written /man/10/kstrip +written /man/10/lock +written /man/10/odbc +written /man/10/parsecmd +written /man/10/print +written /man/10/qio +written /man/10/styxserver +written /man/10/xalloc +written /man/2/0intro +written /man/2/bufio +written /man/2/bufio-chanfill +written /man/2/dbm +written /man/2/dhcpclient +written /man/2/draw-image +written /man/2/ether +written /man/2/format +written /man/2/keyring-0intro +written /man/2/keyring-getstring +written /man/2/palmfile +written /man/2/plumbmsg +written /man/2/registries +written /man/2/scsiio +written /man/2/secstore +written /man/2/security-ssl +written /man/2/styx +written /man/2/sys-0intro +written /man/2/sys-dial +written /man/2/sys-file2chan +written /man/2/sys-iounit +written /man/2/sys-pipe +written /man/2/sys-read +written /man/2/venti +written /man/2/xml +written /man/3/audio +written /man/3/boot +written /man/3/cmd +written /man/3/cons +written /man/3/draw +written /man/3/eia +written /man/3/flash +written /man/3/fpga +written /man/3/ftl +written /man/3/gpio +written /man/3/i2c +written /man/3/ip +written /man/3/logfs +written /man/3/lpt +written /man/3/mpeg +written /man/3/pbus +written /man/3/pipe +written /man/3/pnp +written /man/3/prof +written /man/3/prog +written /man/3/sign +written /man/3/snarf +written /man/3/ssl +written /man/3/touch +written /man/3/usb +written /man/3/vga +written /man/3/vid +written /man/4/9srvfs +written /man/4/acme +written /man/4/dbfs +written /man/4/factotum +written /man/4/keyfs +written /man/4/logfile +written /man/4/ramfile +written /man/4/registry +written /man/4/spree +written /man/5/attach +written /man/5/open +written /man/5/read +written /man/6/attrdb +written /man/6/audio +written /man/6/image +written /man/6/ndb +written /man/6/sbl +written /man/6/sexprs +written /man/8/collabsrv +written /man/8/cs +written /man/8/ftl +written /man/8/getauthinfo +written /man/8/httpd +written /man/8/prep +written /man/8/rstyxd +written /man/8/styxchat +written /man/9/1copyright +written /man/9/grid +wrn /man/1/sh-test +wrong /man/1/miniterm +wrong /man/10/print +wrong /man/2/attrdb +wrong /man/2/dhcpclient +wrong /man/3/ip +wrong /man/4/keysrv +wrong /man/9/variable +wrtog /man/3/usb +ws1 /man/2/xml +ws2 /man/2/xml +wstat /man/10/dev +wstat /man/10/devattach +wstat /man/10/styxserver +wstat /man/2/palmfile +wstat /man/2/styx +wstat /man/2/styxservers-nametree +wstat /man/2/sys-0intro +wstat /man/2/sys-stat +wstat /man/3/logfs +wstat /man/3/srv +wstat /man/4/kfs +wstat /man/5/0intro +wstat /man/5/stat +wstat /man/5/walk +wstate /man/2/styxservers-nametree +wtype /man/2/sh +wunlock /man/10/qlock +ww /man/1/limbo +www /man/1/webgrab +www.innerhost.vitanuova.com /man/1/webgrab +www.minitelfr.com /man/1/miniterm +www.sics.se /man/6/ubfa +www.vitanuova.com /man/1/webgrab +www.w3.org /man/2/w3c-css +www.w3.org /man/2/w3c-xpointers +www.w3.org /man/2/xml +x,y /man/9/canvas +x.509.v3 /man/1/charon +x.scrollbar /man/9/options +x.tab.h /man/10/mk +x.tab.h:pcmp /man/10/mk +xalloc /man/10/malloc +xalloc /man/10/xalloc +xamount /man/9/canvas +xbitmap /man/1/charon +xbmreader /man/2/imagefile +xd /man/1/xd +xd.b /man/1/xd +xfree /man/10/xalloc +xinches /man/2/print +xlate /man/2/translate +xlaten /man/2/translate +xmagic /man/2/dis +xmagic /man/6/dis +xml /man/1/ebook +xml /man/2/encoding +xml /man/2/sexprs +xml /man/2/w3c-xpointers +xml /man/2/xml +xml /man/6/sexprs +xml's /man/2/w3c-xpointers +xml's /man/2/xml +xml.b /man/2/xml +xml.m /man/2/xml +xmlns /man/2/w3c-xpointers +xn /man/6/font +xn /man/9/canvas +xoff /man/3/eia +xon /man/3/eia +xor /man/1/fc +xor /man/1/sh-expr +xor /man/8/signer +xored /man/2/crc +xorigin /man/9/canvas +xors /man/2/keyring-rc4 +xp /man/10/ntsrv +xp /man/3/fs +xpath /man/2/w3c-xpointers +xpath.e /man/2/w3c-xpointers +xpath.path /man/2/w3c-xpointers +xpath.str /man/2/w3c-xpointers +xpath.var /man/2/w3c-xpointers +xpointer /man/2/w3c-xpointers +xpointers /man/2/w3c-xpointers +xpointers.b /man/2/w3c-xpointers +xpointers.m /man/2/w3c-xpointers +xprint /man/2/sys-print +xptr /man/2/w3c-xpointers +xrect /man/2/draw-rect +xs /man/2/alphabet-intro +xscale /man/9/canvas +xscrollcommand /man/9/canvas +xscrollcommand /man/9/entry +xscrollcommand /man/9/listbox +xscrollcommand /man/9/options +xscrollcommand /man/9/text +xscrollicrement /man/9/canvas +xscrollincrement /man/9/canvas +xsize /man/1/emu +xspanalloc /man/10/xalloc +xstep /man/2/w3c-xpointers +xuejia /man/1/idea +xview /man/9/canvas +xview /man/9/entry +xview /man/9/listbox +xview /man/9/scrollbar +xview /man/9/text +xx /man/1/fc +xx /man/2/draw-example +xx /man/6/man +xx,yy /man/2/draw-example +xxx /man/10/plan9.ini +xxx /man/6/login +xxxdevtab /man/10/dynld +xxxxx /man/8/bootpd +xy /man/2/draw-pointer +xyeeeeennnnn /man/2/geodesy +xyeeeennnn /man/2/geodesy +xyeeennn /man/2/geodesy +xyeenn /man/2/geodesy +xyen /man/2/geodesy +y.debug /man/1/yacc +y.output /man/1/yacc +y.tab.b /man/1/yacc +y.tab.c /man/10/mk +y.tab.h /man/10/mk +y.tab.m /man/1/yacc +ya /man/6/keyboard +yacc /man/1/yacc +yacc /man/10/mk +yacc.b /man/1/yacc +yaccpar /man/1/yacc +yamount /man/9/canvas +yday /man/2/daytime +yellow /man/2/draw-display +yellow /man/2/draw-example +yellow /man/9/types +yellowgreen /man/2/draw-display +yes /man/1/alphabet-fs +yes /man/1/fs +yes /man/6/man +yes /man/8/getauthinfo +yes /man/8/signer +yes /man/9/types +yield /man/1/fc +yield /man/1/grep +yield /man/1/sh +yield /man/1/sh-expr +yield /man/1/sh-string +yield /man/1/wm-sh +yield /man/10/acid +yield /man/2/imagefile +yield /man/2/sh +yield /man/2/spki +yield /man/2/sys-0intro +yield /man/2/wmsrv +yield /man/4/spree +yielded /man/1/sh-expr +yielded /man/1/sh-std +yielding /man/1/sh +yielding /man/1/sh-regex +yielding /man/1/sh-std +yielding /man/3/dbg +yielding /man/3/prog +yields /man/1/alphabet-fs +yields /man/1/deb +yields /man/1/fs +yields /man/1/ftest +yields /man/1/sh +yields /man/1/sh-alphabet +yields /man/1/sh-csv +yields /man/1/sh-expr +yields /man/1/sh-file2chan +yields /man/1/sh-regex +yields /man/1/sh-sexprs +yields /man/1/sh-std +yields /man/1/sh-string +yields /man/1/sh-tk +yields /man/2/asn1 +yields /man/2/cfg +yields /man/2/sets +yields /man/2/sexprs +yields /man/2/spree +yields /man/2/wait +yields /man/2/xml +yields /man/3/dbg +yields /man/3/draw +yields /man/3/pnp +yields /man/3/sign +yields /man/4/dbfs +yields /man/4/spree +yields /man/5/stat +yields /man/6/keyboard +yields /man/8/ping +yinches /man/2/print +yn /man/2/math-elem +yn /man/9/canvas +yorigin /man/9/canvas +you'll /man/9/canvas +yposition /man/9/menu +yscale /man/9/canvas +yscrollcommand /man/9/canvas +yscrollcommand /man/9/listbox +yscrollcommand /man/9/options +yscrollcommand /man/9/text +yscrollicrement /man/9/canvas +yscrollincrement /man/9/canvas +ysize /man/1/emu +yuyv /man/3/vga +yview /man/9/canvas +yview /man/9/listbox +yview /man/9/scrollbar +yview /man/9/text +ywjj /man/2/sexprs +yy /man/2/draw-example +yylex /man/1/yacc +yylex.error /man/1/yacc +yylex.lex /man/1/yacc +yyparse /man/1/yacc +yystype /man/1/yacc +yyyy /man/2/spki +za /man/1/tr +za /man/2/string +za /man/6/plumbing +za /man/6/sexprs +zdiv /man/2/math-fp +zerodir /man/2/styxservers-nametree +zerodir /man/2/sys-stat +zeroes /man/10/allocb +zeroes /man/2/draw-display +zeroes /man/2/ip +zeroes /man/6/keytext +zeroes /man/6/sexprs +zeroing /man/3/kprof +zeropower /man/3/rtc +zeros.b /man/1/zeros +zeroth /man/6/font +zerox /man/1/acme +zeroxed /man/4/acme +zinfandel /man/10/odbc +ziv /man/1/gzip +ziv's /man/6/image +znext /man/2/wmsrv +zone /man/1/date +zone /man/2/daytime +zone /man/2/geodesy +zone /man/6/ndb +zone /man/8/dns +zoom /man/1/wm-misc +zooms /man/1/wm-misc +zorro /man/4/9srvfs +zxnet1 /man/1/miniterm |
