Many small edits.

This commit is contained in:
rsc 2005-01-13 04:49:19 +00:00
parent 741f510ce7
commit c8b6342d3c
160 changed files with 2204 additions and 864 deletions

13
bin/9l
View file

@ -91,6 +91,7 @@ then
do do
eval "have$i() { false; }" eval "have$i() { false; }"
done done
havethread() { false; }
# now find correct order # now find correct order
libsl="" libsl=""
@ -129,6 +130,12 @@ then
fi fi
libsl="$libsl -l9" libsl="$libsl -l9"
# cycle: lib9 expects p9main, which is defined in libthread. oops.
if $havethread
then
libsl="$libsl -lthread"
fi
if [ "x$needdraw" = xtrue ] if [ "x$needdraw" = xtrue ]
then then
if [ "x$X11" = "x" ] if [ "x$X11" = "x" ]
@ -194,9 +201,11 @@ if $verbose
then then
echo $ld -L$PLAN9/lib "$@" $libsl $extralibs echo $ld -L$PLAN9/lib "$@" $libsl $extralibs
fi fi
if ! $ld -L$PLAN9/lib "$@" $libsl $extralibs if $ld -L$PLAN9/lib "$@" $libsl $extralibs
then then
exit 0
else
rm -f $target rm -f $target
exit 1 exit 1
fi fi
exit 0

View file

@ -24,7 +24,7 @@ ifs='
'{ '{
files=`{echo $*} files=`{echo $*}
} }
9grep -h '\$LIST|\|reference|^\.(EQ|TS|\[|PS|IS|GS|G1|GD|PP|BM|LP|BP|PI|cstart|begin|TH...)|^\.P$' $* | 9 grep -h '\$LIST|\|reference|^\.(EQ|TS|\[|PS|IS|GS|G1|GD|PP|BM|LP|BP|PI|cstart|begin|TH...)|^\.P$' $* |
sort -u | sort -u |
awk ' awk '
BEGIN { files = "'$files'" } BEGIN { files = "'$files'" }

2
bin/g
View file

@ -34,4 +34,4 @@ case $# in
files="$@" files="$@"
esac esac
exec grep -n $flags -- "$pattern" $files /dev/null exec 9 grep -n $flags -- "$pattern" $files /dev/null

2
bin/lc
View file

@ -1,3 +1,3 @@
#!/bin/sh #!/bin/sh
ls "$@" | mc 9 ls "$@" | mc

12
bin/man
View file

