| tReorg - plan9port - [fork] Plan 9 from user space |
| git clone git://src.adamsgaard.dk/plan9port |
| Log |
| Files |
| Refs |
| README |
| LICENSE |
| --- |
| commit 522b0689c340d26feeac360640bf7e2e0582353c |
| parent 2df2758496b2ab508d349208449f04d85ae2eb2c |
| Author: rsc |
| Date: Tue, 30 Sep 2003 19:05:50 +0000
Reorg
Diffstat:
M include/bio.h | 1 +
R src/cmd/samterm/Make.Darwin-PowerM… | 0
R src/cmd/mk/Make.FreeBSD-386 -> src… | 0
R src/cmd/mk/Make.HP-UX-9000 -> src/… | 0
R src/cmd/mk/Make.Linux-386 -> src/M… | 0
R src/cmd/samterm/Make.FreeBSD-386 -… | 0
R src/cmd/mk/Make.OSF1-alpha -> src/… | 0
R src/cmd/mk/Make.SunOS-sun4u -> src… | 0
R src/cmd/mk/Make.SunOS-sun4u-cc -> … | 0
R src/cmd/mk/Make.SunOS-sun4u-gcc ->… | 0
A src/Makefile | 19 +++++++++++++++++++
A src/Makehdr | 21 +++++++++++++++++++++
A src/Makeone | 10 ++++++++++
A src/Makesyslib | 7 +++++++
M src/cmd/mk/Makefile | 88 ++-----------------------------
D src/cmd/mk/Makefile.MID | 45 -------------------------------
D src/cmd/mk/bundle.ports | 46 -------------------------------
D src/cmd/mk/mkfile | 9 ---------
D src/cmd/mk/rpm.spec | 29 -----------------------------
M src/cmd/sam/Makefile | 48 +++++++++++++++++++++-----------
M src/cmd/sam/address.c | 22 +++++++++++-----------
M src/cmd/sam/buff.c | 8 ++++----
M src/cmd/sam/cmd.c | 6 +++---
M src/cmd/sam/disk.c | 20 ++++++++++----------
M src/cmd/sam/file.c | 24 ++++++++++++------------
M src/cmd/sam/io.c | 9 ++++-----
M src/cmd/sam/mesg.c | 44 ++++++++++++++++----------------
D src/cmd/sam/mkfile | 40 -------------------------------
M src/cmd/sam/moveto.c | 14 +++++++-------
M src/cmd/sam/rasp.c | 22 +++++++++++-----------
M src/cmd/sam/regexp.c | 4 ++--
D src/cmd/sam/sam | 0
M src/cmd/sam/sam.c | 26 +++++++++++++-------------
M src/cmd/sam/sam.h | 7 +++----
M src/cmd/sam/xec.c | 12 ++++++------
D src/cmd/samterm/Make.HP-UX-9000 | 6 ------
D src/cmd/samterm/Make.Linux-386 | 7 -------
D src/cmd/samterm/Make.NetBSD-386 | 7 -------
D src/cmd/samterm/Make.OSF1-alpha | 6 ------
D src/cmd/samterm/Make.SunOS-sun4u | 2 --
D src/cmd/samterm/Make.SunOS-sun4u-cc | 6 ------
D src/cmd/samterm/Make.SunOS-sun4u-g… | 6 ------
M src/cmd/samterm/Makefile | 85 ++++---------------------------
D src/cmd/samterm/Makefile.MID | 22 ----------------------
D src/cmd/samterm/mkfile | 9 ---------
D src/cmd/samterm/samterm | 0
D src/lib9/Make.Darwin-PowerMacintosh | 6 ------
D src/lib9/Make.FreeBSD-386 | 7 -------
D src/lib9/Make.HP-UX-9000 | 6 ------
D src/lib9/Make.Linux-386 | 7 -------
D src/lib9/Make.NetBSD-386 | 7 -------
D src/lib9/Make.OSF1-alpha | 6 ------
D src/lib9/Make.SunOS-sun4u | 2 --
D src/lib9/Make.SunOS-sun4u-cc | 6 ------
D src/lib9/Make.SunOS-sun4u-gcc | 6 ------
M src/lib9/Makefile | 89 ++-----------------------------
D src/lib9/Makefile.MID | 49 -------------------------------
D src/lib9/mkfile | 2 --
D src/libbio/Make.FreeBSD-386 | 7 -------
D src/libbio/Make.HP-UX-9000 | 6 ------
D src/libbio/Make.Linux-386 | 7 -------
D src/libbio/Make.NetBSD-386 | 7 -------
D src/libbio/Make.OSF1-alpha | 6 ------
D src/libbio/Make.SunOS-sun4u | 2 --
D src/libbio/Make.SunOS-sun4u-cc | 6 ------
D src/libbio/Make.SunOS-sun4u-gcc | 6 ------
M src/libbio/Makefile | 85 ++-----------------------------
D src/libbio/Makefile.MID | 37 -------------------------------
D src/libbio/bio.3 | 336 -------------------------------
D src/libbio/bio.h | 79 -------------------------------
D src/libbio/bundle.ports | 45 -------------------------------
D src/libbio/mkfile | 1 -
D src/libbio/rpm.spec | 30 ------------------------------
D src/libdraw/Make.Darwin-PowerMacin… | 6 ------
D src/libdraw/Make.FreeBSD-386 | 7 -------
D src/libdraw/Make.HP-UX-9000 | 6 ------
D src/libdraw/Make.Linux-386 | 7 -------
D src/libdraw/Make.NetBSD-386 | 7 -------
D src/libdraw/Make.OSF1-alpha | 6 ------
D src/libdraw/Make.SunOS-sun4u | 2 --
D src/libdraw/Make.SunOS-sun4u-cc | 6 ------
D src/libdraw/Make.SunOS-sun4u-gcc | 6 ------
M src/libdraw/Makefile | 100 +++++--------------------------
D src/libdraw/Makefile.MID | 123 -------------------------------
D src/libdraw/cursor.h | 7 -------
D src/libdraw/draw.h | 520 -------------------------------
D src/libdraw/event.h | 63 -------------------------------
D src/libdraw/keyboard.h | 36 -------------------------------
D src/libdraw/memdraw.h | 209 -------------------------------
D src/libdraw/memlayer.h | 48 -------------------------------
D src/libdraw/mkfile | 1 -
D src/libdraw/mouse.h | 44 -------------------------------
D src/libdraw/test | 0
D src/libfmt/Make.Darwin-PowerMacint… | 6 ------
D src/libfmt/Make.FreeBSD-386 | 7 -------
D src/libfmt/Make.HP-UX-9000 | 6 ------
D src/libfmt/Make.Linux-386 | 7 -------
D src/libfmt/Make.NetBSD-386 | 7 -------
D src/libfmt/Make.OSF1-alpha | 6 ------
D src/libfmt/Make.SunOS-sun4u | 2 --
D src/libfmt/Make.SunOS-sun4u-cc | 6 ------
D src/libfmt/Make.SunOS-sun4u-gcc | 6 ------
M src/libfmt/Makefile | 88 ++-----------------------------
D src/libfmt/Makefile.MID | 63 -------------------------------
D src/libfmt/bundle.ports | 51 -------------------------------
D src/libfmt/fmt.h | 100 -------------------------------
D src/libfmt/fmtinstall.3 | 346 -------------------------------
D src/libfmt/mkfile | 1 -
D src/libfmt/rpm.spec | 34 -------------------------------
D src/libframe/Make.Darwin-PowerMaci… | 6 ------
D src/libframe/Make.FreeBSD-386 | 7 -------
D src/libframe/Make.HP-UX-9000 | 6 ------
D src/libframe/Make.Linux-386 | 7 -------
D src/libframe/Make.NetBSD-386 | 7 -------
D src/libframe/Make.OSF1-alpha | 6 ------
D src/libframe/Make.SunOS-sun4u | 2 --
D src/libframe/Make.SunOS-sun4u-cc | 6 ------
D src/libframe/Make.SunOS-sun4u-gcc | 6 ------
M src/libframe/Makefile | 82 +++----------------------------
D src/libframe/Makefile.MID | 21 ---------------------
D src/libframe/frame.h | 85 -------------------------------
D src/libframe/mkfile | 1 -
D src/libregexp/Make.Darwin-PowerMac… | 6 ------
D src/libregexp/Make.FreeBSD-386 | 7 -------
D src/libregexp/Make.HP-UX-9000 | 6 ------
D src/libregexp/Make.Linux-386 | 7 -------
D src/libregexp/Make.NetBSD-386 | 7 -------
D src/libregexp/Make.OSF1-alpha | 6 ------
D src/libregexp/Make.SunOS-sun4u | 2 --
D src/libregexp/Make.SunOS-sun4u-cc | 6 ------
D src/libregexp/Make.SunOS-sun4u-gcc | 6 ------
M src/libregexp/Makefile | 89 ++-----------------------------
D src/libregexp/Makefile.MID | 34 -------------------------------
D src/libregexp/bundle.ports | 51 -------------------------------
D src/libregexp/mkfile | 1 -
D src/libregexp/regexp9.3 | 227 -------------------------------
D src/libregexp/regexp9.7 | 150 -------------------------------
D src/libregexp/regexp9.h | 71 -------------------------------
D src/libregexp/rpm.spec | 34 -------------------------------
D src/libthread/Make.Darwin-PowerMac… | 6 ------
D src/libthread/Make.FreeBSD-386 | 7 -------
D src/libthread/Make.HP-UX-9000 | 6 ------
D src/libthread/Make.Linux-386 | 7 -------
D src/libthread/Make.NetBSD-386 | 7 -------
D src/libthread/Make.OSF1-alpha | 6 ------
D src/libthread/Make.SunOS-sun4u | 2 --
D src/libthread/Make.SunOS-sun4u-cc | 6 ------
D src/libthread/Make.SunOS-sun4u-gcc | 6 ------
M src/libthread/Makefile | 92 +++----------------------------
D src/libthread/Makefile.MID | 54 -------------------------------
D src/libthread/bundle.ports | 42 -------------------------------
M src/libthread/create.c | 1 -
D src/libthread/ioproc.3 | 179 -------------------------------
D src/libthread/mkfile | 2 --
D src/libthread/rpm.spec | 26 --------------------------
D src/libthread/thread.3 | 576 -------------------------------
D src/libthread/thread.h | 132 -------------------------------
D src/libthread/tprimes | 0
D src/libutf/Make.Darwin-PowerMacint… | 6 ------
D src/libutf/Make.FreeBSD-386 | 7 -------
D src/libutf/Make.HP-UX-9000 | 6 ------
D src/libutf/Make.Linux-386 | 7 -------
D src/libutf/Make.NetBSD-386 | 7 -------
D src/libutf/Make.OSF1-alpha | 6 ------
D src/libutf/Make.SunOS-sun4u | 2 --
D src/libutf/Make.SunOS-sun4u-cc | 6 ------
D src/libutf/Make.SunOS-sun4u-gcc | 6 ------
M src/libutf/Makefile | 89 ++-----------------------------
D src/libutf/Makefile.BOT | 47 -------------------------------
D src/libutf/Makefile.CMD | 5 -----
D src/libutf/Makefile.LIB | 4 ----
D src/libutf/Makefile.MID | 41 -------------------------------
D src/libutf/Makefile.TOP | 20 --------------------
D src/libutf/bundle.ports | 43 ------------------------------
D src/libutf/isalpharune.3 | 47 -------------------------------
D src/libutf/mkfile | 9 ---------
D src/libutf/rpm.spec | 28 ----------------------------
D src/libutf/rune.3 | 187 -------------------------------
D src/libutf/runestrcat.3 | 65 -------------------------------
D src/libutf/utf.7 | 91 -------------------------------
D src/libutf/utf.h | 51 -------------------------------
181 files changed, 260 insertions(+), 6159 deletions(-)
--- |
| diff --git a/include/bio.h b/include/bio.h |
| t@@ -71,6 +71,7 @@ long Bread(Biobuf*, void*, long);
off_t Bseek(Biobuf*, off_t, int);
int Bterm(Biobuf*);
int Bungetc(Biobuf*);
+int Bungetrune(Biobuf*);
long Bwrite(Biobuf*, void*, long);
char* Brdstr(Biobuf*, int, int);
long Bgetrune(Biobuf*); |
| diff --git a/src/cmd/samterm/Make.Darwin-PowerMacintosh b/src/Make.Darwin-PowerMacintosh |
| diff --git a/src/cmd/mk/Make.FreeBSD-386 b/src/Make.FreeBSD-386 |
| diff --git a/src/cmd/mk/Make.HP-UX-9000 b/src/Make.HP-UX-9000 |
| diff --git a/src/cmd/mk/Make.Linux-386 b/src/Make.Linux-386 |
| diff --git a/src/cmd/samterm/Make.FreeBSD-386 b/src/Make.NetBSD-386 |
| diff --git a/src/cmd/mk/Make.OSF1-alpha b/src/Make.OSF1-alpha |
| diff --git a/src/cmd/mk/Make.SunOS-sun4u b/src/Make.SunOS-sun4u |
| diff --git a/src/cmd/mk/Make.SunOS-sun4u-cc b/src/Make.SunOS-sun4u-cc |
| diff --git a/src/cmd/mk/Make.SunOS-sun4u-gcc b/src/Make.SunOS-sun4u-gcc |
| diff --git a/src/Makefile b/src/Makefile |
| t@@ -0,0 +1,19 @@
+DIRS=\
+ lib9\
+ libbio\
+ libdraw\
+ libfmt\
+ libframe\
+ libregexp\
+ libthread\
+ libutf\
+ mk\
+ sam\
+ samterm\
+
+clean all install:
+ for i in $(DIRS); \
+ do \
+ (echo $$i; cd $$i; $(MAKE) $*); \
+ done
+ |
| diff --git a/src/Makehdr b/src/Makehdr |
| t@@ -0,0 +1,21 @@
+# this works in gnu make
+SYSNAME:=${shell uname}
+OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
+
+# this works in bsd make
+SYSNAME!=uname
+OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
+
+# the gnu rules will mess up bsd but not vice versa,
+# hence the gnu rules come first.
+
+X11=/usr/X11R6
+LDFLAGS=
+CFLAGS=
+
+include $(9SRC)/Make.$(SYSNAME)-$(OBJTYPE)
+LDFLAGS+=-L$(9SRC)/lib
+
+CLEANFILES=*.$O
+NUKEFILES=
+ |
| diff --git a/src/Makeone b/src/Makeone |
| t@@ -0,0 +1,10 @@
+$(TARG): $(OFILES)
+ $(CC) -o $(TARG) $(OFILES) $(LDFLAGS)
+
+CLEANFILES+=$(TARG)
+
+include $(9SRC)/Makecommon
+
+install: $(TARG)
+ cp $(TARG) $(9SRC)/bin
+ |
| diff --git a/src/Makesyslib b/src/Makesyslib |
| t@@ -0,0 +1,7 @@
+all: $(9SRC)/lib/$(LIB)
+
+$(9SRC)/lib/$(LIB): $(OFILES)
+ $(AR) $(ARFLAGS) $(9SRC)/lib/$(LIB) $(OFILES)
+
+include $(9SRC)/Makecommon
+ |
| diff --git a/src/cmd/mk/Makefile b/src/cmd/mk/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
TARG=mk
-VERSION=2.0
-PORTPLACE=devel/mk
-NAME=mk
OFILES=\
arc.$O\
t@@ -51,67 +31,7 @@ HFILES=\
mk.h\
fns.h\
-all: $(TARG)
-
-TGZFILES+=mk.pdf
-
-install: $(LIB)
- test -d $(PREFIX)/man/man1 || mkdir $(PREFIX)/man/man1
- test -d $(PREFIX)/doc || mkdir $(PREFIX)/doc
- install -m 0755 mk $(PREFIX)/bin/mk
- cat mk.1 | sed 's;DOCPREFIX;$(PREFIX);g' >mk.1a
- install -m 0644 mk.1a $(PREFIX)/man/man1/mk.1
- install -m 0644 mk.pdf $(PREFIX)/doc/mk.pdf
-
-
-$(TARG): $(OFILES)
- $(CC) -o $(TARG) $(OFILES) -L$(PREFIX)/lib -lregexp9 -lbio -lfmt -lutf
-
-
-.c.$O:
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
+LDFLAGS+=-lregexp9 -lbio -lfmt -lutf
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+include $(9SRC)/Makeone
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/cmd/mk/Makefile.MID b/src/cmd/mk/Makefile.MID |
| t@@ -1,45 +0,0 @@
-TARG=mk
-VERSION=2.0
-PORTPLACE=devel/mk
-NAME=mk
-
-OFILES=\
- arc.$O\
- archive.$O\
- bufblock.$O\
- env.$O\
- file.$O\
- graph.$O\
- job.$O\
- lex.$O\
- main.$O\
- match.$O\
- mk.$O\
- parse.$O\
- recipe.$O\
- rule.$O\
- run.$O\
- sh.$O\
- shprint.$O\
- symtab.$O\
- var.$O\
- varsub.$O\
- word.$O\
- unix.$O\
-
-HFILES=\
- mk.h\
- fns.h\
-
-all: $(TARG)
-
-TGZFILES+=mk.pdf
-
-install: $(LIB)
- test -d $(PREFIX)/man/man1 || mkdir $(PREFIX)/man/man1
- test -d $(PREFIX)/doc || mkdir $(PREFIX)/doc
- install -m 0755 mk $(PREFIX)/bin/mk
- cat mk.1 | sed 's;DOCPREFIX;$(PREFIX);g' >mk.1a
- install -m 0644 mk.1a $(PREFIX)/man/man1/mk.1
- install -m 0644 mk.pdf $(PREFIX)/doc/mk.pdf
- |
| diff --git a/src/cmd/mk/bundle.ports b/src/cmd/mk/bundle.ports |
| t@@ -1,46 +0,0 @@
---- Makefile ---
-# New ports collection makefile for: mk
-# Date Created: 11 Feb 2003
-# Whom: rsc
-#
-# THIS LINE NEEDS REPLACING. IT'S HERE TO GET BY PORTLINT
-# $FreeBSD: ports/devel/mk/Makefile,v 1.1 2003/02/12 00:51:22 rsc Exp $
-
-PORTNAME= mk
-PORTVERSION= 2.0
-CATEGORIES= devel
-MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
-EXTRACT_SUFX= .tgz
-
-MAINTAINER= rsc@post.harvard.edu
-
-DEPENDS= ${PORTSDIR}/devel/libutf \
- ${PORTSDIR}/devel/libfmt \
- ${PORTSDIR}/devel/libbio \
- ${PORTSDIR}/devel/libregexp9
-
-MAN1= mk.1
-USE_REINPLACE= yes
-
-.include
-
-post-patch:
- ${REINPLACE_CMD} -e 's,$$(PREFIX),${PREFIX},g' ${WRKSRC}/Makefile
-
-.include
---- pkg-comment ---
-Streamlined replacement for make
---- pkg-descr ---
-Mk is a streamlined replacement for make, written for
-Tenth Edition Research Unix by Andrew Hume.
-
-WWW: http://pdos.lcs.mit.edu/~rsc/software/#mk
-
-Russ Cox
-rsc@post.harvard.edu
---- pkg-plist ---
-bin/mk
-doc/mk.pdf
---- /dev/null ---
-This is just a way to make sure blank lines don't
-creep into pkg-plist. |
| diff --git a/src/cmd/mk/mkfile b/src/cmd/mk/mkfile |
| t@@ -1,9 +0,0 @@
-all:V: Makefile Make.FreeBSD-386 Make.Linux-386 Make.HP-UX-9000 Make.OSF1-alpha \
- Make.SunOS-sun4u Make.SunOS-sun4u-cc Make.SunOS-sun4u-gcc \
- Make.NetBSD-386 Make.Darwin-PowerMacintosh
-
-Makefile:D: ../libutf/Makefile.TOP Makefile.MID ../libutf/Makefile.CMD ../libutf/Makefile.BOT
- cat $prereq >$target
-
-Make.%: ../libutf/Make.%
- cp $prereq $target |
| diff --git a/src/cmd/mk/rpm.spec b/src/cmd/mk/rpm.spec |
| t@@ -1,29 +0,0 @@
-Summary: Streamlined replacement for make
-Name: mk
-Version: 2.0
-Release: 1
-Group: Development/Utils
-Copyright: Public Domain
-Packager: Russ Cox
-Source: http://pdos.lcs.mit.edu/~rsc/software/mk-2.0.tgz
-URL: http://pdos.lcs.mit.edu/~rsc/software/#mk
-Requires: libfmt libbio libregexp9 libutf
-
-%description
-Mk is a streamlined replacement for make, written for
-Tenth Edition Research Unix by Andrew Hume.
-
-http://plan9.bell-labs.com/sys/doc/mk.pdf
-%prep
-%setup
-
-%build
-make
-
-%install
-make install
-
-%files
-/usr/local/doc/mk.pdf
-/usr/local/man/man1/mk.1
-/usr/local/bin/mk |
| diff --git a/src/cmd/sam/Makefile b/src/cmd/sam/Makefile |
| t@@ -1,18 +1,34 @@
-H=errors.h mesg.h parse.h plumb.h sam.h
-SRC= address.c buff.c cmd.c disk.c error.c file.c io.c\
- list.c mesg.c moveto.c multi.c unix.c rasp.c regexp.c\
- sam.c shell.c string.c sys.c util.c xec.c plumb.c
+9SRC=..
+include $(9SRC)/Makehdr
-CC=gcc
-PREFIX=$(HOME)
-#PREFIX=/usr/local
-CFLAGS=-I. -I$(PREFIX)/include -O -g
-LDFLAGS=-L$(PREFIX)/lib
-LDLIBS=-l9 -lfmt -lutf
+TARG=sam
+OFILES=sam.$O\
+ address.$O\
+ buff.$O\
+ cmd.$O\
+ disk.$O\
+ error.$O\
+ file.$O\
+ io.$O\
+ list.$O\
+ mesg.$O\
+ moveto.$O\
+ multi.$O\
+ plumb.$O\
+ rasp.$O\
+ regexp.$O\
+ shell.$O\
+ string.$O\
+ sys.$O\
+ unix.$O\
+ util.$O\
+ xec.$O\
+
+HFILES=sam.h\
+ errors.h\
+ mesg.h\
+
+LDFLAGS+=-l9 -lfmt -lutf
+
+include $(9SRC)/Makeone
-all: sam
-sam: $(SRC) $(H)
- $(CC) -o $@ $(CFLAGS) $(SRC) $(LDFLAGS) $(LDLIBS)
-clean:
- rm -f *.o *~
- rm -f sam |
| diff --git a/src/cmd/sam/address.c b/src/cmd/sam/address.c |
| t@@ -27,7 +27,7 @@ address(Addr *ap, Address a, int sign)
break;
case '$':
- a.r.p1 = a.r.p2 = f->_.nc;
+ a.r.p1 = a.r.p2 = f->b.nc;
break;
case '\'':
t@@ -52,7 +52,7 @@ address(Addr *ap, Address a, int sign)
break;
case '*':
- a.r.p1 = 0, a.r.p2 = f->_.nc;
+ a.r.p1 = 0, a.r.p2 = f->b.nc;
return a;
case ',':
t@@ -69,7 +69,7 @@ address(Addr *ap, Address a, int sign)
if(ap->next)
a2 = address(ap->next, a, 0);
else
- a2.f = a.f, a2.r.p1 = a2.r.p2 = f->_.nc;
+ a2.f = a.f, a2.r.p1 = a2.r.p2 = f->b.nc;
if(a1.f != a2.f)
error(Eorder);
a.f = a1.f, a.r.p1 = a1.r.p1, a.r.p2 = a2.r.p2;
t@@ -101,7 +101,7 @@ nextmatch(File *f, String *r, Posn p, int sign)
if(!execute(f, p, INFINITY))
error(Esearch);
if(sel.p[0].p1==sel.p[0].p2 && sel.p[0].p1==p){
- if(++p>f->_.nc)
+ if(++p>f->b.nc)
p = 0;
if(!execute(f, p, INFINITY))
panic("address");
t@@ -111,7 +111,7 @@ nextmatch(File *f, String *r, Posn p, int sign)
error(Esearch);
if(sel.p[0].p1==sel.p[0].p2 && sel.p[0].p2==p){
if(--p<0)
- p = f->_.nc;
+ p = f->b.nc;
if(!bexecute(f, p))
panic("address");
}
t@@ -156,10 +156,10 @@ filematch(File *f, String *r)
/* A little dirty... */
if(menu == 0)
menu = fileopen();
- bufreset(menu);
- bufinsert(menu, 0, genstr.s, genstr.n);
+ bufreset(&menu->b);
+ bufinsert(&menu->b, 0, genstr.s, genstr.n);
compile(r);
- return execute(menu, 0, menu->_.nc);
+ return execute(menu, 0, menu->b.nc);
}
Address
t@@ -171,7 +171,7 @@ charaddr(Posn l, Address addr, int sign)
addr.r.p2 = addr.r.p1-=l;
else if(sign > 0)
addr.r.p1 = addr.r.p2+=l;
- if(addr.r.p1<0 || addr.r.p2>addr.f->_.nc)
+ if(addr.r.p1<0 || addr.r.p2>addr.f->b.nc)
error(Erange);
return addr;
}
t@@ -203,14 +203,14 @@ lineaddr(Posn l, Address addr, int sign)
n = filereadc(f, p++)=='\n';
}
while(n < l){
- if(p >= f->_.nc)
+ if(p >= f->b.nc)
error(Erange);
if(filereadc(f, p++) == '\n')
n++;
}
a.r.p1 = p;
}
- while(p < f->_.nc && filereadc(f, p++)!='\n')
+ while(p < f->b.nc && filereadc(f, p++)!='\n')
;
a.r.p2 = p;
}else{ |
| diff --git a/src/cmd/sam/buff.c b/src/cmd/sam/buff.c |
| t@@ -91,8 +91,8 @@ setcache(Buffer *b, uint q0)
i = b->cbi;
}
blp = &b->bl[i];
- while(q+(*blp)->_.n <= q0 && q+(*blp)->_.n < b->nc){
- q += (*blp)->_.n;
+ while(q+(*blp)->u.n <= q0 && q+(*blp)->u.n < b->nc){
+ q += (*blp)->u.n;
i++;
blp++;
if(i >= b->nbl)
t@@ -102,8 +102,8 @@ setcache(Buffer *b, uint q0)
/* remember position */
b->cbi = i;
b->cq = q;
- sizecache(b, bl->_.n);
- b->cnc = bl->_.n;
+ sizecache(b, bl->u.n);
+ b->cnc = bl->u.n;
/*read block*/
diskread(disk, bl, b->c, b->cnc);
} |
| diff --git a/src/cmd/sam/cmd.c b/src/cmd/sam/cmd.c |
| t@@ -185,14 +185,14 @@ termcommand(void)
{
Posn p;
- for(p=cmdpt; p_.nc; p++){
+ for(p=cmdpt; pb.nc; p++){
if(terminp >= &termline[BLOCKSIZE]){
- cmdpt = cmd->_.nc;
+ cmdpt = cmd->b.nc;
error(Etoolong);
}
*terminp++ = filereadc(cmd, p);
}
- cmdpt = cmd->_.nc;
+ cmdpt = cmd->b.nc;
}
void |
| diff --git a/src/cmd/sam/disk.c b/src/cmd/sam/disk.c |
| t@@ -64,20 +64,20 @@ disknewblock(Disk *d, uint n)
size = ntosize(n, &i);
b = d->free[i];
if(b)
- d->free[i] = b->_.next;
+ d->free[i] = b->u.next;
else{
/* allocate in chunks to reduce malloc overhead */
if(blist == nil){
blist = emalloc(100*sizeof(Block));
for(j=0; j<100-1; j++)
- blist[j]._.next = &blist[j+1];
+ blist[j].u.next = &blist[j+1];
}
b = blist;
- blist = b->_.next;
+ blist = b->u.next;
b->addr = d->addr;
d->addr += size;
}
- b->_.n = n;
+ b->u.n = n;
return b;
}
t@@ -86,8 +86,8 @@ diskrelease(Disk *d, Block *b)
{
uint i;
- ntosize(b->_.n, &i);
- b->_.next = d->free[i];
+ ntosize(b->u.n, &i);
+ b->u.next = d->free[i];
d->free[i] = b;
}
t@@ -98,7 +98,7 @@ diskwrite(Disk *d, Block **bp, Rune *r, uint n)
Block *b;
b = *bp;
- size = ntosize(b->_.n, nil);
+ size = ntosize(b->u.n, nil);
nsize = ntosize(n, nil);
if(size != nsize){
diskrelease(d, b);
t@@ -107,16 +107,16 @@ diskwrite(Disk *d, Block **bp, Rune *r, uint n)
}
if(pwrite(d->fd, r, n*sizeof(Rune), b->addr) != n*sizeof(Rune))
panic("write error to temp file");
- b->_.n = n;
+ b->u.n = n;
}
void
diskread(Disk *d, Block *b, Rune *r, uint n)
{
- if(n > b->_.n)
+ if(n > b->u.n)
panic("internal error: diskread");
- ntosize(b->_.n, nil); /* called only for sanity check on Maxblock */
+ ntosize(b->u.n, nil); /* called only for sanity check on Maxblock */
if(pread(d->fd, r, n*sizeof(Rune), b->addr) != n*sizeof(Rune))
panic("read error from temp file");
} |
| diff --git a/src/cmd/sam/file.c b/src/cmd/sam/file.c |
| t@@ -114,7 +114,7 @@ mergeextend(File *f, uint p0)
mp0n = merge.p0+merge.n;
if(mp0n != p0){
- bufread(f, mp0n, merge.buf+merge.nbuf, p0-mp0n);
+ bufread(&f->b, mp0n, merge.buf+merge.nbuf, p0-mp0n);
merge.nbuf += p0-mp0n;
merge.n = p0-merge.p0;
}
t@@ -268,11 +268,11 @@ filedeltext(File *f, Text *t)
void
fileinsert(File *f, uint p0, Rune *s, uint ns)
{
- if(p0 > f->_.nc)
+ if(p0 > f->b.nc)
panic("internal error: fileinsert");
if(f->seq > 0)
fileuninsert(f, &f->delta, p0, ns);
- bufinsert(f, p0, s, ns);
+ bufinsert(&f->b, p0, s, ns);
if(ns)
f->mod = TRUE;
}
t@@ -294,11 +294,11 @@ fileuninsert(File *f, Buffer *delta, uint p0, uint ns)
void
filedelete(File *f, uint p0, uint p1)
{
- if(!(p0<=p1 && p0<=f->_.nc && p1<=f->_.nc))
+ if(!(p0<=p1 && p0<=f->b.nc && p1<=f->b.nc))
panic("internal error: filedelete");
if(f->seq > 0)
fileundelete(f, &f->delta, p0, p1);
- bufdelete(f, p0, p1);
+ bufdelete(&f->b, p0, p1);
if(p1 > p0)
f->mod = TRUE;
}
t@@ -321,7 +321,7 @@ fileundelete(File *f, Buffer *delta, uint p0, uint p1)
n = p1 - i;
if(n > RBUFSIZE)
n = RBUFSIZE;
- bufread(f, i, buf, n);
+ bufread(&f->b, i, buf, n);
bufinsert(delta, delta->nc, buf, n);
}
fbuffree(buf);
t@@ -334,9 +334,9 @@ filereadc(File *f, uint q)
{
Rune r;
- if(q >= f->_.nc)
+ if(q >= f->b.nc)
return -1;
- bufread(f, q, &r, 1);
+ bufread(&f->b, q, &r, 1);
return r;
}
t@@ -402,7 +402,7 @@ fileload(File *f, uint p0, int fd, int *nulls)
{
if(f->seq > 0)
panic("undo in file.load unimplemented");
- return bufload(f, p0, fd, nulls);
+ return bufload(&f->b, p0, fd, nulls);
}
int
t@@ -525,7 +525,7 @@ fileundo(File *f, int isundo, int canredo, uint *q0p, uint *q1p, int flag)
if(canredo)
fileundelete(f, epsilon, u.p0, u.p0+u.n);
f->mod = u.mod;
- bufdelete(f, u.p0, u.p0+u.n);
+ bufdelete(&f->b, u.p0, u.p0+u.n);
raspdelete(f, u.p0, u.p0+u.n, flag);
*q0p = u.p0;
*q1p = u.p0;
t@@ -543,7 +543,7 @@ fileundo(File *f, int isundo, int canredo, uint *q0p, uint *q1p, int flag)
if(n > RBUFSIZE)
n = RBUFSIZE;
bufread(delta, up+i, buf, n);
- bufinsert(f, u.p0+i, buf, n);
+ bufinsert(&f->b, u.p0+i, buf, n);
raspinsert(f, u.p0+i, buf, n, flag);
}
fbuffree(buf);
t@@ -601,7 +601,7 @@ void
fileclose(File *f)
{
Strclose(&f->name);
- bufclose(f);
+ bufclose(&f->b);
bufclose(&f->delta);
bufclose(&f->epsilon);
if(f->rasp) |
| diff --git a/src/cmd/sam/io.c b/src/cmd/sam/io.c |
| t@@ -53,7 +53,7 @@ writef(File *f)
error(Eappend);
n = writeio(f);
if(f->name.s[0]==0 || samename){
- if(addr.r.p1==0 && addr.r.p2==f->_.nc)
+ if(addr.r.p1==0 && addr.r.p2==f->b.nc)
f->cleanseq = f->seq;
state(f, f->cleanseq==f->seq? Clean : Dirty);
}
t@@ -87,7 +87,7 @@ readio(File *f, int *nulls, int setdate, int toterm)
*nulls = FALSE;
b = 0;
if(f->unread){
- nt = bufload(f, 0, io, nulls);
+ nt = bufload(&f->b, 0, io, nulls);
if(toterm)
raspload(f);
}else
t@@ -149,7 +149,7 @@ writeio(File *f)
n = BLOCKSIZE;
else
n = addr.r.p2-p;
- bufread(f, p, genbuf, n);
+ bufread(&f->b, p, genbuf, n);
c = Strtoc(tmprstr(genbuf, n));
m = strlen(c);
if(Write(io, c, m) != m){
t@@ -188,8 +188,7 @@ bootterm(char *machine, char **argv, char **end)
argv[0] = "samterm";
*end = 0;
exec(samterm, argv);
- fprint(2, "can't exec: ");
- perror(samterm);
+ fprint(2, "can't exec %s: %r\n", samterm);
_exits("damn");
}
if(pipe(ph2t)==-1 || pipe(pt2h)==-1) |
| diff --git a/src/cmd/sam/mesg.c b/src/cmd/sam/mesg.c |
| t@@ -101,7 +101,7 @@ journaln(int out, long n)
int
rcvchar(void){
static uchar buf[64];
- static i, nleft = 0;
+ static int i, nleft = 0;
if(nleft <= 0){
nleft = read(0, (char *)buf, sizeof buf);
t@@ -116,9 +116,9 @@ rcvchar(void){
int
rcv(void){
int c;
- static state = 0;
- static count = 0;
- static i = 0;
+ static int state = 0;
+ static int count = 0;
+ static int i = 0;
while((c=rcvchar()) != -1)
switch(state){
t@@ -235,17 +235,17 @@ inmesg(Tmesg type)
journaln(0, p1-p0);
if(f->unread)
panic("Trequest: unread");
- if(p1>f->_.nc)
- p1 = f->_.nc;
- if(p0>f->_.nc) /* can happen e.g. scrolling during command */
- p0 = f->_.nc;
+ if(p1>f->b.nc)
+ p1 = f->b.nc;
+ if(p0>f->b.nc) /* can happen e.g. scrolling during command */
+ p0 = f->b.nc;
if(p0 == p1){
i = 0;
r.p1 = r.p2 = p0;
}else{
r = rdata(f->rasp, p0, p1-p0);
i = r.p2-r.p1;
- bufread(f, r.p1, buf, i);
+ bufread(&f->b, r.p1, buf, i);
}
buf[i]=0;
outTslS(Hdata, f->tag, r.p1, tmprstr(buf, i+1));
t@@ -271,9 +271,9 @@ inmesg(Tmesg type)
if(f->unread)
load(f);
else{
- if(f->_.nc>0){
- rgrow(f->rasp, 0L, f->_.nc);
- outTsll(Hgrow, f->tag, 0L, f->_.nc);
+ if(f->b.nc>0){
+ rgrow(f->rasp, 0L, f->b.nc);
+ outTsll(Hgrow, f->tag, 0L, f->b.nc);
}
outTs(Hcheck0, f->tag);
moveto(f, f->dot.r);
t@@ -302,7 +302,7 @@ inmesg(Tmesg type)
loginsert(f, p0, str->s, str->n);
if(fileupdate(f, FALSE, FALSE))
seq++;
- if(f==cmd && p0==f->_.nc-i && i>0 && str->s[i-1]=='\n'){
+ if(f==cmd && p0==f->b.nc-i && i>0 && str->s[i-1]=='\n'){
freetmpstr(str);
termlocked++;
termcommand();
t@@ -370,7 +370,7 @@ inmesg(Tmesg type)
journaln(0, i);
f = whichfile(i);
addr.r.p1 = 0;
- addr.r.p2 = f->_.nc;
+ addr.r.p2 = f->b.nc;
if(f->name.s[0] == 0)
error(Enoname);
Strduplstr(&genstr, &f->name);
t@@ -427,9 +427,9 @@ inmesg(Tmesg type)
outTl(Hsnarflen, genstr.n);
if(genstr.s[genstr.n-1] != '\n')
Straddc(&genstr, '\n');
- loginsert(cmd, cmd->_.nc, genstr.s, genstr.n);
+ loginsert(cmd, cmd->b.nc, genstr.s, genstr.n);
fileupdate(cmd, FALSE, TRUE);
- cmd->dot.r.p1 = cmd->dot.r.p2 = cmd->_.nc;
+ cmd->dot.r.p1 = cmd->dot.r.p2 = cmd->b.nc;
telldot(cmd);
termcommand();
break;
t@@ -522,7 +522,7 @@ inmesg(Tmesg type)
p = p0;
while(p0>0 && (i=filereadc(f, p0 - 1))!=' ' && i!='\t' && i!='\n')
p0--;
- while(p1_.nc && (i=filereadc(f, p1))!=' ' && i!='\t' && i!='\n')
+ while(p1b.nc && (i=filereadc(f, p1))!=' ' && i!='\t' && i!='\n')
p1++;
sprint(cbuf, "click=%ld", p-p0);
pm->attr = plumbunpackattr(cbuf);
t@@ -559,13 +559,13 @@ snarf(File *f, Posn p1, Posn p2, Buffer *buf, int emptyok)
return;
bufreset(buf);
/* Stage through genbuf to avoid compaction problems (vestigial) */
- if(p2 > f->_.nc){
- fprint(2, "bad snarf addr p1=%ld p2=%ld f->_.nc=%d\n", p1, p2, f->_.nc); /*ZZZ should never happen, can remove */
- p2 = f->_.nc;
+ if(p2 > f->b.nc){
+ fprint(2, "bad snarf addr p1=%ld p2=%ld f->b.nc=%d\n", p1, p2, f->b.nc); /*ZZZ should never happen, can remove */
+ p2 = f->b.nc;
}
for(l=p1; lBLOCKSIZE? BLOCKSIZE : p2-l;
- bufread(f, l, genbuf, i);
+ bufread(&f->b, l, genbuf, i);
bufinsert(buf, buf->nc, tmprstr(genbuf, i)->s, i);
}
}
t@@ -609,7 +609,7 @@ setgenstr(File *f, Posn p0, Posn p1)
if(p1-p0 >= TBLOCKSIZE)
error(Etoolong);
Strinsure(&genstr, p1-p0);
- bufread(f, p0, genbuf, p1-p0);
+ bufread(&f->b, p0, genbuf, p1-p0);
memmove(genstr.s, genbuf, RUNESIZE*(p1-p0));
genstr.n = p1-p0;
}else{ |
| diff --git a/src/cmd/sam/mkfile b/src/cmd/sam/mkfile |
| t@@ -1,40 +0,0 @@
-$objtype/mkfile
-
-TARG=sam
-OFILES=sam.$O\
- address.$O\
- buff.$O\
- cmd.$O\
- disk.$O\
- error.$O\
- file.$O\
- io.$O\
- list.$O\
- mesg.$O\
- moveto.$O\
- multi.$O\
- plan9.$O\
- rasp.$O\
- regexp.$O\
- shell.$O\
- string.$O\
- sys.$O\
- util.$O\
- xec.$O\
-
-HFILES=sam.h\
- errors.h\
- mesg.h\
-
-BIN=/$objtype/bin
- |
| diff --git a/src/cmd/sam/moveto.c b/src/cmd/sam/moveto.c |
| t@@ -39,8 +39,8 @@ lookorigin(File *f, Posn p0, Posn ls)
int nl, nc, c;
Posn p, oldp0;
- if(p0 > f->_.nc)
- p0 = f->_.nc;
+ if(p0 > f->b.nc)
+ p0 = f->b.nc;
oldp0 = p0;
p = p0;
for(nl=nc=c=0; c!=-1 && nl 0){
- if(*p >= f->_.nc)
+ if(*p >= f->b.nc)
break;
c = filereadc(f, (*p)++);
}else{
t@@ -126,7 +126,7 @@ doubleclick(File *f, Posn p1)
Rune *r, *l;
Posn p;
- if(p1 > f->_.nc)
+ if(p1 > f->b.nc)
return;
f->dot.r.p1 = f->dot.r.p2 = p1;
for(i=0; left[i]; i++){
t@@ -147,7 +147,7 @@ doubleclick(File *f, Posn p1)
}
/* try right match */
p = p1;
- if(p1 == f->_.nc)
+ if(p1 == f->b.nc)
c = '\n';
else
c = filereadc(f, p);
t@@ -156,14 +156,14 @@ doubleclick(File *f, Posn p1)
f->dot.r.p1 = p;
if(c!='\n' || p!=0 || filereadc(f, 0)=='\n')
f->dot.r.p1++;
- f->dot.r.p2 = p1+(p1_.nc && c=='\n');
+ f->dot.r.p2 = p1+(p1b.nc && c=='\n');
}
return;
}
}
/* try filling out word to right */
p = p1;
- while(p < f->_.nc && alnum(filereadc(f, p++)))
+ while(p < f->b.nc && alnum(filereadc(f, p++)))
f->dot.r.p2++;
/* try filling out word to left */
p = p1; |
| diff --git a/src/cmd/sam/rasp.c b/src/cmd/sam/rasp.c |
| t@@ -35,10 +35,10 @@ raspload(File *f)
{
if(f->rasp == nil)
return;
- grown = f->_.nc;
+ grown = f->b.nc;
growpos = 0;
- if(f->_.nc)
- rgrow(f->rasp, 0, f->_.nc);
+ if(f->b.nc)
+ rgrow(f->rasp, 0, f->b.nc);
raspdone(f, 1);
}
t@@ -55,14 +55,14 @@ raspstart(File *f)
void
raspdone(File *f, int toterm)
{
- if(f->dot.r.p1 > f->_.nc)
- f->dot.r.p1 = f->_.nc;
- if(f->dot.r.p2 > f->_.nc)
- f->dot.r.p2 = f->_.nc;
- if(f->mark.p1 > f->_.nc)
- f->mark.p1 = f->_.nc;
- if(f->mark.p2 > f->_.nc)
- f->mark.p2 = f->_.nc;
+ if(f->dot.r.p1 > f->b.nc)
+ f->dot.r.p1 = f->b.nc;
+ if(f->dot.r.p2 > f->b.nc)
+ f->dot.r.p2 = f->b.nc;
+ if(f->mark.p1 > f->b.nc)
+ f->mark.p1 = f->b.nc;
+ if(f->mark.p2 > f->b.nc)
+ f->mark.p2 = f->b.nc;
if(f->rasp == nil)
return;
if(grown) |
| diff --git a/src/cmd/sam/regexp.c b/src/cmd/sam/regexp.c |
| t@@ -700,7 +700,7 @@ bexecute(File *f, Posn startp)
case 3:
goto Return;
list[0][0].inst = list[1][0].inst = 0;
- p = f->_.nc;
+ p = f->b.nc;
goto doloop;
default:
goto Return;
t@@ -758,7 +758,7 @@ bexecute(File *f, Posn startp)
}
break;
case EOL:
- if(p==f->_.nc || filereadc(f, p)=='\n')
+ if(p==f->b.nc || filereadc(f, p)=='\n')
goto Step;
break;
case CCLASS: |
| diff --git a/src/cmd/sam/sam b/src/cmd/sam/sam |
| Binary files differ. |
| diff --git a/src/cmd/sam/sam.c b/src/cmd/sam/sam.c |
| t@@ -148,7 +148,7 @@ rescue(void)
io = -1;
for(i=0; i_.nc==0 || !fileisdirty(f))
+ if(f==cmd || f->b.nc==0 || !fileisdirty(f))
continue;
if(io == -1){
sprint(buf, "%s/sam.save", home);
t@@ -164,7 +164,7 @@ rescue(void)
}else
sprint(buf, "nameless.%d", nblank++);
fprint(io, "#!%s '%s' $* <<'---%s'\n", SAMSAVECMD, buf, buf);
- addr.r.p1 = 0, addr.r.p2 = f->_.nc;
+ addr.r.p1 = 0, addr.r.p2 = f->b.nc;
writeio(f);
fprint(io, "\n---%s\n", (char *)buf);
}
t@@ -299,7 +299,7 @@ cmdupdate(void)
{
if(cmd && cmd->seq!=0){
fileupdate(cmd, FALSE, downloaded);
- cmd->dot.r.p1 = cmd->dot.r.p2 = cmd->_.nc;
+ cmd->dot.r.p1 = cmd->dot.r.p2 = cmd->b.nc;
telldot(cmd);
}
}
t@@ -354,9 +354,9 @@ edit(File *f, int cmd)
if(cmd == 'r')
logdelete(f, addr.r.p1, addr.r.p2);
if(cmd=='e' || cmd=='I'){
- logdelete(f, (Posn)0, f->_.nc);
- addr.r.p2 = f->_.nc;
- }else if(f->_.nc!=0 || (f->name.s[0] && Strcmp(&genstr, &f->name)!=0))
+ logdelete(f, (Posn)0, f->b.nc);
+ addr.r.p2 = f->b.nc;
+ }else if(f->b.nc!=0 || (f->name.s[0] && Strcmp(&genstr, &f->name)!=0))
empty = FALSE;
if((io = open(genc, OREAD))<0) {
if (curfile && curfile->unread)
t@@ -485,17 +485,17 @@ readcmd(String *s)
fileclose(flist);
flist = fileopen();
- addr.r.p1 = 0, addr.r.p2 = flist->_.nc;
+ addr.r.p1 = 0, addr.r.p2 = flist->b.nc;
retcode = plan9(flist, '<', s, FALSE);
fileupdate(flist, FALSE, FALSE);
flist->seq = 0;
- if (flist->_.nc > BLOCKSIZE)
+ if (flist->b.nc > BLOCKSIZE)
error(Etoolong);
Strzero(&genstr);
- Strinsure(&genstr, flist->_.nc);
- bufread(flist, (Posn)0, genbuf, flist->_.nc);
- memmove(genstr.s, genbuf, flist->_.nc*RUNESIZE);
- genstr.n = flist->_.nc;
+ Strinsure(&genstr, flist->b.nc);
+ bufread(&flist->b, (Posn)0, genbuf, flist->b.nc);
+ memmove(genstr.s, genbuf, flist->b.nc*RUNESIZE);
+ genstr.n = flist->b.nc;
Straddc(&genstr, '\0');
return retcode;
}
t@@ -673,7 +673,7 @@ copy(File *f, Address addr2)
ni = addr.r.p2-p;
if(ni > BLOCKSIZE)
ni = BLOCKSIZE;
- bufread(f, p, genbuf, ni);
+ bufread(&f->b, p, genbuf, ni);
loginsert(addr2.f, addr2.r.p2, tmprstr(genbuf, ni)->s, ni);
}
addr2.f->ndot.r.p2 = addr2.r.p2+(f->dot.r.p2-f->dot.r.p1); |
| diff --git a/src/cmd/sam/sam.h b/src/cmd/sam/sam.h |
| t@@ -110,11 +110,10 @@ enum
struct Block
{
uint addr; /* disk address in bytes */
- union
- {
+ union {
uint n; /* number of used runes in block */
Block *next; /* pointer to next in free list */
- } _;
+ } u;
};
struct Disk
t@@ -151,7 +150,7 @@ void bufreset(Buffer*);
struct File
{
- Buffer _; /* the data */
+ Buffer b; /* the data */
Buffer delta; /* transcript of changes */
Buffer epsilon; /* inversion of delta for redo */
String name; /* name of associated file */ |
| diff --git a/src/cmd/sam/xec.c b/src/cmd/sam/xec.c |
| t@@ -231,7 +231,7 @@ s_cmd(File *f, Cmd *cp)
j = c-'0';
if(sel.p[j].p2-sel.p[j].p1>BLOCKSIZE)
error(Elongtag);
- bufread(f, sel.p[j].p1, genbuf, sel.p[j].p2-sel.p[j].p1);
+ bufread(&f->b, sel.p[j].p1, genbuf, sel.p[j].p2-sel.p[j].p1);
Strinsert(&genstr, tmprstr(genbuf, (sel.p[j].p2-sel.p[j].p1)), genstr.n);
}else
Straddc(&genstr, c);
t@@ -240,7 +240,7 @@ s_cmd(File *f, Cmd *cp)
else{
if(sel.p[0].p2-sel.p[0].p1>BLOCKSIZE)
error(Elongrhs);
- bufread(f, sel.p[0].p1, genbuf, sel.p[0].p2-sel.p[0].p1);
+ bufread(&f->b, sel.p[0].p1, genbuf, sel.p[0].p2-sel.p[0].p1);
Strinsert(&genstr,
tmprstr(genbuf, (int)(sel.p[0].p2-sel.p[0].p1)),
genstr.n);
t@@ -390,15 +390,15 @@ display(File *f)
p1 = addr.r.p1;
p2 = addr.r.p2;
- if(p2 > f->_.nc){
- fprint(2, "bad display addr p1=%ld p2=%ld f->_.nc=%d\n", p1, p2, f->_.nc); /*ZZZ should never happen, can remove */
- p2 = f->_.nc;
+ if(p2 > f->b.nc){
+ fprint(2, "bad display addr p1=%ld p2=%ld f->b.nc=%d\n", p1, p2, f->b.nc); /*ZZZ should never happen, can remove */
+ p2 = f->b.nc;
}
while(p1 < p2){
np = p2-p1;
if(np>BLOCKSIZE-1)
np = BLOCKSIZE-1;
- bufread(f, p1, genbuf, np);
+ bufread(&f->b, p1, genbuf, np);
genbuf[np] = 0;
c = Strtoc(tmprstr(genbuf, np+1));
if(downloaded) |
| diff --git a/src/cmd/samterm/Make.HP-UX-9000 b/src/cmd/samterm/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/cmd/samterm/Make.Linux-386 b/src/cmd/samterm/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/cmd/samterm/Make.NetBSD-386 b/src/cmd/samterm/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/cmd/samterm/Make.OSF1-alpha b/src/cmd/samterm/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/cmd/samterm/Make.SunOS-sun4u b/src/cmd/samterm/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/cmd/samterm/Make.SunOS-sun4u-cc b/src/cmd/samterm/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/cmd/samterm/Make.SunOS-sun4u-gcc b/src/cmd/samterm/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/cmd/samterm/Makefile b/src/cmd/samterm/Makefile |
| t@@ -1,22 +1,5 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
TARG=samterm
OFILES=\
t@@ -33,62 +16,12 @@ OFILES=\
HFILES=\
samterm.h\
flayer.h\
- $(PREFIX)/include/frame.h\
-
-all: $(TARG)
-
-install:
- install -c -m 0755 samterm $(PREFIX)/bin/samterm
-
-
-$(TARG): $(OFILES)
- $(CC) -o $(TARG) $(OFILES) -L$(PREFIX)/lib -lframe -ldraw -lthread -l9 -lregexp9 -lbio -lfmt -lutf -L/usr/X11R6/lib -lX11 -lm -ldraw
-
-
-.c.$O:
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
+ ../sam/sam.h\
+ ../sam/mesg.h\
+ $(9SRC)/include/frame.h\
+ $(9SRC)/include/draw.h\
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+CFLAGS+=-I../sam
+LDFLAGS+=-lframe -ldraw -lthread -l9 -lregexp9 -lbio -lfmt -lutf -L$(X11)/lib -lX11 -lm
-.phony: all clean nuke install tgz rpm ports
+include ../Makeone |
| diff --git a/src/cmd/samterm/Makefile.MID b/src/cmd/samterm/Makefile.MID |
| t@@ -1,22 +0,0 @@
-TARG=samterm
-OFILES=\
- main.$O\
- icons.$O\
- menu.$O\
- mesg.$O\
- rasp.$O\
- scroll.$O\
- flayer.$O\
- io.$O\
- plan9.$O\
-
-HFILES=\
- samterm.h\
- flayer.h\
- $(PREFIX)/include/frame.h\
-
-all: $(TARG)
-
-install:
- install -c -m 0755 samterm $(PREFIX)/bin/samterm
- |
| diff --git a/src/cmd/samterm/mkfile b/src/cmd/samterm/mkfile |
| t@@ -1,9 +0,0 @@
-all:V: Makefile Make.FreeBSD-386 Make.Linux-386 Make.HP-UX-9000 Make.OSF1-alpha \
- Make.SunOS-sun4u Make.SunOS-sun4u-cc Make.SunOS-sun4u-gcc \
- Make.NetBSD-386 Make.Darwin-PowerMacintosh
-
-Makefile:D: ../libutf/Makefile.TOP Makefile.MID ../libutf/Makefile.CMD ../libutf/Makefile.BOT
- cat $prereq >$target
-
-Make.%: ../libutf/Make.%
- cp $prereq $target |
| diff --git a/src/cmd/samterm/samterm b/src/cmd/samterm/samterm |
| Binary files differ. |
| diff --git a/src/lib9/Make.Darwin-PowerMacintosh b/src/lib9/Make.Darwin-PowerMacintosh |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.FreeBSD-386 b/src/lib9/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.HP-UX-9000 b/src/lib9/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.Linux-386 b/src/lib9/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.NetBSD-386 b/src/lib9/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.OSF1-alpha b/src/lib9/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.SunOS-sun4u b/src/lib9/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.SunOS-sun4u-cc b/src/lib9/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/lib9/Make.SunOS-sun4u-gcc b/src/lib9/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/lib9/Makefile b/src/lib9/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=lib9.a
-VERSION=2.0
-PORTPLACE=devel/lib9
-NAME=lib9
OFILES=\
_exits.$O\
t@@ -53,68 +33,5 @@ OFILES=\
HFILES=\
lib9.h\
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- # install -m 0644 lib9.3 $(PREFIX)/man/man3/lib9.3
- install -m 0644 lib9.h $(PREFIX)/include/lib9.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-test: $(LIB) test.$O
- $(CC) -o test test.$O $(LIB) -L$(PREFIX)/lib -lfmt -lutf
-
-testfork: $(LIB) testfork.$O
- $(CC) -o testfork testfork.$O $(LIB) -L$(PREFIX)/lib -lfmt -lutf
-
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+include $(9SRC)/Makesyslib
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/lib9/Makefile.MID b/src/lib9/Makefile.MID |
| t@@ -1,49 +0,0 @@
-LIB=lib9.a
-VERSION=2.0
-PORTPLACE=devel/lib9
-NAME=lib9
-
-OFILES=\
- _exits.$O\
- argv0.$O\
- await.$O\
- encodefmt.$O\
- errstr.$O\
- exits.$O\
- ffork-$(SYSNAME).$O\
- getcallerpc-$(OBJTYPE).$O\
- getfields.$O\
- lock.$O\
- malloctag.$O\
- mallocz.$O\
- nrand.$O\
- qlock.$O\
- readn.$O\
- rendez.$O\
- strecpy.$O\
- sysfatal.$O\
- tas-$(OBJTYPE).$O\
- tokenize.$O\
- u16.$O\
- u32.$O\
- u64.$O\
- wait.$O\
- werrstr.$O\
-
-HFILES=\
- lib9.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- # install -m 0644 lib9.3 $(PREFIX)/man/man3/lib9.3
- install -m 0644 lib9.h $(PREFIX)/include/lib9.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-test: $(LIB) test.$O
- $(CC) -o test test.$O $(LIB) -L$(PREFIX)/lib -lfmt -lutf
-
-testfork: $(LIB) testfork.$O
- $(CC) -o testfork testfork.$O $(LIB) -L$(PREFIX)/lib -lfmt -lutf
- |
| diff --git a/src/lib9/mkfile b/src/lib9/mkfile |
| t@@ -1,2 +0,0 @@
-<../libutf/mkfile
- |
| diff --git a/src/libbio/Make.FreeBSD-386 b/src/libbio/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libbio/Make.HP-UX-9000 b/src/libbio/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libbio/Make.Linux-386 b/src/libbio/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libbio/Make.NetBSD-386 b/src/libbio/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libbio/Make.OSF1-alpha b/src/libbio/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libbio/Make.SunOS-sun4u b/src/libbio/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/libbio/Make.SunOS-sun4u-cc b/src/libbio/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libbio/Make.SunOS-sun4u-gcc b/src/libbio/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libbio/Makefile b/src/libbio/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libbio.a
-VERSION=2.0
-PORTPLACE=devel/libbio
-NAME=libbio
OFILES=\
bbuffered.$O\
t@@ -44,65 +24,8 @@ OFILES=\
HFILES=\
bio.h\
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 bio.3 $(PREFIX)/man/man3/bio.3
- install -m 0644 bio.h $(PREFIX)/include
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
+include $(9SRC)/Makesyslib
bcat: bcat.$O $(LIB)
- $(CC) -o bcat bcat.$O $(LIB) -L/usr/local/lib -lfmt -lutf
-
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+ $(CC) -o bcat bcat.$O -L$(9SRC)/lib -lbio -lfmt -lutf
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/libbio/Makefile.MID b/src/libbio/Makefile.MID |
| t@@ -1,37 +0,0 @@
-LIB=libbio.a
-VERSION=2.0
-PORTPLACE=devel/libbio
-NAME=libbio
-
-OFILES=\
- bbuffered.$O\
- bfildes.$O\
- bflush.$O\
- bgetc.$O\
- bgetd.$O\
- binit.$O\
- boffset.$O\
- bprint.$O\
- bputc.$O\
- brdline.$O\
- brdstr.$O\
- bread.$O\
- bseek.$O\
- bwrite.$O\
- bgetrune.$O\
- bputrune.$O\
-
-HFILES=\
- bio.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 bio.3 $(PREFIX)/man/man3/bio.3
- install -m 0644 bio.h $(PREFIX)/include
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-bcat: bcat.$O $(LIB)
- $(CC) -o bcat bcat.$O $(LIB) -L/usr/local/lib -lfmt -lutf
- |
| diff --git a/src/libbio/bio.3 b/src/libbio/bio.3 |
| t@@ -1,336 +0,0 @@
-.TH BIO 3
-.SH NAME
-Bopen, Binit, Binits, Brdline, Brdstr, Bgetc, Bgetd, Bungetc, Bread, Bseek, Boffset, Bfildes, Blinelen, Bputc, Bprint, Bvprint, Bwrite, Bflush, Bterm, Bbuffered \- buffered input/output
-.SH SYNOPSIS
-.ta \w'Biobuf* 'u
-.B #include
-.B #include
-.PP
-.B
-Biobuf* Bopen(char *file, int mode)
-.PP
-.B
-int Binit(Biobuf *bp, int fd, int mode)
-.PP
-.B
-int Bterm(Biobuf *bp)
-.PP
-.B
-int Bprint(Biobuf *bp, char *format, ...)
-.PP
-.B
-int Bvprint(Biobuf *bp, char *format, va_list arglist);
-.PP
-.B
-void* Brdline(Biobuf *bp, int delim)
-.PP
-.B
-char* Brdstr(Biobuf *bp, int delim, int nulldelim)
-.PP
-.B
-int Blinelen(Biobuf *bp)
-.PP
-.B
-off_t Boffset(Biobuf *bp)
-.PP
-.B
-int Bfildes(Biobuf *bp)
-.PP
-.B
-int Bgetc(Biobuf *bp)
-.PP
-.B
-long Bgetrune(Biobufhdr *bp)
-.PP
-.B
-int Bgetd(Biobuf *bp, double *d)
-.PP
-.B
-int Bungetc(Biobuf *bp)
-.PP
-.B
-int Bungetrune(Biobufhdr *bp)
-.PP
-.B
-off_t Bseek(Biobuf *bp, off_t n, int type)
-.PP
-.B
-int Bputc(Biobuf *bp, int c)
-.PP
-.B
-int Bputrune(Biobufhdr *bp, long c)
-.PP
-.B
-long Bread(Biobuf *bp, void *addr, long nbytes)
-.PP
-.B
-long Bwrite(Biobuf *bp, void *addr, long nbytes)
-.PP
-.B
-int Bflush(Biobuf *bp)
-.PP
-.B
-int Bbuffered(Biobuf *bp)
-.PP
-.SH DESCRIPTION
-These routines implement fast buffered I/O.
-I/O on different file descriptors is independent.
-.PP
-.I Bopen
-opens
-.I file
-for mode
-.B O_RDONLY
-or creates for mode
-.BR O_WRONLY .
-It calls
-.IR malloc (3)
-to allocate a buffer.
-.PP
-.I Binit
-initializes a buffer
-with the open file descriptor passed in
-by the user.
-.PP
-Arguments
-of types pointer to Biobuf and pointer to Biobuf
-can be used interchangeably in the following routines.
-.PP
-.IR Bopen ,
-.IR Binit ,
-or
-.I Binits
-should be called before any of the
-other routines on that buffer.
-.I Bfildes
-returns the integer file descriptor of the associated open file.
-.PP
-.I Bterm
-flushes the buffer for
-.IR bp .
-If the buffer was allocated by
-.IR Bopen ,
-the buffer is
-.I freed
-and the file is closed.
-.PP
-.I Brdline
-reads a string from the file associated with
-.I bp
-up to and including the first
-.I delim
-character.
-The delimiter character at the end of the line is
-not altered.
-.I Brdline
-returns a pointer to the start of the line or
-.L 0
-on end-of-file or read error.
-.I Blinelen
-returns the length (including the delimiter)
-of the most recent string returned by
-.IR Brdline .
-.PP
-.I Brdstr
-returns a
-.IR malloc (3)-allocated
-buffer containing the next line of input delimited by
-.IR delim ,
-terminated by a NUL (0) byte.
-Unlike
-.IR Brdline ,
-which returns when its buffer is full even if no delimiter has been found,
-.I Brdstr
-will return an arbitrarily long line in a single call.
-If
-.I nulldelim
-is set, the terminal delimiter will be overwritten with a NUL.
-After a successful call to
-.IR Brdstr ,
-the return value of
-.I Blinelen
-will be the length of the returned buffer, excluding the NUL.
-.PP
-.I Bgetc
-returns the next byte from
-.IR bp ,
-or a negative value
-at end of file.
-.I Bungetc
-may be called immediately after
-.I Bgetc
-to allow the same byte to be reread.
-.PP
-.I Bgetrune
-calls
-.I Bgetc
-to read the bytes of the next
-.SM UTF
-sequence in the input stream and returns the value of the rune
-represented by the sequence.
-It returns a negative value
-at end of file.
-.I Bungetrune
-may be called immediately after
-.I Bgetrune
-to allow the same
-.SM UTF
-sequence to be reread as either bytes or a rune.
-.I Bungetc
-and
-.I Bungetrune
-may back up a maximum of five bytes.
-.PP
-.I Bgetd
-uses
-.I fmtcharstod
-(undocumented)
-and
-.I Bgetc
-to read the formatted
-floating-point number in the input stream,
-skipping initial blanks and tabs.
-The value is stored in
-.BR *d.
-.PP
-.I Bread
-reads
-.I nbytes
-of data from
-.I bp
-into memory starting at
-.IR addr .
-The number of bytes read is returned on success
-and a negative value is returned if a read error occurred.
-.PP
-.I Bseek
-applies
-.IR lseek (2)
-to
-.IR bp .
-It returns the new file offset.
-.I Boffset
-returns the file offset of the next character to be processed.
-.PP
-.I Bputc
-outputs the low order 8 bits of
-.I c
-on
-.IR bp .
-If this causes a
-.IR write
-to occur and there is an error,
-a negative value is returned.
-Otherwise, a zero is returned.
-.PP
-.I Bputrune
-calls
-.I Bputc
-to output the low order
-16 bits of
-.I c
-as a rune
-in
-.SM UTF
-format
-on the output stream.
-.PP
-.I Bprint
-is a buffered interface to
-.IR print (2).
-If this causes a
-.IR write
-to occur and there is an error,
-a negative value
-.RB ( Beof )
-is returned.
-Otherwise, the number of bytes output is returned.
-.I Bvprint
-does the same except it takes as argument a
-.B va_list
-parameter, so it can be called within a variadic function.
-.PP
-.I Bwrite
-outputs
-.I nbytes
-of data starting at
-.I addr
-to
-.IR bp .
-If this causes a
-.IR write
-to occur and there is an error,
-a negative value is returned.
-Otherwise, the number of bytes written is returned.
-.PP
-.I Bflush
-causes any buffered output associated with
-.I bp
-to be written.
-The return is as for
-.IR Bputc .
-.I Bflush
-is called on
-exit for every buffer still open
-for writing.
-.PP
-.I Bbuffered
-returns the number of bytes in the buffer.
-When reading, this is the number of bytes still available from the last
-read on the file; when writing, it is the number of bytes ready to be
-written.
-.PP
-This library uses
-.IR fmt (3)
-for diagnostic messages about internal errors,
-as well as for the implementation of
-.I Bprint
-and
-.IR Bvprint .
-It uses
-.IR utf (3)
-for the implementation of
-.I Bgetrune
-and
-.IR Bputrune .
-.SH SEE ALSO
-.IR atexit (3).
-.IR open (2),
-.IR print (3),
-.IR utf (7)
-.SH DIAGNOSTICS
-.I Bio
-routines that return integers yield
-.B Beof
-if
-.I bp
-is not the descriptor of an open file.
-.I Bopen
-returns zero if the file cannot be opened in the given mode.
-.SH HISTORY
-The
-.IR bio (3)
-library originally appeared in Plan 9.
-This is a port of the Plan 9 bio library.
-.SH BUGS
-.I Brdline
-returns an error on strings longer than the buffer associated
-with the file
-and also if the end-of-file is encountered
-before a delimiter.
-.I Blinelen
-will tell how many characters are available
-in these cases.
-In the case of a true end-of-file,
-.I Blinelen
-will return zero.
-At the cost of allocating a buffer,
-.I Brdstr
-sidesteps these issues.
-.PP
-The data returned by
-.I Brdline
-may be overwritten by calls to any other
-.I bio
-routine on the same
-.IR bp. |
| diff --git a/src/libbio/bio.h b/src/libbio/bio.h |
| t@@ -1,79 +0,0 @@
-#ifndef _BIOH_
-#define _BIOH_ 1
-
-#include /* for off_t */
-#include /* for O_RDONLY, O_WRONLY */
-
-typedef struct Biobuf Biobuf;
-
-enum
-{
- Bsize = 8*1024,
- Bungetsize = 4, /* space for ungetc */
- Bmagic = 0x314159,
- Beof = -1,
- Bbad = -2,
-
- Binactive = 0, /* states */
- Bractive,
- Bwactive,
- Bracteof,
-
- Bend
-};
-
-struct Biobuf
-{
- int icount; /* neg num of bytes at eob */
- int ocount; /* num of bytes at bob */
- int rdline; /* num of bytes after rdline */
- int runesize; /* num of bytes of last getrune */
- int state; /* r/w/inactive */
- int fid; /* open file */
- int flag; /* magic if malloc'ed */
- off_t offset; /* offset of buffer in file */
- int bsize; /* size of buffer */
- unsigned char* bbuf; /* pointer to beginning of buffer */
- unsigned char* ebuf; /* pointer to end of buffer */
- unsigned char* gbuf; /* pointer to good data in buf */
- unsigned char b[Bungetsize+Bsize];
-};
-
-#define BGETC(bp)\
- ((bp)->icount?(bp)->bbuf[(bp)->bsize+(bp)->icount++]:Bgetc((bp)))
-#define BPUTC(bp,c)\
- ((bp)->ocount?(bp)->bbuf[(bp)->bsize+(bp)->ocount++]=(c),0:Bputc((bp),(c)))
-#define BOFFSET(bp)\
- (((bp)->state==Bractive)?\
- (bp)->offset + (bp)->icount:\
- (((bp)->state==Bwactive)?\
- (bp)->offset + ((bp)->bsize + (bp)->ocount):\
- -1))
-#define BLINELEN(bp)\
- (bp)->rdline
-#define BFILDES(bp)\
- (bp)->fid
-
-int Bbuffered(Biobuf*);
-int Bfildes(Biobuf*);
-int Bflush(Biobuf*);
-int Bgetc(Biobuf*);
-int Bgetd(Biobuf*, double*);
-int Binit(Biobuf*, int, int);
-int Binits(Biobuf*, int, int, unsigned char*, int);
-int Blinelen(Biobuf*);
-off_t Boffset(Biobuf*);
-Biobuf* Bopen(char*, int);
-int Bprint(Biobuf*, char*, ...);
-int Bputc(Biobuf*, int);
-void* Brdline(Biobuf*, int);
-long Bread(Biobuf*, void*, long);
-off_t Bseek(Biobuf*, off_t, int);
-int Bterm(Biobuf*);
-int Bungetc(Biobuf*);
-long Bwrite(Biobuf*, void*, long);
-char* Brdstr(Biobuf*, int, int);
-long Bgetrune(Biobuf*);
-int Bputrune(Biobuf*, long);
-
-#endif |
| diff --git a/src/libbio/bundle.ports b/src/libbio/bundle.ports |
| t@@ -1,45 +0,0 @@
---- Makefile ---
-# New ports collection makefile for: libbio
-# Date Created: 11 Feb 2003
-# Whom: rsc
-#
-# THIS LINE NEEDS REPLACING. IT'S HERE TO GET BY PORTLINT
-# $FreeBSD: ports/devel/libbio/Makefile,v 1.1 2003/02/12 00:51:22 rsc Exp $
-
-PORTNAME= libbio
-PORTVERSION= 2.0
-CATEGORIES= devel
-MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
-EXTRACT_SUFX= .tgz
-
-MAINTAINER= rsc@post.harvard.edu
-
-DEPENDS= ${PORTSDIR}/devel/libfmt ${PORTSDIR}/devel/libutf
-
-MAN3= bio.3
-USE_REINPLACE= yes
-
-.include
-
-post-patch:
- ${REINPLACE_CMD} -e 's,$$(PREFIX),${PREFIX},g' ${WRKSRC}/Makefile
-
-.include
---- pkg-comment ---
-Simple buffered I/O library from Plan 9
---- pkg-descr ---
-Libbio is a port of Plan 9's formatted I/O library.
-It provides most of the same functionality as stdio or sfio,
-but with a simpler interface and smaller footprint.
-
-WWW: http://pdos.lcs.mit.edu/~rsc/software/#libbio
-http://plan9.bell-labs.com/magic/man2html/2/bio
-
-Russ Cox
-rsc@post.harvard.edu
---- pkg-plist ---
-lib/libbio.a
-include/bio.h
---- /dev/null ---
-This is just a way to make sure blank lines don't
-creep into pkg-plist. |
| diff --git a/src/libbio/mkfile b/src/libbio/mkfile |
| t@@ -1 +0,0 @@
-<../libutf/mkfile |
| diff --git a/src/libbio/rpm.spec b/src/libbio/rpm.spec |
| t@@ -1,30 +0,0 @@
-Summary: Simple buffered I/O library from Plan 9
-Name: libbio
-Version: 2.0
-Release: 1
-Group: Development/C
-Copyright: LGPL
-Packager: Russ Cox
-Source: http://pdos.lcs.mit.edu/~rsc/software/libbio-2.0.tgz
-URL: http://pdos.lcs.mit.edu/~rsc/software/#libbio
-Requires: libfmt libutf
-
-%description
-Libbio is a port of Plan 9's formatted I/O library.
-It provides most of the same functionality as stdio or sfio,
-but with a simpler interface and smaller footprint.
-
-http://plan9.bell-labs.com/magic/man2html/2/bio
-%prep
-%setup
-
-%build
-make
-
-%install
-make install
-
-%files
-/usr/local/include/bio.h
-/usr/local/lib/libbio.a
-/usr/local/man/man3/bio.3 |
| diff --git a/src/libdraw/Make.Darwin-PowerMacintosh b/src/libdraw/Make.Darwin-PowerMacintosh |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.FreeBSD-386 b/src/libdraw/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.HP-UX-9000 b/src/libdraw/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.Linux-386 b/src/libdraw/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.NetBSD-386 b/src/libdraw/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.OSF1-alpha b/src/libdraw/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.SunOS-sun4u b/src/libdraw/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.SunOS-sun4u-cc b/src/libdraw/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libdraw/Make.SunOS-sun4u-gcc b/src/libdraw/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libdraw/Makefile b/src/libdraw/Makefile |
| t@@ -1,30 +1,8 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libdraw.a
-VERSION=2.0
-PORTPLACE=devel/libdraw
-NAME=libdraw
-# keyboard.$O\
-# newwindow.$O\
OFILES=\
alloc.$O\
allocimagemix.$O\
t@@ -125,70 +103,20 @@ OFILES=\
unix.$O\
HFILES=\
- draw.h\
- memdraw.h
+ $(9SRC)/include/draw.h\
+ $(9SRC)/include/memdraw.h\
+ $(9SRC)/include/memlayer.h\
+ $(9SRC)/include/event.h\
+ $(9SRC)/include/cursor.h\
+ $(9SRC)/include/mouse.h\
+ $(9SRC)/include/keyboard.h\
+ x11-inc.h\
+ x11-memdraw.h\
-all: $(LIB)
+CFLAGS+=-I$(X11)/include
-install: $(LIB)
- install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
- install -c -m 0644 draw.h $(PREFIX)/include/draw.h
- install -c -m 0644 event.h $(PREFIX)/include/event.h
- install -c -m 0644 cursor.h $(PREFIX)/include/cursor.h
- install -c -m 0644 mouse.h $(PREFIX)/include/mouse.h
- install -c -m 0644 keyboard.h $(PREFIX)/include/keyboard.h
+include $(9SRC)/Makesyslib
test: test.o $(LIB)
- gcc -o test test.o $(LIB) -L$(PREFIX)/lib -l9 -lfmt -lutf -L/usr/X11R6/lib -lX11 -lm
-
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+ gcc -o test test.o -L$(9SRC) -ldraw -l9 -lfmt -lutf -L$(X11)/lib -lX11 -lm
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/libdraw/Makefile.MID b/src/libdraw/Makefile.MID |
| t@@ -1,123 +0,0 @@
-LIB=libdraw.a
-VERSION=2.0
-PORTPLACE=devel/libdraw
-NAME=libdraw
-
-# keyboard.$O\
-# newwindow.$O\
-OFILES=\
- alloc.$O\
- allocimagemix.$O\
- arith.$O\
- bezier.$O\
- border.$O\
- buildfont.$O\
- bytesperline.$O\
- chan.$O\
- cloadimage.$O\
- computil.$O\
- creadimage.$O\
- debug.$O\
- defont.$O\
- draw.$O\
- drawrepl.$O\
- egetrect.$O\
- ellipse.$O\
- emenuhit.$O\
- font.$O\
- freesubfont.$O\
- getdefont.$O\
- getrect.$O\
- getsubfont.$O\
- icossin.$O\
- icossin2.$O\
- init.$O\
- line.$O\
- loadimage.$O\
- menuhit.$O\
- mkfont.$O\
- openfont.$O\
- poly.$O\
- readcolmap.$O\
- readimage.$O\
- readsubfont.$O\
- rectclip.$O\
- replclipr.$O\
- rgb.$O\
- string.$O\
- stringbg.$O\
- stringsubfont.$O\
- stringwidth.$O\
- subfont.$O\
- subfontcache.$O\
- subfontname.$O\
- unloadimage.$O\
- window.$O\
- writecolmap.$O\
- writeimage.$O\
- writesubfont.$O\
- md-alloc.$O\
- md-arc.$O\
- md-cload.$O\
- md-cmap.$O\
- md-cread.$O\
- md-defont.$O\
- md-draw.$O\
- md-ellipse.$O\
- md-fillpoly.$O\
- md-hwdraw.$O\
- md-iprint.$O\
- md-line.$O\
- md-load.$O\
- md-openmemsubfont.$O\
- md-poly.$O\
- md-read.$O\
- md-string.$O\
- md-subfont.$O\
- md-unload.$O\
- md-write.$O\
- ml-draw.$O\
- ml-lalloc.$O\
- ml-layerop.$O\
- ml-ldelete.$O\
- ml-lhide.$O\
- ml-line.$O\
- ml-load.$O\
- ml-lorigin.$O\
- ml-lsetrefresh.$O\
- ml-ltofront.$O\
- ml-ltorear.$O\
- ml-unload.$O\
- x11-alloc.$O\
- x11-cload.$O\
- x11-draw.$O\
- x11-event.$O\
- x11-fill.$O\
- x11-get.$O\
- x11-init.$O\
- x11-itrans.$O\
- x11-keyboard.$O\
- x11-load.$O\
- x11-mouse.$O\
- x11-pixelbits.$O\
- x11-unload.$O\
- devdraw.$O\
- unix.$O\
-
-HFILES=\
- draw.h\
- memdraw.h
-
-all: $(LIB)
-
-install: $(LIB)
- install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
- install -c -m 0644 draw.h $(PREFIX)/include/draw.h
- install -c -m 0644 event.h $(PREFIX)/include/event.h
- install -c -m 0644 cursor.h $(PREFIX)/include/cursor.h
- install -c -m 0644 mouse.h $(PREFIX)/include/mouse.h
- install -c -m 0644 keyboard.h $(PREFIX)/include/keyboard.h
-
-test: test.o $(LIB)
- gcc -o test test.o $(LIB) -L$(PREFIX)/lib -l9 -lfmt -lutf -L/usr/X11R6/lib -lX11 -lm
- |
| diff --git a/src/libdraw/cursor.h b/src/libdraw/cursor.h |
| t@@ -1,7 +0,0 @@
-typedef struct Cursor Cursor;
-struct Cursor
-{
- Point offset;
- uchar clr[2*16];
- uchar set[2*16];
-}; |
| diff --git a/src/libdraw/draw.h b/src/libdraw/draw.h |
| t@@ -1,520 +0,0 @@
-typedef struct Cachefont Cachefont;
-typedef struct Cacheinfo Cacheinfo;
-typedef struct Cachesubf Cachesubf;
-typedef struct Display Display;
-typedef struct Font Font;
-typedef struct Fontchar Fontchar;
-typedef struct Image Image;
-typedef struct Mouse Mouse;
-typedef struct Point Point;
-typedef struct Rectangle Rectangle;
-typedef struct RGB RGB;
-typedef struct Screen Screen;
-typedef struct Subfont Subfont;
-
-extern int Rfmt(Fmt*);
-extern int Pfmt(Fmt*);
-
-enum
-{
- DOpaque = 0xFFFFFFFF,
- DTransparent = 0x00000000, /* only useful for allocimage, memfillcolor */
- DBlack = 0x000000FF,
- DWhite = 0xFFFFFFFF,
- DRed = 0xFF0000FF,
- DGreen = 0x00FF00FF,
- DBlue = 0x0000FFFF,
- DCyan = 0x00FFFFFF,
- DMagenta = 0xFF00FFFF,
- DYellow = 0xFFFF00FF,
- DPaleyellow = 0xFFFFAAFF,
- DDarkyellow = 0xEEEE9EFF,
- DDarkgreen = 0x448844FF,
- DPalegreen = 0xAAFFAAFF,
- DMedgreen = 0x88CC88FF,
- DDarkblue = 0x000055FF,
- DPalebluegreen= 0xAAFFFFFF,
- DPaleblue = 0x0000BBFF,
- DBluegreen = 0x008888FF,
- DGreygreen = 0x55AAAAFF,
- DPalegreygreen = 0x9EEEEEFF,
- DYellowgreen = 0x99994CFF,
- DMedblue = 0x000099FF,
- DGreyblue = 0x005DBBFF,
- DPalegreyblue = 0x4993DDFF,
- DPurpleblue = 0x8888CCFF,
-
- DNotacolor = 0xFFFFFF00,
- DNofill = DNotacolor,
-
-};
-
-enum
-{
- Displaybufsize = 8000,
- ICOSSCALE = 1024,
- Borderwidth = 4,
-};
-
-enum
-{
- /* refresh methods */
- Refbackup = 0,
- Refnone = 1,
- Refmesg = 2
-};
-#define NOREFRESH ((void*)-1)
-
-enum
-{
- /* line ends */
- Endsquare = 0,
- Enddisc = 1,
- Endarrow = 2,
- Endmask = 0x1F
-};
-
-#define ARROW(a, b, c) (Endarrow|((a)<<5)|((b)<<14)|((c)<<23))
-
-typedef enum
-{
- /* Porter-Duff compositing operators */
- Clear = 0,
-
- SinD = 8,
- DinS = 4,
- SoutD = 2,
- DoutS = 1,
-
- S = SinD|SoutD,
- SoverD = SinD|SoutD|DoutS,
- SatopD = SinD|DoutS,
- SxorD = SoutD|DoutS,
-
- D = DinS|DoutS,
- DoverS = DinS|DoutS|SoutD,
- DatopS = DinS|SoutD,
- DxorS = DoutS|SoutD, /* == SxorD */
-
- Ncomp = 12,
-} Drawop;
-
-/*
- * image channel descriptors
- */
-enum {
- CRed = 0,
- CGreen,
- CBlue,
- CGrey,
- CAlpha,
- CMap,
- CIgnore,
- NChan,
-};
-
-#define __DC(type, nbits) ((((type)&15)<<4)|((nbits)&15))
-#define CHAN1(a,b) __DC(a,b)
-#define CHAN2(a,b,c,d) (CHAN1((a),(b))<<8|__DC((c),(d)))
-#define CHAN3(a,b,c,d,e,f) (CHAN2((a),(b),(c),(d))<<8|__DC((e),(f)))
-#define CHAN4(a,b,c,d,e,f,g,h) (CHAN3((a),(b),(c),(d),(e),(f))<<8|__DC((g),(h)))
-
-#define NBITS(c) ((c)&15)
-#define TYPE(c) (((c)>>4)&15)
-
-enum {
- GREY1 = CHAN1(CGrey, 1),
- GREY2 = CHAN1(CGrey, 2),
- GREY4 = CHAN1(CGrey, 4),
- GREY8 = CHAN1(CGrey, 8),
- CMAP8 = CHAN1(CMap, 8),
- RGB15 = CHAN4(CIgnore, 1, CRed, 5, CGreen, 5, CBlue, 5),
- RGB16 = CHAN3(CRed, 5, CGreen, 6, CBlue, 5),
- RGB24 = CHAN3(CRed, 8, CGreen, 8, CBlue, 8),
- BGR24 = CHAN3(CBlue, 8, CGreen, 8, CRed, 8),
- RGBA32 = CHAN4(CRed, 8, CGreen, 8, CBlue, 8, CAlpha, 8),
- ARGB32 = CHAN4(CAlpha, 8, CRed, 8, CGreen, 8, CBlue, 8), /* stupid VGAs */
- XRGB32 = CHAN4(CIgnore, 8, CRed, 8, CGreen, 8, CBlue, 8),
- XBGR32 = CHAN4(CIgnore, 8, CBlue, 8, CGreen, 8, CRed, 8),
-};
-
-extern char* chantostr(char*, u32int);
-extern u32int strtochan(char*);
-extern int chantodepth(u32int);
-
-struct Point
-{
- int x;
- int y;
-};
-
-struct Rectangle
-{
- Point min;
- Point max;
-};
-
-typedef void (*Reffn)(Image*, Rectangle, void*);
-
-struct Screen
-{
- Display *display; /* display holding data */
- int id; /* id of system-held Screen */
- Image *image; /* unused; for reference only */
- Image *fill; /* color to paint behind windows */
-};
-
-struct Display
-{
- QLock qlock;
- int locking; /*program is using lockdisplay */
- int dirno;
- int imageid;
- int local;
- void (*error)(Display*, char*);
- char *devdir;
- char *windir;
- char oldlabel[64];
- u32int dataqid;
- Image *image;
- Image *white;
- Image *black;
- Image *opaque;
- Image *transparent;
- uchar *buf;
- int bufsize;
- uchar *bufp;
- uchar *obuf;
- int obufsize;
- uchar *obufp;
- Font *defaultfont;
- Subfont *defaultsubfont;
- Image *windows;
- Image *screenimage;
- int _isnewdisplay;
-};
-
-struct Image
-{
- Display *display; /* display holding data */
- int id; /* id of system-held Image */
- Rectangle r; /* rectangle in data area, local coords */
- Rectangle clipr; /* clipping region */
- int depth; /* number of bits per pixel */
- u32int chan;
- int repl; /* flag: data replicates to tile clipr */
- Screen *screen; /* 0 if not a window */
- Image *next; /* next in list of windows */
-};
-
-struct RGB
-{
- u32int red;
- u32int green;
- u32int blue;
-};
-
-/*
- * Subfonts
- *
- * given char c, Subfont *f, Fontchar *i, and Point p, one says
- * i = f->info+c;
- * draw(b, Rect(p.x+i->left, p.y+i->top,
- * p.x+i->left+((i+1)->x-i->x), p.y+i->bottom),
- * color, f->bits, Pt(i->x, i->top));
- * p.x += i->width;
- * to draw characters in the specified color (itself an Image) in Image b.
- */
-
-struct Fontchar
-{
- int x; /* left edge of bits */
- uchar top; /* first non-zero scan-line */
- uchar bottom; /* last non-zero scan-line + 1 */
- char left; /* offset of baseline */
- uchar width; /* width of baseline */
-};
-
-struct Subfont
-{
- char *name;
- short n; /* number of chars in font */
- uchar height; /* height of image */
- char ascent; /* top of image to baseline */
- Fontchar *info; /* n+1 character descriptors */
- Image *bits; /* of font */
- int ref;
-};
-
-enum
-{
- /* starting values */
- LOG2NFCACHE = 6,
- NFCACHE = (1<>8))
-#define BPLONG(p, v) (BPSHORT(p, (v)), BPSHORT(p+2, (v)>>16))
-
-/*
- * Compressed image file parameters and helper routines
- */
-#define NMATCH 3 /* shortest match possible */
-#define NRUN (NMATCH+31) /* longest match possible */
-#define NMEM 1024 /* window size */
-#define NDUMP 128 /* maximum length of dump */
-#define NCBLOCK 6000 /* size of compressed blocks */
-extern void _twiddlecompressed(uchar*, int);
-extern int _compblocksize(Rectangle, int);
-
-/* XXX backwards helps; should go */
-extern int log2[];
-extern u32int drawld2chan[];
-extern void drawsetdebug(int);
-
-/*
- * Port magic.
- */
-int _drawmsgread(Display*, void*, int);
-int _drawmsgwrite(Display*, void*, int); |
| diff --git a/src/libdraw/event.h b/src/libdraw/event.h |
| t@@ -1,63 +0,0 @@
-typedef struct Event Event;
-typedef struct Menu Menu;
-
-enum
-{
- Emouse = 1,
- Ekeyboard = 2,
-};
-
-enum
-{
- MAXSLAVE = 32,
- EMAXMSG = 128+8192, /* size of 9p header+data */
-};
-
-struct Mouse
-{
- int buttons; /* bit array: LMR=124 */
- Point xy;
- ulong msec;
-};
-
-struct Event
-{
- int kbdc;
- Mouse mouse;
- int n; /* number of characters in message */
- void *v; /* data unpacked by general event-handling function */
- uchar data[EMAXMSG]; /* message from an arbitrary file descriptor */
-};
-
-struct Menu
-{
- char **item;
- char *(*gen)(int);
- int lasthit;
-};
-
-/*
- * Events
- */
-extern void einit(ulong);
-extern ulong estart(ulong, int, int);
-extern ulong estartfn(ulong, int, int, int (*fn)(int, Event*, uchar*, int));
-extern ulong etimer(ulong, int);
-extern ulong event(Event*);
-extern ulong eread(ulong, Event*);
-extern Mouse emouse(void);
-extern int ekbd(void);
-extern int ecanread(ulong);
-extern int ecanmouse(void);
-extern int ecankbd(void);
-extern void eresized(int); /* supplied by user */
-extern int emenuhit(int, Mouse*, Menu*);
-extern int eatomouse(Mouse*, char*, int);
-extern Rectangle getrect(int, Mouse*);
-struct Cursor;
-extern void esetcursor(struct Cursor*);
-extern void emoveto(Point);
-extern Rectangle egetrect(int, Mouse*);
-extern void edrawgetrect(Rectangle, int);
-extern int ereadmouse(Mouse*);
-extern int eatomouse(Mouse*, char*, int); |
| diff --git a/src/libdraw/keyboard.h b/src/libdraw/keyboard.h |
| t@@ -1,36 +0,0 @@
-typedef struct Keyboardctl Keyboardctl;
-
-struct Keyboardctl
-{
- struct Channel *c; /* chan(Rune)[20] */
-
- char *file;
- int consfd; /* to cons file */
- int ctlfd; /* to ctl file */
- int pid; /* of slave proc */
-};
-
-
-extern Keyboardctl* initkeyboard(char*);
-extern int ctlkeyboard(Keyboardctl*, char*);
-extern void closekeyboard(Keyboardctl*);
-
-enum {
- KF= 0xF000, /* Rune: beginning of private Unicode space */
- /* KF|1, KF|2, ..., KF|0xC is F1, F2, ..., F12 */
- Khome= KF|0x0D,
- Kup= KF|0x0E,
- Kpgup= KF|0x0F,
- Kprint= KF|0x10,
- Kleft= KF|0x11,
- Kright= KF|0x12,
- Kdown= 0x80,
- Kview= 0x80,
- Kpgdown= KF|0x13,
- Kins= KF|0x14,
- Kend= '\r', /* [sic] */
-
- Kalt= KF|0x15,
- Kshift= KF|0x16,
- Kctl= KF|0x17,
-}; |
| diff --git a/src/libdraw/memdraw.h b/src/libdraw/memdraw.h |
| t@@ -1,209 +0,0 @@
-typedef struct Memimage Memimage;
-typedef struct Memdata Memdata;
-typedef struct Memsubfont Memsubfont;
-typedef struct Memlayer Memlayer;
-typedef struct Memcmap Memcmap;
-typedef struct Memdrawparam Memdrawparam;
-
-/*
- * Memdata is allocated from main pool, but .data from the image pool.
- * Memdata is allocated separately to permit patching its pointer after
- * compaction when windows share the image data.
- * The first word of data is a back pointer to the Memdata, to find
- * The word to patch.
- */
-
-struct Memdata
-{
- u32int *base; /* allocated data pointer */
- uchar *bdata; /* pointer to first byte of actual data; word-aligned */
- int ref; /* number of Memimages using this data */
- void* imref;
- int allocd; /* is this malloc'd? */
-};
-
-enum {
- Frepl = 1<<0, /* is replicated */
- Fsimple = 1<<1, /* is 1x1 */
- Fgrey = 1<<2, /* is grey */
- Falpha = 1<<3, /* has explicit alpha */
- Fcmap = 1<<4, /* has cmap channel */
- Fbytes = 1<<5, /* has only 8-bit channels */
-};
-
-struct Memimage
-{
- Rectangle r; /* rectangle in data area, local coords */
- Rectangle clipr; /* clipping region */
- int depth; /* number of bits of storage per pixel */
- int nchan; /* number of channels */
- u32int chan; /* channel descriptions */
- Memcmap *cmap;
-
- Memdata *data; /* pointer to data; shared by windows in this image */
- int zero; /* data->bdata+zero==&byte containing (0,0) */
- u32int width; /* width in words of a single scan line */
- Memlayer *layer; /* nil if not a layer*/
- u32int flags;
- void *X;
-
- int shift[NChan];
- int mask[NChan];
- int nbits[NChan];
-};
-
-struct Memcmap
-{
- uchar cmap2rgb[3*256];
- uchar rgb2cmap[16*16*16];
-};
-
-/*
- * Subfonts
- *
- * given char c, Subfont *f, Fontchar *i, and Point p, one says
- * i = f->info+c;
- * draw(b, Rect(p.x+i->left, p.y+i->top,
- * p.x+i->left+((i+1)->x-i->x), p.y+i->bottom),
- * color, f->bits, Pt(i->x, i->top));
- * p.x += i->width;
- * to draw characters in the specified color (itself a Memimage) in Memimage b.
- */
-
-struct Memsubfont
-{
- char *name;
- short n; /* number of chars in font */
- uchar height; /* height of bitmap */
- char ascent; /* top of bitmap to baseline */
- Fontchar *info; /* n+1 character descriptors */
- Memimage *bits; /* of font */
-};
-
-/*
- * Encapsulated parameters and information for sub-draw routines.
- */
-enum {
- Simplesrc=1<<0,
- Simplemask=1<<1,
- Replsrc=1<<2,
- Replmask=1<<3,
- Fullmask=1<<4,
-};
-struct Memdrawparam
-{
- Memimage *dst;
- Rectangle r;
- Memimage *src;
- Rectangle sr;
- Memimage *mask;
- Rectangle mr;
- int op;
-
- u32int state;
- u32int mval; /* if Simplemask, the mask pixel in mask format */
- u32int mrgba; /* mval in rgba */
- u32int sval; /* if Simplesrc, the source pixel in src format */
- u32int srgba; /* sval in rgba */
- u32int sdval; /* sval in dst format */
-};
-
-/*
- * Memimage management
- */
-
-extern Memimage* allocmemimage(Rectangle, u32int);
-extern Memimage* allocmemimaged(Rectangle, u32int, Memdata*, void*);
-extern Memimage* readmemimage(int);
-extern Memimage* creadmemimage(int);
-extern int writememimage(int, Memimage*);
-extern void freememimage(Memimage*);
-extern int loadmemimage(Memimage*, Rectangle, uchar*, int);
-extern int cloadmemimage(Memimage*, Rectangle, uchar*, int);
-extern int unloadmemimage(Memimage*, Rectangle, uchar*, int);
-extern u32int* wordaddr(Memimage*, Point);
-extern uchar* byteaddr(Memimage*, Point);
-extern int drawclip(Memimage*, Rectangle*, Memimage*, Point*,
- Memimage*, Point*, Rectangle*, Rectangle*);
-extern void memfillcolor(Memimage*, u32int);
-extern int memsetchan(Memimage*, u32int);
-extern u32int pixelbits(Memimage*, Point);
-
-/*
- * Graphics
- */
-extern void memdraw(Memimage*, Rectangle, Memimage*, Point,
- Memimage*, Point, int);
-extern void memline(Memimage*, Point, Point, int, int, int,
- Memimage*, Point, int);
-extern void mempoly(Memimage*, Point*, int, int, int, int,
- Memimage*, Point, int);
-extern void memfillpoly(Memimage*, Point*, int, int,
- Memimage*, Point, int);
-extern void _memfillpolysc(Memimage*, Point*, int, int,
- Memimage*, Point, int, int, int, int);
-extern void memimagedraw(Memimage*, Rectangle, Memimage*, Point,
- Memimage*, Point, int);
-extern int hwdraw(Memdrawparam*);
-extern void memimageline(Memimage*, Point, Point, int, int, int,
- Memimage*, Point, int);
-extern void _memimageline(Memimage*, Point, Point, int, int, int,
- Memimage*, Point, Rectangle, int);
-extern Point memimagestring(Memimage*, Point, Memimage*, Point,
- Memsubfont*, char*);
-extern void memellipse(Memimage*, Point, int, int, int,
- Memimage*, Point, int);
-extern void memarc(Memimage*, Point, int, int, int, Memimage*,
- Point, int, int, int);
-extern Rectangle memlinebbox(Point, Point, int, int, int);
-extern int memlineendsize(int);
-extern void _memmkcmap(void);
-extern void memimageinit(void);
-
-/*
- * Subfont management
- */
-extern Memsubfont* allocmemsubfont(char*, int, int, int, Fontchar*, Memimage*);
-extern Memsubfont* openmemsubfont(char*);
-extern void freememsubfont(Memsubfont*);
-extern Point memsubfontwidth(Memsubfont*, char*);
-extern Memsubfont* getmemdefont(void);
-
-/*
- * Predefined
- */
-extern Memimage* memwhite;
-extern Memimage* memblack;
-extern Memimage* memopaque;
-extern Memimage* memtransparent;
-extern Memcmap* memdefcmap;
-
-/*
- * Kernel interface
- */
-void memimagemove(void*, void*);
-
-/*
- * Kernel cruft
- */
-extern void rdb(void);
-extern int iprint(char*, ...);
-extern int drawdebug;
-
-/*
- * For other implementations, like x11.
- */
-extern void _memfillcolor(Memimage*, u32int);
-extern Memimage* _allocmemimage(Rectangle, u32int);
-extern int _cloadmemimage(Memimage*, Rectangle, uchar*, int);
-extern int _loadmemimage(Memimage*, Rectangle, uchar*, int);
-extern void _freememimage(Memimage*);
-extern u32int _rgbatoimg(Memimage*, u32int);
-extern u32int _imgtorgba(Memimage*, u32int);
-extern u32int _pixelbits(Memimage*, Point);
-extern int _unloadmemimage(Memimage*, Rectangle, uchar*, int);
-extern Memdrawparam* _memimagedrawsetup(Memimage*,
- Rectangle, Memimage*, Point, Memimage*,
- Point, int);
-extern void _memimagedraw(Memdrawparam*);
-extern void _drawreplacescreenimage(Memimage*); |
| diff --git a/src/libdraw/memlayer.h b/src/libdraw/memlayer.h |
| t@@ -1,48 +0,0 @@
-typedef struct Memscreen Memscreen;
-typedef void (*Refreshfn)(Memimage*, Rectangle, void*);
-
-struct Memscreen
-{
- Memimage *frontmost; /* frontmost layer on screen */
- Memimage *rearmost; /* rearmost layer on screen */
- Memimage *image; /* upon which all layers are drawn */
- Memimage *fill; /* if non-zero, picture to use when repainting */
-};
-
-struct Memlayer
-{
- Rectangle screenr; /* true position of layer on screen */
- Point delta; /* add delta to go from image coords to screen */
- Memscreen *screen; /* screen this layer belongs to */
- Memimage *front; /* window in front of this one */
- Memimage *rear; /* window behind this one*/
- int clear; /* layer is fully visible */
- Memimage *save; /* save area for obscured parts */
- Refreshfn refreshfn; /* function to call to refresh obscured parts if save==nil */
- void *refreshptr; /* argument to refreshfn */
-};
-
-/*
- * These functions accept local coordinates
- */
-int memload(Memimage*, Rectangle, uchar*, int, int);
-int memunload(Memimage*, Rectangle, uchar*, int);
-
-/*
- * All these functions accept screen coordinates, not local ones.
- */
-void _memlayerop(void (*fn)(Memimage*, Rectangle, Rectangle, void*, int), Memimage*, Rectangle, Rectangle, void*);
-Memimage* memlalloc(Memscreen*, Rectangle, Refreshfn, void*, u32int);
-void memldelete(Memimage*);
-void memlfree(Memimage*);
-void memltofront(Memimage*);
-void memltofrontn(Memimage**, int);
-void _memltofrontfill(Memimage*, int);
-void memltorear(Memimage*);
-void memltorearn(Memimage**, int);
-int memlsetrefresh(Memimage*, Refreshfn, void*);
-void memlhide(Memimage*, Rectangle);
-void memlexpose(Memimage*, Rectangle);
-void _memlsetclear(Memscreen*);
-int memlorigin(Memimage*, Point, Point);
-void memlnorefresh(Memimage*, Rectangle, void*); |
| diff --git a/src/libdraw/mkfile b/src/libdraw/mkfile |
| t@@ -1 +0,0 @@
-<../libutf/mkfile |
| diff --git a/src/libdraw/mouse.h b/src/libdraw/mouse.h |
| t@@ -1,44 +0,0 @@
-typedef struct Menu Menu;
-typedef struct Mousectl Mousectl;
-
-struct Mouse
-{
- int buttons; /* bit array: LMR=124 */
- Point xy;
- ulong msec;
-};
-
-struct Mousectl
-{
- Mouse m;
- struct Channel *c; /* chan(Mouse) */
- struct Channel *resizec; /* chan(int)[2] */
- /* buffered in case client is waiting for a mouse action before handling resize */
-
- char *file;
- int mfd; /* to mouse file */
- int cfd; /* to cursor file */
- int pid; /* of slave proc */
- Display *display;
- /*Image* image; / * of associated window/display */
-};
-
-struct Menu
-{
- char **item;
- char *(*gen)(int);
- int lasthit;
-};
-
-/*
- * Mouse
- */
-extern Mousectl* initmouse(char*, Image*);
-extern void moveto(Mousectl*, Point);
-extern int readmouse(Mousectl*);
-extern void closemouse(Mousectl*);
-struct Cursor;
-extern void setcursor(Mousectl*, struct Cursor*);
-extern void drawgetrect(Rectangle, int);
-extern Rectangle getrect(int, Mousectl*);
-extern int menuhit(int, Mousectl*, Menu*, Screen*); |
| diff --git a/src/libdraw/test b/src/libdraw/test |
| Binary files differ. |
| diff --git a/src/libfmt/Make.Darwin-PowerMacintosh b/src/libfmt/Make.Darwin-PowerMacintosh |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.FreeBSD-386 b/src/libfmt/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include -pg
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.HP-UX-9000 b/src/libfmt/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.Linux-386 b/src/libfmt/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -DNEEDLL
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.NetBSD-386 b/src/libfmt/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.OSF1-alpha b/src/libfmt/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.SunOS-sun4u b/src/libfmt/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.SunOS-sun4u-cc b/src/libfmt/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libfmt/Make.SunOS-sun4u-gcc b/src/libfmt/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libfmt/Makefile b/src/libfmt/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libfmt.a
-VERSION=2.0
-PORTPLACE=devel/libfmt
-NAME=libfmt
NUM=\
charstod.$O\
t@@ -64,71 +44,13 @@ OFILES=\
HFILES=\
fmtdef.h\
- fmt.h\
-
-all: $(LIB)
+ $(9SRC)/include/fmt.h\
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 print.3 $(PREFIX)/man/man3/print.3
- install -m 0644 fmtinstall.3 $(PREFIX)/man/man3/fmtinstall.3
- install -m 0644 fmt.h $(PREFIX)/include/fmt.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
+include $(9SRC)/Makesyslib
$(NAN).$O: nan.h
strtod.$O: nan.h
test: $(LIB) test.$O
- $(CC) -o test test.$O $(LIB) -L$(PREFIX)/lib -lutf
-
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+ $(CC) -o test test.$O $(LIB) -L$(9SRC)/lib -lutf
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/libfmt/Makefile.MID b/src/libfmt/Makefile.MID |
| t@@ -1,63 +0,0 @@
-LIB=libfmt.a
-VERSION=2.0
-PORTPLACE=devel/libfmt
-NAME=libfmt
-
-NUM=\
- charstod.$O\
- pow10.$O\
-
-OFILES=\
- dofmt.$O\
- errfmt.$O\
- fltfmt.$O\
- fmt.$O\
- fmtfd.$O\
- fmtfdflush.$O\
- fmtlock.$O\
- fmtprint.$O\
- fmtquote.$O\
- fmtrune.$O\
- fmtstr.$O\
- fmtvprint.$O\
- fprint.$O\
- print.$O\
- runefmtstr.$O\
- runeseprint.$O\
- runesmprint.$O\
- runesnprint.$O\
- runesprint.$O\
- runevseprint.$O\
- runevsmprint.$O\
- runevsnprint.$O\
- seprint.$O\
- smprint.$O\
- snprint.$O\
- sprint.$O\
- strtod.$O\
- vfprint.$O\
- vseprint.$O\
- vsmprint.$O\
- vsnprint.$O\
- $(NUM)\
- $(NAN)\
-
-HFILES=\
- fmtdef.h\
- fmt.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 print.3 $(PREFIX)/man/man3/print.3
- install -m 0644 fmtinstall.3 $(PREFIX)/man/man3/fmtinstall.3
- install -m 0644 fmt.h $(PREFIX)/include/fmt.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-$(NAN).$O: nan.h
-strtod.$O: nan.h
-
-test: $(LIB) test.$O
- $(CC) -o test test.$O $(LIB) -L$(PREFIX)/lib -lutf
- |
| diff --git a/src/libfmt/bundle.ports b/src/libfmt/bundle.ports |
| t@@ -1,51 +0,0 @@
---- Makefile ---
-# New ports collection makefile for: libfmt
-# Date Created: 11 Feb 2003
-# Whom: rsc
-#
-# THIS LINE NEEDS REPLACING. IT'S HERE TO GET BY PORTLINT
-# $FreeBSD: ports/devel/libfmt/Makefile,v 1.1 2003/02/12 00:51:22 rsc Exp $
-
-PORTNAME= libfmt
-PORTVERSION= 2.0
-CATEGORIES= devel
-MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
-EXTRACT_SUFX= .tgz
-
-MAINTAINER= rsc@post.harvard.edu
-
-DEPENDS= ${PORTSDIR}/devel/libutf
-
-MAN3= print.3 fmtinstall.3
-
-USE_REINPLACE=yes
-
-.include
-
-post-patch:
- ${REINPLACE_CMD} -e 's,$$(PREFIX),${PREFIX},g' ${WRKSRC}/Makefile
-
-.include
---- pkg-comment ---
-Extensible formatted print C library (printf with user-defined verbs)
---- pkg-descr ---
-Libfmt is a port of Plan 9's formatted print library.
-As a base it provides all the syntax of ANSI printf
-but adds the ability for client programs to install
-new print verbs. One such print verb (installed by
-default) is %r, which prints the system error string.
-Instead of perror("foo"), you can write fprint(2, "foo: %r\n").
-This is especially nice when you write verbs to format
-the data structures used by your particular program.
-
-WWW: http://pdos.lcs.mit.edu/~rsc/software/#libfmt
-http://plan9.bell-labs.com/magic/man2html/2/print
-
-Russ Cox
-rsc@post.harvard.edu
---- pkg-plist ---
-lib/libfmt.a
-include/fmt.h
---- /dev/null ---
-This is just a way to make sure blank lines don't
-creep into pkg-plist. |
| diff --git a/src/libfmt/fmt.h b/src/libfmt/fmt.h |
| t@@ -1,100 +0,0 @@
-
-/*
- * The authors of this software are Rob Pike and Ken Thompson.
- * Copyright (c) 2002 by Lucent Technologies.
- * Permission to use, copy, modify, and distribute this software for any
- * purpose without fee is hereby granted, provided that this entire notice
- * is included in all copies of any software which is or includes a copy
- * or modification of this software and in all copies of the supporting
- * documentation for such software.
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- */
-
-#ifndef _FMTH_
-#define _FMTH_ 1
-
-#include
-
-#ifndef _UTFH_
-#include
-#endif
-
-typedef struct Fmt Fmt;
-struct Fmt{
- unsigned char runes; /* output buffer is runes or chars? */
- void *start; /* of buffer */
- void *to; /* current place in the buffer */
- void *stop; /* end of the buffer; overwritten if flush fails */
- int (*flush)(Fmt *); /* called when to == stop */
- void *farg; /* to make flush a closure */
- int nfmt; /* num chars formatted so far */
- va_list args; /* args passed to dofmt */
- int r; /* % format Rune */
- int width;
- int prec;
- unsigned long flags;
-};
-
-enum{
- FmtWidth = 1,
- FmtLeft = FmtWidth << 1,
- FmtPrec = FmtLeft << 1,
- FmtSharp = FmtPrec << 1,
- FmtSpace = FmtSharp << 1,
- FmtSign = FmtSpace << 1,
- FmtZero = FmtSign << 1,
- FmtUnsigned = FmtZero << 1,
- FmtShort = FmtUnsigned << 1,
- FmtLong = FmtShort << 1,
- FmtVLong = FmtLong << 1,
- FmtComma = FmtVLong << 1,
- FmtByte = FmtComma << 1,
- FmtLDouble = FmtByte << 1,
-
- FmtFlag = FmtLDouble << 1
-};
-
-extern int print(char*, ...);
-extern char* seprint(char*, char*, char*, ...);
-extern char* vseprint(char*, char*, char*, va_list);
-extern int snprint(char*, int, char*, ...);
-extern int vsnprint(char*, int, char*, va_list);
-extern char* smprint(char*, ...);
-extern char* vsmprint(char*, va_list);
-extern int sprint(char*, char*, ...);
-extern int fprint(int, char*, ...);
-extern int vfprint(int, char*, va_list);
-
-extern int runesprint(Rune*, char*, ...);
-extern int runesnprint(Rune*, int, char*, ...);
-extern int runevsnprint(Rune*, int, char*, va_list);
-extern Rune* runeseprint(Rune*, Rune*, char*, ...);
-extern Rune* runevseprint(Rune*, Rune*, char*, va_list);
-extern Rune* runesmprint(char*, ...);
-extern Rune* runevsmprint(char*, va_list);
-
-extern int fmtfdinit(Fmt*, int, char*, int);
-extern int fmtfdflush(Fmt*);
-extern int fmtstrinit(Fmt*);
-extern char* fmtstrflush(Fmt*);
-extern int runefmtstrinit(Fmt*);
-
-extern int quotestrfmt(Fmt *f);
-extern void quotefmtinstall(void);
-extern int (*fmtdoquote)(int);
-
-
-extern int fmtinstall(int, int (*)(Fmt*));
-extern int dofmt(Fmt*, char*);
-extern int fmtprint(Fmt*, char*, ...);
-extern int fmtvprint(Fmt*, char*, va_list);
-extern int fmtrune(Fmt*, int);
-extern int fmtstrcpy(Fmt*, char*);
-
-extern double fmtstrtod(const char *, char **);
-extern double fmtcharstod(int(*)(void*), void*);
-
-#endif |
| diff --git a/src/libfmt/fmtinstall.3 b/src/libfmt/fmtinstall.3 |
| t@@ -1,346 +0,0 @@
-.TH FMTINSTALL 3
-.de EX
-.nf
-.ft B
-..
-.de EE
-.fi
-.ft R
-..
-.SH NAME
-fmtinstall, dofmt, fmtprint, fmtvprint, fmtstrcpy, fmtfdinit, fmtfdflush, fmtstrinit, fmtstrflush \- support for user-defined print formats and output routines
-.SH SYNOPSIS
-.B #include
-.PP
-.ft L
-.nf
-.ta \w' 'u +\w' 'u +\w' 'u +\w' 'u +\w' 'u
-typedef struct Fmt Fmt;
-struct Fmt{
- void *start; /* of buffer */
- void *to; /* current place in the buffer */
- void *stop; /* end of the buffer; overwritten if flush fails */
- int (*flush)(Fmt*); /* called when to == stop */
- void *farg; /* to make flush a closure */
- int nfmt; /* num chars formatted so far */
- va_list args; /* args passed to dofmt */
- int r; /* % format character */
- int width;
- int prec;
- unsigned long flags;
-};
-
-enum{
- FmtWidth = 1,
- FmtLeft = FmtWidth << 1,
- FmtPrec = FmtLeft << 1,
- FmtSharp = FmtPrec << 1,
- FmtSpace = FmtSharp << 1,
- FmtSign = FmtSpace << 1,
- FmtZero = FmtSign << 1,
- FmtUnsigned = FmtZero << 1,
- FmtShort = FmtUnsigned << 1,
- FmtLong = FmtShort << 1,
- FmtVLong = FmtLong << 1,
- FmtComma = FmtVLong << 1,
- FmtByte = FmtComma << 1,
- FmtLDouble = FmtByte << 1,
-
- FmtFlag = FmtLDouble << 1
-};
-.fi
-.PP
-.B
-.ta \w'\fLchar* 'u
-
-.PP
-.B
-int fmtfdinit(Fmt *f, int fd, char *buf, int nbuf);
-.PP
-.B
-int fmtfdflush(Fmt *f);
-.PP
-.B
-int fmtstrinit(Fmt *f);
-.PP
-.B
-char* fmtstrflush(Fmt *f);
-.PP
-.B
-int fmtinstall(int c, int (*fn)(Fmt*));
-.PP
-.B
-int dofmt(Fmt *f, char *fmt);
-.PP
-.B
-int fmtprint(Fmt *f, char *fmt, ...);
-.PP
-.B
-int fmtvprint(Fmt *f, char *fmt, va_list v);
-.PP
-.B
-int fmtrune(Fmt *f, int r);
-.PP
-.B
-int fmtstrcpy(Fmt *f, char *s);
-.SH DESCRIPTION
-The interface described here allows the construction of custom
-.IR print (3)
-verbs and output routines.
-In essence, they provide access to the workings of the formatted print code.
-.PP
-The
-.IR print (3)
-suite maintains its state with a data structure called
-.BR Fmt .
-A typical call to
-.IR print (3)
-or its relatives initializes a
-.B Fmt
-structure, passes it to subsidiary routines to process the output,
-and finishes by emitting any saved state recorded in the
-.BR Fmt .
-The details of the
-.B Fmt
-are unimportant to outside users, except insofar as the general
-design influences the interface.
-The
-.B Fmt
-records
-the verb being processed, its precision and width,
-and buffering parameters.
-Most important, it also records a
-.I flush
-routine that the library will call if a buffer overflows.
-When printing to a file descriptor, the flush routine will
-emit saved characters and reset the buffer; when printing
-to an allocated string, it will resize the string to receive more output.
-The flush routine is nil when printing to fixed-size buffers.
-User code need never provide a flush routine; this is done internally
-by the library.
-.SS Custom output routines
-To write a custom output routine, such as an error handler that
-formats and prints custom error messages, the output sequence can be run
-from outside the library using the routines described here.
-There are two main cases: output to an open file descriptor
-and output to a string.
-.PP
-To write to a file descriptor, call
-.I fmtfdinit
-to initialize the local
-.B Fmt
-structure
-.IR f ,
-giving the file descriptor
-.IR fd ,
-the buffer
-.IR buf ,
-and its size
-.IR nbuf .
-Then call
-.IR fmtprint
-or
-.IR fmtvprint
-to generate the output.
-These behave just like
-.B fprint
-(see
-.IR print (3))
-or
-.B vfprint
-except that the characters are buffered until
-.I fmtfdflush
-is called.
-A typical example of this sequence appears in the Examples section.
-.PP
-The same basic sequence applies when outputting to an allocated string:
-call
-.I fmtstrinit
-to initialize the
-.BR Fmt ,
-then call
-.I fmtprint
-and
-.I fmtvprint
-to generate the output.
-Finally,
-.I fmtstrflush
-will return the allocated string, which should be freed after use.
-Regardless of the output style or type,
-.I fmtprint
-or
-.I fmtvprint
-generates the characters.
-.SS Custom format verbs
-.I Fmtinstall
-is used to install custom verbs and flags labeled by character
-.IR c ,
-which may be any non-zero Unicode character.
-.I Fn
-should be declared as
-.IP
-.EX
-int fn(Fmt*)
-.EE
-.PP
-.IB Fp ->r
-is the flag or verb character to cause
-.I fn
-to be called.
-In
-.IR fn ,
-.IB fp ->width ,
-.IB fp ->prec
-are the width and precision, and
-.IB fp ->flags
-the decoded flags for the verb (see
-.IR print (3)
-for a description of these items).
-The standard flag values are:
-.B FmtSign
-.RB ( + ),
-.B FmtLeft
-.RB ( - ),
-.B FmtSpace
-.RB ( '\ ' ),
-.B FmtSharp
-.RB ( # ),
-.B FmtComma
-.RB ( , ),
-.B FmtLong
-.RB ( l ),
-.B FmtShort
-.RB ( h ),
-.B FmtByte
-.RB ( hh ),
-.B FmtUnsigned
-.RB ( u ),
-.B FmtLDouble
-.RB ( L ),
-and
-.B FmtVLong
-.RB ( ll ).
-The flag bits
-.B FmtWidth
-and
-.B FmtPrec
-identify whether a width and precision were specified.
-.PP
-.I Fn
-is passed a pointer to the
-.B Fmt
-structure recording the state of the output.
-If
-.IB fp ->r
-is a verb (rather than a flag),
-.I fn
-should use
-.B Fmt->args
-to fetch its argument from the list,
-then format it, and return zero.
-If
-.IB fp ->r
-is a flag,
-.I fn
-should return a negative value:
-the negation of one of the above flag values, or some otherwise unused power of two.
-All interpretation of
-.IB fp ->width\f1,
-.IB fp ->prec\f1,
-and
-.IB fp-> flags
-is left up to the conversion routine.
-.I Fmtinstall
-returns 0 if the installation succeeds, \-1 if it fails.
-.PP
-.IR Fmtprint
-and
-.IR fmtvprint
-may be called to
-help prepare output in custom conversion routines.
-However, these functions clear the width, precision, and flags.
-The function
-.I dofmt
-is the underlying formatter; it
-uses the existing contents of
-.B Fmt
-and should be called only by sophisticated conversion routines.
-All these routines return the number of characters
-produced.
-.PP
-Some internal functions may be useful to format primitive types.
-They honor the width, precision and flags as described in
-.IR print (3).
-.I Fmtrune
-formats a single character
-.BR r .
-.I Fmtstrcpy
-formats a string
-.BR s .
-All these routines return zero for successful execution.
-.SH EXAMPLES
-This function prints an error message with a variable
-number of arguments and then quits.
-Compared to the corresponding example in
-.IR print (3),
-this version uses a smaller buffer, will never truncate
-the output message, but might generate multiple
-.B write
-system calls to produce its output.
-.IP
-.EX
-.ta 6n +6n +6n +6n +6n +6n +6n +6n +6n
-
-void fatal(char *fmt, ...)
-{
- Fmt f;
- char buf[64];
- va_list arg;
-
- fmtfdinit(&f, 1, buf, sizeof buf);
- fmtprint(&f, "fatal: ");
- va_start(arg, fmt);
- fmtvprint(&f, fmt, arg);
- va_end(arg);
- fmtprint(&f, "\en");
- fmtfdflush(&f);
- exits("fatal error");
-}
-.EE
-.PP
-This example adds a verb to print complex numbers.
-.IP
-.EX
-typedef
-struct {
- double r, i;
-} Complex;
-
-int
-Xfmt(Fmt *f)
-{
- Complex c;
-
- c = va_arg(f->args, Complex);
- return fmtprint(f, "(%g,%g)", c.r, c.i);
-}
-
-main(...)
-{
- Complex x;
-
- x.r = 1.5;
- x.i = -2.3;
-
- fmtinstall('X', Xfmt);
- print("x = %X\en", x);
-}
-.EE
-.SH SEE ALSO
-.IR print (3)
-.SH HISTORY
-This formatted print library originally
-appeared as part of the Plan 9 C library.
-.SH BUGS
-The Plan 9 version supports Unicode strings and produces UTF output.
-This version assumes that characters are always represented by 1-byte values. |
| diff --git a/src/libfmt/mkfile b/src/libfmt/mkfile |
| t@@ -1 +0,0 @@
-<../libutf/mkfile |
| diff --git a/src/libfmt/rpm.spec b/src/libfmt/rpm.spec |
| t@@ -1,34 +0,0 @@
-Summary: Extensible formatted print library. (Printf with user-defined verbs.)
-Name: libfmt
-Version: 2.0
-Release: 1
-Group: Development/C
-Copyright: BSD-like
-Packager: Russ Cox
-Source: http://pdos.lcs.mit.edu/~rsc/software/libfmt-2.0.tgz
-URL: http://pdos.lcs.mit.edu/~rsc/software/#libfmt
-Requires: libutf
-
-%description
-Libfmt is a port of Plan 9's formatted print library.
-As a base it provides all the syntax of ANSI printf
-but adds the ability for client programs to install
-new print verbs. One such print verb (installed by
-default) is %r, which prints the system error string.
-Instead of perror("foo"), you can write fprint(2, "foo: %r\n").
-This is especially nice when you write verbs to format
-the data structures used by your particular program.
-%prep
-%setup
-
-%build
-make
-
-%install
-make install
-
-%files
-/usr/local/include/fmt.h
-/usr/local/lib/libfmt.a
-/usr/local/man/man3/print.3
-/usr/local/man/man3/fmtinstall.3 |
| diff --git a/src/libframe/Make.Darwin-PowerMacintosh b/src/libframe/Make.Darwin-PowerMacintosh |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.FreeBSD-386 b/src/libframe/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.HP-UX-9000 b/src/libframe/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.Linux-386 b/src/libframe/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.NetBSD-386 b/src/libframe/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.OSF1-alpha b/src/libframe/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.SunOS-sun4u b/src/libframe/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.SunOS-sun4u-cc b/src/libframe/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libframe/Make.SunOS-sun4u-gcc b/src/libframe/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libframe/Makefile b/src/libframe/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libframe.a
-VERSION=2.0
-PORTPLACE=devel/libframe
-NAME=libdraw
OFILES=\
frbox.$O\
t@@ -34,59 +14,9 @@ OFILES=\
frstr.$O\
frutil.$O\
-all: $(LIB)
-
-install: $(LIB)
- install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
- install -c -m 0644 frame.h $(PREFIX)/include/frame.h
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
+HFILES=\
+ $(9SRC)/include/frame.h\
+ $(9SRC)/include/draw.h\
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+include $(9SRC)/Makesyslib
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/libframe/Makefile.MID b/src/libframe/Makefile.MID |
| t@@ -1,21 +0,0 @@
-LIB=libframe.a
-VERSION=2.0
-PORTPLACE=devel/libframe
-NAME=libdraw
-
-OFILES=\
- frbox.$O\
- frdelete.$O\
- frdraw.$O\
- frinit.$O\
- frinsert.$O\
- frptofchar.$O\
- frselect.$O\
- frstr.$O\
- frutil.$O\
-
-all: $(LIB)
-
-install: $(LIB)
- install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
- install -c -m 0644 frame.h $(PREFIX)/include/frame.h |
| diff --git a/src/libframe/frame.h b/src/libframe/frame.h |
| t@@ -1,85 +0,0 @@
-typedef struct Frbox Frbox;
-typedef struct Frame Frame;
-
-enum{
- BACK,
- HIGH,
- BORD,
- TEXT,
- HTEXT,
- NCOL
-};
-
-#define FRTICKW 3
-
-struct Frbox
-{
- long wid; /* in pixels */
- long nrune; /* <0 ==> negate and treat as break char */
- uchar *ptr;
- short bc; /* break char */
- short minwid;
-};
-
-struct Frame
-{
- Font *font; /* of chars in the frame */
- Display *display; /* on which frame appears */
- Image *b; /* on which frame appears */
- Image *cols[NCOL]; /* text and background colors */
- Rectangle r; /* in which text appears */
- Rectangle entire; /* of full frame */
- void (*scroll)(Frame*, int); /* scroll function provided by application */
- Frbox *box;
- ulong p0, p1; /* selection */
- ushort nbox, nalloc;
- ushort maxtab; /* max size of tab, in pixels */
- ushort nchars; /* # runes in frame */
- ushort nlines; /* # lines with text */
- ushort maxlines; /* total # lines in frame */
- ushort lastlinefull; /* last line fills frame */
- ushort modified; /* changed since frselect() */
- Image *tick; /* typing tick */
- Image *tickback; /* saved image under tick */
- int ticked; /* flag: is tick onscreen? */
-};
-
-ulong frcharofpt(Frame*, Point);
-Point frptofchar(Frame*, ulong);
-int frdelete(Frame*, ulong, ulong);
-void frinsert(Frame*, Rune*, Rune*, ulong);
-void frselect(Frame*, Mousectl*);
-void frselectpaint(Frame*, Point, Point, Image*);
-void frdrawsel(Frame*, Point, ulong, ulong, int);
-void frdrawsel0(Frame*, Point, ulong, ulong, Image*, Image*);
-void frinit(Frame*, Rectangle, Font*, Image*, Image**);
-void frsetrects(Frame*, Rectangle, Image*);
-void frclear(Frame*, int);
-
-uchar *_frallocstr(Frame*, unsigned);
-void _frinsure(Frame*, int, unsigned);
-Point _frdraw(Frame*, Point);
-void _frgrowbox(Frame*, int);
-void _frfreebox(Frame*, int, int);
-void _frmergebox(Frame*, int);
-void _frdelbox(Frame*, int, int);
-void _frsplitbox(Frame*, int, int);
-int _frfindbox(Frame*, int, ulong, ulong);
-void _frclosebox(Frame*, int, int);
-int _frcanfit(Frame*, Point, Frbox*);
-void _frcklinewrap(Frame*, Point*, Frbox*);
-void _frcklinewrap0(Frame*, Point*, Frbox*);
-void _fradvance(Frame*, Point*, Frbox*);
-int _frnewwid(Frame*, Point, Frbox*);
-int _frnewwid0(Frame*, Point, Frbox*);
-void _frclean(Frame*, Point, int, int);
-void _frredraw(Frame*, Point);
-void _fraddbox(Frame*, int, int);
-Point _frptofcharptb(Frame*, ulong, Point, int);
-Point _frptofcharnb(Frame*, ulong, int);
-int _frstrlen(Frame*, int);
-void frtick(Frame*, Point, int);
-void frinittick(Frame*);
-
-#define NRUNE(b) ((b)->nrune<0? 1 : (b)->nrune)
-#define NBYTE(b) strlen((char*)(b)->ptr) |
| diff --git a/src/libframe/mkfile b/src/libframe/mkfile |
| t@@ -1 +0,0 @@
-<../libutf/mkfile |
| diff --git a/src/libregexp/Make.Darwin-PowerMacintosh b/src/libregexp/Make.Darwin-PowerMacintosh |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.FreeBSD-386 b/src/libregexp/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.HP-UX-9000 b/src/libregexp/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.Linux-386 b/src/libregexp/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.NetBSD-386 b/src/libregexp/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.OSF1-alpha b/src/libregexp/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.SunOS-sun4u b/src/libregexp/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.SunOS-sun4u-cc b/src/libregexp/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libregexp/Make.SunOS-sun4u-gcc b/src/libregexp/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libregexp/Makefile b/src/libregexp/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libregexp9.a
-VERSION=2.0
-PORTPLACE=devel/libregexp9
-NAME=libregexp9
OFILES=\
regcomp.$O\
t@@ -29,23 +9,15 @@ OFILES=\
regexec.$O\
regsub.$O\
regaux.$O\
- rregsub.$O\
rregaux.$O\
rregexec.$O\
+ rregsub.$O\
HFILES=\
- regexp9.h\
+ $(9SRC)/include/regexp9.h\
regcomp.h\
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- test -d $(PREFIX)/man/man7 || mkdir $(PREFIX)/man/man7
- install -m 0644 regexp9.3 $(PREFIX)/man/man3/regexp9.3
- install -m 0644 regexp9.7 $(PREFIX)/man/man7/regexp9.7
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
- install -m 0644 regexp9.h $(PREFIX)/include/regexp9.h
+include $(9SRC)/Makesyslib
test: test.$O $(LIB)
$(CC) -o test test.$O $(LIB) -L/usr/local/lib -lfmt -lutf
t@@ -53,54 +25,3 @@ test: test.$O $(LIB)
test2: test2.$O $(LIB)
$(CC) -o test2 test2.$O $(LIB) -L/usr/local/lib -lfmt -lutf
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
-
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/libregexp/Makefile.MID b/src/libregexp/Makefile.MID |
| t@@ -1,34 +0,0 @@
-LIB=libregexp9.a
-VERSION=2.0
-PORTPLACE=devel/libregexp9
-NAME=libregexp9
-
-OFILES=\
- regcomp.$O\
- regerror.$O\
- regexec.$O\
- regsub.$O\
- regaux.$O\
- rregsub.$O\
- rregaux.$O\
-
-HFILES=\
- regexp9.h\
- regcomp.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- test -d $(PREFIX)/man/man7 || mkdir $(PREFIX)/man/man7
- install -m 0644 regexp9.3 $(PREFIX)/man/man3/regexp9.3
- install -m 0644 regexp9.7 $(PREFIX)/man/man7/regexp9.7
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
- install -m 0644 regexp9.h $(PREFIX)/include/regexp9.h
-
-test: test.$O $(LIB)
- $(CC) -o test test.$O $(LIB) -L/usr/local/lib -lfmt -lutf
-
-test2: test2.$O $(LIB)
- $(CC) -o test2 test2.$O $(LIB) -L/usr/local/lib -lfmt -lutf
- |
| diff --git a/src/libregexp/bundle.ports b/src/libregexp/bundle.ports |
| t@@ -1,51 +0,0 @@
---- Makefile ---
-# New ports collection makefile for: libbio
-# Date Created: 11 Feb 2003
-# Whom: rsc
-#
-# THIS LINE NEEDS REPLACING. IT'S HERE TO GET BY PORTLINT
-# $FreeBSD: ports/devel/libbio/Makefile,v 1.1 2003/02/12 00:51:22 rsc Exp $
-
-PORTNAME= libregexp9
-PORTVERSION= 2.0
-CATEGORIES= devel
-MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
-EXTRACT_SUFX= .tgz
-
-MAINTAINER= rsc@post.harvard.edu
-
-DEPENDS= ${PORTSDIR}/devel/libfmt ${PORTSDIR}/devel/libutf
-
-MAN3= regexp9.3
-MAN7= regexp9.7
-USE_REINPLACE= yes
-
-.include
-
-post-patch:
- ${REINPLACE_CMD} -e 's,$$(PREFIX),${PREFIX},g' ${WRKSRC}/Makefile
-
-.include
---- pkg-comment ---
-Simple regular expression library from Plan 9
---- pkg-descr ---
-Libregexp9 is a port of Plan 9's regexp library.
-It is small and simple and provides the traditional
-extended regular expressions (as opposed to the
-current extended regular expressions, which add {}
-and various \x character classes, among other
-complications).
-
-It handles Unicode in wide character or UTF8 format!
-
-WWW: http://pdos.lcs.mit.edu/~rsc/software/
-http://plan9.bell-labs.com/magic/man2html/2/regexp
-
-Russ Cox
-rsc@post.harvard.edu
---- pkg-plist ---
-lib/libregexp9.a
-include/regex9.h
---- /dev/null ---
-This is just a way to make sure blank lines don't
-creep into pkg-plist. |
| diff --git a/src/libregexp/mkfile b/src/libregexp/mkfile |
| t@@ -1 +0,0 @@
-<../libutf/mkfile |
| diff --git a/src/libregexp/regexp9.3 b/src/libregexp/regexp9.3 |
| t@@ -1,227 +0,0 @@
-.TH REGEXP9 3
-.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
-regcomp, regcomplit, regcompnl, regexec, regsub, regerror \- Plan 9 regular expression library
-.SH SYNOPSIS
-.B #include
-.PP
-.ta \w'\fLRegprog 'u
-.B
-Reprog *regcomp(char *exp)
-.PP
-.B
-Reprog *regcomplit(char *exp)
-.PP
-.B
-Reprog *regcompnl(char *exp)
-.PP
-.nf
-.B
-int regexec(Reprog *prog, char *string, Resub *match, int msize)
-.PP
-.nf
-.B
-void regsub(char *source, char *dest, int dlen, Resub *match, int msize)
-.PP
-.nf
-.B
-int rregexec(Reprog *prog, Rune *string, Resub *match, int msize)
-.PP
-.nf
-.B
-void rregsub(Rune *source, Rune *dest, int dlen, Resub *match, int msize)
-.PP
-.B
-void regerror(char *msg)
-.SH DESCRIPTION
-.I Regcomp
-compiles a
-regular expression and returns
-a pointer to the generated description.
-The space is allocated by
-.IR malloc (3)
-and may be released by
-.IR free .
-Regular expressions are exactly as in
-.IR regexp9 (7).
-.PP
-.I Regcomplit
-is like
-.I regcomp
-except that all characters are treated literally.
-.I Regcompnl
-is like
-.I regcomp
-except that the
-.B .
-metacharacter matches all characters, including newlines.
-.PP
-.I Regexec
-matches a null-terminated
-.I string
-against the compiled regular expression in
-.IR prog .
-If it matches,
-.I regexec
-returns
-.B 1
-and fills in the array
-.I match
-with character pointers to the substrings of
-.I string
-that correspond to the
-parenthesized subexpressions of
-.IR exp :
-.BI match[ i ].sp
-points to the beginning and
-.BI match[ i ].ep
-points just beyond
-the end of the
-.IR i th
-substring.
-(Subexpression
-.I i
-begins at the
-.IR i th
-left parenthesis, counting from 1.)
-Pointers in
-.B match[0]
-pick out the substring that corresponds to
-the whole regular expression.
-Unused elements of
-.I match
-are filled with zeros.
-Matches involving
-.LR * ,
-.LR + ,
-and
-.L ?
-are extended as far as possible.
-The number of array elements in
-.I match
-is given by
-.IR msize .
-The structure of elements of
-.I match
-is:
-.IP
-.EX
-typedef struct {
- union {
- char *sp;
- Rune *rsp;
- } s;
- union {
- char *ep;
- Rune *rep;
- } e;
-} Resub;
-.EE
-.LP
-If
-.B match[0].s.sp
-is nonzero on entry,
-.I regexec
-starts matching at that point within
-.IR string .
-If
-.B match[0].e.ep
-is nonzero on entry,
-the last character matched is the one
-preceding that point.
-.PP
-.I Regsub
-places in
-.I dest
-a substitution instance of
-.I source
-in the context of the last
-.I regexec
-performed using
-.IR match .
-Each instance of
-.BI \e n\f1,
-where
-.I n
-is a digit, is replaced by the
-string delimited by
-.BI match[ n ].s.sp
-and
-.BI match[ n ].e.ep\f1.
-Each instance of
-.L &
-is replaced by the string delimited by
-.B match[0].s.sp
-and
-.BR match[0].e.ep .
-The substitution will always be null terminated and
-trimmed to fit into dlen bytes.
-.PP
-.IR Regerror ,
-called whenever an error is detected in
-.IR regcomp ,
-writes the string
-.I msg
-on the standard error file and exits.
-.I Regerror
-can be replaced to perform
-special error processing.
-If the user supplied
-.I regerror
-returns rather than exits,
-.I regcomp
-will return 0.
-.PP
-.I Rregexec
-and
-.I rregsub
-are variants of
-.I regexec
-and
-.I regsub
-that use strings of
-.B Runes
-instead of strings of
-.BR chars .
-With these routines, the
-.I rsp
-and
-.I rep
-fields of the
-.I match
-array elements should be used.
-.SH "SEE ALSO"
-.IR grep (1),
-.IR regexp9 (7)
-.SH DIAGNOSTICS
-.I Regcomp
-returns
-.B 0
-for an illegal expression
-or other failure.
-.I Regexec
-returns 0
-if
-.I string
-is not matched.
-.SH HISTORY
-This particular regular expression was first written by Rob Pike for Plan 9.
-It has also appeared as part of the Inferno operating system.
-.SH BUGS
-There is no way to specify or match a NUL character; NULs terminate patterns and strings. |
| diff --git a/src/libregexp/regexp9.7 b/src/libregexp/regexp9.7 |
| t@@ -1,150 +0,0 @@
-.TH REGEXP9 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
-regexp9 \- Plan 9 regular expression notation
-.SH DESCRIPTION
-This manual page describes the regular expression
-syntax used by the Plan 9 regular expression library
-.IR regexp9 (3).
-It is the form used by
-.IR egrep (1)
-before
-.I egrep
-got complicated.
-.PP
-A
-.I "regular expression"
-specifies
-a set of strings of characters.
-A member of this set of strings is said to be
-.I matched
-by the regular expression. In many applications
-a delimiter character, commonly
-.LR / ,
-bounds a regular expression.
-In the following specification for regular expressions
-the word `character' means any character (rune) but newline.
-.PP
-The syntax for a regular expression
-.B e0
-is
-.IP
-.EX
-e3: literal | charclass | '.' | '^' | '$' | '(' e0 ')'
-
-e2: e3
- | e2 REP
-
-REP: '*' | '+' | '?'
-
-e1: e2
- | e1 e2
-
-e0: e1
- | e0 '|' e1
-.EE
-.PP
-A
-.B literal
-is any non-metacharacter, or a metacharacter
-(one of
-.BR .*+?[]()|\e^$ ),
-or the delimiter
-preceded by
-.LR \e .
-.PP
-A
-.B charclass
-is a nonempty string
-.I s
-bracketed
-.BI [ \|s\| ]
-(or
-.BI [^ s\| ]\fR);
-it matches any character in (or not in)
-.IR s .
-A negated character class never
-matches newline.
-A substring
-.IB a - b\f1,
-with
-.I a
-and
-.I b
-in ascending
-order, stands for the inclusive
-range of
-characters between
-.I a
-and
-.IR b .
-In
-.IR s ,
-the metacharacters
-.LR - ,
-.LR ] ,
-an initial
-.LR ^ ,
-and the regular expression delimiter
-must be preceded by a
-.LR \e ;
-other metacharacters
-have no special meaning and
-may appear unescaped.
-.PP
-A
-.L .
-matches any character.
-.PP
-A
-.L ^
-matches the beginning of a line;
-.L $
-matches the end of the line.
-.PP
-The
-.B REP
-operators match zero or more
-.RB ( * ),
-one or more
-.RB ( + ),
-zero or one
-.RB ( ? ),
-instances respectively of the preceding regular expression
-.BR e2 .
-.PP
-A concatenated regular expression,
-.BR "e1\|e2" ,
-matches a match to
-.B e1
-followed by a match to
-.BR e2 .
-.PP
-An alternative regular expression,
-.BR "e0\||\|e1" ,
-matches either a match to
-.B e0
-or a match to
-.BR e1 .
-.PP
-A match to any part of a regular expression
-extends as far as possible without preventing
-a match to the remainder of the regular expression.
-.SH "SEE ALSO"
-.IR regexp9 (3) |
| diff --git a/src/libregexp/regexp9.h b/src/libregexp/regexp9.h |
| t@@ -1,71 +0,0 @@
-#ifndef _REGEXP9H_
-
-#define _REGEXP9H_ 1
-#include
-
-typedef struct Resub Resub;
-typedef struct Reclass Reclass;
-typedef struct Reinst Reinst;
-typedef struct Reprog Reprog;
-
-/*
- * Sub expression matches
- */
-struct Resub{
- union
- {
- char *sp;
- Rune *rsp;
- }s;
- union
- {
- char *ep;
- Rune *rep;
- }e;
-};
-
-/*
- * character class, each pair of rune's defines a range
- */
-struct Reclass{
- Rune *end;
- Rune spans[64];
-};
-
-/*
- * Machine instructions
- */
-struct Reinst{
- int type;
- union {
- Reclass *cp; /* class pointer */
- Rune r; /* character */
- int subid; /* sub-expression id for RBRA and LBRA */
- Reinst *right; /* right child of OR */
- }u1;
- union { /* regexp relies on these two being in the same union */
- Reinst *left; /* left child of OR */
- Reinst *next; /* next instruction for CAT & LBRA */
- }u2;
-};
-
-/*
- * Reprogram definition
- */
-struct Reprog{
- Reinst *startinst; /* start pc */
- Reclass class[16]; /* .data */
- Reinst firstinst[5]; /* .text */
-};
-
-extern Reprog *regcomp(char*);
-extern Reprog *regcomplit(char*);
-extern Reprog *regcompnl(char*);
-extern void regerror(char*);
-extern int regexec(Reprog*, char*, Resub*, int);
-extern void regsub(char*, char*, int, Resub*, int);
-
-extern int rregexec(Reprog*, Rune*, Resub*, int);
-extern void rregsub(Rune*, Rune*, Resub*, int);
-
-#endif |
| diff --git a/src/libregexp/rpm.spec b/src/libregexp/rpm.spec |
| t@@ -1,34 +0,0 @@
-Summary: Simple regular expression library from Plan 9
-Name: libregexp9
-Version: 2.0
-Release: 1
-Group: Development/C
-Copyright: Public Domain
-Packager: Russ Cox
-Source: http://pdos.lcs.mit.edu/~rsc/software/libregexp9-2.0.tgz
-URL: http://pdos.lcs.mit.edu/~rsc/software/#libregexp9
-Requires: libfmt libutf
-
-%description
-Libregexp9 is a port of Plan 9's regexp library.
-It is small and simple and provides the traditional
-extended regular expressions (as opposed to the
-current extended regular expressions, which add {}
-and various \x character classes, among other
-complications).
-
-http://plan9.bell-labs.com/magic/man2html/2/regexp
-%prep
-%setup
-
-%build
-make
-
-%install
-make install
-
-%files
-/usr/local/include/regexp9.h
-/usr/local/lib/libregexp9.a
-/usr/local/man/man3/regexp9.3
-/usr/local/man/man7/regexp9.7 |
| diff --git a/src/libthread/Make.Darwin-PowerMacintosh b/src/libthread/Make.Darwin-PowerMacintosh |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.FreeBSD-386 b/src/libthread/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.HP-UX-9000 b/src/libthread/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.Linux-386 b/src/libthread/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.NetBSD-386 b/src/libthread/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.OSF1-alpha b/src/libthread/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.SunOS-sun4u b/src/libthread/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.SunOS-sun4u-cc b/src/libthread/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libthread/Make.SunOS-sun4u-gcc b/src/libthread/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libthread/Makefile b/src/libthread/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libthread.a
-VERSION=2.0
-PORTPLACE=devel/libthread
-NAME=libthread
OFILES=\
$(OBJTYPE).$O\
t@@ -53,73 +33,17 @@ OFILES=\
sched.$O\
HFILES=\
- thread.h\
+ $(9SRC)/include/thread.h\
label.h\
threadimpl.h\
-all: $(LIB)
+include $(9SRC)/Makesyslib
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 thread.3 $(PREFIX)/man/man3/thread.3
- install -m 0644 ioproc.3 $(PREFIX)/man/man3/ioproc.3
- install -m 0644 thread.h $(PREFIX)/include/thread.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-tprimes: $(LIB) tprimes.$O
- $(CC) -o tprimes tprimes.$O $(LIB) -L$(PREFIX)/lib -l9 -lfmt -lutf
+tprimes: tprimes.$O
+ $(CC) -o tprimes tprimes.$O -L$(9SRC)/lib -lthread -l9 -lfmt -lutf
texec: $(LIB) texec.$O
- $(CC) -o texec texec.$O $(LIB) -L$(PREFIX)/lib -l9 -lfmt -lutf
-
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
+ $(CC) -o texec texec.$O -L$(9SRC)/lib -lthread -l9 -lfmt -lutf
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+CLEANFILES+=tprimes texec
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/libthread/Makefile.MID b/src/libthread/Makefile.MID |
| t@@ -1,54 +0,0 @@
-LIB=libthread.a
-VERSION=2.0
-PORTPLACE=devel/libthread
-NAME=libthread
-
-OFILES=\
- $(OBJTYPE).$O\
- asm-$(SYSNAME)-$(OBJTYPE).$O\
- channel.$O\
- chanprint.$O\
- create.$O\
- debug.$O\
- exec-unix.$O\
- exit.$O\
- getpid.$O\
- id.$O\
- iocall.$O\
- ioclose.$O\
- ioopen.$O\
- ioproc.$O\
- ioread.$O\
- ioreadn.$O\
- iowrite.$O\
- kill.$O\
- lib.$O\
- main.$O\
- memset.$O\
- memsetd.$O\
- note.$O\
- proctab.$O\
- ref.$O\
- rendez.$O\
- sched.$O\
-
-HFILES=\
- thread.h\
- label.h\
- threadimpl.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -m 0644 thread.3 $(PREFIX)/man/man3/thread.3
- install -m 0644 ioproc.3 $(PREFIX)/man/man3/ioproc.3
- install -m 0644 thread.h $(PREFIX)/include/thread.h
- install -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-tprimes: $(LIB) tprimes.$O
- $(CC) -o tprimes tprimes.$O $(LIB) -L$(PREFIX)/lib -l9 -lfmt -lutf
-
-texec: $(LIB) texec.$O
- $(CC) -o texec texec.$O $(LIB) -L$(PREFIX)/lib -l9 -lfmt -lutf
- |
| diff --git a/src/libthread/bundle.ports b/src/libthread/bundle.ports |
| t@@ -1,42 +0,0 @@
---- Makefile ---
-# New ports collection makefile for: libthread
-# Date Created: 11 Feb 2003
-# Whom: rsc
-#
-
-PORTNAME= libthread
-PORTVERSION= 1.0
-CATEGORIES= devel
-MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
-DISTNAME= libthread
-EXTRACT_SUFX= .tgz
-
-MAINTAINER= rsc@post.harvard.edu
-
-MAN3= print.3 fmtinstall.3
-MLINKS= XXX
-USE_REINPLACE= XXX (wkj says yes)
-
-.include
-
-post-patch:
- ${REINPLACE_CMD} -e 's,@@LOCAL@@,${PREFIX},g' ${WRKSRC}/Makefile
-
-.include
-
---- pkg-comment ---
-Plan 9 thread library
---- pkg-descr ---
-Libthread is a port of Plan 9's thread library.
-
-WWW: http://pdos.lcs.mit.edu/~rsc/software/
-WWW: http://plan9.bell-labs.com/magic/man2html/2/thread
-
-Russ Cox
-rsc@post.harvard.edu
---- pkg-plist ---
-lib/libthread.a
-include/thread.h
---- /dev/null ---
-This is just a way to make sure blank lines don't
-creep into pkg-plist. |
| diff --git a/src/libthread/create.c b/src/libthread/create.c |
| t@@ -1,6 +1,5 @@
#include "threadimpl.h"
-#define free
Pqueue _threadpq;
static int nextID(void); |
| diff --git a/src/libthread/ioproc.3 b/src/libthread/ioproc.3 |
| t@@ -1,179 +0,0 @@
-.TH IOPROC 2
-.SH NAME
-closeioproc,
-iocall,
-ioclose,
-iointerrupt,
-iodial,
-ioopen,
-ioproc,
-ioread,
-ioreadn,
-iowrite \- slave I/O processes for threaded programs
-.SH SYNOPSIS
-.PP
-.de XX
-.ift .sp 0.5
-.ifn .sp
-..
-.EX
-.ta \w'Ioproc* 'u
-#include
-#include
-#include
-.sp
-typedef struct Ioproc Ioproc;
-.sp
-Ioproc* ioproc(void);
-.XX
-int ioopen(Ioproc *io, char *file, int omode);
-int ioclose(Ioproc *io, int fd);
-long ioread(Ioproc *io, int fd, void *a, long n);
-long ioreadn(Ioproc *io, int fd, void *a, long n);
-long iowrite(Ioproc *io, int fd, void *a, long n);
-int iodial(Ioproc *io, char *addr, char *local, char *dir, char *cdfp);
-.XX
-void iointerrupt(Ioproc *io);
-void closeioproc(Ioproc *io);
-.XX
-long iocall(Ioproc *io, long (*op)(va_list *arg), ...);
-.EE
-.SH DESCRIPTION
-.PP
-These routines provide access to I/O in slave procs.
-Since the I/O itself is done in a slave proc, other threads
-in the calling proc can run while the calling thread
-waits for the I/O to complete.
-.PP
-.I Ioproc
-forks a new slave proc and returns a pointer to the
-.B Ioproc
-associated with it.
-.I Ioproc
-uses
-.I mallocz
-and
-.IR proccreate ;
-if either fails, it calls
-.I sysfatal
-rather than return an error.
-.PP
-.IR Ioopen ,
-.IR ioclose ,
-.IR ioread ,
-.IR ioreadn ,
-.IR iowrite ,
-and
-.IR iodial
-are execute the
-similarly named library or system calls
-(see
-.IR open (2),
-.IR read (2),
-and
-.IR dial (2))
-in the slave process associated with
-.IR io .
-It is an error to execute more than one call
-at a time in an I/O proc.
-.PP
-.I Iointerrupt
-interrupts the call currently executing in the I/O proc.
-If no call is executing,
-.IR iointerrupt
-is a no-op.
-.PP
-.I Closeioproc
-terminates the I/O proc and frees the associated
-.B Ioproc .
-.PP
-.I Iocall
-is a primitive that may be used to implement
-more slave I/O routines.
-.I Iocall
-arranges for
-.I op
-to be called in
-.IR io 's
-proc, with
-.I arg
-set to the variable parameter list,
-returning the value that
-.I op
-returns.
-.SH EXAMPLE
-Relay messages between two file descriptors,
-counting the total number of bytes seen:
-.IP
-.EX
-.ta +\w'xxxx'u +\w'xxxx'u +\w'xxxx'u
-int tot;
-
-void
-relaythread(void *v)
-{
- int *fd, n;
- char buf[1024];
- Ioproc *io;
-
- fd = v;
- io = ioproc();
- while((n = ioread(io, fd[0], buf, sizeof buf)) > 0){
- if(iowrite(io, fd[1], buf, n) != n)
- sysfatal("iowrite: %r");
- tot += n;
- }
- closeioproc(io);
-}
-
-void
-relay(int fd0, int fd1)
-{
- int fd[4];
-
- fd[0] = fd[3] = fd0;
- fd[1] = fd[2] = fd1;
- threadcreate(relaythread, fd, 8192);
- threadcreate(relaythread, fd+2, 8192);
-}
-.EE
-.LP
-If the two
-.I relaythread
-instances were running in different procs, the
-common access to
-.I tot
-would be unsafe.
-.EE
-.PP
-Implement
-.IR ioread :
-.IP
-.EX
-static long
-_ioread(va_list *arg)
-{
- int fd;
- void *a;
- long n;
-
- fd = va_arg(*arg, int);
- a = va_arg(*arg, void*);
- n = va_arg(*arg, long);
- return read(fd, a, n);
-}
-
-long
-ioread(Ioproc *io, int fd, void *a, long n)
-{
- return iocall(io, _ioread, fd, a, n);
-}
-.EE
-.SH SOURCE
-.B /sys/src/libthread/io*.c
-.SH SEE ALSO
-.IR dial (2),
-.IR open (2),
-.IR read (2),
-.IR thread (2)
- |
| diff --git a/src/libthread/mkfile b/src/libthread/mkfile |
| t@@ -1,2 +0,0 @@
-<../libutf/mkfile
- |
| diff --git a/src/libthread/rpm.spec b/src/libthread/rpm.spec |
| t@@ -1,26 +0,0 @@
-Summary: Port of Plan 9's thread library
-Name: libthread
-Version: 2.0
-Release: 1
-Group: Development/C
-Copyright: BSD-like
-Packager: Russ Cox
-Source: http://pdos.lcs.mit.edu/~rsc/software/libthread-2.0.tgz
-URL: http://pdos.lcs.mit.edu/~rsc/software/#libthread
-
-%description
-Libthread is a port of Plan 9's thread library
-%prep
-%setup
-
-%build
-make
-
-%install
-make install
-
-%files
-/usr/local/include/thread.h
-/usr/local/lib/libthread.a
-/usr/local/man/man3/thread.3
-/usr/local/man/man3/ioproc.3 |
| diff --git a/src/libthread/thread.3 b/src/libthread/thread.3 |
| t@@ -1,576 +0,0 @@
-.TH THREAD 2
-.SH NAME
-alt,
-chancreate,
-chanfree,
-chaninit,
-chanprint,
-mainstacksize,
-proccreate,
-procdata,
-procexec,
-procexecl,
-procrfork,
-recv,
-recvp,
-recvul,
-send,
-sendp,
-sendul,
-nbrecv,
-nbrecvp,
-nbrecvul,
-nbsend,
-nbsendp,
-nbsendul,
-threadcreate,
-threaddata,
-threadexits,
-threadexitsall,
-threadgetgrp,
-threadgetname,
-threadint,
-threadintgrp,
-threadkill,
-threadkillgrp,
-threadmain,
-threadnotify,
-threadid,
-threadpid,
-threadsetgrp,
-threadsetname,
-threadwaitchan,
-yield \- thread and proc management
-.SH SYNOPSIS
-.PP
-.EX
-.ta 4n +4n +4n +4n +4n +4n +4n
-#include
-#include
-#include
-.sp
-#define CHANEND 0
-#define CHANSND 1
-#define CHANRCV 2
-#define CHANNOP 3
-#define CHANNOBLK 4
-.sp
-.ta \w' 'u +\w'Channel 'u
-typedef struct Alt Alt;
-struct Alt {
- Channel *c;
- void *v;
- int op;
- Channel **tag;
- int entryno;
-};
-.fi
-.de XX
-.ift .sp 0.5
-.ifn .sp
-..
-.PP
-.nf
-.ft L
-.ta \w'\fLChannel* 'u +4n +4n +4n +4n
-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)
-void yield(void)
-.XX
-int threadid(void)
-int threadgrp(void)
-int threadsetgrp(int group)
-int threadpid(int id)
-.XX
-int threadint(int id)
-int threadintgrp(int group)
-int threadkill(int id)
-int threadkillgrp(int group)
-.XX
-void threadsetname(char *name)
-char* threadgetname(void)
-.XX
-void** threaddata(void)
-void** procdata(void)
-.XX
-int chaninit(Channel *c, int elsize, int nel)
-Channel* chancreate(int elsize, int nel)
-void chanfree(Channel *c)
-.XX
-int alt(Alt *alts)
-int recv(Channel *c, void *v)
-void* recvp(Channel *c)
-ulong recvul(Channel *c)
-int nbrecv(Channel *c, void *v)
-void* nbrecvp(Channel *c)
-ulong nbrecvul(Channel *c)
-int send(Channel *c, void *v)
-int sendp(Channel *c, void *v)
-int sendul(Channel *c, ulong v)
-int nbsend(Channel *c, void *v)
-int nbsendp(Channel *c, void *v)
-int nbsendul(Channel *c, ulong v)
-int chanprint(Channel *c, char *fmt, ...)
-.XX
-int procexecl(Channel *cpid, char *file, ...)
-int procexec(Channel *cpid, char *file, char *args[])
-Channel* threadwaitchan(void)
-.XX
-int threadnotify(int (*f)(void*, char*), int in)
-.EE
-.SH DESCRIPTION
-.PP
-The thread library provides parallel programming support similar to that
-of the languages
-Alef and Newsqueak.
-Threads
-and
-procs
-occupy a shared address space,
-communicating and synchronizing through
-.I channels
-and shared variables.
-.PP
-A
-.I proc
-is a Plan 9 process that contains one or more cooperatively scheduled
-.IR threads .
-Programs using threads must replace
-.I main
-by
-.IR threadmain .
-The thread library provides a
-.I main
-function that sets up a proc with a single thread executing
-.I threadmain
-on a stack of size
-.I mainstacksize
-(default eight kilobytes).
-To set
-.IR mainstacksize ,
-declare a global variable
-initialized to the desired value
-.RI ( e.g. ,
-.B int
-.B mainstacksize
-.B =
-.BR 1024 ).
-.PP
-.I Threadcreate
-creates a new thread in the calling proc, returning a unique integer
-identifying the thread; the thread
-executes
-.I fn(arg)
-on a stack of size
-.IR stacksize .
-Thread stacks are allocated in shared memory, making it valid to pass
-pointers to stack variables between threads and procs.
-.I Procrfork
-creates a new proc, and inside that proc creates
-a single thread as
-.I threadcreate
-would,
-returning the id of the created thread.
-.I Procrfork
-creates the new proc by calling
-.B rfork
-(see
-.IR fork (2))
-with flags
-.BR RFPROC|RFMEM|RFNOWAIT| \fIrforkflag\fR.
-(The thread library depends on all its procs
-running in the same rendezvous group.
-Do not include
-.B RFREND
-in
-.IR rforkflag .)
-.I Proccreate
-is identical to
-.I procrfork
-with
-.I rforkflag
-set to zero.
-Be aware that the calling thread may continue
-execution before
-the newly created proc and thread
-are scheduled.
-Because of this,
-.I arg
-should not point to data on the stack of a function that could
-return before the new process is scheduled.
-.PP
-.I Threadexits
-terminates the calling thread.
-If the thread is the last in its proc,
-.I threadexits
-also terminates the proc, using
-.I status
-as the exit status.
-.I Threadexitsall
-terminates all procs in the program,
-using
-.I status
-as the exit status.
-.PP
-The threads in a proc are coroutines, scheduled nonpreemptively
-in a round-robin fashion.
-A thread must explicitly relinquish control of the processor
-before another thread in the same proc is run.
-Calls that do this are
-.IR yield ,
-.IR proccreate ,
-.IR procexec ,
-.IR procexecl ,
-.IR threadexits ,
-.IR alt ,
-.IR send ,
-and
-.I recv
-(and the calls related to
-.I send
-and
-.IR recv \(emsee
-their descriptions further on).
-Procs are scheduled by the operating system.
-Therefore, threads in different procs can preempt one another
-in arbitrary ways and should synchronize their
-actions using
-.B qlocks
-(see
-.IR lock (2))
-or channel communication.
-System calls such as
-.IR read (2)
-block the entire proc;
-all threads in a proc block until the system call finishes.
-.PP
-As mentioned above, each thread has a unique integer thread id.
-Thread ids are not reused; they are unique across the life of the program.
-.I Threadid
-returns the id for the current thread.
-Each thread also has a thread group id.
-The initial thread has a group id of zero.
-Each new thread inherits the group id of
-the thread that created it.
-.I Threadgrp
-returns the group id for the current thread;
-.I threadsetgrp
-sets it.
-.I Threadpid
-returns the pid of the Plan 9 process containing
-the thread identified by
-.IR id ,
-or \-1
-if no such thread is found.
-.PP
-.I Threadint
-interrupts a thread that is blocked in a channel operation
-or system call.
-.I Threadintgrp
-interrupts all threads with the given group id.
-.I Threadkill
-marks a thread to die when it next relinquishes the processor
-(via one of the calls listed above).
-If the thread is blocked in a channel operation or system call,
-it is also interrupted.
-.I Threadkillgrp
-kills all threads with the given group id.
-Note that
-.I threadkill
-and
-.I threadkillgrp
-will not terminate a thread that never relinquishes
-the processor.
-.PP
-Primarily for debugging,
-threads can have string names associated with them.
-.I Threadgetname
-returns the current thread's name;
-.I threadsetname
-sets it.
-The pointer returned by
-.I threadgetname
-is only valid until the next call to
-.IR threadsetname .
-.PP
-.I Threaddata
-returns a pointer to a per-thread pointer
-that may be modified by threaded programs for
-per-thread storage.
-Similarly,
-.I procdata
-returns a pointer to a per-proc pointer.
-.PP
-.I Procexecl
-and
-.I procexec
-are threaded analogues of
-.I exec
-and
-.I execl
-(see
-.IR exec (2));
-on success,
-they replace the calling thread (which must be the only thread in its proc)
-and invoke the external program, never returning.
-On error, they return \-1.
-If
-.I cpid
-is not null, the pid of the invoked program
-will be sent along
-.I cpid
-once the program has been started, or \-1 will be sent if an
-error occurs.
-.I Procexec
-and
-.I procexecl
-will not access their arguments after sending a result
-along
-.IR cpid .
-Thus, programs that malloc the
-.I argv
-passed to
-.I procexec
-can safely free it once they have
-received the
-.I cpid
-response.
-.I Threadwaitchan
-returns a channel of pointers to
-.B Waitmsg
-structures (see
-.IR wait (2)).
-When an exec'ed process exits, a pointer to a
-.B Waitmsg
-is sent to this channel.
-These
-.B Waitmsg
-structures have been allocated with
-.IR malloc (2)
-and should be freed after use.
-.PP
-A
-.B Channel
-is a buffered or unbuffered queue for fixed-size messages.
-Procs and threads
-.I send
-messages into the channel and
-.I recv
-messages from the channel. If the channel is unbuffered, a
-.I send
-operation blocks until the corresponding
-.I recv
-operation occurs and
-.IR "vice versa" .
-.I Chaninit
-initializes a
-.B Channel
-for messages of size
-.I elsize
-and with a buffer holding
-.I nel
-messages.
-If
-.I nel
-is zero, the channel is unbuffered.
-.IR Chancreate
-allocates a new channel and initializes it.
-.I Chanfree
-frees a channel that is no longer used.
-.I Chanfree
-can be called by either sender or receiver after the last item has been
-sent or received. Freeing the channel will be delayed if there is a thread
-blocked on it until that thread unblocks (but
-.I chanfree
-returns immediately).
-.PP
-.I Send
-sends the element pointed at by
-.I v
-to the channel
-.IR c .
-If
-.I v
-is null, zeros are sent.
-.I Recv
-receives an element from
-.I c
-and stores it in
-.IR v .
-If
-.I v
-is null,
-the received value is discarded.
-.I Send
-and
-.I recv
-return 1 on success, \-1 if interrupted.
-.I Nbsend
-and
-.I nbrecv
-behave similarly, but return 0 rather than blocking.
-.PP
-.IR Sendp ,
-.IR nbsendp ,
-.IR sendul ,
-and
-.I nbsendul
-send a pointer or an unsigned long; the channel must
-have been initialized with the appropriate
-.IR elsize .
-.IR Recvp ,
-.IR nbrecvp ,
-.IR recvul ,
-and
-.I nbrecvul
-receive a pointer or an unsigned long;
-they return zero when a zero is received,
-when interrupted, or
-(for
-.I nbrecvp
-and
-.IR nbrecvul )
-when the operation would have blocked.
-To distinguish between these three cases,
-use
-.I recv
-or
-.IR nbrecv .
-.PP
-.I Alt
-can be used to recv from or send to one of a number of channels,
-as directed by an array of
-.B Alt
-structures,
-each of which describes a potential send or receive operation.
-In an
-.B Alt
-structure,
-.B c
-is the channel;
-.B v
-the value pointer (which may be null); and
-.B op
-the operation:
-.B CHANSND
-for a send operation,
-.B CHANRECV
-for a recv operation;
-.B CHANNOP
-for no operation
-(useful
-when
-.I alt
-is called with a varying set of operations).
-The array of
-.B Alt
-structures is terminated by an entry with
-.I op
-.B CHANEND
-or
-.BR CHANNOBLK .
-If at least one
-.B Alt
-structure can proceed, one of them is
-chosen at random to be executed.
-.I Alt
-returns the index of the chosen structure.
-If no operations can proceed and the list is terminated with
-.BR CHANNOBLK ,
-.I alt
-returns the index of the terminating
-.B CHANNOBLK
-structure.
-Otherwise,
-.I alt
-blocks until one of the operations can proceed,
-eventually returning the index of the structure executes.
-.I Alt
-returns \-1 when interrupted.
-The
-.B tag
-and
-.B entryno
-fields in the
-.B Alt
-structure are used internally by
-.I alt
-and need not be initialized.
-They are not used between
-.I alt
-calls.
-.PP
-.I Chanprint
-formats its arguments in the manner of
-.IR print (2)
-and sends the result to the channel
-.IR c.
-The string delivered by
-.I chanprint
-is allocated with
-.IR malloc (2)
-and should be freed upon receipt.
-.PP
-Thread library functions do not return on failure;
-if errors occur, the entire program is aborted.
-.PP
-Threaded programs should use
-.I threadnotify
-in place of
-.I atnotify
-(see
-.IR notify (2)).
-.PP
-It is safe to use
-.B sysfatal
-(see
-.IR perror (2))
-in threaded programs.
-.I Sysfatal
-will print the error string and call
-.IR threadexitsall .
-.PP
-It is safe to use
-.IR rfork
-(see
-.IR fork (2))
-to manage the namespace, file descriptors, note group, and environment of a
-single process.
-That is, it is safe to call
-.I rfork
-with the flags
-.BR RFNAMEG ,
-.BR RFFDG ,
-.BR RFCFDG ,
-.BR RFNOTEG ,
-.BR RFENVG ,
-and
-.BR RFCENVG.
-(To create new processes, use
-.I proccreate
-and
-.IR procrfork .)
-As mentioned above,
-the thread library depends on all procs being in the
-same rendezvous group; do not change the rendezvous
-group with
-.IR rfork .
-.SH FILES
-.B /sys/lib/acid/thread
-contains useful
-.IR acid (1)
-functions for debugging threaded programs.
-.PP
-.B /sys/src/libthread/example.c
-contains a full example program.
-.SH SOURCE
-.B /sys/src/libthread
-.SH SEE ALSO
-.IR intro (2),
-.IR ioproc (2) |
| diff --git a/src/libthread/thread.h b/src/libthread/thread.h |
| t@@ -1,132 +0,0 @@
-#ifndef _THREADH_
-#define _THREADH_ 1
-
-/* avoid conflicts with socket library */
-#undef send
-#define send _threadsend
-#undef recv
-#define recv _threadrecv
-
-typedef struct Alt Alt;
-typedef struct Channel Channel;
-typedef struct Ref Ref;
-
-/* Channel structure. S is the size of the buffer. For unbuffered channels
- * s is zero. v is an array of s values. If s is zero, v is unused.
- * f and n represent the state of the queue pointed to by v.
- */
-
-enum {
- Nqwds = 2,
- Nqshift = 5, // 2log #of bits in long
- Nqmask = - 1,
- Nqbits = (1 << Nqshift) * 2,
-};
-
-struct Channel {
- int s; // Size of the channel (may be zero)
- unsigned int f; // Extraction point (insertion pt: (f + n) % s)
- unsigned int n; // Number of values in the channel
- int e; // Element size
- int freed; // Set when channel is being deleted
- volatile Alt **qentry; // Receivers/senders waiting (malloc)
- volatile int nentry; // # of entries malloc-ed
- unsigned char v[1]; // Array of s values in the channel
-};
-
-
-/* Channel operations for alt: */
-typedef enum {
- CHANEND,
- CHANSND,
- CHANRCV,
- CHANNOP,
- CHANNOBLK,
-} ChanOp;
-
-struct Alt {
- Channel *c; /* channel */
- void *v; /* pointer to value */
- ChanOp op; /* operation */
-
- /* the next variables are used internally to alt
- * they need not be initialized
- */
- Channel **tag; /* pointer to rendez-vous tag */
- int entryno; /* entry number */
-};
-
-struct Ref {
- long ref;
-};
-
-int alt(Alt alts[]);
-Channel* chancreate(int elemsize, int bufsize);
-int chaninit(Channel *c, int elemsize, int elemcnt);
-void chanfree(Channel *c);
-int chanprint(Channel *, char *, ...);
-long decref(Ref *r); /* returns 0 iff value is now zero */
-void incref(Ref *r);
-int nbrecv(Channel *c, void *v);
-void* nbrecvp(Channel *c);
-unsigned long nbrecvul(Channel *c);
-int nbsend(Channel *c, void *v);
-int nbsendp(Channel *c, void *v);
-int nbsendul(Channel *c, unsigned long v);
-int proccreate(void (*f)(void *arg), void *arg, unsigned int stacksize);
-int procrfork(void (*f)(void *arg), void *arg, unsigned int stacksize, int flag);
-void** procdata(void);
-void procexec(Channel *, char *, char *[]);
-void procexecl(Channel *, char *, ...);
-int recv(Channel *c, void *v);
-void* recvp(Channel *c);
-unsigned long recvul(Channel *c);
-int send(Channel *c, void *v);
-int sendp(Channel *c, void *v);
-int sendul(Channel *c, unsigned long v);
-int threadcreate(void (*f)(void *arg), void *arg, unsigned int stacksize);
-void** threaddata(void);
-void threadexits(char *);
-void threadexitsall(char *);
-int threadgetgrp(void); /* return thread group of current thread */
-char* threadgetname(void);
-void threadint(int); /* interrupt thread */
-void threadintgrp(int); /* interrupt threads in grp */
-void threadkill(int); /* kill thread */
-void threadkillgrp(int); /* kill threads in group */
-void threadmain(int argc, char *argv[]);
-void threadnonotes(void);
-int threadnotify(int (*f)(void*, char*), int in);
-int threadid(void);
-int threadpid(int);
-int threadsetgrp(int); /* set thread group, return old */
-void threadsetname(char *name);
-Channel* threadwaitchan(void);
-int tprivalloc(void);
-void tprivfree(int);
-void **tprivaddr(int);
-void yield(void);
-
-long threadstack(void);
-
-extern int mainstacksize;
-
-/* slave I/O processes */
-typedef struct Ioproc Ioproc;
-
-Ioproc* ioproc(void);
-void closeioproc(Ioproc*);
-void iointerrupt(Ioproc*);
-
-int ioclose(Ioproc*, int);
-int iodial(Ioproc*, char*, char*, char*, int*);
-int ioopen(Ioproc*, char*, int);
-long ioread(Ioproc*, int, void*, long);
-long ioreadn(Ioproc*, int, void*, long);
-long iowrite(Ioproc*, int, void*, long);
-int iosleep(Ioproc*, long);
-
-long iocall(Ioproc*, long (*)(va_list*), ...);
-void ioret(Ioproc*, int);
-
-#endif /* _THREADH_ */ |
| diff --git a/src/libthread/tprimes b/src/libthread/tprimes |
| Binary files differ. |
| diff --git a/src/libutf/Make.Darwin-PowerMacintosh b/src/libutf/Make.Darwin-PowerMacintosh |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I${PREFIX}/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.FreeBSD-386 b/src/libutf/Make.FreeBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.HP-UX-9000 b/src/libutf/Make.HP-UX-9000 |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS=-O -c -Ae -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.Linux-386 b/src/libutf/Make.Linux-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.NetBSD-386 b/src/libutf/Make.NetBSD-386 |
| t@@ -1,7 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. -I$(PREFIX)/include
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O # default, can be overriden by Make.$(SYSNAME)
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.OSF1-alpha b/src/libutf/Make.OSF1-alpha |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I.
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.SunOS-sun4u b/src/libutf/Make.SunOS-sun4u |
| t@@ -1,2 +0,0 @@
-include Make.SunOS-sun4u-$(CC)
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.SunOS-sun4u-cc b/src/libutf/Make.SunOS-sun4u-cc |
| t@@ -1,6 +0,0 @@
-CC=cc
-CFLAGS+=-g -c -I. -O
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libutf/Make.SunOS-sun4u-gcc b/src/libutf/Make.SunOS-sun4u-gcc |
| t@@ -1,6 +0,0 @@
-CC=gcc
-CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c
-O=o
-AR=ar
-ARFLAGS=rvc
-NAN=nan64.$O |
| diff --git a/src/libutf/Makefile b/src/libutf/Makefile |
| t@@ -1,27 +1,7 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
+9SRC=..
+include $(9SRC)/Makehdr
LIB=libutf.a
-VERSION=2.0
-PORTPLACE=devel/libutf
-NAME=libutf
OFILES=\
rune.$O\
t@@ -46,67 +26,6 @@ OFILES=\
utfutf.$O\
HFILES=\
- utf.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -c -m 0644 isalpharune.3 $(PREFIX)/man/man3/isalpharune.3
- install -c -m 0644 utf.7 $(PREFIX)/man/man7/utf.7
- install -c -m 0644 rune.3 $(PREFIX)/man/man3/rune.3
- install -c -m 0644 runestrcat.3 $(PREFIX)/man/man3/runestrcat.3
- install -c -m 0644 utf.h $(PREFIX)/include/utf.h
- install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
-
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB)
-.c.$O:
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
+ $(9SRC)/include/utf.h\
-.phony: all clean nuke install tgz rpm ports
+include $(9SRC)/Makesyslib |
| diff --git a/src/libutf/Makefile.BOT b/src/libutf/Makefile.BOT |
| t@@ -1,47 +0,0 @@
-.c.$O:
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-%.$O: %.c
- $(CC) $(CFLAGS) -I/usr/X11R6/include -I../sam -I$(PREFIX)/include $*.c
-
-
-$(OFILES): $(HFILES)
-
-tgz:
- rm -rf $(NAME)-$(VERSION)
- mkdir $(NAME)-$(VERSION)
- cp Makefile Make.* README LICENSE NOTICE *.[ch137] rpm.spec bundle.ports $(TGZFILES) $(NAME)-$(VERSION)
- tar cf - $(NAME)-$(VERSION) | gzip >$(NAME)-$(VERSION).tgz
- rm -rf $(NAME)-$(VERSION)
-
-clean:
- rm -f $(OFILES) $(LIB)
-
-nuke:
- rm -f $(OFILES) *.tgz *.rpm $(NUKEFILES)
-
-rpm:
- make tgz
- cp $(NAME)-$(VERSION).tgz /usr/src/RPM/SOURCES
- rpm -ba rpm.spec
- cp /usr/src/RPM/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
- cp /usr/src/RPM/RPMS/i586/$(NAME)-$(VERSION)-1.i586.rpm .
- scp *.rpm rsc@amsterdam.lcs.mit.edu:public_html/software
-
-PORTDIR=/usr/ports/$(PORTPLACE)
-
-ports:
- make tgz
- rm -rf $(PORTDIR)
- mkdir $(PORTDIR)
- cp $(NAME)-$(VERSION).tgz /usr/ports/distfiles
- cat bundle.ports | (cd $(PORTDIR) && awk '$$1=="---" && $$3=="---" { ofile=$$2; next} {if(ofile) print >ofile}')
- (cd $(PORTDIR); make makesum)
- (cd $(PORTDIR); make)
- (cd $(PORTDIR); /usr/local/bin/portlint)
- rm -rf $(PORTDIR)/work
- shar `find $(PORTDIR)` > ports.shar
- (cd $(PORTDIR); tar cf - *) | gzip >$(NAME)-$(VERSION)-ports.tgz
- scp *.tgz rsc@amsterdam.lcs.mit.edu:public_html/software
-
-.phony: all clean nuke install tgz rpm ports |
| diff --git a/src/libutf/Makefile.CMD b/src/libutf/Makefile.CMD |
| t@@ -1,5 +0,0 @@
-
-$(TARG): $(OFILES)
- $(CC) -o $(TARG) $(OFILES) -L$(PREFIX)/lib -lframe -ldraw -lthread -l9 -lregexp9 -lbio -lfmt -lutf -L/usr/X11R6/lib -lX11 -lm
-
- |
| diff --git a/src/libutf/Makefile.LIB b/src/libutf/Makefile.LIB |
| t@@ -1,4 +0,0 @@
-$(LIB): $(OFILES)
- $(AR) $(ARFLAGS) $(LIB) $(OFILES)
-
-NUKEFILES+=$(LIB) |
| diff --git a/src/libutf/Makefile.MID b/src/libutf/Makefile.MID |
| t@@ -1,41 +0,0 @@
-LIB=libutf.a
-VERSION=2.0
-PORTPLACE=devel/libutf
-NAME=libutf
-
-OFILES=\
- rune.$O\
- runestrcat.$O\
- runestrchr.$O\
- runestrcmp.$O\
- runestrcpy.$O\
- runestrdup.$O\
- runestrlen.$O\
- runestrecpy.$O\
- runestrncat.$O\
- runestrncmp.$O\
- runestrncpy.$O\
- runestrrchr.$O\
- runestrstr.$O\
- runetype.$O\
- utfecpy.$O\
- utflen.$O\
- utfnlen.$O\
- utfrrune.$O\
- utfrune.$O\
- utfutf.$O\
-
-HFILES=\
- utf.h\
-
-all: $(LIB)
-
-install: $(LIB)
- test -d $(PREFIX)/man/man3 || mkdir $(PREFIX)/man/man3
- install -c -m 0644 isalpharune.3 $(PREFIX)/man/man3/isalpharune.3
- install -c -m 0644 utf.7 $(PREFIX)/man/man7/utf.7
- install -c -m 0644 rune.3 $(PREFIX)/man/man3/rune.3
- install -c -m 0644 runestrcat.3 $(PREFIX)/man/man3/runestrcat.3
- install -c -m 0644 utf.h $(PREFIX)/include/utf.h
- install -c -m 0644 $(LIB) $(PREFIX)/lib/$(LIB)
- |
| diff --git a/src/libutf/Makefile.TOP b/src/libutf/Makefile.TOP |
| t@@ -1,20 +0,0 @@
-
-# this works in gnu make
-SYSNAME:=${shell uname}
-OBJTYPE:=${shell uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'}
-
-# this works in bsd make
-SYSNAME!=uname
-OBJTYPE!=uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'
-
-# the gnu rules will mess up bsd but not vice versa,
-# hence the gnu rules come first.
-
-include Make.$(SYSNAME)-$(OBJTYPE)
-
-PREFIX=/usr/local
-
-NUKEFILES=
-
-TGZFILES=
- |
| diff --git a/src/libutf/bundle.ports b/src/libutf/bundle.ports |
| t@@ -1,43 +0,0 @@
---- Makefile ---
-# New ports collection makefile for: libutf
-# Date Created: 11 Feb 2003
-# Whom: rsc
-#
-# THIS LINE NEEDS REPLACING. IT'S HERE TO GET BY PORTLINT
-# $FreeBSD: ports/devel/libfmt/Makefile,v 1.1 2003/02/12 00:51:22 rsc Exp $
-
-PORTNAME= libutf
-PORTVERSION= 2.0
-CATEGORIES= devel
-MASTER_SITES= http://pdos.lcs.mit.edu/~rsc/software/
-EXTRACT_SUFX= .tgz
-
-MAINTAINER= rsc@post.harvard.edu
-
-MAN3= rune.3 runestrcat.3 isalpharune.3
-MAN7= utf.7
-
-USE_REINPLACE=yes
-
-.include
-
-post-patch:
- ${REINPLACE_CMD} -e 's,$$(PREFIX),${PREFIX},g' ${WRKSRC}/Makefile
-
-.include
---- pkg-comment ---
-UTF8 support library from Plan 9
---- pkg-descr ---
-UTF8 support library from Plan 9.
-
-WWW: http://pdos.lcs.mit.edu/~rsc/software/#libutf
-http://plan9.bell-labs.com/magic/man2html/3/rune
-
-Russ Cox
-rsc@post.harvard.edu
---- pkg-plist ---
-lib/libutf.a
-include/utf.h
---- /dev/null ---
-This is just a way to make sure blank lines don't
-creep into pkg-plist. |
| diff --git a/src/libutf/isalpharune.3 b/src/libutf/isalpharune.3 |
| t@@ -1,47 +0,0 @@
-.TH ISALPHARUNE 3
-.SH NAME
-isalpharune, islowerrune, isspacerune, istitlerune, isupperrune, tolowerrune, totitlerune, toupperrune \- Unicode character classes and cases
-.SH SYNOPSIS
-.B #include
-.PP
-.B
-int isalpharune(Rune c)
-.PP
-.B
-int islowerrune(Rune c)
-.PP
-.B
-int isspacerune(Rune c)
-.PP
-.B
-int istitlerune(Rune c)
-.PP
-.B
-int isupperrune(Rune c)
-.PP
-.B
-Rune tolowerrune(Rune c)
-.PP
-.B
-Rune totitlerune(Rune c)
-.PP
-.B
-Rune toupperrune(Rune c)
-.SH DESCRIPTION
-These routines examine and operate on Unicode characters,
-in particular a subset of their properties as defined in the Unicode standard.
-Unicode defines some characters as alphabetic and specifies three cases:
-upper, lower, and title.
-Analogously to
-.IR ctype (3)
-for
-.SM ASCII\c
-,
-these routines
-test types and modify cases for Unicode characters.
-The names are self-explanatory.
-.PP
-The case-conversion routines return the character unchanged if it has no case.
-.SH "SEE ALSO
-.IR ctype (3) ,
-.IR "The Unicode Standard" . |
| diff --git a/src/libutf/mkfile b/src/libutf/mkfile |
| t@@ -1,9 +0,0 @@
-all:V: Makefile Make.FreeBSD-386 Make.Linux-386 Make.NetBSD-386 Make.HP-UX-9000 Make.OSF1-alpha \
- Make.SunOS-sun4u Make.SunOS-sun4u-cc Make.SunOS-sun4u-gcc \
- Make.Darwin-PowerMacintosh
-
-Makefile:D: ../libutf/Makefile.TOP Makefile.MID ../libutf/Makefile.LIB ../libutf/Makefile.BOT
- cat $prereq >$target
-
-Make.%: ../libutf/Make.%
- cp $prereq $target |
| diff --git a/src/libutf/rpm.spec b/src/libutf/rpm.spec |
| t@@ -1,28 +0,0 @@
-Summary: Port of Plan 9's UTF8 support functions
-Name: libutf
-Version: 2.0
-Release: 1
-Group: Development/C
-Copyright: Public Domain
-Packager: Russ Cox
-Source: http://pdos.lcs.mit.edu/~rsc/software/libutf-2.0.tgz
-URL: http://pdos.lcs.mit.edu/~rsc/software/#libutf
-
-%description
-Libutf is a port of Plan 9's UTF8 support functions.
-%prep
-%setup
-
-%build
-make
-
-%install
-make install
-
-%files
-/usr/local/include/utf.h
-/usr/local/lib/libutf.a
-/usr/local/man/man3/runestrcat.3
-/usr/local/man/man3/isalpharune.3
-/usr/local/man/man3/rune.3
-/usr/local/man/man7/utf.7 |
| diff --git a/src/libutf/rune.3 b/src/libutf/rune.3 |
| t@@ -1,187 +0,0 @@
-.TH RUNE 3
-.SH NAME
-runetochar, chartorune, runelen, runenlen, fullrune, utfecpy, utflen, utfnlen, utfrune, utfrrune, utfutf \- rune/UTF conversion
-.SH SYNOPSIS
-.ta \w'\fLchar*xx'u
-.B #include
-.PP
-.B
-int runetochar(char *s, Rune *r)
-.PP
-.B
-int chartorune(Rune *r, char *s)
-.PP
-.B
-int runelen(long r)
-.PP
-.B
-int runenlen(Rune *r, int n)
-.PP
-.B
-int fullrune(char *s, int n)
-.PP
-.B
-char* utfecpy(char *s1, char *es1, char *s2)
-.PP
-.B
-int utflen(char *s)
-.PP
-.B
-int utfnlen(char *s, long n)
-.PP
-.B
-char* utfrune(char *s, long c)
-.PP
-.B
-char* utfrrune(char *s, long c)
-.PP
-.B
-char* utfutf(char *s1, char *s2)
-.SH DESCRIPTION
-These routines convert to and from a
-.SM UTF
-byte stream and runes.
-.PP
-.I Runetochar
-copies one rune at
-.I r
-to at most
-.B UTFmax
-bytes starting at
-.I s
-and returns the number of bytes copied.
-.BR UTFmax ,
-defined as
-.B 3
-in
-.BR ,
-is the maximum number of bytes required to represent a rune.
-.PP
-.I Chartorune
-copies at most
-.B UTFmax
-bytes starting at
-.I s
-to one rune at
-.I r
-and returns the number of bytes copied.
-If the input is not exactly in
-.SM UTF
-format,
-.I chartorune
-will convert to 0x80 and return 1.
-.PP
-.I Runelen
-returns the number of bytes
-required to convert
-.I r
-into
-.SM UTF.
-.PP
-.I Runenlen
-returns the number of bytes
-required to convert the
-.I n
-runes pointed to by
-.I r
-into
-.SM UTF.
-.PP
-.I Fullrune
-returns 1 if the string
-.I s
-of length
-.I n
-is long enough to be decoded by
-.I chartorune
-and 0 otherwise.
-This does not guarantee that the string
-contains a legal
-.SM UTF
-encoding.
-This routine is used by programs that
-obtain input a byte at
-a time and need to know when a full rune
-has arrived.
-.PP
-The following routines are analogous to the
-corresponding string routines with
-.B utf
-substituted for
-.B str
-and
-.B rune
-substituted for
-.BR chr .
-.PP
-.I Utfecpy
-copies UTF sequences until a null sequence has been copied, but writes no
-sequences beyond
-.IR es1 .
-If any sequences are copied,
-.I s1
-is terminated by a null sequence, and a pointer to that sequence is returned.
-Otherwise, the original
-.I s1
-is returned.
-.PP
-.I Utflen
-returns the number of runes that
-are represented by the
-.SM UTF
-string
-.IR s .
-.PP
-.I Utfnlen
-returns the number of complete runes that
-are represented by the first
-.I n
-bytes of
-.SM UTF
-string
-.IR s .
-If the last few bytes of the string contain an incompletely coded rune,
-.I utfnlen
-will not count them; in this way, it differs from
-.IR utflen ,
-which includes every byte of the string.
-.PP
-.I Utfrune
-.RI ( utfrrune )
-returns a pointer to the first (last)
-occurrence of rune
-.I c
-in the
-.SM UTF
-string
-.IR s ,
-or 0 if
-.I c
-does not occur in the string.
-The NUL byte terminating a string is considered to
-be part of the string
-.IR s .
-.PP
-.I Utfutf
-returns a pointer to the first occurrence of
-the
-.SM UTF
-string
-.I s2
-as a
-.SM UTF
-substring of
-.IR s1 ,
-or 0 if there is none.
-If
-.I s2
-is the null string,
-.I utfutf
-returns
-.IR s1 .
-.SH HISTORY
-These routines were written by Rob Pike and Ken Thompson
-and first appeared in Plan 9.
-.SH SEE ALSO
-.IR utf (7),
-.IR tcs (1) |
| diff --git a/src/libutf/runestrcat.3 b/src/libutf/runestrcat.3 |
| t@@ -1,65 +0,0 @@
-.TH RUNESTRCAT 3
-.SH NAME
-runestrcat,
-runestrncat,
-runestrcmp,
-runestrncmp,
-runestrcpy,
-runestrncpy,
-runestrecpy,
-runestrlen,
-runestrchr,
-runestrrchr,
-runestrdup,
-runestrstr \- rune string operations
-.SH SYNOPSIS
-.B #include
-.PP
-.ta \w'\fLRune* \fP'u
-.B
-Rune* runestrcat(Rune *s1, Rune *s2)
-.PP
-.B
-Rune* runestrncat(Rune *s1, Rune *s2, long n)
-.PP
-.B
-int runestrcmp(Rune *s1, Rune *s2)
-.PP
-.B
-int runestrncmp(Rune *s1, Rune *s2, long n)
-.PP
-.B
-Rune* runestrcpy(Rune *s1, Rune *s2)
-.PP
-.B
-Rune* runestrncpy(Rune *s1, Rune *s2, long n)
-.PP
-.B
-Rune* runestrecpy(Rune *s1, Rune *es1, Rune *s2)
-.PP
-.B
-long runestrlen(Rune *s)
-.PP
-.B
-Rune* runestrchr(Rune *s, Rune c)
-.PP
-.B
-Rune* runestrrchr(Rune *s, Rune c)
-.PP
-.B
-Rune* runestrdup(Rune *s)
-.PP
-.B
-Rune* runestrstr(Rune *s1, Rune *s2)
-.SH DESCRIPTION
-These functions are rune string analogues of
-the corresponding functions in
-.IR strcat (3).
-.SH HISTORY
-These routines first appeared in Plan 9.
-.SH SEE ALSO
-.IR memmove (3),
-.IR rune (3),
-.IR strcat (2)
-.SH BUGS
-The outcome of overlapping moves varies among implementations. |
| diff --git a/src/libutf/utf.7 b/src/libutf/utf.7 |
| t@@ -1,91 +0,0 @@
-.TH UTF 7
-.SH NAME
-UTF, Unicode, ASCII, rune \- character set and format
-.SH DESCRIPTION
-The Plan 9 character set and representation are
-based on the Unicode Standard and on the ISO multibyte
-.SM UTF-8
-encoding (Universal Character
-Set Transformation Format, 8 bits wide).
-The Unicode Standard represents its characters in 16
-bits;
-.SM UTF-8
-represents such
-values in an 8-bit byte stream.
-Throughout this manual,
-.SM UTF-8
-is shortened to
-.SM UTF.
-.PP
-In Plan 9, a
-.I rune
-is a 16-bit quantity representing a Unicode character.
-Internally, programs may store characters as runes.
-However, any external manifestation of textual information,
-in files or at the interface between programs, uses a
-machine-independent, byte-stream encoding called
-.SM UTF.
-.PP
-.SM UTF
-is designed so the 7-bit
-.SM ASCII
-set (values hexadecimal 00 to 7F),
-appear only as themselves
-in the encoding.
-Runes with values above 7F appear as sequences of two or more
-bytes with values only from 80 to FF.
-.PP
-The
-.SM UTF
-encoding of the Unicode Standard is backward compatible with
-.SM ASCII\c
-:
-programs presented only with
-.SM ASCII
-work on Plan 9
-even if not written to deal with
-.SM UTF,
-as do
-programs that deal with uninterpreted byte streams.
-However, programs that perform semantic processing on
-.SM ASCII
-graphic
-characters must convert from
-.SM UTF
-to runes
-in order to work properly with non-\c
-.SM ASCII
-input.
-See
-.IR rune (2).
-.PP
-Letting numbers be binary,
-a rune x is converted to a multibyte
-.SM UTF
-sequence
-as follows:
-.PP
-01. x in [00000000.0bbbbbbb] → 0bbbbbbb
-.br
-10. x in [00000bbb.bbbbbbbb] → 110bbbbb, 10bbbbbb
-.br
-11. x in [bbbbbbbb.bbbbbbbb] → 1110bbbb, 10bbbbbb, 10bbbbbb
-.br
-.PP
-Conversion 01 provides a one-byte sequence that spans the
-.SM ASCII
-character set in a compatible way.
-Conversions 10 and 11 represent higher-valued characters
-as sequences of two or three bytes with the high bit set.
-Plan 9 does not support the 4, 5, and 6 byte sequences proposed by X-Open.
-When there are multiple ways to encode a value, for example rune 0,
-the shortest encoding is used.
-.PP
-In the inverse mapping,
-any sequence except those described above
-is incorrect and is converted to rune hexadecimal 0080.
-.SH "SEE ALSO"
-.IR ascii (1),
-.IR tcs (1),
-.IR rune (3),
-.IR "The Unicode Standard" . |
| diff --git a/src/libutf/utf.h b/src/libutf/utf.h |
| t@@ -1,51 +0,0 @@
-#ifndef _UTFH_
-#define _UTFH_ 1
-
-typedef unsigned short Rune; /* 16 bits */
-
-enum
-{
- UTFmax = 3, /* maximum bytes per rune */
- Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */
- Runeself = 0x80, /* rune and UTF sequences are the same (<) */
- Runeerror = 0x80, /* decoding error in UTF */
-};
-
-/*
- * rune routines
- */
-extern int runetochar(char*, Rune*);
-extern int chartorune(Rune*, char*);
-extern int runelen(long);
-extern int runenlen(Rune*, int);
-extern int fullrune(char*, int);
-extern int utflen(char*);
-extern int utfnlen(char*, long);
-extern char* utfrune(char*, long);
-extern char* utfrrune(char*, long);
-extern char* utfutf(char*, char*);
-extern char* utfecpy(char*, char*, char*);
-
-extern Rune* runestrcat(Rune*, Rune*);
-extern Rune* runestrchr(Rune*, Rune);
-extern int runestrcmp(Rune*, Rune*);
-extern Rune* runestrcpy(Rune*, Rune*);
-extern Rune* runestrncpy(Rune*, Rune*, long);
-extern Rune* runestrecpy(Rune*, Rune*, Rune*);
-extern Rune* runestrdup(Rune*);
-extern Rune* runestrncat(Rune*, Rune*, long);
-extern int runestrncmp(Rune*, Rune*, long);
-extern Rune* runestrrchr(Rune*, Rune);
-extern long runestrlen(Rune*);
-extern Rune* runestrstr(Rune*, Rune*);
-
-extern Rune tolowerrune(Rune);
-extern Rune totitlerune(Rune);
-extern Rune toupperrune(Rune);
-extern int isalpharune(Rune);
-extern int islowerrune(Rune);
-extern int isspacerune(Rune);
-extern int istitlerune(Rune);
-extern int isupperrune(Rune);
-
-#endif |