commit c8b6342d3c2a167dec16931815926e9e4387e7ef from: rsc date: Thu Jan 13 04:49:19 2005 UTC Many small edits. commit - 741f510ce758f77ed5193256fb693a09a7daecce commit + c8b6342d3c2a167dec16931815926e9e4387e7ef blob - 087cda3da84a2e165d37c4ca6f45ec25b0072fc8 blob + 39e6eb1a50a0a817407fc8b7ed1bd21d2190ba10 --- bin/9l +++ bin/9l @@ -91,6 +91,7 @@ then do eval "have$i() { false; }" done + havethread() { false; } # now find correct order libsl="" @@ -129,6 +130,12 @@ then fi libsl="$libsl -l9" + # cycle: lib9 expects p9main, which is defined in libthread. oops. + if $havethread + then + libsl="$libsl -lthread" + fi + if [ "x$needdraw" = xtrue ] then if [ "x$X11" = "x" ] @@ -194,9 +201,11 @@ if $verbose then echo $ld -L$PLAN9/lib "$@" $libsl $extralibs fi -if ! $ld -L$PLAN9/lib "$@" $libsl $extralibs +if $ld -L$PLAN9/lib "$@" $libsl $extralibs then + exit 0 +else rm -f $target exit 1 fi -exit 0 + blob - c55244cbbe5e24da0e6b85ac54735966e6e92bdc blob + e36c3caf56eedf037be74e200a58bc98d9b35f9e --- bin/doctype +++ bin/doctype @@ -24,7 +24,7 @@ ifs=' '{ 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 | awk ' BEGIN { files = "'$files'" } blob - b50b51906ddf339a3c35caacf8cc246f808dc455 blob + 7f4e343b35eb92c80b2756122a8b45667ba750b4 --- bin/g +++ bin/g @@ -34,4 +34,4 @@ case $# in files="$@" esac -exec grep -n $flags -- "$pattern" $files /dev/null +exec 9 grep -n $flags -- "$pattern" $files /dev/null blob - 5685c286025390e51212bc2bf4dff18bf569b8a2 blob + a6cc377bb121e6ad3a4d57b289311d7f3ee6e092 --- bin/lc +++ bin/lc @@ -1,3 +1,3 @@ #!/bin/sh -ls "$@" | mc +9 ls "$@" | mc blob - 8b5e974789d4df8036c8fd72612ae71d474faad1 blob + f11fd04da1ec1c5047ef6febeba3c5e545310949 --- bin/man +++ bin/man @@ -60,11 +60,11 @@ if(~ $#sec 0) { } ix=$S/man$sec/INDEX if(~ $#* 1) pat='^'^$1^' ' -if not pat='^('^`{echo $* | 9sed 's/ /|/g'}^') ' +if not pat='^('^`{echo $* | 9 sed 's/ /|/g'}^') ' fils=() for(i in $S/man$sec){ - if(/bin/test -f $i/INDEX){ - try=`{grep $pat $i/INDEX | 9sed 's/^[^ ]* //'} + if(test -f $i/INDEX){ + try=`{grep $pat $i/INDEX | 9 sed 's/^[^ ]* //'} if(! ~ $#try 0) fils=($fils $i/$try) } @@ -75,7 +75,7 @@ if(~ $#fils 0) { for(i) { for(n in $sec) { try=$S/man$n/$i.$n* - if (/bin/test -f $try) + if (test -f $try) fils=($fils $try) } } @@ -85,7 +85,7 @@ if(~ $#fils 0) { } } for(i in $fils) { - if(! /bin/test -f $i) + if(! test -f $i) echo need $i >[1=2] if not { switch($cmd) { @@ -99,7 +99,7 @@ for(i in $fils) { roff t $i |tr2post |psfonts |page case n - roff n $i | 9sed ' + roff n $i | 9 sed ' ${ /^$/p } blob - 69b8c5b6be5c2e8a14ebe7315ede5eb673325c9b blob + 3fa974e6de490ccc01fac3c9c6a6bcc832bff0b3 --- dict/README +++ dict/README @@ -5,3 +5,9 @@ wget -O- http://pdos.lcs.mit.edu/~rsc/software/plan9/pgw.tar.bz2| bunzip2| 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 - blob - a9c7436f5609f72cbd3e1c486276d150824bc56f blob + 6c9e658b142609c231f7fb949f2f7eef9bef4ffd --- dist/checkman.awk +++ dist/checkman.awk @@ -41,8 +41,10 @@ BEGIN { Omitman["nm(1)"] = 1 Omitman["prof(1)"] = 1 Omitman["pwd(1)"] = 1 + Omitman["qiv(1)"] = 1 Omitman["sh(1)"] = 1 Omitman["ssh(1)"] = 1 + Omitman["stty(1)"] = 1 Omitman["tar(1)"] = 1 Omitman["tex(1)"] = 1 Omitman["unutf(1)"] = 1 @@ -50,6 +52,7 @@ BEGIN { Omitman["access(2)"] = 1 Omitman["brk(2)"] = 1 + Omitman["chdir(2)"] = 1 Omitman["close(2)"] = 1 Omitman["connect(2)"] = 1 Omitman["fork(2)"] = 1 @@ -90,10 +93,10 @@ BEGIN { # don't need documentation for these in bin Omitted[".cvsignore"] = 1 Omitted["Getdir"] = 1 - Omitted["9grep"] = 1 # is in grep(1) - Omitted["9sed"] = 1 # is in sed(1) - Omitted["9lex"] = 1 # is in lex(1) - Omitted["9yacc"] = 1 # is in yacc(1) + Omitted["tcolors"] = 1 + Omitted["tref"] = 1 + Omitted["unutf"] = 1 + Omitted["vtdump"] = 1 # not for users Omittedlib["creadimage"] = 1 @@ -198,56 +201,66 @@ BEGIN { Renamelib["regsub9"] = "regsub" Renamelib["rregexec9"] = "rregexec" Renamelib["rregsub9"] = "rregsub" + + lastline = "XXX"; + lastfile = FILENAME; } FNR==1 { - n = length(FILENAME) - nam = FILENAME - if(nam ~ /\.html$/) - next - if(nam !~ /^man\/man(.*)\/(.*)\.(.*)$/){ - print "nam", nam, "not of form [0-9][0-9]?/*" - next - } - nam = substr(nam, 8) - gsub("[/.]", " ", nam); - n = split(nam, a) - sec = a[1] - name = a[2] - section = a[3] - if($1 != ".TH" || NF != 3) - print "First line of", FILENAME, "not a proper .TH" - else if(($2 != toupper(name) || substr($3, 1, length(sec)) != sec || $3 != toupper(section)) \ - && ($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 + if(lastline == ""){ + # screws up troff headers + print lastfile ":$ is a blank line" + } + + n = length(FILENAME) + nam = FILENAME + if(nam ~ /\.html$/) + next + if(nam !~ /^man\/man(.*)\/(.*)\.(.*)$/){ + print "nam", nam, "not of form [0-9][0-9]?/*" + next + } + nam = substr(nam, 8) + gsub("[/.]", " ", nam); + n = split(nam, a) + sec = a[1] + name = a[2] + section = a[3] + if($1 != ".TH" || NF != 3) + print "First line of", FILENAME, "not a proper .TH" + else if(($2 != toupper(name) || substr($3, 1, length(sec)) != sec || $3 != toupper(section)) \ + && ($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" { - if(inex) - print "Unterminated .EX in", FILENAME, ":", $0 - inex = 0; - if (substr($2, 1, 1) == "\"") { - if (NF == 2) { - print "Unneeded quote in", FILENAME, ":", $0 - $2 = substr($2, 2, length($2)-2) - } else if (NF == 3) { - $2 = substr($2, 2) substr($3, 1, length($3)-1) - NF = 2 - } + if(inex) + print "Unterminated .EX in", FILENAME, ":", $0 + inex = 0; + if (substr($2, 1, 1) == "\"") { + if (NF == 2) { + print "Unneeded quote in", FILENAME, ":", $0 + $2 = substr($2, 2, length($2)-2) + } else if (NF == 3) { + $2 = substr($2, 2) substr($3, 1, length($3)-1) + NF = 2 } - if(Sh == 0 && $2 != "NAME") - print FILENAME, "has no .SH NAME" - w = Weight[$2] - if (w) { - if (w < Sh) - print "Heading", $2, "out of order in", FILENAME - Sh += w - } - sh = $2 + } + if(Sh == 0 && $2 != "NAME") + print FILENAME, "has no .SH NAME" + w = Weight[$2] + if (w) { + if (w < Sh) + print "Heading", $2, "out of order in", FILENAME + Sh += w + } + sh = $2 } $1 == ".EX" { @@ -257,45 +270,55 @@ $1 == ".EX" { } $1 == ".EE" { - if(!inex) - print "Bad .EE in", FILENAME ":" FNR ":", $0 - inex = 0; + if(!inex) + print "Bad .EE in", FILENAME ":" FNR ":", $0 + inex = 0; } $1 == ".TF" { - smallspace = 1 + smallspace = 1 } $1 == ".PD" || $1 == ".SH" || $1 == ".SS" || $1 == ".TH" { - smallspace = 0 + smallspace = 0 } $1 == ".RE" { - lastre = 1 + lastre = 1 } $1 == ".PP" { - if(smallspace && !lastre) - print "Possible missing .PD at " FILENAME ":" FNR - smallspace = 0 + if(smallspace && !lastre) + print "Possible missing .PD at " FILENAME ":" FNR + smallspace = 0 } $1 != ".RE" { - lastre = 0 + lastre = 0 } -sh == "SOURCE" && $1 ~ /^\// { - s = $1 - sub("\\\*9", ENVIRON["PLAN9"], s) +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 ~ /^\// { - s = $2 - sub("\\\*9", ENVIRON["PLAN9"], s) +sh == "SOURCE" && $2 ~ /^\\\*9\// { + s = ENVIRON["PLAN9"] substr($2, 4) Sources[s] = 1 } +sh == "SOURCE" && $1 ~ /^\// { + Sources[$1] = 1 +} + +sh == "SOURCE" && $2 ~ /^\// { + Sources[$2] = 1 +} + $0 ~ /^\.[A-Z].*\([1-9]\)/ { if ($1 == ".IR" && $3 ~ /\([0-9]\)/) { name = $2 @@ -319,6 +342,10 @@ $0 ~ /^\.[A-Z].*\([1-9]\)/ { } END { + if(lastline == ""){ + print lastfile ":$ is a blank line" + } + print "Checking Source References" cmd = "xargs -n 100 ls -d 2>&1 >/dev/null | sed 's/^ls: / /; s/: .*//'" for (i in Sources) { blob - b84e34b159644812b3af8c36f355a3442ebbab64 blob + 2528ee989ab3b478d1bea22cf490294c0acf5283 --- include/libc.h +++ include/libc.h @@ -358,10 +358,8 @@ extern double atof(char*); extern int p9atoi(char*); extern long p9atol(char*); extern vlong p9atoll(char*); -extern double charstod(int(*)(void*), void*); +extern double fmtcharstod(int(*)(void*), void*); 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 enc64(char*, int, uchar*, int); extern int dec32(uchar*, int, char*, int); @@ -386,7 +384,6 @@ extern void p9longjmp(p9jmp_buf, int); extern char* mktemp(char*); extern int opentemp(char*); /* extern double modf(double, double*); */ -extern int netcrypt(void*, void*); extern void p9notejmp(void*, p9jmp_buf, int); extern void perror(const char*); extern int postnote(int, int, char *); @@ -397,14 +394,12 @@ extern double p9pow10(int); #define p9setjmp(b) sigsetjmp((void*)(b), 1) /* * -extern double strtod(char*, char**); extern long strtol(char*, char**, int); extern ulong strtoul(char*, char**, int); extern vlong strtoll(char*, char**, int); extern uvlong strtoull(char*, char**, int); */ extern void sysfatal(char*, ...); -extern void p9syslog(int, char*, char*, ...); extern long p9time(long*); /* extern int tolower(int); */ /* extern int toupper(int); */ @@ -426,9 +421,10 @@ extern void needstack(int); #define putenv p9putenv #define notejmp p9notejmp #define jmp_buf p9jmp_buf -#define syslog p9syslog #define time p9time #define pow10 p9pow10 +#define strtod fmtstrtod +#define charstod fmtcharstod #endif /* @@ -527,7 +523,6 @@ extern int p9announce(char*, char*); extern int p9dial(char*, char*, char*, int*); extern int p9dialparse(char *ds, char **net, char **unixa, u32int *ip, int *port); extern void p9setnetmtpt(char*, int, char*); -extern int p9hangup(int); extern int p9listen(char*, char*); extern char* p9netmkaddr(char*, char*, char*); extern int p9reject(int, char*, char*); @@ -537,7 +532,6 @@ extern int p9reject(int, char*, char*); #define announce p9announce #define dial p9dial #define setnetmtpt p9setnetmtpt -#define hangup p9hangup #define listen p9listen #define netmkaddr p9netmkaddr #define reject p9reject @@ -614,6 +608,7 @@ extern void freenetconninfo(NetConnInfo*); #define QTEXCL 0x20 /* type bit for exclusive use files */ #define QTMOUNT 0x10 /* type bit for mounted channel */ #define QTAUTH 0x08 /* type bit for authentication file */ +#define QTLINK 0x04 /* symbolic link */ #define QTFILE 0x00 /* plain file */ /* bits in Dir.mode */ @@ -622,6 +617,7 @@ extern void freenetconninfo(NetConnInfo*); #define DMEXCL 0x20000000 /* mode bit for exclusive use files */ #define DMMOUNT 0x10000000 /* mode bit for mounted channel */ #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 DMWRITE 0x2 /* mode bit for write permission */ #define DMEXEC 0x1 /* mode bit for execute permission */ blob - a65ebe7916821eb12dd9ee4bc629f9b193ffedb2 blob + c6dc5930b3f53cb925fd1ad304242ab0de49922c --- include/thread.h +++ include/thread.h @@ -35,11 +35,6 @@ void threaddaemonize(void); */ /* - * clumsy linker hack - */ -void threadlinklibrary(void); - -/* * per proc and thread data */ void **procdata(void); blob - 12980ade025f95ff0638e90053531033c9455ad6 blob + dcc37ae866832913238415d260356c7ce905ca73 --- lib/fortunes +++ lib/fortunes @@ -4006,3 +4006,41 @@ object-oriented design is the roman numerals of comput 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 ) 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 blob - 51228134649ebde8345fe5a7f7c01767eb0726c3 blob + 249d75f0af6e12c6fa21616869d765850a99d9d2 --- lib/moveplan9.files +++ lib/moveplan9.files @@ -5,5 +5,6 @@ bin/Getdir bin/adict bin/doctype bin/lookman +bin/sig bin/spell bin/src blob - 4281b81fc77f0032588c74345c16ceeb38a8a891 blob + fb04a29619e71d9ccbd8aa0f1d92a8d9ca4f8460 --- man/man1/9c.1 +++ man/man1/9c.1 @@ -3,6 +3,14 @@ 9c, 9a, 9l, 9ar \- C compiler, assembler, linker, archiver .SH SYNOPSIS .B 9c +[ +.B -I +.I path +] +[ +.B -D +.I name +] .I file \&... .PP @@ -26,7 +34,7 @@ \&... ] [ -.BI -l library +.BI -l name \&... ] .PP @@ -49,12 +57,24 @@ One can use them to write portable recipes for mkfiles compiles the named C .I files into object files for the current system. -The system C compiler is invoked with warnings enabled, -with the symbol +The system C compiler is invoked with warnings enabled. +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 -is defined in the C preprocessor, and with +defined in the C preprocessor and adds .B $PLAN9/include -on the include path. +to the include path. .PP .I 9c also defines @@ -74,7 +94,7 @@ links the named object files and libraries to create t Each .B -l option specifies that a library named -.BI lib library .a +.BI lib name .a be found and linked. The .B -L @@ -84,6 +104,30 @@ invokes the system linker with .B $PLAN9/lib already on the library search path. .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 . +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 maintains object file archives called libraries. 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, a the front of the library. The table of contents is rebuilt whenever the archive is modified. -.SH EXAMPLE +.SH EXAMPLES .TP .L 9c file1.c file2.c file3.c @@ -167,6 +211,7 @@ Assemble one assembler source file. .L 9ar rvc lib.a file[12].o Archive the first two object files into a library. +.TP .L 9l -o prog file3.o file4.o lib.a Link the final two object files and any necessary objects from the library blob - /dev/null blob + 610e791110d69c2e8cc07d16ef0565b278d9e453 (mode 644) --- /dev/null +++ man/man1/0intro.1 @@ -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 , +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 +and +.B +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). blob - a90ac4d23b0a2e51731fe7b220f5af970fe5f49a blob + 017dc0ef3ac8fc80ad981a2f1803945c82e9eb7c --- man/man1/9p.1 +++ man/man1/9p.1 @@ -110,9 +110,7 @@ cat $HOME/lib/plumbing | 9p write plumb/rules .PP To display the contents of the current .IR acme (4) -window (specified by the environment variable -.BR $winid ) -on standard output: +window: .IP .EX 9p read acme/$winid/body blob - 9a8d0f77705b7db1c99bae4b57ff390bc2c3e907 blob + 9441dc843624227ac8e3513d24bef3abf58e3454 --- man/man1/9term.1 +++ man/man1/9term.1 @@ -1,6 +1,6 @@ .TH 9TERM 1 .SH NAME -9term, label \- terminal windows +9term \- terminal windows .SH SYNOPSIS .B 9term [ @@ -14,14 +14,11 @@ .I cmd \&... ] -.PP -.B label -.I name .SH DESCRIPTION .I 9term is a terminal window program for the X Window System, providing an interface similar to that used on Plan 9. -.SS Commands +.SS Command The .I 9term 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 .B $SHELL 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 Characters typed on the keyboard collect in the window to form @@ -152,7 +140,7 @@ An EOT character (control-D) behaves exactly like newl 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: 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 ETB character (control-W) erases any nonalphanumeric characters, then 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 EOT and DEL, so the terminal must be set up with EOT 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 Normally, written output to a window blocks when 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. In this mode, .I 9term -display and allows editing of the input. +displays and allows editing of the input. Some programs, typically those reading passwords, run with echo disabled. In this mode, @@ -279,9 +271,23 @@ If the selection is empty, it sends the white-space-de containing the selection (typing cursor). 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. +.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 .B \*9/src/cmd/9term .SH BUGS There should be a program to toggle the current window's hold mode. .PP Unix makes everything harder. +.SH SEE ALSO +.IR wintext (1) blob - 0f7516596c58ec423f016badecfdac5cddafe59c blob + fcd708c7c9b78293dab91bcf3b2fde1c238b2b9b --- man/man1/INDEX +++ man/man1/INDEX @@ -1,10 +1,12 @@ +0intro 0intro.1 +intro 0intro.1 +9 9.1 9a 9c.1 9ar 9c.1 9c 9c.1 9l 9c.1 9p 9p.1 9term 9term.1 -label 9term.1 acid acid.1 acidtypes acid.1 acme acme.1 @@ -27,13 +29,12 @@ cleanname cleanname.1 auxclog clog.1 clog clog.1 cmp cmp.1 +cmapcube colors.1 colors colors.1 -getmap colors.1 comm comm.1 core core.1 crop crop.1 iconv crop.1 -clock date.1 date date.1 db db.1 dc dc.1 @@ -93,6 +94,7 @@ lc ls.1 ls ls.1 lookman man.1 man man.1 +sig man.1 map map.1 mapd map.1 mapdemo map.1 @@ -142,7 +144,6 @@ scat scat.1 aescbc secstore.1 ipso secstore.1 secstore secstore.1 -9sed sed.1 sed sed.1 seq seq.1 sleep sleep.1 blob - b1f2cd0be6e5a3169e4e31a2a4a3ace9490b1cfa blob + e76aeb25f2e32f52f9c3e4e136a00a137ae1c3b3 --- man/man1/acid.1 +++ man/man1/acid.1 @@ -4,7 +4,7 @@ acid, acidtypes \- debugger .SH SYNOPSIS .B acid [ -.BI -l " libfile +.BI -l " library ] [ .B -wq @@ -49,7 +49,7 @@ It can inspect one or more processes that share an add A program to be debugged may be specified by the process id of a running or defunct process, or by the name of the program's text file -.RB ( 8.out +.RB ( a.out by default). At the prompt, .I acid @@ -514,13 +514,13 @@ for processes that are still active. .SH BUGS There is no way to redirect the standard input and standard output of a new process. -.br +.PP Source line selection near the beginning of a file may pick an adjacent file. -.br +.PP With the extant stepping commands, one cannot step through instructions outside the text segment and it is hard to debug across process forks. -.br +.PP Breakpoints do not work yet. Therefore, commands such as .BR step , blob - 56a6dfd60c74ba7b7350f0b160012fe6d2fbd025 blob + df01fcad8fc3a831e31e432d061e60a06673390a --- man/man1/acme.1 +++ man/man1/acme.1 @@ -71,7 +71,7 @@ The .RB ( -F ) option sets the main font, usually variable-pitch (alternate, usually fixed-pitch); 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 ). Tab intervals are set to the width of 4 (or the value of .BR $tabstop ) @@ -140,7 +140,7 @@ temporarily hiding other windows in the column. if any of them needs attention.) The layout box in a window is normally white; when it is black in the center, it records that the file is `dirty': -.I Acme +.I acme believes it is modified from its original contents. .PP @@ -455,26 +455,31 @@ and error outputs of commands are sent to the error wi the directory from which the command was run, which will be created if necessary. For example, in a window -.B /adm/users +.B /etc/passwd executing .B pwd will produce the output -.B /adm +.B /etc in a (possibly newly-created) window labeled -.BR /adm/+Errors ; +.BR /etc/+Errors ; in a window containing -.B \*9/src/cmd/sam/sam.c +.B /home/rob/sam/sam.c executing .B mk will run .IR mk (1) in -.BR \*9/src/cmd/sam , +.BR /home/rob/sam , 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 .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 Pointing at text with button 3 instructs .I acme @@ -586,7 +591,7 @@ creates a new window and runs a .I command (default -.BR /bin/rc ) +.BR $SHELL ) in it, turning the window into something analogous to an .IR rio (1) window. blob - 31103d6da2c31cd4fa50ec6d464d38984c994918 blob + d5ff0830ec6c631588fa73c59cfe8ca2e2f55bf0 --- man/man1/acmeevent.1 +++ man/man1/acmeevent.1 @@ -132,33 +132,93 @@ and a button 2 action in the tag .RB ( x ). .TP -.I q0 - +.I q0\fR, \fPq1 +The character addresses of the action. .TP +.I eq0\fR, \fPq1 +The expanded character addresses of the action. +If the text indicated by +.IR q0 , .I q1 - -.TP -.I eq0 - -.TP +is a null string that has a non-null expansion, +.IR eq0 , .I eq1 - +are the addresses of the expansion. +Otherwise they are the same as +.IR q0 , +.IR q1 . .TP .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 .I textlen - +The length of the action text (or its expansion) for button 2 and button 3 events in characters. .TP .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 .I chordarg - +The chorded argument for an action. .TP .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 .I Acme.rc is a library of .IR rc (1) blob - d145e048fac6ee4b82fc209df731dbf64c87639c blob + 0857805e9e1c7ae7131fdd6d33fba975241b1507 --- man/man1/ascii.1 +++ man/man1/ascii.1 @@ -39,7 +39,7 @@ ascii, unicode \- interpret ASCII, Unicode characters .PP .B look .I hex -.B /lib/unicode +.B \*9/lib/unicode .SH DESCRIPTION .I Ascii prints the @@ -122,7 +122,7 @@ and may be unhelpful if the characters printed are not available in the current font. .PP The file -.B /lib/unicode +.B \*9/lib/unicode contains a table of characters and descriptions, sorted in hexadecimal order, suitable for @@ -143,19 +143,18 @@ Print the hex value of `p'. .B "unicode 2200-22f1" Print a table of miscellaneous mathematical symbols. .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. .SH FILES -.TF /lib/unicode .TP -.B /lib/unicode +.B \*9/lib/unicode table of characters and descriptions. .SH SOURCE .B \*9/src/cmd/ascii.c .br .B \*9/src/cmd/unicode.c .SH "SEE ALSO" -.IR look (1) +.IR look (1), .IR tcs (1), .IR utf (7), .IR font (7) blob - be6241d1c4f2d7224ec60bbbdf0f8d91e6fd1880 blob + af5e7afa4e664f984d3602f57f2ad3b0a014550b --- man/man1/astro.1 +++ man/man1/astro.1 @@ -35,7 +35,7 @@ A prompt gives the input format. If .B l is missing, the initial position is read from the file -.BR /lib/sky/here . +.BR \*9/sky/here . .TP .B c Report for @@ -105,12 +105,11 @@ This is modified (in the source) to refer to an approa but in steady state usually refers to the last interesting comet (currently Hale-Bopp, C/1995 O1). .SH FILES -.TF /lib/sky/estartab .TP -.B /lib/sky/estartab +.B \*9/sky/estartab ecliptic star data .TP -.B /lib/sky/here +.B \*9/sky/here default latitude (N), longitude (W), and elevation (meters) .SH SOURCE .B \*9/src/cmd/astro blob - bd180a566718432629a97aa03a791e752967cbaf blob + 571943409974219573793fea8ab07880d25ccfb6 --- man/man1/bc.1 +++ man/man1/bc.1 @@ -267,7 +267,7 @@ define e(x) { for(i=1; i<=10; i++) print e(i) .EE .SH FILES -.B /sys/lib/bclib +.B \*9/lib/bclib mathematical library .SH SOURCE .B \*9/src/cmd/bc.y @@ -281,12 +281,12 @@ No or .L ! operators. -.br +.PP A .L for statement must have all three .LR E s. -.br +.PP A .L quit is interpreted when read, not when executed. blob - 977ea4cc431a02ae818d88992912155dbcc40102 blob + 36bcd8d05f09dca67f9b390283299b5353747eda --- man/man1/bundle.1 +++ man/man1/bundle.1 @@ -41,7 +41,7 @@ say in then do .TP .L -cd gift; rc horse; mk +cd gift; sh horse; mk .SH SOURCE .B \*9/bin/bundle .SH SEE ALSO @@ -53,5 +53,5 @@ cd gift; rc horse; mk .SH BUGS .I Bundle will not create directories and is unsatisfactory for non-text files. -.br +.PP Beware of gift horses. blob - 0709a5dce8b03d57a88d34e7f19c91e7671a7113 blob + 2ccb24f8ce9b9d4a7e95632fcb40af0918955b35 --- man/man1/cal.1 +++ man/man1/cal.1 @@ -39,7 +39,7 @@ Try .SH BUGS The year is always considered to start in January even though this is historically naive. -.br +.PP Beware that .L "cal 90" refers to the early Christian era, blob - 9a9e20eb35d9ff1eba72be0e478b7b57498fbd20 blob + 14c6f911c95de3ef066d39a8789356b89bda07af --- man/man1/calendar.1 +++ man/man1/calendar.1 @@ -15,7 +15,7 @@ calendar \- print upcoming events .SH DESCRIPTION .I Calendar reads the named files, default -.BR /usr/$user/lib/calendar , +.BR $HOME/lib/calendar , and writes to standard output any lines containing today's or tomorrow's date. Examples of recognized date formats are @@ -45,9 +45,9 @@ On Friday and Saturday, events through Monday are prin To have your calendar mailed to you every day, use .IR cron (8). .SH FILES -.TF /usr/$user/lib/calendar +.TF $HOME/lib/calendar .TP -.B /usr/$user/lib/calendar +.B $HOME/lib/calendar personal calendar .SH SOURCE .B \*9/src/cmd/calendar.c blob - f758bebef3c6db731652eb93fcc24ee52eca385d blob + 0738206aa43a1c8f8585b65dbb148d13455dd8e0 --- man/man1/cat.1 +++ man/man1/cat.1 @@ -17,7 +17,7 @@ cat, read, nobs \- catenate files .I file ... ] .br -nobs +.B nobs [ .I file ... ] blob - d72b5bffdb4be28c00b5b21016b939c29d301559 blob + 9e850621a6cf445f21bde62a30cfd735fc368f8d --- man/man1/colors.1 +++ man/man1/colors.1 @@ -1,6 +1,6 @@ .TH COLORS 1 .SH NAME -getmap, colors \- display color map +colors, cmapcube \- display color map .SH SYNOPSIS .PP .B colors @@ -9,16 +9,13 @@ getmap, colors \- display color map .B -x ] .PP -.B getmap +.B cmapcube [ -.I colormap +.B -nbw ] .SH DESCRIPTION .I Colors -presents a grid showing the colors in the current color map. -If the display is true color, -.I colors -shows a grid of the RGBV color map +presents a grid showing the colors in the RGBV color map (see .IR color (7)). .PP @@ -37,36 +34,22 @@ option instead shows, in the same form, a grey-scale r .PP A menu on mouse button 3 contains a single entry, to exit the program. .PP -On 8-bit color-mapped displays, -.I getmap -loads the display's color map (default -.BR rgbv ). -The named -.I colormap -can be a file in the current directory or in the standard repository -.BR /lib/cmap . -It can also be a string of the form -.B gamma -or -.BI gamma N\f1 , -where -.I N -is a floating point value for the gamma, defining the contrast for a monochrome map. -Similarly, -.B rgamma +.I Cmapcube +presents the same colors but in a 3-dimensional cube. +Dragging with button 1 rotates the cube. +Clicking on a color with button 2 +displays the map index for that color. +Clicking button 3 exits. +.PP +The +.B -n +option disables drawing of the color squares. +The +.B -b and -.BI rgamma N -define a reverse-video monochrome map. -Finally, the names -.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 +.B -w +options set the background (default grey) +to black or white. .SH SOURCE .B \*9/src/cmd/draw/colors.c .SH SEE ALSO blob - c051386b61849862a51a1ce41dcdc32529e890af blob + df56c922483d4ca886c76781c6662780c0fb860a --- man/man1/core.1 +++ man/man1/core.1 @@ -44,3 +44,6 @@ searches the current directory. .IR acid (1), .IR db (1), .IR core (5) +.SH BUGS +.I Core +has not been written. blob - 1936e428e884eda7d1010420e09b69cf18b6334b blob + 1ce96f384d4dab965db8b5d8bbaf2acd140fef7a --- man/man1/date.1 +++ man/man1/date.1 @@ -1,6 +1,6 @@ .TH DATE 1 .SH NAME -date, clock \- date and time +date \- date and time .SH SYNOPSIS .B date [ blob - fafa7198cb0359d0f8deff05e9f0d1d409e7623a blob + 38c8fc14455da3b294fa9519cc90126268b4cb00 --- man/man1/db.1 +++ man/man1/db.1 @@ -912,14 +912,6 @@ To set a breakpoint at the beginning of .B write() in extant process 27: .IP -.de EX -.RS -.ft B -.nf -.. -.de EE -.RE -.. .EX % db 27 :h blob - d6bc35c0d0ab5d54a620e0754a5bd40a4d471c51 blob + 5394580a4e286f517f70ed1a55f73a8afd0fc37b --- man/man1/dc.1 +++ man/man1/dc.1 @@ -223,15 +223,15 @@ results are truncated to the following scales. \fLv\fR max(\fIs,sa\fR) .fi .SH EXAMPLES +.LP +Print the first ten values of +.IR n ! +.IP .EX [la1+dsa*pla10>y]sy 0sa1 lyx .EE -.ns -.IP -Print the first ten values of -.IR n ! .SH SOURCE .B \*9/src/cmd/dc.c .SH "SEE ALSO" blob - 891160119d76ba7de545b47e8f902f99dcfd9f2f blob + 9d159f9e422582ee48e664dcb3ecaa793fc3a9c5 --- man/man1/deroff.1 +++ man/man1/deroff.1 @@ -112,6 +112,6 @@ when the popular delimiters for .I eqn are in effect. -.br +.PP Text inside macros is emitted at place of definition, not place of call. blob - de987d97ecc8b0d301c555edb3bb3506a5966729 blob + 0c26f38d97a751d7e87a50594a3553d99100f3e7 --- man/man1/dict.1 +++ man/man1/dict.1 @@ -182,12 +182,10 @@ it starts with the .BI /adict/ dict / window. .SH FILES -.B /lib/dict/oed2 -.br -.B /lib/dict/oed2index -.br -Other files in -.BR /lib . +.TP +.B \*9/dict +dictionaries +.PD .SH "SEE ALSO" .IR regexp (7) .SH SOURCE blob - 8d3289ecc6136c510c49035a6d349bb214d594ab blob + 237fc57bf04626ee8f934e28dcf9b19d59ea16eb --- man/man1/diff.1 +++ man/man1/diff.1 @@ -148,7 +148,7 @@ Editing scripts produced under the .BR -e " or" .BR -f " option are naive about" creating lines consisting of a single `\fB.\fR'. -.br +.PP When running .I diff on directories, the notion of what is a text blob - 02a36010b8ed4d096c5f923fcaf1ddfe206793df blob + da33653aae8e572172a62a136e2ed870c1640428 --- man/man1/doctype.1 +++ man/man1/doctype.1 @@ -4,8 +4,13 @@ doctype \- intuit command line for formatting a docume .SH SYNOPSIS .B doctype [ -.I option ... -] [ +.B -n +] +[ +.B -T +.I dev +] +[ .I file ] \&... @@ -32,7 +37,9 @@ invokes .I nroff instead of .IR troff . -Other options are passed to +The +.B -T +option is passed to .IR troff . .SH EXAMPLES .TP blob - d218d651f4e4dda70b095feb7ddeafa926c1cf96 blob + 00eb095a35788a190851bdfe1d082b458146ff24 --- man/man1/ed.1 +++ man/man1/ed.1 @@ -49,7 +49,7 @@ commands. If no .I file is given, make -.B /fd/1 +.B /dev/stdout the remembered file; see the .L e command below. blob - 8c9c562c6aa220621024c8a270fdca2c761a6862 blob + 96c64b1af9d81cce02f9451cd92565f16b7655e8 --- man/man1/fortune.1 +++ man/man1/fortune.1 @@ -13,11 +13,11 @@ If a .I file is specified, the saying is taken from that file; otherwise it is selected from -.BR /sys/games/lib/fortunes . +.BR \*9/lib/fortunes . .SH FILES -.B /sys/games/lib/fortunes +.B \*9/lib/fortunes .br -.B /sys/games/lib/fortunes.index +.B \*9/lib/fortunes.index \ \ fast lookup table, maintained automatically .SH SOURCE .B \*9/src/cmd/fortune.c blob - d9dae3f947a6f8b108de76f92d937991f252d1dd blob + beda727df4a724ddc6e75675c2b7840ef2c25f09 --- man/man1/grap.1 +++ man/man1/grap.1 @@ -254,7 +254,7 @@ symbols like .BR star , .BR plus , etc., in -.BR /sys/lib/grap.defines , +.BR \*9/lib/grap.defines , which is included if it exists. .PP .I var @@ -399,9 +399,9 @@ copy thru / circle at $1,$2 / .vs .EE .SH FILES -.TF /sys/lib/grap.defines +.TF \*9/lib/grap.defines .TP -.B /sys/lib/grap.defines +.B \*9/lib/grap.defines definitions of standard plotting characters, e.g., bullet .SH SOURCE .B \*9/src/cmd/grap blob - 7ae84a91c1dd6c0b0d88bdd47746a7cd19a89afd blob + 52550b0e45d9192a7eb6c10697a0edc86e3d45da --- man/man1/grep.1 +++ man/man1/grep.1 @@ -10,6 +10,7 @@ grep, g \- search a file for a pattern [ .I file ... ] +.PP .B g [ .I option ... blob - fda84584c93aba0f345b472249da38ac7fc6fa21 blob + e8d37615ddbe86ae14bdb0f5b5b22d0cfdad0631 --- man/man1/idiff.1 +++ man/man1/idiff.1 @@ -14,7 +14,8 @@ interactively merges .I file1 and -.IR file2 . +.I file2 +onto standard output. Wherever .I file1 and @@ -23,7 +24,8 @@ differ, .I idiff displays the differences in the style of .RB `` diff -.RB -n '' +.BR -n '' +on standard error and prompts the user to select a chunk. Valid responses are: .TP @@ -54,9 +56,10 @@ The .B -b and .B -w -flags -are simply -passed through to +flags, +if passed, +are +passed to .IR diff . .SH FILES .B /tmp/idiff.* @@ -68,5 +71,3 @@ passed through to Kernighan and Pike, .IR "The Unix Programming Environment" , Prentice-Hall, 1984. -.SH BUGS -This is a poorly-written manual page. blob - 6b0eeee3679dd06a3974605429827bdd2de5715e blob + 1c0ec9f9cc4f53535af8a7b62e0462f352c89f07 --- man/man1/join.1 +++ man/man1/join.1 @@ -143,5 +143,5 @@ with the sequence is that of .BI "sort -t" x .BI -k y , y\f1. -.br +.PP One of the files must be randomly accessible. blob - 5719f16ecdddc26ea72ed48160c1bddefd8f44d5 blob + 5b61d8a10937196a1614ccd68b9ffef19ee75f65 --- man/man1/kill.1 +++ man/man1/kill.1 @@ -13,11 +13,6 @@ kill, slay, start, stop \- print commands to manipulat .PP .B stop .I name ... -.PP -.B broke -[ -.I user -] .SH DESCRIPTION .I Kill prints commands that will cause all processes with @@ -67,3 +62,8 @@ signal. .SH "SEE ALSO" .IR ps (1), .IR notify (3) +.SH BUGS +.I Stop +and +.I start +should limit themselves to currently running or stopped processes. blob - c0f43e3a78b649e1b3ac408819deee08fee42177 blob + 6955e7914a9d1fae8d1ddc361912adc78e0ba59a --- man/man1/lex.1 +++ man/man1/lex.1 @@ -77,5 +77,5 @@ Tenth Edition, Volume 2. .SH BUGS Cannot handle .SM UTF. -.br +.PP The asteroid to kill this dinosaur is still in orbit. blob - ddd50af4da74790e82803e545d837d05e113e8f6 blob + 02d2cb4b361b452e910461fd90461f00dbb86c3e --- man/man1/look.1 +++ man/man1/look.1 @@ -77,10 +77,9 @@ is assumed, with collating sequence .IR grep (1) .SH DIAGNOSTICS The exit status is -.B \&"not found" +.RB `` "not found" '' if no match is found, and -.B \&"no dictionary" +.RB `` "no dictionary" '' if .I file or the default dictionary cannot be opened. - blob - 96877b840ff209151fe911a557e8c2998d67f919 blob + e4c950c5ed92a8d1d3f850e94bb2ea3d9a94a89c --- man/man1/ls.1 +++ man/man1/ls.1 @@ -157,6 +157,5 @@ if none of the above permissions is granted. .br .B \*9/bin/lc .SH SEE ALSO -.IR stat (3) +.IR stat (3), .IR mc (1) - blob - 8b83e9746eba60632fd2a8860b1289d97a9b76d3 blob + f2ecb7d31c31c015ae1cf966fa2f6bebb6b066f3 --- man/man1/man.1 +++ man/man1/man.1 @@ -1,6 +1,6 @@ .TH MAN 1 .SH NAME -man, lookman \- print or find pages of this manual +man, lookman, sig \- print or find pages of this manual .SH SYNOPSIS .B man [ @@ -88,17 +88,20 @@ command to make an index for a given section index for .I lookman .SH SOURCE -.B \*9/bin/9man +.B \*9/bin/man .br .B \*9/bin/lookman .SH "SEE ALSO" +.IR page (1), .IR proof (1) .SH BUGS The manual was intended to be typeset; some detail is sacrificed on text terminals. .PP There is no automatic mechanism to keep the indices up to date. .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 and/or .IR eqn . blob - a2d09854265004d7c556f7b12ed24039a6d70471 blob + c0320021572208b924696fce452c70ed2b5291a8 --- man/man1/map.1 +++ man/man1/map.1 @@ -634,7 +634,7 @@ maps for .B /lib/map/*.x map indexes .TP -.B /bin/aux/mapd +.B mapd Map driver program .SH SOURCE .B \*9/src/cmd/map blob - 59b1d0ea532ece55c8ca0aa3af19ae9293099556 blob + caa2d1761bebb66497ce678d1b3ab2c2187b84bc --- man/man1/mk.1 +++ man/man1/mk.1 @@ -1,21 +1,4 @@ .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 mk, membername \- maintain (make) related files .SH SYNOPSIS @@ -313,6 +296,7 @@ and any command line assignment as an argument to .IR mk . A variable assignment argument overrides the first (but not any subsequent) assignment to that variable. +.PP The variable .B MKFLAGS contains all the option arguments (arguments starting with @@ -324,6 +308,45 @@ and contains all the targets in the call to .IR mk . .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 .IP \fR<|\fIcommand\fR \fIargs\fR @@ -510,6 +533,7 @@ archives. .I Membername echoes just the member names of a list of aggregate names. It is useful in recipes like: +.IP .EX OFILES=a.o b.o libc.a(%):N: % @@ -647,7 +671,7 @@ x.tab.h:Pcmp -s: y.tab.h .EE .SH SEE ALSO .IR sh (1), -.IR regexp9 (7) +.IR regexp (7) .PP A. Hume, ``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. .SH BUGS Identical recipes for regular expression meta-rules only have one target. -.br +.PP Seemingly appropriate input like .B CFLAGS=-DHZ=60 is parsed as an erroneous attribute; correct it by inserting a space after the first .LR = . -.br +.PP The recipes printed by .I mk before being passed to -.I sh +the shell for execution are sometimes erroneously expanded for printing. Don't trust what's printed; rely -on what -.I sh +on what the shell does. blob - 763d9e16fc57b01efaedb1578f5940ac2048f91f blob + e02a65097d8676880c9b0916f714ea6f8898db71 --- man/man1/namespace.1 +++ man/man1/namespace.1 @@ -11,4 +11,5 @@ See .SH SOURCE .B \*9/src/cmd/namespace.c .SH SEE ALSO -.IR getns (3) +.IR getns (3), +.IR intro (4) blob - bd9faf2584adb1c3dd1805f50cdc46ef4e9455e4 blob + f3c2aa4d9c117989ccc632b86b024285ff4e1c5a --- man/man1/news.1 +++ man/man1/news.1 @@ -35,29 +35,28 @@ Other arguments select particular news items. .PP To post a news item, create a file in -.BR /lib/news . +.BR \*9/news . +.\" .PP +.\" You may arrange to receive news automatically by +.\" registering your mail address in +.\" .BR /sys/lib/subscribers . +.\" A daemon mails recent news +.\" to all addresses on the list. .PP -You may arrange to receive news automatically by -registering your mail address in -.BR /sys/lib/subscribers . -A daemon mails recent news -to all addresses on the list. -.PP Empty news items, and news items named .B core or .B dead.letter are ignored. .SH FILES -.TF /sys/lib/subscribers .TP -.B /lib/news/* +.B \*9/news/* articles .TP .B $HOME/lib/newstime modify time is time news was last read -.TP -.B /sys/lib/subscribers +.\" .TP +.\" .B /sys/lib/subscribers who gets news mailed to them .SH SOURCE .B \*9/src/cmd/news.c blob - 609cd07a60e3530120d11395e694bc08b4ba30e4 blob + d3208027819e4557f4557debaaf9dbe801080ed0 --- man/man1/page.1 +++ man/man1/page.1 @@ -49,7 +49,7 @@ To view troff output, use .IR proof (1). .SH "SEE ALSO .IR gs (1), -.IR gv (1) +.IR gv (1), .IR jpg (1), .IR proof (1), .IR tex (1), @@ -64,3 +64,11 @@ When using Preview on Mac OS X, leaves temporary files in .BR /var/tmp , 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. blob - 4885b903bb2e7257cc519585c45616618530105f blob + 3fa162524f8d3fd7027ddc330295a6602dea1d58 --- man/man1/plumb.1 +++ man/man1/plumb.1 @@ -76,14 +76,10 @@ will add an .B action=showdata attribute to the message. .SH FILES -.TF /usr/$user/lib/plumbing +.TF $HOME/lib/plumbing .TP -.B /usr/$user/lib/plumbing +.B $HOME/lib/plumbing default rules file -.TP -.B /mnt/plumb -mount point for -.IR plumber (4). .SH SOURCE .B \*9/src/cmd/plumb .SH "SEE ALSO" blob - 27662d03988d23912624c9baf450fed32d8adb3d blob + 2a1de08411fe06c4a5d56cb53cacc1095b1165b3 --- man/man1/proof.1 +++ man/man1/proof.1 @@ -115,12 +115,11 @@ and .B d commands are also available as command line options. .SH FILES -.TF /lib/font/bit/MAP .TP -.B /lib/font/bit/* +.B \*9/font/* fonts .TP -.B /lib/font/bit/MAP +.B \*9/font/MAP how to convert troff output fonts and character names into screen fonts and character numbers .SH SOURCE blob - 7c23c1835bed168830032033031e0e70842b9100 blob + bb655d1812a9012e96196adb30907bfa2a6b7359 --- man/man1/ps.1 +++ man/man1/ps.1 @@ -81,7 +81,7 @@ performing the named system call. waiting for more of a critical .IR resource . .TP -.BI wchan +.I wchan waiting on the named wait channel (on a Unix kernel). .PD blob - f89b8f37bb79c6dfc9a6050b014a23c838bde459 blob + e35d625864541053d8e21d9fb07ba2007141cc3c --- man/man1/rc.1 +++ man/man1/rc.1 @@ -765,8 +765,7 @@ The string for a variable entry has the variable's nam .B = and its value. If the value has more than one component, these -are separated by SOH -.RB ( '\e001' ) +are separated by SOH (001) characters. The string for a function is just the .I rc blob - be66d0424eab711563c1a12705db51cabebcbf29 blob + b9d46d8854d2cdbc0cfc264ffad3aac0f770ddd4 --- man/man1/sam.1 +++ man/man1/sam.1 @@ -19,6 +19,9 @@ sam, B, E, sam.save, samterm, samsave \- screen editor .B B .IB file \fR[\fP: line \fR] \&... +.PP +.B E +.I file .SH DESCRIPTION .I Sam is a multi-file editor. @@ -845,7 +848,7 @@ It runs .I B on .I file -and then waits to exit until +and then does not exit until .I file is changed, which is taken as a signal that .I file @@ -858,22 +861,22 @@ terminates other than by a command (by hangup, deleting its window, etc.), modified files are saved in an executable file, -.BR $home/sam.save . +.BR $HOME/sam.save . This program, when executed, asks whether to write each file back to a external file. The answer .L y causes writing; anything else skips the file. .SH FILES -.TF \*9/src/cmd/samterm -.TP -.B $home/sam.save +.TF $HOME/sam.save .TP -.B $home/sam.err +.B $HOME/sam.save .TP +.B $HOME/sam.err +.TP .B \*9/bin/samsave the program called to unpack -.BR $home/sam.save . +.BR $HOME/sam.save . .SH SOURCE .TF \*9/src/cmd/samterm .TP @@ -886,6 +889,8 @@ itself source for the separate terminal part .TP .B \*9/bin/B +.TP +.B \*9/bin/E .SH SEE ALSO .IR ed (1), .IR sed (1), blob - f5ee89721fed6ca0cec9a71c826904ca853a02e0 blob + 57369ab5fe9073e40212be95be017c8ee7f31cfe --- man/man1/scat.1 +++ man/man1/scat.1 @@ -124,7 +124,7 @@ The output is the planet's name, right ascension and d for the moon and sun, as shown by .BR astro . The positions are current at the start of -.I scat 's +.IR scat 's execution; see the .B astro command in the next section for more information. @@ -313,20 +313,20 @@ Draw a map of the Pleiades. expand 1 plot .EE -.PP -Show a pretty galaxy. -.EX - ngc1300 - plate 10' -.EE +.\" .PP +.\" Show a pretty galaxy. +.\" .EX +.\" ngc1300 +.\" plate 10' +.\" .EE .SH FILES -.B /lib/sky/*.scat +.B \*9/sky/*.scat .SH SOURCE .B \*9/src/cmd/scat .SH SEE ALSO .IR astro (1) .br -.B /lib/sky/constelnames\ \ +.B \*9/sky/constelnames\ \ the three-letter abbreviations of the constellation names. .PP The data was provided by the Astronomical Data Center at the NASA Goddard blob - b50fc32437644fc891b79a0ec3432ec6080e121f blob + fb4bcd347bc6ca21259292ab3e9b373f7c2c41a8 --- man/man1/secstore.1 +++ man/man1/secstore.1 @@ -127,71 +127,71 @@ The next three commands fetch the persistent copy of t append a new secret, and save the updated file back to secstore. The final command loads the new secret into the running factotum. +.\" .PP +.\" The +.\" .I ipso +.\" command packages this sequence into a convenient script to simplify editing of +.\" .I files +.\" stored on a secure store. +.\" It copies the named +.\" .I files +.\" into a local +.\" .IR ramfs (4) +.\" and invokes +.\" .IR acme (1) +.\" on them. When the editor exits, +.\" .I ipso +.\" prompts the user to confirm copying modifed or newly created files back to +.\" .I secstore. +.\" If no +.\" .I file +.\" is mentioned, +.\" .I ipso +.\" grabs all the user's files from +.\" .I secstore +.\" for editing. +.\" .PP +.\" By default, ipso will edit the +.\" .I secstore +.\" files and, if +.\" one of them is named +.\" .BR factotum , +.\" flush your current keys from factotum and load +.\" the new ones from the file. +.\" If you supply any of the +.\" .BR -e , +.\" .BR -f , +.\" or +.\" .BR -l +.\" options, +.\" .I ipso +.\" will just perform the operations you requested, i.e., +.\" edit, flush, and/or load. +.\" .PP +.\" The +.\" .B -s +.\" option of +.\" .I ipso +.\" invokes +.\" .IR sam (1) +.\" as the editor insted of +.\" .BR acme ; +.\" the +.\" .B -a +.\" option provides a similar service for files encrypted by +.\" .I aescbc +.\" .RI ( q.v. ). +.\" With the +.\" .B -a +.\" option, the full rooted pathname of the +.\" .I file +.\" must be specified and all +.\" .I files +.\" must be encrypted with the same key. +.\" Also with +.\" .BR -a , +.\" newly created files are ignored. .PP -The -.I ipso -command packages this sequence into a convenient script to simplify editing of -.I files -stored on a secure store. -It copies the named -.I files -into a local -.IR ramfs (4) -and invokes -.IR acme (1) -on them. When the editor exits, -.I ipso -prompts the user to confirm copying modifed or newly created files back to -.I secstore. -If no -.I file -is mentioned, -.I ipso -grabs all the user's files from -.I secstore -for editing. -.PP -By default, ipso will edit the -.I secstore -files and, if -one of them is named -.BR factotum , -flush your current keys from factotum and load -the new ones from the file. -If you supply any of the -.BR -e , -.BR -f , -or -.BR -l -options, -.I ipso -will just perform the operations you requested, i.e., -edit, flush, and/or load. -.PP -The -.B -s -option of -.I ipso -invokes -.IR sam (1) -as the editor insted of -.BR acme ; -the -.B -a -option provides a similar service for files encrypted by -.I aescbc -.RI ( q.v. ). -With the -.B -a -option, the full rooted pathname of the -.I file -must be specified and all -.I files -must be encrypted with the same key. -Also with -.BR -a , -newly created files are ignored. -.PP .I Aescbc encrypts and decrypts using AES (Rijndael) in cipher block chaining (CBC) mode. @@ -205,8 +205,8 @@ There is deliberately no backup of files on the secsto .B -r (or a disk crash) is irrevocable. You are advised to store important secrets in a second location. -.PP -When using -.IR ipso , -secrets will appear as plain text in the editor window, -so use the command in private. +.\" .PP +.\" When using +.\" .IR ipso , +.\" secrets will appear as plain text in the editor window, +.\" so use the command in private. blob - b176e43414a4f5994f0dc4c6e98ef4d77d344496 blob + a2e2b54b33e70eee3efbf6c5773d64b003526d16 --- man/man1/sed.1 +++ man/man1/sed.1 @@ -1,8 +1,8 @@ .TH SED 1 .SH NAME -9sed \- stream editor +sed \- stream editor .SH SYNOPSIS -.B 9sed +.B sed [ .B -n ] @@ -366,7 +366,7 @@ ${ Delete all but one of each group of empty lines from a formatted manuscript. .SH SOURCE -.B \*9/src/cmd/9sed.c +.B \*9/src/cmd/sed.c .SH SEE ALSO .IR ed (1), .IR grep (1), blob - eb0d7f46db69d180bddc2345c8da101462f621c3 blob + e68a53fcb4d51d75d69a55b2cf32f58a34cc21f2 --- man/man1/sort.1 +++ man/man1/sort.1 @@ -19,6 +19,8 @@ sort \- sort and/or merge files .I ,pos2 ] ] ... +.br +\h'0.5in' [ .B -o .I output @@ -210,7 +212,7 @@ This file may be the same as one of the inputs. Put temporary files in .I dir rather than in -.BR /tmp . +.BR /var/tmp . .ne 4 .SH EXAMPLES .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 come out in their original order. .SH FILES -.BI /tmp/sort. . +.BI /var/tmp/sort. . .SH SOURCE .B \*9/src/cmd/sort.c .SH SEE ALSO blob - 44a1a0e07fc63bacb8ba649f35389035e1cc2e29 blob + 5d27609bc2d44ece4e6aa31966ad5c1098bbbf97 --- man/man1/spell.1 +++ man/man1/spell.1 @@ -67,7 +67,7 @@ American spelling list .B \*9/lib/brspell British spelling list .TP -.B /bin/aux/sprog +.B \*9/bin/sprog The actual spelling checker. It expects one word per line on standard input, and takes the same arguments as @@ -87,7 +87,7 @@ source for The heuristics of .IR deroff (1) used to excise formatting information are imperfect. -.br +.PP The spelling list's coverage is uneven; in particular biology, medicine, and chemistry, and perforce proper names, blob - 85256bd13f018316325f1c0904cfe517d6e99844 blob + a6f5ba43e1325eb01c24870f2095cbbd7173df92 --- man/man1/stats.1 +++ man/man1/stats.1 @@ -167,13 +167,21 @@ to exit. .PD .SH EXAMPLE Show the load, memory, interrupts, system calls, context switches, -and ethernet packets for the local machine, a remote Linux machine -.BR tux , -and a remote BSD machine -.BR daemon . +and ethernet packets for the local machine, +a remote BSD machine +.IR 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 -.B -stats -lmisce `hostname` tux:\*9/bin/auxstats daemon +.EX +stats -lmisce `hostname` daemon \e + tux:\*9/bin/auxstats +.EE .SH SOURCE .B \*9/src/cmd/draw/stats.c .PP blob - 3681dd3a05a3c97fc3e6bb83417bc7edb332cd18 blob + 7b218cef1410354b9e61312308c4de26d9df6b73 --- man/man1/tail.1 +++ man/man1/tail.1 @@ -77,11 +77,11 @@ Print the first 10 lines of a file. Tails relative to the end of the file are treasured up in a buffer, and thus are limited in length. -.br +.PP According to custom, option .BI + number counts lines from 1, and counts blocks and bytes from 0. -.br +.PP .I Tail is ignorant of UTF. blob - 5923084e35751565ae77efd4dedcf78f7958f41e blob + 7af3f3c1cc5c48d29bbb1b37f077685fdbfa8a6c --- man/man1/troff.1 +++ man/man1/troff.1 @@ -158,19 +158,19 @@ to speed output and reduce output character count. Tab settings are assumed to be every 8 nominal character widths. .SH FILES -.TF /sys/lib/troff/term/* +.TF \*9/troff/term/* .TP .B /tmp/trtmp* temporary file .TP -.B /sys/lib/tmac/tmac.* +.B \*9/tmac/tmac.* standard macro files .TP -.B /sys/lib/troff/term/* +.B \*9/troff/term/* terminal driving tables for .I nroff .TP -.B /sys/lib/troff/font/* +.B \*9/troff/font/* font width tables for .I troff .SH SOURCE blob - fff68a21081b1d53e226bb129c10d404d2c5daca blob + 054a37fbf44acf34964b440d7f4e7b6963d48f91 --- man/man1/units.1 +++ man/man1/units.1 @@ -73,13 +73,13 @@ Currency is denoted etc. .PP The complete list of units can be found in -.BR /lib/units . +.BR \*9/lib/units . A .I file argument to .I units specifies a file to be used instead of -.BR /lib/units. +.BR \*9/lib/units. The .B -v flag causes @@ -93,7 +93,7 @@ you want: atm / .97973 .EE .SH FILES -.B /lib/units +.B \*9/lib/units .SH SOURCE .B \*9/src/cmd/units.y .SH BUGS @@ -102,7 +102,6 @@ Since does only multiplicative scale changes, it can convert Kelvin to Rankine but not Centigrade to Fahrenheit. -.br +.PP Currency conversions are only as accurate as the last time someone -updated -.BR /lib/units . +updated the database. blob - d8c512eeabb010761d850955f2ee09722c05688d blob + 2997242ab12015882714baff78776473e55d29a2 --- man/man1/vac.1 +++ man/man1/vac.1 @@ -127,4 +127,3 @@ and the vac archives that are expanded and merged. .B \*9/src/cmd/vac .SH "SEE ALSO" Plan 9's \fIvacfs\fR(4) and \fIventi\fR(8) - blob - f0df4a450505f364568cc2d55d451b468d831a12 blob + 45bc426b0856fac2648ffe614a1751e72e944a53 --- man/man1/wc.1 +++ man/man1/wc.1 @@ -43,7 +43,7 @@ but looks for only .SM ASCII space, tab and newline. -.br +.PP .I Wc should have options to count suboptimal .SM UTF blob - cf0b691c7fdcab43a13df9380f5b2acc08c31475 blob + 0910747e415f6da40c6321436c6e3440701155c7 --- man/man1/web.1 +++ man/man1/web.1 @@ -31,6 +31,8 @@ The choice of browser is determined by the .B $BROWSER environment variable, which should be the name of the executable for your choice of web browser. +The default is +.BR firefox . Since the various browsers all use different syntaxes in their .B -remote @@ -41,6 +43,23 @@ When possible, .I web opens each URL in a new tab rather than a new window. .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 starts the composition of a new mail message to .IR address . @@ -49,7 +68,8 @@ The choice of mailer is determined by the .B $MAILER environment variable. The supported mailers are: -.TP browser +.TP +.B browser invoke the mailer via a .B mailto:// URL passed to blob - 413b3d215a6faa2022bfbd463b8a02f89a7b58e2 blob + 12859f259445edab0c27ff6f07acf7aaf09b67c3 --- man/man1/wintext.1 +++ man/man1/wintext.1 @@ -1,15 +1,19 @@ .TH WINTEXT 1 .SH NAME wintext, ", "" \- access text in current window +.ds x \C'"' +.ds xx \C'"'\^\^\^\^\C'"' +.ds y \*x\ +.ds yy \*(xx\ .SH SYNOPSIS .B wintext .br -.B \C'"'\ +.B \*x\ [ .I prefix ] .br -.B \C'"'\C'"'\ +.B \*(xx\ [ .I prefix ] @@ -23,7 +27,7 @@ or .IR 9term (1) window to standard output. .PP -.I \C'"' +.I \*y searches the window text for commands typed with a particular prefix and prints them, indented, to standard output. .I Prefix @@ -31,18 +35,18 @@ is a regular expression that is matched against the be If .I prefix is omitted, -.I \C'"' +.I \*y prints the last command executed. -.I \C'"'\C'"' +.I \*(yy prints the last command that -.I \C'"' +.I \*y would print and then executes it by piping it into .IR rc (1). .PP Both -.I \C'"' +.I \*y and -.I \C'"'\C'"' +.I \*(yy identify commands in the window text by looking for lines beginning with a shell prompt. Prompts are assumed to be an unindented sequence of @@ -62,7 +66,7 @@ commands executed in this window: .IP .EX .ta +4n -% \C'"' 'l[sc]' +% \*x 'l[sc]' % ls -l /tmp/qq* # ls -lrt /etc % lc r* @@ -75,7 +79,7 @@ command again: .IP .EX .ta +4n -% \C'"'\C'"' lc +% \*(xx lc % lc r* ramfs rc read rio rm % @@ -86,13 +90,9 @@ ramfs rc read rio rm .SH SOURCE .B \*9/bin .SH BUGS -.I \C'"' +.I \*y and -.I \C'"'\C'"' +.I \*(yy are hard to type in shells other than .IR rc (1). .\" and in troff! -.PP -Don't run -.I \C'"'\C'"' -twice in a row. blob - 362d506c689593a17bd41f7519d240a33723d522 blob + 75d4d4733393041b0c30e345198f2b123e32dbde --- man/man1/yacc.1 +++ man/man1/yacc.1 @@ -145,7 +145,7 @@ parser prototype .B \*9/lib/yaccpars parser prototype using stdio .SH SOURCE -.B \*9/src/cmd/9yacc.c +.B \*9/src/cmd/yacc.c .SH "SEE ALSO" .IR lex (1) .br blob - /dev/null blob + 238145da0f2bf8ac42fd2701febf596e97f787f4 (mode 755) --- /dev/null +++ man/fonts @@ -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 +' blob - 1e153bfc550eed8c5056bc3784cb637bd670eab6 blob + 109c452ea173182fd62531d6b0db67f6710c02c8 --- man/man3/9p.3 +++ man/man3/9p.3 @@ -109,13 +109,13 @@ and .B Fid structures are allocated one-to-one with uncompleted requests and active fids, and are described in -.IR 9pfid (3). +.IR 9p-fid (3). .PP The behavior of .I srv depends on whether there is a file tree (see -.IR 9pfile (3)) +.IR 9p-file (3)) associated with the server, that is, whether the .B tree @@ -717,8 +717,8 @@ accept the option to increment .BR chatty9p . .SH EXAMPLES -\*9/src/lib9p/ramfs.c -is an example of simple single-threaded file servers. +.B \*9/src/lib9p/ramfs.c +is an example of a simple single-threaded file server. On Plan 9, see .IR archfs , .IR cdfs , @@ -744,6 +744,6 @@ or is maintained elsewhere. .SH SOURCE .B \*9/src/lib9p .SH SEE ALSO -.IR 9pfid (3), -.IR 9pfile (3), +.IR 9p-fid (3), +.IR 9p-file (3), .IR intro (9p) blob - /dev/null blob + e544cc8d8b2e5a6204ef854b6acf444aae8a3018 (mode 644) --- /dev/null +++ man/man3/0intro.3 @@ -0,0 +1,395 @@ +.TH INTRO 3 +.SH NAME +intro \- introduction to library functions +.SH SYNOPSIS +.nf +.B #include +.PP +.B #include \fIany Unix headers\fR +.PP +.B #include +.PP +.B #include +.PP +.B #include +.PP +.B #include +.PP +.B #include +.PP +.B #include +.PP +.B #include +.PP +.B #include +.PP +.B #include +.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 +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 , +which must be preceded by +.RI ( needs ) +an include of +.BR . +The graphics library, +.IR draw , +is defined by +.BR , +which needs +.B +and +.BR . +The Buffered I/O library, +.IR libbio , +is defined by +.BR , +which needs +.B +and +.BR . +The ANSI C Standard I/O library, +.IR libstdio , +is defined by +.BR , +which needs +.BR . +There are a few other, less commonly used libraries defined on +individual pages of this section. +.PP +The include file +.BR , +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 +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 +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 . +If Unix headers must be included in a program, +they should be included after +.BR , +which sets important preprocessor directives +(for example, to enable 64-bit file offsets), +but before +.BR , +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 +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 , +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. blob - b21676a72d873ddca2a438ffd6c2f002836a5471 blob + cb2725a2ee22d042a92902b42ad5da2965d25df3 --- man/man3/9pclient.3 +++ man/man3/9pclient.3 @@ -9,8 +9,8 @@ CFid, CFsys, fsinit, fsmount, fsroot, fssetroot, fsunm .B #include .PP .B #include <9pclient.h> +.ta +\w'\fLCFsys* 'u .PP -.ta +'\fLCFsys* 'u .B CFsys* fsmount(int fd, char *aname) .PP @@ -214,7 +214,7 @@ The path is parsed as a slash-separated sequence of pa as on Unix and Plan 9. Elements that are empty or dot -.B ( . ) +.RB ( . ) are ignored. .PP Once opened, these fids can be read and written using blob - 9c067d00f6814a755afbdddf6fef83b687d87705 blob + 4739b175b31d039130cfbda0ca3c14a1d7e8ed9b --- man/man3/INDEX +++ man/man3/INDEX @@ -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 Srv 9p.3 dirread9p 9p.3 @@ -39,41 +84,6 @@ fsunmount 9pclient.3 fsversion 9pclient.3 fswrite 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 Dy addpt.3 Pt addpt.3 @@ -233,15 +243,11 @@ accept dial.3 announce dial.3 dial dial.3 dialparse dial.3 -hangup dial.3 listen dial.3 netmkaddr dial.3 reject dial.3 dirread dirread.3 dirreadall dirread.3 -Disk disk.3 -disk disk.3 -opendisk disk.3 ARROW draw.3 Image draw.3 _string draw.3 @@ -473,14 +479,6 @@ targetid html.3 targetname html.3 toStr 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 iocall ioproc.3 ioclose ioproc.3 @@ -927,9 +925,6 @@ pwrite read.3 read read.3 readn read.3 write read.3 -RGB readcolmap.3 -readcolmap readcolmap.3 -writecolmap readcolmap.3 regcomp regexp.3 regcomplit regexp.3 regcompnl regexp.3 @@ -939,15 +934,6 @@ regexp regexp.3 regsub regexp.3 rregexec 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 X509dump rsa.3 @@ -993,11 +979,6 @@ runestrncmp runestrcat.3 runestrncpy runestrcat.3 runestrrchr 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_sha1 sechash.3 md4 sechash.3 @@ -1125,7 +1106,6 @@ threadint thread.3 threadintgrp thread.3 threadkill thread.3 threadkillgrp thread.3 -threadlinklibrary thread.3 threadmain thread.3 threadnotify thread.3 threadpid thread.3 blob - f6da68515de7e362951987157fcc4d92f697850b blob + 0da223796cde84666291a3d225430de93148eb17 --- man/man3/atof.3 +++ man/man3/atof.3 @@ -144,3 +144,35 @@ and .I atol accept octal and hexadecimal numbers in the style of C, 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). blob - 76062024258c0718050be09d0d2cbae9549bf6e9 blob + c888193f81c1e229fa77d18bdf377dd54234dcc3 --- man/man3/bin.3 +++ man/man3/bin.3 @@ -20,7 +20,7 @@ void *binalloc(Bin **bp, ulong size, int clr); void *bingrow(Bin **bp, void *op, ulong osize, .br .B - ulong size, int clr); + ulong size, int clr); .PP .B void binfree(Bin **bp); blob - 8260cc27e766c599be7ca5e1b73c4029dfb02410 blob + 02f36aee63ee72c9b5df9dd37b1dda4402abe350 --- man/man3/bio.3 +++ man/man3/bio.3 @@ -2,7 +2,7 @@ .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 .SH SYNOPSIS -.ta \w'Biobuf* 'u +.ta \w'\fLBiobuf* 'u .B #include .br .B #include blob - 6ccf9da72ac73b988965d3fe961a69e309225841 blob + 52702acca8a964334e84f37c97cfb5dfe834b01f --- man/man3/complete.3 +++ man/man3/complete.3 @@ -13,12 +13,12 @@ complete, freecompletion \- file name completion .ta \w' 'u +\w' 'u +\w' 'u +\w' 'u +\w' 'u typedef struct Completion Completion; struct Completion{ - uchar advance; /* whether forward progress has been made */ - uchar complete; /* whether the completion now represents a file or directory */ - char *string; /* the string to advance, suffixed " " or "/" for file or directory */ - int nmatch; /* number of files that matched */ - int nfile; /* number of files returned */ - char **filename; /* their names */ + uchar advance; + uchar complete; + char *string; + int nmatch; + int nfile; + char **filename; }; .fi blob - 8b2f04182e82377916c4697a3fbb56f90e100ad5 blob + 65ab1d4122e20f518dbfcf2b40e58c0e6825d79c --- man/man3/ctime.3 +++ man/man3/ctime.3 @@ -90,9 +90,26 @@ is not .SH BUGS The return values point to static data whose content is overwritten by each call. -.br +.PP Daylight Savings Time is ``normal'' in the Southern hemisphere. -.br +.PP These routines are not equipped to handle non-\c .SM ASCII 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). blob - 36364f3be3931e3cf566ad39a2bd5f60026c92c8 blob + 0c8c96ad57cdc9eef4c75be54102e78abc03554e --- man/man3/dial.3 +++ man/man3/dial.3 @@ -1,6 +1,6 @@ .TH DIAL 3 .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 .B #include .br @@ -34,7 +34,10 @@ char* netmkaddr(char *addr, char *defnet, char *defser .\" void freenetconninfo(NetConnINfo*) .PP .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 For these routines, .I addr @@ -310,3 +313,17 @@ bekremvax(void) and .I listen 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). blob - a9378dcee474e501355c65b36cf31f8618cfd587 blob + 392e6fe633e114e81762ecbfe3895a47fd041920 --- man/man3/dup.3 +++ man/man3/dup.3 @@ -31,8 +31,9 @@ for the new file descriptor Sets .IR errstr . .SH BUGS -.I Dup -is a macro for -.I p9dup -to avoid name conflicts with the Unix function; see +To avoid name conflicts with the underlying system, +.I dup +is a preprocessor macro defined as +.IR p9dup ; +see .IR intro (3). blob - 5991a17d36d6f578eaa26805307b68b43b07de54 blob + 1a365389f487ec7d6ab0e19cdf37b66661ec0dee --- man/man3/event.3 +++ man/man3/event.3 @@ -382,3 +382,8 @@ is nil, it restores the image to the default arrow. .IR plumb (3), .\" .IR cons (3), .IR draw (3) +.SH BUGS +.I Etimer +and +.I estart +are unimplemented. blob - 2c5b1660b025d47b0747af7cb3bae5da77a2a5ae blob + 1a0a8a87180977fb67499497aa1ec1607119b0ed --- man/man3/exec.3 +++ man/man3/exec.3 @@ -128,3 +128,14 @@ use the user's current path to locate This is a clumsy way to deal with Unix's lack of a union directory for .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). blob - 62ea8d31d9a473d5af9c1de78bdfdf967980d292 blob + 62c9e56c0745fc926e1648bd74a87bbc4085c6d4 --- man/man3/exits.3 +++ man/man3/exits.3 @@ -93,3 +93,14 @@ non-empty messages. Exit codes 97 through 99 are used by the thread library to signal internal synchronization errors between the main program 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). blob - e7594b3efc869f19c883ac1d01d7380de02a99c8 blob + b7b1a197517606dd215c5e7495a790dc6c170e28 --- man/man3/flate.3 +++ man/man3/flate.3 @@ -8,7 +8,7 @@ deflateinit, deflate, deflatezlib, deflateblock, defla .br .B #include .PP -.ta \w'ulongmm'u +.ta \w'\fLulongmm'u +\w'\fL 'u .PP .B int deflateinit(void) @@ -17,37 +17,37 @@ int deflateinit(void) int deflate(void *wr, int (*w)(void*,void*,int), .br .B - void *rr, int (*r)(void*,void*,int), + void *rr, int (*r)(void*,void*,int), .br .B - int level, int debug) + int level, int debug) .PP .B int deflatezlib(void *wr, int (*w)(void*,void*,int), .br .B - void *rr, int (*r)(void*,void*,int), + void *rr, int (*r)(void*,void*,int), .br .B - int level, int debug) + int level, int debug) .PP .B int deflateblock(uchar *dst, int dsize, .br .B - uchar *src, int ssize, + uchar *src, int ssize, .br .B - int level, int debug) + int level, int debug) .PP .B int deflatezlibblock(uchar *dst, int dsize, .br .B - uchar *src, int ssize, + uchar *src, int ssize, .br .B - int level, int debug) + int level, int debug) .PP .B int inflateinit(void) @@ -56,25 +56,25 @@ int inflateinit(void) int inflate(void *wr, int (*w)(void*, void*, int), .br .B - void *getr, int (*get)(void*)) + void *getr, int (*get)(void*)) .PP .B int inflatezlib(void *wr, int (*w)(void*, void*, int), .br .B - void *getr, int (*get)(void*)) + void *getr, int (*get)(void*)) .PP .B int inflateblock(uchar *dst, int dsize, .br .B - uchar *src, int ssize) + uchar *src, int ssize) .PP .B int inflatezlibblock(uchar *dst, int dsize, .br .B - uchar *src, int ssize) + uchar *src, int ssize) .PP .B char *flateerr(int error) blob - d279bc8fd0589d63a031cb71b4302a8eb09dc942 blob + da766d77649f1e20d777b92f44e5b9f261ea61df --- man/man3/fmtinstall.3 +++ man/man3/fmtinstall.3 @@ -370,4 +370,3 @@ main(...) .SH DIAGNOSTICS These routines return negative numbers or nil for errors and set .IR errstr . -.SH BUGS blob - 7dc9bc14d0c6794b3adae5d9b51a4966415afaad blob + 1e063802c0c85908d10ecc0fe1d945f9c9114b57 --- man/man3/frame.3 +++ man/man3/frame.3 @@ -75,7 +75,7 @@ This library supports of editable text in a single font on raster displays, such as in .IR sam (1) and -.IR rio (1). +.IR 9term (1). Frames may hold any character except NUL (0). Long lines are folded and tabs are at fixed intervals. .PP blob - bb6118c68c884a6e17a30d8b86ccd7dada200cfb blob + ddf481e4c5127289cc14ab42c65e93f7950f83d2 --- man/man3/genrandom.3 +++ man/man3/genrandom.3 @@ -22,8 +22,10 @@ very least, unguessable numbers. .I Genrandom fills a buffer with bytes from the X9.17 pseudo-random number generator. The X9.17 generator is seeded by 24 -truly random bytes read from -.BR /dev/random . +truly random bytes read via +.I truerand +(see +.IR rand (3)). .PP .I Prng uses the native blob - a6d57959cb8127b023ee81f7c3a7347d74fe244b blob + a817b6ef79870839cf49ae3463cd958ff54ea1d3 --- man/man3/getenv.3 +++ man/man3/getenv.3 @@ -35,8 +35,13 @@ to Sets .IR errstr . .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 and -.I p9putenv -to avoid name conflicts with Unix library calls. +.IR p9putenv ; +see +.IR intro (3). blob - b68eea4c8de9f4c65adc789f86373b4903791283 blob + 245914f34e0651bc7c358a9b5fbde6070bba554b --- man/man3/getwd.3 +++ man/man3/getwd.3 @@ -23,8 +23,15 @@ bytes in the buffer provided. .SH SOURCE .B \*9/src/lib9/getwd.c .SH "SEE ALSO" -.IR pwd (1), +.IR pwd (1) .SH DIAGNOSTICS On error, zero is returned. .IR Errstr (3) 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). blob - 7e3a70b0bc1f0be6058461e9a974899ebaf16d0f blob + 4b39332d7585a5c99a6e55b514484c702cc2107a --- man/man3/graphics.3 +++ man/man3/graphics.3 @@ -615,7 +615,7 @@ if(gengetwindow(display, "/tmp/winname", \&... .EE .SH FILES -.BR /lib/font/bit " directory of fonts +.BR \*9/font/bit " directory of fonts .SH SOURCE .B \*9/src/libdraw .SH "SEE ALSO" @@ -649,3 +649,7 @@ and might be more appropriately called .B white and .BR black . +.PP +These manual pages contain many references to +the now-fictitious +.BR /dev/draw . blob - 8b792472da1a57999d09f1b8929855a0fda296c9 blob + 1cdff577663ebd4484274b710fdbf740dfdbf9f1 --- man/man3/malloc.3 +++ man/man3/malloc.3 @@ -168,3 +168,18 @@ When and .I free 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). blob - 969fee014b8955de3344e0d3a547e3c75b78445a blob + ec299a257c21e38ef9c239379ab7038524e1cb96 --- man/man3/memdraw.3 +++ man/man3/memdraw.3 @@ -449,7 +449,6 @@ prints to a serial line rather than the screen, for ob is unusual in using a subfont rather than a font, and in having no parameter to align the source. .PP -.I Libmemdraw -is archived into +These functions are +archived into .IR libdraw . - blob - 57ab8aff2cb93b65ec8927d243338c4849559425 blob + da1d025bbfc1a8d9fa7c07362a016d9cde5f3f7a --- man/man3/memlayer.3 +++ man/man3/memlayer.3 @@ -304,6 +304,6 @@ are in compressed image format .IR window (3), .IR draw (3) .SH BUGS -.I Libmemlayer -is archived into +These functions +are archived into .IR libdraw . blob - c4ecb378ce16a55cc5a4638deb1c5ab483ac2236 blob + f0028c3f64fc891ffa722e2439e6b85d0c0885e2 --- man/man3/mp.3 +++ man/man3/mp.3 @@ -1,6 +1,6 @@ .TH MP 3 .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 .B #include .br @@ -108,6 +108,9 @@ void mpmod(mpint *b, mpint *m, mpint *remainder) void mpdiv(mpint *dividend, mpint *divisor, mpint *quotient, mpint *remainder) .PP .B +mpint* mpfactorial(ulong n) +.PP +.B int mpcmp(mpint *b1, mpint *b2) .PP .B @@ -160,9 +163,6 @@ void crtprefree(CRTpre *cre) .PP .B void crtresfree(CRTres *res) -.PP -.B -mpint* mpfactorial(ulong n) .PP .B mpint *mpzero, *mpone, *mptwo @@ -441,6 +441,10 @@ Otherwise, .BR "quotient = dividend/divisor" . .BR "remainder = dividend % divisor" . .TP +.I mpfactorial +returns factorial of +.IR n . +.TP .I mpcmp returns -1, 0, or +1 as .I b1 @@ -575,9 +579,5 @@ free and .I CRTres structures respectively. -.PP -.I Mpfactorial -returns the factorial of -.IR n . .SH SOURCE .B \*9/src/libmp blob - 3bc6dda9f837178c9c0ce12ba514223d75ce8bd4 blob + 36eb7b995bd9d0565913d2425b5a894fd529d7d7 --- man/man3/muldiv.3 +++ man/man3/muldiv.3 @@ -7,7 +7,7 @@ muldiv, umuldiv \- high-precision multiplication and d .B #include .PP .B -long muldiv(long a, long b, long c) +long muldiv(long a, long b, long c) .PP .B ulong umuldiv(ulong a, ulong b, ulong c) blob - e36763d34ef3317c296d044c2c04e467c9d312d4 blob + 6c12542de80ac961dbf4284bd3aa0cfbe08782cd --- man/man3/mux.3 +++ man/man3/mux.3 @@ -7,6 +7,7 @@ Mux, muxinit, muxrpc, muxthreads \- protocol multiplex .nf .B .ta +4n +.ft B struct Mux { uint mintag; blob - 616c6554233ffb93ae85572223604b1f0294dd9d blob + 63c182b6e807991214df5f0611f07828ef40a916 --- man/man3/notify.3 +++ man/man3/notify.3 @@ -207,7 +207,7 @@ is a common set that includes: .PP .RS 3n .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 \fLinterrupt\fP user interrupt (DEL key) SIGINTR \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: bus error\fP bus error SIGBUS \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 .RE .PP blob - b1c8545f88e10da1e44f58a99b81a9722e1d0cc8 blob + af3f752edb1af60a346c4f031448e35f019fd15c --- man/man3/print.3 +++ man/man3/print.3 @@ -1,18 +1,10 @@ .TH PRINT 3 -.de EX -.nf -.ft B -.. -.de EE -.fi -.ft R -.. .SH NAME print, fprint, sprint, snprint, seprint, smprint, runesprint, runesnprint, runeseprint, runesmprint, vfprint, vsnprint, vseprint, vsmprint, runevsnprint, runevseprint, runevsmprint \- print formatted output .SH SYNOPSIS -.B #include +.B #include .PP -.B #include +.B #include .PP .ta \w'\fLchar* 'u .B @@ -72,7 +64,10 @@ Rune* runevsmprint(Rune *format, va_list v) writes text to the standard output. .I Fprint writes to the named output -file descriptor. +file descriptor: +a buffered form +is described in +.IR bio (3). .I Sprint places text followed by the NUL character @@ -96,7 +91,7 @@ but will not place more than bytes in .IR s . 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 is like .IR snprint , @@ -191,27 +186,26 @@ described below. .PP The numeric verbs .BR d , -.BR i , -.BR u , .BR o , .BR b , .BR x , and .B X -format their arguments in decimal, decimal, -unsigned decimal, octal, binary, hexadecimal, and upper case hexadecimal. +format their arguments in decimal, +octal, binary, hexadecimal, and upper case hexadecimal. Each interprets the flags .BR 0 , .BR h , .BR hh , .BR l , +.BR u , .BR + , .BR - , .BR , , and .B # to mean pad with zeros, -short, byte, long, 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. Also, a space character in the flag position is like @@ -221,12 +215,9 @@ If neither short nor long is specified, then the argument is an .BR int . -If an unsigned verb is specified, +If unsigned is specified, then the argument is interpreted as a -positive number and no sign is output; -space and -.B + -flags are ignored for unsigned verbs. +positive number and no sign is output. If two .B l flags are given, @@ -249,8 +240,8 @@ for .B o conversion, the number is preceded by a .B 0 -if it doesn't already begin with one. -For non-zero numbers and +if it doesn't already begin with one; +for .B x conversion, the number is preceded by .BR 0x ; @@ -345,7 +336,7 @@ conversions, trailing zeros are not removed. .PP The .B s -verb copies a string +verb copies a NUL-terminated string (pointer to .BR char ) to the output. @@ -397,9 +388,7 @@ but that will change if pointers and integers are diff The .B r verb takes no arguments; it copies the error string returned by a call to -.IR strerror (3) -with an argument of -.IR errno. +.IR errstr (3). .PP Custom verbs may be installed using .IR fmtinstall (3). @@ -414,12 +403,12 @@ void fatal(char *msg, ...) char buf[1024], *out; va_list arg; - out = vseprint(buf, buf+sizeof buf, "Fatal error: "); + out = seprint(buf, buf+sizeof buf, "Fatal error: "); va_start(arg, msg); out = vseprint(out, buf+sizeof buf, msg, arg); va_end(arg); write(2, buf, out-buf); - exit(1); + exits("fatal error"); } .EE .SH SEE ALSO @@ -438,9 +427,9 @@ the main difference is that .B b and .B r -are not in ANSI and some -.B C9X -verbs are missing. +are not in ANSI and +.B u +is a flag here instead of a verb. Also, and distinctly not a bug, .I print and friends generate @@ -449,8 +438,8 @@ rather than .SM ASCII. .PP There is no -.BR runeprint , -.BR runefprint , +.IR runeprint , +.IR runefprint , etc. because runes are byte-order dependent and should not be written directly to a file; use the UTF output of .I print blob - 5af31d71620fa4b59ba22e948230d22e4be6bec2 blob + fa0a080cacd9e3930e65e046e1770e25ab7d919b --- man/man3/pushtls.3 +++ man/man3/pushtls.3 @@ -26,7 +26,7 @@ int tlsServer(int fd, TLSconn *conn) uchar *readcert(char *filename, int *pcertlen) .PP .B -PEMchain *readcertchain(char *filename) +PEMchain *readcertchain(char *filename) .PP .B Thumbprint* initThumbprints(char *ok, char *crl) blob - 7e547c05a232c4f5b416f3c34be7d6fb2615ba33 blob + ae6c6c28f89070e934c39923dd8dff0551d7bd69 --- man/man3/quote.3 +++ man/man3/quote.3 @@ -165,3 +165,10 @@ format strings. .IR malloc (3), .IR print (3), .IR strcat (3) +.SH BUGS +Because it is provided by the format library, +.I doquote +is a preprocessor macro defined as +.IR fmtdoquote ; +see +.IR intro (3). blob - d6032d8578fc4a80a1593b3873ef8202af45c050 blob + 7dcc6060ed6e77db302d564e41900faf01e7afda --- man/man3/rand.3 +++ man/man3/rand.3 @@ -156,9 +156,9 @@ to return a uniform .IR x , .RI 0≤ x < val ≤ 2\u\s732\s10\d-1. .SH SOURCE -.B \*9/src/lib9/ +.B \*9/src/lib9 .br -.B \*9/src/libsec/port/ +.B \*9/src/libsec/port .SH "SEE ALSO .\" .IR cons (3), .IR mp (3) @@ -167,3 +167,18 @@ to return a uniform and .I ntruerand maintain a static file descriptor. +.PP +To avoid name conflicts with the underlying system, +.IR rand , +.IR lrand , +.IR frand , +.IR nrand , +.IR lnrand , +and +.I srand +are preprocessor macros defined as +.IR p9rand , +.IR p9lrand , +and so on; +see +.IR intro (3). blob - 06733aa9285d1b95da17467500f65b8e95f2ba66 blob + 069e1d232e408c84441c500a1cedf6907dd05b9f --- man/man3/regexp.3 +++ man/man3/regexp.3 @@ -113,22 +113,22 @@ typedef struct { union { char *sp; Rune *rsp; - }; + } s; union { char *ep; Rune *rep; - }; + } e; } Resub; .EE .LP If -.B match[0].sp +.B match[0].s.sp is nonzero on entry, .I regexec starts matching at that point within .IR string . If -.B match[0].ep +.B match[0].e.ep is nonzero on entry, the last character matched is the one preceding that point. blob - a6f2c0eb798c4c1ec7261a95d84b53c4902d6b0d blob + d8b1cd48cce6ea6c19c1733f9e9a8bbc72f03c09 --- man/man3/sechash.3 +++ man/man3/sechash.3 @@ -13,50 +13,51 @@ md4, md5, sha1, hmac_md5, hmac_sha1, md5pickle, md5unp .B DigestState* md4(uchar *data, ulong dlen, uchar *digest, .B - DigestState *state) + DigestState *state) .PP .B DigestState* md5(uchar *data, ulong dlen, uchar *digest, .B - DigestState *state) + DigestState *state) .PP .B char* md5pickle(MD5state *state) .PP .B -MD5state* md5unpickle(char *p); +MD5state* md5unpickle(char *p); .PP .B DigestState* sha1(uchar *data, ulong dlen, uchar *digest, .B - DigestState *state) + DigestState *state) .PP .B char* sha1pickle(MD5state *state) .PP .B -MD5state* sha1unpickle(char *p); +MD5state* sha1unpickle(char *p); .PP .B DigestState* hmac_md5(uchar *data, ulong dlen, .br .B - uchar *key, ulong klen, + uchar *key, ulong klen, .br .B - uchar *digest, DigestState *state) + uchar *digest, DigestState *state) .PP .B DigestState* hmac_sha1(uchar *data, ulong dlen, .br .B - uchar *key, ulong klen, + uchar *key, ulong klen, .br .B - uchar *digest, DigestState *state) + uchar *digest, DigestState *state) .SH DESCRIPTION .PP -We support several secure hash functions. The output of the +These functions implement +the cryptographic hash functions MD4, MD5, and SHA1. The output of the hash is called a .IR digest . A hash is secure if, given the hashed data and the digest, blob - e6435f47f12f8f4dfb9fc9266e233e43b31e1396 blob + 36c594c4b29f9fcf326a664cf4f982859287da0a --- man/man3/seek.3 +++ man/man3/seek.3 @@ -44,3 +44,10 @@ Seeking in a pipe is a no-op. .SH DIAGNOSTICS Sets .IR errstr . +.SH BUGS +To avoid name conflicts with the underlying system, +.I seek +is a preprocessor macro defined as +.IR p9seek ; +see +.IR intro (3). blob - e2af55971fedd120249a3a61d2d2351c32e7df20 blob + 1210c1712f114a349dcdc52db3c4f23ee2106657 --- man/man3/setjmp.3 +++ man/man3/setjmp.3 @@ -55,36 +55,6 @@ argument should be the first argument passed to the no and .I longjmp can also be used to switch stacks. -Defined in -.B -are several macros that can be used to build -.B jmp_bufs -by hand. The following code establishes a -.B jmp_buf -.i label -that may be called by -.I longjmp -to begin execution in a function -.BR f -with 1024 bytes of stack: -.IP -.EX -#include -#include - -jmp_buf label; -#define NSTACK 1024 -char stack[NSTACK]; - -void -setlabel(void) -{ - label[JMPBUFPC] = ((ulong)f+JMPBUFDPC); - /* -2 leaves room for old pc and new pc in frame */ - label[JMPBUFSP = - (ulong)(&stack[NSTACK-2*sizeof(ulong*)]); -} -.EE .SH SOURCE .B \*9/src/lib9/jmp.c .SH SEE ALSO @@ -94,3 +64,24 @@ setlabel(void) .I Notejmp cannot recover from an address trap or bus error (page fault) on the 680x0 architectures. +.PP +To avoid name conflicts with the underlying system, +.IR setjmp , +.IR longjmp , +.IR notejmp , +and +.I jmp_buf +are preprocessor macros defined as +.IR p9setjmp , +.IR p9longjmp , +.IR p9notejmp , +and +.IR p9jmp_buf ; +see +.IR intro (3). +.PP +.I P9setjmp +is implemented as a preprocessor macro that calls +.I sigsetjmp +(see +Unix's \fIsetjmp\fR(3)). blob - 7df6c33c72bafc4462a26ff0ccd93f7d4b6538e6 blob + 0afa71d22b9b3ae30cc8ddb96fe1d1e58465f550 --- man/man3/sleep.3 +++ man/man3/sleep.3 @@ -43,3 +43,14 @@ the alarm clock. .SH DIAGNOSTICS These functions set .IR errstr . +.SH BUGS +To avoid name conflicts with the underlying system, +.I sleep +and +.I alarm +are preprocessor macros defined as +.I p9sleep +and +.IR p9alarm ; +see +.IR intro (3). blob - e17906bc2dd1e494b3f6fd002ba69e22eee78fe5 blob + 9b88e8d4b20796902fff2b4b044dd5d10332ce87 --- man/man3/string.3 +++ man/man3/string.3 @@ -117,7 +117,7 @@ is used when code needs a reference to the character a Using .B s->base directly is frowned upon since it exposes too much of the implementation. -.SS "allocation and freeing +.SS "Allocation and freeing .PP A string must be allocated before it can be used. One normally does this using blob - b3ca89c068121625a89fd0b67531c094d056f90b blob + 5e1b09ab6cadaaea7a53e02e5d6054824f7df240 --- man/man3/subfont.3 +++ man/man3/subfont.3 @@ -104,7 +104,7 @@ it should be zeroed before calling A number of subfonts are kept in external files. The convention for naming subfont files is: .IP -.B /lib/font/bit/\fIname\fP/\fIclass\fP.\fIsize\fP.\fIdepth +.B \*9/font/\fIname\fP/\fIclass\fP.\fIsize\fP.\fIdepth .PD .PP where @@ -217,9 +217,9 @@ into the to .IB min + s ->n-1\f1. .SH FILES -.TF /lib/font/bit +.TF \*9/font .TP -.B /lib/font/bit +.B \*9/font bitmap font file tree .SH SOURCE .B \*9/src/libdraw blob - 50bcb4e34dcd3a173dfe9f57e6f739f85ce0e98e blob + 39fa53a848698fed5cb7381ed8402792ac086f2c --- man/man3/thread.3 +++ man/man3/thread.3 @@ -33,7 +33,6 @@ threadint, threadintgrp, threadkill, threadkillgrp, -threadlinklibrary, threadmain, threadnotify, threadid, @@ -46,14 +45,6 @@ threadwaitchan, yield \- thread and proc management .SH SYNOPSIS .PP -.de EX -.nf -.ft B -.. -.de EE -.fi -.ft R -.. .EX .ta 4n +4n +4n +4n +4n +4n +4n #include @@ -88,8 +79,6 @@ struct Alt { void threadmain(int argc, char *argv[]) int mainstacksize int proccreate(void (*fn)(void*), void *arg, uint stacksize) -int procrfork(void (*fn)(void*), void *arg, uint stacksize, - int rforkflag) int threadcreate(void (*fn)(void*), void *arg, uint stacksize) void threadexits(char *status) void threadexitsall(char *status) @@ -393,6 +382,7 @@ fd[0] = 0; fd[1] = 1; fd[2] = 2; .EE +.LP to use the current standard files. The correct code is .IP .EX @@ -656,20 +646,6 @@ contains some example programs. .IR intro (3), .IR ioproc (3) .SH BUGS -A program that intends to use the thread library -but does not call any of its functions will not cause Unix linkers -to link the thread library, resulting in the unintelligible error: -.IP -.EX -\*9/lib/lib9.a(main.o)(.text+0x17): In function `main': -\*9/src/lib9/main.c:10: undefined reference to `p9main' -.EE -.LP -or similar. To force the thread library to be linked properly in such cases, -insert a call to the no-op function -.I threadlinklibrary -somewhere in your program. -.PP To avoid name conflicts, .IR alt , .IR nbrecv , @@ -689,10 +665,11 @@ are defined as macros that expand to .IR chanalt , .IR channbrecv , and so on. -Similarly, -.I yield +.I Yield is defined as a macro that expands to .IR threadyield . +See +.IR intro (3). .PP The implementation of .I threadnotify blob - 9bf2db33a0f8dcccaa7eb607b5b4704281c76a28 blob + dfcafaf903046d294560149dc2c8b52d0a6b1335 --- man/man3/time.3 +++ man/man3/time.3 @@ -31,3 +31,14 @@ is also set to the answer. .SH DIAGNOSTICS These functions set .IR errstr . +.SH BUGS +To avoid name conflicts with the underlying system, +.I time +and +.I nsec +are preprocessor macros defined as +.I p9time +and +.IR p9nsec ; +see +.IR intro (3). blob - 445f29cdd6db1e3630e440c80f6a380a3452abdc blob + 28d5d731ea066b165e5ce8cde1a913cc1533eed0 --- man/man3/wait.3 +++ man/man3/wait.3 @@ -144,3 +144,16 @@ returns .SH DIAGNOSTICS These routines set .IR errstr . +.SH BUGS +To avoid name conflicts with the underlying system, +.IR wait , +.IR waitpid , +and +.I waitfor +are preprocessor macros defined as +.IR p9wait , +.IR p9waitpid , +and +.IR p9waitfor ; +see +.IR intro (3). blob - bd0f7bc1748d3768a778df487fc31cb766e7c8cb blob + 407b7b0f4565fe363e11bbc3c56e3c7431b7473f --- man/man4/INDEX +++ man/man4/INDEX @@ -2,5 +2,6 @@ intro 0intro.4 9pserve 9pserve.4 acme acme.4 +import import.4 plumber plumber.4 ramfs ramfs.4 blob - 7d5f248eedd2e7e84aefafc0d1ea91093a76d0f4 blob + 40143a44b0d103c61a8cccbb68d06fb8bdb55525 --- man/man4/acme.4 +++ man/man4/acme.4 @@ -25,14 +25,10 @@ of itself. When a command is run under .IR acme , -a directory holding these files is mounted on -.B /mnt/acme -(also bound to -.BR /mnt/wsys ) -and also -.BR /dev ; -the files mentioned here -appear in both those directories. +a directory holding these files is posted as the 9P service +.B acme +(using +.IR 9pserve (4)). .PP Some of these files supply virtual versions of services available from the underlying environment, in particular the character terminal files in Plan 9's blob - 95259a08114ffe75db5170608beb4099428475a1 blob + 0dfe68bb8b727ef0433ba7f604b0c64a0b91374d --- man/man4/plumber.4 +++ man/man4/plumber.4 @@ -16,7 +16,7 @@ messages between programs. Its behavior is programmed by a .I plumbing file (default -.BR /usr/$user/lib/plumbing ) +.BR $HOME/lib/plumbing ) in the format of .IR plumb (7). .PP @@ -96,9 +96,9 @@ However, ports are never deleted dynamically; if a new include a port that was defined in earlier rules, that port will still exist (although no new messages will be delivered there). .SH FILES -.TF /usr/$user/lib/plumbing +.TF $HOME/lib/plumbing .TP -.B /usr/$user/lib/plumbing +.B $HOME/lib/plumbing default rules file .TP .B \*9/plumb blob - /dev/null blob + 04d8fbe57d20ededab4206bc921bf2b3efd5169a (mode 644) --- /dev/null +++ man/man4/import.4 @@ -0,0 +1,106 @@ +.TH IMPORT 4 +.SH NAME +import \- import 9P resources from another system +.SH SYNOPSIS +.B import +[ +.B -df +] +[ +.B -n +.I ns +] +[ +.B -p +.I prog +] +[ +.B -s +.I service +] +.I system +.SH DESCRIPTION +.I Import +presents the 9P service +.I service +(default +.BR plumb ) +running on +.I system +as a service on the local system, +in the current name space. +.PP +The +.B -n +option sets the remote name space directory +where +.I import +should expect to find +.IR service . +If it is not specified, +.I import +uses name of the local system's name space directory. +(Since name space directories are conventionally inside +.BR /tmp , +the path have different meanings on the two systems.) +.PP +.I Import +connects to +.I system +using +.IR ssh (1). +It invokes +.I import +on the remote system to carry out the remote +side of the protocol. +The +.B -p +option specifies the path to +.I import +on the remote system, in case it is not in the system search path. +.PP +The +.B -d +option turns on debugging. +The +.B -f +option keeps +.I import +from forking itself into the background, also useful for debugging. +.SH EXAMPLE +Suppose you run +.B sam +.B -r +to the CPU server +.IR anna . +.I Sam +wants to talk to a plumber on the local terminal, +but the file names will refer to files on +.IR anna . +.PP +To fix this problem, create a new name space directory +and start a new plumber on +.IR anna : +.IP +.EX +remotens=/tmp/ns.`whoami`.on.`hostname` +ssh anna mkdir $remotens +ssh anna NAMESPACE=$remotens plumber +.EE +Now import that plumber to the local name space before starting +.I sam +and +.IR 9term : +.IP +.EX +NAMESPACE=/tmp/ns.anna +mkdir $NAMESPACE +import -n $remotens -s plumb anna +sam & +9term ssh anna & +.EE +.SH SOURCE +.B \*9/src/cmd/import.c +.SH SEE ALSO +.IR 9pserve (4), +.IR intro (4) blob - 79302660a483337c5d120afc68c219b012769ac3 blob + f7c1bd2a1c5ed088a6a3690b9793e3ef1f7955ec --- man/man7/INDEX +++ man/man7/INDEX @@ -9,7 +9,6 @@ ms ms.7 plot plot.7 plumb plumb.7 regexp regexp.7 -regexp9 regexp9.7 thumbprint thumbprint.7 ASCII utf.7 UTF utf.7 blob - f651a58a1e77fe37f6a52c021f7e5267040363a6 blob + 4767ea163f1e2e11204c68d45736dee77d570e77 --- man/man7/font.7 +++ man/man7/font.7 @@ -76,9 +76,9 @@ characters of zero width (see means that fonts should have, as their zeroth character, one with non-zero width. .SH FILES -.TF /lib/font/bit/* +.TF \*9/font/* .TP -.B /lib/font/bit/* +.B \*9/font/* font directories .SH "SEE ALSO" .IR graphics (3), blob - b7522fd10d0bad8c7b576143fe4d31fdba92515b blob + 0e2b52bab58bfac6bf5b7106e38ed867ed046ec9 --- man/man7/man.7 +++ man/man7/man.7 @@ -108,7 +108,9 @@ Change to default type size. .B \e*9 The root directory of the Plan 9 installation. .SH FILES -.B /sys/lib/tmac/tmac.an +.B \*9/tmac/tmac.an +.PP +.B \*9/tmac/tmac.antimes .SH SEE ALSO .IR troff (1), .IR man (1) @@ -244,7 +246,7 @@ into handling literal double quote marks .B \&" in font-alternation macros, such as .LR .BI . -.br +.PP There is no direct way to suppress column widows in 2-column output; the column lengths may be adjusted by inserting .L .sp blob - b6c6788ea4bbaad53c790fb8ab5d708a554d06cc blob + 83b936994b16e5f7f451da8d3c20041041ebae10 --- man/man7/ms.7 +++ man/man7/ms.7 @@ -46,7 +46,7 @@ and preprocessors for equations, tables, pictures, and graphs is acceptable as input. .SH FILES -.B /sys/lib/tmac/tmac.s +.B \*9/tmac/tmac.s .SH "SEE ALSO" .br M. E. Lesk, blob - 82c771b812b25c0c3326bb76d073aea2142c70b4 blob + fd30ee04d4ed9f107b881842885ef6a5bf55e45e --- man/man7/plumb.7 +++ man/man7/plumb.7 @@ -396,24 +396,24 @@ editor = acme include basic .EE .SH FILES -.TF /usr/$user/lib/plumbing +.TF $HOME/lib/plumbing .TP -.B /usr/$user/lib/plumbing +.B $HOME/lib/plumbing default rules file. .TP -.B /mnt/plumb -mount point for +.B plumb +service name for .IR plumber (4). .TP -.B /sys/lib/plumb +.B \*9/plumb directory for .B include files. .TP -.B /sys/lib/plumb/fileaddr +.B \*9/plumb/fileaddr public macro definitions. .TP -.B /sys/lib/plumb/basic +.B \*9/plumb/basic basic rule set. .SH "SEE ALSO" .IR plumb (1), blob - 75640b9c4772cf1b8a7edd022ba861f5306d970c blob + 91e73adc5526005eb45ec89b427048a4d812bf70 --- man/man7/regexp.7 +++ man/man7/regexp.7 @@ -1,21 +1,4 @@ .TH REGEXP 7 -.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 regexp \- Plan 9 regular expression notation .SH DESCRIPTION blob - f2075f9a3c3d89e3dcf3d6e07a541d482e4f6076 blob + 3339246c0e720488675857b670f892699881457f --- man/man8/mk9660.8 +++ man/man8/mk9660.8 @@ -2,7 +2,7 @@ .SH NAME dump9660, mk9660 \- create an ISO-9660 CD image .SH SYNOPSIS -.B disk/mk9660 +.B mk9660 [ .B -:D ] @@ -27,7 +27,7 @@ volume ] .I image .PP -.B disk/dump9660 +.B dump9660 [ .B -:D ] @@ -63,7 +63,7 @@ an ISO-9660 CD image containing the files named in .I proto (by default, -.BR /sys/lib/sysconfig/proto/allproto ) +.BR \*9/proto/allproto ) from the file tree .I src (by default, @@ -218,8 +218,7 @@ Plan 9 extensions in the system use fields, and a Joliet directory tree. .IP .EX -disk/mk9660 -9cj -s /n/bootes \e - -p /sys/lib/sysconfig/srcproto cdimage +mk9660 -9cj -s /n/bootes -p srcproto cdimage .EE .SH SOURCE \*9/src/cmd/9660 blob - 6dd0d51eaf86f8071f4cc01fe6eaad21c5bd8f79 blob + 4ffc83bfcc89654d05bc9f798c28923dcd7fad06 --- man/secindex +++ man/secindex @@ -2,7 +2,7 @@ builtin cd $1 for (i in [a-z0-9:]*) { b=`{echo $i | sed 's/\..*//'} - 9sed -n ' + 9 sed -n ' /SH *NAM/,/SH/{ /SH/d s/, *$// @@ -34,4 +34,4 @@ for (i in [a-z0-9:]*) { q ' $i echo $b $i -} |sort -u +} |9 sort -u blob - 5f53f2344242cfd4325ffd5b9e5a19dee6a800f7 blob + 2900960c449db3d31806a9e895cdc24511572e24 --- rcmain +++ rcmain @@ -13,6 +13,7 @@ if(~ $rcname ?.out ?.rc */?.rc */?.out) prompt=('broke if(flag p) path=(/bin /usr/bin) if not{ finit + # should be taken care of by rc now, but leave just in case if(~ $#path 0) { path=(/bin /usr/bin) eval `{sh -c 'echo $PATH | blob - b66e3644158645dbd89d3ce7af77f31b31499dbc blob + f82ff30fde3034438491a8a558025d65fdff2c03 --- src/cmd/9660/dump9660.c +++ src/cmd/9660/dump9660.c @@ -21,9 +21,9 @@ void usage(void) { if(mk9660) - fprint(2, "usage: disk/mk9660 [-D:] [-9cjr] [-b bootfile] [-p proto] [-s src] cdimage\n"); + fprint(2, "usage: mk9660 [-D:] [-9cjr] [-b bootfile] [-p proto] [-s src] cdimage\n"); else - fprint(2, "usage: disk/dump9660 [-D:] [-9cjr] [-m maxsize] [-n now] [-p proto] [-s src] cdimage\n"); + fprint(2, "usage: dump9660 [-D:] [-9cjr] [-m maxsize] [-n now] [-p proto] [-s src] cdimage\n"); exits("usage"); } @@ -42,7 +42,7 @@ main(int argc, char **argv) fix = 0; status = nil; memset(&info, 0, sizeof info); - proto = "/sys/lib/sysconfig/proto/allproto"; + proto = unsharp("#9/proto/allproto"); src = "./"; info.volumename = atom("9CD"); blob - 8f3fbb810ae307ea1b83ec6c5d046cf430d44ffa blob + 415d5e30fddbcb100158d0826fc88a6916997ed9 --- src/cmd/acid/main.c +++ src/cmd/acid/main.c @@ -357,7 +357,7 @@ userinit(void) sprint(buf, "#9/acid/%s", mach->name); loadmodule(unsharp(buf)); - p = getenv("home"); + p = getenv("HOME"); if(p != 0) { sprint(buf, "%s/lib/acid", p); silent = 1; blob - c3b0fbacabae5e4504efd8b66031977873c70013 blob + 917aefc1e9c6a2eeaef686fb74daf95098612c98 --- src/cmd/acme/acme.c +++ src/cmd/acme/acme.c @@ -123,9 +123,7 @@ threadmain(int argc, char *argv[]) quotefmtinstall(); cputype = getenv("cputype"); objtype = getenv("objtype"); - home = getenv("home"); - if(home == nil) - home = getenv("HOME"); + home = getenv("HOME"); p = getenv("tabstop"); if(p != nil){ maxtab = strtoul(p, nil, 0); blob - 1bd638e28c2d5910c5a5c742bf900886d90169b1 blob + fdb09de9e325d88d9a1aed3ff77416728f21668a --- src/cmd/bc.y +++ src/cmd/bc.y @@ -961,7 +961,7 @@ main(int argc, char **argv) if(lflag) { argv--; argc++; - argv[1] = "/sys/lib/bclib"; + argv[1] = unsharp("#9/lib/bclib"); } if(cflag) { yyinit(argc, argv); blob - 6202c5a35fa2682a9c7103f90ebf306975c52250 blob + ba86ab367668d2c724adcf78421ef3836acbad65 --- src/cmd/calendar.c +++ src/cmd/calendar.c @@ -75,7 +75,7 @@ main(int argc, char *argv[]) for(i=0; i +#include +#include +#include +#include "dict.h" + +/* Roget's Thesaurus from project Gutenberg */ + +/* static long Last = 0; */ + +void +rogetprintentry(Entry e, int cmd) +{ + int spc; + char c, *p; + + spc = 0; + p = e.start; + + if(cmd == 'h'){ + while(!isspace(*p) && p < e.end) + p++; + while(strncmp(p, " -- ", 4) != 0 && p < e.end){ + while(isspace(*p) && p < e.end) + p++; + if (*p == '[' || *p == '{'){ + c = (*p == '[')? ']': '}'; + while(*p != c && p < e.end) + p++; + p++; + continue; + } + if (isdigit(*p) || ispunct(*p)){ + while(!isspace(*p) && p < e.end) + p++; + continue; + } + + + if (isspace(*p)) + spc = 1; + else + if (spc){ + outchar(' '); + spc = 0; + } + + while(!isspace(*p) && p < e.end) + outchar(*p++); + } + return; + } + + while(p < e.end && !isspace(*p)) + p++; + while(p < e.end && isspace(*p)) + p++; + + while (p < e.end){ + if (p < e.end -4 && strncmp(p, " -- ", 4) == 0){ /* first line */ + outnl(2); + p += 4; + spc = 0; + } + + if (p < e.end -2 && strncmp(p, "[ ", 4) == 0){ /* twiddle layout */ + outchars(" ["); + continue; + } + + if (p < e.end -4 && strncmp(p, "&c (", 4) == 0){ /* usefull xref */ + if (spc) + outchar(' '); + outchar('/'); + while(p < e.end && *p != '(') + p++; + p++; + while(p < e.end && *p != ')') + outchar(*p++); + p++; + while(p < e.end && isspace(*p)) + p++; + while(p < e.end && isdigit(*p)) + p++; + outchar('/'); + continue; + } + + if (p < e.end -3 && strncmp(p, "&c ", 3) == 0){ /* less usefull xref */ + while(p < e.end && !isdigit(*p)) + p++; + while(p < e.end && isdigit(*p)) + p++; + continue; + } + + if (*p == '\n' && p < (e.end -1)){ /* their newlines */ + spc = 0; + p++; + if (isspace(*p)){ /* their continuation line */ + while (isspace(*p)) + p++; + p--; + } + else{ + outnl(2); + } + } + if (spc && *p != ';' && *p != '.' && + *p != ',' && !isspace(*p)){ /* drop spaces before punct */ + spc = 0; + outchar(' '); + } + if (isspace(*p)) + spc = 1; + else + outchar(*p); + p++; + } + outnl(0); +} + +long +rogetnextoff(long fromoff) +{ + int i; + vlong l; + char *p; + + Bseek(bdict, fromoff, 0); + Brdline(bdict, '\n'); + while ((p = Brdline(bdict, '\n')) != nil){ + l = Blinelen(bdict); + if (!isdigit(*p)) + continue; + for (i = 0; i < l-4; i++) + if (strncmp(p+i, " -- ", 4) == 0) + return Boffset(bdict)-l; + } + return Boffset(bdict); +} + +void +rogetprintkey(void) +{ + Bprint(bout, "No pronunciation key.\n"); +} blob - 0920dc2702bd229817527a6e795baf2b7a7accbd blob + b5baab9287e99e5176b977172594e5bff5c90b59 --- src/cmd/dict/utils.c +++ src/cmd/dict/utils.c @@ -16,6 +16,9 @@ Dict dicts[] = { {"thesaurus", "Collins Thesaurus", "#9/dict/thesaurus", "#9/dict/thesindex", thesnextoff, thesprintentry, thesprintkey}, + {"roget", "Project Gutenberg Roget's Thesaurus", + "#9/dict/roget", "#9/dict/rogetindex", + rogetnextoff, rogetprintentry, rogetprintkey}, {"ce", "Gendai Chinese->English", "#9/dict/world/sansdata/sandic24.dat", blob - /dev/null blob + 5a9552005c83c74bd145ca8965b2b5c4eacfec34 (mode 644) --- /dev/null +++ src/cmd/draw/iconv.c @@ -0,0 +1,102 @@ +#include +#include +#include +#include + +void +usage(void) +{ + fprint(2, "usage: iconv [-u] [-c chanstr] [file]\n"); + exits("usage"); +} + +void +writeuncompressed(int fd, Memimage *m) +{ + char chanstr[32]; + int bpl, y, j; + uchar *buf; + + if(chantostr(chanstr, m->chan) == nil) + sysfatal("can't convert channel descriptor: %r"); + fprint(fd, "%11s %11d %11d %11d %11d ", + chanstr, m->r.min.x, m->r.min.y, m->r.max.x, m->r.max.y); + + bpl = bytesperline(m->r, m->depth); + buf = malloc(bpl); + if(buf == nil) + sysfatal("malloc failed: %r"); + for(y=m->r.min.y; yr.max.y; y++){ + j = unloadmemimage(m, Rect(m->r.min.x, y, m->r.max.x, y+1), buf, bpl); + if(j != bpl) + sysfatal("image unload failed: %r"); + if(write(fd, buf, bpl) != bpl) + sysfatal("write failed: %r"); + } + free(buf); +} + +void +main(int argc, char *argv[]) +{ + char *tostr, *file; + int fd, uncompressed; + ulong tochan; + Memimage *m, *n; + + tostr = nil; + uncompressed = 0; + ARGBEGIN{ + case 'c': + tostr = EARGF(usage()); + break; + case 'u': + uncompressed = 1; + break; + default: + usage(); + }ARGEND + + memimageinit(); + + file = ""; + m = nil; + + switch(argc){ + case 0: + m = readmemimage(0); + break; + case 1: + file = argv[0]; + fd = open(file, OREAD); + if(fd < 0) + sysfatal("can't open %s: %r", file); + m = readmemimage(fd); + close(fd); + break; + default: + usage(); + } + + if(m == nil) + sysfatal("can't read %s: %r", file); + + if(tostr == nil) + tochan = m->chan; + else{ + tochan = strtochan(tostr); + if(tochan == 0) + sysfatal("bad channel descriptor '%s'", tostr); + } + + n = allocmemimage(m->r, tochan); + if(n == nil) + sysfatal("can't allocate new image: %r"); + + memimagedraw(n, n->r, m, m->r.min, nil, ZP, S); + if(uncompressed) + writeuncompressed(1, n); + else + writememimage(1, n); + exits(nil); +} blob - d947d8998f366b4702ab26b14c81b16ccd9fe5c2 blob + 3af90f6f95c7e10af25808ba296d0be79d7ceea1 --- src/cmd/ed.c +++ src/cmd/ed.c @@ -146,7 +146,7 @@ main(int argc, char *argv[]) vflag = 0; } if(oflag) { - p1 = "/fd/1"; + p1 = "/dev/stdout"; p2 = savedfile; while(*p2++ = *p1++) ; blob - 004d1b72c46013d6418ec0bf424603faf2c80ce1 blob + e32f89a50fe1f22db744ca98efedf1cb8e0bb170 --- src/cmd/grep/main.c +++ src/cmd/grep/main.c @@ -21,6 +21,9 @@ main(int argc, char *argv[]) flags[ARGC()]++; break; + case 'E': /* ignore, turns gnu grep into egrep */ + break; + case 'e': flags['e']++; lineno = 0; blob - 88d7c532ce46ea3898d72690320ca47f220a9cf1 blob + f084b8e6cc8c8cf9e79234a1fc6bc560553c57da --- src/cmd/import.c +++ src/cmd/import.c @@ -32,7 +32,7 @@ enum void usage(void) { - fprint(2, "usage: %s [-s service] [-n remote-ns] [-fd] [-p remote-prog] remote-system\n", argv0); + fprint(2, "usage: %s [-df] [-s service] [-n remote-ns] [-p remote-prog] remote-system\n", argv0); exits("usage"); } blob - e8dd3ab3dc390432c65c05d3bed7da046153d8f9 blob + 8d4dbfc2d924ef4ed66deacfd52a2f4a52b8f162 --- src/cmd/map/map.c +++ src/cmd/map/map.c @@ -21,7 +21,7 @@ char *mapindex(char *); proj projection; -static char *mapdir = "/lib/map"; /* default map directory */ +static char *mapdir = "#9/map"; /* default map directory */ struct file { char *name; char *color; @@ -150,6 +150,7 @@ main(int argc, char *argv[]) double dd; if(sizeof(short)!=2) abort(); /* getshort() won't work */ + mapdir = unsharp(mapdir); s = getenv("MAP"); if(s) file[0].name = s; blob - 033969ab184b0913b9eb0d156df52d2a5dccf9f1 blob + 24be3e1fcadb8e9caaf36a78d4f788af0a9b5561 --- src/cmd/map/mapdemo.rc +++ src/cmd/map/mapdemo.rc @@ -9,7 +9,7 @@ fn demo {proj=$1; shift; echo t $type echo 'm -8192 -8192' echo t $proj - $label - MAP=world MAPDIR=/lib/map map $proj $* -s -d 5 + MAP=world MAPDIR=$PLAN9/map map $proj $* -s -d 5 } sleep 5 } blob - b5bd6dbbc74f437952c65a55ee809110c6ffd777 blob + 8a4e4b96476ee4e5f5badb10170600bd5f746e9d --- src/cmd/mk/mkfile.test +++ src/cmd/mk/mkfile.test @@ -1,9 +1,9 @@ -|$PLAN9/bin/rc +MKSHELL=$PLAN9/bin/rc use-rc:V: for(i in a b c) echo $i -|/bin/sh +MKSHELL=/bin/sh use-sh:V: for i in a b c do blob - 2d1816b9eb26c03f01b04cd7f4675bece41dede6 blob + 48bad3d85e9a45480ab162d3273a9389d31138a8 --- src/cmd/mk/parse.c +++ src/cmd/mk/parse.c @@ -91,18 +91,18 @@ cp = wtos(tail, ' '); print("assign %s to %s\n", head- */ setvar(head->s, (void *) tail); symlook(head->s, S_WESET, (void *)""); + if(strcmp(head->s, "MKSHELL") == 0){ + if((err = setshell(tail)) != nil){ + SYNERR(hline); + fprint(2, "%s\n", err); + Exit(); + break; + } + } } if(attr) symlook(head->s, S_NOEXPORT, (void *)""); break; - case 'S': - if((err = setshell(tail)) != nil){ - SYNERR(hline); - fprint(2, "%s\n", err); - Exit(); - break; - } - break; default: SYNERR(hline); fprint(2, "expected one of :<=\n"); @@ -144,19 +144,14 @@ rhead(char *line, Word **h, Word **t, int *attr, char int n; Word *w; - if(*line == '|'){ - sep = 'S'; /* shell */ - p = line+1; - }else{ - p = shellt->charin(line,":=<"); - if(p == 0) - return('?'); - sep = *p; - *p++ = 0; - if(sep == '<' && *p == '|'){ - sep = '|'; - p++; - } + p = shellt->charin(line,":=<"); + if(p == 0) + return('?'); + sep = *p; + *p++ = 0; + if(sep == '<' && *p == '|'){ + sep = '|'; + p++; } *attr = 0; *prog = 0; blob - a4ac3f9355c097eb009994a269a4c8e9b707233d blob + dd41ad128a09aaed54a9a11255613934339761fe --- src/cmd/mk/shell.c +++ src/cmd/mk/shell.c @@ -41,6 +41,7 @@ initshell(void) { shellcmd = stow(shells[0]->name); shellt = shells[0]; + setvar("MKSHELL", shellcmd); } void @@ -72,5 +73,6 @@ popshell(void) shellstack = s->next; shellt = s->t; shellcmd = s->w; + setvar("MKSHELL", shellcmd); free(s); } blob - 42ca0e9fbee37f881e00b55f5afa7034137527a9 blob + c50d4e183d61e7e6c72e99efb1c88fd3a675bf68 --- src/cmd/mkfile +++ src/cmd/mkfile @@ -1,6 +1,6 @@ <$PLAN9/src/mkhdr -TARG=`ls *.[cy] | grep -v "\.tab\.c$" | sed 's/\.[cy]//'` +TARG=`ls *.[cy] | egrep -v "\.tab\.c$" | sed 's/\.[cy]//'` <$PLAN9/src/mkmany blob - c6a99a30e90f9e6511151778c2e39cd13e3821a0 blob + bdffaa39d91e308961135138c6a07d4dcf69b38b --- src/cmd/news.c +++ src/cmd/news.c @@ -101,7 +101,7 @@ read_dir(int update) n_count = 0; n_list = malloc(NINC*sizeof(File)); na = NINC; - home = getenv("home"); + home = getenv("HOME"); if(home) { sprint(newstime, TFILE, home); d = dirstat(newstime); blob - 53847cd40f840f85c5cc5292c7759801e0fcbb89 blob + 2debf49baa83d54a752a76d2c487139e69428453 --- src/cmd/plumb/plumber.c +++ src/cmd/plumb/plumber.c @@ -43,9 +43,7 @@ threadmain(int argc, char *argv[]) }ARGEND user = getuser(); - home = getenv("home"); - if(home == nil) - home = getenv("HOME"); + home = getenv("HOME"); if(user==nil || home==nil) error("can't initialize $user or $home: %r"); if(plumbfile == nil){ blob - 9ab7c29d98fb17f6f359355833b2cfb8b8611fe9 blob + dfd4e3704e768a045a5838b6058c2cc9283999e0 --- src/cmd/rc/exec.c +++ src/cmd/rc/exec.c @@ -90,6 +90,7 @@ var *newvar(char *name, var *next) v->changed=0; v->fnchanged=0; v->next=next; + v->changefn = 0; return v; } /* blob - e76fdb0ad33e909bebd9df3ef9bd2e2b760b163c blob + f71fe98902e642061b14d34fa562cc03732076f5 --- src/cmd/rm.c +++ src/cmd/rm.c @@ -1,4 +1,5 @@ #include +#include #include #define rmdir p9rmdir @@ -16,6 +17,13 @@ err(char *f) } } +int +issymlink(char *name) +{ + struct stat s; + return lstat(name, &s) >= 0 && S_ISLNK(s.st_mode); +} + /* * f is a non-empty directory. Remove its contents and then it. */ @@ -48,7 +56,7 @@ rmdir(char *f) ndir = 0; for(i=0; i= nelem(file)-20) { blob - fbbe68e4f0c5630317c9995112e76298771fe66a blob + 7b3723376f92678d43bc8094023a7d6a3a950995 --- src/libdraw/mkfile +++ src/libdraw/mkfile @@ -36,7 +36,6 @@ OFILES=\ mkfont.$O\ openfont.$O\ poly.$O\ - readcolmap.$O\ readimage.$O\ readsubfont.$O\ rectclip.$O\ @@ -52,7 +51,6 @@ OFILES=\ subfontname.$O\ unloadimage.$O\ window.$O\ - writecolmap.$O\ writeimage.$O\ writesubfont.$O\ md-alloc.$O\ blob - 6eb8ee26ecf7cb47e2a5a0dc81ec408fee39e89a (mode 644) blob + /dev/null --- src/libdraw/readcolmap.c +++ /dev/null @@ -1,49 +0,0 @@ -#include -#include -#include -#include - -static ulong -getval(char **p) -{ - ulong v; - char *q; - - v = strtoul(*p, &q, 0); - v |= v<<8; - v |= v<<16; - *p = q; - return v; -} - -void -readcolmap(Display *d, RGB *colmap) -{ - int i; - char *p, *q; - Biobuf *b; - char buf[128]; - - USED(screen); - - sprint(buf, "/dev/draw/%d/colormap", d->dirno); - b = Bopen(buf, OREAD); - if(b == 0) - drawerror(d, "rdcolmap: can't open colormap device"); - - for(;;) { - p = Brdline(b, '\n'); - if(p == 0) - break; - i = strtoul(p, &q, 0); - if(i < 0 || i > 255) { - fprint(2, "rdcolmap: bad index\n"); - exits("bad"); - } - p = q; - colmap[255-i].red = getval(&p); - colmap[255-i].green = getval(&p); - colmap[255-i].blue = getval(&p); - } - Bterm(b); -} blob - 30b026f95ddfd76fd7829f3c97e6899080e7b29b (mode 644) blob + /dev/null --- src/libdraw/writecolmap.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include - -/* - * This code (and the devdraw interface) will have to change - * if we ever get bitmaps with ldepth > 3, because the - * colormap will have to be written in chunks - */ - -void -writecolmap(Display *d, RGB *m) -{ - int i, n, fd; - char buf[64], *t; - ulong r, g, b; - - sprint(buf, "/dev/draw/%d/colormap", d->dirno); - fd = open(buf, OWRITE); - if(fd < 0) - drawerror(d, "wrcolmap: open colormap failed"); - t = malloc(8192); - n = 0; - for(i = 0; i < 256; i++) { - r = m[i].red>>24; - g = m[i].green>>24; - b = m[i].blue>>24; - n += sprint(t+n, "%d %lud %lud %lud\n", 255-i, r, g, b); - } - i = write(fd, t, n); - free(t); - close(fd); - if(i != n) - drawerror(d, "wrcolmap: bad write"); -} blob - fea08e4fa1966033dd09a2ebd86679df90627204 blob + b1afcf19fd7eba12cf4efd06aa710d6e139a8016 --- src/libdraw/x11-init.c +++ src/libdraw/x11-init.c @@ -346,9 +346,7 @@ xattach(char *label) display_resources = XResourceManagerString(_x.display); if(display_resources == nil){ - home = getenv("home"); - if(home == nil) - home = getenv("HOME"); + home = getenv("HOME"); if(home!=nil && (file=smprint("%s/.Xdefaults", home)) != nil){ XrmCombineFileDatabase(file, &database, False); free(file); blob - 4dc51fcf43423b5b45d0381becdfbe2dd6be92eb blob + 903889a4ea95c2f69834f89092b68d9f1881605c --- src/libthread/channel.c +++ src/libthread/channel.c @@ -249,6 +249,7 @@ chanalt(Alt *a) Channel *c; _Thread *t; + needstack(512); for(i=0; a[i].op != CHANEND && a[i].op != CHANNOBLK; i++) ; n = i; blob - c6e00d19e2854b6d499e9277e2692d8dc5e4ee21 blob + 4ed252e00d208e3173832679a894ce0ef87d1f1b --- src/libthread/daemonize.c +++ src/libthread/daemonize.c @@ -42,10 +42,12 @@ child(void) fprint(2, "%s: wait pid %d stopped\n", argv0, pid); return; } +#ifdef WIFCONTINUED if(WIFCONTINUED(status)){ fprint(2, "%s: wait pid %d continued\n", argv0, pid); return; } +#endif fprint(2, "%s: wait pid %d status 0x%ux\n", argv0, pid, status); _exit(99); } @@ -84,8 +86,6 @@ _threadsetupdaemonize(void) sigpid = 1; - threadlinklibrary(); - if(pipe(p) < 0) sysfatal("passer pipe: %r"); blob - 2b6d1e3748d8dafb92eb2a0bcb63af78d92a1d56 blob + b886e30b33bcf08c54fc36c6435c034fee921636 --- src/libthread/thread.c +++ src/libthread/thread.c @@ -169,6 +169,7 @@ _threadswitch(void) { Proc *p; + needstack(0); p = proc(); //print("threadswtch %p\n", p); contextswitch(&p->thread->context, &p->schedcontext); @@ -322,6 +323,20 @@ threadsetstate(char *fmt, ...) va_start(arg, fmt); vsnprint(t->state, sizeof t->name, fmt, arg); va_end(arg); +} + +void +needstack(int n) +{ + _Thread *t; + + t = proc()->thread; + + if((char*)&t <= (char*)t->stk + || (char*)&t - (char*)t->stk < 256+n){ + fprint(2, "thread stack overflow\n"); + abort(); + } } /* @@ -499,11 +514,6 @@ threadmainstart(void *v) threadmain(threadargc, threadargv); } -void -threadlinklibrary(void) -{ -} - int main(int argc, char **argv) { blob - 73f48ef3fca6f2ce24002d5a46d50b499b00b314 blob + 148e8ef916161a7319ef4b39f07b704f3d60f169 --- tmac/tmac.anhtml +++ tmac/tmac.anhtml @@ -1,4 +1,4 @@ -.so #9/tmac/tmac.an +.so /usr/local/plan9/tmac/tmac.an .de }H .. .de }F @@ -9,6 +9,9 @@ .. .nr LL 20i .dePP -\Xhtml

 +\Xhtml manPP .}p .. +.am TH +\Xhtml manhead \\$1 \\$2 +.. blob - ed0f5b1bb999d2598e6cd812fa4b35df8899a4f8 blob + 123ea514cd675005a5e61632f7124c3e9534059c --- tmac/tmac.antimes +++ tmac/tmac.antimes @@ -484,8 +484,10 @@ .if\nm10 .ds ]m November .if\nm11 .ds ]m December .ifn \{.nr m \nm+1 +.nr yD (\n(yr%100 +.af yD 01 .ie\nd .ds ]W (last mod. \nm/\nd/\ny) -.el.ds ]W (printed \n(mo/\n(dy/\n(yr) +.el.ds ]W (printed \n(mo/\n(dy/\n(yD) ..\} .if\n()s .ds ]W .if\n()t \{.ie \nd .ds ]W \*(]m \nd, 20\ny