@ -60,11 +60,11 @@ if(~ $#sec 0) {
} }
ix=$S/man$sec/INDEX ix=$S/man$sec/INDEX
if(~ $#* 1) pat='^'^$1^' ' if(~ $#* 1) pat='^'^$1^' '
if not pat='^('^`{echo $* | 9sed 's/ /|/g'}^') ' if not pat='^('^`{echo $* | 9 sed 's/ /|/g'}^') '
fils=() fils=()
for(i in $S/man$sec){ for(i in $S/man$sec){
if(/bin/test -f $i/INDEX){ if(test -f $i/INDEX){
try=`{grep $pat $i/INDEX | 9sed 's/^[^ ]* //'} try=`{grep $pat $i/INDEX | 9 sed 's/^[^ ]* //'}
if(! ~ $#try 0) if(! ~ $#try 0)
fils=($fils $i/$try) fils=($fils $i/$try)
} }
@ -75,7 +75,7 @@ if(~ $#fils 0) {
for(i) { for(i) {
for(n in $sec) { for(n in $sec) {
try=$S/man$n/$i.$n* try=$S/man$n/$i.$n*
if (/bin/test -f $try) if (test -f $try)
fils=($fils $try) fils=($fils $try)
} }
} }
@ -85,7 +85,7 @@ if(~ $#fils 0) {
} }
} }
for(i in $fils) { for(i in $fils) {
if(! /bin/test -f $i) if(! test -f $i)
echo need $i >[1=2] echo need $i >[1=2]
if not { if not {
switch($cmd) { switch($cmd) {
@ -99,7 +99,7 @@ for(i in $fils) {
roff t $i |tr2post |psfonts |page roff t $i |tr2post |psfonts |page
case n case n
roff n $i | 9sed ' roff n $i | 9 sed '
${ ${
/^$/p /^$/p
} }

View file

@ -5,3 +5,9 @@
wget -O- http://pdos.lcs.mit.edu/~rsc/software/plan9/pgw.tar.bz2| wget -O- http://pdos.lcs.mit.edu/~rsc/software/plan9/pgw.tar.bz2|
bunzip2| bunzip2|
tar xf - tar xf -
# This is the Project Gutenberg original Roget's thesaurus
wget -O- http://pdos.lcs.mit.edu/~rsc/software/plan9/roget.tar.bz2|
bunzip2|
tar xf -

153
dist/checkman.awk vendored
View file

@ -41,8 +41,10 @@ BEGIN {
Omitman["nm(1)"] = 1 Omitman["nm(1)"] = 1
Omitman["prof(1)"] = 1 Omitman["prof(1)"] = 1
Omitman["pwd(1)"] = 1 Omitman["pwd(1)"] = 1
Omitman["qiv(1)"] = 1
Omitman["sh(1)"] = 1 Omitman["sh(1)"] = 1
Omitman["ssh(1)"] = 1 Omitman["ssh(1)"] = 1
Omitman["stty(1)"] = 1
Omitman["tar(1)"] = 1 Omitman["tar(1)"] = 1
Omitman["tex(1)"] = 1 Omitman["tex(1)"] = 1
Omitman["unutf(1)"] = 1 Omitman["unutf(1)"] = 1
@ -50,6 +52,7 @@ BEGIN {
Omitman["access(2)"] = 1 Omitman["access(2)"] = 1
Omitman["brk(2)"] = 1 Omitman["brk(2)"] = 1
Omitman["chdir(2)"] = 1
Omitman["close(2)"] = 1 Omitman["close(2)"] = 1
Omitman["connect(2)"] = 1 Omitman["connect(2)"] = 1
Omitman["fork(2)"] = 1 Omitman["fork(2)"] = 1
@ -90,10 +93,10 @@ BEGIN {
# don't need documentation for these in bin # don't need documentation for these in bin
Omitted[".cvsignore"] = 1 Omitted[".cvsignore"] = 1
Omitted["Getdir"] = 1 Omitted["Getdir"] = 1
Omitted["9grep"] = 1 # is in grep(1) Omitted["tcolors"] = 1
Omitted["9sed"] = 1 # is in sed(1) Omitted["tref"] = 1
Omitted["9lex"] = 1 # is in lex(1) Omitted["unutf"] = 1
Omitted["9yacc"] = 1 # is in yacc(1) Omitted["vtdump"] = 1
# not for users # not for users
Omittedlib["creadimage"] = 1 Omittedlib["creadimage"] = 1
@ -198,56 +201,66 @@ BEGIN {
Renamelib["regsub9"] = "regsub" Renamelib["regsub9"] = "regsub"
Renamelib["rregexec9"] = "rregexec" Renamelib["rregexec9"] = "rregexec"
Renamelib["rregsub9"] = "rregsub" Renamelib["rregsub9"] = "rregsub"
lastline = "XXX";
lastfile = FILENAME;
} }
FNR==1 { FNR==1 {
n = length(FILENAME) if(lastline == ""){
nam = FILENAME # screws up troff headers
if(nam ~ /\.html$/) print lastfile ":$ is a blank line"
next }
if(nam !~ /^man\/man(.*)\/(.*)\.(.*)$/){
print "nam", nam, "not of form [0-9][0-9]?/*" n = length(FILENAME)
next nam = FILENAME
} if(nam ~ /\.html$/)
nam = substr(nam, 8) next
gsub("[/.]", " ", nam); if(nam !~ /^man\/man(.*)\/(.*)\.(.*)$/){
n = split(nam, a) print "nam", nam, "not of form [0-9][0-9]?/*"
sec = a[1] next
name = a[2] }
section = a[3] nam = substr(nam, 8)
if($1 != ".TH" || NF != 3) gsub("[/.]", " ", nam);
print "First line of", FILENAME, "not a proper .TH" n = split(nam, a)
else if(($2 != toupper(name) || substr($3, 1, length(sec)) != sec || $3 != toupper(section)) \ sec = a[1]
&& ($2!="INTRO" || name!="0intro") \ name = a[2]
&& (name !~ /^9/ || $2!=toupper(substr(name, 2)))){ section = a[3]
print ".TH of", FILENAME, "doesn't match filename" if($1 != ".TH" || NF != 3)
}else print "First line of", FILENAME, "not a proper .TH"
Pages[tolower($2) "(" tolower($3) ")"] = 1 else if(($2 != toupper(name) || substr($3, 1, length(sec)) != sec || $3 != toupper(section)) \
Sh = 0 && ($2!="INTRO" || name!="0intro") \
&& (name !~ /^9/ || $2!=toupper(substr(name, 2)))){
print ".TH of", FILENAME, "doesn't match filename"
}else
Pages[tolower($2) "(" tolower($3) ")"] = 1
Sh = 0
} }
{ lastline=$0; lastfile=FILENAME; }
$1 == ".SH" { $1 == ".SH" {
if(inex) if(inex)
print "Unterminated .EX in", FILENAME, ":", $0 print "Unterminated .EX in", FILENAME, ":", $0
inex = 0; inex = 0;
if (substr($2, 1, 1) == "\"") { if (substr($2, 1, 1) == "\"") {
if (NF == 2) { if (NF == 2) {
print "Unneeded quote in", FILENAME, ":", $0 print "Unneeded quote in", FILENAME, ":", $0
$2 = substr($2, 2, length($2)-2) $2 = substr($2, 2, length($2)-2)
} else if (NF == 3) { } else if (NF == 3) {
$2 = substr($2, 2) substr($3, 1, length($3)-1) $2 = substr($2, 2) substr($3, 1, length($3)-1)
NF = 2 NF = 2
}
} }
if(Sh == 0 && $2 != "NAME") }
print FILENAME, "has no .SH NAME" if(Sh == 0 && $2 != "NAME")
w = Weight[$2] print FILENAME, "has no .SH NAME"
if (w) { w = Weight[$2]
if (w < Sh) if (w) {
print "Heading", $2, "out of order in", FILENAME if (w < Sh)
Sh += w print "Heading", $2, "out of order in", FILENAME
} Sh += w
sh = $2 }
sh = $2
} }
$1 == ".EX" { $1 == ".EX" {
@ -257,43 +270,53 @@ $1 == ".EX" {
} }
$1 == ".EE" { $1 == ".EE" {
if(!inex) if(!inex)
print "Bad .EE in", FILENAME ":" FNR ":", $0 print "Bad .EE in", FILENAME ":" FNR ":", $0
inex = 0; inex = 0;
} }
$1 == ".TF" { $1 == ".TF" {
smallspace = 1 smallspace = 1
} }
$1 == ".PD" || $1 == ".SH" || $1 == ".SS" || $1 == ".TH" { $1 == ".PD" || $1 == ".SH" || $1 == ".SS" || $1 == ".TH" {
smallspace = 0 smallspace = 0
} }
$1 == ".RE" { $1 == ".RE" {
lastre = 1 lastre = 1
} }
$1 == ".PP" { $1 == ".PP" {
if(smallspace && !lastre) if(smallspace && !lastre)
print "Possible missing .PD at " FILENAME ":" FNR print "Possible missing .PD at " FILENAME ":" FNR
smallspace = 0 smallspace = 0
} }
$1 != ".RE" { $1 != ".RE" {
lastre = 0 lastre = 0
}
sh == "BUGS" && $1 == ".br" {
print FILENAME ":" FNR ": .br in BUGS"
}
sh == "SOURCE" && $1 ~ /^\\\*9\// {
s = ENVIRON["PLAN9"] substr($1, 4)
Sources[s] = 1
}
sh == "SOURCE" && $2 ~ /^\\\*9\// {
s = ENVIRON["PLAN9"] substr($2, 4)
Sources[s] = 1
} }
sh == "SOURCE" && $1 ~ /^\// { sh == "SOURCE" && $1 ~ /^\// {
s = $1 Sources[$1] = 1
sub("\\\*9", ENVIRON["PLAN9"], s)
Sources[s] = 1
} }
sh == "SOURCE" && $2 ~ /^\// { sh == "SOURCE" && $2 ~ /^\// {
s = $2 Sources[$2] = 1
sub("\\\*9", ENVIRON["PLAN9"], s)
Sources[s] = 1
} }
$0 ~ /^\.[A-Z].*\([1-9]\)/ { $0 ~ /^\.[A-Z].*\([1-9]\)/ {
@ -319,6 +342,10 @@ $0 ~ /^\.[A-Z].*\([1-9]\)/ {
} }
END { END {
if(lastline == ""){
print lastfile ":$ is a blank line"
}
print "Checking Source References" print "Checking Source References"
cmd = "xargs -n 100 ls -d 2>&1 >/dev/null | sed 's/^ls: / /; s/: .*//'" cmd = "xargs -n 100 ls -d 2>&1 >/dev/null | sed 's/^ls: / /; s/: .*//'"
for (i in Sources) { for (i in Sources) {

View file

@ -358,10 +358,8 @@ extern double atof(char*); <stdlib.h>
extern int p9atoi(char*); extern int p9atoi(char*);
extern long p9atol(char*); extern long p9atol(char*);
extern vlong p9atoll(char*); extern vlong p9atoll(char*);
extern double charstod(int(*)(void*), void*); extern double fmtcharstod(int(*)(void*), void*);
extern char* cleanname(char*); extern char* cleanname(char*);
extern int p9decrypt(void*, void*, int);
extern int p9encrypt(void*, void*, int);
extern int dec64(uchar*, int, char*, int); extern int dec64(uchar*, int, char*, int);
extern int enc64(char*, int, uchar*, int); extern int enc64(char*, int, uchar*, int);
extern int dec32(uchar*, int, char*, int); extern int dec32(uchar*, int, char*, int);
@ -386,7 +384,6 @@ extern void p9longjmp(p9jmp_buf, int);
extern char* mktemp(char*); extern char* mktemp(char*);
extern int opentemp(char*); extern int opentemp(char*);
/* extern double modf(double, double*); <math.h> */ /* extern double modf(double, double*); <math.h> */
extern int netcrypt(void*, void*);
extern void p9notejmp(void*, p9jmp_buf, int); extern void p9notejmp(void*, p9jmp_buf, int);
extern void perror(const char*); extern void perror(const char*);
extern int postnote(int, int, char *); extern int postnote(int, int, char *);
@ -397,14 +394,12 @@ extern double p9pow10(int);
#define p9setjmp(b) sigsetjmp((void*)(b), 1) #define p9setjmp(b) sigsetjmp((void*)(b), 1)
/* /*
* <stdlib.h> * <stdlib.h>
extern double strtod(char*, char**);
extern long strtol(char*, char**, int); extern long strtol(char*, char**, int);
extern ulong strtoul(char*, char**, int); extern ulong strtoul(char*, char**, int);
extern vlong strtoll(char*, char**, int); extern vlong strtoll(char*, char**, int);
extern uvlong strtoull(char*, char**, int); extern uvlong strtoull(char*, char**, int);
*/ */
extern void sysfatal(char*, ...); extern void sysfatal(char*, ...);
extern void p9syslog(int, char*, char*, ...);
extern long p9time(long*); extern long p9time(long*);
/* extern int tolower(int); <ctype.h> */ /* extern int tolower(int); <ctype.h> */
/* extern int toupper(int); <ctype.h> */ /* extern int toupper(int); <ctype.h> */
@ -426,9 +421,10 @@ extern void needstack(int);
#define putenv p9putenv #define putenv p9putenv
#define notejmp p9notejmp #define notejmp p9notejmp
#define jmp_buf p9jmp_buf #define jmp_buf p9jmp_buf
#define syslog p9syslog
#define time p9time #define time p9time
#define pow10 p9pow10 #define pow10 p9pow10
#define strtod fmtstrtod
#define charstod fmtcharstod
#endif #endif
/* /*
@ -527,7 +523,6 @@ extern int p9announce(char*, char*);
extern int p9dial(char*, char*, char*, int*); extern int p9dial(char*, char*, char*, int*);
extern int p9dialparse(char *ds, char **net, char **unixa, u32int *ip, int *port); extern int p9dialparse(char *ds, char **net, char **unixa, u32int *ip, int *port);
extern void p9setnetmtpt(char*, int, char*); extern void p9setnetmtpt(char*, int, char*);
extern int p9hangup(int);
extern int p9listen(char*, char*); extern int p9listen(char*, char*);
extern char* p9netmkaddr(char*, char*, char*); extern char* p9netmkaddr(char*, char*, char*);
extern int p9reject(int, char*, char*); extern int p9reject(int, char*, char*);
@ -537,7 +532,6 @@ extern int p9reject(int, char*, char*);
#define announce p9announce #define announce p9announce
#define dial p9dial #define dial p9dial
#define setnetmtpt p9setnetmtpt #define setnetmtpt p9setnetmtpt
#define hangup p9hangup
#define listen p9listen #define listen p9listen
#define netmkaddr p9netmkaddr #define netmkaddr p9netmkaddr
#define reject p9reject #define reject p9reject
@ -614,6 +608,7 @@ extern void freenetconninfo(NetConnInfo*);
#define QTEXCL 0x20 /* type bit for exclusive use files */ #define QTEXCL 0x20 /* type bit for exclusive use files */
#define QTMOUNT 0x10 /* type bit for mounted channel */ #define QTMOUNT 0x10 /* type bit for mounted channel */
#define QTAUTH 0x08 /* type bit for authentication file */ #define QTAUTH 0x08 /* type bit for authentication file */
#define QTLINK 0x04 /* symbolic link */
#define QTFILE 0x00 /* plain file */ #define QTFILE 0x00 /* plain file */
/* bits in Dir.mode */ /* bits in Dir.mode */
@ -622,6 +617,7 @@ extern void freenetconninfo(NetConnInfo*);
#define DMEXCL 0x20000000 /* mode bit for exclusive use files */ #define DMEXCL 0x20000000 /* mode bit for exclusive use files */
#define DMMOUNT 0x10000000 /* mode bit for mounted channel */ #define DMMOUNT 0x10000000 /* mode bit for mounted channel */
#define DMAUTH 0x08000000 /* mode bit for authentication file */ #define DMAUTH 0x08000000 /* mode bit for authentication file */
#define DMLINK 0x04000000 /* mode bit for symbolic link */
#define DMREAD 0x4 /* mode bit for read permission */ #define DMREAD 0x4 /* mode bit for read permission */
#define DMWRITE 0x2 /* mode bit for write permission */ #define DMWRITE 0x2 /* mode bit for write permission */
#define DMEXEC 0x1 /* mode bit for execute permission */ #define DMEXEC 0x1 /* mode bit for execute permission */

View file

@ -34,11 +34,6 @@ void threadnotify(int(*f)(void*,char*), int);
void threaddaemonize(void); void threaddaemonize(void);
*/ */
/*
* clumsy linker hack
*/
void threadlinklibrary(void);
/* /*
* per proc and thread data * per proc and thread data
*/ */

View file

@ -4005,3 +4005,41 @@ object-oriented design is the roman numerals of computing. - rob
Java is the f*cking COBOL of the 90s, and future generations of geeks are going to fly back from Mars to piss on our graves for inflicting it on them. - rasputnik@hellooperator.net Java is the f*cking COBOL of the 90s, and future generations of geeks are going to fly back from Mars to piss on our graves for inflicting it on them. - rasputnik@hellooperator.net
httpd_server* httpd_initialize(char* hostname, httpd_sockaddr* sa4P, httpd_sockaddr* sa6P, unsigned short port, char* cgi_pattern, int cgi_limit, char* charset, char* p3p, int max_age, char* cwd, int no_log, FILE* logfp, int no_symlink_check, int vhost, int global_passwd, char* url_pattern, char* local_pattern, int no_empty_referers ) httpd_server* httpd_initialize(char* hostname, httpd_sockaddr* sa4P, httpd_sockaddr* sa6P, unsigned short port, char* cgi_pattern, int cgi_limit, char* charset, char* p3p, int max_age, char* cwd, int no_log, FILE* logfp, int no_symlink_check, int vhost, int global_passwd, char* url_pattern, char* local_pattern, int no_empty_referers )
it's easier to post to 9fans than to think. - boyd it's easier to post to 9fans than to think. - boyd
We assume familiarity with Rubik's Cube, the delights of which cannot be presented adequately in a textual description! - an algorithms textbook
If you are idle for more than 1000 hours, the system will log you out. Please save reviews frequently.
We lead by following standards. - sape
-bash: /home/r/.bash_logout: Permission denied
I am he as you are he as you are me and we are all together. - forsyth after Lennon on authentication
Network services at the Murray Hill, NJ, location (100001) will be unavailable due to UPS (Uninterrupted Power Supply) maintenance from 8:00 p.m. EDT on Saturday, June 26, to 4:00 a.m. EDT on Sunday, June 27.
Don't show this message again.
Service error -27.
Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defence against complexity. - David Gelernter
Zatoichi: in theaters December 31, 1969.
recordio.h:992: type `__true_type' is not a base type for type `__false_type'
Telephone number has to be 10 numbers. For example, enter '8002158482'. Please contact us at 1-800-215-8482 for any assitance.
No one but a theorist believes his theory; everyone puts faith in a laboratory result but the experimenter himself. - Einstein
(Okay, Plan 9 isn't Linux, but it's a close relative).
Tux is not cute. Tux has the expression of someone right after knitting needles have been used to scramble the front side of their cerebral cortex. Tux scares me. - Ron Minnich
Setting up your SIP account will allow you to call both other SIP users as well as pstn phones. - Wim Sweldens
ntifs.c(202) : error C2064: term does not evaluate to a function taking 25732904 arguments
There's no "I" in team, but there's both a "me" and an "I" in media.
Oh, I'm sorry, sir, go ahead. I didn't realize you were root.
C++ is to C as lung cancer is to lung.
Warning: bad syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
Those days [of "one tool doing one job well"] are dead and gone and the eulogy was delivered by Perl. - rob
We have found that the Real Player plugin, which is used by the BBC Radio Player, may or may not function fully depending on a combination of what flavour of unix/linux you are using, which browser you are using, which version of browser you are using, and which version of GCC built the plugin during installation.
Sheer [program] size is often an illusion, reflecting only a need for improvement. - Kernighan and Plauger
bootsplash: silent mode.
Trusting every aspect of our lives to a giant computer was the smartest thing we ever did! - Homer
Courts are not equipped to execute the law. - John Ashcroft
The Ken Thompson school of thought on expert systems: there's table lookup, fraud, and grand fraud. - Andrew Hume, quoted in ;login:
I am Davros, my Daleks are my servers and plan9 is my control board mwahahaha - Matt
What's grey? A melted penguin.
Why don't cannibals eat clowns? Because they taste funny.
Two goldfish are in a tank. One turns to the other and says, "Do you know how to drive one of these things?"
What do software pirates say? CD-Arrrrrrr!
Select only drivers expected to compile cleanly. - Linux kernel configuration option
usage: tar [-][{ruxXtcC}acdefhlm{o|S}pqvwLUBDRV{O|K}fb] [dir] [tapefile] [blocksize] file ...
/opt/exp/lib/firefox/bin/run-mozilla.sh: line 451: 16207 Segmentation fault "$prog" ${1+"$@"}
LoadPlugin: failed to initialize shared library /opt/net/exp/lib/mozilla/bin/plugins/j2re1.4.2/plugin/i386/ns610-gcc32/libjavaplugin_oji.so [/opt/net/exp/lib/mozilla/bin/plugins/j2re1.4.2/plugin/i386/ns610-gcc32/libjavaplugin_oji.so: undefined symbol: _ZdlPv]
This 43 minute video FEATURES the 22 year-old, 6'6" (6'11" in heels) 300+ pound, size 14 shoe size Blythe

View file

@ -5,5 +5,6 @@ bin/Getdir
bin/adict bin/adict
bin/doctype bin/doctype
bin/lookman bin/lookman
bin/sig
bin/spell bin/spell
bin/src bin/src

10
man/fonts Executable file
View file

@ -0,0 +1,10 @@
# mkfile rules to get fonts in Lucida Sans.
# if you want to use Times, change these next lines to
# MAN=mantimes
# FONTS=''
MAN=man
FONTS='.fp 1 R LucidaSans
.fp 2 I LucidaSansI
.fp 3 B LucidaSansB
.fp 5 L LucidaCW
'

300
man/man1/0intro.1 Normal file
View file

@ -0,0 +1,300 @@
.TH INTRO 1
.SH NAME
intro \- introduction to Plan 9 from User Space
.SH DESCRIPTION
Plan 9 is a distributed computing environment built
at Bell Labs starting in the late 1980s.
The system can be obtained from Bell Labs at
.B http://plan9.bell-labs.com/plan9
and runs on PCs and a variety of other platforms.
Plan 9 became a convenient platform for experimenting
with new ideas, applications, and services.
.PP
Plan 9 from User Space provides many of the ideas,
applications, and services from Plan 9
on Unix-like systems.
It runs on
FreeBSD (x86),
Linux (x86 and PowerPC),
Mac OS X (PowerPC),
OpenBSD (x86),
and
SunOS (Sparc).
.SS Commands
Plan 9 from User Space expects its own directory tree,
conventionally
.BR /usr/local/plan9 .
When programs need to access files in the tree,
they expect the
.B $PLAN9
environment variable
to contain the name of the root of the tree.
See
.IR install (8)
for details about installation.
.PP
Many of the familiar Unix commands,
for example
.IR cat (1),
.IR ls (1),
and
.IR wc (1),
are present, but in their Plan 9 forms:
.I cat
takes no arguments,
.I ls
does not columnate its output when printing to a terminal,
and
.I wc
counts UTF characters.
In some cases, the differences are quite noticeable:
.IR grep (1)
and
.IR sed (1)
expect Plan 9 regular expressions
(see
.IR regexp (7)),
which are closest to what Unix calls extended regular expressions.
Because of these differences, it is not recommended to put
.B $PLAN9/bin
before the usual system
.B bin
directories in your search path.
Instead, put it at the end of your path and use the
.IR 9 (1)
script when you want to invoke the Plan 9 version of a
traditional Unix command.
.PP
Occasionally the Plan 9 programs have been
changed to adapt to Unix.
.IR Mk (1)
now allows mkfiles to choose their own shell,
and
.IR rc (1)
has a
.I ulimit
builtin and manages
.BR $PATH .
.PP
Many of the graphical programs from Plan 9 are present,
including
.IR sam (1)
and
.IR acme (1).
An X11 window manager
.IR rio (1)
mimics Plan 9's window system, with command windows
implemented by the external program
.IR 9term (1).
Following the style of X Windows, these programs run in new
windows rather than the one in which they are invoked.
They all take a
.B -W
option to specify the size and placement of the new window.
The argument is one of
\fIwidth\^\^\fLx\fI\^\^height\fR,
\fIwidth\^\^\fLx\fI\^\^height\^\^\fL@\fI\^\^xmin\fL,\fIxmax\fR,
\fL'\fIxmin ymin xmax ymax\fL'\fR,
\fRor
\fIxmin\fL,\fIymin\fL,\fIxmax\fL,\fIymax\fR.
.PP
The
.IR plumber (4)
helps to connect the various Plan 9 programs together,
and fittings like
.IR web (1)
connect it to external programs such as web browsers;
one can click on a URL in
.I acme
and see the page load in
.IR Firefox .
.SS User-level file servers
In Plan 9, user-level file servers present file trees via the Plan 9 file protocol, 9P.
Processes can mount arbitrary file servers and customize their own name spaces.
These facilities are used to connect programs. Clients interact
with file servers by reading and writing files.
.PP
This cannot be done directly on Unix.
Instead the servers listen for 9P connections on Unix domain sockets;
clients connect to these sockets and speak 9P directly using the
.IR 9pclient (3)
library.
.IR Intro (4)
tells more of the story.
The effect is not as clean as on Plan 9, but it gets the job done
and still provides a uniform and easy-to-understand mechanism.
The
.IR 9p (1)
client can be used in shell scripts or by hand to carry out
simple interactions with servers.
.SS Programming
The shell scripts
.I 9c
and
.I 9l
(see
.IR 9c (1))
provide a simple interface to the underlying system compiler and linker,
similar to the
.I 2c
and
.I 2l
families on Plan 9.
.I 9c
compiles source files, and
.I 9l
links object files into executables.
When using Plan 9 libraries,
.I 9l
infers the correct set of libraries from the object files,
so that no
.B -l
options are needed.
.PP
The only way to write multithreaded programs is to use the
.IR thread (3)
library.
.IR Rfork (3)
exists but is not as capable as on Plan 9.
There are many unfortunate by necessary preprocessor
diversions to make Plan 9 and Unix libraries coexist.
See
.IR intro (3)
for details.
.PP
The debuggers
.IR acid (1)
and
.IR db (1)
and the debugging library
.IR mach (3)
are works in progress.
They are platform-independent, so that x86 Linux core dumps
can be inspected on PowerPC Mac OS X machines,
but they are also fairly incomplete.
The x86 target is the most mature; initial PowerPC support
exists; and other targets are unimplemented.
The debuggers can only inspect, not manipulate, target processes.
Support for operating system threads and for 64-bit architectures
needs to be rethought.
On x86 Linux systems,
.I acid
and
.I db
can be relied upon to produce reasonable stack traces
(often in cases when GNU
.I gdb
cannot)
and dump data structures,
but that it is the extent to which they have been developed and exercised.
.SS External databases
Some programs rely on large databases that would be
cumbersome to include in every release.
Scripts are provided that download these databases separately.
These databases can be downloaded separately.
See
.B $PLAN9/dict/README
and
.BR $PLAN9/sky/README .
.SS Porting programs
The vast majority of the familiar Plan 9 programs
have been ported, including the Unicode-aware
.IR troff (1).
.PP
Of the more recent additions to Plan 9,
the
.IR secstore (1)
client has been ported, though
.I secstored
has not.
.IR Vac (1)
has been ported, though
.I vacfs
has not.
.IR Factotum
and
.IR venti
are in progress.
.PP
A backup system providing a dump file system built atop Venti
is also in progress.
.SS Porting to new systems
Porting the tree to new operating systems or architectures
should be straightforward, as system-specific code has been
kept to a minimum.
The largest pieces of system-specific code are
.BR <u.h> ,
which must include the right system files and
set up the right integer type definitions,
and
.IR libthread ,
which must implement spin locks, operating system thread
creation, and context switching routines.
Portable implementations of these using
.B <pthread.h>
and
.B <ucontext.h>
already exist. If your system supports them, you may not
need to write any system specific code at all.
.PP
There are other smaller system dependencies,
such as the terminal handling code in
.IR 9term (1)
and the implementation of
.IR getcallerpc (3),
but these are usually simple and are not on the critical
path for getting the system up and running.
.SS SEE ALSO
The system's documentation is these manual pages.
Many of the man pages have been brought from Plan 9,
but they have been updated, and others have been written from scratch.
.PP
The manual pages are in a Unix style tree, with names like
.B $PLAN9/man/man1/cat.1
instead of Plan 9's simpler
.BR $PLAN9/man/1/cat ,
so that the Unix
.IR man (1)
utility can handle it.
Some systems, for example Debian Linux,
deduce the man page locations from the search path, so that
adding
.B $PLAN9/bin
to your path is sufficient to cause
.B $PLAN9/man
to be consulted for manual pages using the system
.IR man .
On other systems, or to look at manual pages with the
same name as a system page,
invoke the Plan 9
.I man
directly, as in
.B 9
.B man
.BR cat .
.PP
The manual sections follow the Unix numbering conventions,
not the Plan 9 ones.
.PP
Section (1) describes general publicly accessible commands.
.PP
Section (3) describes C library functions.
.PP
Section (4) describes user-level file servers.
.PP
Section (7) describes file formats and protocols.
(On Unix, section (5) is technically for file formats but
seems now to be used for describing specific files.)
.PP
Section (8) describes commands used for system administration.
.PP
Section (9p) describes the Plan 9 file protocol 9P.
.SH DIAGNOSTICS
In Plan 9, a program's exit status is an arbitrary text string,
while on Unix it is an integer.
Section (1) of this manual describes commands as though they
exit with string statuses. In fact, exiting with an empty status
corresponds to exiting with status 0,
and exiting with any non-empty string corresponds to exiting with status 1.
See
.IR exits (3).

View file

@ -3,6 +3,14 @@
9c, 9a, 9l, 9ar \- C compiler, assembler, linker, archiver 9c, 9a, 9l, 9ar \- C compiler, assembler, linker, archiver
.SH SYNOPSIS .SH SYNOPSIS
.B 9c .B 9c
[
.B -I
.I path
]
[
.B -D
.I name
]
.I file .I file
\&... \&...
.PP .PP
@ -26,7 +34,7 @@
\&... \&...
] ]
[ [
.BI -l library .BI -l name
\&... \&...
] ]
.PP .PP
@ -49,12 +57,24 @@ One can use them to write portable recipes for mkfiles.
compiles the named C compiles the named C
.I files .I files
into object files for the current system. into object files for the current system.
The system C compiler is invoked with warnings enabled, The system C compiler is invoked with warnings enabled.
with the symbol The
.B -I
option adds
.I path
to the include path,
and the
.B -D
option defines
.I name
in the C preprocessor.
.I 9c
always
defines the symbol
.B PLAN9PORT .B PLAN9PORT
is defined in the C preprocessor, and with defined in the C preprocessor and adds
.B $PLAN9/include .B $PLAN9/include
on the include path. to the include path.
.PP .PP
.I 9c .I 9c
also defines also defines
@ -74,7 +94,7 @@ links the named object files and libraries to create the target executable.
Each Each
.B -l .B -l
option specifies that a library named option specifies that a library named
.BI lib library .a .BI lib name .a
be found and linked. be found and linked.
The The
.B -L .B -L
@ -84,6 +104,30 @@ invokes the system linker with
.B $PLAN9/lib .B $PLAN9/lib
already on the library search path. already on the library search path.
.PP .PP
.I 9l
searches the named objects and libraries for symbols of the form
.BI __p9l_autolib_ name \fR,
which it takes as indication that it should link
.BI $PLAN9/lib/lib name .a
as well.
It also examines such libraries to find their own dependencies.
A single
.B -l
option at the beginning of the command line disables this behavior.
The symbol
.BI __p9l_autolib_ name
is added to an object file by the macro
.B AUTOLIB( name )\fR,
defined in
.B <u.h>.
Header files associated with libraries contain
.B AUTOLIB
annotations; ordinary programs need not use them.
Due to shortcomings in the implementation, a source file may not
contain the same
.B AUTOLIB
statement multiple times.
.PP
.I 9ar .I 9ar
maintains object file archives called libraries. maintains object file archives called libraries.
The exact set of valid command keys varies from system to system, The exact set of valid command keys varies from system to system,
@ -154,7 +198,7 @@ inserts a table of contents, required by the linker, at
the front of the library. the front of the library.
The table of contents is The table of contents is
rebuilt whenever the archive is modified. rebuilt whenever the archive is modified.
.SH EXAMPLE .SH EXAMPLES
.TP .TP
.L .L
9c file1.c file2.c file3.c 9c file1.c file2.c file3.c
@ -167,6 +211,7 @@ Assemble one assembler source file.
.L .L
9ar rvc lib.a file[12].o 9ar rvc lib.a file[12].o
Archive the first two object files into a library. Archive the first two object files into a library.
.TP
.L .L
9l -o prog file3.o file4.o lib.a 9l -o prog file3.o file4.o lib.a
Link the final two object files and any necessary objects from the library Link the final two object files and any necessary objects from the library

View file

@ -110,9 +110,7 @@ cat $HOME/lib/plumbing | 9p write plumb/rules
.PP .PP
To display the contents of the current To display the contents of the current
.IR acme (4) .IR acme (4)
window (specified by the environment variable window:
.BR $winid )
on standard output:
.IP .IP
.EX .EX
9p read acme/$winid/body 9p read acme/$winid/body

View file

@ -1,6 +1,6 @@
.TH 9TERM 1 .TH 9TERM 1
.SH NAME .SH NAME
9term, label \- terminal windows 9term \- terminal windows
.SH SYNOPSIS .SH SYNOPSIS
.B 9term .B 9term
[ [
@ -14,14 +14,11 @@
.I cmd .I cmd
\&... \&...
] ]
.PP
.B label
.I name
.SH DESCRIPTION .SH DESCRIPTION
.I 9term .I 9term
is a terminal window program for the X Window System, is a terminal window program for the X Window System,
providing an interface similar to that used on Plan 9. providing an interface similar to that used on Plan 9.
.SS Commands .SS Command
The The
.I 9term .I 9term
command starts a new window. command starts a new window.
@ -59,15 +56,6 @@ if set; otherwise it uses the graphics system default.
runs the given command in the window, or runs the given command in the window, or
.B $SHELL .B $SHELL
if no command is given. if no command is given.
.PP
The
.I label
command changes a window's identifying name by
echoing a special control code that both
.I 9term
and
.IR xterm (1)
understand.
.SS Text windows .SS Text windows
Characters typed on the keyboard Characters typed on the keyboard
collect in the window to form collect in the window to form
@ -152,7 +140,7 @@ An EOT character (control-D) behaves exactly like newline except
that it is not delivered to a program when read. that it is not delivered to a program when read.
Thus on an empty line an EOT serves to deliver an end-of-file indication: Thus on an empty line an EOT serves to deliver an end-of-file indication:
the read will return zero characters. the read will return zero characters.
Like newlines, unread EOTs may be successfully edited out of the text. .\" Like newlines, unread EOTs may be successfully edited out of the text.
The BS character (control-H) erases the character before the selected text. The BS character (control-H) erases the character before the selected text.
The ETB character (control-W) erases any nonalphanumeric characters, then The ETB character (control-W) erases any nonalphanumeric characters, then
the alphanumeric word just before the selected text. the alphanumeric word just before the selected text.
@ -202,6 +190,10 @@ before (after) the current selection.
relies on the kernel's terminal processing to handle relies on the kernel's terminal processing to handle
EOT and DEL, so the terminal must be set up with EOT EOT and DEL, so the terminal must be set up with EOT
as the ``eof'' character and DEL as the ``intr'' character. as the ``eof'' character and DEL as the ``intr'' character.
.I 9term
runs
.IR stty (1)
to establish this when the terminal is created.
.PP .PP
Normally, written output to a window blocks when Normally, written output to a window blocks when
the text reaches the end of the screen and the terminal the text reaches the end of the screen and the terminal
@ -214,7 +206,7 @@ the terminal settings of the running programs.
Most programs run with echo enabled. Most programs run with echo enabled.
In this mode, In this mode,
.I 9term .I 9term
display and allows editing of the input. displays and allows editing of the input.
Some programs, typically those reading passwords, Some programs, typically those reading passwords,
run with echo disabled. run with echo disabled.
In this mode, In this mode,
@ -279,9 +271,23 @@ If the selection is empty, it sends the white-space-delimited text
containing the selection (typing cursor). containing the selection (typing cursor).
A typical use of this feature is to tell the editor to find the source of an error A typical use of this feature is to tell the editor to find the source of an error
by plumbing the file and line information in a compiler's diagnostic. by plumbing the file and line information in a compiler's diagnostic.
.PP
Each
.I 9term
listens for connections on a Unix socket.
When a client connects, the
.I 9term
writes the window contents to the client and then hangs up.
.I 9term
installs the name of this socket in the environment as
.B $text9term
before running
.IR cmd .
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/9term .B \*9/src/cmd/9term
.SH BUGS .SH BUGS
There should be a program to toggle the current window's hold mode. There should be a program to toggle the current window's hold mode.
.PP .PP
Unix makes everything harder. Unix makes everything harder.
.SH SEE ALSO
.IR wintext (1)

View file

@ -1,10 +1,12 @@
0intro 0intro.1
intro 0intro.1
9 9.1
9a 9c.1 9a 9c.1
9ar 9c.1 9ar 9c.1
9c 9c.1 9c 9c.1
9l 9c.1 9l 9c.1
9p 9p.1 9p 9p.1
9term 9term.1 9term 9term.1
label 9term.1
acid acid.1 acid acid.1
acidtypes acid.1 acidtypes acid.1
acme acme.1 acme acme.1
@ -27,13 +29,12 @@ cleanname cleanname.1
auxclog clog.1 auxclog clog.1
clog clog.1 clog clog.1
cmp cmp.1 cmp cmp.1
cmapcube colors.1
colors colors.1 colors colors.1
getmap colors.1
comm comm.1 comm comm.1
core core.1 core core.1
crop crop.1 crop crop.1
iconv crop.1 iconv crop.1
clock date.1
date date.1 date date.1
db db.1 db db.1
dc dc.1 dc dc.1
@ -93,6 +94,7 @@ lc ls.1
ls ls.1 ls ls.1
lookman man.1 lookman man.1
man man.1 man man.1
sig man.1
map map.1 map map.1
mapd map.1 mapd map.1
mapdemo map.1 mapdemo map.1
@ -142,7 +144,6 @@ scat scat.1
aescbc secstore.1 aescbc secstore.1
ipso secstore.1 ipso secstore.1
secstore secstore.1 secstore secstore.1
9sed sed.1
sed sed.1 sed sed.1
seq seq.1 seq seq.1
sleep sleep.1 sleep sleep.1

View file

@ -4,7 +4,7 @@ acid, acidtypes \- debugger
.SH SYNOPSIS .SH SYNOPSIS
.B acid .B acid
[ [
.BI -l " libfile .BI -l " library
] ]
[ [
.B -wq .B -wq
@ -49,7 +49,7 @@ 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 program to be debugged may be specified by the process id of
a running or defunct process, a running or defunct process,
or by the name of the program's text file or by the name of the program's text file
.RB ( 8.out .RB ( a.out
by default). by default).
At the prompt, At the prompt,
.I acid .I acid
@ -514,13 +514,13 @@ for processes that are still active.
.SH BUGS .SH BUGS
There is no way to redirect the standard input and standard output There is no way to redirect the standard input and standard output
of a new process. of a new process.
.br .PP
Source line selection near the beginning of a file may pick Source line selection near the beginning of a file may pick
an adjacent file. an adjacent file.
.br .PP
With the extant stepping commands, one cannot step through instructions With the extant stepping commands, one cannot step through instructions
outside the text segment and it is hard to debug across process forks. outside the text segment and it is hard to debug across process forks.
.br .PP
Breakpoints do not work yet. Breakpoints do not work yet.
Therefore, commands such as Therefore, commands such as
.BR step , .BR step ,

View file

@ -71,7 +71,7 @@ The
.RB ( -F ) .RB ( -F )
option sets the main font, usually variable-pitch (alternate, usually fixed-pitch); option sets the main font, usually variable-pitch (alternate, usually fixed-pitch);
the default is the default is
.B /lib/font/bit/lucidasans/euro.8.font .B /usr/local/plan9/font/lucidasans/euro.8.font
.RB ( \&.../lucm/unicode.9.font ). .RB ( \&.../lucm/unicode.9.font ).
Tab intervals are set to the width of 4 (or the value of Tab intervals are set to the width of 4 (or the value of
.BR $tabstop ) .BR $tabstop )
@ -140,7 +140,7 @@ temporarily hiding other windows in the column.
if any of them needs attention.) if any of them needs attention.)
The layout box in a window is normally white; when it is black in the center, The layout box in a window is normally white; when it is black in the center,
it records that the file is `dirty': it records that the file is `dirty':
.I Acme .I acme
believes it is modified from its original believes it is modified from its original
contents. contents.
.PP .PP
@ -455,26 +455,31 @@ 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 the directory from which the command was run, which will be created if
necessary. necessary.
For example, in a window For example, in a window
.B /adm/users .B /etc/passwd
executing executing
.B pwd .B pwd
will produce the output will produce the output
.B /adm .B /etc
in a (possibly newly-created) window labeled in a (possibly newly-created) window labeled
.BR /adm/+Errors ; .BR /etc/+Errors ;
in a window containing in a window containing
.B \*9/src/cmd/sam/sam.c .B /home/rob/sam/sam.c
executing executing
.B mk .B mk
will run will run
.IR mk (1) .IR mk (1)
in in
.BR \*9/src/cmd/sam , .BR /home/rob/sam ,
producing output in a window labeled producing output in a window labeled
.BR \*9/src/cmd/sam/+Errors . .BR /home/rob/sam/+Errors .
The environment of such commands contains the variable The environment of such commands contains the variable
.B $% .B $%
with value set to the filename of the window in which the command is run. with value set to the filename of the window in which the command is run,
and
.B $winid
set to the window's id number
(see
.IR acme (4)).
.SS "Mouse button 3 .SS "Mouse button 3
Pointing at text with button 3 instructs Pointing at text with button 3 instructs
.I acme .I acme
@ -586,7 +591,7 @@ creates a new
window and runs a window and runs a
.I command .I command
(default (default
.BR /bin/rc ) .BR $SHELL )
in it, turning the window into something analogous to an in it, turning the window into something analogous to an
.IR rio (1) .IR rio (1)
window. window.

View file

@ -132,32 +132,92 @@ and
a button 2 action in the tag a button 2 action in the tag
.RB ( x ). .RB ( x ).
.TP .TP
.I q0 .I q0\fR, \fPq1
The character addresses of the action.
.TP .TP
.I eq0\fR, \fPq1
The expanded character addresses of the action.
If the text indicated by
.IR q0 ,
.I q1 .I q1
is a null string that has a non-null expansion,
.TP .IR eq0 ,
.I eq0
.TP
.I eq1 .I eq1
are the addresses of the expansion.
Otherwise they are the same as
.IR q0 ,
.IR q1 .
.TP .TP
.I flag .I flag
.I 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
(see
.IR eq0 ,
.I eq1
above);
8 if the command has an extra (chorded) argument
(see
.I chordarg
below).
.I Flag
remains from the
.IR acme (4)
event format.
Because
.IR eq0 ,
.IR eq1 ,
and
.I chordarg
are explicit in each event
(unlike in
.IR acme (4)
events),
.I flag
can usually be ignored.
.TP .TP
.I textlen .I textlen
The length of the action text (or its expansion) for button 2 and button 3 events in characters.
.TP .TP
.I text .I text
If
.I textlen
is less than 256 chracters,
.I text
is the action text itself.
Otherwise it is an empty string and must be read from the
.B data
file.
.TP .TP
.I chordarg .I chordarg
The chorded argument for an action.
.TP .TP
.I chordorigin .I chordorigin
If the chord argument is in the body of a named window,
.I chordorigin
specifies the full address of the argument,
as in
.BR /etc/group:#123,#234 .
.PD
.PP
To experiment with
.IR acmeevent ,
create an empty window in
.I acme
(using
.IR New ), type
.IP
.EX
9p read acme/$winid/event | acmeevent
.EE
.LP
inside it, and execute it.
Actions performed on the window will be printed as events in the
.B +Errors
window.
.PP .PP
.I Acme.rc .I Acme.rc
is a library of is a library of

View file

@ -39,7 +39,7 @@ ascii, unicode \- interpret ASCII, Unicode characters
.PP .PP
.B look .B look
.I hex .I hex
.B /lib/unicode .B \*9/lib/unicode
.SH DESCRIPTION .SH DESCRIPTION
.I Ascii .I Ascii
prints the prints the
@ -122,7 +122,7 @@ and
may be unhelpful if the characters printed are not available in the current font. may be unhelpful if the characters printed are not available in the current font.
.PP .PP
The file The file
.B /lib/unicode .B \*9/lib/unicode
contains a contains a
table of characters and descriptions, sorted in hexadecimal order, table of characters and descriptions, sorted in hexadecimal order,
suitable for suitable for
@ -143,19 +143,18 @@ Print the hex value of `p'.
.B "unicode 2200-22f1" .B "unicode 2200-22f1"
Print a table of miscellaneous mathematical symbols. Print a table of miscellaneous mathematical symbols.
.TP .TP
.B "look 039 /lib/unicode" .B "look 039 \*9/lib/unicode"
See the start of the Greek alphabet's encoding in the Unicode Standard. See the start of the Greek alphabet's encoding in the Unicode Standard.
.SH FILES .SH FILES
.TF /lib/unicode
.TP .TP
.B /lib/unicode .B \*9/lib/unicode
table of characters and descriptions. table of characters and descriptions.
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/ascii.c .B \*9/src/cmd/ascii.c
.br .br
.B \*9/src/cmd/unicode.c .B \*9/src/cmd/unicode.c
.SH "SEE ALSO" .SH "SEE ALSO"
.IR look (1) .IR look (1),
.IR tcs (1), .IR tcs (1),
.IR utf (7), .IR utf (7),
.IR font (7) .IR font (7)

View file

@ -35,7 +35,7 @@ A prompt gives the input format.
If If
.B l .B l
is missing, the initial position is read from the file is missing, the initial position is read from the file
.BR /lib/sky/here . .BR \*9/sky/here .
.TP .TP
.B c .B c
Report for Report for
@ -105,12 +105,11 @@ This is modified (in the source) to refer to an approaching comet
but in steady state but in steady state
usually refers to the last interesting comet (currently Hale-Bopp, C/1995 O1). usually refers to the last interesting comet (currently Hale-Bopp, C/1995 O1).
.SH FILES .SH FILES
.TF /lib/sky/estartab
.TP .TP
.B /lib/sky/estartab .B \*9/sky/estartab
ecliptic star data ecliptic star data
.TP .TP
.B /lib/sky/here .B \*9/sky/here
default latitude (N), longitude (W), and elevation (meters) default latitude (N), longitude (W), and elevation (meters)
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/astro .B \*9/src/cmd/astro

View file

@ -267,7 +267,7 @@ define e(x) {
for(i=1; i<=10; i++) print e(i) for(i=1; i<=10; i++) print e(i)
.EE .EE
.SH FILES .SH FILES
.B /sys/lib/bclib .B \*9/lib/bclib
mathematical library mathematical library
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/bc.y .B \*9/src/cmd/bc.y
@ -281,12 +281,12 @@ No
or or
.L ! .L !
operators. operators.
.br .PP
A A
.L for .L for
statement must have all three statement must have all three
.LR E s. .LR E s.
.br .PP
A A
.L quit .L quit
is interpreted when read, not when executed. is interpreted when read, not when executed.

View file

@ -41,7 +41,7 @@ say in
then do then do
.TP .TP
.L .L
cd gift; rc horse; mk cd gift; sh horse; mk
.SH SOURCE .SH SOURCE
.B \*9/bin/bundle .B \*9/bin/bundle
.SH SEE ALSO .SH SEE ALSO
@ -53,5 +53,5 @@ cd gift; rc horse; mk
.SH BUGS .SH BUGS
.I Bundle .I Bundle
will not create directories and is unsatisfactory for non-text files. will not create directories and is unsatisfactory for non-text files.
.br .PP
Beware of gift horses. Beware of gift horses.

View file

@ -39,7 +39,7 @@ Try
.SH BUGS .SH BUGS
The year is always considered to start in January even though this The year is always considered to start in January even though this
is historically naive. is historically naive.
.br .PP
Beware that Beware that
.L "cal 90" .L "cal 90"
refers to the early Christian era, refers to the early Christian era,

View file

@ -15,7 +15,7 @@ calendar \- print upcoming events
.SH DESCRIPTION .SH DESCRIPTION
.I Calendar .I Calendar
reads the named files, default reads the named files, default
.BR /usr/$user/lib/calendar , .BR $HOME/lib/calendar ,
and writes to standard output any lines and writes to standard output any lines
containing today's or tomorrow's date. containing today's or tomorrow's date.
Examples of recognized date formats are Examples of recognized date formats are
@ -45,9 +45,9 @@ On Friday and Saturday, events through Monday are printed.
To have your calendar mailed to you every day, use To have your calendar mailed to you every day, use
.IR cron (8). .IR cron (8).
.SH FILES .SH FILES
.TF /usr/$user/lib/calendar .TF $HOME/lib/calendar
.TP .TP
.B /usr/$user/lib/calendar .B $HOME/lib/calendar
personal calendar personal calendar
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/calendar.c .B \*9/src/cmd/calendar.c

View file

@ -17,7 +17,7 @@ cat, read, nobs \- catenate files
.I file ... .I file ...
] ]
.br .br
nobs .B nobs
[ [
.I file ... .I file ...
] ]

View file

@ -1,6 +1,6 @@
.TH COLORS 1 .TH COLORS 1
.SH NAME .SH NAME
getmap, colors \- display color map colors, cmapcube \- display color map
.SH SYNOPSIS .SH SYNOPSIS
.PP .PP
.B colors .B colors
@ -9,16 +9,13 @@ getmap, colors \- display color map
.B -x .B -x
] ]
.PP .PP
.B getmap .B cmapcube
[ [
.I colormap .B -nbw
] ]
.SH DESCRIPTION .SH DESCRIPTION
.I Colors .I Colors
presents a grid showing the colors in the current color map. presents a grid showing the colors in the RGBV color map
If the display is true color,
.I colors
shows a grid of the RGBV color map
(see (see
.IR color (7)). .IR color (7)).
.PP .PP
@ -37,36 +34,22 @@ option instead shows, in the same form, a grey-scale ramp.
.PP .PP
A menu on mouse button 3 contains a single entry, to exit the program. A menu on mouse button 3 contains a single entry, to exit the program.
.PP .PP
On 8-bit color-mapped displays, .I Cmapcube
.I getmap presents the same colors but in a 3-dimensional cube.
loads the display's color map (default Dragging with button 1 rotates the cube.
.BR rgbv ). Clicking on a color with button 2
The named displays the map index for that color.
.I colormap Clicking button 3 exits.
can be a file in the current directory or in the standard repository .PP
.BR /lib/cmap . The
It can also be a string of the form .B -n
.B gamma option disables drawing of the color squares.
or The
.BI gamma N\f1 , .B -b
where
.I N
is a floating point value for the gamma, defining the contrast for a monochrome map.
Similarly,
.B rgamma
and and
.BI rgamma N .B -w
define a reverse-video monochrome map. options set the background (default grey)
Finally, the names to black or white.
.B screen
or
.B display
or
.B vga
are taken as synonyms for the current color map stored in the display hardware.
.SH FILES
.B /lib/cmap
directory of color map files
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/draw/colors.c .B \*9/src/cmd/draw/colors.c
.SH SEE ALSO .SH SEE ALSO

View file

@ -44,3 +44,6 @@ searches the current directory.
.IR acid (1), .IR acid (1),
.IR db (1), .IR db (1),
.IR core (5) .IR core (5)
.SH BUGS
.I Core
has not been written.

View file

@ -1,6 +1,6 @@
.TH DATE 1 .TH DATE 1
.SH NAME .SH NAME
date, clock \- date and time date \- date and time
.SH SYNOPSIS .SH SYNOPSIS
.B date .B date
[ [

View file

@ -912,14 +912,6 @@ To set a breakpoint at the beginning of
.B write() .B write()
in extant process 27: in extant process 27:
.IP .IP
.de EX
.RS
.ft B
.nf
..
.de EE
.RE
..
.EX .EX
% db 27 % db 27
:h :h

View file

@ -223,15 +223,15 @@ results are truncated to the following scales.
\fLv\fR max(\fIs,sa\fR) \fLv\fR max(\fIs,sa\fR)
.fi .fi
.SH EXAMPLES .SH EXAMPLES
.LP
Print the first ten values of
.IR n !
.IP
.EX .EX
[la1+dsa*pla10>y]sy [la1+dsa*pla10>y]sy
0sa1 0sa1
lyx lyx
.EE .EE
.ns
.IP
Print the first ten values of
.IR n !
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/dc.c .B \*9/src/cmd/dc.c
.SH "SEE ALSO" .SH "SEE ALSO"

View file

@ -112,6 +112,6 @@ when the popular
delimiters for delimiters for
.I eqn .I eqn
are in effect. are in effect.
.br .PP
Text inside macros is emitted at place of Text inside macros is emitted at place of
definition, not place of call. definition, not place of call.

View file

@ -182,12 +182,10 @@ it starts with the
.BI /adict/ dict / .BI /adict/ dict /
window. window.
.SH FILES .SH FILES
.B /lib/dict/oed2 .TP
.br .B \*9/dict
.B /lib/dict/oed2index dictionaries
.br .PD
Other files in
.BR /lib .
.SH "SEE ALSO" .SH "SEE ALSO"
.IR regexp (7) .IR regexp (7)
.SH SOURCE .SH SOURCE

View file

@ -148,7 +148,7 @@ Editing scripts produced under the
.BR -e " or" .BR -e " or"
.BR -f " option are naive about" .BR -f " option are naive about"
creating lines consisting of a single `\fB.\fR'. creating lines consisting of a single `\fB.\fR'.
.br .PP
When running When running
.I diff .I diff
on directories, the notion of what is a text on directories, the notion of what is a text

View file

@ -4,8 +4,13 @@ doctype \- intuit command line for formatting a document
.SH SYNOPSIS .SH SYNOPSIS
.B doctype .B doctype
[ [
.I option ... .B -n
] [ ]
[
.B -T
.I dev
]
[
.I file .I file
] ]
\&... \&...
@ -32,7 +37,9 @@ invokes
.I nroff .I nroff
instead of instead of
.IR troff . .IR troff .
Other options are passed to The
.B -T
option is passed to
.IR troff . .IR troff .
.SH EXAMPLES .SH EXAMPLES
.TP .TP

View file

@ -49,7 +49,7 @@ commands.
If no If no
.I file .I file
is given, make is given, make
.B /fd/1 .B /dev/stdout
the remembered file; see the the remembered file; see the
.L e .L e
command below. command below.

View file

@ -13,11 +13,11 @@ If a
.I file .I file
is specified, the saying is taken from that file; is specified, the saying is taken from that file;
otherwise it is selected from otherwise it is selected from
.BR /sys/games/lib/fortunes . .BR \*9/lib/fortunes .
.SH FILES .SH FILES
.B /sys/games/lib/fortunes .B \*9/lib/fortunes
.br .br
.B /sys/games/lib/fortunes.index .B \*9/lib/fortunes.index
\ \ fast lookup table, maintained automatically \ \ fast lookup table, maintained automatically
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/fortune.c .B \*9/src/cmd/fortune.c

View file

@ -254,7 +254,7 @@ symbols like
.BR star , .BR star ,
.BR plus , .BR plus ,
etc., in etc., in
.BR /sys/lib/grap.defines , .BR \*9/lib/grap.defines ,
which is included if it exists. which is included if it exists.
.PP .PP
.I var .I var
@ -399,9 +399,9 @@ copy thru / circle at $1,$2 /
.vs .vs
.EE .EE
.SH FILES .SH FILES
.TF /sys/lib/grap.defines .TF \*9/lib/grap.defines
.TP .TP
.B /sys/lib/grap.defines .B \*9/lib/grap.defines
definitions of standard plotting characters, e.g., bullet definitions of standard plotting characters, e.g., bullet
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/grap .B \*9/src/cmd/grap

View file

@ -10,6 +10,7 @@ grep, g \- search a file for a pattern
[ [
.I file ... .I file ...
] ]
.PP
.B g .B g
[ [
.I option ... .I option ...

View file

@ -14,7 +14,8 @@ interactively
merges merges
.I file1 .I file1
and and
.IR file2 . .I file2
onto standard output.
Wherever Wherever
.I file1 .I file1
and and
@ -23,7 +24,8 @@ differ,
.I idiff .I idiff
displays the differences in the style of displays the differences in the style of
.RB `` diff .RB `` diff
.RB -n '' .BR -n ''
on standard error
and prompts the user to select a chunk. and prompts the user to select a chunk.
Valid responses are: Valid responses are:
.TP .TP
@ -54,9 +56,10 @@ The
.B -b .B -b
and and
.B -w .B -w
flags flags,
are simply if passed,
passed through to are
passed to
.IR diff . .IR diff .
.SH FILES .SH FILES
.B /tmp/idiff.* .B /tmp/idiff.*
@ -68,5 +71,3 @@ passed through to
Kernighan and Pike, Kernighan and Pike,
.IR "The Unix Programming Environment" , .IR "The Unix Programming Environment" ,
Prentice-Hall, 1984. Prentice-Hall, 1984.
.SH BUGS
This is a poorly-written manual page.

View file

@ -143,5 +143,5 @@ with
the sequence is that of the sequence is that of
.BI "sort -t" x .BI "sort -t" x
.BI -k y , y\f1. .BI -k y , y\f1.
.br .PP
One of the files must be randomly accessible. One of the files must be randomly accessible.

View file

@ -13,11 +13,6 @@ kill, slay, start, stop \- print commands to manipulate processes
.PP .PP
.B stop .B stop
.I name ... .I name ...
.PP
.B broke
[
.I user
]
.SH DESCRIPTION .SH DESCRIPTION
.I Kill .I Kill
prints commands that will cause all processes with prints commands that will cause all processes with
@ -67,3 +62,8 @@ signal.
.SH "SEE ALSO" .SH "SEE ALSO"
.IR ps (1), .IR ps (1),
.IR notify (3) .IR notify (3)
.SH BUGS
.I Stop
and
.I start
should limit themselves to currently running or stopped processes.

View file

@ -77,5 +77,5 @@ Tenth Edition, Volume 2.
.SH BUGS .SH BUGS
Cannot handle Cannot handle
.SM UTF. .SM UTF.
.br .PP
The asteroid to kill this dinosaur is still in orbit. The asteroid to kill this dinosaur is still in orbit.

View file

@ -77,10 +77,9 @@ is assumed, with collating sequence
.IR grep (1) .IR grep (1)
.SH DIAGNOSTICS .SH DIAGNOSTICS
The exit status is The exit status is
.B \&"not found" .RB `` "not found" ''
if no match is found, and if no match is found, and
.B \&"no dictionary" .RB `` "no dictionary" ''
if if
.I file .I file
or the default dictionary cannot be opened. or the default dictionary cannot be opened.

View file

@ -157,6 +157,5 @@ if none of the above permissions is granted.
.br .br
.B \*9/bin/lc .B \*9/bin/lc
.SH SEE ALSO .SH SEE ALSO
.IR stat (3) .IR stat (3),
.IR mc (1) .IR mc (1)

View file

@ -1,6 +1,6 @@
.TH MAN 1 .TH MAN 1
.SH NAME .SH NAME
man, lookman \- print or find pages of this manual man, lookman, sig \- print or find pages of this manual
.SH SYNOPSIS .SH SYNOPSIS
.B man .B man
[ [
@ -88,17 +88,20 @@ command to make an index for a given section
index for index for
.I lookman .I lookman
.SH SOURCE .SH SOURCE
.B \*9/bin/9man .B \*9/bin/man
.br .br
.B \*9/bin/lookman .B \*9/bin/lookman
.SH "SEE ALSO" .SH "SEE ALSO"
.IR page (1),
.IR proof (1) .IR proof (1)
.SH BUGS .SH BUGS
The manual was intended to be typeset; some detail is sacrificed on text terminals. The manual was intended to be typeset; some detail is sacrificed on text terminals.
.PP .PP
There is no automatic mechanism to keep the indices up to date. There is no automatic mechanism to keep the indices up to date.
.PP .PP
Except for special cases, it doesn't recognize things that should be run through Except for special cases,
.I man
doesn't recognize things that should be run through
.I tbl .I tbl
and/or and/or
.IR eqn . .IR eqn .

View file

@ -634,7 +634,7 @@ maps for
.B /lib/map/*.x .B /lib/map/*.x
map indexes map indexes
.TP .TP
.B /bin/aux/mapd .B mapd
Map driver program Map driver program
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/map .B \*9/src/cmd/map

View file

@ -1,21 +1,4 @@
.TH MK 1 .TH MK 1
.de EX
.nf
.ft B
..
.de EE
.fi
.ft R
..
.de LR
.if t .BR \\$1 \\$2
.if n .RB ` \\$1 '\\$2
..
.de L
.nh
.if t .B \\$1
.if n .RB ` \\$1 '
..
.SH NAME .SH NAME
mk, membername \- maintain (make) related files mk, membername \- maintain (make) related files
.SH SYNOPSIS .SH SYNOPSIS
@ -313,6 +296,7 @@ and any command line assignment as an argument to
.IR mk . .IR mk .
A variable assignment argument overrides the first (but not any subsequent) A variable assignment argument overrides the first (but not any subsequent)
assignment to that variable. assignment to that variable.
.PP
The variable The variable
.B MKFLAGS .B MKFLAGS
contains all the option arguments (arguments starting with contains all the option arguments (arguments starting with
@ -324,6 +308,45 @@ and
contains all the targets in the call to contains all the targets in the call to
.IR mk . .IR mk .
.PP .PP
The variable
.B MKSHELL
contains the shell command line
.I mk
uses to run recipes.
If the first word of the command ends in
.B rc
or
.BR rcsh ,
.I mk
uses
.IR rc (1)'s
quoting rules; otherwise it uses
.IR sh (1)'s.
The
.B MKSHELL
variable is consulted when the mkfile is read, not when it is executed,
so that different shells can be used within a single mkfile:
.IP
.EX
MKSHELL=$PLAN9/bin/rc
use-rc:V:
for(i in a b c) echo $i
MKSHELL=sh
use-sh:V:
for i in a b c; do echo $i; done
.EE
.LP
Mkfiles included via
.B <
or
.B <|
.RI ( q.v. )
see their own private copy of
.BR MKSHELL ,
which always starts set to
.B sh .
.PP
Dynamic information may be included in the mkfile by using a line of the form Dynamic information may be included in the mkfile by using a line of the form
.IP .IP
\fR<|\fIcommand\fR \fIargs\fR \fR<|\fIcommand\fR \fIargs\fR
@ -510,6 +533,7 @@ archives.
.I Membername .I Membername
echoes just the member names of a list of aggregate names. echoes just the member names of a list of aggregate names.
It is useful in recipes like: It is useful in recipes like:
.IP
.EX .EX
OFILES=a.o b.o OFILES=a.o b.o
libc.a(%):N: % libc.a(%):N: %
@ -647,7 +671,7 @@ x.tab.h:Pcmp -s: y.tab.h
.EE .EE
.SH SEE ALSO .SH SEE ALSO
.IR sh (1), .IR sh (1),
.IR regexp9 (7) .IR regexp (7)
.PP .PP
A. Hume, A. Hume,
``Mk: a Successor to Make'' ``Mk: a Successor to Make''
@ -664,19 +688,18 @@ It was later ported to Plan 9.
This software is a port of the Plan 9 version back to Unix. This software is a port of the Plan 9 version back to Unix.
.SH BUGS .SH BUGS
Identical recipes for regular expression meta-rules only have one target. Identical recipes for regular expression meta-rules only have one target.
.br .PP
Seemingly appropriate input like Seemingly appropriate input like
.B CFLAGS=-DHZ=60 .B CFLAGS=-DHZ=60
is parsed as an erroneous attribute; correct it by inserting is parsed as an erroneous attribute; correct it by inserting
a space after the first a space after the first
.LR = . .LR = .
.br .PP
The recipes printed by The recipes printed by
.I mk .I mk
before being passed to before being passed to
.I sh the shell
for execution are sometimes erroneously expanded for execution are sometimes erroneously expanded
for printing. Don't trust what's printed; rely for printing. Don't trust what's printed; rely
on what on what the shell
.I sh
does. does.

View file

@ -11,4 +11,5 @@ See
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/namespace.c .B \*9/src/cmd/namespace.c
.SH SEE ALSO .SH SEE ALSO
.IR getns (3) .IR getns (3),
.IR intro (4)

View file

@ -35,13 +35,13 @@ Other arguments
select particular news items. select particular news items.
.PP .PP
To post a news item, create a file in To post a news item, create a file in
.BR /lib/news . .BR \*9/news .
.PP .\" .PP
You may arrange to receive news automatically by .\" You may arrange to receive news automatically by
registering your mail address in .\" registering your mail address in
.BR /sys/lib/subscribers . .\" .BR /sys/lib/subscribers .
A daemon mails recent news .\" A daemon mails recent news
to all addresses on the list. .\" to all addresses on the list.
.PP .PP
Empty news items, and news items named Empty news items, and news items named
.B core .B core
@ -49,15 +49,14 @@ or
.B dead.letter .B dead.letter
are ignored. are ignored.
.SH FILES .SH FILES
.TF /sys/lib/subscribers
.TP .TP
.B /lib/news/* .B \*9/news/*
articles articles
.TP .TP
.B $HOME/lib/newstime .B $HOME/lib/newstime
modify time is time news was last read modify time is time news was last read
.TP .\" .TP
.B /sys/lib/subscribers .\" .B /sys/lib/subscribers
who gets news mailed to them who gets news mailed to them
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/news.c .B \*9/src/cmd/news.c

View file

@ -49,7 +49,7 @@ To view troff output, use
.IR proof (1). .IR proof (1).
.SH "SEE ALSO .SH "SEE ALSO
.IR gs (1), .IR gs (1),
.IR gv (1) .IR gv (1),
.IR jpg (1), .IR jpg (1),
.IR proof (1), .IR proof (1),
.IR tex (1), .IR tex (1),
@ -64,3 +64,11 @@ When using Preview on Mac OS X,
leaves temporary files in leaves temporary files in
.BR /var/tmp , .BR /var/tmp ,
since it has no way to know when the viewer has exited. since it has no way to know when the viewer has exited.
.PP
.I Page
does not handle
Plan 9
.IR image (7)
files; use
.I img
explicitly.

View file

@ -76,14 +76,10 @@ will add an
.B action=showdata .B action=showdata
attribute to the message. attribute to the message.
.SH FILES .SH FILES
.TF /usr/$user/lib/plumbing .TF $HOME/lib/plumbing
.TP .TP
.B /usr/$user/lib/plumbing .B $HOME/lib/plumbing
default rules file default rules file
.TP
.B /mnt/plumb
mount point for
.IR plumber (4).
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/plumb .B \*9/src/cmd/plumb
.SH "SEE ALSO" .SH "SEE ALSO"

View file

@ -115,12 +115,11 @@ and
.B d .B d
commands are also available as command line options. commands are also available as command line options.
.SH FILES .SH FILES
.TF /lib/font/bit/MAP
.TP .TP
.B /lib/font/bit/* .B \*9/font/*
fonts fonts
.TP .TP
.B /lib/font/bit/MAP .B \*9/font/MAP
how to convert troff output fonts and character names how to convert troff output fonts and character names
into screen fonts and character numbers into screen fonts and character numbers
.SH SOURCE .SH SOURCE

View file

@ -81,7 +81,7 @@ performing the named system call.
waiting for more of a critical waiting for more of a critical
.IR resource . .IR resource .
.TP .TP
.BI wchan .I wchan
waiting on the named wait channel waiting on the named wait channel
(on a Unix kernel). (on a Unix kernel).
.PD .PD

View file

@ -765,8 +765,7 @@ The string for a variable entry has the variable's name followed by
.B = .B =
and its value. and its value.
If the value has more than one component, these If the value has more than one component, these
are separated by SOH are separated by SOH (001)
.RB ( '\e001' )
characters. characters.
The string for a function is just the The string for a function is just the
.I rc .I rc

View file

@ -19,6 +19,9 @@ sam, B, E, sam.save, samterm, samsave \- screen editor with structural regular e
.B B .B B
.IB file \fR[\fP: line \fR] .IB file \fR[\fP: line \fR]
\&... \&...
.PP
.B E
.I file
.SH DESCRIPTION .SH DESCRIPTION
.I Sam .I Sam
is a multi-file editor. is a multi-file editor.
@ -845,7 +848,7 @@ It runs
.I B .I B
on on
.I file .I file
and then waits to exit until and then does not exit until
.I file .I file
is changed, which is taken as a signal that is changed, which is taken as a signal that
.I file .I file
@ -858,22 +861,22 @@ terminates other than by a
command (by hangup, deleting its window, etc.), modified command (by hangup, deleting its window, etc.), modified
files are saved in an files are saved in an
executable file, executable file,
.BR $home/sam.save . .BR $HOME/sam.save .
This program, when executed, asks whether to write This program, when executed, asks whether to write
each file back to a external file. each file back to a external file.
The answer The answer
.L y .L y
causes writing; anything else skips the file. causes writing; anything else skips the file.
.SH FILES .SH FILES
.TF \*9/src/cmd/samterm .TF $HOME/sam.save
.TP .TP
.B $home/sam.save .B $HOME/sam.save
.TP .TP
.B $home/sam.err .B $HOME/sam.err
.TP .TP
.B \*9/bin/samsave .B \*9/bin/samsave
the program called to unpack the program called to unpack
.BR $home/sam.save . .BR $HOME/sam.save .
.SH SOURCE .SH SOURCE
.TF \*9/src/cmd/samterm .TF \*9/src/cmd/samterm
.TP .TP
@ -886,6 +889,8 @@ itself
source for the separate terminal part source for the separate terminal part
.TP .TP
.B \*9/bin/B .B \*9/bin/B
.TP
.B \*9/bin/E
.SH SEE ALSO .SH SEE ALSO
.IR ed (1), .IR ed (1),
.IR sed (1), .IR sed (1),

View file

@ -124,7 +124,7 @@ The output is the planet's name, right ascension and declination, azimuth and al
for the moon and sun, as shown by for the moon and sun, as shown by
.BR astro . .BR astro .
The positions are current at the start of The positions are current at the start of
.I scat 's .IR scat 's
execution; see the execution; see the
.B astro .B astro
command in the next section for more information. command in the next section for more information.
@ -313,20 +313,20 @@ Draw a map of the Pleiades.
expand 1 expand 1
plot plot
.EE .EE
.PP .\" .PP
Show a pretty galaxy. .\" Show a pretty galaxy.
.EX .\" .EX
ngc1300 .\" ngc1300
plate 10' .\" plate 10'
.EE .\" .EE
.SH FILES .SH FILES
.B /lib/sky/*.scat .B \*9/sky/*.scat
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/scat .B \*9/src/cmd/scat
.SH SEE ALSO .SH SEE ALSO
.IR astro (1) .IR astro (1)
.br .br
.B /lib/sky/constelnames\ \ .B \*9/sky/constelnames\ \
the three-letter abbreviations of the constellation names. the three-letter abbreviations of the constellation names.
.PP .PP
The data was provided by the Astronomical Data Center at the NASA Goddard The data was provided by the Astronomical Data Center at the NASA Goddard

View file

@ -127,70 +127,70 @@ The next three commands fetch the persistent copy of the secrets,
append a new secret, append a new secret,
and save the updated file back to secstore. and save the updated file back to secstore.
The final command loads the new secret into the running factotum. The final command loads the new secret into the running factotum.
.PP .\" .PP
The .\" The
.I ipso .\" .I ipso
command packages this sequence into a convenient script to simplify editing of .\" command packages this sequence into a convenient script to simplify editing of
.I files .\" .I files
stored on a secure store. .\" stored on a secure store.
It copies the named .\" It copies the named
.I files .\" .I files
into a local .\" into a local
.IR ramfs (4) .\" .IR ramfs (4)
and invokes .\" and invokes
.IR acme (1) .\" .IR acme (1)
on them. When the editor exits, .\" on them. When the editor exits,
.I ipso .\" .I ipso
prompts the user to confirm copying modifed or newly created files back to .\" prompts the user to confirm copying modifed or newly created files back to
.I secstore. .\" .I secstore.
If no .\" If no
.I file .\" .I file
is mentioned, .\" is mentioned,
.I ipso .\" .I ipso
grabs all the user's files from .\" grabs all the user's files from
.I secstore .\" .I secstore
for editing. .\" for editing.
.PP .\" .PP
By default, ipso will edit the .\" By default, ipso will edit the
.I secstore .\" .I secstore
files and, if .\" files and, if
one of them is named .\" one of them is named
.BR factotum , .\" .BR factotum ,
flush your current keys from factotum and load .\" flush your current keys from factotum and load
the new ones from the file. .\" the new ones from the file.
If you supply any of the .\" If you supply any of the
.BR -e , .\" .BR -e ,
.BR -f , .\" .BR -f ,
or .\" or
.BR -l .\" .BR -l
options, .\" options,
.I ipso .\" .I ipso
will just perform the operations you requested, i.e., .\" will just perform the operations you requested, i.e.,
edit, flush, and/or load. .\" edit, flush, and/or load.
.PP .\" .PP
The .\" The
.B -s .\" .B -s
option of .\" option of
.I ipso .\" .I ipso
invokes .\" invokes
.IR sam (1) .\" .IR sam (1)
as the editor insted of .\" as the editor insted of
.BR acme ; .\" .BR acme ;
the .\" the
.B -a .\" .B -a
option provides a similar service for files encrypted by .\" option provides a similar service for files encrypted by
.I aescbc .\" .I aescbc
.RI ( q.v. ). .\" .RI ( q.v. ).
With the .\" With the
.B -a .\" .B -a
option, the full rooted pathname of the .\" option, the full rooted pathname of the
.I file .\" .I file
must be specified and all .\" must be specified and all
.I files .\" .I files
must be encrypted with the same key. .\" must be encrypted with the same key.
Also with .\" Also with
.BR -a , .\" .BR -a ,
newly created files are ignored. .\" newly created files are ignored.
.PP .PP
.I Aescbc .I Aescbc
encrypts and decrypts using AES (Rijndael) in cipher encrypts and decrypts using AES (Rijndael) in cipher
@ -205,8 +205,8 @@ There is deliberately no backup of files on the secstore, so
.B -r .B -r
(or a disk crash) is irrevocable. You are advised to store (or a disk crash) is irrevocable. You are advised to store
important secrets in a second location. important secrets in a second location.
.PP .\" .PP
When using .\" When using
.IR ipso , .\" .IR ipso ,
secrets will appear as plain text in the editor window, .\" secrets will appear as plain text in the editor window,
so use the command in private. .\" so use the command in private.

View file

@ -1,8 +1,8 @@
.TH SED 1 .TH SED 1
.SH NAME .SH NAME
9sed \- stream editor sed \- stream editor
.SH SYNOPSIS .SH SYNOPSIS
.B 9sed .B sed
[ [
.B -n .B -n
] ]
@ -366,7 +366,7 @@ ${
Delete all but one of each group of empty lines from a Delete all but one of each group of empty lines from a
formatted manuscript. formatted manuscript.
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/9sed.c .B \*9/src/cmd/sed.c
.SH SEE ALSO .SH SEE ALSO
.IR ed (1), .IR ed (1),
.IR grep (1), .IR grep (1),

View file

@ -19,6 +19,8 @@ sort \- sort and/or merge files
.I ,pos2 .I ,pos2
] ]
] ... ] ...
.br
\h'0.5in'
[ [
.B -o .B -o
.I output .I output
@ -210,7 +212,7 @@ This file may be the same as one of the inputs.
Put temporary files in Put temporary files in
.I dir .I dir
rather than in rather than in
.BR /tmp . .BR /var/tmp .
.ne 4 .ne 4
.SH EXAMPLES .SH EXAMPLES
.TP .TP
@ -236,7 +238,7 @@ grep -n '^' input | sort -t: +1f +0n | sed 's/[0-9]*://'
A stable sort: input lines that compare equal will A stable sort: input lines that compare equal will
come out in their original order. come out in their original order.
.SH FILES .SH FILES
.BI /tmp/sort. <pid>.<ordinal> .BI /var/tmp/sort. <pid>.<ordinal>
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/sort.c .B \*9/src/cmd/sort.c
.SH SEE ALSO .SH SEE ALSO

View file

@ -67,7 +67,7 @@ American spelling list
.B \*9/lib/brspell .B \*9/lib/brspell
British spelling list British spelling list
.TP .TP
.B /bin/aux/sprog .B \*9/bin/sprog
The actual spelling checker. The actual spelling checker.
It expects one word per line on standard input, It expects one word per line on standard input,
and takes the same arguments as and takes the same arguments as
@ -87,7 +87,7 @@ source for
The heuristics of The heuristics of
.IR deroff (1) .IR deroff (1)
used to excise formatting information are imperfect. used to excise formatting information are imperfect.
.br .PP
The spelling list's coverage is uneven; The spelling list's coverage is uneven;
in particular biology, medicine, and chemistry, and in particular biology, medicine, and chemistry, and
perforce proper names, perforce proper names,

View file

@ -167,13 +167,21 @@ to exit.
.PD .PD
.SH EXAMPLE .SH EXAMPLE
Show the load, memory, interrupts, system calls, context switches, Show the load, memory, interrupts, system calls, context switches,
and ethernet packets for the local machine, a remote Linux machine and ethernet packets for the local machine,
.BR tux , a remote BSD machine
and a remote BSD machine .IR daemon ,
.BR daemon . and
a remote Linux machine
.IR tux .
.I Auxstats
is not in
.IR tux 's
path, so the full path must be given.
.IP .IP
.B .EX
stats -lmisce `hostname` tux:\*9/bin/auxstats daemon stats -lmisce `hostname` daemon \e
tux:\*9/bin/auxstats
.EE
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/draw/stats.c .B \*9/src/cmd/draw/stats.c
.PP .PP

View file

@ -77,11 +77,11 @@ Print the first 10 lines of a file.
Tails relative to the end of the file Tails relative to the end of the file
are treasured up in a buffer, and thus are treasured up in a buffer, and thus
are limited in length. are limited in length.
.br .PP
According to custom, option According to custom, option
.BI + number .BI + number
counts lines from 1, and counts counts lines from 1, and counts
blocks and bytes from 0. blocks and bytes from 0.
.br .PP
.I Tail .I Tail
is ignorant of UTF. is ignorant of UTF.

View file

@ -158,19 +158,19 @@ to speed output and reduce output character count.
Tab settings are assumed to be every Tab settings are assumed to be every
8 nominal character widths. 8 nominal character widths.
.SH FILES .SH FILES
.TF /sys/lib/troff/term/* .TF \*9/troff/term/*
.TP .TP
.B /tmp/trtmp* .B /tmp/trtmp*
temporary file temporary file
.TP .TP
.B /sys/lib/tmac/tmac.* .B \*9/tmac/tmac.*
standard macro files standard macro files
.TP .TP
.B /sys/lib/troff/term/* .B \*9/troff/term/*
terminal driving tables for terminal driving tables for
.I nroff .I nroff
.TP .TP
.B /sys/lib/troff/font/* .B \*9/troff/font/*
font width tables for font width tables for
.I troff .I troff
.SH SOURCE .SH SOURCE

View file

@ -73,13 +73,13 @@ Currency is denoted
etc. etc.
.PP .PP
The complete list of units can be found in The complete list of units can be found in
.BR /lib/units . .BR \*9/lib/units .
A A
.I file .I file
argument to argument to
.I units .I units
specifies a file to be used instead of specifies a file to be used instead of
.BR /lib/units. .BR \*9/lib/units.
The The
.B -v .B -v
flag causes flag causes
@ -93,7 +93,7 @@ you want: atm
/ .97973 / .97973
.EE .EE
.SH FILES .SH FILES
.B /lib/units .B \*9/lib/units
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/units.y .B \*9/src/cmd/units.y
.SH BUGS .SH BUGS
@ -102,7 +102,6 @@ Since
does only multiplicative scale changes, does only multiplicative scale changes,
it can convert Kelvin to Rankine but not Centigrade to it can convert Kelvin to Rankine but not Centigrade to
Fahrenheit. Fahrenheit.
.br .PP
Currency conversions are only as accurate as the last time someone Currency conversions are only as accurate as the last time someone
updated updated the database.
.BR /lib/units .

View file

@ -127,4 +127,3 @@ and the vac archives that are expanded and merged.
.B \*9/src/cmd/vac .B \*9/src/cmd/vac
.SH "SEE ALSO" .SH "SEE ALSO"
Plan 9's \fIvacfs\fR(4) and \fIventi\fR(8) Plan 9's \fIvacfs\fR(4) and \fIventi\fR(8)

View file

@ -43,7 +43,7 @@ but
looks for only looks for only
.SM ASCII .SM ASCII
space, tab and newline. space, tab and newline.
.br .PP
.I Wc .I Wc
should have options to count suboptimal should have options to count suboptimal
.SM UTF .SM UTF

View file

@ -31,6 +31,8 @@ The choice of browser is determined by the
.B $BROWSER .B $BROWSER
environment variable, which should be the name of environment variable, which should be the name of
the executable for your choice of web browser. the executable for your choice of web browser.
The default is
.BR firefox .
Since the various browsers all use different syntaxes Since the various browsers all use different syntaxes
in their in their
.B -remote .B -remote
@ -41,6 +43,23 @@ When possible,
.I web .I web
opens each URL in a new tab rather than a new window. opens each URL in a new tab rather than a new window.
.PP .PP
When run under Mac OS X,
.B $BROWSER
should be set to the string
.B safari
or
.BR firefox .
.I Web
uses AppleScript to talk to the browser.
If
.B $BROWSER
is not set,
.I web
looks for Firefox in
.BR /Applications/Firefox.app
and uses it if found;
otherwise it uses Safari.
.PP
.I Wmail .I Wmail
starts the composition of a new mail message to starts the composition of a new mail message to
.IR address . .IR address .
@ -49,7 +68,8 @@ The choice of mailer is determined by the
.B $MAILER .B $MAILER
environment variable. environment variable.
The supported mailers are: The supported mailers are:
.TP browser .TP
.B browser
invoke the mailer via a invoke the mailer via a
.B mailto:// .B mailto://
URL passed to URL passed to

View file

@ -1,15 +1,19 @@
.TH WINTEXT 1 .TH WINTEXT 1
.SH NAME .SH NAME
wintext, ", "" \- access text in current window wintext, ", "" \- access text in current window
.ds x \C'"'
.ds xx \C'"'\^\^\^\^\C'"'
.ds y \*x\
.ds yy \*(xx\
.SH SYNOPSIS .SH SYNOPSIS
.B wintext .B wintext
.br .br
.B \C'"'\ .B \*x\
[ [
.I prefix .I prefix
] ]
.br .br
.B \C'"'\C'"'\ .B \*(xx\
[ [
.I prefix .I prefix
] ]
@ -23,7 +27,7 @@ or
.IR 9term (1) .IR 9term (1)
window to standard output. window to standard output.
.PP .PP
.I \C'"' .I \*y
searches the window text for commands typed with a particular prefix searches the window text for commands typed with a particular prefix
and prints them, indented, to standard output. and prints them, indented, to standard output.
.I Prefix .I Prefix
@ -31,18 +35,18 @@ is a regular expression that is matched against the beginning of the command-lin
If If
.I prefix .I prefix
is omitted, is omitted,
.I \C'"' .I \*y
prints the last command executed. prints the last command executed.
.I \C'"'\C'"' .I \*(yy
prints the last command that prints the last command that
.I \C'"' .I \*y
would print and then executes it by piping it into would print and then executes it by piping it into
.IR rc (1). .IR rc (1).
.PP .PP
Both Both
.I \C'"' .I \*y
and and
.I \C'"'\C'"' .I \*(yy
identify commands in the window text by looking for lines identify commands in the window text by looking for lines
beginning with a shell prompt. beginning with a shell prompt.
Prompts are assumed to be an unindented sequence of Prompts are assumed to be an unindented sequence of
@ -62,7 +66,7 @@ commands executed in this window:
.IP .IP
.EX .EX
.ta +4n .ta +4n
% \C'"' 'l[sc]' % \*x 'l[sc]'
% ls -l /tmp/qq* % ls -l /tmp/qq*
# ls -lrt /etc # ls -lrt /etc
% lc r* % lc r*
@ -75,7 +79,7 @@ command again:
.IP .IP
.EX .EX
.ta +4n .ta +4n
% \C'"'\C'"' lc % \*(xx lc
% lc r* % lc r*
ramfs rc read rio rm ramfs rc read rio rm
% %
@ -86,13 +90,9 @@ ramfs rc read rio rm
.SH SOURCE .SH SOURCE
.B \*9/bin .B \*9/bin
.SH BUGS .SH BUGS
.I \C'"' .I \*y
and and
.I \C'"'\C'"' .I \*(yy
are hard to type in shells other than are hard to type in shells other than
.IR rc (1). .IR rc (1).
.\" and in troff! .\" and in troff!
.PP
Don't run
.I \C'"'\C'"'
twice in a row.

View file

@ -145,7 +145,7 @@ parser prototype
.B \*9/lib/yaccpars .B \*9/lib/yaccpars
parser prototype using stdio parser prototype using stdio
.SH SOURCE .SH SOURCE
.B \*9/src/cmd/9yacc.c .B \*9/src/cmd/yacc.c
.SH "SEE ALSO" .SH "SEE ALSO"
.IR lex (1) .IR lex (1)
.br .br

395
man/man3/0intro.3 Normal file
View file

@ -0,0 +1,395 @@
.TH INTRO 3
.SH NAME
intro \- introduction to library functions
.SH SYNOPSIS
.nf
.B #include <u.h>
.PP
.B #include \fIany Unix headers\fR
.PP
.B #include <libc.h>
.PP
.B #include <auth.h>
.PP
.B #include <bio.h>
.PP
.B #include <draw.h>
.PP
.B #include <fcall.h>
.PP
.B #include <frame.h>
.PP
.B #include <mach.h>
.PP
.B #include <regexp.h>
.PP
.B #include <thread.h>
.fi
.SH DESCRIPTION
This section describes functions
in various libraries.
For the most part, each library is defined by a single C include
file, such as those listed above, and a single archive file containing
the library proper. The name of the archive is
.BI \*9/lib/lib x .a \f1,
where
.I x
is the base of the include file name, stripped of a leading
.B lib
if present.
For example,
.B <draw.h>
defines the contents of library
.BR \*9/lib/libdraw.a ,
which may be abbreviated when named to the loader as
.BR -ldraw .
In practice, each include file contains a magic pragma
that directs the loader to pick up the associated archive
automatically, so it is rarely necessary to tell the loader
which
libraries a program needs;
see
.IR 9c (1).
.PP
The library to which a function belongs is defined by the
header file that defines its interface.
The `C library',
.IR libc ,
contains most of the basic subroutines such
as
.IR strlen .
Declarations for all of these functions are
in
.BR <libc.h> ,
which must be preceded by
.RI ( needs )
an include of
.BR <u.h> .
The graphics library,
.IR draw ,
is defined by
.BR <draw.h> ,
which needs
.B <libc.h>
and
.BR <u.h> .
The Buffered I/O library,
.IR libbio ,
is defined by
.BR <bio.h> ,
which needs
.B <libc.h>
and
.BR <u.h> .
The ANSI C Standard I/O library,
.IR libstdio ,
is defined by
.BR <stdio.h> ,
which needs
.BR <u.h> .
There are a few other, less commonly used libraries defined on
individual pages of this section.
.PP
The include file
.BR <u.h> ,
a prerequisite of several other include files,
declares the architecture-dependent and -independent types, including:
.IR uchar ,
.IR ushort ,
and
.IR ulong ,
the unsigned integer types;
.IR schar ,
the signed char type;
.I vlong
and
.IR uvlong ,
the signed and unsigned very long integral types;
.IR Rune ,
the Unicode character type;
.IR u8int ,
.IR u16int ,
.IR u32int ,
and
.IR u64int ,
the unsigned integral types with specific widths;
.IR jmp_buf ,
the type of the argument to
.I setjmp
and
.IR longjmp ,
plus macros that define the layout of
.IR jmp_buf
(see
.IR setjmp (3));
.\" definitions of the bits in the floating-point control register
.\" as used by
.\" .IR getfcr (2);
and
the macros
.B va_arg
and friends for accessing arguments of variadic functions (identical to the
macros defined in
.B <stdarg.h>
in ANSI C).
.PP
Plan 9 and Unix use many similarly-named functions for different purposes:
for example, Plan 9's
.I dup
is closer to (but not exactly) Unix's
.IR dup2 .
To avoid name conflicts,
.B <libc.h>
defines many of these names as preprocessor macros to add a
.I p9
prefix,
so that
.I dup
becomes
.IR p9dup .
To disable this renaming,
.B #define
.B NOPLAN9DEFINES
before including
.BR <libc.h> .
If Unix headers must be included in a program,
they should be included after
.BR <u.h> ,
which sets important preprocessor directives
(for example, to enable 64-bit file offsets),
but before
.BR <libc.h> ,
to avoid renaming problems.
.SS "Name space
Files are collected into a hierarchical organization called a
.I "file tree
starting in a
.I directory
called the
.IR root .
File names, 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 the control spaces of
.SM ASCII
and Latin-1).
A path element cannot contain a slash.
.PP
When a process presents a file name to Plan 9, it is
.I evaluated
by the following algorithm.
Start with a directory that depends on the first
character of the path:
.L /
means the root of the main hierarchy,
and anything else means the process's current working directory.
Then for each path element, look up the element
in the directory, advance to that directory,
do a possible translation (see below), and repeat.
The last step may yield a directory or regular file.
.SS "File I/O"
Files are opened for input or output
by
.I open
or
.I create
(see
.IR open (3)).
These calls return an integer called a
.IR "file descriptor"
which identifies the file
to subsequent I/O calls,
notably
.IR read (3)
and
.IR write .
The system allocates the numbers by selecting the lowest unused descriptor.
They are allocated dynamically; there is no visible limit to the number of file
descriptors a process may have open.
They may be reassigned using
.IR dup (3).
File descriptors are indices into a
kernel resident
.IR "file descriptor table" .
Each process has an associated file descriptor table.
In threaded programs
(see
.IR thread (3)),
the file descriptor table is shared by all the procs.
.PP
By convention,
file descriptor 0 is the standard input,
1 is the standard output,
and 2 is the standard error output.
With one exception, 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.
The exception is that the system prints messages about broken processes
to file descriptor 2.
.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
.IR seek (3)
system call.
.PP
Directories may be opened like regular files.
Instead of reading them with
.IR read (3),
use the
.B Dir
structure-based
routines described in
.IR dirread (3).
The entry
corresponding to an arbitrary file can be retrieved by
.IR dirstat
(see
.IR stat (3))
or
.IR dirfstat ;
.I dirwstat
and
.I dirfwstat
write back entries, thus changing the properties of a file.
.PP
New files are made with
.I create
(see
.IR open (3))
and deleted with
.IR remove (3).
Directories may not directly be written;
.IR create ,
.IR remove ,
.IR wstat ,
and
.I fwstat
alter them.
.PP
.IR Pipe (3)
creates a connected pair of file descriptors,
useful for bidirectional local communication.
.SS "Process execution and control"
A new process is created
when an existing one calls
.IR fork (2).
The new (child) process starts out with
copies of the address space and most other attributes
of the old (parent) process.
In particular,
the child starts out running
the same program as the parent;
.IR exec (3)
will bring in a different one.
.PP
Each process has a unique integer process id;
a set of open files, indexed by file descriptor;
and a current working directory
(changed by
.IR chdir (2)).
.PP
Each process has a set of attributes \(em memory, open files,
name space, etc. \(em that may be shared or unique.
Flags to
.IR rfork
control the sharing of these attributes.
.PP
A process terminates by calling
.IR exits (3).
A parent process may call
.IR wait (3)
to wait for some child to terminate.
A bit of status information
may be passed from
.I exits
to
.IR wait .
On Plan 9, the status information is an arbitrary text string,
but on Unix it is a single integer.
The Plan 9 interface persists here, although the functionality does not.
Instead, empty strings are converted to exit status 0 and non-empty strings to 1.
.PP
A process can go to sleep for a specified time by calling
.IR sleep (3).
.PP
There is a
.I notification
mechanism for telling a process about events such as address faults,
floating point faults, and messages from other processes.
A process uses
.IR notify (3)
to register the function to be called (the
.IR "notification handler" )
when such events occur.
.SS Multithreading
Where possible according to the ANSI C standard,
the main C library works properly in multiprocess programs;
.IR malloc ,
.IR print ,
and the other routines use locks (see
.IR lock (3))
to synchronize access to their data structures.
The graphics library defined in
.B <draw.h>
is also multi-process capable; details are in
.IR graphics (3).
In general, though, multiprocess programs should use some form of synchronization
to protect shared data.
.PP
The thread library, defined in
.BR <thread.h> ,
provides support for multiprocess programs.
It includes a data structure called a
.B Channel
that can be used to send messages between processes,
and coroutine-like
.IR threads ,
which enable multiple threads of control within a single process.
The threads within a process are scheduled by the library, but there is
no pre-emptive scheduling within a process; thread switching occurs
only at communication or synchronization points.
.PP
Most programs using the thread library
comprise multiple processes
communicating over channels, and within some processes,
multiple threads. Since I/O calls may block, a system
call may block all the threads in a process.
Therefore, a program that shouldn't block unexpectedly will use a process
to serve the I/O request, passing the result to the main processes
over a channel when the request completes.
For examples of this design, see
.IR ioproc (3)
or
.IR mouse (3).
.SH SEE ALSO
.IR nm (1),
.IR 9c (1)
.SH DIAGNOSTICS
Math functions in
.I libc
return
special values when the function is undefined for the
given arguments or when the value is not representable
(see
.IR nan (3)).
.PP
Some of the functions in
.I libc
are system calls and many others employ system calls in their implementation.
All system calls return integers,
with \-1 indicating that an error occurred;
.IR errstr (3)
recovers a string describing the error.
Some user-level library functions also use the
.I errstr
mechanism to report errors.
Functions that may affect the value of the error string are said to ``set
.IR errstr '';
it is understood that the error string is altered only if an error occurs.

View file

@ -109,13 +109,13 @@ and
.B Fid .B Fid
structures are allocated one-to-one with uncompleted structures are allocated one-to-one with uncompleted
requests and active fids, and are described in requests and active fids, and are described in
.IR 9pfid (3). .IR 9p-fid (3).
.PP .PP
The behavior of The behavior of
.I srv .I srv
depends on whether there is a file tree depends on whether there is a file tree
(see (see
.IR 9pfile (3)) .IR 9p-file (3))
associated with the server, that is, associated with the server, that is,
whether the whether the
.B tree .B tree
@ -717,8 +717,8 @@ accept the
option to increment option to increment
.BR chatty9p . .BR chatty9p .
.SH EXAMPLES .SH EXAMPLES
\*9/src/lib9p/ramfs.c .B \*9/src/lib9p/ramfs.c
is an example of simple single-threaded file servers. is an example of a simple single-threaded file server.
On Plan 9, see On Plan 9, see
.IR archfs , .IR archfs ,
.IR cdfs , .IR cdfs ,
@ -744,6 +744,6 @@ or is maintained elsewhere.
.SH SOURCE .SH SOURCE
.B \*9/src/lib9p .B \*9/src/lib9p
.SH SEE ALSO .SH SEE ALSO
.IR 9pfid (3), .IR 9p-fid (3),
.IR 9pfile (3), .IR 9p-file (3),
.IR intro (9p) .IR intro (9p)

View file

@ -9,8 +9,8 @@ CFid, CFsys, fsinit, fsmount, fsroot, fssetroot, fsunmount, nsmount, fsversion,
.B #include <fcall.h> .B #include <fcall.h>
.PP .PP
.B #include <9pclient.h> .B #include <9pclient.h>
.ta +\w'\fLCFsys* 'u
.PP .PP
.ta +'\fLCFsys* 'u
.B .B
CFsys* fsmount(int fd, char *aname) CFsys* fsmount(int fd, char *aname)
.PP .PP
@ -214,7 +214,7 @@ The path is parsed as a slash-separated sequence of path elements,
as on Unix and Plan 9. as on Unix and Plan 9.
Elements that are empty or Elements that are empty or
dot dot
.B ( . ) .RB ( . )
are ignored. are ignored.
.PP .PP
Once opened, these fids can be read and written using Once opened, these fids can be read and written using

View file

@ -1,3 +1,48 @@
0intro 0intro.3
intro 0intro.3
9p-cmdbuf 9p-cmdbuf.3
Cmdbuf 9p-cmdbuf.3
lookupcmd 9p-cmdbuf.3
parsecmd 9p-cmdbuf.3
respondcmderror 9p-cmdbuf.3
9p-fid 9p-fid.3
Fid 9p-fid.3
Fidpool 9p-fid.3
Req 9p-fid.3
Reqpool 9p-fid.3
allocfid 9p-fid.3
allocfidpool 9p-fid.3
allocreq 9p-fid.3
allocreqpool 9p-fid.3
closefid 9p-fid.3
closereq 9p-fid.3
freefidpool 9p-fid.3
freereqpool 9p-fid.3
lookupfid 9p-fid.3
lookupreq 9p-fid.3
removefid 9p-fid.3
removereq 9p-fid.3
9p-file 9p-file.3
File 9p-file.3
Tree 9p-file.3
alloctree 9p-file.3
closedirfile 9p-file.3
closefile 9p-file.3
createfile 9p-file.3
freetree 9p-file.3
hasperm 9p-file.3
opendirfile 9p-file.3
readdirfile 9p-file.3
removefile 9p-file.3
walkfile 9p-file.3
9p-intmap 9p-intmap.3
Intmap 9p-intmap.3
allocmap 9p-intmap.3
caninsertkey 9p-intmap.3
deletekey 9p-intmap.3
freemap 9p-intmap.3
insertkey 9p-intmap.3
lookupkey 9p-intmap.3
9p 9p.3 9p 9p.3
Srv 9p.3 Srv 9p.3
dirread9p 9p.3 dirread9p 9p.3
@ -39,41 +84,6 @@ fsunmount 9pclient.3
fsversion 9pclient.3 fsversion 9pclient.3
fswrite 9pclient.3 fswrite 9pclient.3
nsmount 9pclient.3 nsmount 9pclient.3
9pcmdbuf 9pcmdbuf.3
Cmdbuf 9pcmdbuf.3
lookupcmd 9pcmdbuf.3
parsecmd 9pcmdbuf.3
respondcmderror 9pcmdbuf.3
9pfid 9pfid.3
Fid 9pfid.3
Fidpool 9pfid.3
Req 9pfid.3
Reqpool 9pfid.3
allocfid 9pfid.3
allocfidpool 9pfid.3
allocreq 9pfid.3
allocreqpool 9pfid.3
closefid 9pfid.3
closereq 9pfid.3
freefidpool 9pfid.3
freereqpool 9pfid.3
lookupfid 9pfid.3
lookupreq 9pfid.3
removefid 9pfid.3
removereq 9pfid.3
9pfile 9pfile.3
File 9pfile.3
Tree 9pfile.3
alloctree 9pfile.3
closedirfile 9pfile.3
closefile 9pfile.3
createfile 9pfile.3
freetree 9pfile.3
hasperm 9pfile.3
opendirfile 9pfile.3
readdirfile 9pfile.3
removefile 9pfile.3
walkfile 9pfile.3
Dx addpt.3 Dx addpt.3
Dy addpt.3 Dy addpt.3
Pt addpt.3 Pt addpt.3
@ -233,15 +243,11 @@ accept dial.3
announce dial.3 announce dial.3
dial dial.3 dial dial.3
dialparse dial.3 dialparse dial.3
hangup dial.3
listen dial.3 listen dial.3
netmkaddr dial.3 netmkaddr dial.3
reject dial.3 reject dial.3
dirread dirread.3 dirread dirread.3
dirreadall dirread.3 dirreadall dirread.3
Disk disk.3
disk disk.3
opendisk disk.3
ARROW draw.3 ARROW draw.3
Image draw.3 Image draw.3
_string draw.3 _string draw.3
@ -473,14 +479,6 @@ targetid html.3
targetname html.3 targetname html.3
toStr html.3 toStr html.3
validitems html.3 validitems html.3
Intmap intmap.3
allocmap intmap.3
caninsertkey intmap.3
deletekey intmap.3
freemap intmap.3
insertkey intmap.3
intmap intmap.3
lookupkey intmap.3
closeioproc ioproc.3 closeioproc ioproc.3
iocall ioproc.3 iocall ioproc.3
ioclose ioproc.3 ioclose ioproc.3
@ -927,9 +925,6 @@ pwrite read.3
read read.3 read read.3
readn read.3 readn read.3
write read.3 write read.3
RGB readcolmap.3
readcolmap readcolmap.3
writecolmap readcolmap.3
regcomp regexp.3 regcomp regexp.3
regcomplit regexp.3 regcomplit regexp.3
regcompnl regexp.3 regcompnl regexp.3
@ -939,15 +934,6 @@ regexp regexp.3
regsub regexp.3 regsub regexp.3
rregexec regexp.3 rregexec regexp.3
rregsub regexp.3 rregsub regexp.3
regcomp regexp9.3
regcomplit regexp9.3
regcompnl regexp9.3
regerror regexp9.3
regexec regexp9.3
regexp9 regexp9.3
regsub regexp9.3
rregexec regexp9.3
rregsub regexp9.3
rfork rfork.3 rfork rfork.3
X509dump rsa.3 X509dump rsa.3
@ -993,11 +979,6 @@ runestrncmp runestrcat.3
runestrncpy runestrcat.3 runestrncpy runestrcat.3
runestrrchr runestrcat.3 runestrrchr runestrcat.3
runestrstr runestrcat.3 runestrstr runestrcat.3
openscsi scsi.3
scsi scsi.3
scsicmd scsi.3
scsierror scsi.3
scsiready scsi.3
hmac_md5 sechash.3 hmac_md5 sechash.3
hmac_sha1 sechash.3 hmac_sha1 sechash.3
md4 sechash.3 md4 sechash.3
@ -1125,7 +1106,6 @@ threadint thread.3
threadintgrp thread.3 threadintgrp thread.3
threadkill thread.3 threadkill thread.3
threadkillgrp thread.3 threadkillgrp thread.3
threadlinklibrary thread.3
threadmain thread.3 threadmain thread.3
threadnotify thread.3 threadnotify thread.3
threadpid thread.3 threadpid thread.3

View file

@ -144,3 +144,35 @@ and
.I atol .I atol
accept octal and hexadecimal numbers in the style of C, accept octal and hexadecimal numbers in the style of C,
contrary to the ANSI specification. contrary to the ANSI specification.
.PP
.IR Atof ,
.IR strtod ,
.IR strtol ,
.IR strtoul ,
.IR strtoll ,
and
.IR strtoull
are not provided:
they are expected to be provided by the underlying system.
.PP
Because they are implemented in the fmt library,
.I charstod
and
.I strtod
are preprocessor macros defined as
.I fmtcharstod
and
.IR fmtstrtod .
.PP
To avoid name conflicts with the underlying system,
.IR atoi ,
.IR atol ,
and
.I atoll
are preprocessor macros defined as
.IR p9atoi ,
.IR p9atol ,
and
.IR p9atoll ;
see
.IR intro (3).

View file

@ -20,7 +20,7 @@ void *binalloc(Bin **bp, ulong size, int clr);
void *bingrow(Bin **bp, void *op, ulong osize, void *bingrow(Bin **bp, void *op, ulong osize,
.br .br
.B .B
ulong size, int clr); ulong size, int clr);
.PP .PP
.B .B
void binfree(Bin **bp); void binfree(Bin **bp);

View file

@ -2,7 +2,7 @@
.SH NAME .SH NAME
Bopen, Bfdopen, Binit, Binits, Brdline, Brdstr, Bgetc, Bgetrune, Bgetd, Bungetc, Bungetrune, Bread, Bseek, Boffset, Bfildes, Blinelen, Bputc, Bputrune, Bprint, Bvprint, Bwrite, Bflush, Bterm, Bbuffered \- buffered input/output Bopen, Bfdopen, Binit, Binits, Brdline, Brdstr, Bgetc, Bgetrune, Bgetd, Bungetc, Bungetrune, Bread, Bseek, Boffset, Bfildes, Blinelen, Bputc, Bputrune, Bprint, Bvprint, Bwrite, Bflush, Bterm, Bbuffered \- buffered input/output
.SH SYNOPSIS .SH SYNOPSIS
.ta \w'Biobuf* 'u .ta \w'\fLBiobuf* 'u
.B #include <u.h> .B #include <u.h>
.br .br
.B #include <libc.h> .B #include <libc.h>

View file

@ -13,12 +13,12 @@ complete, freecompletion \- file name completion
.ta \w' 'u +\w' 'u +\w' 'u +\w' 'u +\w' 'u .ta \w' 'u +\w' 'u +\w' 'u +\w' 'u +\w' 'u
typedef struct Completion Completion; typedef struct Completion Completion;
struct Completion{ struct Completion{
uchar advance; /* whether forward progress has been made */ uchar advance;
uchar complete; /* whether the completion now represents a file or directory */ uchar complete;
char *string; /* the string to advance, suffixed " " or "/" for file or directory */ char *string;
int nmatch; /* number of files that matched */ int nmatch;
int nfile; /* number of files returned */ int nfile;
char **filename; /* their names */ char **filename;
}; };
.fi .fi

View file

@ -90,9 +90,26 @@ is not
.SH BUGS .SH BUGS
The return values point to static data The return values point to static data
whose content is overwritten by each call. whose content is overwritten by each call.
.br .PP
Daylight Savings Time is ``normal'' in the Southern hemisphere. Daylight Savings Time is ``normal'' in the Southern hemisphere.
.br .PP
These routines are not equipped to handle non-\c These routines are not equipped to handle non-\c
.SM ASCII .SM ASCII
text, and are provincial anyway. text, and are provincial anyway.
.PP
To avoid name conflicts with the underlying system,
.IR ctime ,
.IR localtime ,
.IR gmtime ,
.IR asctime ,
and
.I tm2sec
are preprocessor macros defined as
.IR p9ctime ,
.IR p9localtime ,
.IR p9gmtime ,
.IR p9asctime ,
and
.IR p9tm2sec ;
see
.IR intro (3).

View file

@ -1,6 +1,6 @@
.TH DIAL 3 .TH DIAL 3
.SH NAME .SH NAME
dial, hangup, announce, listen, accept, reject, netmkaddr, dialparse \- make and break network connections dial, announce, listen, accept, reject, netmkaddr, dialparse \- make and break network connections
.SH SYNOPSIS .SH SYNOPSIS
.B #include <u.h> .B #include <u.h>
.br .br
@ -34,7 +34,10 @@ char* netmkaddr(char *addr, char *defnet, char *defservice)
.\" void freenetconninfo(NetConnINfo*) .\" void freenetconninfo(NetConnINfo*)
.PP .PP
.B .B
int dialparse(char *addr, char **net, char **unix, u32int *host, int *port) int dialparse(char *addr, char **net, char **unix,
.br
.B
u32int *host, int *port)
.SH DESCRIPTION .SH DESCRIPTION
For these routines, For these routines,
.I addr .I addr
@ -310,3 +313,17 @@ bekremvax(void)
and and
.I listen .I listen
return \-1 if they fail. return \-1 if they fail.
.SH BUGS
To avoid name conflicts with the underlying system,
.IR dial ,
.IR announce ,
.IR listen ,
.IR netmkaddr ,
and
.I reject
are preprocessor macros defined as
.IR p9dial ,
.IR p9announce ,
and so on;
see
.IR intro (3).

View file

@ -31,8 +31,9 @@ for the new file descriptor
Sets Sets
.IR errstr . .IR errstr .
.SH BUGS .SH BUGS
.I Dup To avoid name conflicts with the underlying system,
is a macro for .I dup
.I p9dup is a preprocessor macro defined as
to avoid name conflicts with the Unix function; see .IR p9dup ;
see
.IR intro (3). .IR intro (3).

View file

@ -382,3 +382,8 @@ is nil, it restores the image to the default arrow.
.IR plumb (3), .IR plumb (3),
.\" .IR cons (3), .\" .IR cons (3),
.IR draw (3) .IR draw (3)
.SH BUGS
.I Etimer
and
.I estart
are unimplemented.

View file

@ -128,3 +128,14 @@ use the user's current path to locate
This is a clumsy way to deal with Unix's lack of This is a clumsy way to deal with Unix's lack of
a union directory for a union directory for
.BR /bin . .BR /bin .
.PP
To avoid name conflicts with the underlying system,
.I exec
and
.I execl
are preprocessor macros defined as
.I p9exec
and
.IR p9execl ;
see
.IR intro (3).

View file

@ -93,3 +93,14 @@ non-empty messages.
Exit codes 97 through 99 are used by the thread library to signal Exit codes 97 through 99 are used by the thread library to signal
internal synchronization errors between the main program internal synchronization errors between the main program
and a proxy process that implements backgrounding. and a proxy process that implements backgrounding.
.PP
To avoid name conflicts with the underlying system,
.I atexit
and
.I atexitdont
are preprocessor macros defined as
.I p9atexit
and
.IR p9atexitdont ;
see
.IR intro (3).

View file

@ -8,7 +8,7 @@ deflateinit, deflate, deflatezlib, deflateblock, deflatezlibblock, inflateinit,
.br .br
.B #include <flate.h> .B #include <flate.h>
.PP .PP
.ta \w'ulongmm'u .ta \w'\fLulongmm'u +\w'\fL 'u
.PP .PP
.B .B
int deflateinit(void) int deflateinit(void)
@ -17,37 +17,37 @@ int deflateinit(void)
int deflate(void *wr, int (*w)(void*,void*,int), int deflate(void *wr, int (*w)(void*,void*,int),
.br .br
.B .B
void *rr, int (*r)(void*,void*,int), void *rr, int (*r)(void*,void*,int),
.br .br
.B .B
int level, int debug) int level, int debug)
.PP .PP
.B .B
int deflatezlib(void *wr, int (*w)(void*,void*,int), int deflatezlib(void *wr, int (*w)(void*,void*,int),
.br .br
.B .B
void *rr, int (*r)(void*,void*,int), void *rr, int (*r)(void*,void*,int),
.br .br
.B .B
int level, int debug) int level, int debug)
.PP .PP
.B .B
int deflateblock(uchar *dst, int dsize, int deflateblock(uchar *dst, int dsize,
.br .br
.B .B
uchar *src, int ssize, uchar *src, int ssize,
.br .br
.B .B
int level, int debug) int level, int debug)
.PP .PP
.B .B
int deflatezlibblock(uchar *dst, int dsize, int deflatezlibblock(uchar *dst, int dsize,
.br .br
.B .B
uchar *src, int ssize, uchar *src, int ssize,
.br .br
.B .B
int level, int debug) int level, int debug)
.PP .PP
.B .B
int inflateinit(void) int inflateinit(void)
@ -56,25 +56,25 @@ int inflateinit(void)
int inflate(void *wr, int (*w)(void*, void*, int), int inflate(void *wr, int (*w)(void*, void*, int),
.br .br
.B .B
void *getr, int (*get)(void*)) void *getr, int (*get)(void*))
.PP .PP
.B .B
int inflatezlib(void *wr, int (*w)(void*, void*, int), int inflatezlib(void *wr, int (*w)(void*, void*, int),
.br .br
.B .B
void *getr, int (*get)(void*)) void *getr, int (*get)(void*))
.PP .PP
.B .B
int inflateblock(uchar *dst, int dsize, int inflateblock(uchar *dst, int dsize,
.br .br
.B .B
uchar *src, int ssize) uchar *src, int ssize)
.PP .PP
.B .B
int inflatezlibblock(uchar *dst, int dsize, int inflatezlibblock(uchar *dst, int dsize,
.br .br
.B .B
uchar *src, int ssize) uchar *src, int ssize)
.PP .PP
.B .B
char *flateerr(int error) char *flateerr(int error)

View file

@ -370,4 +370,3 @@ main(...)
.SH DIAGNOSTICS .SH DIAGNOSTICS
These routines return negative numbers or nil for errors and set These routines return negative numbers or nil for errors and set
.IR errstr . .IR errstr .
.SH BUGS

View file

@ -75,7 +75,7 @@ This library supports
of editable text in a single font on raster displays, such as in of editable text in a single font on raster displays, such as in
.IR sam (1) .IR sam (1)
and and
.IR rio (1). .IR 9term (1).
Frames may hold any character except NUL (0). Frames may hold any character except NUL (0).
Long lines are folded and tabs are at fixed intervals. Long lines are folded and tabs are at fixed intervals.
.PP .PP

View file

@ -22,8 +22,10 @@ very least, unguessable numbers.
.I Genrandom .I Genrandom
fills a buffer with bytes from the X9.17 pseudo-random fills a buffer with bytes from the X9.17 pseudo-random
number generator. The X9.17 generator is seeded by 24 number generator. The X9.17 generator is seeded by 24
truly random bytes read from truly random bytes read via
.BR /dev/random . .I truerand
(see
.IR rand (3)).
.PP .PP
.I Prng .I Prng
uses the native uses the native

View file

@ -35,8 +35,13 @@ to
Sets Sets
.IR errstr . .IR errstr .
.SH BUGS .SH BUGS
Defined as macros for To avoid name conflicts with the underlying system,
.I getenv
and
.I putenv
are preprocessor macros defined as
.I p9getenv .I p9getenv
and and
.I p9putenv .IR p9putenv ;
to avoid name conflicts with Unix library calls. see
.IR intro (3).

View file

@ -23,8 +23,15 @@ bytes in the buffer provided.
.SH SOURCE .SH SOURCE
.B \*9/src/lib9/getwd.c .B \*9/src/lib9/getwd.c
.SH "SEE ALSO" .SH "SEE ALSO"
.IR pwd (1), .IR pwd (1)
.SH DIAGNOSTICS .SH DIAGNOSTICS
On error, zero is returned. On error, zero is returned.
.IR Errstr (3) .IR Errstr (3)
may be consulted for more information. may be consulted for more information.
.SH BUGS
To avoid name conflicts with the underlying system,
.I getwd
is a preprocessor macro defined as
.IR p9getwd ;
see
.IR intro (3).

View file

@ -615,7 +615,7 @@ if(gengetwindow(display, "/tmp/winname",
\&... \&...
.EE .EE
.SH FILES .SH FILES
.BR /lib/font/bit " directory of fonts .BR \*9/font/bit " directory of fonts
.SH SOURCE .SH SOURCE
.B \*9/src/libdraw .B \*9/src/libdraw
.SH "SEE ALSO" .SH "SEE ALSO"
@ -649,3 +649,7 @@ and might be more appropriately called
.B white .B white
and and
.BR black . .BR black .
.PP
These manual pages contain many references to
the now-fictitious
.BR /dev/draw .

View file

@ -168,3 +168,18 @@ When
and and
.I free .I free
detect such corruption, they abort. detect such corruption, they abort.
.PP
To avoid name conflicts with the system versions of these functions,
.IR malloc ,
.IR realloc ,
.IR calloc ,
and
.I free
are preprocessor macros defined as
.IR p9malloc ,
.IR p9realloc ,
.IR p9calloc ,
and
.IR p9free ;
see
.IR intro (3).

View file

@ -449,7 +449,6 @@ prints to a serial line rather than the screen, for obvious reasons.
is unusual in using a subfont rather than a font, is unusual in using a subfont rather than a font,
and in having no parameter to align the source. and in having no parameter to align the source.
.PP .PP
.I Libmemdraw These functions are
is archived into archived into
.IR libdraw . .IR libdraw .

View file

@ -304,6 +304,6 @@ are in compressed image format
.IR window (3), .IR window (3),
.IR draw (3) .IR draw (3)
.SH BUGS .SH BUGS
.I Libmemlayer These functions
is archived into are archived into
.IR libdraw . .IR libdraw .

View file

@ -1,6 +1,6 @@
.TH MP 3 .TH MP 3
.SH NAME .SH NAME
mpsetminbits, mpnew, mpfree, mpbits, mpnorm, mpcopy, mpassign, mprand, strtomp, mpfmt,mptoa, betomp, mptobe, letomp, mptole, mptoui, uitomp, mptoi, itomp, uvtomp, mptouv, vtomp, mptov, mpdigdiv, mpadd, mpsub, mpleft, mpright, mpmul, mpexp, mpmod, mpdiv, mpcmp, mpextendedgcd, mpinvert, mpsignif, mplowbits0, mpvecdigmuladd, mpvecdigmulsub, mpvecadd, mpvecsub, mpveccmp, mpvecmul, mpmagcmp, mpmagadd, mpmagsub, crtpre, crtin, crtout, crtprefree, crtresfree, mpfactorial \- extended precision arithmetic mpsetminbits, mpnew, mpfree, mpbits, mpnorm, mpcopy, mpassign, mprand, strtomp, mpfmt,mptoa, betomp, mptobe, letomp, mptole, mptoui, uitomp, mptoi, itomp, uvtomp, mptouv, vtomp, mptov, mpdigdiv, mpadd, mpsub, mpleft, mpright, mpmul, mpexp, mpmod, mpdiv, mpfactorial, mpcmp, mpextendedgcd, mpinvert, mpsignif, mplowbits0, mpvecdigmuladd, mpvecdigmulsub, mpvecadd, mpvecsub, mpveccmp, mpvecmul, mpmagcmp, mpmagadd, mpmagsub, crtpre, crtin, crtout, crtprefree, crtresfree \- extended precision arithmetic
.SH SYNOPSIS .SH SYNOPSIS
.B #include <u.h> .B #include <u.h>
.br .br
@ -108,6 +108,9 @@ void mpmod(mpint *b, mpint *m, mpint *remainder)
void mpdiv(mpint *dividend, mpint *divisor, mpint *quotient, mpint *remainder) void mpdiv(mpint *dividend, mpint *divisor, mpint *quotient, mpint *remainder)
.PP .PP
.B .B
mpint* mpfactorial(ulong n)
.PP
.B
int mpcmp(mpint *b1, mpint *b2) int mpcmp(mpint *b1, mpint *b2)
.PP .PP
.B .B
@ -162,9 +165,6 @@ void crtprefree(CRTpre *cre)
void crtresfree(CRTres *res) void crtresfree(CRTres *res)
.PP .PP
.B .B
mpint* mpfactorial(ulong n)
.PP
.B
mpint *mpzero, *mpone, *mptwo mpint *mpzero, *mpone, *mptwo
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
@ -441,6 +441,10 @@ Otherwise,
.BR "quotient = dividend/divisor" . .BR "quotient = dividend/divisor" .
.BR "remainder = dividend % divisor" . .BR "remainder = dividend % divisor" .
.TP .TP
.I mpfactorial
returns factorial of
.IR n .
.TP
.I mpcmp .I mpcmp
returns -1, 0, or +1 as returns -1, 0, or +1 as
.I b1 .I b1
@ -575,9 +579,5 @@ free
and and
.I CRTres .I CRTres
structures respectively. structures respectively.
.PP
.I Mpfactorial
returns the factorial of
.IR n .
.SH SOURCE .SH SOURCE
.B \*9/src/libmp .B \*9/src/libmp

View file

@ -7,7 +7,7 @@ muldiv, umuldiv \- high-precision multiplication and division
.B #include <libc.h> .B #include <libc.h>
.PP .PP
.B .B
long muldiv(long a, long b, long c) long muldiv(long a, long b, long c)
.PP .PP
.B .B
ulong umuldiv(ulong a, ulong b, ulong c) ulong umuldiv(ulong a, ulong b, ulong c)

View file

@ -7,6 +7,7 @@ Mux, muxinit, muxrpc, muxthreads \- protocol multiplexor
.nf .nf
.B .B
.ta +4n .ta +4n
.ft B
struct Mux struct Mux
{ {
uint mintag; uint mintag;

View file

@ -207,7 +207,7 @@ is a common set that includes:
.PP .PP
.RS 3n .RS 3n
.nf .nf
.ta \w'\fLsys: write on closed pipe \fP'u \w'system call address argument out of range 'u .ta \w'\fLsys: segmentation violation \fP'u +\w'process requested to exit 'u
\fINote\fP \fIMeaning\fP \fIUnix signal\fP \fINote\fP \fIMeaning\fP \fIUnix signal\fP
\fLinterrupt\fP user interrupt (DEL key) SIGINTR \fLinterrupt\fP user interrupt (DEL key) SIGINTR
\fLhangup\fP I/O connection closed SIGHUP \fLhangup\fP I/O connection closed SIGHUP
@ -217,6 +217,8 @@ is a common set that includes:
\fLsys: kill\fP process forced to exit SIGKILL \fLsys: kill\fP process forced to exit SIGKILL
\fLsys: bus error\fP bus error SIGBUS \fLsys: bus error\fP bus error SIGBUS
\fLsys: segmentation violation\fP segmentation violation SIGSEGV \fLsys: segmentation violation\fP segmentation violation SIGSEGV
\fLsys: write on closed pipe\fP write on closed pipe SIGPIPE
\fLsys: child\fP child wait status change SIGCHLD
.fi .fi
.RE .RE
.PP .PP

View file

@ -1,18 +1,10 @@
.TH PRINT 3 .TH PRINT 3
.de EX
.nf
.ft B
..
.de EE
.fi
.ft R
..
.SH NAME .SH NAME
print, fprint, sprint, snprint, seprint, smprint, runesprint, runesnprint, runeseprint, runesmprint, vfprint, vsnprint, vseprint, vsmprint, runevsnprint, runevseprint, runevsmprint \- print formatted output print, fprint, sprint, snprint, seprint, smprint, runesprint, runesnprint, runeseprint, runesmprint, vfprint, vsnprint, vseprint, vsmprint, runevsnprint, runevseprint, runevsmprint \- print formatted output
.SH SYNOPSIS .SH SYNOPSIS
.B #include <utf.h> .B #include <u.h>
.PP .PP
.B #include <fmt.h> .B #include <libc.h>
.PP .PP
.ta \w'\fLchar* 'u .ta \w'\fLchar* 'u
.B .B
@ -72,7 +64,10 @@ Rune* runevsmprint(Rune *format, va_list v)
writes text to the standard output. writes text to the standard output.
.I Fprint .I Fprint
writes to the named output writes to the named output
file descriptor. file descriptor:
a buffered form
is described in
.IR bio (3).
.I Sprint .I Sprint
places text places text
followed by the NUL character followed by the NUL character
@ -96,7 +91,7 @@ but will not place more than
bytes in bytes in
.IR s . .IR s .
Its result is always NUL-terminated and holds the maximal Its result is always NUL-terminated and holds the maximal
number of characters that can fit. number of complete UTF-8 characters that can fit.
.I Seprint .I Seprint
is like is like
.IR snprint , .IR snprint ,
@ -191,27 +186,26 @@ described below.
.PP .PP
The numeric verbs The numeric verbs
.BR d , .BR d ,
.BR i ,
.BR u ,
.BR o , .BR o ,
.BR b , .BR b ,
.BR x , .BR x ,
and and
.B X .B X
format their arguments in decimal, decimal, format their arguments in decimal,
unsigned decimal, octal, binary, hexadecimal, and upper case hexadecimal. octal, binary, hexadecimal, and upper case hexadecimal.
Each interprets the flags Each interprets the flags
.BR 0 , .BR 0 ,
.BR h , .BR h ,
.BR hh , .BR hh ,
.BR l , .BR l ,
.BR u ,
.BR + , .BR + ,
.BR - , .BR - ,
.BR , , .BR , ,
and and
.B # .B #
to mean pad with zeros, to mean pad with zeros,
short, byte, long, always print a sign, left justified, commas every three digits, short, byte, long, unsigned, always print a sign, left justified, commas every three digits,
and alternate format. and alternate format.
Also, a space character in the flag Also, a space character in the flag
position is like position is like
@ -221,12 +215,9 @@ If neither
short nor long is specified, short nor long is specified,
then the argument is an then the argument is an
.BR int . .BR int .
If an unsigned verb is specified, If unsigned is specified,
then the argument is interpreted as a then the argument is interpreted as a
positive number and no sign is output; positive number and no sign is output.
space and
.B +
flags are ignored for unsigned verbs.
If two If two
.B l .B l
flags are given, flags are given,
@ -249,8 +240,8 @@ for
.B o .B o
conversion, the number is preceded by a conversion, the number is preceded by a
.B 0 .B 0
if it doesn't already begin with one. if it doesn't already begin with one;
For non-zero numbers and for
.B x .B x
conversion, the number is preceded by conversion, the number is preceded by
.BR 0x ; .BR 0x ;
@ -345,7 +336,7 @@ conversions, trailing zeros are not removed.
.PP .PP
The The
.B s .B s
verb copies a string verb copies a NUL-terminated string
(pointer to (pointer to
.BR char ) .BR char )
to the output. to the output.
@ -397,9 +388,7 @@ but that will change if pointers and integers are different sizes.
The The
.B r .B r
verb takes no arguments; it copies the error string returned by a call to verb takes no arguments; it copies the error string returned by a call to
.IR strerror (3) .IR errstr (3).
with an argument of
.IR errno.
.PP .PP
Custom verbs may be installed using Custom verbs may be installed using
.IR fmtinstall (3). .IR fmtinstall (3).
@ -414,12 +403,12 @@ void fatal(char *msg, ...)
char buf[1024], *out; char buf[1024], *out;
va_list arg; va_list arg;
out = vseprint(buf, buf+sizeof buf, "Fatal error: "); out = seprint(buf, buf+sizeof buf, "Fatal error: ");
va_start(arg, msg); va_start(arg, msg);
out = vseprint(out, buf+sizeof buf, msg, arg); out = vseprint(out, buf+sizeof buf, msg, arg);
va_end(arg); va_end(arg);
write(2, buf, out-buf); write(2, buf, out-buf);
exit(1); exits("fatal error");
} }
.EE .EE
.SH SEE ALSO .SH SEE ALSO
@ -438,9 +427,9 @@ the main difference is that
.B b .B b
and and
.B r .B r
are not in ANSI and some are not in ANSI and
.B C9X .B u
verbs are missing. is a flag here instead of a verb.
Also, and distinctly not a bug, Also, and distinctly not a bug,
.I print .I print
and friends generate and friends generate
@ -449,8 +438,8 @@ rather than
.SM ASCII. .SM ASCII.
.PP .PP
There is no There is no
.BR runeprint , .IR runeprint ,
.BR runefprint , .IR runefprint ,
etc. because runes are byte-order dependent and should not be written directly to a file; use the etc. because runes are byte-order dependent and should not be written directly to a file; use the
UTF output of UTF output of
.I print .I print

Some files were not shown because too many files have changed in this diff Show more