Tree


READMEcommits | blame
_libc.hcommits | blame
address.ccommits | blame
buff.ccommits | blame
cmd.ccommits | blame
disk.ccommits | blame
errcommits | blame
error.ccommits | blame
errors.hcommits | blame
file.ccommits | blame
io.ccommits | blame
list.ccommits | blame
mesg.ccommits | blame
mesg.hcommits | blame
mkfilecommits | blame
moveto.ccommits | blame
multi.ccommits | blame
parse.hcommits | blame
plan9.ccommits | blame
plumb.hcommits | blame
rasp.ccommits | blame
regexp.ccommits | blame
sam.ccommits | blame
sam.hcommits | blame
shell.ccommits | blame
string.ccommits | blame
sys.ccommits | blame
unix.ccommits | blame
util.ccommits | blame
xec.ccommits | blame

README

This is sam (not including samterm) from the 4th edition of Plan 9,
with changes so that it can be compiled under unix.
(Tested on Solaris 7 and Debian 3.0r1.)

Some extra libraries are needed.  First, fetch libutf-2.0 and libfmt-2.0
from
	http://pdos.lcs.mit.edu/~rsc/software/

(Beware that in libfmt/fmt.c there is a line that says:
        'u',    __ifmt,         /* in Plan 9, __flagfmt */
Thus, sam will have to fmtinstall the other thing.  Other ported programs
may have to do the same.  The fmt library should probably print messages
about bad format characters to stderr, since no one seems to check the
return codes.)

Compile and install those two libraries.  
Set PREFIX in the Makefile to match, then compile sam.

Your C compiler will emit many complaints of the form:
  sam.c:496: warning: passing arg 1 of `bufread' from incompatible pointer type

This is because the Plan 9 compiler has a slightly different (better,
ala Oberon) type system than ISO C.  Popular compilers generate the right
code, so in an act of civil disobediance I changed just enough to get
it to compile, but left the type errors in.  Now the next C standard can
adopt this extension, because at least one important C program uses it!

-- Scott Schwartz,  4 July 2003