From 2a317ca25fa5ec1b0ac221043d2c1164c4ecba72 Mon Sep 17 00:00:00 2001 From: Andy Valencia Date: Wed, 10 Mar 1993 00:00:00 +0000 Subject: [PATCH] Adds fixed up /usr/src/share This patch adds many manual pages to /usr/src/share, including the new manual pages for bpf, pcfs and spkr. And most of the other parts of /usr/src/share from the etcdist. A lot of cleanup work went into fixing the etcdist stuff when it was moved. A revised set of /usr/src/share/mk files is included that fixes things like support for c++ files in make depend, make cleandir now removes .depend, tags and the obj link/dir. Added missing bsd.own.mk. Added COPY option to all install commands so you can turn one nob and get either install -c or install. Fixed the manual page for tp.4, it had a \(*e (epsilon) character request that mandoc did not grock, so I replaced it with the word epsilon. Rodney Grimes about Andy Valencia's fix: This is a patch based upon Andy Valencia's patch to /usr/othersrc/share/man/makewhatis.sed. It REALLY fixes man -k. NOTE: This patch upgraded at patchkit 0.2.3 to fix usr.share vs share and add much more of /usr/src/share. Still did not move dict, doc and misc as they are rather large. NOTE: Some of these man pages are seriously out of date and need to be rewritten. Also there are no device manual pages for the i386 architecture. There are many man pages for the vax, tahoe and hp300 that could be edited into man pages for the i386, such as autoconf(8). I did not include any of the other architectures in this patch, only the i386 files. AUTHOR: Andy Valencia (ajv@csd.mot.com) (makewhatis.sed fixes) AUTHOR: Rodney W. Grimes (rgrimes@agora.rain.com) (all other fixes) 386BSD-Patchkit: patch00101 --- usr/src/share/Makefile | 7 + usr/src/share/Makefile.inc | 3 + usr/src/share/man/Makefile | 18 + usr/src/share/man/makewhatis.sed | 63 + usr/src/share/man/man0/COPYRIGHT | 68 + usr/src/share/man/man1/Makefile | 5 + usr/src/share/man/man1/intro.1 | 74 + usr/src/share/man/man3/Makefile | 6 + usr/src/share/man/man3/assert.3 | 86 + usr/src/share/man/man3/bitstring.3 | 180 + usr/src/share/man/man3/end.3 | 66 + usr/src/share/man/man3/intro.3 | 162 + usr/src/share/man/man3/stdarg.3 | 205 ++ usr/src/share/man/man4/Makefile | 11 + usr/src/share/man/man4/bpf.4 | 685 ++++ usr/src/share/man/man4/clnp.4 | 172 + usr/src/share/man/man4/cltp.4 | 132 + usr/src/share/man/man4/drum.4 | 59 + usr/src/share/man/man4/esis.4 | 220 ++ usr/src/share/man/man4/fd.4 | 96 + usr/src/share/man/man4/icmp.4 | 117 + usr/src/share/man/man4/idp.4 | 185 + usr/src/share/man/man4/imp.4 | 109 + usr/src/share/man/man4/inet.4 | 183 + usr/src/share/man/man4/ip.4 | 173 + usr/src/share/man/man4/iso.4 | 191 + usr/src/share/man/man4/kadb.4 | 123 + usr/src/share/man/man4/lo.4 | 81 + usr/src/share/man/man4/man4.i386/Makefile | 7 + usr/src/share/man/man4/man4.i386/mem.4 | 82 + usr/src/share/man/man4/man4.i386/spkr.4 | 117 + usr/src/share/man/man4/netintro.4 | 335 ++ usr/src/share/man/man4/ns.4 | 179 + usr/src/share/man/man4/nsip.4 | 128 + usr/src/share/man/man4/null.4 | 56 + usr/src/share/man/man4/pty.4 | 212 ++ usr/src/share/man/man4/route.4 | 266 ++ usr/src/share/man/man4/spp.4 | 191 + usr/src/share/man/man4/tcp.4 | 178 + usr/src/share/man/man4/tp.4 | 727 ++++ usr/src/share/man/man4/udp.4 | 137 + usr/src/share/man/man4/unix.4 | 168 + usr/src/share/man/man5/Makefile | 9 + usr/src/share/man/man5/a.out.5 | 396 ++ usr/src/share/man/man5/acct.5 | 110 + usr/src/share/man/man5/core.5 | 111 + usr/src/share/man/man5/dir.5 | 151 + usr/src/share/man/man5/disktab.5 | 142 + usr/src/share/man/man5/fs.5 | 342 ++ usr/src/share/man/man5/fstab.5 | 226 ++ usr/src/share/man/man5/group.5 | 123 + usr/src/share/man/man5/hosts.5 | 109 + usr/src/share/man/man5/networks.5 | 88 + usr/src/share/man/man5/passwd.5 | 169 + usr/src/share/man/man5/pcfs.5 | 114 + usr/src/share/man/man5/phones.5 | 76 + usr/src/share/man/man5/printcap.5 | 288 ++ usr/src/share/man/man5/protocols.5 | 77 + usr/src/share/man/man5/remote.5 | 200 + usr/src/share/man/man5/resolver.5 | 142 + usr/src/share/man/man5/services.5 | 85 + usr/src/share/man/man5/shells.5 | 65 + usr/src/share/man/man5/stab.5 | 222 ++ usr/src/share/man/man5/types.5 | 147 + usr/src/share/man/man5/utmp.5 | 218 ++ usr/src/share/man/man7/Makefile | 9 + usr/src/share/man/man7/ascii.7 | 116 + usr/src/share/man/man7/environ.7 | 150 + usr/src/share/man/man7/hier.7 | 389 ++ usr/src/share/man/man7/hostname.7 | 92 + usr/src/share/man/man7/intro.7 | 60 + usr/src/share/man/man7/mailaddr.7 | 160 + usr/src/share/man/man7/mdoc.samples.7 | 2268 ++++++++++++ usr/src/share/man/man7/operator.7 | 70 + usr/src/share/man/man8/Makefile | 8 + usr/src/share/man/man8/adduser.8 | 115 + usr/src/share/man/man8/intro.8 | 70 + usr/src/share/man/man8/makedev.8 | 110 + usr/src/share/man/man8/man8.i386/MAKEDEV.8 | 105 + usr/src/share/man/man8/man8.i386/Makefile | 6 + usr/src/share/man/man8/rc.8 | 106 + usr/src/share/man/man8/sticky.8 | 101 + usr/src/share/me/Makefile | 25 + usr/src/share/me/acm.me | 87 + usr/src/share/me/chars.me | 94 + usr/src/share/me/deltext.me | 53 + usr/src/share/me/eqn.me | 111 + usr/src/share/me/float.me | 100 + usr/src/share/me/footnote.me | 118 + usr/src/share/me/index.me | 109 + usr/src/share/me/letterhead.me | 99 + usr/src/share/me/local.me | 43 + usr/src/share/me/me.7 | 317 ++ usr/src/share/me/null.me | 39 + usr/src/share/me/refer.me | 129 + usr/src/share/me/revisions | 230 ++ usr/src/share/me/sh.me | 142 + usr/src/share/me/strip.sed | 44 + usr/src/share/me/summary.external | 238 ++ usr/src/share/me/tbl.me | 143 + usr/src/share/me/test/test.accent | 7 + usr/src/share/me/test/test.umlaut | 39 + usr/src/share/me/thesis.me | 53 + usr/src/share/me/tmac.e | 1190 ++++++ usr/src/share/mk/Makefile | 13 + usr/src/share/mk/bsd.README | 306 ++ usr/src/share/mk/bsd.doc.mk | 38 + usr/src/share/mk/bsd.lib.mk | 161 + usr/src/share/mk/bsd.man.mk | 58 + usr/src/share/mk/bsd.own.mk | 14 + usr/src/share/mk/bsd.prog.mk | 188 + usr/src/share/mk/bsd.subdir.mk | 69 + usr/src/share/mk/sys.mk | 95 + usr/src/share/skel/Makefile | 12 + usr/src/share/skel/dot.cshrc | 27 + usr/src/share/skel/dot.login | 15 + usr/src/share/skel/dot.mailrc | 2 + usr/src/share/skel/dot.profile | 2 + usr/src/share/skel/dot.rhosts | 2 + usr/src/share/tabset/3101 | 1 + usr/src/share/tabset/9837 | 1 + usr/src/share/tabset/Makefile | 14 + usr/src/share/tabset/aa | 1 + usr/src/share/tabset/aed512 | 1 + usr/src/share/tabset/beehive | 2 + usr/src/share/tabset/diablo | 3 + usr/src/share/tabset/dtc382 | 1 + usr/src/share/tabset/hp700-wy | Bin 0 -> 105 bytes usr/src/share/tabset/ibm3101 | 1 + usr/src/share/tabset/std | 1 + usr/src/share/tabset/stdcrt | 1 + usr/src/share/tabset/tandem653 | 1 + usr/src/share/tabset/teleray | 1 + usr/src/share/tabset/vt100 | 3 + usr/src/share/tabset/wyse-adds | 3 + usr/src/share/tabset/xerox1720 | 1 + usr/src/share/tabset/xerox1730 | Bin 0 -> 222 bytes usr/src/share/tabset/xerox1730-lm | Bin 0 -> 224 bytes usr/src/share/tabset/zenith29 | 1 + usr/src/share/termcap/Makefile | 26 + usr/src/share/termcap/README | 51 + usr/src/share/termcap/map3270 | 1025 ++++++ usr/src/share/termcap/reorder | 62 + usr/src/share/termcap/tck | 91 + usr/src/share/termcap/termcap.5 | 1845 ++++++++++ usr/src/share/termcap/termcap.src | 3460 ++++++++++++++++++ usr/src/share/tmac/Makefile | 24 + usr/src/share/tmac/README | 177 + usr/src/share/tmac/doc | 3415 +++++++++++++++++ usr/src/share/tmac/doc-common | 449 +++ usr/src/share/tmac/doc-ditroff | 269 ++ usr/src/share/tmac/doc-nroff | 225 ++ usr/src/share/tmac/doc-syms | 234 ++ usr/src/share/tmac/strip.sed | 1 + usr/src/share/tmac/tmac.andoc | 55 + usr/src/share/tmac/tmac.doc.old | 1833 ++++++++++ usr/src/share/zoneinfo/Makefile | 139 + usr/src/share/zoneinfo/datfiles/africa | 43 + usr/src/share/zoneinfo/datfiles/antarctica | 4 + usr/src/share/zoneinfo/datfiles/asia | 262 ++ usr/src/share/zoneinfo/datfiles/australasia | 113 + usr/src/share/zoneinfo/datfiles/etcetera | 55 + usr/src/share/zoneinfo/datfiles/europe | 224 ++ usr/src/share/zoneinfo/datfiles/factory | 8 + usr/src/share/zoneinfo/datfiles/leapseconds | 28 + usr/src/share/zoneinfo/datfiles/northamerica | 321 ++ usr/src/share/zoneinfo/datfiles/pacificnew | 21 + usr/src/share/zoneinfo/datfiles/solar87 | 386 ++ usr/src/share/zoneinfo/datfiles/solar88 | 386 ++ usr/src/share/zoneinfo/datfiles/solar89 | 391 ++ usr/src/share/zoneinfo/datfiles/southamerica | 103 + usr/src/share/zoneinfo/datfiles/systemv | 35 + usr/src/share/zoneinfo/datfiles/usno1988 | 111 + usr/src/share/zoneinfo/datfiles/usno1989 | 452 +++ usr/src/share/zoneinfo/ialloc.c | 140 + usr/src/share/zoneinfo/scheck.c | 99 + usr/src/share/zoneinfo/tzfile.5 | 160 + usr/src/share/zoneinfo/zic.8 | 424 +++ usr/src/share/zoneinfo/zic.c | 1894 ++++++++++ 179 files changed, 37298 insertions(+) create mode 100644 usr/src/share/Makefile create mode 100644 usr/src/share/Makefile.inc create mode 100644 usr/src/share/man/Makefile create mode 100644 usr/src/share/man/makewhatis.sed create mode 100644 usr/src/share/man/man0/COPYRIGHT create mode 100644 usr/src/share/man/man1/Makefile create mode 100644 usr/src/share/man/man1/intro.1 create mode 100644 usr/src/share/man/man3/Makefile create mode 100644 usr/src/share/man/man3/assert.3 create mode 100644 usr/src/share/man/man3/bitstring.3 create mode 100644 usr/src/share/man/man3/end.3 create mode 100644 usr/src/share/man/man3/intro.3 create mode 100644 usr/src/share/man/man3/stdarg.3 create mode 100644 usr/src/share/man/man4/Makefile create mode 100644 usr/src/share/man/man4/bpf.4 create mode 100644 usr/src/share/man/man4/clnp.4 create mode 100644 usr/src/share/man/man4/cltp.4 create mode 100644 usr/src/share/man/man4/drum.4 create mode 100644 usr/src/share/man/man4/esis.4 create mode 100644 usr/src/share/man/man4/fd.4 create mode 100644 usr/src/share/man/man4/icmp.4 create mode 100644 usr/src/share/man/man4/idp.4 create mode 100644 usr/src/share/man/man4/imp.4 create mode 100644 usr/src/share/man/man4/inet.4 create mode 100644 usr/src/share/man/man4/ip.4 create mode 100644 usr/src/share/man/man4/iso.4 create mode 100644 usr/src/share/man/man4/kadb.4 create mode 100644 usr/src/share/man/man4/lo.4 create mode 100644 usr/src/share/man/man4/man4.i386/Makefile create mode 100644 usr/src/share/man/man4/man4.i386/mem.4 create mode 100644 usr/src/share/man/man4/man4.i386/spkr.4 create mode 100644 usr/src/share/man/man4/netintro.4 create mode 100644 usr/src/share/man/man4/ns.4 create mode 100644 usr/src/share/man/man4/nsip.4 create mode 100644 usr/src/share/man/man4/null.4 create mode 100644 usr/src/share/man/man4/pty.4 create mode 100644 usr/src/share/man/man4/route.4 create mode 100644 usr/src/share/man/man4/spp.4 create mode 100644 usr/src/share/man/man4/tcp.4 create mode 100644 usr/src/share/man/man4/tp.4 create mode 100644 usr/src/share/man/man4/udp.4 create mode 100644 usr/src/share/man/man4/unix.4 create mode 100644 usr/src/share/man/man5/Makefile create mode 100644 usr/src/share/man/man5/a.out.5 create mode 100644 usr/src/share/man/man5/acct.5 create mode 100644 usr/src/share/man/man5/core.5 create mode 100644 usr/src/share/man/man5/dir.5 create mode 100644 usr/src/share/man/man5/disktab.5 create mode 100644 usr/src/share/man/man5/fs.5 create mode 100644 usr/src/share/man/man5/fstab.5 create mode 100644 usr/src/share/man/man5/group.5 create mode 100644 usr/src/share/man/man5/hosts.5 create mode 100644 usr/src/share/man/man5/networks.5 create mode 100644 usr/src/share/man/man5/passwd.5 create mode 100644 usr/src/share/man/man5/pcfs.5 create mode 100644 usr/src/share/man/man5/phones.5 create mode 100644 usr/src/share/man/man5/printcap.5 create mode 100644 usr/src/share/man/man5/protocols.5 create mode 100644 usr/src/share/man/man5/remote.5 create mode 100644 usr/src/share/man/man5/resolver.5 create mode 100644 usr/src/share/man/man5/services.5 create mode 100644 usr/src/share/man/man5/shells.5 create mode 100644 usr/src/share/man/man5/stab.5 create mode 100644 usr/src/share/man/man5/types.5 create mode 100644 usr/src/share/man/man5/utmp.5 create mode 100644 usr/src/share/man/man7/Makefile create mode 100644 usr/src/share/man/man7/ascii.7 create mode 100644 usr/src/share/man/man7/environ.7 create mode 100644 usr/src/share/man/man7/hier.7 create mode 100644 usr/src/share/man/man7/hostname.7 create mode 100644 usr/src/share/man/man7/intro.7 create mode 100644 usr/src/share/man/man7/mailaddr.7 create mode 100644 usr/src/share/man/man7/mdoc.samples.7 create mode 100644 usr/src/share/man/man7/operator.7 create mode 100644 usr/src/share/man/man8/Makefile create mode 100644 usr/src/share/man/man8/adduser.8 create mode 100644 usr/src/share/man/man8/intro.8 create mode 100644 usr/src/share/man/man8/makedev.8 create mode 100644 usr/src/share/man/man8/man8.i386/MAKEDEV.8 create mode 100644 usr/src/share/man/man8/man8.i386/Makefile create mode 100644 usr/src/share/man/man8/rc.8 create mode 100644 usr/src/share/man/man8/sticky.8 create mode 100644 usr/src/share/me/Makefile create mode 100644 usr/src/share/me/acm.me create mode 100644 usr/src/share/me/chars.me create mode 100644 usr/src/share/me/deltext.me create mode 100644 usr/src/share/me/eqn.me create mode 100644 usr/src/share/me/float.me create mode 100644 usr/src/share/me/footnote.me create mode 100644 usr/src/share/me/index.me create mode 100644 usr/src/share/me/letterhead.me create mode 100644 usr/src/share/me/local.me create mode 100644 usr/src/share/me/me.7 create mode 100644 usr/src/share/me/null.me create mode 100644 usr/src/share/me/refer.me create mode 100644 usr/src/share/me/revisions create mode 100644 usr/src/share/me/sh.me create mode 100644 usr/src/share/me/strip.sed create mode 100644 usr/src/share/me/summary.external create mode 100644 usr/src/share/me/tbl.me create mode 100644 usr/src/share/me/test/test.accent create mode 100644 usr/src/share/me/test/test.umlaut create mode 100644 usr/src/share/me/thesis.me create mode 100644 usr/src/share/me/tmac.e create mode 100644 usr/src/share/mk/Makefile create mode 100644 usr/src/share/mk/bsd.README create mode 100644 usr/src/share/mk/bsd.doc.mk create mode 100644 usr/src/share/mk/bsd.lib.mk create mode 100644 usr/src/share/mk/bsd.man.mk create mode 100644 usr/src/share/mk/bsd.own.mk create mode 100644 usr/src/share/mk/bsd.prog.mk create mode 100644 usr/src/share/mk/bsd.subdir.mk create mode 100644 usr/src/share/mk/sys.mk create mode 100644 usr/src/share/skel/Makefile create mode 100644 usr/src/share/skel/dot.cshrc create mode 100644 usr/src/share/skel/dot.login create mode 100644 usr/src/share/skel/dot.mailrc create mode 100644 usr/src/share/skel/dot.profile create mode 100644 usr/src/share/skel/dot.rhosts create mode 100644 usr/src/share/tabset/3101 create mode 100644 usr/src/share/tabset/9837 create mode 100644 usr/src/share/tabset/Makefile create mode 100644 usr/src/share/tabset/aa create mode 100644 usr/src/share/tabset/aed512 create mode 100644 usr/src/share/tabset/beehive create mode 100644 usr/src/share/tabset/diablo create mode 100644 usr/src/share/tabset/dtc382 create mode 100644 usr/src/share/tabset/hp700-wy create mode 100644 usr/src/share/tabset/ibm3101 create mode 100644 usr/src/share/tabset/std create mode 100644 usr/src/share/tabset/stdcrt create mode 100644 usr/src/share/tabset/tandem653 create mode 100644 usr/src/share/tabset/teleray create mode 100644 usr/src/share/tabset/vt100 create mode 100644 usr/src/share/tabset/wyse-adds create mode 100644 usr/src/share/tabset/xerox1720 create mode 100644 usr/src/share/tabset/xerox1730 create mode 100644 usr/src/share/tabset/xerox1730-lm create mode 100644 usr/src/share/tabset/zenith29 create mode 100644 usr/src/share/termcap/Makefile create mode 100644 usr/src/share/termcap/README create mode 100644 usr/src/share/termcap/map3270 create mode 100644 usr/src/share/termcap/reorder create mode 100644 usr/src/share/termcap/tck create mode 100644 usr/src/share/termcap/termcap.5 create mode 100644 usr/src/share/termcap/termcap.src create mode 100644 usr/src/share/tmac/Makefile create mode 100644 usr/src/share/tmac/README create mode 100644 usr/src/share/tmac/doc create mode 100644 usr/src/share/tmac/doc-common create mode 100644 usr/src/share/tmac/doc-ditroff create mode 100644 usr/src/share/tmac/doc-nroff create mode 100644 usr/src/share/tmac/doc-syms create mode 120000 usr/src/share/tmac/strip.sed create mode 100644 usr/src/share/tmac/tmac.andoc create mode 100644 usr/src/share/tmac/tmac.doc.old create mode 100644 usr/src/share/zoneinfo/Makefile create mode 100644 usr/src/share/zoneinfo/datfiles/africa create mode 100644 usr/src/share/zoneinfo/datfiles/antarctica create mode 100644 usr/src/share/zoneinfo/datfiles/asia create mode 100644 usr/src/share/zoneinfo/datfiles/australasia create mode 100644 usr/src/share/zoneinfo/datfiles/etcetera create mode 100644 usr/src/share/zoneinfo/datfiles/europe create mode 100644 usr/src/share/zoneinfo/datfiles/factory create mode 100644 usr/src/share/zoneinfo/datfiles/leapseconds create mode 100644 usr/src/share/zoneinfo/datfiles/northamerica create mode 100644 usr/src/share/zoneinfo/datfiles/pacificnew create mode 100644 usr/src/share/zoneinfo/datfiles/solar87 create mode 100644 usr/src/share/zoneinfo/datfiles/solar88 create mode 100644 usr/src/share/zoneinfo/datfiles/solar89 create mode 100644 usr/src/share/zoneinfo/datfiles/southamerica create mode 100644 usr/src/share/zoneinfo/datfiles/systemv create mode 100644 usr/src/share/zoneinfo/datfiles/usno1988 create mode 100644 usr/src/share/zoneinfo/datfiles/usno1989 create mode 100644 usr/src/share/zoneinfo/ialloc.c create mode 100644 usr/src/share/zoneinfo/scheck.c create mode 100644 usr/src/share/zoneinfo/tzfile.5 create mode 100644 usr/src/share/zoneinfo/zic.8 create mode 100644 usr/src/share/zoneinfo/zic.c diff --git a/usr/src/share/Makefile b/usr/src/share/Makefile new file mode 100644 index 0000000000..f42bb14774 --- /dev/null +++ b/usr/src/share/Makefile @@ -0,0 +1,7 @@ +# @(#)Makefile 5.8.1.1 (Berkeley) 5/7/91 + +# Missing: ms dict doc misc + +SUBDIR= man me mk skel tabset termcap tmac zoneinfo + +.include diff --git a/usr/src/share/Makefile.inc b/usr/src/share/Makefile.inc new file mode 100644 index 0000000000..1a3cf37f81 --- /dev/null +++ b/usr/src/share/Makefile.inc @@ -0,0 +1,3 @@ +# @(#)Makefile.inc 5.1 (Berkeley) 5/11/90 + +BINDIR?= /usr/share diff --git a/usr/src/share/man/Makefile b/usr/src/share/man/Makefile new file mode 100644 index 0000000000..ed2d0b9047 --- /dev/null +++ b/usr/src/share/man/Makefile @@ -0,0 +1,18 @@ +# @(#)Makefile 5.9 (Berkeley) 7/1/91 + +SUBDIR= man1 man3 man4 man5 man7 man8 + +afterinstall: + install -c -o ${BINOWN} -g ${BINGRP} -m 444 makewhatis.sed \ + ${DESTDIR}/usr/share/man/makewhatis.sed + install -c -o ${BINOWN} -g ${BINGRP} -m 444 man0/COPYRIGHT \ + ${DESTDIR}/usr/share/man/COPYRIGHT + +makedb: + for file in `find /usr/share/man -type f -name '*.0' -print`; do \ + sed -n -f /usr/share/man/makewhatis.sed $$file; \ + done | sort -u > whatis.db + install -o ${BINOWN} -g ${BINGRP} -m 444 whatis.db \ + ${DESTDIR}/usr/share/man + +.include diff --git a/usr/src/share/man/makewhatis.sed b/usr/src/share/man/makewhatis.sed new file mode 100644 index 0000000000..263f757360 --- /dev/null +++ b/usr/src/share/man/makewhatis.sed @@ -0,0 +1,63 @@ +#!/bin/sh - +# +# Copyright (c) 1988 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)makewhatis.sed 5.5 (Berkeley) 4/17/91 +# + +/^[A-Z0-9]*([0-9])[ ].*[ ][A-Z0-9]*([0-9])$/ { + s;.*(\([a-zA-Z0-9]*\).*;\1; + h + d +} + +/^NNAAMMEE/!d + +:name + s;.*;; + N + s;\n;; + s;.;;g + /^[^ ]/b print + H + b name + +:print + x + s;\n;;g + /-/!d + s;\([a-z][A-z]\)-[ ][ ]*;\1; + s;\([a-zA-Z0-9,]\)[ ][ ]*;\1 ;g + s;[^a-zA-Z0-9]*\([a-zA-Z0-9]*\)[^a-zA-Z0-9]*\(.*\) - \(.*\);\2 (\1) - \3; + p + d + q diff --git a/usr/src/share/man/man0/COPYRIGHT b/usr/src/share/man/man0/COPYRIGHT new file mode 100644 index 0000000000..2427a2a60f --- /dev/null +++ b/usr/src/share/man/man0/COPYRIGHT @@ -0,0 +1,68 @@ +# @(#)COPYRIGHT 5.1 (Berkeley) 7/1/91 + +All of the documentation and software included in the second BSD Networking +Software Release is copyrighted by The Regents of the University of California. + +Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991 The Regents of the +University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +The Institute of Electrical and Electronics Engineers and the American +National Standards Committee X3, on Information Processing Systems have +given us permission to reprint portions of their documentation. + +In the following statement, the phrase ``this text'' refers to portions +of the system documentation. + +Portions of this text are reprinted and reproduced in electronic form in +the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE +Standard Portable Operating System Interface for Computer Environments +(POSIX), copyright C 1988 by the Institute of Electrical and Electronics +Engineers, Inc. In the event of any discrepancy between these versions +and the original IEEE Standard, the original IEEE Standard is the referee +document. + +In the following statement, the phrase ``This material'' refers to portions +of the system documentation. + +This material is reproduced with permission from American National +Standards Committee X3, on Information Processing Systems. Computer and +Business Equipment Manufacturers Association (CBEMA), 311 First St., NW, +Suite 500, Washington, DC 20001-2178. The developmental work of +Programming Language C was completed by the X3J11 Technical Committee. + +Portions of the manual reflect system enhancements made at Berkeley and +sponsored in part by the Defense Advanced Research Projects Agency (DoD), +Arpa Order No. 4871 monitored by the Naval Electronics Systems Command +under contract No. N00039-84-C-0089. The views and conclusions contained +in these documents are those of the authors and should not be interpreted +as representing official policies, either expressed or implied, of the +Defense Research Projects Agency or of the US Government. diff --git a/usr/src/share/man/man1/Makefile b/usr/src/share/man/man1/Makefile new file mode 100644 index 0000000000..7ce2c71103 --- /dev/null +++ b/usr/src/share/man/man1/Makefile @@ -0,0 +1,5 @@ +# @(#)Makefile 5.1 (Berkeley) 4/30/91 + +MAN1= intro.0 + +.include diff --git a/usr/src/share/man/man1/intro.1 b/usr/src/share/man/man1/intro.1 new file mode 100644 index 0000000000..b297c36b7d --- /dev/null +++ b/usr/src/share/man/man1/intro.1 @@ -0,0 +1,74 @@ +.\" Copyright (c) 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)intro.1 6.4 (Berkeley) 5/6/91 +.\" +.Dd May 6, 1991 +.Dt INTRO 1 +.Os +.Sh NAME +.Nm intro +.Nd introduction to general commands (tools and utilities) +.Sh DESCRIPTION +Section one of the manual contains most of the commands +which comprise the +.Bx +user enviroment. +Some of the commands included in section one are +text editors, command shell interpreters, +searching and sorting tools, +file manipulation commands +system status commands, +remote file copy commands, mail commands, +compilers and compiler tools, +formatted output tools, +and line printer commands. +.Pp +All commands set a status value upon exit which may be tested +to see if the command completed normally. +The exit values and their meanings are explained in the individual +manuals. Traditionally, the value 0 signifies successful +completetion of the command. +.Sh SEE ALSO +.Xr man 1 +.Xr intro 2 +.Xr intro 3 +.Xr intro 3 +.Xr intro 4 +.Xr intro 8 +.Pp +Tutorials in the +.%T "UNIX User's Manual Supplementary Documents" . +.Sh HISTORY +A +.Nm intro +manual appeared in +.At v6 . diff --git a/usr/src/share/man/man3/Makefile b/usr/src/share/man/man3/Makefile new file mode 100644 index 0000000000..4ce7dbf3ad --- /dev/null +++ b/usr/src/share/man/man3/Makefile @@ -0,0 +1,6 @@ +# @(#)Makefile 0.1 (RWGrimes) 3/25/93 + +MAN3= assert.0 bitstring.0 end.0 intro.0 stdarg.0 +MLINKS+=end.3 edata.3 end.3 etext.3 stdarg.3 varargs.3 + +.include diff --git a/usr/src/share/man/man3/assert.3 b/usr/src/share/man/man3/assert.3 new file mode 100644 index 0000000000..97384d6580 --- /dev/null +++ b/usr/src/share/man/man3/assert.3 @@ -0,0 +1,86 @@ +.\" Copyright (c) 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)assert.3 6.3 (Berkeley) 4/19/91 +.\" +.Dd April 19, 1991 +.Dt ASSERT 3 +.Os +.Sh NAME +.Nm assert +.Nd expression verification macro +.Sh SYNOPSIS +.Fd #include +.Fn assert expression +.Sh DESCRIPTION +The +.Fn assert +macro tests the given +.Ar expression +and if it is false, +the calling process is terminated. +A +diagnostic message is written to the +.Em stderr +and the function +.Xr _exit 2 +is called effectively terminating the program. +.Pp +If +.Ar expression +is true, +the +.Fn assert +macro does nothing. +.Pp +The +.Fn assert +macro +may be removed at compile time with +the +.Fl NDEBUG +option, see +.Xr cc 1 . +.Sh DIAGNOSTICS +The following diagnostic message is written to +.Em stderr +if +.Ar expression +is false: +.Bd -literal -offset indent +"assertion \e"%s\e" failed: file \e"%s\e", line %d\n", \e + "expression", __FILE__, __LINE__); +.Ed +.Sh HISTORY +The +.Fn assert +function is +.Ud . diff --git a/usr/src/share/man/man3/bitstring.3 b/usr/src/share/man/man3/bitstring.3 new file mode 100644 index 0000000000..94dcb5bc80 --- /dev/null +++ b/usr/src/share/man/man3/bitstring.3 @@ -0,0 +1,180 @@ +.\" Copyright (c) 1989, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" Paul Vixie. +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)bitstring.3 5.4 (Berkeley) 4/19/91 +.\" +.Dd April 19, 1991 +.Dt BITSTRING 3 +.Os BSD 4 +.Sh NAME +.Nm bit_alloc , +.Nm bit_clear , +.Nm bit_decl , +.Nm bit_ffs , +.Nm bit_nclear , +.Nm bit_nset, +.Nm bit_set , +.Nm bitstr_size , +.Nm bit_test +.Nd bit-string manipulation macros +.Sh SYNOPSIS +.Fd #include +.Ft bitstr_t * +.Fn bit_alloc "int nbits" +.Fn bit_decl "bit_str name" "int nbits" +.Fn bit_clear "bit_str name" "int bit" +.Fn bit_ffc "bit_str name" "int nbits" "int *value" +.Fn bit_ffs "bit_str name" "int nbits" "int *value" +.Fn bit_nclear "bit_str name" "int start" "int stop" +.Fn bit_nset "bit_str name" "int start" "int stop" +.Fn bit_set "bit_str name" "int bit" +.Fn bitstr_size "int nbits" +.Fn bit_test "bit_str name" "int bit" +.Sh DESCRIPTION +These macros operate on strings of bits. +.Pp +The macro +.Fn bit_alloc +returns a pointer of type +.Dq Fa "bitstr_t *" +to sufficient space to store +.Fa nbits +bits, or +.Dv NULL +if no space is available. +.Pp +The macro +.Fn bit_decl +allocates sufficient space to store +.Fa nbits +bits on the stack. +.Pp +The macro +.Fn bitstr_size +returns the number of elements of type +.Fa bitstr_t +necessary to store +.Fa nbits +bits. +This is useful for copying bit strings. +.Pp +The macros +.Fn bit_clear +and +.Fn bit_set +clear or set the zero-based numbered bit +.Fa bit , +in the bit string +.Ar name . +.Pp +The +.Fn bit_nset +and +.Fn bit_nclear +macros +set or clear the zero-based numbered bits from +.Fa start +to +.Fa stop +in the bit string +.Ar name . +.Pp +The +.Fn bit_test +macro +evaluates to zero if the zero-based numbered bit +.Fa bit +of bit string +.Fa name +is set, and non-zero otherwise. +.Pp +The +.Fn bit_ffs +macro +stores in the location referenced by +.Fa value +the zero-based number of the first bit set in the array of +.Fa nbits +bits referenced by +.Fa name . +If no bits are set, the location referenced by +.Fa value +is set to \-1. +.Pp +The macro +.Fn bit_ffc +stores in the location referenced by +.Fa value +the zero-based number of the first bit not set in the array of +.Fa nbits +bits referenced by +.Fa name . +If all bits are set, the location referenced by +.Fa value +is set to \-1. +.Pp +The arguments to these macros are evaluated only once and may safely +have side effects. +.Sh EXAMPLE +.Bd -literal -offset indent +#include +#include + +... +#define LPR_BUSY_BIT 0 +#define LPR_FORMAT_BIT 1 +#define LPR_DOWNLOAD_BIT 2 +... +#define LPR_AVAILABLE_BIT 9 +#define LPR_MAX_BITS 10 + +make_lpr_available() +{ + bitstr_t bit_decl(bitlist, LPR_MAX_BITS); + ... + bit_nclear(bitlist, 0, LPR_MAX_BITS - 1); + ... + if (!bit_test(bitlist, LPR_BUSY_BIT)) { + bit_clear(bitlist, LPR_FORMAT_BIT); + bit_clear(bitlist, LPR_DOWNLOAD_BIT); + bit_set(bitlist, LPR_AVAILABLE_BIT); + } +} +.Ed +.Sh SEE ALSO +.Xr malloc 3 +.Sh HISTORY +The +.Nm +functions are +.Ud . diff --git a/usr/src/share/man/man3/end.3 b/usr/src/share/man/man3/end.3 new file mode 100644 index 0000000000..a73ee44aa0 --- /dev/null +++ b/usr/src/share/man/man3/end.3 @@ -0,0 +1,66 @@ +.\" @(#)end.3 6.2 (Berkeley) 5/12/86 +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)end.3 6.3 (Berkeley) 4/19/91 +.\" +.Dd April 19, 1991 +.Dt END 3 +.Os +.Sh NAME +.Nm end , +.Nm etext , +.Nm edata +.Nd end boundaries of image segments +.Sh SYNOPSIS +.Vt extern end; +.Vt extern etext; +.Vt extern edata; +.Sh DESCRIPTION +The global variables +.Va end , extext +and +.Va edata +correspond to the +the next address following the end +of the text segment, +the initialized data segment and the +end of the data segment +.Pq Tn BSS . +These values are initially set at execution time +by +.Xr brk 2 . +.Sh SEE ALSO +.Xr brk 2 , +.Xr malloc 3 +.Sh HISTORY +A +.Nm end +manual appeared in +.At v6 . diff --git a/usr/src/share/man/man3/intro.3 b/usr/src/share/man/man3/intro.3 new file mode 100644 index 0000000000..9b1acef078 --- /dev/null +++ b/usr/src/share/man/man3/intro.3 @@ -0,0 +1,162 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)intro.3 6.11 (Berkeley) 7/31/91 +.\" +.Dd July 31, 1991 +.Dt INTRO 3 +.Os BSD 4 +.Sh NAME +.Nm intro +.Nd introduction to the C libraries +.Sh DESCRIPTION +This section provides an overview of the C +library functions, their error returns and other +common definitions and concepts. +Most of these functions are available from the C library, +.Em libc +(see +.Xr libc 3 ) . +Other libraries, such as the math library, +.Em libm , +must be indicated at compile time with the +.Fl l +option of the compiler. +.Pp +A subset of the +.Xr libc functions +are available from Fortran; +they are described separately in +.Xr intro 3f . +.Pp +The various libraries (followed by the loader flag): +.Bl -tag -width "libc (-lc)" +.It Xr libc Pq Fl l Ns Ar c +Standard C library functions. (See +.Xr libc 3 . ) When using the C compiler +.Xr cc 1 , +it is not necessary +to supply the loader flag +.Fl l Ns Ar c +for these functions. +There are several `libraries' or groups of functions included inside of +.Xr libc : the standard +.Tn I/O +routines, +database routines, +bit operators, +string operators, +character tests and character operators, +des encryption routines, +storage allocation, time functions, signal handling and more. +.It Xo +.Xr libcurses +.Pf ( Fl l Ns Ar curses +.Fl l Ns Ar termcap ) +.Xc +Terminal independent screen management routines +for two dimensional non-bitmap display terminals. +(See +.Xr curses 3 . ) +.It Xr libcompat Pq Fl l Ns Ar compat +Functions which are obsolete but are available for compatibility with +.Bx 4.3 . +In particular, +a number of system call interfaces provided in previous releases of +.Bx +have been included for source code compatibility. +Use of these routines should, for the most part, be avoided. +The manual page entry for each compatibility routine +indicates the proper interface to use. +.\" .It Xr libkvm +.It Xr libl Pq Fl l Ns Ar l +The library for +.Xr lex 1 . +.\" .It Xr libln +.It Xr libm Pq Fl l Ns Ar m +The math library, +.Em libm . +The math library is loaded as needed by the Pascal compiler +.Xr pc 1 , +but not by the C compiler which requires the +.Fl l Ns Ar m +flag. +(See +.Xr math 3 . ) +.It Xr libmp Pq Fl l Ns Ar mp +.\" .It Xr libom +.\" Old math library. +.It Xr libplot Pq Fl l Ns Ar plot +Device independent plotting functions. +(See +.Xr plot 3 . ) +.It Xr libplotf77 Pq Fl l Ns Ar plotf77 +The device independent plotting functions for fortran. +(See +.Xr plot 3 . ) +.\" .It Xr libresolv Pq Fl l Ns Ar resolv +.\" Routines for network address resolution. +.It Xr libtermcap Fl l Ns Ar termcap +The terminal independent operation library package. (See +.Xr termcap 3 . ) +.\" .It libvt0.a +.It Xr liby Pq Fl l Ns Ar y +The library for +.Xr yacc 1 . +.El +.Sh FILES +.Bl -tag -width /usr/lib/libm_p.a -compact +.It Pa /usr/lib/libc.a +the C library +.It Pa /usr/lib/libm.a +the math library +.It Pa /usr/lib/libc_p.a +the C library compiled for profiling +.It Pa /usr/lib/libm_p.a +the math library compiled for profiling +.El +.Sh SEE ALSO +.\" .Xr libc 3 , +.Xr stdio 3 , +.Xr math 3 , +.Xr intro 2 , +.Xr cc 1 , +.Xr ld 1 , +.Xr nm 1 +.\" .Sh LIST OF FUNCTIONS +.\" .Bl -column "strncasecmpxxx" "system" +.\" .Sy Name Description +.\" .El +.Sh HISTORY +An +.Nm intro +manual appeared in +.At v7 . diff --git a/usr/src/share/man/man3/stdarg.3 b/usr/src/share/man/man3/stdarg.3 new file mode 100644 index 0000000000..8f1e782afd --- /dev/null +++ b/usr/src/share/man/man3/stdarg.3 @@ -0,0 +1,205 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" the American National Standards Committee X3, on Information +.\" Processing Systems. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)stdarg.3 6.8 (Berkeley) 6/29/91 +.\" +.Dd June 29, 1991 +.Dt STDARG 3 +.Os +.Sh NAME +.Nm stdarg +.Nd variable argument lists +.Sh SYNOPSIS +.Fd #include +.Ft void +.Fn va_start "va_list ap" last +.Ft type +.Fn va_arg "va_list ap" type +.Ft void +.Fn va_end "va_list ap" +.Sh DESCRIPTION +A function may be called with a varying number of arguments of varying +types. +The include file +.Aq Pa stdarg.h +declares a type +.Pq Em va_list +and defines three macros for stepping +through a list of arguments whose number and types are not known to +the called function. +.Pp +The called function must declare an object of type +.Em va_list +which is used by the macros +.Fn va_start , +.Fn va_arg , +and +.Fn va_end . +.Pp +The +.Fn va_start +macro initializes +.Fa ap +for subsequent use by +.Fn va_arg +and +.Fn va_end , +and must be called first. +.Pp +The parameter +.Fa last +is the name of the last parameter before the variable argument list, +i.e. the last parameter of which the calling function knows the type. +.Pp +Because the address of this parameter is used in the +.Fn va_start +macro, it should not be declared as a register variable, or as a +function or an array type. +.Pp +The +.Fn va_start +macro returns no value. +.Pp +The +.Fn va_arg +macro expands to an expression that has the type and value of the next +argument in the call. +The parameter +.Fa ap +is the +.Em va_list Fa ap +initialized by +.Fn va_start . +Each call to +.Fn va_arg +modifies +.Fa ap +so that the next call returns the next argument. +The parameter +.Fa type +is a type name specified so that the type of a pointer to an +object that has the specified type can be obtained simply by +adding a * +to +.Fa type . +.Pp +If there is no next argument, or if +.Fa type +is not compatible with the type of the actual next argument +(as promoted according to the default argument promotions), +random errors will occur. +.Pp +The first use of the +.Fn va_arg +macro after that of the +.Fn va_start +macro returns the argument after +.Fa last . +Successive invocations return the values of the remaining +arguments. +.Pp +The +.Fn va_end +macro handles a normal return from the function whose variable argument +list was initialized by +.Fn va_start . +.Pp +The +.Fn va_end +macro returns no value. +.Sh EXAMPLES +The function +.Em foo +takes a string of format characters and prints out the argument +associated with each format character based on the type. +.Bd -literal -offset indent +void foo(char *fmt, ...) +{ + va_list ap; + int d; + char c, *p, *s; + + va_start(ap, fmt); + while (*fmt) + switch(*fmt++) { + case 's': /* string */ + s = va_arg(ap, char *); + printf("string %s\en", s); + break; + case 'd': /* int */ + d = va_arg(ap, int); + printf("int %d\en", d); + break; + case 'c': /* char */ + c = va_arg(ap, char); + printf("char %c\en", c); + break; + } + va_end(ap); +} +.Ed +.Sh STANDARDS +The +.Fn va_start , +.Fn va_arg , +and +.Fn va_end +macros conform to +.St -ansiC . +.Sh COMPATIBILITY +These macros are +.Em not +compatible with the historic macros they replace. +A backward compatible version can be found in the include +file +.Aq Pa varargs.h . +.Sh BUGS +Unlike the +.Em varargs +macros, the +.Nm stdarg +macros do not permit programmers to +code a function with no fixed arguments. +This problem generates work mainly when converting +.Em varargs +code to +.Nm stdarg +code, +but it also creates difficulties for variadic functions that +wish to pass all of their arguments on to a function +that takes a +.Em va_list +argument, such as +.Xr vfprintf 3 . diff --git a/usr/src/share/man/man4/Makefile b/usr/src/share/man/man4/Makefile new file mode 100644 index 0000000000..1e85eb41ee --- /dev/null +++ b/usr/src/share/man/man4/Makefile @@ -0,0 +1,11 @@ +# @(#)Makefile 0.1 (RWGrimes) 3/25/93 +# +# Not for 386bsd: man4.hp300 man4.tahoe man4.vax + +MAN4= bpf.0 clnp.0 cltp.0 drum.0 esis.0 fd.0 icmp.0 idp.0 imp.0 \ + inet.0 ip.0 iso.0 kadb.0 lo.0 netintro.0 ns.0 nsip.0 null.0 \ + pty.0 route.0 spp.0 tcp.0 tp.0 udp.0 unix.0 +MLINKS= netintro.4 networking.4 +SUBDIR= man4.i386 + +.include diff --git a/usr/src/share/man/man4/bpf.4 b/usr/src/share/man/man4/bpf.4 new file mode 100644 index 0000000000..0ddec0f455 --- /dev/null +++ b/usr/src/share/man/man4/bpf.4 @@ -0,0 +1,685 @@ +.\" Copyright (c) 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that: (1) source code distributions +.\" retain the above copyright notice and this paragraph in its entirety, (2) +.\" distributions including binary code include the above copyright notice and +.\" this paragraph in its entirety in the documentation or other materials +.\" provided with the distribution, and (3) all advertising materials mentioning +.\" features or use of this software display the following acknowledgement: +.\" ``This product includes software developed by the University of California, +.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of +.\" the University nor the names of its contributors may be used to endorse +.\" or promote products derived from this software without specific prior +.\" written permission. +.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +.\" +.\" This document is derived in part from the enet man page (enet.4) +.\" distributed with 4.3BSD Unix. +.\" +.TH BPF 4 "23 May 1991" +.SH NAME +bpf \- Berkeley Packet Filter +.SH SYNOPSIS +.B "pseudo-device bpfilter 16" +.SH DESCRIPTION +The Berkeley Packet Filter +provides a raw interface to data link layers in a protocol +independent fashion. +All packets on the network, even those destined for other hosts, +are accessible through this mechanism. +.PP +The packet filter appears as a character special device, +.I /dev/bpf0, /dev/bpf1, +etc. +After opening the device, the file descriptor must be bound to a +specific network interface with the BIOSETIF ioctl. +A given interface can be shared be multiple listeners, and the filter +underlying each descriptor will see an identical packet stream. +The total number of open +files is limited to the value given in the kernel configuration; the +example given in the SYNOPSIS above sets the limit to 16. +.PP +A separate device file is required for each minor device. +If a file is in use, the open will fail and +.I errno +will be set to EBUSY. +.PP +Associated with each open instance of a +.I bpf +file is a user-settable packet filter. +Whenever a packet is received by an interface, +all file descriptors listening on that interface apply their filter. +Each descriptor that accepts the packet receives its own copy. +.PP +Reads from these files return the next group of packets +that have matched the filter. +To improve performance, the buffer passed to read must be +the same size as the buffers used internally by +.I bpf. +This size is returned by the BIOCGBLEN ioctl (see below), and under +BSD, can be set with BIOCSBLEN. +Note that an individual packet larger than this size is necessarily +truncated. +.PP +The packet filter will support any link level protocol that has fixed length +headers. Currently, only Ethernet, SLIP and PPP drivers have been +modified to interact with +.I bpf. +.PP +Since packet data is in network byte order, applications should use the +.I byteorder(3n) +macros to extract multi-byte values. +.PP +A packet can be sent out on the network by writing to a +.I bpf +file descriptor. The writes are unbuffered, meaning only one +packet can be processed per write. +Currently, only writes to Ethernets and SLIP links are supported. +.SH IOCTLS +The +.I ioctl +command codes below are defined in . All commands require +these includes: +.ft B +.nf + + #include + #include + #include + #include + +.fi +.ft R +Additionally, BIOCGETIF and BIOCSETIF require \fB\fR. + +In addition to FIONREAD and SIOCGIFADDR, the following commands +may be applied to any open +.I bpf +file. +The (third) argument to the +.I ioctl +should be a pointer to the type indicated. +.TP 10 +.B BIOCGBLEN (u_int) +Returns the required buffer length for reads on +.I bpf +files. +.TP 10 +.B BIOCSBLEN (u_int) +Sets the buffer length for reads on +.I bpf +files. The buffer must be set before the file is attached to an interface +with BIOCSETIF. +If the requested buffer size cannot be accomodated, the closest +allowable size will be set and returned in the argument. +A read call will result in EIO if it is passed a buffer that is not this size. +.TP 10 +.B BIOCGDLT (u_int) +Returns the type of the data link layer underyling the attached interface. +EINVAL is returned if no interface has been specified. +The device types, prefixed with ``DLT_'', are defined in . +.TP 10 +.B BIOCPROMISC +Forces the interface into promiscuous mode. +All packets, not just those destined for the local host, are processed. +Since more than one file can be listening on a given interface, +a listener that opened its interface non-promiscuously may receive +packets promiscuously. This problem can be remedied with an +appropriate filter. +.IP +The interface remains in promiscuous mode until all files listening +promiscuously are closed. +.TP 10 +.B BIOCFLUSH +Flushes the buffer of incoming packets, +and resets the statistics that are returned by BIOCGSTATS. +.TP 10 +.B BIOCGETIF (struct ifreq) +Returns the name of the hardware interface that the file is listening on. +The name is returned in the if_name field of +.I ifr. +All other fields are undefined. +.TP 10 +.B BIOCSETIF (struct ifreq) +Sets the hardware interface associate with the file. This +command must be performed before any packets can be read. +The device is indicated by name using the +.I if_name +field of the +.I ifreq. +Additionally, performs the actions of BIOCFLUSH. +.TP 10 +.B BIOCSRTIMEOUT, BIOCGRTIMEOUT (struct timeval) +Set or get the read timeout parameter. +The +.I timeval +specifies the length of time to wait before timing +out on a read request. +This parameter is initialized to zero by +.IR open(2), +indicating no timeout. +.TP 10 +.B BIOCGSTATS (struct bpf_stat) +Returns the following structure of packet statistics: +.ft B +.nf + +struct bpf_stat { + u_int bs_recv; + u_int bs_drop; +}; +.fi +.ft R +.IP +The fields are: +.RS +.TP 15 +.I bs_recv +the number of packets received by the descriptor since opened or reset +(including any buffered since the last read call); +and +.TP +.I bs_drop +the number of packets which were accepted by the filter but dropped by the +kernel because of buffer overflows +(i.e., the application's reads aren't keeping up with the packet traffic). +.RE +.TP 10 +.B BIOCIMMEDIATE (u_int) +Enable or disable ``immediate mode'', based on the truth value of the argument. +When immediate mode is enabled, reads return immediately upon packet +reception. Otherwise, a read will block until either the kernel buffer +becomes full or a timeout occurs. +This is useful for programs like +.I rarpd(8c), +which must respond to messages in real time. +The default for a new file is off. +.TP 10 +.B BIOCSETF (struct bpf_program) +Sets the filter program used by the kernel to discard uninteresting +packets. An array of instructions and its length is passed in using +the following structure: +.ft B +.nf + +struct bpf_program { + int bf_len; + struct bpf_insn *bf_insns; +}; +.fi +.ft R +.IP +The filter program is pointed to by the +.I bf_insns +field while its length in units of `struct bpf_insn' is given by the +.I bf_len +field. +Also, the actions of BIOCFLUSH are performed. +.IP +See section \fBFILTER MACHINE\fP for an explanation of the filter language. +.TP 10 +.B BIOCVERSION (struct bpf_version) +Returns the major and minor version numbers of the filter languange currently +recognized by the kernel. Before installing a filter, applications must check +that the current version is compatible with the running kernel. Version +numbers are compatible if the major numbers match and the application minor +is less than or equal to the kernel minor. The kernel version number is +returned in the following structure: +.ft B +.nf + +struct bpf_version { + u_short bv_major; + u_short bv_minor; +}; +.fi +.ft R +.IP +The current version numbers are given by +.B BPF_MAJOR_VERSION +and +.B BPF_MINOR_VERSION +from . +An incompatible filter +may result in undefined behavior (most likely, an error returned by +.I ioctl() +or haphazard packet matching). +.SH BPF HEADER +The following structure is prepended to each packet returned by +.I read(2): +.in 15 +.ft B +.nf + +struct bpf_hdr { + struct timeval bh_tstamp; + u_long bh_caplen; + u_long bh_datalen; + u_short bh_hdrlen; +}; +.fi +.ft R +.in -15 +.PP +The fields, whose values are stored in host order, and are: +.TP 15 +.I bh_tstamp +The time at which the packet was processed by the packet filter. +.TP +.I bh_caplen +The length of the captured portion of the packet. This is the minimum of +the truncation amount specified by the filter and the length of the packet. +.TP +.I bh_datalen +The length of the packet off the wire. +This value is independent of the truncation amount specified by the filter. +.TP +.I bh_hdrlen +The length of the BPF header, which may not be equal to +.I sizeof(struct bpf_hdr). +.RE +.PP +The +.I bh_hdrlen +field exists to account for +padding between the header and the link level protocol. +The purpose here is to guarantee proper alignment of the packet +data structures, which is required on alignment sensitive +architectures and and improves performance on many other architectures. +The packet filter insures that the +.I bpf_hdr +and the \fInetwork layer\fR header will be word aligned. Suitable precautions +must be taken when accessing the link layer protocol fields on alignment +restricted machines. (This isn't a problem on an Ethernet, since +the type field is a short falling on an even offset, +and the addresses are probably accessed in a bytewise fashion). +.PP +Additionally, individual packets are padded so that each starts +on a word boundary. This requires that an application +has some knowledge of how to get from packet to packet. +The macro BPF_WORDALIGN is defined in to facilitate +this process. It rounds up its argument +to the nearest word aligned value (where a word is BPF_ALIGNMENT bytes wide). +.PP +For example, if `p' points to the start of a packet, this expression +will advance it to the next packet: +.sp +.RS +.ce 1 +.nf +p = (char *)p + BPF_WORDALIGN(p->bh_hdrlen + p->bh_caplen) +.fi +.RE +.PP +For the alignment mechanisms to work properly, the +buffer passed to +.I read(2) +must itself be word aligned. +.I malloc(3) +will always return an aligned buffer. +.ft R +.SH FILTER MACHINE +A filter program is an array of instructions, with all branches forwardly +directed, terminated by a \fBreturn\fP instruction. +Each instruction performs some action on the pseudo-machine state, +which consists of an accumulator, index register, scratch memory store, +and implicit program counter. + +The following structure defines the instruction format: +.RS +.ft B +.nf + +struct bpf_insn { + u_short code; + u_char jt; + u_char jf; + long k; +}; +.fi +.ft R +.RE + +The \fIk\fP field is used in differnet ways by different insutructions, +and the \fIjt\fP and \fIjf\fP fields are used as offsets +by the branch intructions. +The opcodes are encoded in a semi-hierarchical fashion. +There are eight classes of intructions: BPF_LD, BPF_LDX, BPF_ST, BPF_STX, +BPF_ALU, BPF_JMP, BPF_RET, and BPF_MISC. Various other mode and +operator bits are or'd into the class to give the actual instructions. +The classes and modes are defined in . + +Below are the semantics for each defined BPF instruction. +We use the convention that A is the accumulator, X is the index register, +P[] packet data, and M[] scratch memory store. +P[i:n] gives the data at byte offset ``i'' in the packet, +interpreted as a word (n=4), +unsigned halfword (n=2), or unsigned byte (n=1). +M[i] gives the i'th word in the scratch memory store, which is only +addressed in word units. The memory store is indexed from 0 to BPF_MEMWORDS-1. +\fIk\fP, \fIjt\fP, and \fIjf\fP are the corresponding fields in the +instruction definition. ``len'' refers to the length of the packet. + +.TP 10 +.B BPF_LD +These instructions copy a value into the accumulator. The type of the +source operand is specified by an ``addressing mode'' and can be +a constant (\fBBPF_IMM\fP), packet data at a fixed offset (\fBBPF_ABS\fP), +packet data at a variable offset (\fBBPF_IND\fP), the packet length +(\fBBPF_LEN\fP), +or a word in the scratch memory store (\fBBPF_MEM\fP). +For \fBBPF_IND\fP and \fBBPF_ABS\fP, the data size must be specified as a word +(\fBBPF_W\fP), halfword (\fBBPF_H\fP), or byte (\fBBPF_B\fP). +The semantics of all the recognized BPF_LD instructions follow. + +.RS +.TP 30 +.B BPF_LD+BPF_W+BPF_ABS +A <- P[k:4] +.TP +.B BPF_LD+BPF_H+BPF_ABS +A <- P[k:2] +.TP +.B BPF_LD+BPF_B+BPF_ABS +A <- P[k:1] +.TP +.B BPF_LD+BPF_W+BPF_IND +A <- P[X+k:4] +.TP +.B BPF_LD+BPF_H+BPF_IND +A <- P[X+k:2] +.TP +.B BPF_LD+BPF_B+BPF_IND +A <- P[X+k:1] +.TP +.B BPF_LD+BPF_W+BPF_LEN +A <- len +.TP +.B BPF_LD+BPF_IMM +A <- k +.TP +.B BPF_LD+BPF_MEM +A <- M[k] +.RE + +.TP 10 +.B BPF_LDX +These instructions load a value into the index register. Note that +the addressing modes are more retricted than those of the accumulator loads, +but they include +.B BPF_MSH, +a hack for efficiently loading the IP header length. +.RS +.TP 30 +.B BPF_LDX+BPF_W+BPF_IMM +X <- k +.TP +.B BPF_LDX+BPF_W+BPF_MEM +X <- M[k] +.TP +.B BPF_LDX+BPF_W+BPF_LEN +X <- len +.TP +.B BPF_LDX+BPF_B+BPF_MSH +X <- 4*(P[k:1]&0xf) +.RE + +.TP 10 +.B BPF_ST +This instruction stores the accumulator into the scratch memory. +We do not need an addressing mode since there is only one possibility +for the destination. +.RS +.TP 30 +.B BPF_ST +M[k] <- A +.RE + +.TP 10 +.B BPF_STX +This instruction stores the index register in the scratch memory store. +.RS +.TP 30 +.B BPF_STX +M[k] <- X +.RE + +.TP 10 +.B BPF_ALU +The alu instructions perform operations between the accumulator and +index register or constant, and store the result back in the accumulator. +For binary operations, a source mode is required (\fBBPF_K\fP or +\fBBPF_X\fP). +.RS +.TP 30 +.B BPF_ALU+BPF_ADD+BPF_K +A <- A + k +.TP +.B BPF_ALU+BPF_SUB+BPF_K +A <- A - k +.TP +.B BPF_ALU+BPF_MUL+BPF_K +A <- A * k +.TP +.B BPF_ALU+BPF_DIV+BPF_K +A <- A / k +.TP +.B BPF_ALU+BPF_AND+BPF_K +A <- A & k +.TP +.B BPF_ALU+BPF_OR+BPF_K +A <- A | k +.TP +.B BPF_ALU+BPF_LSH+BPF_K +A <- A << k +.TP +.B BPF_ALU+BPF_RSH+BPF_K +A <- A >> k +.TP +.B BPF_ALU+BPF_ADD+BPF_X +A <- A + X +.TP +.B BPF_ALU+BPF_SUB+BPF_X +A <- A - X +.TP +.B BPF_ALU+BPF_MUL+BPF_X +A <- A * X +.TP +.B BPF_ALU+BPF_DIV+BPF_X +A <- A / X +.TP +.B BPF_ALU+BPF_AND+BPF_X +A <- A & X +.TP +.B BPF_ALU+BPF_OR+BPF_X +A <- A | X +.TP +.B BPF_ALU+BPF_LSH+BPF_X +A <- A << X +.TP +.B BPF_ALU+BPF_RSH+BPF_X +A <- A >> X +.TP +.B BPF_ALU+BPF_NEG +A <- -A +.RE + +.TP 10 +.B BPF_JMP +The jump instructions alter flow of control. Conditional jumps +compare the accumulator against a constant (\fBBPF_K\fP) or +the index register (\fBBPF_X\fP). If the result is true (or non-zero), +the true branch is taken, otherwise the false branch is taken. +Jump offsets are encoded in 8 bits so the longest jump is 256 instructions. +However, the jump always (\fBBPF_JA\fP) opcode uses the 32 bit \fIk\fP +field as the offset, allowing arbitrarily distant destinations. +All conditionals use unsigned comparison conventions. +.RS +.TP 30 +.B BPF_JMP+BPF_JA +pc += k +.TP +.B BPF_JMP+BPF_JGT+BPF_K +pc += (A > k) ? jt : jf +.TP +.B BPF_JMP+BPF_JGE+BPF_K +pc += (A >= k) ? jt : jf +.TP +.B BPF_JMP+BPF_JEQ+BPF_K +pc += (A == k) ? jt : jf +.TP +.B BPF_JMP+BPF_JSET+BPF_K +pc += (A & k) ? jt : jf +.TP +.B BPF_JMP+BPF_JGT+BPF_X +pc += (A > X) ? jt : jf +.TP +.B BPF_JMP+BPF_JGE+BPF_X +pc += (A >= X) ? jt : jf +.TP +.B BPF_JMP+BPF_JEQ+BPF_X +pc += (A == X) ? jt : jf +.TP +.B BPF_JMP+BPF_JSET+BPF_X +pc += (A & X) ? jt : jf +.RE +.TP 10 +.B BPF_RET +The return instructions terminate the filter program and specify the amount +of packet to accept (i.e., they return the truncation amount). A return +value of zero indicates that the packet should be ignored. +The return value is either a constant (\fBBPF_K\fP) or the accumulator +(\fBBPF_A\fP). +.RS +.TP 30 +.B BPF_RET+BPF_A +accept A bytes +.TP +.B BPF_RET+BPF_K +accept k bytes +.RE +.TP 10 +.B BPF_MISC +The miscellaneous category was created for anything that doesn't +fit into the above classes, and for any new instructions that might need to +be added. Currently, these are the register transfer intructions +that copy the index register to the accumulator or vice versa. +.RS +.TP 30 +.B BPF_MISC+BPF_TAX +X <- A +.TP +.B BPF_MISC+BPF_TXA +A <- X +.RE +.PP +The BPF interface provides the following macros to facilitate +array initializers: +.RS +\fBBPF_STMT\fI(opcode, operand)\fR +.br +and +.br +\fBBPF_JUMP\fI(opcode, operand, true_offset, false_offset)\fR +.RE +.PP +.SH EXAMPLES +The following filter is taken from the Reverse ARP Daemon. It accepts +only Reverse ARP requests. +.RS +.nf + +struct bpf_insn insns[] = { + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_REVARP, 0, 3), + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, REVARP_REQUEST, 0, 1), + BPF_STMT(BPF_RET+BPF_K, sizeof(struct ether_arp) + + sizeof(struct ether_header)), + BPF_STMT(BPF_RET+BPF_K, 0), +}; +.fi +.RE +.PP +This filter accepts only IP packets between host 128.3.112.15 and +128.3.112.35. +.RS +.nf + +struct bpf_insn insns[] = { + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 8), + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 26), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x8003700f, 0, 2), + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 30), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x80037023, 3, 4), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x80037023, 0, 3), + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 30), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x8003700f, 0, 1), + BPF_STMT(BPF_RET+BPF_K, (u_int)-1), + BPF_STMT(BPF_RET+BPF_K, 0), +}; +.fi +.RE +.PP +Finally, this filter returns only TCP finger packets. We must parse +the IP header to reach the TCP header. The \fBBPF_JSET\fP instruction +checks that the IP fragment offset is 0 so we are sure +that we have a TCP header. +.RS +.nf + +struct bpf_insn insns[] = { + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 10), + BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, IPPROTO_TCP, 0, 8), + BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20), + BPF_JUMP(BPF_JMP+BPF_JSET+BPF_K, 0x1fff, 6, 0), + BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, 14), + BPF_STMT(BPF_LD+BPF_H+BPF_IND, 14), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 2, 0), + BPF_STMT(BPF_LD+BPF_H+BPF_IND, 16), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 0, 1), + BPF_STMT(BPF_RET+BPF_K, (u_int)-1), + BPF_STMT(BPF_RET+BPF_K, 0), +}; +.fi +.RE +.SH SEE ALSO +tcpdump(1) +.LP +McCanne, S., Jacobson V., +.RI ` "An efficient, extensible, and portable network monitor" ' +.SH FILES +/dev/bpf0, /dev/bpf1, ... +.SH BUGS +The read buffer must be of a fixed size (returned by the BIOCGBLEN ioctl). +.PP +A file that does not request promiscuous mode may receive promiscuously +received packets as a side effect of another file requesting this +mode on the same hardware interface. This could be fixed in the kernel +with additional processing overhead. However, we favor the model where +all files must assume that the interface is promiscuous, and if +so desired, must utilize a filter to reject foreign packets. +.PP +Data link protocols with variable length headers are not currently supported. +.PP +Under SunOS, if a BPF application reads more than 2^31 bytes of +data, read will fail in EINVAL. You can either fix the bug in SunOS, +or lseek to 0 when read fails for this reason. +.SH HISTORY +.PP +The Enet packet filter was created in 1980 by Mike Accetta and +Rick Rashid at Carnegie-Mellon University. Jeffrey Mogul, at +Stanford, ported the code to BSD and continued its development from +1983 on. Since then, it has evolved into the Ultrix Packet Filter +at DEC, a STREAMS NIT module under SunOS 4.1, and BPF. +.SH AUTHORS +.PP +Steven McCanne, of Lawrence Berkeley Laboratory, implemented BPF in +Summer 1990. Much of the design is due to Van Jacobson. diff --git a/usr/src/share/man/man4/clnp.4 b/usr/src/share/man/man4/clnp.4 new file mode 100644 index 0000000000..129e5b975b --- /dev/null +++ b/usr/src/share/man/man4/clnp.4 @@ -0,0 +1,172 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)clnp.4 6.3 (Berkeley) 7/31/91 +.\" +.Dd July 31, 1991 +.Dt CLNP 4 +.Os +.Sh NAME +.Nm clnp +.Nd Connectionless-Mode Network Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_ISO SOCK_RAW 0 +.Sh DESCRIPTION +.Tn CLNP +is the connectionless-mode network protocol used by the +connectionless-mode network service. This protocol is specified in +.Tn ISO +8473. +It may be accessed +through a +.Dq raw socket +for debugging purposes only. +.Tn CLNP +sockets are connectionless, +and are normally used with the +.Xr sendto +and +.Xr recvfrom +calls, though the +.Xr connect 2 +call may also be used to fix the destination for future +packets (in which case the +.Xr read 2 +or +.Xr recv 2 +and +.Xr write 2 +or +.Xr send 2 +system calls may be used). +.Pp +Outgoing packets automatically have a +.Tn CLNP +header prepended to +them. Incoming packets received by the user contain the full +.Tn CLNP +header. +The following +.Xr setsockopt +options apply to +.Tn CLNP : +.Bl -tag -width CLNPOPT_FLAGS +.It Dv CLNPOPT_FLAGS +Sets the flags which are passed to clnp when sending a datagram. +Valid flags are: +.Pp +.Bl -tag -width "CLNP_NO_CKSUM" -offset indent -compact +.It Dv CLNP_NO_SEG +Do not allow segmentation +.It Dv CLNP_NO_ER +Suppress ER pdus +.It Dv CLNP_NO_CKSUM +Do not generate the +.Tn CLNP +checksum +.El +.Pp +.It Dv CLNPOPT_OPTS +Sets +.Tn CLNP +options. The options must be formatted exactly as specified by +.Tn ISO +8473, section 7.5 +.Dq Options Part. +Once an option has been set, it will +be sent on all packets until a different option is set. +.El +.Sh CONGESTION EXPERIENCE BIT +Whenever a packet is transmitted, the globally unique quality of +service option is added to the packet. The sequencing preferred bit and +the low transit delay bit are set in this option. +.Pp +If a packet is forwarded containing the globally unique quality of +service option, and the interface through which the packet will be +transmitted has a queue length greater than +.Em congest_threshold , +then the congestion experienced bit is set in the quality of service option. +.Pp +The threshold value stored in +.Em congest_threshold +may be tuned. +.Pp +When a packet is received with the +globally unique quality of service option present, and the +congestion experienced bit is set, then the transport congestion +control function is called. +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +When trying to establish a connection on a socket which +already has one, or when trying to send a datagram with the destination +address specified and the socket is already connected; +.It Bq Er ENOTCONN +When trying to send a datagram, but +no destination address is specified, and the socket hasn't been +connected; +.It Bq Er ENOBUFS +When the system runs out of memory for +an internal data structure; +.It Bq Er EADDRNOTAVAIL +When an attempt is made to create a +socket with a network address for which no network interface +exists; +.It Bq Er EHOSTUNREACH +When trying to send a datagram, but no route to the destination +address exists. +.It Bq Er EINVAL +When specifying unsupported options. +.El +.Sh SEE ALSO +.Xr send 2 , +.Xr recv 2 , +.Xr intro 4 , +.Xr iso 4 +.Sh HISTORY +The +.Nm +protocol implementation +.Ud +.Sh BUGS +Packets are sent with the type code of 0x1d (technically an invalid +packet type) for lack of a better way to identify raw +.Tn CLNP +packets. +.Pp +No more than +.Dv MLEN +bytes of options can be specified. diff --git a/usr/src/share/man/man4/cltp.4 b/usr/src/share/man/man4/cltp.4 new file mode 100644 index 0000000000..acad5204a4 --- /dev/null +++ b/usr/src/share/man/man4/cltp.4 @@ -0,0 +1,132 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)cltp.4 6.2 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt CLTP 4 +.Os +.Sh NAME +.Nm cltp +.Nd +.Tn ISO +Connectionless Transport Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_ISO SOCK_DGRAM 0 +.Sh DESCRIPTION +.Tn CLTP +is a simple, unreliable datagram protocol which is accessed +via the +.Dv SOCK_DGRAM +abstraction for the +.Tn ISO +protocol family. +.Tn CLTP +sockets are connectionless, and are +normally used with the +.Xr sendto +and +.Xr recvfrom +calls, though the +.Xr connect 2 +call may also be used to fix the destination for future +packets (in which case the +.Xr recv 2 +or +.Xr read 2 +and +.Xr send 2 +or +.Xr write 2 +system calls may be used). +.Pp +.Tn CLTP +address formats are identical to those used by TP. +In particular +.Tn CLTP +provides a service selector in addition +to the normal +.Tn ISO NSAP . +Note that the +.Tn CLTP +selector +space is separate from the TP selector space (i.e. a +.Tn CLTP +selector +may not be +.Dq connected +to a TP selector). +.Pp +Options at the +.Tn CLNP +network level may be used with +.Tn CLTP ; +see +.Xr clnp 4 . +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one, or when trying to send a datagram with the destination +address specified and the socket is already connected; +.It Bq Er ENOTCONN +when trying to send a datagram, but +no destination address is specified, and the socket hasn't been +connected; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er EADDRINUSE +when an attempt +is made to create a socket with a selector which has already been +allocated; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Sh SEE ALSO +.Xr getsockopt 2 , +.Xr recv 2 , +.Xr send 2 , +.Xr socket 2 , +.Xr intro 4 , +.Xr iso 4 , +.Xr clnp 4 +.Sh HISTORY +The +.Nm +protocol implementation +.Ud diff --git a/usr/src/share/man/man4/drum.4 b/usr/src/share/man/man4/drum.4 new file mode 100644 index 0000000000..90113525bb --- /dev/null +++ b/usr/src/share/man/man4/drum.4 @@ -0,0 +1,59 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)drum.4 6.2 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt DRUM 4 +.Os BSD 4 +.Sh NAME +.Nm drum +.Nd paging device +.Sh DESCRIPTION +This file refers to the paging device in use by the system. +This may actually be a subdevice of one of the disk drivers, but in +a system with paging interleaved across multiple disk drives +it provides an indirect driver for the multiple drives. +.Sh FILES +.Bl -tag -width /dev/drum +.It Pa /dev/drum +.El +.Sh HISTORY +The +.Nm +special file appeared in +.Bx 3.0 . +.Sh BUGS +Reads from the drum are not allowed across the interleaving boundaries. +Since these only occur every .5Mbytes +or so, +and since the system never allocates blocks across the boundary, +this is usually not a problem. diff --git a/usr/src/share/man/man4/esis.4 b/usr/src/share/man/man4/esis.4 new file mode 100644 index 0000000000..7f01cfaf22 --- /dev/null +++ b/usr/src/share/man/man4/esis.4 @@ -0,0 +1,220 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)esis.4 6.2 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt ESIS 4 +.Os +.Sh NAME +.Nm es-is +.Nd End System to Intermediate System Routing Protocol +.Sh SYNOPSIS +.Sy pseudo-device +.Nm ether +.Sh DESCRIPTION +The +.Nm ES-IS +routing protocol is used to dynamically map between +.Tn ISO NSAP +addresses and +.Tn ISO SNPA +addresses; to permit End and Intermediate Systems +to learn of each other's existence; and to allow Intermediate Systems +to inform End Systems of (potentially) better routes to use when +forwarding +.Tn NPDU Ns s +to a particular destination. +.Pp +The mapping between +.Tn NSAP +addresses and +.Tn SNPA +addresses is accomplished by +transmitting hello +.Tn PDU Ns s +between the cooperating Systems. These +.Tn PDU Ns s +are transmitted whenever the +.Em configuration +timer expires. +When a hello +.Tn PDU +is received, the +.Tn SNPA +address that it conveys is stored in the routing table for as long as the +.Em holding time +in the +.Tn PDU +suggests. The default +.Em holding time +(120 seconds) placed in the hello +.Tn PDU , +the configuration timer value, +and the system type (End System or Intermediate System) may be changed by +issuing an +.Dv SIOCSSTYPE +.Xr ioctl 2 , +which is defined in +.Pa /sys/netiso/iso_snpac.h. +.Pp +The protocol behaves differently depending on whether the System is +configured as an End System or an Intermediate System. +.Sh END SYSTEM OPERATION +When an interface requests a mapping for an address not in the cache, +the +.Tn SNPA +of any known Intermediate System is returned. If an Intermediate +System is not known, then the +.Em all end systems +multicast address +is returned. It is assumed that the intended recipient of the NPDU will +immediately transmit a hello +.Tn PDU +back to the originator of the +.Tn NPDU . +.Pp +If an +.Tn NPDU +is forwarded by the End System, a redirect +.Tn PDU +will not be +generated. +However, redirect +.Tn PDU Ns s +received will be processed. This processing +consists of adding an entry in the routing table. If the +redirect is towards an Intermediate System, then an entry is made in the +routing table as well. +The entry in the routing table will may mark the +.Tn NSAP +address contained in the redirect +.Tn PDU +as the gateway for the destination +system (if an NET is supplied), or will create a route with +the NSAP address as the +destination and the +.Tn SNPA +address (embodied as a link-level sockaddr) as the +gateway. +.Pp +If the System is configured as an End System, it will report all the +.Tn NSAP Ns s +that have been configured using the ifconfig command, and no others. +It is possible to have more than one +.Tn NSAP +assigned to a given interface, +and it is also possible to have the same +.Tn NSAP +assigned to multiple +interfaces. +However, any +.Tn NSAP +containing an NSEL that is consistent with the +nsellength option (default one) of any interface will be accepted as +an +.Tn NSAP +for this System. +.Sh INTERMEDIATE SYSTEM OPERATION +When an interface requests a mapping for an address not in the routing table, +an error is returned. +.Pp +When an +.Tn NPDU +is forwarded out on the same interface that the +.Tn NPDU +arrived upon, +a redirect +.Tn PDU +is generated. +.Sh MANUAL ROUTING TABLE MODIFICATION +.Pp +To facilitate communications with systems which do not use +.Nm ES-IS, +one may add a route whose destination is a sockaddr_iso containing +the +.Tn NSAP +in question, and the gateway being a link-level sockaddr, +either by writing a special purpose program, or using the +.Xr route 8 +command e.g.: +.Bd -literal +route add -iface -osi 49.0.4.8.0.2b.b.83.bf \ + -link qe0:8.0.2b.b.83.bf +.Ed +.Pp +If the +System is configured as an End System and has a single network interface +which does not support multicast reception, +it is necessary to manually configure the location of an +.Tn IS , +using the route command in a similar way. +There, the destination address should be +.Dq default +(spelled +out literally as 7 +.Tn ASCII +characters), and the gateway should be +once again be a link-level sockaddr specifying the +.Tn SNPA +of the +.Tn IS . +.Sh SEE ALSO +.Xr un 4 , +.Xr iso 4 , +.Xr route 8 , +.Xr ifconfig 8 +.Rs +.%T "End system to Intermediate system routing exchange protocol for use in conjunction with the Protocol for providing the connectionless-mode network service" +.%R ISO +.%N 9542 +.Re +.Sh HISTORY +The +.Nm +protocol implementation +.Ud +.Sh BUGS +Redirect +.Tn PDU Ns s +do not contain options from the forwarded +.Tn NPDU +which generated +the redirect. The multicast address used on the 802.3 network is taken from +the +.Tn NBS +December 1987 agreements. This multicast address is not compatible +with the 802.5 (Token Ring) multicast addresses format. Therefore, broadcast +addresses are used on the 802.5 subnetwork. +Researchers at the University of Wisconsin are constructing an implementation +of the +.Tn IS-IS +routing protocol. diff --git a/usr/src/share/man/man4/fd.4 b/usr/src/share/man/man4/fd.4 new file mode 100644 index 0000000000..65fb3a347a --- /dev/null +++ b/usr/src/share/man/man4/fd.4 @@ -0,0 +1,96 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)fd.4 5.2 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt FD 4 +.Os +.Sh NAME +.Nm fd , +.Nm stdin , +.Nm stdout , +.Nm stderr +.Nd file descriptor files +.Sh DESCRIPTION +The files +.Pa /dev/fd/0 +through +.Pa /dev/fd/# +refer to file descriptors which can be accessed through the file +system. +If the file descriptor is open and the mode the file is being opened +with is a subset of the mode of the existing descriptor, the call: +.Bd -literal -offset indent +fd = open("/dev/fd/0", mode); +.Ed +.Pp +and the call: +.Bd -literal -offset indent +fd = fcntl(0, F_DUPFD, 0); +.Ed +.Pp +are equivalent. +.Pp +Opening the files +.Pa /dev/stdin , +.Pa /dev/stdout +and +.Pa /dev/stderr +is equivalent to the following calls: +.Bd -literal -offset indent +fd = fcntl(STDIN_FILENO, F_DUPFD, 0); +fd = fcntl(STDOUT_FILENO, F_DUPFD, 0); +fd = fcntl(STDERR_FILENO, F_DUPFD, 0); +.Ed +.Pp +Flags to the +.Xr open 2 +call other than +.Dv O_RDONLY , +.Dv O_WRONLY +and +.Dv O_RDWR +are ignored. +.Sh FILES +.Bl -tag -width /dev/stderr -compact +.It Pa /dev/fd/# +.It Pa /dev/stdin +.It Pa /dev/stdout +.It Pa /dev/stderr +.El +.Sh SEE ALSO +.Xr tty 4 +.Sh HISTORY +The +.Nm +descriptor implementation +.Ud diff --git a/usr/src/share/man/man4/icmp.4 b/usr/src/share/man/man4/icmp.4 new file mode 100644 index 0000000000..2e6f199a6a --- /dev/null +++ b/usr/src/share/man/man4/icmp.4 @@ -0,0 +1,117 @@ +.\" Copyright (c) 1986, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)icmp.4 6.6 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt ICMP 4 +.Os BSD 4.3 +.Sh NAME +.Nm icmp +.Nd Internet Control Message Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_INET SOCK_RAW proto +.Sh DESCRIPTION +.Tn ICMP +is the error and control message protocol used +by +.Tn IP +and the Internet protocol family. It may be accessed +through a +.Dq raw socket +for network monitoring +and diagnostic functions. +The +.Fa proto +parameter to the socket call to create an +.Tn ICMP +socket +is obtained from +.Xr getprotobyname 3 . +.Tn ICMP +sockets are connectionless, +and are normally used with the +.Xr sendto +and +.Xr recvfrom +calls, though the +.Xr connect 2 +call may also be used to fix the destination for future +packets (in which case the +.Xr read 2 +or +.Xr recv 2 +and +.Xr write 2 +or +.Xr send 2 +system calls may be used). +.Pp +Outgoing packets automatically have an +.Tn IP +header prepended to +them (based on the destination address). +Incoming packets are received with the +.Tn IP +header and options intact. +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one, or when trying to send a datagram with the destination +address specified and the socket is already connected; +.It Bq Er ENOTCONN +when trying to send a datagram, but +no destination address is specified, and the socket hasn't been +connected; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Sh SEE ALSO +.Xr send 2 , +.Xr recv 2 , +.Xr intro 4 , +.Xr inet 4 , +.Xr ip 4 +.Sh HISTORY +The +.Nm +protocol appeared in +.Bx 4.3 . diff --git a/usr/src/share/man/man4/idp.4 b/usr/src/share/man/man4/idp.4 new file mode 100644 index 0000000000..f71147a0e4 --- /dev/null +++ b/usr/src/share/man/man4/idp.4 @@ -0,0 +1,185 @@ +.\" Copyright (c) 1985, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)idp.4 1.4 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt IDP 4 +.Os BSD 4.3 +.Sh NAME +.Nm idp +.Nd Xerox Internet Datagram Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_NS SOCK_DGRAM 0 +.Sh DESCRIPTION +.Tn IDP +is a simple, unreliable datagram protocol which is used +to support the +.Dv SOCK_DGRAM +abstraction for the Internet +protocol family. +.Tn IDP +sockets are connectionless, and are +normally used with the +.Xr sendto +and +.Xr recvfrom +calls, though the +.Xr connect 2 +call may also be used to fix the destination for future +packets (in which case the +.Xr recv 2 +or +.Xr read 2 +and +.Xr send 2 +or +.Xr write 2 +system calls may be used). +.Pp +Xerox protocols are built vertically on top of +.Tn IDP . +Thus, +.Tn IDP +address formats are identical to those used by +.Tn SPP . +Note that the +.Tn IDP +port +space is the same as the +.Tn SPP +port space (i.e. a +.Tn IDP +port +may be +.Dq connected +to a +.Tn SPP +port, with certain +options enabled below). +In addition broadcast packets may be sent +(assuming the underlying network supports +this) by using a reserved +.Dq broadcast address ; +this address +is network interface dependent. +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one, or when trying to send a datagram with the destination +address specified and the socket is already connected; +.It Bq Er ENOTCONN +when trying to send a datagram, but +no destination address is specified, and the socket hasn't been +connected; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er EADDRINUSE +when an attempt +is made to create a socket with a port which has already been +allocated; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Sh SOCKET OPTIONS +.Bl -tag -width [SO_HEADERS_ON_OUTPUT] +.It Bq Dv SO_ALL_PACKETS +When set, this option defeats automatic processing of Error packets, +and Sequence Protocol packets. +.It Bq Dv SO_DEFAULT_HEADERS +The user provides the kernel an +.Tn IDP +header, from which +it gleans the Packet Type. +When requested, the kernel will provide an +.Tn IDP +header, showing +the default packet type, and local and foreign addresses, if +connected. +.It Bq Dv SO_HEADERS_ON_INPUT +When set, the first 30 bytes of any data returned from a read +or recv from will be the initial 30 bytes of the +.Tn IDP +packet, +as described by +.Bd -literal -offset indent +struct idp { + u_short idp_sum; + u_short idp_len; + u_char idp_tc; + u_char idp_pt; + struct ns_addr idp_dna; + struct ns_addr idp_sna; +}; +.Ed +.Pp +This allows the user to determine the packet type, and whether +the packet was a multi-cast packet or directed specifically at +the local host. +When requested, gives the current state of the option, +.Pf ( Dv NSP_RAWIN +or 0). +.It Bq Dv SO_HEADERS_ON_OUTPUT +When set, the first 30 bytes of any data sent +will be the initial 30 bytes of the +.Tn IDP +packet. +This allows the user to determine the packet type, and whether +the packet should be multi-cast packet or directed specifically at +the local host. +You can also misrepresent the sender of the packet. +When requested, gives the current state of the option. +.Pf ( Dv NSP_RAWOUT +or 0). +.It Bq Dv SO_SEQNO +When requested, this returns a sequence number which is not likely +to be repeated until the machine crashes or a very long time has passed. +It is useful in constructing Packet Exchange Protocol packets. +.El +.Sh SEE ALSO +.Xr send 2 , +.Xr recv 2 , +.Xr intro 4 , +.Xr ns 4 +.Sh HISTORY +The +.Nm +protocol appeared in +.Bx 4.3 . diff --git a/usr/src/share/man/man4/imp.4 b/usr/src/share/man/man4/imp.4 new file mode 100644 index 0000000000..1b01897508 --- /dev/null +++ b/usr/src/share/man/man4/imp.4 @@ -0,0 +1,109 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)imp.4 6.5 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt IMP 4 +.Os BSD 4.2 +.Sh NAME +.Nm imp +.Nd +.Tn IMP +raw socket interface +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_IMPLINK SOCK_RAW proto +.Sh DESCRIPTION +The raw imp socket provides direct access to the +.Nm imp +network interface. Users send packets through +the interface using the +.Xr send 2 +calls, and receive packets with the +.Xr recv 2 , +calls. All outgoing packets must have an 1822 96-bit +leader on the front. Likewise, packets received +by the user will have this leader on the front. The +1822 leader and the legal values for the various fields +are defined in the include file +.Aq Pa netimp/if_imp.h . +The raw imp interface automatically installs the length +and destination address in the 1822 leader of all +outgoing packets; these need not be filled in by the user. +.Pp +If the protocol selected, +.Fa proto , +is zero, +the socket will receive +all +.Tn IMP +messages except RFNM and incompletes +which are not input data for a kernel protocol. +If +.Fa proto +is non-zero, +only messages for the specified link type will be received. +.Sh DIAGNOSTICS +An operation on a socket may fail with one of the following +errors: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one, or when trying to send a datagram with the destination +address specified and the socket is already connected; +.It Bq Er ENOTCONN +when trying to send a datagram, but +no destination address is specified, and the socket hasn't been +connected; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er ENOBUFS +eight messages to the destination host are outstanding, +and another eight are already queued for output; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Sh SEE ALSO +.Xr intro 4 , +.Xr inet 4 , +.Xr imp 4 +.Sh HISTORY +The +.Nm +driver appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man4/inet.4 b/usr/src/share/man/man4/inet.4 new file mode 100644 index 0000000000..7fac59e730 --- /dev/null +++ b/usr/src/share/man/man4/inet.4 @@ -0,0 +1,183 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)inet.4 6.6 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt INET 4 +.Os BSD 4.2 +.Sh NAME +.Nm inet +.Nd Internet protocol family +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Sh DESCRIPTION +The Internet protocol family is a collection of protocols +layered atop the +.Em Internet Protocol +.Pq Tn IP +transport layer, and utilizing the Internet address format. +The Internet family provides protocol support for the +.Dv SOCK_STREAM , SOCK_DGRAM , +and +.Dv SOCK_RAW +socket types; the +.Dv SOCK_RAW +interface provides access to the +.Tn IP +protocol. +.Sh ADDRESSING +Internet addresses are four byte quantities, stored in +network standard format (on the +.Tn VAX +these are word and byte +reversed). The include file +.Aq Pa netinet/in.h +defines this address +as a discriminated union. +.Pp +Sockets bound to the Internet protocol family utilize +the following addressing structure, +.Bd -literal -offset indent +struct sockaddr_in { + short sin_family; + u_short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; +}; +.Ed +.Pp +Sockets may be created with the local address +.Dv INADDR_ANY +to effect +.Dq wildcard +matching on incoming messages. +The address in a +.Xr connect 2 +or +.Xr sendto 2 +call may be given as +.Dv INADDR_ANY +to mean +.Dq this host . +The distinguished address +.Dv INADDR_BROADCAST +is allowed as a shorthand for the broadcast address on the primary +network if the first network configured supports broadcast. +.Sh PROTOCOLS +The Internet protocol family is comprised of +the +.Tn IP +transport protocol, Internet Control +Message Protocol +.Pq Tn ICMP , +Transmission Control +Protocol +.Pq Tn TCP , +and User Datagram Protocol +.Pq Tn UDP . +.Tn TCP +is used to support the +.Dv SOCK_STREAM +abstraction while +.Tn UDP +is used to support the +.Dv SOCK_DGRAM +abstraction. A raw interface to +.Tn IP +is available +by creating an Internet socket of type +.Dv SOCK_RAW . +The +.Tn ICMP +message protocol is accessible from a raw socket. +.Pp +The 32-bit Internet address contains both network and host parts. +It is frequency-encoded; the most-significant bit is clear +in Class A addresses, in which the high-order 8 bits are the network +number. +Class B addresses use the high-order 16 bits as the network field, +and Class C addresses have a 24-bit network part. +Sites with a cluster of local networks and a connection to the +.Tn DARPA +Internet may chose to use a single network number for the cluster; +this is done by using subnet addressing. +The local (host) portion of the address is further subdivided +into subnet and host parts. +Within a subnet, each subnet appears to be an individual network; +externally, the entire cluster appears to be a single, uniform +network requiring only a single routing entry. +Subnet addressing is enabled and examined by the following +.Xr ioctl 2 +commands on a datagram socket in the Internet domain; +they have the same form as the +.Dv SIOCIFADDR +command (see +.Xr intro 4 ) . +.Pp +.Bl -tag -width SIOCSIFNETMASK +.It Dv SIOCSIFNETMASK +Set interface network mask. +The network mask defines the network part of the address; +if it contains more of the address than the address type would indicate, +then subnets are in use. +.It Dv SIOCGIFNETMASK +Get interface network mask. +.El +.Sh SEE ALSO +.Xr ioctl 2 , +.Xr socket 2 , +.Xr intro 4 , +.Xr tcp 4 , +.Xr udp 4 , +.Xr ip 4 , +.Xr icmp 4 +.Rs +.%T "An Introductory 4.3 BSD Interprocess Communication Tutorial" +.%B PS1 +.%N 7 +.Re +.Rs +.%T "An Advanced 4.3 BSD Interprocess Communication Tutorial" +.%B PS1 +.%N 8 +.Re +.Sh CAVEAT +The Internet protocol support is subject to change as +the Internet protocols develop. Users should not depend +on details of the current implementation, but rather +the services exported. +.Sh HISTORY +The +.Nm +protocol interface appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man4/ip.4 b/usr/src/share/man/man4/ip.4 new file mode 100644 index 0000000000..781b75cc97 --- /dev/null +++ b/usr/src/share/man/man4/ip.4 @@ -0,0 +1,173 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)ip.4 6.5 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt IP 4 +.Os BSD 4.2 +.Sh NAME +.Nm ip +.Nd Internet Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_INET SOCK_RAW proto +.Sh DESCRIPTION +.Tn IP +is the transport layer protocol used +by the Internet protocol family. +Options may be set at the +.Tn IP +level +when using higher-level protocols that are based on +.Tn IP +(such as +.Tn TCP +and +.Tn UDP ) . +It may also be accessed +through a +.Dq raw socket +when developing new protocols, or +special purpose applications. +.Pp +A single generic option is supported at the +.Tn IP +level, +.Dv IP_OPTIONS , +that may be used to provide +.Tn IP +options to be transmitted in the +.Tn IP +header of each outgoing packet. +Options are set with +.Xr setsockopt 2 +and examined with +.Xr getsockopt 2 . +The format of +.Tn IP +options to be sent is that specified by the +.Tn IP protocol +specification, with one exception: +the list of addresses for Source Route options must include the first-hop +gateway at the beginning of the list of gateways. +The first-hop gateway address will be extracted from the option list +and the size adjusted accordingly before use. +.Tn IP +options may be used with any socket type in the Internet family. +.Pp +Raw +.Tn IP +sockets are connectionless, +and are normally used with the +.Xr sendto +and +.Xr recvfrom +calls, though the +.Xr connect 2 +call may also be used to fix the destination for future +packets (in which case the +.Xr read 2 +or +.Xr recv 2 +and +.Xr write 2 +or +.Xr send 2 +system calls may be used). +.Pp +If +.Fa proto +is 0, the default protocol +.Dv IPPROTO_RAW +is used for outgoing +packets, and only incoming packets destined for that protocol +are received. +If +.Fa proto +is non-zero, that protocol number will be used on outgoing packets +and to filter incoming packets. +.Pp +Outgoing packets automatically have an +.Tn IP +header prepended to +them (based on the destination address and the protocol +number the socket is created with). +Incoming packets are received with +.Tn IP +header and options intact. +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one, or when trying to send a datagram with the destination +address specified and the socket is already connected; +.It Bq Er ENOTCONN +when trying to send a datagram, but +no destination address is specified, and the socket hasn't been +connected; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Pp +The following errors specific to +.Tn IP +may occur when setting or getting +.Tn IP +options: +.Bl -tag -width EADDRNOTAVAILxx +.It Bq Er EINVAL +An unknown socket option name was given. +.It Bq Er EINVAL +The IP option field was improperly formed; +an option field was shorter than the minimum value +or longer than the option buffer provided. +.El +.Sh SEE ALSO +.Xr getsockopt 2 , +.Xr send 2 , +.Xr recv 2 , +.Xr intro 4 , +.Xr icmp 4 , +.Xr inet 4 +.Sh HISTORY +The +.Nm +protocol appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man4/iso.4 b/usr/src/share/man/man4/iso.4 new file mode 100644 index 0000000000..98c8126c48 --- /dev/null +++ b/usr/src/share/man/man4/iso.4 @@ -0,0 +1,191 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)iso.4 6.2 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt ISO 4 +.Os +.Sh NAME +.Nm iso +.Nd +.Tn ISO +protocol family +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Sh DESCRIPTION +The +.Tn ISO +protocol family is a collection of protocols +that uses the +.Tn ISO +address format. +The +.Tn ISO +family provides protocol support for the +.Dv SOCK_SEQPACKET +abstraction through the +.Tn TP +protocol +.Pf ( Tn ISO +8073), +for the +.Dv SOCK_DGRAM +abstraction through the connectionless transport +protocol +.Pf ( Tn ISO +8602), +and for the +.Dv SOCK_RAW +abstraction +by providing direct access (for debugging) to the +.Tn CLNP +.Pf ( Tn ISO +8473) network layer protocol. +.Sh ADDRESSING +.Tn ISO +addresses are based upon +.Tn ISO +8348/AD2, +.%T "Addendum to the Network Service Definition Covering Network Layer Addressing." +.Pp +Sockets bound to the OSI protocol family use +the following address structure: +.Bd -literal +struct iso_addr { + u_char isoa_len; /* length, not including this byte */ + char isoa_genaddr[20]; /* general opaque address */ +}; + +struct sockaddr_iso { + u_char siso_len; /* size of this sockaddr */ + u_char siso_family; /* addressing domain, AF_ISO */ + u_char siso_plen; /* presentation selector length */ + u_char siso_slen; /* session selector length */ + u_char siso_tlen; /* transport selector length */ + struct iso_addr siso_addr; /* network address */ + u_char siso_pad[6]; /* space for gosip v2 SELs */ +}; +#define siso_nlen siso_addr.isoa_len +#define siso_data siso_addr.isoa_genaddr +.Ed +.Pp +The fields of this structure are: +.Bl -tag -width Ds +.It Ar siso_len: +Length of the entire address structure, in bytes, which may grow to +be longer than the 32 bytes show above. +.It Ar siso_family: +Identifies the domain: +.Dv AF_ISO . +.It Ar siso_tlen: +Length of the transport selector. +.It Ar siso_slen: +Length of the session selector. +This is not currently supported by the kernel and is provided as +a convenience for user level programs. +.It Ar siso_plen: +Length of the presentation selector. +This is not currently supported by the kernel and is provided as +a convenience for user level programs. +.It Ar siso_addr: +The network part of the address, described below. +.El +.Sh TRANSPORT ADDRESSING +.Pp +An +.Tn ISO +transport address is similar to an Internet address in that +it contains a network-address portion and a portion that the +transport layer uses to multiplex its services among clients. +In the Internet domain, this portion of the address is called a +.Em port . +In the +.Tn ISO +domain, this is called a +.Em transport selector +(also known at one time as a +.Em transport suffix ) . +While ports are always 16 bits, +transport selectors may be +of (almost) arbitrary size. +.Pp +Since the C language does not provide conveninent variable +length structures, we have separated the selector lengths +from the data themselves. +The network address and various selectors are stored contiguously, +with the network address first, then the transport selector, and so +on. Thus, if you had a nework address of less then 20 bytes, +the transport selector would encroach on space normally reserved +for the network address. +.Pp +.Sh NETWORK ADDRESSING. +.Tn ISO +network addresses are limited to 20 bytes in length. +.Tn ISO +network addresses can take any format. +.Sh PROTOCOLS +The +.Tn ARGO +1.0 implementation of the +.Tn ISO +protocol family comprises +the Connectionless-Mode Network Protocol +.Pq Tn CLNP , +and the Transport Protocol +.Pq Tn TP , +classes 4 and 0, +and +.Tn X.25 . +.Tn TP +is used to support the +.Dv SOCK_SEQPACKET +abstraction. +A raw interface to +.Tn CLNP +is available +by creating an +.Tn ISO +socket of type +.Dv SOCK_RAW . +This is used for +.Tn CLNP +debugging only. +.Sh SEE ALSO +.Xr tp 4 , +.Xr clnp 4 , +.Xr cltp 4 +.Sh HISTORY +The +.Nm +protocol family implementation +.Ud diff --git a/usr/src/share/man/man4/kadb.4 b/usr/src/share/man/man4/kadb.4 new file mode 100644 index 0000000000..83f6cc7bdf --- /dev/null +++ b/usr/src/share/man/man4/kadb.4 @@ -0,0 +1,123 @@ +.\" Copyright (c) 1986, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)kadb.4 6.3 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt KADB 4 +.Os +.Sh NAME +.Nm kdb +.Nd kernel debugging facility +.Sh SYNOPSIS +.Sy options +.Nm KADB +.Sh DESCRIPTION +.Nm Kdb +is a debugging facility for the kernel based on +.Xr adb 1 . +.Nm Kdb +may be used to symbolically examine and modify memory locations, +set breakpoints, and single step the system. +.Pp +Several boot time options are used in conjunction +with the debugger. To +.Dq enable +the debugger, the system +must be booted with the +.Dv RB_KDB +flag (0x40) specified in the +.Em boothowto +register. When the debugger is +enabled the system will read +in and initialize the symbol table from the booted system. +If the +.Dv RB_HALT +flag (0x08) is also specified, the system will +enter the debugger at the earliest possible time to allow +breakpoints to be set before the system starts operation. +From that point on, if the +.Dv RB_NOSYNC +flag (0x04) is set, +typing +.Ql ^[k , +.Ql ^[K , +or +.Ql ^[^K +at the +console causes a trap into the debugger. +.Pp +.Nm Kdb +supports most of the +.Xr adb +command language. The output formats +.Ql f , +.Ql F , +.Ql Y , +are not +supported. The address space maps do not exist, thus the +.Ql \&m , +.Ql \&m , +and +.Ql \&m +commands do not exist. Shell escapes +and command files are not supported. The +.Ql \&r +and +.Ql \&k +commands make no sense and are not recognized. Finally, the +signal arguments to the continue and single step commands are +ignored. +.Sh NOTES +.Nm Kdb +normally runs at a priority level below the interrupt +level of the clock and all devices; the level of the highest priority +software interrupt. If the debugger is entered on the kernel's +per-process stack at an ipl below its normal operating level it +automatically switches to the interrupt stack to avoid potential +overflow of the kernel stack. Should the debugger operate on +the kernel stack the message +.Ql (on kernel stack) +will be printed +on entry. +.Pp +Note also that because +.Nm kdb +uses input from the console to force entry to the debugger it may +not be possible to force entry if the system hangs at a priority +level higher than the console receiver interrupt. +.Sh SEE ALSO +.Xr adb 1 +.Sh HISTORY +The +.Nm +debugging facility +.Ud diff --git a/usr/src/share/man/man4/lo.4 b/usr/src/share/man/man4/lo.4 new file mode 100644 index 0000000000..8fcef273eb --- /dev/null +++ b/usr/src/share/man/man4/lo.4 @@ -0,0 +1,81 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)lo.4 6.6 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt LO 4 +.Os BSD 4.2 +.Sh NAME +.Nm lo +.Nd software loopback network interface +.Sh SYNOPSIS +.Sy pseudo-device +.Nm loop +.Sh DESCRIPTION +The +.Nm loop +interface is a software loopback mechanism which may be +used for performance analysis, software testing, and/or local +communication. +As with other network interfaces, the loopback interface must have +network addresses assigned for each address family with which it is to be used. +These addresses +may be set or changed with the +.Dv SIOCSIFADDR +.Xr ioctl 2 . +The loopback interface should be the last interface configured, +as protocols may use the order of configuration as an indication of priority. +The loopback should +.Em never +be configured first unless no hardware +interfaces exist. +.Sh DIAGNOSTICS +.Bl -diag +.It lo%d: can't handle af%d. +The interface was handed +a message with addresses formatted in an unsuitable address +family; the packet was dropped. +.El +.Sh SEE ALSO +.Xr intro 4 , +.Xr inet 4 , +.Xr ns 4 +.Sh HISTORY +The +.Nm +device appeared in +.Bx 4.2 . +.Sh BUGS +Previous versions of the system enabled the loopback interface +automatically, using a nonstandard Internet address (127.1). +Use of that address is now discouraged; a reserved host address +for the local network should be used instead. diff --git a/usr/src/share/man/man4/man4.i386/Makefile b/usr/src/share/man/man4/man4.i386/Makefile new file mode 100644 index 0000000000..b675c4b994 --- /dev/null +++ b/usr/src/share/man/man4/man4.i386/Makefile @@ -0,0 +1,7 @@ +# @(#)Makefile 0.1 (RWGrimes) 3/25/93 + +MAN4= mem.0 spkr.0 +MLINKS= mem.4 kmem.4 +MANSUBDIR=/i386 + +.include diff --git a/usr/src/share/man/man4/man4.i386/mem.4 b/usr/src/share/man/man4/man4.i386/mem.4 new file mode 100644 index 0000000000..1080cac5f6 --- /dev/null +++ b/usr/src/share/man/man4/man4.i386/mem.4 @@ -0,0 +1,82 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)mem.4 5.3 (Berkeley) 5/2/91 +.\" +.Dd May 2, 1991 +.Dt MEM 4 i386 +.Os +.Sh NAME +.Nm mem , +.Nm kmem +.Nd memory files +.Sh DESCRIPTION +The special file +.Nm /dev/mem +is an interface to the physical memory of the computer. +Byte offsets in this file are interpreted as physical memory addresses. +Reading and writing this file is equivalent to reading and writing +memory itself. +Only offsets within the bounds of +.Nm /dev/mem +are allowed. +.Pp +Kernel virtual memory is accessed through the interface +.Nm /dev/kmem +in the same manner as +.Nm /dev/mem . +Only kernel virtual addresses that are currently mapped to memory are allowed. +.Pp +On +.Tn ISA +the +.Tn I/O +memory space begins at physical address 0x000a0000 +and runs to 0x00100000. +The +per-process data +size +for the current process +is +.Dv UPAGES +long, and ends at virtual +address 0xfe000000. +.Sh FILES +.Bl -tag -width Pa -compact +.It Pa /dev/mem +.It Pa /dev/kmem +.El +.Sh HISTORY +The +.Nm mem , +.Nm kmem +files appeared in +.At v6 . diff --git a/usr/src/share/man/man4/man4.i386/spkr.4 b/usr/src/share/man/man4/man4.i386/spkr.4 new file mode 100644 index 0000000000..b211674893 --- /dev/null +++ b/usr/src/share/man/man4/man4.i386/spkr.4 @@ -0,0 +1,117 @@ +.TH SPKR 4 +.SH NAME +spkr \- console speaker device driver +.SH DESCRIPTION +The speaker device driver allows applications to control the PC console +speaker on an IBM-PC-compatible machine running UNIX. +.PP +Only one process may have this device open at any given time; open() and +close() are used to lock and relinquish it. An attempt to open() when +another process has the device locked will return -1 with an EBUSY error +indication. Writes to the device are interpreted as 'play strings' in a +simple ASCII melody notation. An ioctl() for tone generation at arbitrary +frequencies is also supported. +.PP +Sound-generation does \fInot\fR monopolize the processor; in fact, the driver +spends most of its time sleeping while the PC hardware is emitting +tones. Other processes may emit beeps while the driver is running. +.PP +Applications may call ioctl() on a speaker file descriptor to control the +speaker driver directly; definitions for the ioctl() interface are in +sys/spkr.h. The tone_t structure used in these calls has two fields, +specifying a frequency (in hz) and a duration (in 1/100ths of a second). +A frequency of zero is interpreted as a rest. +.PP +At present there are two such ioctls. SPKRTONE accepts a pointer to a +single tone structure as third argument and plays it. SPKRTUNE accepts a +pointer to the first of an array of tone structures and plays them in +continuous sequence; this array must be terminated by a final member with +a zero duration. +.PP +The play-string language is modelled on the PLAY statement conventions of +IBM BASIC 2.0. The MB, MF and X primitives of PLAY are not useful in a UNIX +environment and are omitted. The `octave-tracking' feature is also new. +.PP +There are 84 accessible notes numbered 1-83 in 7 octaves, each running from +C to B, numbered 0-6; the scale is equal-tempered A440 and octave 3 starts +with middle C. By default, the play function emits half-second notes with the +last 1/16th second being `rest time'. +.PP +Play strings are interpreted left to right as a series of play command groups; +letter case is ignored. Play command groups are as follows: +.PP +CDEFGAB -- letters A through G cause the corresponding note to be played in the +current octave. A note letter may optionally be followed by an \fIaccidental +sign\fR, one of # + or -; the first two of these cause it to be sharped one +half-tone, the last causes it to be flatted one half-tone. It may also be +followed by a time value number and by sustain dots (see below). Time values +are interpreted as for the L command below;. +.PP +O -- if is numeric, this sets the current octave. may also be one +of 'L' or 'N' to enable or disable octave-tracking (it is disabled by default). +When octave-tracking is on, interpretation of a pair of letter notes will +change octaves if necessary in order to make the smallest possible jump between +notes. Thus "olbc" will be played as "olb>c", and "olcb" as "olc, < and O[0123456]. +.PP +> -- bump the current octave up one. +.PP +< -- drop the current octave down one. +.PP +N -- play note n, n being 1 to 84 or 0 for a rest of current time value. +May be followedv by sustain dots. +.PP +L -- sets the current time value for notes. The default is L4, quarter +notes. The lowest possible value is 1; values up to 64 are accepted. L1 sets +whole notes, L2 sets half notes, L4 sets quarter notes, etc.. +.PP +P -- pause (rest), with interpreted as for L. May be followed by +sustain dots. May also be written '~'. +.PP +T -- Sets the number of quarter notes per minute; default is 120. Musical +names for common tempi are: + +.TS +a a a. + Tempo Beats Per Minute +very slow Larghissimo + Largo 40-60 + Larghetto 60-66 + Grave + Lento + Adagio 66-76 +slow Adagietto + Andante 76-108 +medium Andantino + Moderato 108-120 +fast Allegretto + Allegro 120-168 + Vivace + Veloce + Presto 168-208 +very fast Prestissimo +.TE +.PP +M[LNS] -- set articulation. MN (N for normal) is the default; the last 1/8th of +the note's value is rest time. You can set ML for legato (no rest space) or +MS (staccato) 1/4 rest space. +.PP +Notes (that is, CDEFGAB or N command character groups) may be followed by +sustain dots. Each dot causes the note's value to be lengthened by one-half +for each one. Thus, a note dotted once is held for 3/2 of its undotted value; +dotted twice, it is held 9/4, and three times would give 27/8. +.PP +Whitespace in play strings is simply skipped and may be used to separate +melody sections. +.SH BUGS +Due to roundoff in the pitch tables and slop in the tone-generation and timer +hardware (neither of which was designed for precision), neither pitch accuracy +nor timings will be mathematically exact. There is no volume control. +.PP +In play strings which are very long (longer than your system's physical I/O +blocks) note suffixes or numbers may occasionally be parsed incorrectly due +to crossing a block boundary. +.SH FILES +/dev/speaker -- speaker device file +.SH AUTHOR +Eric S. Raymond (esr@snark.thyrsus.com) Feb 1990 diff --git a/usr/src/share/man/man4/netintro.4 b/usr/src/share/man/man4/netintro.4 new file mode 100644 index 0000000000..57a7611f9f --- /dev/null +++ b/usr/src/share/man/man4/netintro.4 @@ -0,0 +1,335 @@ +.\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)netintro.4 6.10 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt NETINTRO 4 +.Os BSD 4.2 +.Sh NAME +.Nm networking +.Nd introduction to networking facilities +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Sh DESCRIPTION +This section is a general introduction to the networking facilities +available in the system. +Documentation in this part of section +4 is broken up into three areas: +.Em protocol families +(domains), +.Em protocols , +and +.Em network interfaces . +.Pp +All network protocols are associated with a specific +.Em protocol family . +A protocol family provides basic services to the protocol +implementation to allow it to function within a specific +network environment. These services may include +packet fragmentation and reassembly, routing, addressing, and +basic transport. A protocol family may support multiple +methods of addressing, though the current protocol implementations +do not. A protocol family is normally comprised of a number +of protocols, one per +.Xr socket 2 +type. It is not required that a protocol family support +all socket types. A protocol family may contain multiple +protocols supporting the same socket abstraction. +.Pp +A protocol supports one of the socket abstractions detailed +in +.Xr socket 2 . +A specific protocol may be accessed either by creating a +socket of the appropriate type and protocol family, or +by requesting the protocol explicitly when creating a socket. +Protocols normally accept only one type of address format, +usually determined by the addressing structure inherent in +the design of the protocol family/network architecture. +Certain semantics of the basic socket abstractions are +protocol specific. All protocols are expected to support +the basic model for their particular socket type, but may, +in addition, provide non-standard facilities or extensions +to a mechanism. For example, a protocol supporting the +.Dv SOCK_STREAM +abstraction may allow more than one byte of out-of-band +data to be transmitted per out-of-band message. +.Pp +A network interface is similar to a device interface. +Network interfaces comprise the lowest layer of the +networking subsystem, interacting with the actual transport +hardware. An interface may support one or more protocol +families and/or address formats. +The SYNOPSIS section of each network interface +entry gives a sample specification +of the related drivers for use in providing +a system description to the +.Xr config 8 +program. +The DIAGNOSTICS section lists messages which may appear on the console +and/or in the system error log, +.Pa /var/log/messages +(see +.Xr syslogd 8 ) , +due to errors in device operation. +.Sh PROTOCOLS +The system currently supports the +.Tn DARPA +Internet +protocols, the Xerox Network Systems(tm) protocols, +and some of the +.Tn ISO OSI +protocols. +Raw socket interfaces are provided to the +.Tn IP +protocol +layer of the +.Tn DARPA +Internet, to the +.Tn IMP +link layer (1822), and to +the +.Tn IDP +protocol of Xerox +.Tn NS . +Consult the appropriate manual pages in this section for more +information regarding the support for each protocol family. +.Sh ADDRESSING +Associated with each protocol family is an address +format. All network address adhere to a general structure, +called a sockaddr, described below. However, each protocol +imposes finer and more specific structure, generally renaming +the variant, which is discussed in the protocol family manual +page alluded to above. +.Bd -literal -offset indent + struct sockaddr { + u_char sa_len; + u_char sa_family; + char sa_data[14]; +}; +.Ed +.Pp +The field +.Ar sa_len +contains the total length of the of the structure, +which may exceed 16 bytes. +The following address values for +.Ar sa_family +are known to the system +(and additional formats are defined for possible future implementation): +.Bd -literal +#define AF_UNIX 1 /* local to host (pipes, portals) */ +#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ +#define AF_IMPLINK 3 /* arpanet imp addresses */ +#define AF_NS 6 /* Xerox NS protocols */ +#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ +#define AF_HYLINK 15 /* NSC Hyperchannel */ +#define AF_ISO 18 /* ISO protocols */ +.Ed +.Sh ROUTING +.Tn UNIX +provides some packet routing facilities. +The kernel maintains a routing information database, which +is used in selecting the appropriate network interface when +transmitting packets. +.Pp +A user process (or possibly multiple co-operating processes) +maintains this database by sending messages over a special kind +of socket. +This supplants fixed size +.Xr ioctl 2 +used in earlier releases. +.Pp +This facility is described in +.Xr route 4 . +.Sh INTERFACES +Each network interface in a system corresponds to a +path through which messages may be sent and received. A network +interface usually has a hardware device associated with it, though +certain interfaces such as the loopback interface, +.Xr lo 4 , +do not. +.Pp +The following +.Xr ioctl +calls may be used to manipulate network interfaces. +The +.Xr ioctl +is made on a socket (typically of type +.Dv SOCK_DGRAM ) +in the desired domain. +Most of the requests supported in earlier releases +take an +.Ar ifreq +structure as its parameter. This structure has the form +.Bd -literal +struct ifreq { +#define IFNAMSIZ 16 + char ifr_name[IFNAMSIZE]; /* if name, e.g. "en0" */ + union { + struct sockaddr ifru_addr; + struct sockaddr ifru_dstaddr; + struct sockaddr ifru_broadaddr; + short ifru_flags; + int ifru_metric; + caddr_t ifru_data; + } ifr_ifru; +#define ifr_addr ifr_ifru.ifru_addr /* address */ +#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ +#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ +#define ifr_flags ifr_ifru.ifru_flags /* flags */ +#define ifr_metric ifr_ifru.ifru_metric /* metric */ +#define ifr_data ifr_ifru.ifru_data /* for use by interface */ +}; +.Ed +.Pp +Calls which are now depricated are: +.Bl -tag -width SIOCGIFBRDADDR +.It Dv SIOCSIFADDR +Set interface address for protocol family. Following the address +assignment, the ``initialization'' routine for +the interface is called. +.It Dv SIOCSIFDSTADDR +Set point to point address for protocol family and interface. +.It Dv SIOCSIFBRDADDR +Set broadcast address for protocol family and interface. +.El +.Pp +.Xr Ioctl +requests to obtain addresses and requests both to set and +retreive other data are still fully supported +and use the +.Ar ifreq +structure: +.Bl -tag -width SIOCGIFBRDADDR +.It Dv SIOCGIFADDR +Get interface address for protocol family. +.It Dv SIOCGIFDSTADDR +Get point to point address for protocol family and interface. +.It Dv SIOCGIFBRDADDR +Get broadcast address for protocol family and interface. +.It Dv SIOCSIFFLAGS +Set interface flags field. If the interface is marked down, +any processes currently routing packets through the interface +are notified; +some interfaces may be reset so that incoming packets are no longer received. +When marked up again, the interface is reinitialized. +.It Dv SIOCGIFFLAGS +Get interface flags. +.It Dv SIOCSIFMETRIC +Set interface routing metric. +The metric is used only by user-level routers. +.It Dv SIOCGIFMETRIC +Get interface metric. +.El +.Pp +There are two requests that make use of a new structure: +.Bl -tag -width SIOCGIFBRDADDR +.It Dv SIOCAIFADDR +An interface may have more than one address associated with it +in some protocols. This request provides a means to +add additional addresses (or modify characteristics of the +primary address if the default address for the address family +is specified). Rather than making separate calls to +set destination or broadcast addresses, or network masks +(now an integral feature of multiple protocols) +a separate structure is used to specify all three facets simultaneously +(see below). +One would use a slightly tailored version of this struct specific +to each family (replacing each sockaddr by one +of the family-specific type). +Where the sockaddr itself is larger than the +default size, one needs to modify the +.Xr ioctl +identifier itself to include the total size, as described in +.Xr ioctl . +.It Dv SIOCDIFADDR +This requests deletes the specified address from the list +associated with an interface. It also uses the +.Ar if_aliasreq +structure to allow for the possibility of protocols allowing +multiple masks or destination addresses, and also adopts the +convention that specification of the default address means +to delete the first address for the interface belonging to +the address family in which the original socket was opened. +.It Dv SIOCGIFCONF +Get interface configuration list. This request takes an +.Ar ifconf +structure (see below) as a value-result parameter. The +.Ar ifc_len +field should be initially set to the size of the buffer +pointed to by +.Ar ifc_buf . +On return it will contain the length, in bytes, of the +configuration list. +.El +.Bd -literal +/* +* Structure used in SIOCAIFCONF request. +*/ +struct ifaliasreq { + char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ + struct sockaddr ifra_addr; + struct sockaddr ifra_broadaddr; + struct sockaddr ifra_mask; +}; +.Ed +.Pp +.Bd -literal +/* +* Structure used in SIOCGIFCONF request. +* Used to retrieve interface configuration +* for machine (useful for programs which +* must know all networks accessible). +*/ +struct ifconf { + int ifc_len; /* size of associated buffer */ + union { + caddr_t ifcu_buf; + struct ifreq *ifcu_req; + } ifc_ifcu; +#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ +#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ +}; +.Ed +.Sh SEE ALSO +.Xr socket 2 , +.Xr ioctl 2 , +.Xr intro 4 , +.Xr config 8 , +.Xr routed 8 +.Sh HISTORY +The +.Nm netintro +manual appeared in +.Bx 4.3 tahoe . diff --git a/usr/src/share/man/man4/ns.4 b/usr/src/share/man/man4/ns.4 new file mode 100644 index 0000000000..2884e23044 --- /dev/null +++ b/usr/src/share/man/man4/ns.4 @@ -0,0 +1,179 @@ +.\" Copyright (c) 1985, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)ns.4 1.6 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt NS 4 +.Os BSD 4.3 +.Sh NAME +.Nm ns +.Nd Xerox Network Systems(tm) protocol family +.Sh SYNOPSIS +.Nm options NS +.Nm options NSIP +.Nm pseudo-device ns +.Sh DESCRIPTION +The +.Tn NS +protocol family is a collection of protocols +layered atop the +.Em Internet Datagram Protocol +.Pq Tn IDP +transport layer, and using the Xerox +.Tn NS +address formats. +The +.Tn NS +family provides protocol support for the +.Dv SOCK_STREAM , SOCK_DGRAM , SOCK_SEQPACKET , +and +.Dv SOCK_RAW +socket types; the +.Dv SOCK_RAW +interface is a debugging tool, allowing you to trace all packets +entering, (or with toggling kernel variable, additionally leaving) the local +host. +.Sh ADDRESSING +.Tn NS +addresses are 12 byte quantities, consisting of a +4 byte Network number, a 6 byte Host number and a 2 byte port number, +all stored in network standard format. +(on the +.Tn VAX +these are word and byte reversed; on the +.Tn Sun +they are not +reversed). The include file +.Aq Pa netns/ns.h +defines the +.Tn NS +address as a structure containing unions (for quicker +comparisons). +.Pp +Sockets in the Internet protocol family use the following +addressing structure: +.Bd -literal -offset indent +struct sockaddr_ns { + short sns_family; + struct ns_addr sns_addr; + char sns_zero[2]; +}; +.Ed +.Pp +where an +.Ar ns_addr +is composed as follows: +.Bd -literal -offset indent +union ns_host { + u_char c_host[6]; + u_short s_host[3]; +}; + +union ns_net { + u_char c_net[4]; + u_short s_net[2]; +}; + +struct ns_addr { + union ns_net x_net; + union ns_host x_host; + u_short x_port; +}; +.Ed +.Pp +Sockets may be created with an address of all zeroes to effect +.Dq wildcard +matching on incoming messages. +The local port address specified in a +.Xr bind 2 +call is restricted to be greater than +.Dv NSPORT_RESERVED +(=3000, in +.Aq Pa netns/ns.h ) +unless the creating process is running +as the super-user, providing a space of protected port numbers. +.Sh PROTOCOLS +The +.Tn NS +protocol family supported by the operating system +is comprised of +the Internet Datagram Protocol +.Pq Tn IDP +.Xr idp 4 , +Error Protocol (available through +.Tn IDP ) , +and +Sequenced Packet Protocol +.Pq Tn SPP +.Xr spp 4 . +.Pp +.Tn SPP +is used to support the +.Dv SOCK_STREAM +and +.Dv SOCK_SEQPACKET +abstraction, +while +.Tn IDP +is used to support the +.Dv SOCK_DGRAM +abstraction. +The Error protocol is responded to by the kernel +to handle and report errors in protocol processing; +it is, however, +only accessible to user programs through heroic actions. +.Sh SEE ALSO +.Xr intro 3 , +.Xr byteorder 3 , +.Xr gethostbyname 3 , +.Xr getnetent 3 , +.Xr getprotoent 3 , +.Xr getservent 3 , +.Xr ns 3 , +.Xr intro 4 , +.Xr spp 4 , +.Xr idp 4 , +.Xr nsip 4 +.Rs +.%T "Internet Transport Protocols" +.%R Xerox Corporation document XSIS +.%N 028112 +.Re +.Rs +.%T "An Advanced 4.3 BSD Interprocess Communication Tutorial" +.Re +.Sh HISTORY +The +.Nm +protocol family +appeared in +.Bx 4.3 . diff --git a/usr/src/share/man/man4/nsip.4 b/usr/src/share/man/man4/nsip.4 new file mode 100644 index 0000000000..85ea3fb23c --- /dev/null +++ b/usr/src/share/man/man4/nsip.4 @@ -0,0 +1,128 @@ +.\" Copyright (c) 1985, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)nsip.4 1.4 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt NSIP 4 +.Os BSD 4.3 +.Sh NAME +.Nm nsip +.Nd software network interface encapsulating ns packets in ip packets. +.Sh SYNOPSIS +.Cd options NSIP +.Fd #include +.Sh DESCRIPTION +The +.Nm nsip +interface is a software mechanism which may be +used to transmit Xerox +.Tn NS Ns (tm) +packets through otherwise uncooperative +networks. +It functions by prepending an +.Tn IP +header, and resubmitting the packet +through the +.Tn UNIX +.Tn IP +machinery. +.Pp +The super-user can advise the operating system of a willing partner +by naming an +.Tn IP +address to be associated with an +.Tn NS +address. +Presently, only specific hosts pairs are allowed, and for each host +pair, an artificial point-to-point interface is constructed. +At some future date, +.Tn IP +broadcast addresses or hosts may be paired +with +.Tn NS +networks or hosts. +.Pp +Specifically, a socket option of +.Dv SO_NSIP_ROUTE +is set on a socket +of family +.Dv AF_NS , +type +.Dv SOCK_DGRAM , +passing the following structure: +.Bd -literal +struct nsip_req { + struct sockaddr rq_ns; /* must be ns format destination */ + struct sockaddr rq_ip; /* must be ip format gateway */ + short rq_flags; +}; +.Ed +.Sh DIAGNOSTICS +.Bl -diag +.It nsip%d: can't handle af%d. +The interface was handed +a message with addresses formatted in an unsuitable address +family; the packet was dropped. +.El +.Sh SEE ALSO +.Xr intro 4 , +.Xr ns 4 +.Sh HISTORY +The +.Nm +interface appeared in +.Bx 4.3 . +.Sh BUGS +It is absurd to have a separate pseudo-device for each pt-to-pt +link. +There is no way to change the +.Tn IP +address for an +.Tn NS +host once the +the encapsulation interface is set up. +The request should honor flags of +.Dv RTF_GATEWAY +to indicate +remote networks, and the absence of +.Dv RTF_UP +should be a clue +to remove that partner. +This was intended to postpone the necessity of rewriting reverse +.Tn ARP +for the +.Xr en 4 +device, and to allow passing +.Tn XNS +packets through an +Arpanet-Milnet gateway, to facilitate testing between some co-operating +universities. diff --git a/usr/src/share/man/man4/null.4 b/usr/src/share/man/man4/null.4 new file mode 100644 index 0000000000..89d2f3a52d --- /dev/null +++ b/usr/src/share/man/man4/null.4 @@ -0,0 +1,56 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)null.4 6.2 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt NULL 4 +.Os BSD 4.4 +.Sh NAME +.Nm null +.Nd the null device +.Sh DESCRIPTION +The +.Nm +device accepts and reads data as any ordinary (and willing) +file \- +but throws it away. The length of the +.Nm null +device is always zero. +.Sh FILES +.Bl -tag -width /dev/null +.It Pa /dev/null +.El +.Sh HISTORY +A +.Nm +device appeared in +.At v7 . diff --git a/usr/src/share/man/man4/pty.4 b/usr/src/share/man/man4/pty.4 new file mode 100644 index 0000000000..46500db58e --- /dev/null +++ b/usr/src/share/man/man4/pty.4 @@ -0,0 +1,212 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)pty.4 6.3 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt PTY 4 +.Os BSD 4.2 +.Sh NAME +.Nm pty +.Nd pseudo terminal driver +.Sh SYNOPSIS +.Nm pseudo-device pty +.Op Ar count +.Sh DESCRIPTION +The +.Xr pty +driver provides support for a device-pair termed a +.Em pseudo terminal . +A pseudo terminal is a pair of character devices, a +.Em master +device and a +.Em slave +device. The slave device provides processes +an interface identical +to that described in +.Xr tty 4 . +However, whereas all other devices which provide the +interface described in +.Xr tty 4 +have a hardware device of some sort behind them, the slave +device has, instead, another process manipulating +it through the master half of the pseudo terminal. +That is, anything written on the master device is +given to the slave device as input and anything written +on the slave device is presented as input on the master +device. +.Pp +In configuring, if an optional +.Ar count +is given in +the specification, that number of pseudo terminal pairs are configured; +the default count is 32. +.Pp +The following +.Xr ioctl 2 +calls apply only to pseudo terminals: +.Bl -tag -width TIOCREMOTE +.It Dv TIOCSTOP +Stops output to a terminal (e.g. like typing +.Ql ^S ) . +Takes +no parameter. +.It Dv TIOCSTART +Restarts output (stopped by +.Dv TIOCSTOP +or by typing +.Ql ^S ) . +Takes no parameter. +.It Dv TIOCPKT +Enable/disable +.Em packet +mode. Packet mode is enabled by specifying (by reference) +a nonzero parameter and disabled by specifying (by reference) +a zero parameter. When applied to the master side of a pseudo +terminal, each subsequent +.Xr read +from the terminal will return data written on the slave part of +the pseudo terminal preceded by a zero byte (symbolically +defined as +.Dv TIOCPKT_DATA ) , +or a single byte reflecting control +status information. In the latter case, the byte is an inclusive-or +of zero or more of the bits: +.Bl -tag -width TIOCPKT_FLUSHWRITE +.It Dv TIOCPKT_FLUSHREAD +whenever the read queue for the terminal is flushed. +.It Dv TIOCPKT_FLUSHWRITE +whenever the write queue for the terminal is flushed. +.It Dv TIOCPKT_STOP +whenever output to the terminal is stopped a la +.Ql ^S . +.It Dv TIOCPKT_START +whenever output to the terminal is restarted. +.It Dv TIOCPKT_DOSTOP +whenever +.Em t_stopc +is +.Ql ^S +and +.Em t_startc +is +.Ql ^Q . +.It Dv TIOCPKT_NOSTOP +whenever the start and stop characters are not +.Ql ^S/^Q . +.Pp +While this mode is in use, the presence of control status information +to be read from the master side may be detected by a +.Xr select 2 +for exceptional conditions. +.Pp +This mode is used by +.Xr rlogin 1 +and +.Xr rlogind 8 +to implement a remote-echoed, locally +.Ql ^S/^Q +flow-controlled +remote login with proper back-flushing of output; it can be +used by other similar programs. +.El +.It Dv TIOCUCNTL +Enable/disable a mode that allows a small number of simple user +.Xr ioctl +commands to be passed through the pseudo-terminal, +using a protocol similar to that of +.Dv TIOCPKT . +The +.Dv TIOCUCNTL +and +.Dv TIOCPKT +modes are mutually exclusive. +This mode is enabled from the master side of a pseudo terminal +by specifying (by reference) +a nonzero parameter and disabled by specifying (by reference) +a zero parameter. +Each subsequent +.Xr read +from the master side will return data written on the slave part of +the pseudo terminal preceded by a zero byte, +or a single byte reflecting a user control operation on the slave side. +A user control command consists of a special +.Xr ioctl +operation with no data; the command is given as +.Dv UIOCCMD Ns (n) , +where +.Ar n +is a number in the range 1-255. +The operation value +.Ar n +will be received as a single byte on the next +.Xr read +from the master side. +The +.Xr ioctl +.Dv UIOCCMD Ns (0) +is a no-op that may be used to probe for +the existence of this facility. +As with +.Dv TIOCPKT +mode, command operations may be detected with a +.Xr select +for exceptional conditions. +.It Dv TIOCREMOTE +A mode for the master half of a pseudo terminal, independent +of +.Dv TIOCPKT . +This mode causes input to the pseudo terminal +to be flow controlled and not input edited (regardless of the +terminal mode). Each write to the control terminal produces +a record boundary for the process reading the terminal. In +normal usage, a write of data is like the data typed as a line +on the terminal; a write of 0 bytes is like typing an end-of-file +character. +.Dv TIOCREMOTE +can be used when doing remote line +editing in a window manager, or whenever flow controlled input +is required. +.El +.Sh FILES +.Bl -tag -width /dev/tty[p-r][0-9a-f]x -compact +.It Pa /dev/pty[p-r][0-9a-f] +master pseudo terminals +.It Pa /dev/tty[p-r][0-9a-f] +slave pseudo terminals +.El +.Sh DIAGNOSTICS +None. +.Sh HISTORY +The +.Nm +driver appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man4/route.4 b/usr/src/share/man/man4/route.4 new file mode 100644 index 0000000000..63ca4f6892 --- /dev/null +++ b/usr/src/share/man/man4/route.4 @@ -0,0 +1,266 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)route.4 6.3 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt ROUTE 4 +.Os +.Sh NAME +.Nm route +.Nd Kernel Packet Forwarding Database +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Ft int +.Fn socket PF_ROUTE SOCK_RAW "int family" +.Sh DESCRIPTION +.Tn UNIX +provides some packet routing facilities. +The kernel maintains a routing information database, which +is used in selecting the appropriate network interface when +transmitting packets. +.Pp +A user process (or possibly multiple co-operating processes) +maintains this database by sending messages over a special kind +of socket. +This supplants fixed size +.Xr ioctl 2 Ns 's +used in earlier releases. +Routing table changes may only be carried out by the super user. +.Pp +The operating system may spontaneously emit routing messages in response +to external events, such as recipt of a re-direct, or failure to +locate a suitable route for a request. +The message types are described in greater detail below. +.Pp +Routing database entries come in two flavors: for a specific +host, or for all hosts on a generic subnetwork (as specified +by a bit mask and value under the mask. +The effect of wildcard or default route may be achieved by using +a mask of all zeros, and there may be hierarchical routes. +.Pp +When the system is booted and addresses are assigned +to the network interfaces, each protocol family +installs a routing table entry for each interface when it is ready for traffic. +Normally the protocol specifies the route +through each interface as a +.Dq direct +connection to the destination host +or network. If the route is direct, the transport layer of +a protocol family usually requests the packet be sent to the +same host specified in the packet. Otherwise, the interface +is requested to address the packet to the gateway listed in the routing entry +(i.e. the packet is forwarded). +.Pp +When routing a packet, +the kernel will first attempt to find a route to the destination host. +Failing that, a search is made for a route to the network of the destination. +Finally, any route to a default +.Pq Dq wildcard +gateway is chosen. +If no entry is found, the destination is declared to be unreachable, +and a routing\-miss message is generated if there are any +listers on the routing control socket described below. +.Pp +A wildcard routing entry is specified with a zero +destination address value. Wildcard routes are used +only when the system fails to find a route to the +destination host and network. The combination of wildcard +routes and routing redirects can provide an economical +mechanism for routing traffic. +.Pp +One opens the channel for passing routing control messasges +by using the socket call shown in the synopsis above: +.Pp +The +.Fa family +paramter may be +.Dv AF_UNSPEC +which will provide +routing information for all address families, or can be restricted +to a specific address family by specifying which one is desired. +There can be more than one routing socket open per system. +.Pp +Messages are formed by a header followed by a small +number of sockadders (now variable length particularly +in the +.Tn ISO +case), interpreted by position, and delimited +by the new length entry in the sockaddr. +An example of a message with four addresses might be an +.Tn ISO +redirect: +Destination, Netmask, Gateway, and Author of the redirect. +The interpretation of which address are present is given by a +bit mask within the header, and the sequence is least significant +to most significant bit within the vector. +.Pp +Any messages sent to the kernel are returned, and copies are sent +to all interested listeners. The kernel will provide the process +id. for the sender, and the sender may use an additional sequence +field to distinguish between outstanding messages. However, +message replies may be lost when kernel buffers are exhausted. +.Pp +The kernel may reject certain messages, and will indicate this +by filling in the +.Ar rtm_errno +field. +The routing code returns +.Dv EEXIST +if +requested to duplicate an existing entry, +.Dv ESRCH +if +requested to delete a non-existent entry, +or +.Dv ENOBUFS +if insufficient resources were available +to install a new route. +In the current implementation, all routing process run locally, +and the values for +.Ar rtm_errno +are available through the normal +.Em errno +mechanism, even if the routing reply message is lost. +.Pp +A process may avoid the expense of reading replies to +its own messages by issuing a +.Xr setsockopt 2 +call indicating that the +.Dv SO_USELOOPBACK +option +at the +.Dv SOL_SOCKET +level is to be turned off. +A process may ignore all messages from the routing socket +by doing a +.Xr shutdown 2 +system call for further input. +.Pp +If a route is in use when it is deleted, +the routing entry will be marked down and removed from the routing table, +but the resources associated with it will not +be reclaimed until all references to it are released. +User processes can obtain information about the routing +entry to a specific destination by using a +.Dv RTM_GET +message, +or by reading the +.Pa /dev/kmem +device, or by issuing a +.Xr getkerninfo 2 +system call. +.Pp +Messages include: +.Bd -literal +#define RTM_ADD 0x1 /* Add Route */ +#define RTM_DELETE 0x2 /* Delete Route */ +#define RTM_CHANGE 0x3 /* Change Metrics, Flags, or Gateway */ +#define RTM_GET 0x4 /* Report Information */ +#define RTM_LOOSING 0x5 /* Kernel Suspects Partitioning */ +#define RTM_REDIRECT 0x6 /* Told to use different route */ +#define RTM_MISS 0x7 /* Lookup failed on this address */ +#define RTM_RESOLVE 0xb /* request to resolve dst to LL addr */ +.Ed +.Pp +A message header consists of: +.Bd -literal +struct rt_msghdr { + u_short rmt_msglen; /* to skip over non-understood messages */ + u_char rtm_version; /* future binary compatability */ + u_char rtm_type; /* message type */ + u_short rmt_index; /* index for associated ifp */ + pid_t rmt_pid; /* identify sender */ + int rtm_addrs; /* bitmask identifying sockaddrs in msg */ + int rtm_seq; /* for sender to identify action */ + int rtm_errno; /* why failed */ + int rtm_flags; /* flags, incl kern & message, e.g. DONE */ + int rtm_use; /* from rtentry */ + u_long rtm_inits; /* which values we are initializing */ + struct rt_metrics rtm_rmx; /* metrics themselves */ +}; +.Ed +.Pp +where +.Bd -literal +struct rt_metrics { + u_long rmx_locks; /* Kernel must leave these values alone */ + u_long rmx_mtu; /* MTU for this path */ + u_long rmx_hopcount; /* max hops expected */ + u_long rmx_expire; /* lifetime for route, e.g. redirect */ + u_long rmx_recvpipe; /* inbound delay-bandwith product */ + u_long rmx_sendpipe; /* outbound delay-bandwith product */ + u_long rmx_ssthresh; /* outbound gateway buffer limit */ + u_long rmx_rtt; /* estimated round trip time */ + u_long rmx_rttvar; /* estimated rtt variance */ +}; +.Ed +.Pp +Flags include the values: +.Bd -literal +#define RTF_UP 0x1 /* route useable */ +#define RTF_GATEWAY 0x2 /* destination is a gateway */ +#define RTF_HOST 0x4 /* host entry (net otherwise) */ +#define RTF_NORMAL 0x8 /* subnet mask is cannonical */ +#define RTF_DYNAMIC 0x10 /* created dynamically (by redirect) */ +#define RTF_MODIFIED 0x20 /* modified dynamically (by redirect) */ +#define RTF_DONE 0x40 /* message confirmed */ +#define RTF_MASK 0x80 /* subnet mask present */ +.Ed +.Pp +Specfiers for metric values in rmx_locks and rtm_inits are: +.Bd -literal +#define RTV_SSTHRESH 0x1 /* init or lock _ssthresh */ +#define RTV_RPIPE 0x2 /* init or lock _recvpipe */ +#define RTV_SPIPE 0x4 /* init or lock _sendpipe */ +#define RTV_HOPCOUNT 0x8 /* init or lock _hopcount */ +#define RTV_RTT 0x10 /* init or lock _rtt */ +#define RTV_RTTVAR 0x20 /* init or lock _rttvar */ +#define RTV_MTU 0x40 /* init or lock _mtu */ +.Ed +.Pp +Specifiers for which addresses are present in the messages are: +.Bd -literal +#define RTA_DST 0x1 /* destination sockaddr present */ +#define RTA_GATEWAY 0x2 /* gateway sockaddr present */ +#define RTA_NETMASK 0x4 /* netmask sockaddr present */ +#define RTA_GENMASK 0x8 /* cloning mask sockaddr present */ +#define RTA_IFP 0x10 /* interface name sockaddr present */ +#define RTA_IFA 0x20 /* interface addr sockaddr present */ +#define RTA_AUTHOR 0x40 /* sockaddr for author of redirect */ +.Ed +.Sh HISTORY +The +.Nm +forwarding database +.Ud diff --git a/usr/src/share/man/man4/spp.4 b/usr/src/share/man/man4/spp.4 new file mode 100644 index 0000000000..8dde3fd58d --- /dev/null +++ b/usr/src/share/man/man4/spp.4 @@ -0,0 +1,191 @@ +.\" Copyright (c) 1985, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)spp.4 1.5 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt SPP 4 +.Os BSD 4.3 +.Sh NAME +.Nm spp +.Nd Xerox Sequenced Packet Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_NS SOCK_STREAM 0 +.Ft int +.Fn socket AF_NS SOCK_SEQPACKET 0 +.Sh DESCRIPTION +The +.Tn SPP +protocol provides reliable, flow-controlled, two-way +transmission of data. It is a byte-stream protocol used to +support the +.Dv SOCK_STREAM +abstraction. +.Tn SPP +uses the standard +.Tn NS Ns (tm) +address formats. +.Pp +Sockets utilizing the +.Tn SPP +protocol are either +.Dq active +or +.Dq passive . +Active sockets initiate connections to passive +sockets. By default +.Tn SPP +sockets are created active; to create a +passive socket the +.Xr listen 2 +system call must be used +after binding the socket with the +.Xr bind 2 +system call. Only +passive sockets may use the +.Xr accept 2 +call to accept incoming connections. Only active sockets may +use the +.Xr connect 2 +call to initiate connections. +.Pp +Passive sockets may +.Dq underspecify +their location to match +incoming connection requests from multiple networks. This +technique, termed +.Dq wildcard addressing , +allows a single +server to provide service to clients on multiple networks. +To create a socket which listens on all networks, the +.Tn NS +address of all zeroes must be bound. +The +.Tn SPP +port may still be specified +at this time; if the port is not specified the system will assign one. +Once a connection has been established the socket's address is +fixed by the peer entity's location. The address assigned the +socket is the address associated with the network interface +through which packets are being transmitted and received. Normally +this address corresponds to the peer entity's network. +.Pp +If the +.Dv SOCK_SEQPACKET +socket type is specified, +each packet received has the actual 12 byte sequenced packet header +left for the user to inspect: +.Bd -literal -offset indent +struct sphdr { + u_char sp_cc; /* connection control */ +#define SP_EM 0x10 /* end of message */ + u_char sp_dt; /* datastream type */ + u_short sp_sid; + u_short sp_did; + u_short sp_seq; + u_short sp_ack; + u_short sp_alo; +}; +.Ed +.Pp +This facilitates the implementation of higher level Xerox protocols +which make use of the data stream type field and the end of message bit. +Conversely, the user is required to supply a 12 byte header, +the only part of which inspected is the data stream type and end of message +fields. +.Pp +For either socket type, +packets received with the Attention bit sent are interpreted as +out of band data. Data sent with +.Dq send(..., ..., ..., Dv MSG_OOB ) +cause the attention bit to be set. +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er ETIMEDOUT +when a connection was dropped +due to excessive retransmissions; +.It Bq Er ECONNRESET +when the remote peer +forces the connection to be closed; +.It Bq Er ECONNREFUSED +when the remote +peer actively refuses connection establishment (usually because +no process is listening to the port); +.It Bq Er EADDRINUSE +when an attempt +is made to create a socket with a port which has already been +allocated; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Sh SOCKET OPTIONS +.Bl -tag -width SO_DEFAULT_HEADERS +.It Dv SO_DEFAULT_HEADERS +when set, this determines the data stream type and whether +the end of message bit is to be set on every ensuing packet. +.It Dv SO_MTU +This specifies the maximum ammount of user data in a single packet. +The default is 576 bytes - sizeof(struct spidp). This quantity +affects windowing \- increasing it without increasing the amount +of buffering in the socket will lower the number of unread packets +accepted. Anything larger than the default will not be forwarded +by a bona fide +.Tn XEROX +product internetwork router. +The data argument for the setsockopt call must be +an unsigned short. +.El +.Sh SEE ALSO +.Xr intro 4 , +.Xr ns 4 +.Sh HISTORY +The +.Nm +protocol appeared in +.Bx 4.3 . +.Sh BUGS +There should be some way to reflect record boundaries in +a stream. +For stream mode, there should be an option to get the data stream type of +the record the user process is about to receive. diff --git a/usr/src/share/man/man4/tcp.4 b/usr/src/share/man/man4/tcp.4 new file mode 100644 index 0000000000..e4ae68cc9a --- /dev/null +++ b/usr/src/share/man/man4/tcp.4 @@ -0,0 +1,178 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)tcp.4 6.5 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt TCP 4 +.Os BSD 4.2 +.Sh NAME +.Nm tcp +.Nd Internet Transmission Control Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_INET SOCK_STREAM 0 +.Sh DESCRIPTION +The +.Tn TCP +protocol provides reliable, flow-controlled, two-way +transmission of data. It is a byte-stream protocol used to +support the +.Dv SOCK_STREAM +abstraction. TCP uses the standard +Internet address format and, in addition, provides a per-host +collection of +.Dq port addresses . +Thus, each address is composed +of an Internet address specifying the host and network, with +a specific +.Tn TCP +port on the host identifying the peer entity. +.Pp +Sockets utilizing the tcp protocol are either +.Dq active +or +.Dq passive . +Active sockets initiate connections to passive +sockets. By default +.Tn TCP +sockets are created active; to create a +passive socket the +.Xr listen 2 +system call must be used +after binding the socket with the +.Xr bind 2 +system call. Only +passive sockets may use the +.Xr accept 2 +call to accept incoming connections. Only active sockets may +use the +.Xr connect 2 +call to initiate connections. +.Pp +Passive sockets may +.Dq underspecify +their location to match +incoming connection requests from multiple networks. This +technique, termed +.Dq wildcard addressing , +allows a single +server to provide service to clients on multiple networks. +To create a socket which listens on all networks, the Internet +address +.Dv INADDR_ANY +must be bound. The +.Tn TCP +port may still be specified +at this time; if the port is not specified the system will assign one. +Once a connection has been established the socket's address is +fixed by the peer entity's location. The address assigned the +socket is the address associated with the network interface +through which packets are being transmitted and received. Normally +this address corresponds to the peer entity's network. +.Pp +.Tn TCP +supports one socket option which is set with +.Xr setsockopt 2 +and tested with +.Xr getsockopt 2 . +Under most circumstances, +.Tn TCP +sends data when it is presented; +when outstanding data has not yet been acknowledged, it gathers +small amounts of output to be sent in a single packet once +an acknowledgement is received. +For a small number of clients, such as window systems +that send a stream of mouse events which receive no replies, +this packetization may cause significant delays. +Therefore, +.Tn TCP +provides a boolean option, +.Dv TCP_NODELAY +(from +.Aq Pa netinet/tcp.h , +to defeat this algorithm. +The option level for the +.Xr setsockopt +call is the protocol number for +.Tn TCP , +available from +.Xr getprotobyname 3 . +.Pp +Options at the +.Tn IP +transport level may be used with +.Tn TCP ; +see +.Xr ip 4 . +Incoming connection requests that are source-routed are noted, +and the reverse source route is used in responding. +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er ETIMEDOUT +when a connection was dropped +due to excessive retransmissions; +.It Bq Er ECONNRESET +when the remote peer +forces the connection to be closed; +.It Bq Er ECONNREFUSED +when the remote +peer actively refuses connection establishment (usually because +no process is listening to the port); +.It Bq Er EADDRINUSE +when an attempt +is made to create a socket with a port which has already been +allocated; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Sh SEE ALSO +.Xr getsockopt 2 , +.Xr socket 2 , +.Xr intro 4 , +.Xr inet 4 , +.Xr ip 4 +.Sh HISTORY +The +.Nm +protocol stack appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man4/tp.4 b/usr/src/share/man/man4/tp.4 new file mode 100644 index 0000000000..5b769377ba --- /dev/null +++ b/usr/src/share/man/man4/tp.4 @@ -0,0 +1,727 @@ +.\" Copyright (c) 1990, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)tp.4 6.4 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt TP 4 +.Os +.Sh NAME +.Nm TP +.Nd +.Tn ISO +Transport Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Fd #include +.Ft int +.Fn socket "[AF_INET, AF_ISO]" SOCK_SEQPACKET 0 +.Sh DESCRIPTION +.Pp +The +.Tn TP +protocol provides reliable, flow-controlled, two-way +transmission of data and record boundaries. +It is a byte-stream protocol and is accessed according to +the +.Dv SOCK_SEQPACKET +abstraction. +The +.Tn TP +protocol makes use of a standard +.Tn ISO +address format, +including a Network Service Access Point, and a Transport Service Entity +Selector. +Subclass 4 may make use of the internet +Internet address format. +.Pp +Sockets utilizing the tp protocol are either +.Dq active +or +.Dq passive . +Active sockets initiate connections to passive +sockets. By default +.Tn TCP +sockets are created active; to create a +passive socket the +.Xr listen 2 +system call must be used +after binding the socket with the +.Xr bind 2 +system call. Only +passive sockets may use the +.Xr accept 2 +call to accept incoming connections. Only active sockets may +use the +.Xr connect 2 +call to initiate connections. +.Pp +Passive sockets may +.Dq underspecify +their location to match +incoming connection requests from multiple networks. This +technique, termed +.Dq wildcard addressing , +allows a single +server to provide service to clients on multiple networks. +To create a socket which listens on all networks, the +.Tn NSAP +portion +of the bound address must be void (of length zero). +The Transport Selector may still be specified +at this time; if the port is not specified the system will assign one. +Once a connection has been established the socket's address is +fixed by the peer entity's location. The address assigned the +socket is the address associated with the network interface +through which packets are being transmitted and received. +.Pp +The +.Tn ISO +Transport Protocol implemented for +.Tn AOS R2 +at the University of Wisconsin - Madison, +and modified for inclusion in the Berkeley Software Distribution, +includes classes 0 and 4 +of the +.Tn ISO +transport protocols +as specified in +the June 1986 version of +.Tn IS +8073. +Class 4 of the protocol provides reliable, sequenced, +flow-controlled, two-way +transmission of data packets with an alternate stop-and-wait data path called +the "expedited data" service. +Class 0 is essentially a null transport protocol, which is used +when the underlying network service provides reliable, sequenced, +flow-controlled, two-way data transmission. +Class 0 does not provide the expedited data service. +The protocols are implemented as a single transport layer entity +that coexists with the Internet protocol suite. +Class 0 may be used only in the +.Tn ISO +domain. +Class 4 may be used in the Internet domain as well as in the +.Tn ISO +domain. +.Pp +Two system calls were modified from the previous +release of the Berkeley Software Distribution +to permit the support the end-of-transport-service-data-unit +.Pq Dv EOTSDU +indication, and for the receipt and transmission of user +connect, confirm, and disconnect data. +See +.Xr sendmsg 2 +and +.Xr recmsgv 2 , +and further discussion +below for the formats of the data in the ancillary data buffer. +If the +.Dv EOTSDU +is not needed, the normal +.Xr read 2 , +and +.Xr write 2 +system calls may be used. +.Pp +Through the +.Xr getsockopt +and +.Xr setsockopt +system calls, +.Tn TP +supports several options +to control such things as negotiable options +in the protocol and protocol strategies. +The options are defined in +.Aq Pa netiso/tp_user.h , +and are described below. +.Pp +In the tables below, +the options marked with a pound sign +.Ql \&# +may be used +with +.Xr setsockopt +after a connection is established. +Others must be used before the connection +is established, in other words, +before calling +.Xr connect +or +.Xr accept . +All options may be used +with +.Xr getsockopt +before or +after a connection is established. +.Bl -tag -width TPOPT_PSTATISTICS +.It Dv TPOPT_CONN_DATA +(char *) [none] +.br +Data to send on +.Xr connect . +The passive user may issue a +.Xr getsockopt +call to retrieve a connection request's user data, +after having done the +.Xr accept +system call without implying confirmation of the connection. +.Pp +The data may also be retrieved by issuing a +.Xr recvmsg +request for ancillary data only, +without implying confirmation of the connection. +The returned +.Va cmsghdr +will contain +.Dv SOL_TRANSPORT +for the +.Va csmg_level +and +.Dv TPOPT_CONN_DATA +for +.Va cmsg_type. +.It Dv TPOPT_DISC_DATA \&# +(char *) [none] +.br +Data to send on +.Xr close . +Disconnect data may be sent by the side initiating the close +but not by the passive side ("passive" with respect to the closing +of the connection), so there is no need to read disconnect data +after calling +.Xr close . +This may be sent by a +.Xr setsockopt +system call, or by issuing a +.Xr sendmsg +request specifying ancillary data only. +The user-provided +.Va cmsghdr +must contain +.Dv SOL_TRANSPORT +for +.Va csmg_level +and +.Dv TPOPT_DISC_DATA +for +.Va cmsg_type . +Sending of disconnect data will in of itself tear down (or reject) +the connection. +.It Dv TPOPT_CFRM_DATA \&# +(char *) [none] +.br +Data to send when confirming a connection. +This may aslo be sent by a +.Xr setsockopt +system call, or by issuing a +.Xr sendmsg +request, as above. +Sending of connect confirm data will cause the connection +to be confirmed rather than rejected. +.It Dv TPOPT_PERF_MEAS \&# +Boolean. +.br +When +.Xr true , +performance measurements will be kept +for this connection. +When set before a connection is established, the +active side will use a locally defined parameter on the +connect request packet; if the peer is another +.Tn ARGO +implementation, this will cause performance measurement to be +turned on +on the passive side as well. +See +.Xr tpperf 8 . +.It Dv TPOPT_PSTATISTICS +No associated value on input. +On output, +.Ar struct tp_pmeas . +.Pp +This command is used to read the performance statistics accumulated +during a connection's lifetime. +It can only be used with +.Xr getsockopt . +The structure it returns is described in +.Aq Pa netiso/tp_stat.h . +See +.Xr tpperf 8 . +.It Dv TPOPT_FLAGS +unsigned integer. [0x0] +.br +This command can only be used with +.Xr getsockopt . +See the description of the flags below. +.It Dv TPOPT_PARAMS +.Ar struct tp_conn_param +.br +Used to get or set a group parameters for a connection. +The +.Ar struct tp_conn_param +is the argument used with the +.Xr getsockopt +or +.Xr setsockopt +system call. +It is described in +.Aq Pa netiso/tp_user.h . +.Pp +The fields of the +.Ar tp_conn_param +structure are +described below. +.El +.Pp +.Em Values for TPOPT_PARAMS: +.Bl -tag -width p_sendack_ticks +.It Ar p_Nretrans +nonzero short integer [1] +.br +Number of times a TPDU +will be retransmitted before the +local TP entity closes a connection. +.It Ar p_dr_ticks +nonzero short integer [various] +.br +Number of clock ticks between retransmissions of disconnect request +TPDUs. +.It Ar p_dt_ticks +nonzero short integer [various] +.br +Number of clock ticks between retransmissions of data +TPDUs. +This parameter applies only to class 4. +.It Ar p_cr_ticks +nonzero short integer [various] +.br +Number of clock ticks between retransmissions of connection request +TPDUs. +.It Ar p_cc_ticks +nonzero short integer [various] +.br +Number of clock ticks between retransmissions of connection confirm +TPDUs. +This parameter applies only to class 4. +.It Ar p_x_ticks +nonzero short integer [various] +.br +Number of clock ticks between retransmissions of expedited data +TPDUs. +This parameter applies only to class 4. +.It Ar p_sendack_ticks +nonzero short integer [various] +.br +Number of clock ticks that the local TP entity +will wait before sending an acknowledgment for normal data +(not applicable if the acknowlegement strategy is +.Dv TPACK_EACH ) . +This parameter applies only to class 4. +.It Ar p_ref_ticks +nonzero short integer [various] +.br +Number of clock ticks for which a reference will +be considered frozen after the connection to which +it applied is closed. +This parameter applies to classes 4 and 0 in the +.Tn ARGO +implementation, despite the fact that +the frozen reference function is required only for +class 4. +.It Ar p_inact_ticks +nonzero short integer [various] +.br +Number of clock ticks without an incoming packet from the peer after which +.Tn TP +close the connection. +This parameter applies only to class 4. +.It Ar p_keepalive_ticks +nonzero short integer [various] +.br +Number of clock ticks between acknowledgments that are sent +to keep an inactive connection open (to prevent the peer's +inactivity control function from closing the connection). +This parameter applies only to class 4. +.It Ar p_winsize +short integer between 128 and 16384. [4096 bytes] +.br +The buffer space limits in bytes for incoming and outgoing data. +There is no way to specify different limits for incoming and outgoing +paths. +The actual window size at any time +during the lifetime of a connection +is a function of the buffer size limit, the negotiated +maximum TPDU +size, and the +rate at which the user program receives data. +This parameter applies only to class 4. +.It Ar p_tpdusize +unsigned char between 0x7 and 0xd. +[0xc for class 4] [0xb for class 0] +.br +Log 2 of the maximum TPDU size to be negotiated. +The +.Tn TP +standard +.Pf ( Tn ISO +8473) gives an upper bound of +0xd for class 4 and 0xb for class 0. +The +.Tn ARGO +implementation places upper bounds of +0xc on class 4 and 0xb on class 0. +.It Ar p_ack_strat +.Dv TPACK_EACH +or +.Dv TPACK_WINDOW. +.Bq Dv TPACK_WINDOW +.br +This parameter applies only to class 4. +Two acknowledgment strategies are supported: +.Pp +.Dv TPACK_EACH means that each data TPDU +is acknowledged +with an AK TPDU. +.Pp +.Dv TPACK_WINDOW +means that upon receipt of the packet that represents +the high edge of the last window advertised, and AK TPDU is generated. +.It Ar p_rx_strat +4 bit mask +.Bq Dv TPRX_USE_CW No \&|\ Dv TPRX_FASTSTART +over +connectionless network protocols] +.Pf [ Dv TPRX_USE_CW +over +connection-oriented network protocols] +.br +This parameter applies only to class 4. +The bit mask may include the following values: +.Pp +.Dv TPRX_EACH : +When a retransmission timer expires, retransmit +each packet in the send window rather than +just the first unacknowledged packet. +.Pp +.Dv TPRX_USE_CW : +Use a "congestion window" strategy borrowed +from Van Jacobson's congestion window strategy for TCP. +The congestion window size is set to one whenever +a retransmission occurs. +.Pp +.Dv TPRX_FASTSTART : +Begin sending the maximum amount of data permitted +by the peer (subject to availability). +The alternative is to start sending slowly by +pretending the peer's window is smaller than it is, and letting +it slowly grow up to the real peer's window size. +This is to smooth the effect of new connections on a congested network +by preventing a transport connection from suddenly +overloading the network with a burst of packets. +This strategy is also due to Van Jacobson. +.It Ar p_class +5 bit mask +.Bq Dv TP_CLASS_4 No \&|\ Dv TP_CLASS_0 +.br +Bit mask including one or both of the values +.Dv TP_CLASS_4 +and +.Dv TP_CLASS_0 . +The higher class indicated is the preferred class. +If only one class is indicated, negotiation will not occur +during connection establishment. +.It Ar p_xtd_format +Boolean. +[false] +.br +Boolean indicating that extended format shall be negotiated. +This parameter applies only to class 4. +.It Ar p_xpd_service +Boolean. +[true] +.br +Boolean indicating that +the expedited data transport service will be negotiated. +This parameter applies only to class 4. +.It Ar p_use_checksum +Boolean. +[true] +.br +Boolean indicating the the use of checksums will be negotiated. +This parameter applies only to class 4. +.It Ar p_use_nxpd +Reserved for future use. +.It Ar p_use_rcc +Reserved for future use. +.It Ar p_use_efc +Reserved for future use. +.It Ar p_no_disc_indications +Boolean. +[false] +.Pp +Boolean indicating that the local +.Tn TP +entity shall not issue +indications (signals) when a +.Tn TP +connection is disconnected. +.It Ar p_dont_change_params +Boolean. [false] +.br +If +.Em true +the +.Tn TP +entity will not override +any of the other values given in this structure. +If the values cannot be used, the +.Tn TP +entity will drop, disconnect, +or refuse to establish the connection to which this structure pertains. +.It Ar p_netservice +One of { +.Dv ISO_CLNS , +.Dv ISO_CONS , +.Dv ISO_COSNS , +.Dv IN_CLNS } . +.Pf [ Dv ISO_CLNS ] +.br +Indicates which network service is to be used. +.Pp +.Dv ISO_CLNS +indicates the connectionless network service provided +by CLNP +.Pf ( Tn ISO +8473). +.Pp +.Dv ISO_CONS +indicates the connection-oriented network service provided +by X.25 +.Pf ( Tn ISO +8208) and +.Tn ISO +8878. +.Pp +.Dv ISO_COSNS +indicates the +connectionless network service running over a +connection-oriented subnetwork service: CLNP +.Pf ( Tn ISO +8473) over X.25 +.Pf ( Tn ISO +8208). +.Pp +.Dv IN_CLNS +indicates the +DARPA Internet connectionless network service provided by IP (RFC 791). +.It Ar p_dummy +Reserved for future use. +.El +.Pp +The +.Dv TPOPT_FLAGS +option is used for obtaining +various boolean-valued options. +Its meaning is as follows. +The bit numbering used is that of the RT PC, which means that bit +0 is the most significant bit, while bit 8 is the least significant bit. +.sp 1 +.Em Values for TPOPT_FLAGS: +.Bl -tag -width Bitsx +.It Sy Bits +.Sy Description [Default] +.It \&0 +.Dv TPFLAG_NLQOS_PDN : +set when the quality of the +network service is +similar to that of a public data network. +.It \&1 +.Dv TPFLAG_PEER_ON_SAMENET : +set when the peer +.Tn TP +entity +is considered to be on the same network as the local +.Tn TP +entity. +.It \&2 +Not used. +.It \&3 +.Dv TPFLAG_XPD_PRES : +set when expedited data are present +[0] +.It 4\&..7 +Reserved. +.El +.Sh ERROR VALUES +.Pp +The +.Tn TP +entity returns +.Va errno +error values as defined in +.Aq Pa sys/errno.h +and +.Aq Pa netiso/iso_errno.h . +User programs may print messages associated with these value by +using an expanded version of +.Xr perror +found in the +.Tn ISO +library, +.Pa libisodir.a . +.Pp +If the +.Tn TP +entity encounters asynchronous events +that will cause a transport connection to be closed, +such as +timing out while retransmitting a connect request TPDU, +or receiving a DR TPDU, +the +.Tn TP +entity issues a +.Dv SIGURG +signal, indicating that +disconnection has occurred. +If the signal is issued during a +a system call, the system call may be interrupted, +in which case the +.Va errno +value upon return from the system call is +.Er EINTR. +If the signal +.Dv SIGURG +is being handled by reading +from the socket, and it was a +.Xr accept 2 +that +timed out, the read may result in +.Er ENOTSOCK , +because the +.Xr accept +call had not yet returned a +legitimate socket descriptor when the signal was handled. +.Dv ETIMEDOUT +(or a some other errno value appropriate to the +type of error) is returned if +.Dv SIGURG +is blocked +for the duration of the system call. +A user program should take one of the following approaches: +.Bl -tag -width Ds +.It Block Dv SIGURG +If the program is servicing +only one connection, it can block or ignore +.Dv SIGURG +during connection +establishment. +The advantage of this is that the +.Va errno +value +returned is somewhat meaningful. +The disadvantage of this is that +if ignored, disconnection and expedited data indications could be +missed. +For some programs this is not a problem. +.It Handle Dv SIGURG +If the program is servicing more than one connection at a time +or expedited data may arrive or both, the program may elect to +service +.Dv SIGURG . +It can use the +.Fn getsockopt ...TPOPT_FLAGS... +system +call to see if the signal +was due to the arrival of expedited data or due to a disconnection. +In the latter case, +.Xr getsockopt +will return +.Er ENOTCONN . +.El +.Sh SEE ALSO +.Xr tcp 4 , +.Xr netstat 1 , +.Xr iso 4 , +.Xr clnp 4 , +.Xr cltp 4 , +.Xr ifconfig 8 . +.Sh HISTORY +The +.Nm +protocol +.Ud +.Sh BUGS +The protocol definition of expedited data is slightly problematic, +in a way that renders expedited data almost useless, +if two or more packets of expedited data are send within +time epsilon, where epsilon +depends on the application. +The problem is not of major significance since most applications +do not use transport expedited data. +The problem is this: +the expedited data acknowledgment TPDU +has no field for conveying +credit, thus it is not possible for a +.Tn TP +entity to inform its peer +that "I received your expedited data but have no room to receive more." +The +.Tn TP +entity has the choice of acknowledging receipt of the +XPD TPDU: +.Bl -tag -width Ds +.It "when the user receives the" XPD TSDU +which may be a fairly long time, +which may cause the sending +.Tn TP +entity to retransmit the packet, +and possibly to close the connection after retransmission, or +.It "when the" Tn TP No "entity receives it" +so the sending entity does not retransmit or close the connection. +If the sending user then tries to send more expedited data +.Dq soon , +the expedited data will not be acknowledged (until the +receiving user receives the first XPD TSDU). +.El +.Pp +The +.Tn ARGO +implementation acknowledges XPD TPDUs +immediately, +in the hope that most users will not use expedited data requently +enough for this to be a problem. diff --git a/usr/src/share/man/man4/udp.4 b/usr/src/share/man/man4/udp.4 new file mode 100644 index 0000000000..1732a74ed8 --- /dev/null +++ b/usr/src/share/man/man4/udp.4 @@ -0,0 +1,137 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)udp.4 6.5 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt UDP 4 +.Os BSD 4.2 +.Sh NAME +.Nm udp +.Nd Internet User Datagram Protocol +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Ft int +.Fn socket AF_INET SOCK_DGRAM 0 +.Sh DESCRIPTION +.Tn UDP +is a simple, unreliable datagram protocol which is used +to support the +.Dv SOCK_DGRAM +abstraction for the Internet +protocol family. +.Tn UDP +sockets are connectionless, and are +normally used with the +.Xr sendto +and +.Xr recvfrom +calls, though the +.Xr connect 2 +call may also be used to fix the destination for future +packets (in which case the +.Xr recv 2 +or +.Xr read 2 +and +.Xr send 2 +or +.Xr write 2 +system calls may be used). +.Pp +.Tn UDP +address formats are identical to those used by +.Tn TCP . +In particular +.Tn UDP +provides a port identifier in addition +to the normal Internet address format. Note that the +.Tn UDP +port +space is separate from the +.Tn TCP +port space (i.e. a +.Tn UDP +port +may not be +.Dq connected +to a +.Tn TCP +port). In addition broadcast +packets may be sent (assuming the underlying network supports +this) by using a reserved +.Dq broadcast address ; +this address +is network interface dependent. +.Pp +Options at the +.Tn IP +transport level may be used with +.Tn UDP ; +see +.Xr ip 4 . +.Sh DIAGNOSTICS +A socket operation may fail with one of the following errors returned: +.Bl -tag -width [EADDRNOTAVAIL] +.It Bq Er EISCONN +when trying to establish a connection on a socket which +already has one, or when trying to send a datagram with the destination +address specified and the socket is already connected; +.It Bq Er ENOTCONN +when trying to send a datagram, but +no destination address is specified, and the socket hasn't been +connected; +.It Bq Er ENOBUFS +when the system runs out of memory for +an internal data structure; +.It Bq Er EADDRINUSE +when an attempt +is made to create a socket with a port which has already been +allocated; +.It Bq Er EADDRNOTAVAIL +when an attempt is made to create a +socket with a network address for which no network interface +exists. +.El +.Sh SEE ALSO +.Xr getsockopt 2 , +.Xr recv 2 , +.Xr send 2 , +.Xr socket 2 , +.Xr intro 4 , +.Xr inet 4 , +.Xr ip 4 +.Sh HISTORY +The +.Nm +protocol appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man4/unix.4 b/usr/src/share/man/man4/unix.4 new file mode 100644 index 0000000000..3ca5b4a842 --- /dev/null +++ b/usr/src/share/man/man4/unix.4 @@ -0,0 +1,168 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)unix.4 6.3 (Berkeley) 3/28/91 +.\" +.Dd March 28, 1991 +.Dt UNIX 4 +.Os +.Sh NAME +.Nm unix +.Nd +.Tn UNIX Ns -domain +protocol family +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Sh DESCRIPTION +The +.Tn UNIX Ns -domain +protocol family is a collection of protocols +that provides local (on-machine) interprocess +communication through the normal +.Xr socket 2 +mechanisms. +The +.Tn UNIX Ns -domain +family supports the +.Dv SOCK_STREAM +and +.Dv SOCK_DGRAM +socket types and uses +filesystem pathnames for addressing. +.Sh ADDRESSING +.Tn UNIX Ns -domain +addresses are variable-length filesystem pathnames of +at most 104 characters. +The include file +.Aq Pa sys/un.h +defines this address: +.Bd -literal -offset indent +struct sockaddr_un { +u_char sun_len; +u_char sun_family; +char sun_path[104]; +}; +.Ed +.Pp +Binding a name to a +.Tn UNIX Ns -domain +socket with +.Xr bind 2 +causes a socket file to be created in the filesystem. +This file is +.Em not +removed when the socket is closed\(em\c +.Xr unlink 2 +must be used to remove the file. +.Pp +The +.Tn UNIX Ns -domain +protocol family does not support broadcast addressing or any form +of +.Dq wildcard +matching on incoming messages. +All addresses are absolute- or relative-pathnames +of other +.Tn UNIX Ns -domain +sockets. +Normal filesystem access-control mechanisms are also +applied when referencing pathnames; e.g., the destination +of a +.Xr connect 2 +or +.Xr sendto 2 +must be writable. +.Sh PROTOCOLS +The +.Tn UNIX Ns -domain +protocol family is comprised of simple +transport protocols that support the +.Dv SOCK_STREAM +and +.Dv SOCK_DGRAM +abstractions. +.Dv SOCK_STREAM +sockets also support the communication of +.Ux +file descriptors through the use of the +.Ar msg_control +field in the +.Ar msg +argument to +.Xr sendmsg 2 +and +.Xr recvmsg 2 . +.Pp +Any valid descriptor may be sent in a message. +The file descriptor(s) to be passed are described using a +.Ar struct cmsghdr +that is defined in the include file +.Aq Pa sys/socket.h . +The type of the message is +.Dv SCM_RIGHTS , +and the data portion of the messages is an array of integers +representing the file descriptors to be passed. +The number of descriptors being passed is defined +by the length field of the message; +the length field is the sum of the size of the header +plus the size of the array of file descriptors. +.Pp +The received descriptor is a +.Em duplicate +of the sender's descriptor, as if it were created with a call to +.Xr dup 2 . +Per-process descriptor flags, set with +.Xr fcntl 2 , +are +.Em not +passed to a receiver. +Descriptors that are awaiting delivery, or that are +purposely not received, are automatically closed by the system +when the destination socket is closed. +.Sh SEE ALSO +.Xr socket 2 , +.Xr intro 4 +.Rs +.%T "An Introductory 4.3 BSD Interprocess Communication Tutorial" +.%B PS1 +.%N 7 +.Re +.Rs +.%T "An Advanced 4.3 BSD Interprocess Communication Tutorial" +.%B PS1 +.%N 8 +.Re +.Sh HISTORY +The +.Tn UNIX Ns -domain +protocol manual +.Ud diff --git a/usr/src/share/man/man5/Makefile b/usr/src/share/man/man5/Makefile new file mode 100644 index 0000000000..1b89b4c391 --- /dev/null +++ b/usr/src/share/man/man5/Makefile @@ -0,0 +1,9 @@ +# @(#)Makefile 0.1 (RWGrimes) 3/25/93 +# Clean up and added pcfs, humm should pcfs be a subdir i386? + +MAN5= a.out.0 acct.0 core.0 dir.0 disktab.0 fs.0 fstab.0 group.0 \ + hosts.0 networks.0 passwd.0 pcfs.0 phones.0 printcap.0 protocols.0 \ + remote.0 resolver.0 services.0 shells.0 stab.0 types.0 utmp.0 +MLINKS= fs.5 inode.5 utmp.5 wtmp.5 + +.include diff --git a/usr/src/share/man/man5/a.out.5 b/usr/src/share/man/man5/a.out.5 new file mode 100644 index 0000000000..2c23aad4c9 --- /dev/null +++ b/usr/src/share/man/man5/a.out.5 @@ -0,0 +1,396 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" This man page is derived from documentation contributed to Berkeley by +.\" Donn Seeley at UUNET Technologies, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)a.out.5 6.3 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt A.OUT 5 +.Os +.Sh NAME +.Nm a.out +.Nd format of executable binary files +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +The include file +.Aq Pa a.out.h +declares three structures and several macros. +The structures describe the format of +executable machine code files +.Pq Sq binaries +on the system. +.Pp +A binary file consists of up to 7 sections. +In order, these sections are: +.Bl -tag -width "text relocations" +.It exec header +Contains parameters used by the kernel +to load a binary file into memory and execute it, +and by the link editor +.Xr ld 1 +to combine a binary file with other binary files. +This section is the only mandatory one. +.It text segment +Contains machine code and related data +that are loaded into memory when a program executes. +May be loaded read-only. +.It data segment +Contains initialized data; always loaded into writable memory. +.It text relocations +Contains records used by the link editor +to update pointers in the text segment when combining binary files. +.It data relocations +Like the text relocation section, but for data segment pointers. +.It symbol table +Contains records used by the link editor +to cross reference the addresses of named variables and functions +.Pq Sq symbols +between binary files. +.It string table +Contains the character strings corresponding to the symbol names. +.El +.Pp +Every binary file begins with an +.Fa exec +structure: +.Bd -literal -offset indent +struct exec { + unsigned short a_mid; + unsigned short a_magic; + unsigned long a_text; + unsigned long a_data; + unsigned long a_bss; + unsigned long a_syms; + unsigned long a_entry; + unsigned long a_trsize; + unsigned long a_drsize; +}; +.Ed +.Pp +The fields have the following functions: +.Bl -tag -width a_trsize +.It Fa a_mid +Contains a bit pattern that +identifies binaries that were built for +certain sub-classes of an architecture +.Pq Sq machine IDs +or variants of the operating system on a given architecture. +The kernel may not support all machine IDs +on a given architecture. +The +.Fa a_mid +field is not present on some architectures; +in this case, the +.Fa a_magic +field has type +.Em unsigned long . +.It Fa a_magic +Contains a bit pattern +.Pq Sq magic number +that uniquely identifies binary files +and distinguishes different loading conventions. +The field must contain one of the following values: +.Bl -tag -width ZMAGIC +.It Dv OMAGIC +The text and data segments immediately follow the header +and are contiguous. +The kernel loads both text and data segments into writable memory. +.It Dv NMAGIC +As with +.Dv OMAGIC , +text and data segments immediately follow the header and are contiguous. +However, the kernel loads the text into read-only memory +and loads the data into writable memory at the next +page boundary after the text. +.It Dv ZMAGIC +The kernel loads individual pages on demand from the binary. +The header, text segment and data segment are all +padded by the link editor to a multiple of the page size. +Pages that the kernel loads from the text segment are read-only, +while pages from the data segment are writable. +.El +.It Fa a_text +Contains the size of the text segment in bytes. +.It Fa a_data +Contains the size of the data segment in bytes. +.It Fa a_bss +Contains the number of bytes in the +.Sq bss segment +and is used by the kernel to set the initial break +.Pq Xr brk 2 +after the data segment. +The kernel loads the program so that this amount of writable memory +appears to follow the data segment and initially reads as zeroes. +.It Fa a_syms +Contains the size in bytes of the symbol table section. +.It Fa a_entry +Contains the address in memory of the entry point +of the program after the kernel has loaded it; +the kernel starts the execution of the program +from the machine instruction at this address. +.It Fa a_trsize +Contains the size in bytes of the text relocation table. +.It Fa a_drsize +Contains the size in bytes of the data relocation table. +.El +.Pp +The +.Pa a.out.h +include file defines several macros which use an +.Fa exec +structure to test consistency or to locate section offsets in the binary file. +.Bl -tag -width N_BADMAG(exec) +.It Fn N_BADMAG exec +Nonzero if the +.Fa a_magic +field does not contain a recognized value. +.It Fn N_TXTOFF exec +The byte offset in the binary file of the beginning of the text segment. +.It Fn N_SYMOFF exec +The byte offset of the beginning of the symbol table. +.It Fn N_STROFF exec +The byte offset of the beginning of the string table. +.El +.Pp +Relocation records have a standard format which +is described by the +.Fa relocation_info +structure: +.Bd -literal -offset indent +struct relocation_info { + int r_address; + unsigned int r_symbolnum : 24, + r_pcrel : 1, + r_length : 2, + r_extern : 1, + : 4; +}; +.Ed +.Pp +The +.Fa relocation_info +fields are used as follows: +.Bl -tag -width r_symbolnum +.It Fa r_address +Contains the byte offset of a pointer that needs to be link-edited. +Text relocation offsets are reckoned from the start of the text segment, +and data relocation offsets from the start of the data segment. +The link editor adds the value that is already stored at this offset +into the new value that it computes using this relocation record. +.It Fa r_symbolnum +Contains the ordinal number of a symbol structure +in the symbol table (it is +.Em not +a byte offset). +After the link editor resolves the absolute address for this symbol, +it adds that address to the pointer that is undergoing relocation. +(If the +.Fa r_extern +bit is clear, the situation is different; see below.) +.It Fa r_pcrel +If this is set, +the link editor assumes that it is updating a pointer +that is part of a machine code instruction using pc-relative addressing. +The address of the relocated pointer is implicitly added +to its value when the running program uses it. +.It Fa r_length +Contains the log base 2 of the length of the pointer in bytes; +0 for 1-byte displacements, 1 for 2-byte displacements, +2 for 4-byte displacements. +.It Fa r_extern +Set if this relocation requires an external reference; +the link editor must use a symbol address to update the pointer. +When the +.Fa r_extern +bit is clear, the relocation is +.Sq local ; +the link editor updates the pointer to reflect +changes in the load addresses of the various segments, +rather than changes in the value of a symbol. +In this case, the content of the +.Fa r_symbolnum +field is an +.Fa n_type +value (see below); +this type field tells the link editor +what segment the relocated pointer points into. +.El +.Pp +Symbols map names to addresses (or more generally, strings to values). +Since the link-editor adjusts addresses, +a symbol's name must be used to stand for its address +until an absolute value has been assigned. +Symbols consist of a fixed-length record in the symbol table +and a variable-length name in the string table. +The symbol table is an array of +.Fa nlist +structures: +.Bd -literal -offset indent +struct nlist { + union { + char *n_name; + long n_strx; + } n_un; + unsigned char n_type; + char n_other; + short n_desc; + unsigned long n_value; +}; +.Ed +.Pp +The fields are used as follows: +.Bl -tag -width n_un.n_strx +.It Fa n_un.n_strx +Contains a byte offset into the string table +for the name of this symbol. +When a program accesses a symbol table with the +.Xr nlist 3 +function, +this field is replaced with the +.Fa n_un.n_name +field, which is a pointer to the string in memory. +.It Fa n_type +Used by the link editor to determine +how to update the symbol's value. +The +.Fa n_type +field is broken down into three sub-fields using bitmasks. +The link editor treats symbols with the +.Dv N_EXT +type bit set as +.Sq external +symbols and permits references to them from other binary files. +The +.Dv N_TYPE +mask selects bits of interest to the link editor: +.Bl -tag -width N_TEXT +.It Dv N_UNDF +An undefined symbol. +The link editor must locate an external symbol with the same name +in another binary file to determine the absolute value of this symbol. +As a special case, if the +.Fa n_value +field is nonzero and no binary file in the link-edit defines this symbol, +the link-editor will resolve this symbol to an address +in the bss segment, +reserving an amount of bytes equal to +.Fa n_value . +If this symbol is undefined in more than one binary file +and the binary files do not agree on the size, +the link editor chooses the greatest size found across all binaries. +.It Dv N_ABS +An absolute symbol. +The link editor does not update an absolute symbol. +.It Dv N_TEXT +A text symbol. +This symbol's value is a text address and +the link editor will update it when it merges binary files. +.It Dv N_DATA +A data symbol; similar to +.Dv N_TEXT +but for data addresses. +The values for text and data symbols are not file offsets but +addresses; to recover the file offsets, it is necessary +to identify the loaded address of the beginning of the corresponding +section and subtract it, then add the offset of the section. +.It Dv N_BSS +A bss symbol; like text or data symbols but +has no corresponding offset in the binary file. +.It Dv N_FN +A filename symbol. +The link editor inserts this symbol before +the other symbols from a binary file when +merging binary files. +The name of the symbol is the filename given to the link editor, +and its value is the first text address from that binary file. +Filename symbols are not needed for link-editing or loading, +but are useful for debuggers. +.El +.Pp +The +.Dv N_STAB +mask selects bits of interest to symbolic debuggers +such as +.Xr gdb 1 ; +the values are described in +.Xr stab 5 . +.It Fa n_other +This field is currently unused. +.It Fa n_desc +Reserved for use by debuggers; passed untouched by the link editor. +Different debuggers use this field for different purposes. +.It Fa n_value +Contains the value of the symbol. +For text, data and bss symbols, this is an address; +for other symbols (such as debugger symbols), +the value may be arbitrary. +.El +.Pp +The string table consists of an +.Em unsigned long +length followed by null-terminated symbol strings. +The length represents the size of the entire table in bytes, +so its minimum value (or the offset of the first string) +is always 4 on 32-bit machines. +.Sh SEE ALSO +.Xr ld 1 , +.Xr execve 2 , +.Xr nlist 3 , +.Xr core 5 , +.Xr dbx 5 , +.Xr stab 5 +.Sh HISTORY +The +.Pa a.out.h +include file appeared in +.At v7 . +.Sh BUGS +Since not all of the supported architectures use the +.Fa a_mid +field, +it can be difficult to determine what +architecture a binary will execute on +without examining its actual machine code. +Even with a machine identifier, +the byte order of the +.Fa exec +header is machine-dependent. +.Pp +Nobody seems to agree on what +.Em bss +stands for. +.Pp +New binary file formats may be supported in the future, +and they probably will not be compatible at any level +with this ancient format. diff --git a/usr/src/share/man/man5/acct.5 b/usr/src/share/man/man5/acct.5 new file mode 100644 index 0000000000..21ea5f58ab --- /dev/null +++ b/usr/src/share/man/man5/acct.5 @@ -0,0 +1,110 @@ +.\" Copyright 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)acct.5 6.3 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt ACCT 5 +.Os +.Sh NAME +.Nm acct +.Nd execution accounting file +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +The kernel maintains the following +.Fa acct +information structure for all +processes. If a process terminates, and accounting is enabled, +the kernel calls the +.Xr acct 2 +function call to prepare and append the record +to the accounting file. +.Bd -literal +/* + * Accounting structures; these use a comp_t type which is a 3 bits base 8 + * exponent, 13 bit fraction ``floating point'' number. Units are 1/AHZ + * seconds. + */ +typedef u_short comp_t; + +struct acct { + char ac_comm[10]; /* name of command */ + comp_t ac_utime; /* user time */ + comp_t ac_stime; /* system time */ + comp_t ac_etime; /* elapsed time */ + time_t ac_btime; /* starting time */ + uid_t ac_uid; /* user id */ + gid_t ac_gid; /* group id */ + short ac_mem; /* memory usage average */ + comp_t ac_io; /* count of IO blocks */ + dev_t ac_tty; /* controlling tty */ +#define AFORK 0x01 /* forked but not execed */ +#define ASU 0x02 /* used super-user permissions */ +#define ACOMPAT 0x04 /* used compatibility mode */ +#define ACORE 0x08 /* dumped core */ +#define AXSIG 0x10 /* killed by a signal */ + char ac_flag; /* accounting flags */ +}; + +/* + * 1/AHZ is the granularity of the data encoded in the comp_t fields. + * This is not necessarily equal to hz. + */ +#define AHZ 64 + +#ifdef KERNEL +struct vnode *acctp; +#endif +.Ed +.Pp +If a terminated process was created by an +.Xr execve 2 , +the name of the executed file (at most ten characters of it) +is saved in the field +.Fa ac_comm +and its status is saved by setting one of more of the following flags in +.Fa ac_flag: +.Dv AFORK , +.Dv ASU , +.Dv ACOMPAT , +.Dv ACORE +and +.Dv ASIG . +.Sh SEE ALSO +.Xr acct 2 , +.Xr execve 2 , +.Xr sa 8 +.Sh HISTORY +A +.Nm +file format appeared in +.At v7 . diff --git a/usr/src/share/man/man5/core.5 b/usr/src/share/man/man5/core.5 new file mode 100644 index 0000000000..6df18aaf8c --- /dev/null +++ b/usr/src/share/man/man5/core.5 @@ -0,0 +1,111 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)core.5 6.3 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt CORE 5 +.Os BSD 4 +.Sh NAME +.Nm core +.Nd memory image file format +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +A small number of signals which cause abnormal termination of a process +also cause a record of the process's in-core state to be written +to disk for later examination by one of the aviailable debuggers. +(See +.Xr sigaction 2 . ) +This memory image is written to a file named +.Nm core +in the working directory; +provided the terminated process had write permission in the directory, +and provided the abnormality did not caused +a system crash. +(In this event, the decision to save the core file is arbitrary, see +.Xr savecore 8 . ) +.Pp +The maximum size of a +.Nm core +file is limited by +.Xr setrlimit 2 . +Files which would be larger than the limit are not created. +.Pp +The +.Nm core +file consists of the +.Fa u . +area, whose size (in pages) is +defined by the +.Dv UPAGES +manifest in the +.Aq Pa sys/param.h +file. The +.Fa u . +area starts with a +.Fa user +structure as given in +.Aq Pa sys/user.h . +The remainder of the +.Nm core +file consists of the data pages followed by +the stack pages of the process image. +The amount of data space image in the +.Nm core +file is given (in pages) by the +variable +.Fa u_dsize +in the +.Fa u . +area. +The amount of stack image in the core file is given (in pages) by the +variable +.Fa u_ssize +in the +.Ar u . +area. +The size of a ``page'' is given by the constant +.Dv NBPG +(also from +.Aq Pa sys/param.h ) . +.Sh SEE ALSO +.Xr adb 1 , +.Xr dbx 1 , +.Xr gdb 1 , +.Xr kgdb 1 , +.Xr sigaction 2 , +.Xr setrlimit 2 +.Sh HISTORY +A +.Nm +file format appeared in +.At v6 . diff --git a/usr/src/share/man/man5/dir.5 b/usr/src/share/man/man5/dir.5 new file mode 100644 index 0000000000..354f83d7fc --- /dev/null +++ b/usr/src/share/man/man5/dir.5 @@ -0,0 +1,151 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)dir.5 6.2 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt DIR 5 +.Os BSD 4.2 +.Sh NAME +.Nm dir , +.Nm dirent +.Nd directory file format +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Sh DESCRIPTION +Directories provide a convienent hierarchical method of grouping +files while obscuring the underlying details of the storage medium. +A directory file is differentiated from a plain file +by a flag in its +.Xr inode 5 +entry. +It consists of records (directory entries) each of which contain +information about a file and a pointer to the file itself. +Directory entries may contain other directories +as well as plain files; such nested directories are refered to as +subdirectories. +A hierarchy of directories and files is formed in this manner +and is called a file system (or refered to as a file system tree). +.\" An entry in this tree, +.\" nested or not nested, +.\" is a pathname. +.Pp +Each directory file contains two special directory entries; one is a pointer +to the directory itself +called dot +.Ql \&. +and the other a pointer to its parent directory called dot-dot +.Ql \&.. . +Dot and dot-dot +are valid pathnames, however, +the system root directory +.Ql / , +has no parent and dot-dot points to itself like dot. +.Pp +File system nodes are ordinary directory files on which has +been grafted a file system object, such as a physical disk or a +partitioned area of such a disk. +(See +.Xr mount 1 +and +.Xr mount 8 . ) +.Pp +The directory entry format is defined in the file +.Aq dirent.h : +.Bd -literal +#ifndef _DIRENT_H_ +#define _DIRENT_H_ + +/* +* A directory entry has a struct dirent at the front of it, containing its +* inode number, the length of the entry, and the length of the name +* contained in the entry. These are followed by the name padded to a 4 +* byte boundary with null bytes. All names are guaranteed null terminated. +* The maximum length of a name in a directory is MAXNAMLEN. +*/ + +struct dirent { + u_long d_fileno; /* file number of entry */ + u_short d_reclen; /* length of this record */ + u_short d_namlen; /* length of string in d_name */ +#ifdef _POSIX_SOURCE + char d_name[MAXNAMLEN + 1]; /* maximum name length */ +#else +#define MAXNAMLEN 255 + char d_name[MAXNAMLEN + 1]; /* maximum name length */ +#endif + +}; + +#ifdef _POSIX_SOURCE +typedef void * DIR; +#else + +#define d_ino d_fileno /* backward compatibility */ + +/* definitions for library routines operating on directories. */ +#define DIRBLKSIZ 1024 + +/* structure describing an open directory. */ +typedef struct _dirdesc { + int dd_fd; /* file descriptor associated with directory */ + long dd_loc; /* offset in current buffer */ + long dd_size; /* amount of data returned by getdirentries */ + char *dd_buf; /* data buffer */ + int dd_len; /* size of data buffer */ + long dd_seek; /* magic cookie returned by getdirentries */ +} DIR; + +#define dirfd(dirp) ((dirp)->dd_fd) + +#ifndef NULL +#define NULL 0 +#endif + +#endif /* _POSIX_SOURCE */ + +#ifndef KERNEL + +#include + +#endif /* !KERNEL */ + +#endif /* !_DIRENT_H_ */ +.Ed +.Sh SEE ALSO +.Xr fs 5 +.Xr inode 5 +.Sh HISTORY +A +.Nm +file format appeared in +.At v7 . diff --git a/usr/src/share/man/man5/disktab.5 b/usr/src/share/man/man5/disktab.5 new file mode 100644 index 0000000000..6450729ab5 --- /dev/null +++ b/usr/src/share/man/man5/disktab.5 @@ -0,0 +1,142 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)disktab.5 6.6 (Berkeley) 5/2/91 +.\" +.Dd May 2, 1991 +.Dt DISKTAB 5 +.Os BSD 4.2 +.Sh NAME +.Nm disktab +.Nd disk description file +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +.Nm Disktab +is a simple database which describes disk geometries and +disk partition characteristics. +It is used +.\"by the formatter(\c +.\"IR.Xr format 8 ) +.\"to determine how to format the disk, and +to initialize the disk label on the disk. +The format is patterned +after the +.Xr termcap 5 +terminal data base. Entries in +.Nm disktab +consist of a number of `:' separated fields. The +first entry for each disk gives the names which are +known for the disk, separated by `|' characters. The +last name given should be a long name fully identifying +the disk. +.Pp +The following list indicates the normal values +stored for each disk entry. +.Bl -column "indent" "boolx" +.It Sy Name Type Description +.It "\&ty str Type of disk (e.g. removable, winchester)" +.It "\&dt str Type of controller (e.g." +.Tn SMD , ESDI , +floppy) +.It "\&ns num Number of sectors per track" +.It "\&nt num Number of tracks per cylinder" +.It "\&nc num Total number of cylinders on the disk" +.It "\&sc num Number of sectors per cylinder, nc*nt default" +.It "\&su num Number of sectors per unit, sc*nc default" +.It "\&se num Sector size in bytes," +.Dv DEV_BSIZE +default +.It "\&sf bool Controller supports bad144-style bad sector forwarding" +.It "\&rm num Rotation speed, rpm, 3600 default" +.It "\&sk num Sector skew per track, default 0" +.It "\&cs num Sector skew per cylinder, default 0" +.It "\&hs num Headswitch time, usec, default 0" +.It "\&ts num One-cylinder seek time, usec, default 0" +.It "\&il num Sector interleave (n:1), 1 default" +.It "\&d[0-4] num Drive-type-dependent parameters" +.It "\&bs num Boot block size, default" +.Dv BBSIZE +.It "\&sb num Superblock size, default" +.Dv SBSIZE +.It "\&ba num Block size for partition `a' (bytes)" +.It "\&bd num Block size for partition `d' (bytes)" +.It "\&be num Block size for partition `e' (bytes)" +.It "\&bf num Block size for partition `f' (bytes)" +.It "\&bg num Block size for partition `g' (bytes)" +.It "\&bh num Block size for partition `h' (bytes)" +.It "\&fa num Fragment size for partition `a' (bytes)" +.It "\&fd num Fragment size for partition `d' (bytes)" +.It "\&fe num Fragment size or partition `e' (bytes)" +.It "\&ff num Fragment size for partition `f' (bytes)" +.It "\&fg num Fragment size for partition `g' (bytes)" +.It "\&fh num Fragment size for partition `h' (bytes)" +.It "\&oa num Offset of partition `a' in sectors" +.It "\&ob num Offset of partition `b' in sectors" +.It "\&oc num Offset of partition `c' in sectors" +.It "\&od num Offset of partition `d' in sectors" +.It "\&oe num Offset of partition `e' in sectors" +.It "\&of num Offset of partition `f' in sectors" +.It "\&og num Offset of partition `g' in sectors" +.It "\&oh num Offset of partition `h' in sectors" +.It "\&pa num Size of partition `a' in sectors" +.It "\&pb num Size of partition `b' in sectors" +.It "\&pc num Size of partition `c' in sectors" +.It "\&pd num Size of partition `d' in sectors" +.It "\&pe num Size of partition `e' in sectors" +.It "\&pf num Size of partition `f' in sectors" +.It "\&pg num Size of partition `g' in sectors" +.It "\&ph num Size of partition `h' in sectors" +.It "\&ta str Partition type of partition `a'" +.Pf ( Bx 4.2 +filesystem, swap, etc) +.It "\&tb str Partition type of partition `b'" +.It "\&tc str Partition type of partition `c'" +.It "\&td str Partition type of partition `d'" +.It "\&te str Partition type of partition `e'" +.It "\&tf str Partition type of partition `f'" +.It "\&tg str Partition type of partition `g'" +.It "\&th str Partition type of partition `h'" +.El +.Sh FILES +.Bl -tag -width /etc/disktab -compact +.It Pa /etc/disktab +.El +.Sh SEE ALSO +.Xr getdiskbyname 3 , +.Xr disklabel 5 , +.Xr disklabel 8 , +.Xr newfs 8 +.Sh HISTORY +The +.Nm +description file appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/fs.5 b/usr/src/share/man/man5/fs.5 new file mode 100644 index 0000000000..a052dca9ec --- /dev/null +++ b/usr/src/share/man/man5/fs.5 @@ -0,0 +1,342 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)fs.5 6.4 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt FS 5 +.Os BSD 4.2 +.Sh NAME +.Nm fs , +.Nm inode +.Nd format of file system volume +.Sh SYNOPSIS +.Fd #include +.Fd #include +.Fd #include +.Sh DESCRIPTION +The files +.Aq Pa fs.h +and +.Aq Pa inode.h +declare several structures, defined variables and macros +which are used to create and manage the underlying format of +file system objects on random access devices (disks). +.Pp +The block size and number of blocks which +comprise a file system are parameters of the file system. +Sectors beginning at +.Dv BBLOCK +and continuing for +.Dv BBSIZE +are used +for a disklabel and for some hardware primary +and secondary bootstrapping programs. +.Pp +The actual file system begins at sector +.Dv SBLOCK +with the +.Em super-block +that is of size +.Dv SBSIZE . +The following structure described the super-block and is +from the file +.Aq Pa ufs/fs.h : +.Bd -literal +#define FS_MAGIC 0x011954 +struct fs { + struct fs *fs_link; /* linked list of file systems */ + struct fs *fs_rlink; /* used for incore super blocks */ + daddr_t fs_sblkno; /* addr of super-block in filesys */ + daddr_t fs_cblkno; /* offset of cyl-block in filesys */ + daddr_t fs_iblkno; /* offset of inode-blocks in filesys */ + daddr_t fs_dblkno; /* offset of first data after cg */ + long fs_cgoffset; /* cylinder group offset in cylinder */ + long fs_cgmask; /* used to calc mod fs_ntrak */ + time_t fs_time; /* last time written */ + long fs_size; /* number of blocks in fs */ + long fs_dsize; /* number of data blocks in fs */ + long fs_ncg; /* number of cylinder groups */ + long fs_bsize; /* size of basic blocks in fs */ + long fs_fsize; /* size of frag blocks in fs */ + long fs_frag; /* number of frags in a block in fs */ +/* these are configuration parameters */ + long fs_minfree; /* minimum percentage of free blocks */ + long fs_rotdelay; /* num of ms for optimal next block */ + long fs_rps; /* disk revolutions per second */ +/* these fields can be computed from the others */ + long fs_bmask; /* ``blkoff'' calc of blk offsets */ + long fs_fmask; /* ``fragoff'' calc of frag offsets */ + long fs_bshift; /* ``lblkno'' calc of logical blkno */ + long fs_fshift; /* ``numfrags'' calc number of frags */ +/* these are configuration parameters */ + long fs_maxcontig; /* max number of contiguous blks */ + long fs_maxbpg; /* max number of blks per cyl group */ +/* these fields can be computed from the others */ + long fs_fragshift; /* block to frag shift */ + long fs_fsbtodb; /* fsbtodb and dbtofsb shift constant */ + long fs_sbsize; /* actual size of super block */ + long fs_csmask; /* csum block offset */ + long fs_csshift; /* csum block number */ + long fs_nindir; /* value of NINDIR */ + long fs_inopb; /* value of INOPB */ + long fs_nspf; /* value of NSPF */ +/* yet another configuration parameter */ + long fs_optim; /* optimization preference, see below */ +/* these fields are derived from the hardware */ + long fs_npsect; /* # sectors/track including spares */ + long fs_interleave; /* hardware sector interleave */ + long fs_trackskew; /* sector 0 skew, per track */ + long fs_headswitch; /* head switch time, usec */ + long fs_trkseek; /* track-to-track seek, usec */ +/* sizes determined by number of cylinder groups and their sizes */ + daddr_t fs_csaddr; /* blk addr of cyl grp summary area */ + long fs_cssize; /* size of cyl grp summary area */ + long fs_cgsize; /* cylinder group size */ +/* these fields are derived from the hardware */ + long fs_ntrak; /* tracks per cylinder */ + long fs_nsect; /* sectors per track */ + long fs_spc; /* sectors per cylinder */ +/* this comes from the disk driver partitioning */ + long fs_ncyl; /* cylinders in file system */ +/* these fields can be computed from the others */ + long fs_cpg; /* cylinders per group */ + long fs_ipg; /* inodes per group */ + long fs_fpg; /* blocks per group * fs_frag */ +/* this data must be re-computed after crashes */ + struct csum fs_cstotal; /* cylinder summary information */ +/* these fields are cleared at mount time */ + char fs_fmod; /* super block modified flag */ + char fs_clean; /* file system is clean flag */ + char fs_ronly; /* mounted read-only flag */ + char fs_flags; /* currently unused flag */ + char fs_fsmnt[MAXMNTLEN]; /* name mounted on */ +/* these fields retain the current block allocation info */ + long fs_cgrotor; /* last cg searched */ + struct csum *fs_csp[MAXCSBUFS]; /* list of fs_cs info buffers */ + long fs_cpc; /* cyl per cycle in postbl */ + short fs_opostbl[16][8]; /* old rotation block list head */ + long fs_sparecon[56]; /* reserved for future constants */ + quad fs_qbmask; /* ~fs_bmask - for use with quad size */ + quad fs_qfmask; /* ~fs_fmask - for use with quad size */ + long fs_postblformat; /* format of positional layout tables */ + long fs_nrpos; /* number of rotaional positions */ + long fs_postbloff; /* (short) rotation block list head */ + long fs_rotbloff; /* (u_char) blocks for each rotation */ + long fs_magic; /* magic number */ + u_char fs_space[1]; /* list of blocks for each rotation */ +/* actually longer */ +}; +.Ed +.Pp +Each disk drive contains some number of file systems. +A file system consists of a number of cylinder groups. +Each cylinder group has inodes and data. +.Pp +A file system is described by its super-block, which in turn +describes the cylinder groups. The super-block is critical +data and is replicated in each cylinder group to protect against +catastrophic loss. This is done at file system creation +time and the critical +super-block data does not change, so the copies need not be +referenced further unless disaster strikes. +.Pp +Addresses stored in inodes are capable of addressing fragments +of `blocks'. File system blocks of at most size +.Dv MAXBSIZE +can +be optionally broken into 2, 4, or 8 pieces, each of which is +addressable; these pieces may be +.Dv DEV_BSIZE , +or some multiple of +a +.Dv DEV_BSIZE +unit. +.Pp +Large files consist of exclusively large data blocks. To avoid +undue wasted disk space, the last data block of a small file is +allocated as only as many fragments of a large block as are +necessary. The file system format retains only a single pointer +to such a fragment, which is a piece of a single large block that +has been divided. The size of such a fragment is determinable from +information in the inode, using the +.Fn blksize fs ip lbn +macro. +.Pp +The file system records space availability at the fragment level; +to determine block availability, aligned fragments are examined. +.Pp +The root inode is the root of the file system. +Inode 0 can't be used for normal purposes and +historically bad blocks were linked to inode 1, +thus the root inode is 2 (inode 1 is no longer used for +this purpose, however numerous dump tapes make this +assumption, so we are stuck with it). +.Pp +The +.Fa fs_minfree +element gives the minimum acceptable percentage of file system +blocks that may be free. If the freelist drops below this level +only the super-user may continue to allocate blocks. +The +.Fa fs_minfree +element +may be set to 0 if no reserve of free blocks is deemed necessary, +however severe performance degradations will be observed if the +file system is run at greater than 90% full; thus the default +value of +.Fa fs_minfree +is 10%. +.Pp +Empirically the best trade-off between block fragmentation and +overall disk utilization at a loading of 90% comes with a +fragmentation of 8, thus the default fragment size is an eighth +of the block size. +.Pp +The element +.Fa fs_optim +specifies whether the file system should try to minimize the time spent +allocating blocks, or if it should attempt to minimize the space +fragmentation on the disk. +If the value of fs_minfree (see above) is less than 10%, +then the file system defaults to optimizing for space to avoid +running out of full sized blocks. +If the value of minfree is greater than or equal to 10%, +fragmentation is unlikely to be problematical, and +the file system defaults to optimizing for time. +.Pp +.Em Cylinder group related limits : +Each cylinder keeps track of the availability of blocks at different +rotational positions, so that sequential blocks can be laid out +with minimum rotational latency. With the default of 8 distinguished +rotational positions, the resolution of the +summary information is 2ms for a typical 3600 rpm drive. +.Pp +The element +.Fa fs_rotdelay +gives the minimum number of milliseconds to initiate +another disk transfer on the same cylinder. +It is used in determining the rotationally optimal +layout for disk blocks within a file; +the default value for +.Fa fs_rotdelay +is 2ms. +.Pp +Each file system has a statically allocated number of inodes. +An inode is allocated for each +.Dv NBPI +bytes of disk space. +The inode allocation strategy is extremely conservative. +.Pp +.Dv MINBSIZE +is the smallest allowable block size. +With a +.Dv MINBSIZE +of 4096 +it is possible to create files of size +2^32 with only two levels of indirection. +.Dv MINBSIZE +must be big enough to hold a cylinder group block, +thus changes to +.Pq Fa struct cg +must keep its size within +.Dv MINBSIZE . +Note that super-blocks are never more than size +.Dv SBSIZE . +.Pp +The path name on which the file system is mounted is maintained in +.Fa fs_fsmnt . +.Dv MAXMNTLEN +defines the amount of space allocated in +the super-block for this name. +The limit on the amount of summary information per file system +is defined by +.Dv MAXCSBUFS. +For a 4096 byte block size, it is currently parameterized for a +maximum of two million cylinders. +.Pp +Per cylinder group information is summarized in blocks allocated +from the first cylinder group's data blocks. +These blocks are read in from +.Fa fs_csaddr +(size +.Fa fs_cssize ) +in addition to the super-block. +.Pp +.Sy N.B.: +.Xr sizeof Pq Fa struct csum +must be a power of two in order for +the +.Fn fs_cs +macro to work. +.Pp +The +.Em "Super-block for a file system" : +The size of the rotational layout tables +is limited by the fact that the super-block is of size +.Dv SBSIZE . +The size of these tables is +.Em inversely +proportional to the block +size of the file system. The size of the tables is +increased when sector sizes are not powers of two, +as this increases the number of cylinders +included before the rotational pattern repeats +.Pq Fa fs_cpc . +The size of the rotational layout +tables is derived from the number of bytes remaining in +.Pq Fa struct fs . +.Pp +The number of blocks of data per cylinder group +is limited because cylinder groups are at most one block. +The inode and free block tables +must fit into a single block after deducting space for +the cylinder group structure +.Pq Fa struct cg . +.Pp +The +.Em Inode : +The inode is the focus of all file activity in the +.Tn UNIX +file system. +There is a unique inode allocated +for each active file, +each current directory, each mounted-on file, +text file, and the root. +An inode is `named' by its device/i-number pair. +For further information, see the include file +.Aq Pa sys/inode.h . +.Sh HISTORY +A super-block structure named filsys appeared in +.At v6 . +The file system described in this manual appeared +in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/fstab.5 b/usr/src/share/man/man5/fstab.5 new file mode 100644 index 0000000000..6edc983bd3 --- /dev/null +++ b/usr/src/share/man/man5/fstab.5 @@ -0,0 +1,226 @@ +.\" Copyright (c) 1980, 1989, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)fstab.5 6.5 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt FSTAB 5 +.Os BSD 4 +.Sh NAME +.Nm fstab +.Nd static information about the filesystems +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +The file +.Nm fstab +contains descriptive information about the various file +systems. +.Nm fstab +is only read by programs, and not written; +it is the duty of the system administrator to properly create +and maintain this file. +Each filesystem is described on a separate line; +fields on each line are separated by tabs or spaces. +The order of records in +.Nm fstab +is important because +.Xr fsck 8 , +.Xr mount 8 , +and +.Xr umount 8 +sequentially iterate through +.Nm fstab +doing their thing. +.Pp +The first field, +.Pq Fa fs_spec , +describes the block special device or +remote filesystem to be mounted. +For filesystems of type +.Em ufs , +the special file name is the block special file name, +and not the character special file name. +If a program needs the character special file name, +the program must create it by appending a ``r'' after the +last ``/'' in the special file name. +.Pp +The second field, +.Pq Fa fs_file , +describes the mount point for the filesystem. +For swap partitions, this field should be specified as ``none''. +.Pp +The third field, +.Pq Fa fs_vfstype , +describes the type of the filesystem. +The system currently supports four types of filesystems: +.Bl -tag -width indent -offset indent +.It Em ufs +a local +.Tn UNIX +filesystem +.It Em mfs +a local memory-based +.Tn UNIX +filesystem +.It Em nfs +a Sun Microsystems compatible ``Network File System'' +.It Em swap +a disk partition to be used for swapping +.El +.Pp +The fourth field, +.Pq Fa fs_mntops , +describes the mount options associated with the filesystem. +It is formatted as a comma separated list of options. +It contains at least the type of mount (see +.Fa fs_type +below) plus any additional options +appropriate to the filesystem type. +.Pp +If the options ``userquota'' and/or ``groupquota'' are specified, +the filesystem is automatically processed by the +.Xr quotacheck 8 +command, and user and/or group disk quotas are enabled with +.Xr quotaon 8 . +By default, +filesystem quotas are maintained in files named +.Pa quota.user +and +.Pa quota.group +which are located at the root of the associated filesystem. +These defaults may be overridden by putting an equal sign +and an alternative absolute pathname following the quota option. +Thus, if the user quota file for +.Pa /tmp +is stored in +.Pa /var/quotas/tmp.user , +this location can be specified as: +.Bd -literal -offset indent +userquota=/var/quotas/tmp.user +.Ed +.Pp +The type of the mount is extracted from the +.Fa fs_mntops +field and stored separately in the +.Fa fs_type +field (it is not deleted from the +.Fa fs_mntops +field). +If +.Fa fs_type +is ``rw'' or ``ro'' then the filesystem whose name is given in the +.Fa fs_file +field is normally mounted read-write or read-only on the +specified special file. +If +.Fa fs_type +is ``sw'' then the special file is made available as a piece of swap +space by the +.Xr swapon 8 +command at the end of the system reboot procedure. +The fields other than +.Fa fs_spec +and +.Fa fs_type +are unused. +If +.Fa fs_type +is specified as ``xx'' the entry is ignored. +This is useful to show disk partitions which are currently unused. +.Pp +The fifth field, +.Pq Fa fs_freq , +is used for these filesystems by the +.Xr dump 8 +command to determine which filesystems need to be dumped. +If the fifth field is not present, a value of zero is returned and +.Xr dump +will assume that the filesystem does not need to be dumped. +.Pp +The sixth field, +.Pq Fa fs_passno , +is used by the +.Xr fsck 8 +program to determine the order in which filesystem checks are done +at reboot time. +The root filesystem should be specified with a +.Fa fs_passno +of 1, and other filesystems should have a +.Fa fs_passno +of 2. +Filesystems within a drive will be checked sequentially, +but filesystems on different drives will be checked at the +same time to utilize parallelism available in the hardware. +If the sixth field is not present or zero, +a value of zero is returned and +.Xr fsck +will assume that the filesystem does not need to be checked. +.Bd -literal +#define FSTAB_RW "rw" /* read-write device */ +#define FSTAB_RO "ro" /* read-only device */ +#define FSTAB_SW "sw" /* swap device */ +#define FSTAB_XX "xx" /* ignore totally */ + +struct fstab { + char *fs_spec; /* block special device name */ + char *fs_file; /* filesystem path prefix */ + char *fs_vfstype; /* type of filesystem */ + char *fs_mntops; /* comma separated mount options */ + char *fs_type; /* rw, ro, sw, or xx */ + int fs_freq; /* dump frequency, in days */ + int fs_passno; /* pass number on parallel dump */ +}; +.Ed +.Pp +The proper way to read records from +.Pa fstab +is to use the routines +.Xr getfsent 3 , +.Xr getfsspec 3 , +.Xr getfstype 3 , +and +.Xr getfsfile 3 . +.Sh FILES +.Bl -tag -width /etc/fstab -compact +.It Pa /etc/fstab +The file +.Nm fstab +resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr getfsent 3 +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.0 . diff --git a/usr/src/share/man/man5/group.5 b/usr/src/share/man/man5/group.5 new file mode 100644 index 0000000000..9a53967f27 --- /dev/null +++ b/usr/src/share/man/man5/group.5 @@ -0,0 +1,123 @@ +.\" Copyright 1980, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)group.5 6.2 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt GROUP 5 +.Os +.Sh NAME +.Nm group +.Nd format of the group permissions file +.Sh DESCRIPTION +The file +.Aq Pa /etc/group +consists of newline separated +.Tn ASCII +records, one per group, containing four colon +.Ql \&: +separated fields. These fields are as follows: +.Bl -tag -width password -offset indent -compact +.It group +Name of the group. +.It passwd +Group's +.Em encrypted +password. +.It gid +The group's decimal ID. +.It member +Group members. +.El +.Pp +The +.Ar group +field is the group name used for granting file access to users +who are members of the group. +The +.Ar gid +field is the number associated with the group name. +They should both be unique across the system (and often +across a group of systems) since they control file access. +The +.Ar passwd +field +is an optional +.Em encrypted +password. +This field is rarely used +and an asterisk is normally placed in it rather than leaving it blank. +The +.Ar member +field contains the names of users granted the priviledges of +.Ar group . +The member names are separated by commas with out spaces or newlines. +A user is automatically in a group if that group was specified +in their +.Pa /etc/passwd +entry and does not need to be added to that group in the +.Pa /etc/group file. +.\" .Pp +.\" When the system reads the file +.\" .Pa /etc/group +.\" the fields are read into the structure +.\" .Fa group +.\" declared in +.\" .Aq Pa grp.h : +.\" .Bd -literal -offset indent +.\" struct group { +.\" char *gr_name; /* group name */ +.\" char *gr_passwd; /* group password */ +.\" int gr_gid; /* group id */ +.\" char **gr_mem; /* group members */ +.\" }; +.\" .Ed +.Sh FILES +.Bl -tag -width /etc/group -compact +.It Pa /etc/group +.El +.Sh SEE ALSO +.Xr setgroups 2 , +.Xr initgroups 3 , +.Xr crypt 3 , +.Xr passwd 1 , +.Xr passwd 5 +.Sh BUGS +The +.Xr passwd 1 +command does not change the +.Nm group +passwords. +.Sh HISTORY +A +.Nm +file format appeared in +.At v6 . diff --git a/usr/src/share/man/man5/hosts.5 b/usr/src/share/man/man5/hosts.5 new file mode 100644 index 0000000000..88a5159ca7 --- /dev/null +++ b/usr/src/share/man/man5/hosts.5 @@ -0,0 +1,109 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)hosts.5 6.6 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt HOSTS 5 +.Os BSD 4.2 +.Sh NAME +.Nm hosts +.Nd host name data base +.Sh DESCRIPTION +The +.Nm hosts +file contains information regarding +the known hosts on the network. +For each host a single line should be present +with the following information: +.Bd -unfilled -offset indent +official host name +Internet address +aliases +.Ed +.Pp +Items are separated by any number of blanks and/or +tab characters. A ``#'' indicates the beginning of +a comment; characters up to the end of the line are +not interpreted by routines which search the file. +.Pp +When using the name server +.Xr named 8 , +this file provides a backup when the name server +is not running. +For the name server, it is suggested that only a few addresses +be included in this file. +These include address for the local interfaces that +.Xr ifconfig 8 +needs at boot time and a few machines on the local network. +.Pp +This file may be created from the official host +data base maintained at the Network Information Control +Center +.Pq Tn NIC , +though local changes may be required +to bring it up to date regarding unofficial aliases +and/or unknown hosts. As the data base maintained at +.Tn NIC +is incomplete, use of the name server is recommend for +sites on the +.Tn DARPA +Internet. +.Pp +Network addresses are specified in the conventional +``.'' (dot) notation using the +.Xr inet_addr 3 +routine +from the Internet address manipulation library, +.Xr inet 3 . +Host names may contain any printable +character other than a field delimiter, newline, +or comment character. +.Sh FILES +.Bl -tag -width /etc/hosts -compact +.It Pa /etc/hosts +The +.Nm hosts +file resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr gethostbyname 3 , +.Xr ifconfig 8 , +.Xr named 8 +.Rs +.%T "Name Server Operations Guide for BIND" +.Re +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/networks.5 b/usr/src/share/man/man5/networks.5 new file mode 100644 index 0000000000..ac628f74c8 --- /dev/null +++ b/usr/src/share/man/man5/networks.5 @@ -0,0 +1,88 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)networks.5 6.5 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt NETWORKS 5 +.Os BSD 4.2 +.Sh NAME +.Nm networks +.Nd network name data base +.Sh DESCRIPTION +The +.Xr networks +file contains information regarding +the known networks which comprise the +.Tn DARPA +Internet. +For each network a single line should be present with the following information: +.Bd -unfilled -offset indent +official network name +network number +aliases +.Ed +.Pp +Items are separated by any number of blanks and/or tab characters. +A ``#'' indicates the beginning of a comment; characters up to the end of +the line are not interpreted by routines which search the file. +This file is normally created from the official network data base +maintained at the Network Information Control Center +.Pq Tn NIC , +though local +changes may be required to bring it up to date regarding unofficial aliases +and/or unknown networks. +.Pp +Network number may be specified in the conventional +``.'' (dot) notation using the +.Xr inet_network 3 +routine +from the Internet address manipulation library, +.Xr inet 3 . +Network names may contain any printable character other than a field +delimiter, newline, or comment character. +.Sh FILES +.Bl -tag -width /etc/networks -compact +.It Pa /etc/networks +The +.Nm networks +file resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr getnetent 3 +.Sh BUGS +A name server should be used instead of a static file. +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/passwd.5 b/usr/src/share/man/man5/passwd.5 new file mode 100644 index 0000000000..e46611b11c --- /dev/null +++ b/usr/src/share/man/man5/passwd.5 @@ -0,0 +1,169 @@ +.\" Copyright (c) 1988, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)passwd.5 6.7 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt PASSWD 5 +.Os +.Sh NAME +.Nm passwd +.Nd format of the password file +.Sh DESCRIPTION +The +.Nm passwd +files are files consisting of newline separated records, one per user, +containing ten colon (``:'') separated fields. These fields are as +follows: +.Pp +.Bl -tag -width password -offset indent +.It name +User's login name. +.It password +User's +.Em encrypted +password. +.It uid +User's id. +.It gid +User's login group id. +.It class +User's general classification (unused). +.It change +Password change time. +.It expire +Account expiration time. +.It gecos +General information about the user. +.It home_dir +User's home directory. +.It shell +User's login shell. +.El +.Pp +The +.Ar name +field is the login used to access the computer account, and the +.Ar uid +field is the number associated with it. They should both be unique +across the system (and often across a group of systems) since they +control file access. +.Pp +While it is possible to have multiple entries with identical login names +and/or identical user id's, it is usually a mistake to do so. Routines +that manipulate these files will often return only one of the multiple +entries, and that one by random selection. +.Pp +The login name must never begin with a hyphen (``-''); also, it is strongly +suggested that neither upper-case characters or dots (``.'') be part +of the name, as this tends to confuse mailers. No field may contain a +colon (``:'') as this has been used historically to separate the fields +in the user database. +.Pp +The password field is the +.Em encrypted +form of the password. +If the +.Ar password +field is empty, no password will be required to gain access to the +machine. This is almost invariably a mistake. +Because these files contain the encrypted user passwords, they should +not be readable by anyone without appropriate privileges. +.Pp +The group field is the group that the user will be placed in upon login. +Since this system supports multiple groups (see +.Xr groups 1 ) +this field currently has little special meaning. +.Pp +The +.Ar class +field is currently unused. In the near future it will be a key to +a +.Xr termcap 5 +style database of user attributes. +.Pp +The +.Ar change +field is the number in seconds, +.Dv GMT , +from the epoch, until the +password for the account must be changed. +This field may be left empty to turn off the password aging feature. +.Pp +The +.Ar expire +field is the number in seconds, +.Dv GMT , +from the epoch, until the +account expires. +This field may be left empty to turn off the account aging feature. +.Pp +The +.Ar gecos +field normally contains comma (``,'') separated subfields as follows: +.Pp +.Bd -unfilled -offset indent +name user's full name +office user's office number +wphone user's work phone number +hphone user's home phone number +.Ed +.Pp +This information is used by the +.Xr finger 1 +program. +.Pp +The user's home directory is the full +.Tn UNIX +path name where the user +will be placed on login. +.Pp +The shell field is the command interpreter the user prefers. +If there is nothing in the +.Ar shell +field, the Bourne shell +.Pq Pa /bin/sh +is assumed. +.Sh SEE ALSO +.Xr chpass 1 , +.Xr login 1 , +.Xr passwd 1 , +.Xr getpwent 3 , +.Xr mkpasswd 8 , +.Xr vipw 8 +.Xr adduser 8 +.Sh BUGS +User information should (and eventually will) be stored elsewhere. +.Sh HISTORY +A +.Nm +file format appeared in +.At v6 . diff --git a/usr/src/share/man/man5/pcfs.5 b/usr/src/share/man/man5/pcfs.5 new file mode 100644 index 0000000000..4fe6b861a0 --- /dev/null +++ b/usr/src/share/man/man5/pcfs.5 @@ -0,0 +1,114 @@ +PCFS quirks file + +PCFS filesystems on floppy disks only are supported in this release. +And, only high density floppy disks are supported. This is because +the floppy disk driver only supports high density disks. + +Created files use only the user permissions bits. And of these +only the write bit is meaningful. DOS files always have the +execute and read bits on. + +PCFS does not turn on or off the DOS archive attribute bit. + +The timestamp on dos files is updated when ever the file is modified. +There is no inode time or create time stamp. + +The timestamp placed on a dos file does not have corrections for +daylight savings time included. It does have the correction for +timezone though. + +Unix times before 1980 will have their year set to 1980 in dos file +timestamps. This is because dos's idea of time starts in 1980. + +PCFS filesystems do not support sparse files. Any attempt to seek +past the end of a file results in the blocks being allocated and +cleared. + +When read() is used to examine pcfs directories you will get dos +directory contents. Note that the root directory does not contain +a "." or ".." entry. Only the readdir() system call simulates these +entries in the root directory of a dos filesystem. readdir() returns +directory entries as described in getdirentries(2). + +Using read() and write() to manipulate the contents of dos directories +is unwise on an active dos filesystem since a more up to date copy of +their contents may reside in data structures in the kernel. It is +probably safe to examine the filename field of dos directory entries. +The filesystem code keeps this up to date at all times. + +The cluster allocation algorithm is very simplistic. It starts at +cluster 2 and searchs until the last cluster of the filesystem and +takes the first available cluster. + +The fsync() system call does not work on file descriptors open on +directories. This isn't a terrible thing since very few programs +open directories for writing. + +The pcfs filesystem truncates filenames quietly. If a filename has +more than 8 characters before the 1st period only the 1st eigth are +used. It only uses the 1st three characters after the period if +they exist. The filenames "abc" and "abc." are the same to pcfs. +Filenames that begin with a "." are considered to be dos filenames +with an extension only and so are limited to 3 characters after the +leading ".". For example ".imlost" would be seen as ".iml" by pcfs. +PCFS folds filenames to upper case before writing them to disk or +looking up filenames, and folds them to lower case when reading them +from disk for presentation to the user (for example by readdir()). + +Directory entries for the DOS filesystem label are quietly ignored. + +This is probably going to be a problem. This implementation expects +the length of the root directory to be a multiple of the size of +a cluster. If this is not true a warning message is printed when +the filesystem is mounted. + +PCFS supports DOS filesystems with 12 bit or 16 bit FATs. It supports +both regular and huge filesystems ( > 32 megabytes). It supports +both version 3.3 and 5.0 BPB's. Don't know about version 4.x and +less than 3.3. It has not been tested with 16 bit fats or huge +filesystems. This is because the hard disk drivers need to support +dos partitions to do these things. + +PCFS does not support symbolic links or hard links. It does not +support quotas. How could it, pcfs files have no owners. PCFS +files have a simulated owner and group of 0. PCFS does not support +file locking. Though it may in the future. PCFS filesystems are +not remote mountable, but they will be in the future. + +This is the first release and as such has performance problems. +Reading large files is very slow because the read ahead code in pcfs_read() +doesn't read far enough ahead for filesystems with small blocksizes. +Performance and dos hard disk paritions are the next areas to be +worked on. Unless someone else does it. + + +Operational Details +------------------- + +To mount a pcfs filesystem: + mount -t pcfs /dev/fd0a /mnt + +To unmount a pcfs filesystem: + umount /mnt + +If you want to be sure the fat is ALWAYS up to date, mount the +filesystem with the synchronous option: + mount -t pcfs -o synchronous /dev/fd0a /mnt +This reasults in very slow file write performance because it turns +off write behind of fst disk blocks. + + +Configuring PCFS into your kernel +--------------------------------- + +Add the following statements to your configuration file in /sys/i386/conf/BLOT. +Or whatever you call your config file. + + options PCFS + +PCFS consumes approximately 24000 bytes of kernel code space and +approximately 4000 bytes of bss. + +PCFS has some debug printf's that can be turned on by defining PCFSDEBUG. +It produces lots of output. If you use it be sure to kill syslogd before +using a PCFS filesystem with debug. diff --git a/usr/src/share/man/man5/phones.5 b/usr/src/share/man/man5/phones.5 new file mode 100644 index 0000000000..a96ecac352 --- /dev/null +++ b/usr/src/share/man/man5/phones.5 @@ -0,0 +1,76 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)phones.5 6.3 (Berkeley) 5/2/91 +.\" +.Dd May 2, 1991 +.Dt PHONES 5 +.Os BSD 4.2 +.Sh NAME +.Nm phones +.Nd remote host phone number data base +.Sh DESCRIPTION +The file +.Pa /etc/phones +contains the system-wide +private phone numbers for the +.Xr tip 1 +program. This file is normally unreadable, and so may contain +privileged information. The format of the file is a series of lines +of the form: [\ \et]*. The system name is +one of those defined in the +.Xr remote 5 +file and the phone number is constructed from any sequence of +characters terminated only by ``,'' or the end of the line. +The ``='' and ``*'' characters are +indicators to the auto call units to pause and wait for a second dial +tone (when going through an exchange). The ``='' is required by the +.Tn DF02-AC +and the ``*'' is required by the +.Tn BIZCOMP +1030. +.Pp +Only one phone number per line is permitted. However, if more than +one line in the file contains the same system name +.Xr tip 1 +will attempt to dial each one in turn, until it establishes a connection. +.Sh FILES +.Bl -tag -width /etc/phones -compact +.It Pa /etc/phones +.El +.Sh SEE ALSO +.Xr tip 1 , +.Xr remote 5 +.Sh HISTORY +The +.Nm +file appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/printcap.5 b/usr/src/share/man/man5/printcap.5 new file mode 100644 index 0000000000..93374a3233 --- /dev/null +++ b/usr/src/share/man/man5/printcap.5 @@ -0,0 +1,288 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)printcap.5 6.6 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt PRINTCAP 5 +.Os BSD 4.2 +.Sh NAME +.Nm printcap +.Nd printer capability data base +.Sh SYNOPSIS +.Nm printcap +.Sh DESCRIPTION +The +.Nm Printcap +function +is a simplified version of the +.Xr termcap 5 +data base +used to describe line printers. The spooling system accesses the +.Nm printcap +file every time it is used, allowing dynamic +addition and deletion of printers. Each entry in the data base +is used to describe one printer. This data base may not be +substituted for, as is possible for +.Xr termcap , +because it may allow accounting to be bypassed. +.Pp +The default printer is normally +.Em lp , +though the environment variable +.Ev PRINTER +may be used to override this. Each spooling utility supports an option, +.Fl P Ar printer , +to allow explicit naming of a destination printer. +.Pp +Refer to the +.%T "4.3 BSD Line Printer Spooler Manual" +for a complete discussion on how setup the database for a given printer. +.Sh CAPABILITIES +Refer to +.Xr termcap 5 +for a description of the file layout. +.Bl -column Namexxx Typexx "/var/spool/lpdxxxxx" +.Sy Name Type Description +.It "af str" Ta Dv NULL Ta No "name of accounting file" +.It "br num none if lp is a tty, set the baud rate" +.Pf ( Xr ioctl 2 +call) +.It "cf str" Ta Dv NULL Ta No "cifplot data filter" +.It "df str" Ta Dv NULL Ta No "tex data filter" +.Pf ( Tn DVI +format) +.It "fc num 0 if lp is a tty, clear flag bits" +.Pq Pa sgtty.h +.It "ff str" Ta So Li \ef Sc Ta No "string to send for a form feed" +.It "fo bool false print a form feed when device is opened" +.It "fs num 0 like `fc' but set bits" +.It "gf str" Ta Dv NULL Ta No "graph data filter" +.Pf ( Xr plot 3 +format +.It "hl bool false print the burst header page last" +.It "ic bool false driver supports (non standard) ioctl to indent printout" +.It "if str" Ta Dv NULL Ta No "name of text filter which does accounting" +.It "lf str" Ta Pa /dev/console Ta No "error logging file name" +.It "lo str" Ta Pa lock Ta No "name of lock file" +.It "lp str" Ta Pa /dev/lp Ta No "device name to open for output" +.It "mx num 1000 maximum file size (in" +.Dv BUFSIZ +blocks), zero = unlimited +.It "nd str" Ta Dv NULL Ta No "next directory for list of queues (unimplemented)" +.It "nf str" Ta Dv NULL Ta No "ditroff data filter (device independent troff)" +.It "of str" Ta Dv NULL Ta No "name of output filtering program" +.It "pc num 200 price per foot or page in hundredths of cents" +.It "pl num 66 page length (in lines)" +.It "pw num 132 page width (in characters)" +.It "px num 0 page width in pixels (horizontal)" +.It "py num 0 page length in pixels (vertical)" +.It "rf str" Ta Dv NULL Ta No "filter for printing" +.Tn FORTRAN +style text files +.It "rg str" Ta Dv NULL Ta No "restricted group. Only members of group allowed access" +.It "rm str" Ta Dv NULL Ta No "machine name for remote printer" +.It "rp str ``lp'' remote printer name argument" +.It "rs bool false restrict remote users to those with local accounts" +.It "rw bool false open the printer device for reading and writing" +.It "sb bool false short banner (one line only)" +.It "sc bool false suppress multiple copies" +.It "sd str" Ta Pa /var/spool/lpd Ta No "spool directory" +.It "sf bool false suppress form feeds" +.It "sh bool false suppress printing of burst page header" +.It "st str" Ta Pa status Ta No "status file name" +.It "tf str" Ta Dv NULL Ta No "troff data filter (cat phototypesetter)" +.It "tr str" Ta Dv NULL Ta No "trailer string to print when queue empties" +.It "vf str" Ta Dv NULL Ta No "raster image filter" +.It "xc num 0 if lp is a tty, clear local mode bits" +.Pq Xr tty 4 +.It "xs num 0 like `xc' but set bits" +.El +.Pp +If the local line printer driver supports indentation, the daemon +must understand how to invoke it. +.Sh FILTERS +The +.Xr lpd 8 +daemon creates a pipeline of +.Em filters +to process files for various printer types. +The filters selected depend on the flags passed to +.Xr lpr 1 . +The pipeline set up is: +.Bd -literal -offset indent +p pr | if regular text + pr(1) +none if regular text +c cf cifplot +d df DVI (tex) +g gf plot(3) +n nf ditroff +f rf Fortran +t tf troff +v vf raster image +.Ed +.Pp +The +.Sy if +filter is invoked with arguments: +.Bd -filled -offset indent +.Cm if +.Op Fl c +.Fl w Ns Ar width +.Fl l Ns Ar length +.Fl i Ns Ar indent +.Fl n Ar login +.Fl h Ar host acct-file +.Ed +.Pp +The +.Fl c +flag is passed only if the +.Fl l +flag (pass control characters literally) +is specified to +.Xr lpr . +The +.Ar Width +function +and +.Ar length +specify the page width and length +(from +.Cm pw +and +.Cm pl +respectively) in characters. +The +.Fl n +and +.Fl h +parameters specify the login name and host name of the owner +of the job respectively. +The +.Ar Acct-file +function +is passed from the +.Cm af +.Nm printcap +entry. +.Pp +If no +.Cm if +is specified, +.Cm of +is used instead, +with the distinction that +.Cm of +is opened only once, +while +.Cm if +is opened for every individual job. +Thus, +.Cm if +is better suited to performing accounting. +The +.Cm of +is only given the +.Ar width +and +.Ar length +flags. +.Pp +All other filters are called as: +.Bd -filled -offset indent +.Nm filter +.Fl x Ns Ar width +.Fl y Ns Ar length +.Fl n Ar login +.Fl h Ar host acct-file +.Ed +.Pp +where +.Ar width +and +.Ar length +are represented in pixels, +specified by the +.Cm px +and +.Cm py +entries respectively. +.Pp +All filters take +.Em stdin +as the file, +.Em stdout +as the printer, +may log either to +.Em stderr +or using +.Xr syslog 3 , +and must not ignore +.Dv SIGINT . +.Sh LOGGING +Error messages generated by the line printer programs themselves +(that is, the +.Xr lp Ns * +programs) +are logged by +.Xr syslog 3 +using the +.Dv LPR +facility. +Messages printed on +.Em stderr +of one of the filters +are sent to the corresponding +.Cm lf +file. +The filters may, of course, use +.Xr syslog +themselves. +.Pp +Error messages sent to the console have a carriage return and a line +feed appended to them, rather than just a line feed. +.Sh SEE ALSO +.Xr termcap 5 , +.Xr lpc 8 , +.Xr lpd 8 , +.Xr pac 8 , +.Xr lpr 1 , +.Xr lpq 1 , +.Xr lprm 1 +.Rs +.%T "4.3 BSD Line Printer Spooler Manual" +.Re +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.2 .. diff --git a/usr/src/share/man/man5/protocols.5 b/usr/src/share/man/man5/protocols.5 new file mode 100644 index 0000000000..374a3aa084 --- /dev/null +++ b/usr/src/share/man/man5/protocols.5 @@ -0,0 +1,77 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)protocols.5 6.5 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt PROTOCOLS 5 +.Os BSD 4.2 +.Sh NAME +.Nm protocols +.Nd protocol name data base +.Sh DESCRIPTION +The +.Nm protocols +file contains information regarding the known protocols used in the +.Tn DARPA +Internet. For each protocol a single line should be present +with the following information: +.Bd -unfilled -offset indent +official protocol name +protocol number +aliases +.Ed +.Pp +Items are separated by any number of blanks and/or +tab characters. A ``#'' indicates the beginning of +a comment; characters up to the end of the line are +not interpreted by routines which search the file. +.Pp +Protocol names may contain any printable +character other than a field delimiter, newline, +or comment character. +.Sh FILES +.Bl -tag -width /etc/protocols -compact +.It Pa /etc/protocols +The +.Nm protocols +file resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr getprotoent 3 +.Sh BUGS +A name server should be used instead of a static file. +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/remote.5 b/usr/src/share/man/man5/remote.5 new file mode 100644 index 0000000000..d5f6d55571 --- /dev/null +++ b/usr/src/share/man/man5/remote.5 @@ -0,0 +1,200 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)remote.5 6.3 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt REMOTE 5 +.Os BSD 4.2 +.Sh NAME +.Nm remote +.Nd remote host description file +.Sh DESCRIPTION +The systems known by +.Xr tip 1 +and their attributes are stored in an +.Tn ASCII +file which +is structured somewhat like the +.Xr termcap 5 +file. Each line in the file provides a description for a single +.Xr system . +Fields are separated by a colon (``:''). +Lines ending in a \e character with an immediately following newline are +continued on the next line. +.Pp +The first entry is the name(s) of the host system. If there is more +than one name for a system, the names are separated by vertical bars. +After the name of the system comes the fields of the description. A +field name followed by an `=' sign indicates a string value follows. A field +name followed by a `#' sign indicates a following numeric value. +.Pp +Entries named ``tip*'' and ``cu*'' +are used as default entries by +.Xr tip , +and the +.Xr cu +interface to +.Xr tip , +as follows. When +.Xr tip +is invoked with only a phone number, it looks for an entry +of the form ``tip300'', where 300 is the baud rate with +which the connection is to be made. When the +.Xr cu +interface is used, entries of the form ``cu300'' are used. +.Sh CAPABILITIES +Capabilities are either strings (str), numbers (num), or boolean +flags (bool). A string capability is specified by +.Em capability Ns Ar = Ns Em value ; +for example, ``dv=/dev/harris''. A numeric capability is specified by +.Em capability Ns Ar # Ns Em value ; +for example, ``xa#99''. A boolean capability is specified by simply listing +the capability. +.Bl -tag -width indent +.It Cm \&at +(str) +Auto call unit type. +.It Cm \&br +(num) +The baud rate used in establishing +a connection to the remote host. +This is a decimal number. +The default baud rate is 300 baud. +.It Cm \&cm +(str) +An initial connection message to be sent +to the remote host. For example, if a +host is reached through port selector, this +might be set to the appropriate sequence +required to switch to the host. +.It Cm \&cu +(str) +Call unit if making a phone call. +Default is the same as the `dv' field. +.It Cm \&di +(str) +Disconnect message sent to the host when a +disconnect is requested by the user. +.It Cm \&du +(bool) +This host is on a dial-up line. +.It Cm \&dv +(str) +.Tn UNIX +device(s) to open to establish a connection. +If this file refers to a terminal line, +.Xr tip 1 +attempts to perform an exclusive open on the device to insure only +one user at a time has access to the port. +.It Cm \&el +(str) +Characters marking an end-of-line. +The default is +.Dv NULL . +`~' escapes are only +recognized by +.Xr tip +after one of the characters in `el', +or after a carriage-return. +.It Cm \&fs +(str) +Frame size for transfers. +The default frame size is equal to +.Dv BUFSIZ . +.It Cm \&hd +(bool) +The host uses half-duplex communication, local +echo should be performed. +.It Cm \&ie +(str) +Input end-of-file marks. +The default is +.Dv NULL . +.It Cm \&oe +(str) +Output end-of-file string. +The default is +.Dv NULL . +When +.Xr tip +is transferring a file, this +string is sent at end-of-file. +.It Cm \&pa +(str) +The type of parity to use when sending data +to the host. This may be one of ``even'', +``odd'', ``none'', ``zero'' (always set bit 8 to zero), +``one'' (always set bit 8 to 1). The default +is even parity. +.It Cm \&pn +(str) +Telephone number(s) for this host. +If the telephone number field contains +an @ sign, +.Xr tip +searches the file +.Pa /etc/phones +file for a list of telephone numbers; +(See +.Xr phones 5 . ) +.It Cm \&tc +(str) +Indicates that the list of capabilities is continued +in the named description. This is used +primarily to share common capability information. +.El +.Pp +Here is a short example showing the use of the capability continuation +feature: +.Bd -literal +UNIX-1200:\e +:dv=/dev/cau0:el=^D^U^C^S^Q^O@:du:at=ventel:ie=#$%:oe=^D:br#1200: +arpavax|ax:\e +:pn=7654321%:tc=UNIX-1200 +.Ed +.Sh FILES +.Bl -tag -width /etc/remote -compact +.It Pa /etc/remote +The +.Nm remote +host description file +resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr tip 1 , +.Xr phones 5 +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/resolver.5 b/usr/src/share/man/man5/resolver.5 new file mode 100644 index 0000000000..c1a255c8bb --- /dev/null +++ b/usr/src/share/man/man5/resolver.5 @@ -0,0 +1,142 @@ +.\" Copyright (c) 1986, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)resolver.5 5.12 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt RESOLVER 5 +.Os BSD 4 +.Sh NAME +.Nm resolver +.Nd resolver configuration file +.Sh SYNOPSIS +.Nm resolv.conf +.Sh DESCRIPTION +The +.Xr resolver 3 +is a set of routines in the C library +which provide access to the Internet Domain Name System. +The resolver configuration file contains information that is read +by the resolver routines the first time they are invoked by a process. +The file is designed to be human readable and contains a list of +keywords with values that provide various types of resolver information. +.Pp +On a normally configured system this file should not be necessary. +The only name server to be queried will be on the local machine, +the domain name is determined from the host name, +and the domain search path is constructed from the domain name. +.Pp +The different configuration options are: +.Bl -tag -width nameserver +.It Sy nameserver +Internet address (in dot notation) of a name server +that the resolver should query. +Up to +.Dv MAXNS +(currently 3) name servers may be listed, +one per keyword. +If there are multiple servers, +the resolver library queries them in the order listed. +If no +.Sy nameserver +entries are present, +the default is to use the name server on the local machine. +(The algorithm used is to try a name server, and if the query times out, +try the next, until out of name servers, +then repeat trying all the name servers +until a maximum number of retries are made). +.It Sy domain +Local domain name. +Most queries for names within this domain can use short names +relative to the local domain. +If no +.Sy domain +entry is present, the domain is determined +from the local host name returned by +.Xr gethostname 2 ; +the domain part is taken to be everything after the first `.'. +Finally, if the host name does not contain a domain part, the root +domain is assumed. +.It Sy search +Search list for host-name lookup. +The search list is normally determined from the local domain name; +by default, it begins with the local domain name, then successive +parent domains that have at least two components in their names. +This may be changed by listing the desired domain search path +following the +.Sy search +keyword with spaces or tabs separating +the names. +Most resolver queries will be attempted using each component +of the search path in turn until a match is found. +Note that this process may be slow and will generate a lot of network +traffic if the servers for the listed domains are not local, +and that queries will time out if no server is available +for one of the domains. +.Pp +The search list is currently limited to six domains +with a total of 256 characters. +.El +.Pp +The +.Sy domain +and +.Sy search +keywords are mutually exclusive. +If more than one instance of these keywords is present, +the last instance will override. +.Pp +The keyword and value must appear on a single line, and the keyword +(e.g. +.Sy nameserver ) +must start the line. The value follows +the keyword, separated by white space. +.Sh FILES +.Bl -tag -width /etc/resolv.conf -compact +.It Pa /etc/resolv.conf +The file +.Nm resolv.conf +resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr gethostbyname 3 , +.Xr resolver 3 , +.Xr hostname 7 , +.Xr named 8 +.Rs +.%T "Name Server Operations Guide for BIND" +.Re +.Sh HISTORY +The +.Nm resolv.conf +file format appeared in +.Bx 4.3 . diff --git a/usr/src/share/man/man5/services.5 b/usr/src/share/man/man5/services.5 new file mode 100644 index 0000000000..27df9bed2b --- /dev/null +++ b/usr/src/share/man/man5/services.5 @@ -0,0 +1,85 @@ +.\" Copyright (c) 1983, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)services.5 6.6 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt SERVICES 5 +.Os BSD 4.2 +.Sh NAME +.Nm services +.Nd service name data base +.Sh DESCRIPTION +The +.Nm services +file contains information regarding +the known services available in the +.Tn DARPA +Internet. +For each service a single line should be present +with the following information: +.Bd -unfilled -offset indent +official service name +port number +protocol name +aliases +.Ed +.Pp +Items are separated by any number of blanks and/or +tab characters. The port number and protocol name +are considered a single +.Em item ; +a ``/'' is used to +separate the port and protocol (e.g. ``512/tcp''). +A ``#'' indicates the beginning of +a comment; subsequent characters up to the end of the line are +not interpreted by the routines which search the file. +.Pp +Service names may contain any printable +character other than a field delimiter, newline, +or comment character. +.Sh FILES +.Bl -tag -width /etc/services -compact +.It Pa /etc/services +The +.Nm services +file resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr getservent 3 +.Sh BUGS +A name server should be used instead of a static file. +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man5/shells.5 b/usr/src/share/man/man5/shells.5 new file mode 100644 index 0000000000..f0b948812d --- /dev/null +++ b/usr/src/share/man/man5/shells.5 @@ -0,0 +1,65 @@ +.\" Copyright (c) 1986, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)shells.5 5.4 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt SHELLS 5 +.Os BSD 4.2 +.Sh NAME +.Nm shells +.Nd shell database +.Sh DESCRIPTION +The +.Nm shells +file contains a list of the shells on the system. +For each shell a single line should be present, consisting of the +shell's path, relative to root. +.Pp +A hash mark (``#'') indicates the beginning of a comment; subsequent +characters up to the end of the line are not interpreted by the +routines which search the file. +Blank lines are also ignored. +.Sh FILES +.Bl -tag -width /etc/shells -compact +.It Pa /etc/shells +The +.Nm shells +file resides in +.Pa /etc . +.El +.Sh SEE ALSO +.Xr getusershell 3 +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 4.3 tahoe . diff --git a/usr/src/share/man/man5/stab.5 b/usr/src/share/man/man5/stab.5 new file mode 100644 index 0000000000..83e2c4252e --- /dev/null +++ b/usr/src/share/man/man5/stab.5 @@ -0,0 +1,222 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)stab.5 6.5 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt STAB 5 +.Os BSD 4 +.Sh NAME +.Nm stab +.Nd symbol table types +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +The file +.Aq Pa stab.h +defines some of the symbol table +.Fa n_type +field values for a.out files. +These are the types for permanent symbols (i.e. not local labels, etc.) +used by the old debugger +.Em sdb +and the Berkeley Pascal compiler +.Xr pc 1 . +Symbol table entries can be produced by the +.Pa .stabs +assembler directive. +This allows one to specify a double-quote delimited name, a symbol type, +one char and one short of information about the symbol, and an unsigned +long (usually an address). +To avoid having to produce an explicit label for the address field, +the +.Pa .stabd +directive can be used to implicitly address the current location. +If no name is needed, symbol table entries can be generated using the +.Pa .stabn +directive. +The loader promises to preserve the order of symbol table entries produced +by +.Pa .stab +directives. +As described in +.Xr a.out 5 , +an element of the symbol table +consists of the following structure: +.Bd -literal +/* +* Format of a symbol table entry. +*/ + +struct nlist { + union { + char *n_name; /* for use when in-core */ + long n_strx; /* index into file string table */ + } n_un; + unsigned char n_type; /* type flag */ + char n_other; /* unused */ + short n_desc; /* see struct desc, below */ + unsigned n_value; /* address or offset or line */ +}; +.Ed +.Pp +The low bits of the +.Fa n_type +field are used to place a symbol into +at most one segment, according to +the following masks, defined in +.Aq Pa a.out.h . +A symbol can be in none of these segments by having none of these segment +bits set. +.Bd -literal +/* +* Simple values for n_type. +*/ + +#define N_UNDF 0x0 /* undefined */ +#define N_ABS 0x2 /* absolute */ +#define N_TEXT 0x4 /* text */ +#define N_DATA 0x6 /* data */ +#define N_BSS 0x8 /* bss */ + +#define N_EXT 01 /* external bit, or'ed in */ +.Ed +.Pp +The +.Fa n_value +field of a symbol is relocated by the linker, +.Xr ld 1 +as an address within the appropriate segment. +.Fa N_value +fields of symbols not in any segment are unchanged by the linker. +In addition, the linker will discard certain symbols, according to rules +of its own, unless the +.Fa n_type +field has one of the following bits set: +.Bd -literal +/* +* Other permanent symbol table entries have some of the N_STAB bits set. +* These are given in +*/ + +#define N_STAB 0xe0 /* if any of these bits set, don't discard */ +.Ed +.Pp +This allows up to 112 (7 \(** 16) symbol types, split between the various +segments. +Some of these have already been claimed. +The old symbolic debugger, +.Em sdb , +uses the following n_type values: +.Bd -literal +#define N_GSYM 0x20 /* global symbol: name,,0,type,0 */ +#define N_FNAME 0x22 /* procedure name (f77 kludge): name,,0 */ +#define N_FUN 0x24 /* procedure: name,,0,linenumber,address */ +#define N_STSYM 0x26 /* static symbol: name,,0,type,address */ +#define N_LCSYM 0x28 /* .lcomm symbol: name,,0,type,address */ +#define N_RSYM 0x40 /* register sym: name,,0,type,register */ +#define N_SLINE 0x44 /* src line: 0,,0,linenumber,address */ +#define N_SSYM 0x60 /* structure elt: name,,0,type,struct_offset */ +#define N_SO 0x64 /* source file name: name,,0,0,address */ +#define N_LSYM 0x80 /* local sym: name,,0,type,offset */ +#define N_SOL 0x84 /* #included file name: name,,0,0,address */ +#define N_PSYM 0xa0 /* parameter: name,,0,type,offset */ +#define N_ENTRY 0xa4 /* alternate entry: name,linenumber,address */ +#define N_LBRAC 0xc0 /* left bracket: 0,,0,nesting level,address */ +#define N_RBRAC 0xe0 /* right bracket: 0,,0,nesting level,address */ +#define N_BCOMM 0xe2 /* begin common: name,, */ +#define N_ECOMM 0xe4 /* end common: name,, */ +#define N_ECOML 0xe8 /* end common (local name): ,,address */ +#define N_LENG 0xfe /* second stab entry with length information */ +.Ed +.Pp +where the comments give +.Em sdb +conventional use for +.Pa .stab +.Fa s +and the +.Fa n_name , +.Fa n_other , +.Fa n_desc , +and +.Fa n_value +fields +of the given +.Fa n_type . +.Em Sdb +uses the +.Fa n_desc +field to hold a type specifier in the form used +by the Portable C Compiler, +.Xr cc 1 ; +see the header file +.Pa pcc.h +for details on the format of these type values. +.Pp +The Berkeley Pascal compiler, +.Xr pc 1 , +uses the following +.Fa n_type +value: +.Bd -literal +#define N_PC 0x30 /* global pascal symbol: name,,0,subtype,line */ +.Ed +.Pp +and uses the following subtypes to do type checking across separately +compiled files: +.Bd -unfilled -offset indent +1 source file name +2 included file name +3 global label +4 global constant +5 global type +6 global variable +7 global function +8 global procedure +9 external function +10 external procedure +11 library variable +12 library routine +.Ed +.Sh SEE ALSO +.Xr as 1 , +.Xr ld 1 , +.Xr dbx 1 , +.Xr a.out 5 +.Sh BUGS +.Pp +More basic types are needed. +.Sh HISTORY +The +.Nm stab +file appeared in +.Bx 4.0 . diff --git a/usr/src/share/man/man5/types.5 b/usr/src/share/man/man5/types.5 new file mode 100644 index 0000000000..e1789e820c --- /dev/null +++ b/usr/src/share/man/man5/types.5 @@ -0,0 +1,147 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)types.5 6.2 (Berkeley) 4/29/91 +.\" +.Dd April 29, 1991 +.Dt TYPES 5 +.Os BSD 4 +.Sh NAME +.Nm types +.Nd system data types +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +The file +.Pa sys/types.h +contains the defined data types used in the kernel (most are +used through out the system). +.Bd -literal +#ifndef _TYPES_H_ +#define _TYPES_H_ + +typedef short dev_t; +#ifndef _POSIX_SOURCE + /* major part of a device */ +#define major(x) ((int)(((unsigned)(x)>>8)&0377)) + /* minor part of a device */ +#define minor(x) ((int)((x)&0377)) + /* make a device number */ +#define makedev(x,y) ((dev_t)(((x)<<8) | (y))) +#endif + +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; +typedef unsigned short ushort; /* Sys V compatibility */ + +#include +#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE) +#include +#endif + +#ifdef _CLOCK_T_ +typedef _CLOCK_T_ clock_t; +#undef _CLOCK_T_ +#endif + +#ifdef _SIZE_T_ +typedef _SIZE_T_ size_t; +#undef _SIZE_T_ +#endif + +#ifdef _TIME_T_ +typedef _TIME_T_ time_t; +#undef _TIME_T_ +#endif + +#ifndef _POSIX_SOURCE +typedef struct _uquad { unsigned long val[2]; } u_quad; +typedef struct _quad { long val[2]; } quad; +#endif +typedef long * qaddr_t; /* should be typedef quad * qaddr_t; */ + +typedef long daddr_t; +typedef char * caddr_t; +typedef u_long ino_t; +typedef long swblk_t; +typedef long segsz_t; +typedef long off_t; +typedef u_short uid_t; +typedef u_short gid_t; +typedef short pid_t; +typedef u_short nlink_t; +typedef u_short mode_t; +typedef u_long fixpt_t; + +#ifndef _POSIX_SOURCE +#define NBBY 8 /* number of bits in a byte */ + +/* + * Select uses bit masks of file descriptors in longs. These macros + * manipulate such bit fields (the filesystem macros use chars). + * FD_SETSIZE may be defined by the user, but the default here should + * be >= NOFILE (param.h). + */ +#ifndef FD_SETSIZE +#define FD_SETSIZE 256 +#endif + +typedef long fd_mask; +#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ + +#ifndef howmany +#define howmany(x, y) (((x)+((y)-1))/(y)) +#endif + +typedef struct fd_set { + fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; +} fd_set; + +#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) +#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) +#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) +#define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) + +#endif /* !_POSIX_SOURCE */ +#endif /* !_TYPES_H_ */ +.Ed +.Sh SEE ALSO +.Xr fs 5 , +.Xr time 3 , +.Xr lseek 2 , +.Xr adb 1 +.Sh HISTORY +A +.Nm +file appeared in +.At v7 . diff --git a/usr/src/share/man/man5/utmp.5 b/usr/src/share/man/man5/utmp.5 new file mode 100644 index 0000000000..28646455b3 --- /dev/null +++ b/usr/src/share/man/man5/utmp.5 @@ -0,0 +1,218 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)utmp.5 6.8 (Berkeley) 5/5/91 +.\" +.Dd May 5, 1991 +.Dt UTMP 5 +.Os BSD 4 +.Sh NAME +.Nm utmp , +.Nm wtmp , +.Nm lastlog +.Nd login records +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +The file +.Aq Pa utmp.h +declares the structures used to record information about current +users in the file +.Nm utmp , +logins and logouts in the file +.Nm wtmp , +and last logins in the file +.Nm lastlog . +The time stamps of date changes, shutdowns and reboots are also logged in +the +.Nm wtmp +file. +.Pp +These files can grow rapidly on busy systems, daily or weekly rotation +is recommended. +If any of these files do not exist, it is not created. +These +files must be created manually and are normally maintained in either the script +.Pa /etc/daily +or the script +.Pa /etc/weekly . +(See +.Xr cron 8 . ) +.Bd -literal -offset indent +#define _PATH_UTMP "/var/run/utmp" +#define _PATH_WTMP "/var/log/wtmp" +#define _PATH_LASTLOG "/var/log/lastlog" + +#define UT_NAMESIZE 8 +#define UT_LINESIZE 8 +#define UT_HOSTSIZE 16 + +struct lastlog { + time_t ll_time; + char ll_line[UT_LINESIZE]; + char ll_host[UT_HOSTSIZE]; +}; + +struct utmp { + char ut_line[UT_LINESIZE]; + char ut_name[UT_NAMESIZE]; + char ut_host[UT_HOSTSIZE]; + long ut_time; +}; +.Ed +.Pp +Each time a user logs in, the +.Xr login +program looks up the user's +.Tn UID +in the file +.Nm lastlog. +If it is found, the timestamp of the last time the user logged +in, the terminal line and the hostname +are written to the standard output. (Providing the login is not +.Em quiet , +see +.Xr login 1 . ) +The +.Xr login +program then records the new login time in the file +.Nm lastlog . +.Pp +After the new +.Fa lastlog +record is written , +.\" the +.\" .Xr libutil 3 +.\" routine +the file +.Nm utmp +is opened and the +.Fa utmp +record for the user inserted. +This record remains there until +the user logs out at which time it is deleted. +The +.Nm utmp +file is used by the programs +.Xr rwho 1 , +.Xr users 1 , +.Xr w 1 , +and +.Xr who 1 . +.Pp +Next, the +.Xr login +program opens the file +.Nm wtmp , +and appends the user's +.Fa utmp +record. +The same +.Fa utmp +record, with an updated time stamp is later appended +to the file when the user logs out. (See +.Xr init 8 . ) +The +.Nm wtmp +file is used by the programs +.Xr last 1 +and +.Xr ac 8 . +.Pp +In the event of a date change, a shutdown or reboot, the +following items are logged in the +.Nm wtmp +file. +.Pp +.Bl -tag -width shutdownxx -compact +.It Li reboot +.It Li shutdown +A system reboot or shutdown has been initiated. +The character +.Ql \&~ +is placed in the field +.Fa ut_line , +and +.Li reboot +or +.Li shutdown +in the field +.Fa ut_name . +(See +.Xr shutdown 8 +and +.Xr reboot 8 . ) +.Pp +.It Li date +The system time has been manually or automatically updated. +(See +.Xr date 1 . ) +The command name +.Xr date +is recorded in the field +.Fa ut_name . +In the field +.Fa ut_line , +the character +.Ql \&{ +indicates the time prior to the change, and the character +.Ql \\*(Ba +indicates the new time. +.El +.Sh FILES +.Bl -tag -width /var/log/lastlog -compact +.It Pa /var/run/utmp +The +.Nm utmp file. +.It Pa /var/log/wtmp +The +.Nm wtmp file. +.It Pa /var/log/lastlog +The +.Nm lastlog file. +.El +.Sh SEE ALSO +.Xr last 1 , +.Xr login 1 , +.Xr who 1 , +.Xr ac 8 , +.Xr init 8 +.Sh HISTORY +A +.Nm utmp +and +.Nm wtmp +file format appeared in +.At v6 . +The +.Nm lastlog +file format appeared in +.Bx 3.0 . diff --git a/usr/src/share/man/man7/Makefile b/usr/src/share/man/man7/Makefile new file mode 100644 index 0000000000..a62fa261a3 --- /dev/null +++ b/usr/src/share/man/man7/Makefile @@ -0,0 +1,9 @@ +# @(#)Makefile 0.1 (RWGrimes) 3/25/93 +# +# Missing: term.0 + +MAN7= ascii.0 environ.0 hier.0 hostname.0 intro.0 mailaddr.0 \ + mdoc.samples.0 operator.0 +MLINKS= intro.7 miscellaneous.7 + +.include diff --git a/usr/src/share/man/man7/ascii.7 b/usr/src/share/man/man7/ascii.7 new file mode 100644 index 0000000000..0b28d00ad1 --- /dev/null +++ b/usr/src/share/man/man7/ascii.7 @@ -0,0 +1,116 @@ +.\" Copyright (c) 1989, 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)ascii.7 6.4 (Berkeley) 7/19/91 +.\" +.Dd July 19, 1991 +.Dt ASCII 7 +.Os +.Sh NAME +.Nm ascii +.Nd octal, hexidecimal and decimal +.Tn ASCII +character sets +.Sh DESCRIPTION +The +.Nm octal +set: +.Bd -literal -offset left +000 nul 001 soh 002 stx 003 etx 004 eot 005 enq 006 ack 007 bel +010 bs 011 ht 012 nl 013 vt 014 np 015 cr 016 so 017 si +020 dle 021 dc1 022 dc2 023 dc3 024 dc4 025 nak 026 syn 027 etb +030 can 031 em 032 sub 033 esc 034 fs 035 gs 036 rs 037 us +040 sp 041 ! 042 " 043 # 044 $ 045 % 046 & 047 ' +050 ( 051 ) 052 * 053 + 054 , 055 - 056 . 057 / +060 0 061 1 062 2 063 3 064 4 065 5 066 6 067 7 +070 8 071 9 072 : 073 ; 074 < 075 = 076 > 077 ? +100 @ 101 A 102 B 103 C 104 D 105 E 106 F 107 G +110 H 111 I 112 J 113 K 114 L 115 M 116 N 117 O +120 P 121 Q 122 R 123 S 124 T 125 U 126 V 127 W +130 X 131 Y 132 Z 133 [ 134 \e\ 135 ] 136 ^ 137 _ +140 ` 141 a 142 b 143 c 144 d 145 e 146 f 147 g +150 h 151 i 152 j 153 k 154 l 155 m 156 n 157 o +160 p 161 q 162 r 163 s 164 t 165 u 166 v 167 w +170 x 171 y 172 z 173 { 174 | 175 } 176 ~ 177 del +.Ed +.Pp +The +.Nm hexidecimal +set: +.Bd -literal -offset left +00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel +08 bs 09 ht 0a nl 0b vt 0c np 0d cr 0e so 0f si +10 dle 11 dc1 12 dc2 13 dc3 14 dc4 15 nak 16 syn 17 etb +18 can 19 em 1a sub 1b esc 1c fs 1d gs 1e rs 1f us +20 sp 21 ! 22 " 23 # 24 $ 25 % 26 & 27 ' +28 ( 29 ) 2a * 2b + 2c , 2d - 2e . 2f / +30 0 31 1 32 2 33 3 34 4 35 5 36 6 37 7 +38 8 39 9 3a : 3b ; 3c < 3d = 3e > 3f ? +40 @ 41 A 42 B 43 C 44 D 45 E 46 F 47 G +48 H 49 I 4a J 4b K 4c L 4d M 4e N 4f O +50 P 51 Q 52 R 53 S 54 T 55 U 56 V 57 W +58 X 59 Y 5a Z 5b [ 5c \e\ 5d ] 5e ^ 5f _ +60 \` 61 a 62 b 63 c 64 d 65 e 66 f 67 g +68 h 69 i 6a j 6b k 6c l 6d m 6e n 6f o +70 p 71 q 72 r 73 s 74 t 75 u 76 v 77 w +78 x 79 y 7a z 7b { 7c | 7d } 7e ~ 7f del +.Ed +.Pp +The +.Nm decimal +set: +.Bd -literal -offset left + 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel + 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si + 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb + 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us + 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' + 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / + 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 + 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? + 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G + 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O + 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W + 88 X 89 Y 90 Z 91 [ 92 \e\ 93 ] 94 ^ 95 _ + 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g +104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o +112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w +120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del +.Ed +.Sh FILES +.Bl -tag -width /usr/share/misc/ascii -compact +.It Pa /usr/share/misc/ascii +.El +.Sh HISTORY +An +.Nm ascii +manual page appeared in +.At v7 . diff --git a/usr/src/share/man/man7/environ.7 b/usr/src/share/man/man7/environ.7 new file mode 100644 index 0000000000..4aabf3019d --- /dev/null +++ b/usr/src/share/man/man7/environ.7 @@ -0,0 +1,150 @@ +.\" Copyright (c) 1983, 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)environ.7 6.6 (Berkeley) 7/19/91 +.\" +.Dd July 19, 1991 +.Dt ENVIRON 7 +.Os BSD 4.2 +.Sh NAME +.Nm environ +.Nd user environment +.Sh SYNOPSIS +.Ar extern char **environ ; +.Sh DESCRIPTION +An array of strings called the +.Ar environment +is made available by +.Xr execve 2 +when a process begins. By convention these strings have the form +.Dq Ar name=value . +The following names are used by various commands: +.Bl -tag -width Fl +.It Ev EXINIT +A startup list of commands read by +.Xr ex 1 , +.Xr edit 1 , +and +.Xr vi 1 . +.It Ev HOME +A user's login directory, set by +.Xr login 1 +from the password file +.Xr passwd 5 . +.It Ev PATH +The sequence of directories, separated by colons, searched by +.Xr csh 1 , +.Xr sh 1 , +.Xr system 3 , +.Xr execvp 3 , +etc, when looking for an executable file. +PATH is set to ``:/usr/ucb:/bin:/usr/bin'' initially by +.Xr login 1 . +.It Ev PRINTER +The name of the default printer to be used by +.Xr lpr 1 , +.Xr lpq 1 , +and +.Xr lprm 1 . +.It Ev SHELL +The full pathname of the user's login shell. +.It Ev TERM +The kind of terminal for which output is to be prepared. +This information is used by commands, such as +.Xr nroff 1 +or +.Xr plot 1 +which may exploit special terminal capabilities. See +.Pa /usr/share/misc/termcap +.Pq Xr tmercap 5 +for a list of terminal types. +.It Ev TERMCAP +The string describing the terminal in TERM, or, if +it begins with a '/', the name of the termcap file. +See +.Ev TERMPATH +below, +.Xr termcap 5 , +and +.Xr termcap . +.It Ev TERMPATH +A sequence of pathnames of termcap files, separated by colons or spaces, +which are searched for terminal descriptions in the order listed. Having +no +.Ev TERMPATH +is equivalent to a +.Ev TERMPATH +of +.Dq Pa $HOME/.termcap:/etc/termcap . +.Ev TERMPATH +is ignored if +.Ev TERMCAP +contains a full pathname. +.It Ev USER +The login name of the user. +.El +.Pp +Further names may be placed in the environment by the +.Xr export +command and +.Ar name=value +arguments in +.Xr sh 1 , +or by the +.Xr setenv +command if you use +.Xr csh 1 . +It is unwise to change certain +.Xr sh 1 +variables that are frequently exported by +.Pa .profile +files, such as +.Ev MAIL , +.Ev PS1 , +.Ev PS2 , +and +.Ev IFS , +unless you know what you are doing. +.Sh SEE ALSO +.Xr csh 1 , +.Xr ex 1 , +.Xr login 1 , +.Xr sh 1 , +.Xr execve 2 , +.Xr execle 3 , +.Xr system 3 , +.Xr termcap 3 , +.Xr termcap 5 +.Sh HISTORY +The +.Nm environ +manual page appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man7/hier.7 b/usr/src/share/man/man7/hier.7 new file mode 100644 index 0000000000..d855af965d --- /dev/null +++ b/usr/src/share/man/man7/hier.7 @@ -0,0 +1,389 @@ +.\" Copyright (c) 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)hier.7 6.3 (Berkeley) 7/23/91 +.\" +.Dd July 23, 1991 +.Dt HIER 7 +.Os +.Sh NAME +.Nm hier +.Nd layout of filesystems +.Sh DESCRIPTION +A sketch of the filesystem hierarchy. +.Bl -tag -width "/stand/" +.It Li / +root directory of the filesystem +.It Li /bin/ +user utilities fundamental to both single-user and multi-user environments +.It Li /dev/ +block and character device files +.Pp +.Bl -tag -width MAKEDEV -compact +.It Li MAKEDEV +script for creating device files; +see +.Xr makedev 8 +.It Li fd/ +file descriptor files; +see +.Xr \&fd 4 +.El +.It Li /etc/ +system configuration files and scripts +.Pp +.Bl -tag -width "disklabels/" -compact +.It Li localtime +local timezone information; +see +.Xr ctime 3 +.It Li disklabels/ +backup disklabels; +see +.Xr disklabel 8 +.It Li kerberosIV/ +configuration files for the kerberos version IV; +see +.Xr kerberos 1 +.It Li mtree/ +mtree configuration files; +see +.Xr mtree 1 +.It Li namedb/ +named configuration files; +see +.Xr named 8 +.El +.It Li /mnt/ +empty directory commonly used by +system administrators as a temporary mount point +.It Li /sbin/ +system programs and administration utilities +fundamental to both single-user and multi-user environments +.It Li /stand/ +programs used in a standalone environment +.It Li /tmp/ +temporary files, usually a +.Xr mfs 8 +memory-based filesystem (the contents +of /tmp are usually NOT preserved across a system reboot) +.It Li /usr/ +contains the majority of user utilities and applications +.Pp +.Bl -tag -width "libdata/" -compact +.It Li bin/ +common utilities, programming tools, and applications +.It Li contrib/ +large packages contributed to Berkeley by outside parties +.It Li games/ +useful and semi-frivolous programs +.It Li include/ +standard C include files +.Pp +.Bl -tag -width "kerberosIV/" -compact +.It Li X11/ +C include files for X11 window system +.It Li arpa/ +C include files for Internet service protocols +.It Li kerberosIV/ +C include files for kerberos authentication package; +see +.Xr kerberos 1 +.It Li machine/ +machine specific C include files +.It Li net/ +misc network C include files +.It Li netimp/ +C include files for IMP protocols; +see +.Xr imp 4 +.It Li netinet/ +C include files for Internet standard protocols; +see +.Xr inet 4 +.It Li netiso/ +C include files for ISO standard protocols; +see +.Xr iso 4 +.It Li netns/ +C include files for XNS standard protocols; +see +.Xr \&ns 4 +.It Li nfs/ +C include files for NFS (Network File System) +.It Li pascal/ +include files for pc 1 +.It Li protocols/ +C include files for Berkeley service protocols +.It Li sys/ +system C include files (kernel data structures) +.It Li ufs/ +C include files for UFS (The U-word File System) +.El +.Pp +.It Li lib/ +archive libraries +.Pp +.Bl -tag -width Fl -compact +.It Li uucp/ +UUCP configuration files (historically placed; to be moved) +.El +.It Li libdata/ +misc. utility data files +.It Li libexec/ +system daemons & system utilities (executed by other programs) +.It Li local/ +local executables, libraries, etc. +.It Li obj/ +architecture-specific target tree produced by building the /usr/src tree +.It Li old/ +programs from past lives of BSD which may disappear in future +releases +.It Li sbin/ +system daemons & system utilities (executed by users) +.It Li share/ +architecture-independent ascii text files +.Pp +.Bl -tag -width "calendar/" -compact +.It Li calendar/ +a variety of pre-fab calendar files; +see +.Xr calendar 1 +.It Li dict/ +word lists; +see +.Xr look 1 +.Pp +.Bl -tag -width Fl -compact +.It Li words +common words +.It Li web2 +words from Webster's 2nd International +.It Li papers/ +reference databases; +see +.Xr refer 1 +.It Li special/ +custom word lists; +see +.Xr spell 1 +.El +.Pp +.It Li doc/ +misc documentation; +src for most of the printed +.Bx BSD +manuals (available +from the +.Tn USENIX +association) +.It Li games/ +ascii text files used by various games +.It Li man/ +manual pages +.It Li me/ +macros for use with the me macro package +.It Li misc/ +misc system-wide ascii text files +.Bl -tag -width Fl -compact +.It Li termcap +terminal characteristics database; +see +.Xr termcap 5 +.El +.It Li mk/ +templates for make; +see +.Xr make 1 +.It Li ms/ +macros for use with the ms macro package +.It Li skel/ +example . (dot) files for new accounts +.It Li tabset/ +tab description files for a variety of terminals; used in +the termcap file; +see +.Xr termcap 5 +.It Li tmac/ +text processing macros; +see +.Xr nroff 1 +and +.Xr troff 1 +.It Li zoneinfo/ +timezone configuration information; +see +.Xr tzfile 5 +.El +.Pp +.It Li src/ +BSD and/or local source files +.Pp +.Bl -tag -width "kerberosIV/" -compact +.It Li bin/ +src for files in /bin +.It Li contrib/ +src for files in /usr/contrib +.It Li etc/ +src for files in /etc +.It Li games/ +src for files in /usr/games +.It Li include/ +src for files in /usr/include +.It Li kerberosIV/ +src for kerberos version IV +.It Li lib/ +src for files in /usr/lib +.It Li libexec/ +src for files in /usr/libexec +.It Li local/ +src for files in /usr/local +.It Li old/ +src for files in /usr/old +.It Li pgrm/ +src for programming tools in /usr/bin +.It Li sbin/ +src for files in /sbin +.It Li share/ +src for files in /usr/share +.It Li sys/ +kernel src files +.It Li usr.bin/ +src for files in /usr/bin +.It Li usr.sbin/ +src for files in /usr/sbin +.El +.El +.It Li /var/ +multi-purpose log, temporary, transient, and spool files +.Pp +.Bl -tag -width "preserve/" -compact +.It Li account/ +system accounting files +.Pp +.Bl -tag -width Fl -compact +.It Li acct +execution accounting file; +see +.Xr acct 5 +.El +.Pp +.It Li at/ +timed command scheduling files; +see +.Xr \&at 1 +.It Li backups/ +misc. backup files +.It Li db/ +misc. automatically generated system-specific database files +.It Li games/ +misc. game status and log files +.It Li log/ +misc. system log files +.Pp +.Bl -tag -width Fl -compact +.It Li wtmp +login/logout log; +see +.Xr wtmp 5 +.El +.Pp +.It Li mail/ +user mailbox files +.It Li preserve/ +temporary home of files preserved after an accidental death +of an editor; +see +.Xr \&ex 1 +.It Li quotas/ +filesystem quota information files +.It Li run/ +system information files describing various info about +system since it was booted +.Pp +.Bl -tag -width Fl -compact +.It Li utmp +database of current users; +see +.Xr utmp 5 +.El +.Pp +.It Li rwho/ +rwho data files; +see +.Xr rwhod 8 , +.Xr rwho 1 , +and +.Xr ruptime 1 +.It Li spool/ +misc. printer and mail system spooling directories +.Pp +.Bl -tag -width Fl -compact +.It Li ftp/ +commonly ~ftp; the anonymous ftp root directory +.It Li mqueue/ +undelivered mail queue; +see +.Xr sendmail 8 +.It Li output/ +line printer spooling directories +.It Li secretmail/ +secretmail spool directory; +see +.Xr xget 1 +.It Li uucp/ +uucp spool directory +.It Li uucppublic/ +commonly ~uucp; public uucp temporary directory +.El +.Pp +.It Li tmp/ +temporary files that are kept between system reboots +.El +.It Li /vmunix +pure kernel executable (the operating system loaded into memory +at boot time). +.El +.Sh SEE ALSO +.Xr \&ls 1 , +.Xr apropos 1 , +.Xr whatis 1 , +.Xr whereis 1 , +.Xr finger 1 , +.Xr which 1 , +.Xr find 1 , +.Xr grep 1 , +.Xr fsck 8 +.Sh HISTORY +A +.Nm hier +manual page appeared in +.At v7 . diff --git a/usr/src/share/man/man7/hostname.7 b/usr/src/share/man/man7/hostname.7 new file mode 100644 index 0000000000..3de3ab3243 --- /dev/null +++ b/usr/src/share/man/man7/hostname.7 @@ -0,0 +1,92 @@ +.\" Copyright (c) 1987, 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)hostname.7 6.5 (Berkeley) 6/24/90 +.\" +.Dd June 24, 1990 +.Dt HOSTNAME 7 +.Os BSD 4.2 +.Sh NAME +.Nm hostname +.Nd host name resolution description +.Sh DESCRIPTION +Hostnames are domains, where a domain is a hierarchical, dot-separated +list of subdomains; for example, the machine monet, in the Berkeley +subdomain of the EDU subdomain of the Internet would be represented as +.Pp +.Dl monet.Berkeley.EDU +.Pp +(with no trailing dot). +.Pp +Hostnames are often used with network client and server programs, +which must generally translate the name to an address for use. +(This function is generally performed by the library routine +.Xr gethostbyname 3 . ) +Hostnames are resolved by the Internet name resolver in the following +fashion. +.Pp +If the name consists of a single component, i.e. contains no dot, +and if the environment variable +.Dq Ev HOSTALIASES +is set to the name of a file, +that file is searched for an string matching the input hostname. +The file should consist of lines made up of two white-space separated strings, +the first of which is the hostname alias, +and the second of which is the complete hostname +to be substituted for that alias. +If a case-insensitive match is found between the hostname to be resolved +and the first field of a line in the file, the substituted name is looked +up with no further processing. +.Pp +If the input name ends with a trailing dot, +the trailing dot is removed, +and the remaining name is looked up with no further processing. +.Pp +If the input name does not end with a trailing dot, it is looked up +by searching through a list of domains until a match is found. +The default search list includes first the local domain, +then its parent domains with at least 2 name components (longest first). +For example, +in the domain CS.Berkeley.EDU, the name lithium.CChem will be checked first +as lithium.CChem.CS.Berkeley.EDU and then as lithium.CChem.Berkeley.EDU. +Lithium.CChem.EDU will not be tried, as the there is only one component +remaining from the local domain. +The search path can be changed from the default +by a system-wide configuration file (see +.Xr resolver 5 ) . +.Sh SEE ALSO +.Xr gethostbyname 3 , +.Xr resolver 5 , +.Xr mailaddr 7 , +.Xr named 8 +.Sh HISTORY +.Nm Hostname +appeared in 4.2 BSD. diff --git a/usr/src/share/man/man7/intro.7 b/usr/src/share/man/man7/intro.7 new file mode 100644 index 0000000000..b334797d77 --- /dev/null +++ b/usr/src/share/man/man7/intro.7 @@ -0,0 +1,60 @@ +.\" Copyright (c) 1983, 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)intro.7 6.2 (Berkeley) 6/24/90 +.\" +.Dd June 24, 1990 +.Dt INTRO 7 +.Os BSD 4.2 +.Sh NAME +.Nm intro +.Nd miscellaneous information pages +.Sh DESCRIPTION +This section contains miscellaneous documentation, mostly +in the area of text processing macro packages for +.Xr troff 1 . +.Pp +.Ds I +.Cw mailaddr +.Cl ascii map of ASCII character set +.Cl environ user environment +.Cl eqnchar special character definitions for eqn +.Cl hier file system hierarchy +.Cl mailaddr mail addressing description +.Cl man macros to typeset manual pages +.Cl \&me macros for formatting papers +.Cl \&ms macros for formatting manuscripts +.Cl term conventional names for terminals +.Cw +.De +.Sh HISTORY +.Nm intro +appeared in 4.2 BSD. diff --git a/usr/src/share/man/man7/mailaddr.7 b/usr/src/share/man/man7/mailaddr.7 new file mode 100644 index 0000000000..226004dcd9 --- /dev/null +++ b/usr/src/share/man/man7/mailaddr.7 @@ -0,0 +1,160 @@ +.\" Copyright (c) 1983, 1987, 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)mailaddr.7 6.6 (Berkeley) 6/24/90 +.\" +.Dd June 24, 1990 +.Dt MAILADDR 7 +.Os BSD 4.2 +.Sh NAME +.Nm mailaddr +.Nd mail addressing description +.Sh DESCRIPTION +Mail addresses are based on the ARPANET protocol listed at the end of this +manual page. These addresses are in the general format +.Pp +.Dl user@domain +.Pp +where a domain is a hierarchical dot separated list of subdomains. For +example, the address +.Pp +.Dl eric@monet.berkeley.edu +.Pp +is normally interpreted from right to left: the message should go to the +ARPA name tables (which do not correspond exactly to the physical ARPANET), +then to the Berkeley gateway, after which it should go to the local host +monet. When the message reaches monet it is delivered to the user ``eric''. +.Pp +Unlike some other forms of addressing, this does not imply any routing. +Thus, although this address is specified as an ARPA address, it might +travel by an alternate route if that were more convenient or efficient. +For example, at Berkeley, the associated message would probably go directly +to monet over the Ethernet rather than going via the Berkeley ARPANET +gateway. +.Ss Abbreviation. +Under certain circumstances it may not be necessary to type the entire +domain name. In general, anything following the first dot may be omitted +if it is the same as the domain from which you are sending the message. +For example, a user on ``calder.berkeley.edu'' could send to ``eric@monet'' +without adding the ``berkeley.edu'' since it is the same on both sending +and receiving hosts. +.Pp +Certain other abbreviations may be permitted as special cases. For +example, at Berkeley, ARPANET hosts may be referenced without adding +the ``berkeley.edu'' as long as their names do not conflict with a local +host name. +.Ss Compatibility. +.Pp +Certain old address formats are converted to the new format to provide +compatibility with the previous mail system. In particular, +.Pp +.Dl user@host.ARPA +.Pp +is allowed and +.Pp +.Dl host:user +.Pp +is converted to +.Pp +.Dl user@host +.Pp +to be consistent with the +.Xr rcp 1 +command. +.Pp +Also, the syntax +.Pp +.Dl host!user +.Pp +is converted to: +.Pp +.Dl user@host.UUCP +.Pp +This is normally converted back to the ``host!user'' form before being sent +on for compatibility with older UUCP hosts. +.Pp +The current implementation is not able to route messages automatically through +the UUCP network. Until that time you must explicitly tell the mail system +which hosts to send your message through to get to your final destination. +.Ss Case Distinctions. +.Pp +Domain names (i.e., anything after the ``@'' sign) may be given in any mixture +of upper and lower case with the exception of UUCP hostnames. Most hosts +accept any combination of case in user names, with the notable exception of +MULTICS sites. +.Ss Route-addrs. +.Pp +Under some circumstances it may be necessary to route a message through +several hosts to get it to the final destination. Normally this routing +is done automatically, but sometimes it is desirable to route the message +manually. Addresses which show these relays are termed ``route-addrs.'' +These use the syntax: +.Pp +.Dl <@hosta,@hostb:user@hostc> +.Pp +This specifies that the message should be sent to hosta, from there to hostb, +and finally to hostc. This path is forced even if there is a more efficient +path to hostc. +.Pp +Route-addrs occur frequently on return addresses, since these are generally +augmented by the software at each host. It is generally possible to ignore +all but the ``user@domain'' part of the address to determine the actual +sender. +.Ss Postmaster. +.Pp +Every site is required to have a user or user alias designated ``postmaster'' +to which problems with the mail system may be addressed. +.Ss Other Networks. +.Pp +Some other networks can be reached by giving the name of the network as the +last component of the domain. +.Em This is not a standard feature +and may +not be supported at all sites. For example, messages to CSNET or BITNET sites +can often be sent to ``user@host.CSNET'' or ``user@host.BITNET'' respectively. +.Sh SEE ALSO +.Xr mail 1 , +.Xr sendmail 8 ; +.br +Crocker, D. H., +.Em Standard for the Format of Arpa Internet Text Messages, +RFC822. +.Sh HISTORY +.Nm Mailaddr +appeared in 4.2 BSD. +.Sh BUGS +The RFC822 group syntax (``group:user1,user2,user3;'') is not supported +except in the special case of ``group:;'' because of a conflict with old +berknet-style addresses. +.Pp +Route-Address syntax is grotty. +.Pp +UUCP- and ARPANET-style addresses do not coexist politely. diff --git a/usr/src/share/man/man7/mdoc.samples.7 b/usr/src/share/man/man7/mdoc.samples.7 new file mode 100644 index 0000000000..cf5b0bdc83 --- /dev/null +++ b/usr/src/share/man/man7/mdoc.samples.7 @@ -0,0 +1,2268 @@ +.\" Copyright (c) 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)mdoc.samples.7 5.7 (Berkeley) 7/1/91 +.\" + +.\" This sampler invokes every macro in the package several +.\" times and is garanteed to give a worst case performance +.\" for an already extremely slow package. + +.Dd July 1, 1991 +.Os BSD 4.4 +.Dt MDOC.SAMPLES 7 +.Sh NAME +.Nm mdoc.sample +.Nd writing manual pages with +.Nm -mdoc +macro package +.Sh SYNOPSIS +.Nm man mdoc.sample +.Sh DESCRIPTION +A tutorial sampler for writing +.Bx +manual pages with the +.Nm \-mdoc +macro package, a +.Em content Ns \-based +formatting +package for +.Xr troff 1 . +Its predecessor, the +.Xr \-man 7 +package, +addressed page structure leaving the +manipulation of fonts and other +typesetting details to the individual author. +The +.Nm \-mdoc +package +allows the author to ignore font considerations by +using macros to label +pieces of text according to content. +In the context of manual pages, examples of content +are a command name, a file pathname or a cross +reference to another manual page; these +items have value +for both the author and the future user of the manual page. +It is hoped the consistency gained +across the manual set will provide easier +translation to future documentation tools. +.Pp +Through out the +.Ux +manual pages, a manual entry +is simply referred +to as a man page, regardless of actual length and without +sexist intention. +.Sh TROFF IDIOSYNCRASIES +The +.Nm \-mdoc +package attempts to simplify the process of writing a man page. +Theoretically, one should not have to learn the dirty details of +.Xr troff 1 +to use +.Nm \-mdoc ; +however, there are a few +limitations which are unavoidable and best gotten out +of the way. And, too, be forewarned, this package is +.Em not +fast. +.Ss Macro Usage +As in +.Xr troff 1 , +a macro is called by placing a +.Ql \&\. +(dot character) +at the beginning of +a line followed by the two character name for the macro. +Arguments may follow the macro separated by spaces. +It is the dot character at the beginning of the line which causes +.Xr troff 1 +to interpret the next two characters as a macro name. +To place a +.Ql \&\. +(dot character) +at the beginning of a line in some context other than +a macro macro, precede the +.Ql \&\. +(dot) with a +.Ql \e& . +.Pp +In general, +.Xr troff 1 +macros accept up to nine arguments, any +extra arguments are ignored. +Most macros in +.Nm \-mdoc +accept nine arguments and, +in limited cases, arguments may be continued or extended +on the +next line (See +.Sx Extensions +\- +macro +.Ql \&.Xo +and +.Ql \&.Xc ) . +A few macros handle quoted aguments (see +.Sx Passing Space Characters in an Argument +below). +Many +.Nm \-mdoc +macros may be given the +name of another macro as an argument. In this case +the argument, although the name of a macro, +is not preceded by a +.Ql \&\. +(dot), +and is +.Em called +when the argument is processed. +It is in this manner that some macros are nested; for +example +the option macro, +.Ql \&.Op , +may +.Em call +the flag and argument macros, +.Ql \&.Fl +and +.Ql \&.Ar , +to specify an optional flag with an argument: +.nr D 1 +.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent +.It Op Fl s Ar bytes +is produced by +.Li \&.Op \&Fl s \&Ar bytes +.El +.Pp +To prevent a two character +string from being interpreted as a macro name, precede +the string with the +escape sequence +.Ql \e& : +.Bl -tag -width "[\&Fl s \&Ar bytes]" -offset indent +.It Op \&Fl s \&Ar bytes +is produced by +.Li \&.Op \e&Fl s \e&Ar bytes +.El +.Pp +.nr D 0 +Here the strings +.Ql \&Fl +and +.Ql \&Ar +were not interpreted as macros. +Details on callable macros are presented in the +sections +.Sx CONTENT MACROS +and +.Sx PAGE LAYOUT MACROS. +.Ss Passing Space Characters in an Argument +Sometimes it is desirable to give as one argument a string +containing one or more blank space characters. This may be necessary +to defeat the nine argument limit or to specify arguments to macros +which expect particular arrangement of items in the argument list. +For example, +the function macro +.Ql \&.Fn +expects the first argument to be the name of a function and any +remaining arguments to be function parameters. As +.Tn "ANSI C" +stipulates the declaration of function parameters in the +parenthesized parameter list, each parameter is guaranteed +to be at minimum a two word string. For example, +.Fa int foo . +There are two possible ways to pass an argument which contains +an imbedded space. Unfortunately, the most convient way +of passing such a space between quotes was too expensive to implement for +all the macros. It is however, implemented for the following macros which need +it the most: +.Pp +.Bl -tag -width 4n -offset indent -compact +.It Li \&Cd +Configuration declaration (section 4 SYNOPSIS) +.It Li \&Bl +Begin list (for the width specifier). +.It Li \&Em +Emphasized text. +.It Li \&Fn +Functions (sections two and four). +.It Li \&It +List items. +.It Li \&Li +Literal text. +.It Li \&Sy +Symbolic text. +.It Li \&%B +Book titles. +.It Li \&%J +Journal names. +.It Li \&%O +Optional notes for a reference. +.It Li \&%R +Report title (in a reference). +.It Li \&%T +Title of article in a book or journal. +.El +.Pp +One way of passing a string +containing blank spaces is to use the hard or unpaddable space character +.Ql \e\ , +that is, a blank space preceeded by the escape character +.Ql \e . +This method may be used with any macro but has the side effect +of interfering with the adjustment of text +over the length of a line. +.Xr Troff +sees the hard space as if it were any other printable character and +cannot split the string into blank or newline separated pieces as one +would expect. The method is useful for strings which are not expected +to overlap a line boundary. For example: +.Bl -tag -width "fetch(char *str)" -offset indent +.It Fn fetch char\ *str +is created by +.Ql \&.Fn fetch char\e *str +.It Fn fetch "char *str" +can also be created by +.Ql \&.Fn fetch "\\*q*char *str\\*q" +.El +.Pp +If the +.Ql \e +or quotes +were omitted, +.Ql \&.Fn +would see three arguments and +the result would be: +.Pp +.Dl Fn fetch char *str +.Pp +For an example of what happens when the parameter list overlaps +a newline boundary, see the +.Sx BUGS +section. +.\" Note what happens if the parameter list overlaps a newline +.\" boundary. For example, the next two examples are repeated several times +.\" to make sure a line boundary is crossed: +.\" .Bd -literal +.\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[] +.\" .Ed +.\" .Pp +.\" produces, nudge nudge, +.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] , +.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] , +.\" nudge +.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] . +.\" .Pp +.\" If double quotes are used, for example: +.\" .Bd -literal +.\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q +.\" .Ed +.\" .Pp +.\" produces, nudge nudge, +.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" , +.\" nudge +.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" , +.\" nudge +.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" . +.\" .Pp +.\" Not a pretty sight... +.\" In a paragraph, a long parameter containing unpaddable spaces as +.\" in the former example will cause +.\" .Xr troff +.\" to break the line and spread +.\" the remaining words out. The latter example will adjust nicely to +.\" justified margins, but may break in between an argument and its +.\" declaration. In +.\" .Xr nroff +.\" the right margin adjustment is normally ragged and the problem is +.\" not as severe. +.Ss Trailing Blank Space Characters +.Xr Troff +can be confused by blank space characters at the end of a line. It +is wise preventative measure to globally remove all blank spaces +from character sequences. Should the need +arise to force a blank character at the end of a line, +it may be forced with an unpaddable space and the +.Ql \e& +escape character. +For example, +.Ql string\e\ \e& . +.Ss Escaping Special Characters +Special characters +like the newline character +.Ql \en , +are handled by replacing the +.Ql \e +with +.Ql \ee +(e.g. +.Ql \een ) +to preserve +the backslash. +.Sh THE ANATOMY OF A MAN PAGE (Getting Started) +There are three basic groups of macros: specific header macros +called only once at the very beginning of +each manual page, page layout or structure macros +which may be called many times, and content macros which also +may be called many times. +The body of a man page is easily constructed from a basic +template found in the file: +.Bd -literal -offset indent +\&.\e" /usr/share/misc/man.tempate : +\&.\e" The following six lines are required. +\&.Dt DOCUMENT_TITLE [section number] [volume] +\&.Os OPERATING_SYSTEM [version/release] +\&.Dd Month day, year +\&.Sh NAME +\&.Sh SYNOPSIS +\&.Sh DESCRIPTION +\&.\e" The following requests should be uncommented and +\&.\e" used where appropriate. This next request is +\&.\e" for sections 2 and 3 function return values only. +\&.\e" .Sh RETURN VALUES +\&.\e" This next request is for sections 1, 6, 7 & 8 only +\&.\e" .Sh ENVIRONMENT +\&.\e" .Sh FILES +\&.\e" .Sh EXAMPLES +\&.\e" This next request is for sections 1, 6, 7 & 8 only +\&.\e" (command return values (to shell) and +\&.\e" fprintf/stderr type diagnostics) +\&.\e" .Sh DIAGNOSTICS +\&.\e" The next request is for sections 2 and 3 error +\&.\e" and signal handling only. +\&.\e" .Sh ERRORS +\&.\e" .Sh SEE ALSO +\&.\e" .Sh STANDARDS +\&.\e" .Sh HISTORY +\&.\e" .Sh AUTHORS +\&.\e" .Sh BUGS +.Ed +.Pp +The first items in the template are the macros +.Pq Li \&.Dt , \&.Dd , \&.Os ; +the document or man page title +.Pq Em in upper case , +the section of the manual the page +belongs to, the (document) date, +and the operating system the man page is derived +from. These macros identify the page, +and are discussed below in +.Sx TITLE MACROS . +.Pp +The remaining items in the template are section headers +.Pq Li \&.Sh ; +of which NAME, SYNOPSIS and DESCRIPTION +are mandatory. The +headers are +discussed in +.Sx PAGE LAYOUT MACROS, +after +presentation of +.Sx CONTENT MACROS . +Several content macros are used to demonstrate page layout macros; +reading about content macros before page layout macros is +recommended. +.Sh TITLE MACROS +Three header macros designate the document title or manual page title, +the operating system, +and the date of authorship. +These macros are one called once at the very beginning of the document +and are used to construct the headers and footers only. +.Bl -tag -width 6n +.It Li \&.Dt DOCUMENT_TITLE section# [volume] +The document title is the +subject of the man page and must be in CAPITALS due to troff +limitations. +The section number may be 1,\ ...,\ 8, +and if it is specified, +the volume title may be omitted. +A volume title may be arbitrary or one of the following: +.\" .Cl +.\" USD UNIX User's Supplementary Documents +.\" .Cl +.\" PS1 UNIX Programmers's Supplementary Documents +.Pp +.Bl -column SMM -offset indent -compact +.It AMD UNIX Ancestral Manual Documents +.It SMM UNIX System Manager's Manual +.It URM UNIX Reference Manual +.It PRM UNIX Programmers's Manual +.El +.Pp +.\" .Cl +.\" MMI UNIX Manual Master Index +.\" .Cl +.\" CON UNIX Contributed Software Manual +.\" .Cl +.\" LOC UNIX Local Manual +.It Li \&.Os operating_system release# +The name of the operating system +should be the common acronym, e.g. BSD +or ATT. The release should be the standard release +nomenclature for the system specified, e.g. 4.3, 4.3+Tahoe, V.3, +V.4. Unrecognized arguments are displayed as given in the page footer. +For instance, for the footer on this page, the 4.4 Berkeley Distribution +was produced by: +.Pp +.Dl \&.Os BSD 4.4 +.It Li \&.Dd month day, year +The date should be written formally: +.Pp +.Dl January 25, 1989 +.El +.Sh CONTENT MACROS +.Ss What's in a name... +Content macro names are derived from the day to day +informal language used to describe commands, subroutines and related +files. Slightly +different variations of this language are used to describe +the three different aspects of writing a man page. +First, there is the description of +.Nm \-mdoc +macro request usage. +Second is the description of a +.Ux +command +.Em with +.Nm \-mdoc +macros and third, +the +description a command to a user in the verbal sense; +that is, discussion of a command in the text of a man page. +.Pp +In the first case, +.Xr troff 1 +macros are themselves a type of command; +the general syntax for a troff command is: +.Bd -filled -offset indent +\&.Va argument1 argument2 ... argument9 +.Ed +.Pp +The +.Ql \&.Va +is a macro command or request, and anything following it is an argument to +be processed. +In the second case, +the description of a +.Ux +command using the content macros is a +bit more involved; +a typical SYNOPSIS command line might be displayed as: +.Pp +.Bd -filled -offset indent +.Nm filter +.Op Fl flag +.Ar infile outfile +.Ed +.Pp +Here, +.Nm filter +is the command name and the +bracketed string +.Fl flag +is a +.Em flag +argument designated as optional by the option brackets. +In +.Nm \-mdoc +terms, +.Ar infile +and +.Ar outfile +are +called +.Em arguments . +The macros which formatted the above example: +.Pp +.Bd -literal -offset indent +\&.Nm filter +\&.Op \&Fl flag +\&.Ar infile outfile +.Ed +.Pp +In the third case, discussion of commands and command syntax +includes both examples above, but may add more detail. The +arguments +.Ar infile +and +.Ar outfile +from the example above might be refered to as +.Em operands +or +.Em file arguments . +Some command line argument lists are quite long: +.\" .Bl -tag -width make -offset indent +.Bl -tag -width make -offset indent +.It Nm make +.Op Fl eiknqrstv +.Op Fl D Ar variable +.Op Fl d Ar flags +.Op Fl f Ar makefile +.Op Fl I Ar directory +.Op Fl j Ar max_jobs +.Op Ar variable=value +.br +.Op Ar "target\ ..." +.El +.Pp +Here one might talk about the command +.Nm make +and qualify the argument +.Ar makefile , +as an argument to the flag, +.Fl f , +or discuss the optional +file +operand +.Ar target . +In the verbal context, such detail can prevent confusion, +however the +.Nm \-mdoc +package +does not have a macro for an argument +.Em to +a flag. +Instead the +.Ql \&Ar +argument macro is used for an operand or file argument like +.Ar target +as well as an argument to a flag like +.Ar variable : +.Bd -literal -offset indent +\&.Nm make +\&.Op Fl eiknqrstv +\&.Op Fl D Ar variable +\&.Op Fl d Ar flags +\&.Op Fl f Ar makefile +\&.Op Fl I Ar directory +\&.Op Fl j Ar max_jobs +\&.Op Ar variable=value +\&.Op Ar target ... +.Ed +.Ss General Syntax +All content macros share a similar +syntax with a few minor deviations: +.Ql \&.Ar , +.Ql \&.Fl , +.Ql \&.Nm , +and +.Ql \&.Pa +differ only when called without arguments; +.Ql \&.Fn +and +.Ql \&.Xr +impose an order on their argument lists +and the +.Em enclosure +and +.Em quoting +macros +have nesting limitations. All content macros +are capable of handling punctuation. +Any argument which may be tested for punctuation +and contains a member of the mathematical, logical or +quotation set: +.Bd -literal -offset indent -compact +{+,\-,/,*,%,<,>,<=,>=,=,==,&,`,',"} +.Ed +should have +the character escaped with +.Ql \e& . +Typical syntax is shown in the first content macro displayed +below, +.Ql \&.Ad , +and the syntax for enclosure/quoting macros is shown in +.Sx Enclosure and Quoting Macros . +.Ss Address Macro +The address macro constructs an address +of the form addr1[,addr2[,addr3]]. +.Pp +.Dl Usage: .Ad address ... \*(Pu +.Bl -tag -width ".Ad f1 , f2 , f3 :" -compact -offset 14n +.It Li \&.Ad addr1 +.Ad addr1 +.It Li \&.Ad addr1\ . +.Ad addr1 . +.It Li \&.Ad addr1\ , file2 +.Ad addr1 , file2 +.It Li \&.Ad f1\ , f2\ , f3\ : +.Ad f1 , f2 , f3 : +.It Li \&.Ad addr\ )\ )\ , +.Ad addr ) ) , +.El +.Pp +It is an error to call +.Li \&.Ad +without arguments. +.Li \&.Ad +is callable by other macros and may call other macros. +.Ss Argument Macro +The +.Li \&.Ar +argument macro may be used whenever +a command line argument is referenced. +.Pp +.Dl Usage: .Ar argument ... \*(Pu +.Bl -tag -width ".Ar file1 file2" -compact -offset 15n +.It Li \&.Ar +.Ar +.It Li \&.Ar file1 +.Ar file1 +.It Li \&.Ar file1\ . +.Ar file1 . +.It Li \&.Ar file1 file2 +.Ar file1 file2 +.It Li \&.Ar f1 f2 f3\ : +.Ar f1 f2 f3 : +.It Li \&.Ar file\ )\ )\ , +.Ar file ) ) , +.El +.Pp +If +.Li \&.Ar +is called without arguments +.Ql Ar +is assumed. The +.Li \&.Ar +macro may call other macros, and may be +called by other macros. +.Ss Angle Bracket Quote/Enclosure +Encloses a string or strings in between angle brackets. The macro +.Ql \&.Aq +encloses the remaining arguments on the macro command line, and the +.Ql \&.Ao +(angle open) and +.Ql \&.Ac +(angle close) macros may be used across one or more lines. +.Pp +.Dl Usage: .Aq string ... \*(Pu +.Bl -tag -width ".Aq Pa ctype.h ) ," -compact -offset 14n +.It Li \&.Aq +.Aq +.It Li \&.Aq string. +.Aq string. +.It Li \&.Aq string\ . +.Aq string . +.It Li \&.Aq stdio.h +.Aq stdio.h +.It Li \&.Aq \&Ar ctype.h\ )\ , +.Aq Ar ctype.h ) , +.El +.Pp +See +.Sx Enclosure Macros +for discussion and +.Sx Options +for examples of the open and close +macros +.Ql \&.Ac +and +.Ql \&.Ao . +.Ql \&.Aq +is callable by other macros and may call other macros. +.Ss Bracket Quotes/Enclosure +Bracket quotes should be used when the string being bracketed is +.Em not +an option string. The brackets for an option may be different +than the default brackets. The macro +.Ql \&.Bq +encloses the remaining arguments on a macro command line and the +macros +.Ql \&.Bo +and +.Ql \&.Bc +may be used across one or more lines. +.Pp +.Dl Usage: .Bq string ... \*(Pu +.Pp +The +.Li \&.Bq +macro exists for statements which use other macros: +.Bq Em Greek , French . +This was done with: +.Pp +.Dl Li \&.Bq \&Em Greek \&, French \&. +.Pp +It also could have been done using the prefix macro: +.Pp +.Dl Li ".Pf [ Em Greek , French ] ." +.Pp +See +.Sx Enclosure Macros +for discussion and +.Sx Options +for examples of the open and close +macros +.Ql \&.Bc +and +.Ql \&.Bo . +The +.Ql \&.Bq +macro +is callable and may call other macros. +.Ss Configuration Declaration (section four only) +The +.Ql \&.Cd +macro is used to demonstrate a +.Xr config 8 +declaration for a device interface in a section four manual. +This macro accepts quoted arguments (double quotes only). +.Pp +.Bl -tag -width "device le0 at scode?" -offset indent +.It Cd "device le0 at scode?" +produced by: +.Ql ".Cd device le0 at scode?" . +.El +.Ss Command Modifier +The command modifier is identical to the +.Ql \&.Fl +(flag) command with the exception +the +.Ql \&.Cm +macro does not assert a dash +in front of every argument. Traditionally flags are marked by the +preceding dash, some commands or subsets of commands do not use them. +Command modifiers may also be specified in conjunction with interactive +commands such as editor commands. +See +.Sx Flags . +.Ss Double Quote macro/Enclosure +The +.Ql \&.Dq +double quote encloses +any remaining strings on the command line with double quotes. +Punctuation is +placed after the end quote. +The macros +.Ql \&.Do +and +.Ql \&.Dc +may be used across one or more lines. +.Pp +.Dl Usage: .Dq string ... \*(Pu +.Bl -tag -width ".Dq Ar patternx ) ) ," -compact -offset 14n +.It Li \&.Dq +.Dq +.It Li ".Dq string." +.Dq string. +.It Li ".Dq string abc ." +.Dq string abc . +.It Li ".Dq \'^[A-Z]\'" +.Dq \'^[A-Z]\' +.It Li \&.Dq \&Ar pattern\ )\ )\ , +.Dq Ar pattern ) ) , +.El +.Pp +If +.Ql \&.Dq +is called with no arguments +.Dq +is assumed. The +.Ql \&.Dq +macro may call or be called by +other macros. +See +.Sx Enclosure Macros +for discussion of +.Ql \&.Dc +and +.Ql \&.Do +macro types. +.Ss Defined Variables +A variable which is defined in an include file is specified +by the macro +.Ql \&.Dv . +.Pp +.Dl Usage: .Dv defined_variable ... \*(Pu +.Bl -tag -width ".Dv MAXHOSTNAMELEN" -compact -offset 14n +.It Li ".Dv MAXHOSTNAMELEN" +.Dv MAXHOSTNAMELEN +.It Li ".Dv TIOCGPGRP )" +.Dv TIOCGPGRP ) +.El +.Pp +It is an error to call +.Ql \&.Dv +without arguments. +.Ql \&.Dv +may call other macros and +may be called by other macros. +.Ss Emphasis Macro +Text may be stressed or emphasized with the +.Ql \&.Em +macro. The usual font for emphasis is italic. +.Pp +.Dl Usage: .Em argument ... \*(Pu +.Bl -tag -width ".Em vide infra ) ) ," -compact -offset 14n +.It Li ".Em does not" +.Em does not +.It Li ".Em exceed 1024 ." +.Em exceed 1024 . +.It Li ".Em vide infra ) ) ," +.Em vide infra ) ) , +.El +.Pp +The emphasis can be forced across several lines of text by using +the +.Ql \&.Bf +macro discussed in +.Sx Modes +under +.Sx PAGE LAYOUT . +.\" .Pp +.\" .Em +.\" I'm certain the reason so many people desire an MBA from Harvard +.\" is because they want to be successful philanthropists. +.\" .Em +.Pp +The +.Ql \&.Em +macro +is callable and may call other macros. +It is an error to call +.Ql \&.Em +without arguments. +.Ss Enclosure and Quoting Macros +The concept of enclosure is similar to quoting. +The object is to enclose a string or more between +a pair of characters like quotes or parentheses. +The terms quoting and enclosure are used +interchangeably throughout this document. Many of the +one line enclosure macros end +end in small letter +.Ql q +to give a hint of quoting, but there are a few exceptions +(the macros +.Ql \&.En , +.Ql \&.Fn +and +.Ql \&.Op +are also enclosure macros). +For each enclosure macro +there is also a pair of open and close macros which end +in small letters +.Ql o +and +.Ql c +respectively. These can be used across one or more lines of text +and while they cannot be nested, the one line quote macros +can be used inside +of them. +For a good example of one these macros, see +.Sx Options . +.Pp +.Bd -filled -offset indent +.Bl -column "quote" "close" "open" "Enclose Stringx(in XX)" XXstringXX +.Em " quote close open function result" +\&.Aq, .Ac, .Ao Angle Bracket Enclosure +\&.Bq, .Bc, .Bo Bracket Enclosure [string] +\&.Dq, .Dc, .Do Double Quote ``string'' + .Ec, .Eo Enclose String (in XX) XXstringXX +\&.Fn, .Fc, .Fo Function Enclosure function(string) +\&.Op, .Oc, .Oo Option Enclosure [string] +\&.Pq, .Pc, .Po Parenthesis Enclosure (string) +\&.Qq, .Qc, .Qo Straight Double Quote "string" +\&.Sq, .Sc, .So Single Quote `string' +\& .Xc, .Xo Extend Argument \ \-\- +.El +.Ed +.Pp +The macros +.Ql \&.Eo +and +.Ql \&.Ec +allow a user to specify an open and close with the first argument as the +opening or closing string respectively. +.Ss Errno's (Section two only) +The +.Ql \&.Er +errno macro specifies the error return value +for section two library routines. The second example +below shows +.Ql \&.Er +used with the +.Ql \&.Bq +macro, as it would be used in +a section two manual page. +.Pp +.Dl Usage: .Er ERRNOTYPE ... \*(Pu +.Bl -tag -width ".Bq Er ENOTDIR" -compact -offset 14n +.It Li \&.Er ENOENT +.Er ENOENT +.It Li \&.Er ENOENT\ )\ ; +.Er ENOENT ) ; +.It Li \&.Bq \&Er ENOTDIR +.Bq Er ENOTDIR +.El +.Pp +It is an error to call +.Ql \&.Er +without arguments. +The +.Ql \&.Er +macro +is callable and may call other macros. +.Ss Environment Variables +The +.Ql \&.Ev +macro specifies a environment variable. +.Pp +.Dl Usage: .Ev argument ... \*(Pu +.Bl -tag -width ".Ev PRINTER ) ) ," -compact -offset 14n +.It Li \&.Ev DISPLAY +.Ev DISPLAY +.It Li \&.Ev PATH\ . +.Ev PATH . +.It Li \&.Ev PRINTER\ )\ )\ , +.Ev PRINTER ) ) , +.El +.Pp +It is an error to call +.Ql \&.Ev +without arguments. +The +.Ql \&.Ev +macro +is callable by other macros and may call other macros. +.Ss Function Argument +The +.Ql \&.Fa +macro is used to refer to function arguments (parameters) +outside of the SYNOPSIS section of the manual or inside +the SYNOPSIS section should a parameter list be too +long for the +.Ql \&.Fn +macro and the enclosure macros +.Ql \&.Fo +and +.Ql \&.Fc +must be used. +.Ql \&.Fa +may also be used to refer to structure members. +.Pp +.Dl Usage: .Fa function_argument ... \*(Pu +.Bl -tag -width ".Fa d_namlen\ )\ )\ ," -compact -offset 14n +.It Li \&.Fa d_namlen\ )\ )\ , +.Fa d_namlen ) ) , +.It Li \&.Fa iov_len +.Fa iov_len +.El +.Pp +It is an error to call +.Ql \&.Fa +without arguments. +.Ql \&.Fa +is callable by other macros and may call other macros. +.Ss Function Declaration +The +.Ql \&.Fd +macro is used in the SYNOPSIS section with section two or three +functions. The +.Ql \&.Fd +macro does not call other macros and is not callable by other +macros. +.Pp +.Dl Usage: .Fd include_file (or defined variable) +.Pp +In the SYNOPSIS section a +.Ql \&.Fd +request causes a line break if a function has already been presented +and a break has not occurred. This leaves a nice vertical space +in between the previous function call and the declaration for the +next function. +.Ss Flags +The +.Ql \&.Fl +macro handles command line flags. It prepends +a dash, +.Ql \- , +to the flag. For interactive command flags, which +are not prepended with a dash, the +.Ql \&.Cm +(command modifier) +macro is identical, but with out the dash. +.Pp +.Dl Usage: .Fl argument ... \*(Pu +.Bl -tag -width ".Fl \-s \-t \-v" -compact -offset 14n +.It Li \&.Fl +.Fl +.It Li \&.Fl cfv +.Fl cfv +.It Li \&.Fl cfv\ . +.Fl cfv . +.It Li \&.Fl s v t +.Fl s v t +.It Li \&.Fl -\ , +.Fl - , +.It Li \&.Fl xyz\ )\ , +.Fl xyz ) , +.El +.Pp +The +.Ql \&.Fl +macro without any arguments results +in a dash representing stdin/stdout. +Note that giving +.Ql \&.Fl +a single dash, will result in two dashes. +The +.Ql \&.Fl +macro +is callable and may call other macros. +.Ss Functions (library routines) +The .Fn macro is modeled on ANSI C conventions. +.Bd -literal +Usage: .Fn [type] function [[type] params ... \*(Pu] +.Ed +.Bl -tag -width ".Fn .int align. .const * char *sptrsxx" -compact +.It Li "\&.Fn getchar" +.Fn getchar +.It Li "\&.Fn strlen ) ," +.Fn strlen ) , +.It Li \&.Fn "\\*qint align\\*q" "\\*qconst * char *sptrs\\*q" , +.Fn "int align" "const * char *sptrs" , +.El +.Pp +It is an error to call +.Ql \&.Fn +without any arguments. +The +.Ql \&.Fn +macro +is callable by other macros and may call other macros, but +note that any call to another macro signals the end of +the +.Ql \&.Fn +call (it will close-paren at that point). +.Pp +In the SYNOPSIS section, the function will always begin at +the beginning of line. If there is more than one function +presented in the SYNOPSIS section and a function type has not been +given, a line break will occur, leaving a nice vertical space +between the current function name and the one prior. +At the moment, +.Ql \&.Fn +does not check its word boundaries +against troff line lengths and may split across a newline +ungracefully. This will be fixed in the near future. +.Ss Function Type +This macro is intended for the SYNOPSIS section. It may be used +anywhere else in the manpage without problems, but its main purpose +is to present the function type in kernel normal form for the SYNOPSIS +of sections two and three +(it causes a page break allowing the function name to appear +on the next line). +.Pp +.Dl Usage: .Ft type ... \*(Pu +.Pp +.Bl -tag -width "\&.Ft struct stat" -offset 14n -compact +.It Li \&.Ft struct stat +.Ft struct stat +.El +.Pp +The +.Ql \&.Ft +request is not callable by other macros. +.Ss Interactive Commands +The +.Ql \&.Ic +macro designates an interactive or internal command. +.Pp +.Dl Usage: .Li argument ... \*(Pu +.Bl -tag -width ".Ic setenv , unsetenv" -compact -offset 14n +.It Li \&.Ic :wq +.Ic :wq +.It Li \&.Ic do while {...} +.Ic do while {...} +.It Li \&.Ic setenv\ , unsetenv +.Ic setenv , unsetenv +.El +.Pp +It is an error to call +.Ql \&.Ic +without arguments. +The +.Ql \&.Ic +macro may call other macros and is callable. +.Ss Literals +The +.Ql \&.Li +literal macro may be used for special characters, +variable constants, anything which should be displayed as it +would be typed. +.Pp +.Dl Usage: .Li argument ... \*(Pu +.Bl -tag -width ".Li cntrl-D ) ," -compact -offset 14n +.It Li \&.Li \een +.Li \en +.It Li \&.Li M1 M2 M3\ ; +.Li M1 M2 M3 ; +.It Li \&.Li cntrl-D\ )\ , +.Li cntrl-D ) , +.It Li \&.Li 1024\ ... +.Li 1024 ... +.El +.Pp +The +.Ql \&.Li +macro +is callable by other macros and may call other macros. +.Ss Name Macro +The +.Ql \&.Nm +macro is used for the document title or subject name. +It has the peculiarity of remembering the first +argument it was called with, which should +always be the subject name of the page. When called without +arguments, +.Ql \&.Nm +regurgitates this initial name for the sole purpose +of making less work for the author. +Note: +a section two +or three document function name is addressed with the +.Ql \&.Nm +in the NAME section, and with +.Ql \&.Fn +in the SYNOPSIS +and remaining sections. +For interactive commands, such as the +.Ql while +command keyword in +.Xr csh 1 , +the +.Ql \&.Ic +macro should be used. +While the +.Ql \&.Ic +is nearly identical +to +.Ql \&.Nm , +it can not recall the first argument it was invoked with. +.Pp +.Dl Usage: .Nm argument ... \*(Pu +.Bl -tag -width ".Nm mdoc.sample" -compact -offset 14n +.It Li \&.Nm mdoc.sample +.Nm mdoc.sample +.It Li \&.Nm \-mdoc +.Nm \-mdoc . +.It Li \&.Nm foo\ )\ )\ , +.Nm foo ) ) , +.It Li \&.Nm +.Nm +.El +.Pp +The +.Ql \&.Nm +macro +is callable by other macros and may call other macros. +.Ss No\-Op or Normal Text Macro +The macro +.Li \&.No +is +a hack for words in a macro command line which should +.Em not +be formatted and follows the conventional syntax +for content macros. +.Ss No Space Macro +The +.Ql \&.Ns +macro eliminates unwanted spaces in between macro requests. +It is useful for old style argument lists where there is no space +between the flag and argument: +.Bl -tag -width ".Op Fl I Ns Ar directory" -offset indent +.It Li ".Op Fl I Ns Ar directory" +produces +.Op Fl I Ns Ar directory +.El +.Pp +Note: the +.Ql \&.Ns +macro always invokes the +.Ql \&.No +macro after eliminating the space unless another macro name +follows it. +The macro +.Ql \&.Ns +is callable and may call other macros. +.Ss Options +The +.Ql \&.Op +macro +places option brackets around the any remaining arguments on the command +line, and places any +trailing punctuation outside the brackets. The macros +.Ql \&.Oc +and +.Ql \&.Oo +may be used across one or more lines. +.Pp +.Dl Usage: .Op options ... \*(Pu +.Bl -tag -width ".Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent +.It Li \&.Op +.Op +.It Li ".Op Fl k" +.Op Fl k +.It Li ".Op Fl k ) ." +.Op Fl k ) . +.It Li ".Op Fl k Ar kookfile" +.Op Fl k Ar kookfile +.It Li ".Op Fl k Ar kookfile ," +.Op Fl k Ar kookfile , +.It Li ".Op Ar objfil Op Ar corfil" +.Op Ar objfil Op Ar corfil +.It Li ".Op Fl c Ar objfil Op Ar corfil ," +.Op Fl c Ar objfil Op Ar corfil , +.It Li \&.Op word1 word2 +.Op word1 word2 +.El +.Pp +The +.Ql \&.Oc +and +.Ql \&.Oo +macros: +.Bd -literal -offset indent +\&.Oo +\&.Op \&Fl k \&Ar kilobytes +\&.Op \&Fl i \&Ar interval +\&.Op \&Fl c \&Ar count +\&.Oc +.Ed +.Pp +Produce: +.Oo +.Op Fl k Ar kilobytes +.Op Fl i Ar interval +.Op Fl c Ar count +.Oc +.Pp +The macros +.Ql \&.Op , +.Ql \&.Oc +and +.Ql \&.Oo +are callable and may call other macros. +.Ss Parenthesis Quote/Enclosure +Macros +.Li \&.Pq , \&.Pc +and +.Li \&.Po +follow the conventions for a typical quoting macros, +see +.Sx Enclosure Macros +and +.Sx Options +above. +.Ss Pathnames +The +.Ql \&.Pa +macro formats path or file names. +.Pp +.Dl Usage: .Pa pathname \*(Pu +.Bl -tag -width ".Pa /tmp/fooXXXXX ) ." -compact -offset 14n +.It Li \&.Pa /usr/share +.Pa /usr/share +.It Li \&.Pa /tmp/fooXXXXX\ )\ . +.Pa /tmp/fooXXXXX ) . +.El +.Pp +The +.Ql \&.Pa +macro +is callable by other macros and may call other macros. +.Ss Single Quotes/Enclosure +See +.Sx Enclosure Macros . +See +.Sx Double Quote/Enclosure +above. +The single quoting macro +.Ql \&.Sq +works in the identical manner as +.Ql \&.Dq. +.Ss Prefix Macro +The +.Ql \&.Pf +macro +is a short cut for combining +two strings together, the first of which is +in the default font, and the second a content +specified string. +.Pp +.Bl -tag -width ".Pf ( Fa name2 " -offset 14n -compact +.It Li ".Pf ( Fa name2" +becomes +.Pf ( Fa name2 +.El +.Pp +The +.Ql \&.Pf +macro is not callable, but may call other macros. The +.Ql \&.Ns +macro performs the analogus suffix function. +.Ss Section Cross References +The +.Ql \&.Sx +macro designates a reference to a section header +within the same document. It is callable by other macros and may +call other macros. +.Pp +.Bl -tag -width "Li \&.Sx FILES" -offset 14n +.It Li \&.Sx FILES +.Sx FILES +.El +.Ss References and Citations +The following macros make a modest attempt to handle references. +At best, the macros make it convientent to manually drop in a subset of +refer style references. +.Pp +.Bl -tag -width 6n -offset indent -compact +.It Li ".Rs" +Reference Start. Causes a line break and begins collection +of reference information until the +reference end macro is read. +.It Li ".Re" +Reference End. The reference is printed. +.It Li ".%A" +Reference author name, one name per invocation. +.It Li ".%B" +Book title. +.It Li ".%J" +Journal title. +.It Li ".%N" +Issue number. +.It Li ".%O" +Optional information. +.It Li ".%R" +Report name. +.It Li ".%T" +Title of article. +.It Li ".%V" +Volume(s). +.El +.Pp +The macros begining with +.Ql % +are not callable, but may call only the trade name macro which +returns to its caller. The purpose is to allow trade names +to be pretty printed in troff/ditroff output. WARNING: this +has very few trade names defined at the moment and will print unknown +trade names in the default font. +.Ss Symbolic +The symbolic emphasis macro is generally a boldface macro in +either the symbolic sense or the traditional English usage. +.Pp +.Dl Usage: .Sy symbol ... \*(Pu +.Bl -tag -width ".Sy Important Notice" -compact -offset 14n +.It Li \&.Sy Important Notice +.Sy Important Notice +.El +.Pp +The +.Ql \&.Sy +macro +is callable by other macros and may call other macros, except +in the second form. Arguments to +.Ql \&.Sy +may be quoted. +.Ss Variables +Generic variable reference: +.Pp +.Dl Usage: .Va variable ... \*(Pu +.Bl -tag -width ".Va char s ] ) ) ," -compact -offset 14n +.It Li \&.Va count +.Va count +.It Li \&.Va settimer , +.Va settimer , +.It Li \&.Va int\ *prt\ )\ : +.Va int\ *prt ) : +.It Li \&.Va char\ s\ ]\ )\ )\ , +.Va char\ s ] ) ) , +.El +.Pp +It is an error to call +.Ql \&.Va +without any arguments. +The +.Ql \&.Va +macro +is callable by other macros and may call other macros. +.Ss Cross References +The +.Ql \&.Xr +macro expects the first argument to be +a manual page name, and the second argument, if it exists, +to be either a section page number or punctuation. Any +remaining arguments are assumed to be punctuation. +.Pp +.Dl Usage: .Xr manpage [1,...,8] \*(Pu +.Bl -tag -width ".Xr mdoc 7 ) ) ," -compact -offset 14n +.It Li \&.Xr mdoc +.Xr mdoc +.It Li \&.Xr mdoc\ , +.Xr mdoc , +.It Li \&.Xr mdoc 7 +.Xr mdoc 7 +.It Li \&.Xr mdoc 7\ )\ )\ , +.Xr mdoc 7 ) ) , +.El +.Pp +The +.Ql \&.Xr +macro +is callable by other macros and may call other macros. +It is an error to call +.Ql \&.Xr +without +any arguments. +.Ss Extended Arguments +The +.Li \&.Xo +and +.Li \&.Xc +maxros allow one to extend an argument list +on a macro boundary. Argument lists cannot +be extended within a macro +which expects all of its arguments on one line such +as +.Ql \&.Op . +.\" --- +.Sh PAGE LAYOUT MACROS +.Ss Section Headers +The first three +.Ql \&.Sh +section header macros +list below are required in every +man page. The remaining section headers +are recommended at the disgression of the author +writing the manual page. The +.Ql \&.Sh +macro can take up to nine arguments. It may call +other macros, but it may not be called by other macros. +.Bl -tag -width ".Sh SYNOPSIS" +.It \&.Sh NAME +The +.Ql \&.Sh NAME +macro is mandatory. If not specified, +the headers, footers and page layout defaults +will not be set and things will be rather unpleasant. +The NAME section consists of at least three items. +The first is the +.Ql \&.Nm +name macro naming the subject of the man page. +The second is the Name Description macro, +.Ql \&.Nd , +which separates the subject +name from the third item, which is the description. The +description should be the most terse and lucid possible, +as the space available is small. +.It \&.Sh SYNOPSIS +The SYNOPSIS section describes the typical usage of the +subject of a man page. The macros required +are either +.Ql ".Nm" , +.Ql ".Cd" , +or +.Ql ".Fn" +(and possibly +.Ql ".Fd" , +.Ql ".Ft" +macros). +The function name +macro +.Ql ".Fn" +is required +for manual page sections 2 and 3, the command and general +name macro +.Ql \&.Nm +is required for sections 1, 5, 6, 7, 8. +Section 4 manuals require a +.Ql ".Nm" , ".Fd" +or a +.Ql ".Cd" +configuration device usage macro. +Several other macros may be necessary to produce +the synopsis line as shown below: +.Pp +.Bd -filled -offset indent +.Nm cat +.Op Fl benstuv +.Op Fl +.Ar +.Ed +.Pp +The following macros were used: +.Pp +.Dl \&.Nm cat +.Dl \&.Op \&Fl benstuv +.Dl \&.Op \&Fl +.Dl \&.Ar +.It \&.Sh DESCRIPTION +In most cases the first text in the DESCRIPTION section +is a brief paragraph on the command, function or file, +followed by a lexical list of options and respective +explanations. To create such a list, the +.Ql \&.Bl +begin-list, +.Ql \&.It +list-item and +.Ql \&.El +end-list +macros are used (see +.Sx Lists and Columns +below). +.El +.Pp +The following +.Ql \&.Sh +section headers are part of the +preferred manual page layout and must be used appropriately +to maintain consistency. They are listed in the order +in which they would be used. +.Bl -tag -width SYNOPSIS +.It \&.Sh ENVIRONMENT +The ENVIRONMENT section should reveal any related +environment +variables and clues to their behaviour and/or usage. +.It \&.Sh EXAMPLES +There are several ways to create examples. See +the EXAMPLES section below +for details. +.It \&.Sh FILES +Files which are used or created by the man page subject +should be listed via the +.Ql \&.Pa +macro in the FILES section. +.It \&.Sh SEE ALSO +References to other material on the man page topic and +cross references to other relevant man pages should +be placed in the SEE ALSO section. Cross references +are specified using the +.Ql \&.Xr +macro. At this time +.Xr refer 1 +style references are not accommodated. +.It \&.Sh STANDARDS +If the command, library function or file adheres to a +specific implementation such as POSIX 1003.1 or +ANSI C X3.159-1989 this should be noted here. If the +command does not adhere to any standard, its history +should be noted in the HISTORY section. +.It \&.Sh HISTORY +Any command which does not adhere to any specific standards +should be outlined historically in this section. +.It \&.Sh AUTHORS +Credits, if need be, should be placed here. +.It \&.Sh DIAGNOSTICS +Diagnostics from a command should be placed in this section. +.It \&.Sh ERRORS +Specific error handling, especially from library functions +(man page sections 2 and 3) should go here. The +.Ql \&.Er +macro is used to specify an errno. +.It \&.Sh BUGS +Blatant problems with the topic go here... +.El +.Pp +User specified +.Ql \&.Sh +sections may be added, +for example, this section was set with: +.Bd -literal -offset 14n +\&.Sh PAGE LAYOUT MACROS +.Ed +.Ss Paragraphs and Line Spacing. +.Bl -tag -width 6n +.It \&.Pp +The \&.Pp paragraph command may +be used to specify a line space where necessary. +The macro is not necessary after a +.Ql \&.Sh +or +.Ql \&.Ss +macro or before +a +.Ql \&.Bl +macro. +(The +.Ql \&.Bl +macro asserts a vertical distance unless the -compact flag is given). +.El +.\" .Pp +.\" .Ds I +.\" .Cw (ax+bx+c) \ is\ produced\ by\ \& +.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\& +.\" .Cl Cx \t\t +.\" .Li \&.Cx\ ( +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Va ax +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Sy \+ +.\" .Cx +.\" .Cl Cx \&(\& +.\" .Va ax +.\" .Cx + +.\" .Va by +.\" .Cx + +.\" .Va c ) +.\" .Cx \t +.\" .Em is produced by +.\" .Cx \t +.\" .Li \&.Va by +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Sy \+ +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Va c ) +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Cx +.\" .Cx +.\" .Cw +.\" .De +.\" .Pp +.\" This example shows the same equation in a different format. The spaces +.\" around the +.\" .Li \&+ +.\" signs were forced with +.\" .Li \e : +.\" .Pp +.\" .Ds I +.\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \& +.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\& +.\" .Cl Cx \t\t +.\" .Li \&.Cx\ ( +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Va a +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Sy x +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Cx \e\ +\e\ \e& +.\" .Cx +.\" .Cl Cx \&(\& +.\" .Va a +.\" .Sy x +.\" .Cx \ +\ \& +.\" .Va b +.\" .Sy y +.\" .Cx \ +\ \& +.\" .Va c ) +.\" .Cx \t +.\" .Em is produced by +.\" .Cl Cx \t\t +.\" .Li \&.Va b +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Sy y +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Cx \e\ +\e\ \e& +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Va c ) +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Cx +.\" .Cx +.\" .Cw +.\" .De +.\" .Pp +.\" The incantation below was +.\" lifted from the +.\" .Xr adb 1 +.\" manual page: +.\" .Pp +.\" .Ds I +.\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by +.\" .Cl Cx \t\t +.\" .Li \&.Cx Op Sy ?/ +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Nm m +.\" .Cx +.\" .Cl Cx Op Sy ?/ +.\" .Nm m +.\" .Ad \ b1 e1 f1 +.\" .Op Sy ?/ +.\" .Cx \t +.\" .Em is produced by +.\" .Cx \t +.\" .Li \&.Ar \e\ b1 e1 f1 +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Op Sy ?/ +.\" .Cx +.\" .Cl Cx \t\t +.\" .Li \&.Cx +.\" .Cx +.\" .Cw +.\" .De +.\" .Pp +.Ss Examples and Displays +There are five types of displays, a quickie one line indented display +.Ql \&.D1 , +a quickie one line literal display +.Ql \&.Dl , +a block literal, block filled and block ragged which use +the +.Ql \&.Bd +begin-display +and +.Ql \&.Ed +end-display macros. +.Pp +.Bl -tag -width \&.D1 +.It Li \&.D1 +(D-one) Display one line of indented text. +Arguments are checked to see if they are callable. +.Bd -ragged -offset indent +.Li \&.D1 \&Fl ldghfstru +.Ed +.Pp +produces: +.Pp +.Dl Fl ldghfstru +.It Li \&.Dl +(D-ell) +Display one line of indented +.Em literal +text. The +.Ql \&.Dl +example macro has been used throughout this +file. It allows +the indent (display) of one line of text. +Its default font is set to +constant width (literal) however +.Ql \&.Dl +does check arguments to see it they are callable. +Macros called from +.Li \&.Dl +should be content macros; calling macros from +the page layout section +is redundant and may cause unpredictable errors. +.Bd -ragged -offset indent +.Li \&.Dl % ls -ldg /usr/local/bin +.Ed +.Pp +produces: +.Pp +.Dl % ls -ldg /usr/local/bin +.It Li \&.Bd +Begin-display. The +.Ql \&.Bd +display must be ended with the +.Ql \&.Ed +macro. Displays may be nested within displays and +lists. +.Ql \&.Bd +has the following syntax: +.Pp +.Dl ".Bd display-type [offset offset_value]" +.Pp +The display-type must be one of the following four types and +may have an offset specifier for indentation: +.Ql \&.Bd . +.Pp +.Bl -tag -width "literalxx" -compact +.It Fl ragged +Display a block of text as typed, +right (and left) margin edges are left ragged. +.It Fl filled +Display a filled (formatted) block. +The block of text is formatted (the edges are filled \- +not left ragged). +.It Fl literal +Display a literal block, useful for source code or +simple tabbed or spaced text. +.It Fl file Ar file_name +The file name following the +.Fl file +flag is read and displayed. Literal mode is +asserted and tabs are set at 8 constant width character +intervals, however any +.Xr troff/ Ns Nm \-mdoc +commands in file will be processed. +.It Fl offset Ar string +If +.Fl offset +is specified with one of the following strings, the string +is interpreted to indicate the level of indentation for the +forthcoming block of text: +.Pp +.Bl -tag -width "indent" -compact +.It Ar left +Align block on the current left margin, +this is the default mode of +.Ql \&.Bd . +.It Ar center +Supposedly center the block. At this time +unfortunately, the block merely gets +left aligned about an imaginary center margin. +.It Ar indent +Indents by one default indent value or tab. The default +indent value is also used for the +.Ql \&.D1 +display so one can be garanteed of the two types of displays +lining up. This indent is nornally set to 6n or about two +thirds of an inch (six constant width characters). +.It Ar indent-two +Indents two times the default indent value. +.It Ar right +This +.Em left +aligns the block about two inches from +the right side of the page. This macro also needs +work and perhaps may never be right in +.Xr troff . +.El +.El +.It ".Ed" +End-display. +.El +.Ss Tagged Lists and Columns +There are several types of lists which may be initiated with the +.Ql ".Bl" +begin-list macro. Items within the list +are specified with the +.Ql ".It" +item macro and +each list must end with the +.Ql ".El" +macro. Lists may be nested within themselves and within displays. +Columns may be used inside of lists, but lists are unproven +inside of columns. +.Pp +In addition, several list attributes may be specified such as +the width of a tag, the list offset, and compactness specified +(blank lines between items allowed or disallowed). +The following list types are accepted by +.Ql ".Bl": +.Pp +.Bl -ohang -compact +.It Fl bullet +.It Fl item +.It Fl enum +These three are the simplest types of lists. Once the +.Ql ".Bl" +macro has been given, items in the list are merely +indicated by a line consisting solely of the +.Ql ".It" +macro. For example, the source text for a simple enumerated list +would look like: +.Bd -literal -offset indent-two +\&.Bl -enum -compact +\&.It +\&Item one goes here. +\&.It +\&And item two here. +\&.It +\&Lastly item three goes here. +\&.El +.Ed +.Pp +The results: +.Pp +.Bl -enum -offset indent-two -compact +.It +Item one goes here. +.It +And item two here. +.It +Lastly item three goes here. +.El +.Pp +A simple bullet list construction: +.Bd -literal -offset indent-two +\&.Bl -bullet -compact +\&.It +\&Bullet one goes here. +\&.It +\&Bullet two here. +\&.El +.Ed +.Pp +Produces: +.Bl -bullet -offset indent-two -compact +.It +Bullet one goes here. +.It +Bullet two here. +.El +.Pp +.It Fl tag +.It Fl diag +.It Fl hang +.It Fl ohang +.It Fl inset +These list-types collect arguments specified with the +.Ql \&.It +macro and create a label which may be +.Em inset +into the forth coming text, +.Em hanged +(exdented) from the forth coming text, +.Em overhanged +set above the forth coming paragraph or +.Em tagged +(exdented and offset). This +list was constructed with the +.Ql Fl ohang +list-type. The +.Ql \&.It +macro may call any callable macros for the inset, hang +and tag list-types, but will not call macros for the +diag type. +Here is an example of inset labels: +.Bl -inset -offset indent +.It Em Tag +The tagged list (also called a tagged paragraph) is the +most common type of list used in the Berkeley manuals. +.It Em Diag +Diag lists create section four diagnostic lists +and are similar to inset lists except callable +macros are ignored. +.It Em Hang +Hanged labels are a matter of taste. +.It Em Ohang +Over hanging labels are nice when space is constrained. +.It Em Inset +Inset labels are useful for controlling blocks of +paragraphs and are valuable for converting +.Nm \-mdoc +manuals to other formats. +.El +.Pp +Here is the source text which produced the above example: +.Bd -literal -offset indent +\&.Bl -inset -offset indent +\&.It Em Tag +\&The tagged list (also called a tagged paragraph) is the +\&most common type of list used in the Berkeley manuals. +\&.It Em Diag +\&Diag lists create section four diagnostic lists +\&and are similar to inset lists except callable +\¯os are ignored. +\&.It Em Hang +\&Hanged labels are a matter of taste. +\&.It Em Ohang +\&Over hanging labels are nice when space is constrained. +\&.It Em Inset +\&Inset labels are useful for controlling blocks of +\¶graphs and are valuable for converting +\&.Nm \-mdoc +\&manuals to other formats. +\&.El +.Ed +.Pp +Here is a hanged list with just one item: +.Bl -hang -offset indent +.It Em Hanged +labels appear similar to tagged lists when the +label is smaller than the label width. +.It Em Longer hanged list labels +blend in to the paragraph unlike +tagged paragraph labels. +.El +.Pp +And the unfomatted text which created it: +.Bd -literal -offset indent +\&.Bl -hang -offset indent +\&.It Em Hanged +\&labels appear similar to tagged lists when the +\&label is smaller than the label width. +\&.It Em Longer hanged list labels +\&blend in to the paragraph unlike +\&tagged paragraph labels. +\&.El +.Ed +.Pp +The tagged list which follows uses an optional width specifier to controll +the width of the tag. +.Pp +.Bl -tag -width "PAGEIN 10" -compact -offset indent +.It SL 10 +sleep time of the process (seconds blocked) +.It PAGEIN 10 +number of disk i/o's resulting from references +by the process to pages not loaded in core. +.It UID 10 +numerical user-id of process owner +.It PPID 10 +numerical id of parent of process process priority +(non-positive when in non-interruptible wait) +.El +.Pp +The raw text: +.Bd -literal -offset indent +\&.Bl -tag -width "PAGEIN 10" -compact -offset indent +\&.It SL 10 +\&sleep time of the process (seconds blocked) +\&.It PAGEIN 10 +\&number of disk i/o's resulting from references +\&by the process to pages not loaded in core. +\&.It UID 10 +\&numerical user-id of process owner +\&.It PPID 10 +\&numerical id of parent of process process priority +\&(non-positive when in non-interruptible wait) +\&.El +.Ed +.Pp +Acceptable width specifiers: +.Bl -tag -width Ar -offset indent +.It Fl width Ar "\&Fl" +sets the width to the default width for a flag. All callable +macros have a default width value. The +.Ql \&.Fl , +value is presently +set to ten constant width characters or about five sixth of +an inch. +.It Fl width Ar "24n" +sets the width to 24 constant width characters or about two +inches. The +.Ql n +is absolutely necessary for the scaling to work correctly. +.It Fl width Ar "ENAMETOOLONG" +sets width to the constant width length of the +string given. +.It Fl width Ar "\\*qint mkfifo\\*q" +again, the width is set to the constant width of the string +given. +.El +.Pp +If a width is not specified for the tag list type, the first +time +.Ql \&.It +is invoked, an attempt is made to determine an appropriate +width. If the first argument to +.Ql ".It" +is a callable macro, the default width for that macro will be used +as if the macro name had been supplied as the width. However, +if another item in the list is given with a different callable +macro name, a new and nested list is assumed. Here is an involved +example of a self nesting list: +.Sh DIAGNOSTICS +The debugging facilities for +.Nm \-mdoc +are limited, but can help detect subtle errors such +as the collision of an argument name with an internal +register or macro name. (A what?) +A register is an arithmetic storage class for +.Xr troff +with a one or two character name. +All registers internal to +.Nm \-mdoc +for +.Xr troff +and +.Xr ditroff +are two characters and +of the form such as +.Ql \&Ar , + as +.Ql \&aR +or + as +.Ql \&C\&1 . +And adding to the muddle, +.Xr troff +has its own internal registers all of which are either +two lowercase characters or a dot plus a letter or meta-character +character. +In one of the introduction examples, it was shown how to +prevent the interpretation of a macro name with the escape sequence +.Ql \e& . +This is sufficient for the internal register names also. +.Pp +.\" Every callable macro name has a corresponding register +.\" of the same name (). +.\" There are also specific registers which have +.\" been used for stacks and arrays and are listed in the +.\" .Sx Appendix . +.\" .Bd -ragged -offset 4n +.\" [A-Z][a-z] registers corresponding to macro names (example ``Ar'') +.\" [a-z][A-Z] registers corresponding to macro names (example ``aR'') +.\" C[0-9] argument types (example C1) +.\" O[0-9] offset stack (displays) +.\" h[0-9] horizontal spacing stack (lists) +.\" o[0-9] offset (stack) (lists) +.\" t[0-9] tag stack (lists) +.\" v[0-9] vertical spacing stack (lists) +.\" w[0-9] width tag/label stack +.\" .Ed +.\" .Pp +If a non-escaped register name is given in the argument list of a request +unpredictable behaviour will occur. In general, anytime huge portions +of text do not appear where expected in the output, or small strings +such as list tags disappear, chances are there is a misunderstanding +about an argument type in the argument list. +Your mother never intended for you to remember this evil stuff - so here +is a way to find out whether or not your arguments are valid: The +.Ql \&.Db +(debug) +macro displays the interpretation of the argument list for most +macros. Macros such as the +.Ql \&.Pp +(paragraph) +macro do not contain debugging information. All of the callable macros do, +and it is strongly advised whenever in doubt, +turn on the +.Ql \&.Db +macro. +.Pp +.Dl Usage: \&.Db [on | off] +.Pp +An example of a portion of text with +the debug macro placed above and below an +artificially created problem (a flag argument +.Ql \&aC +which should be +.Ql \e&aC +in order to work): +.Bd -literal -offset indent +\&.Db on +\&.Op Fl aC Ar file ) +\&.Db off +.Ed +.Pp +The resulting output: +.Bd -literal -offset indent +DEBUGGING ON +DEBUG(argv) MACRO: `.Op' Line #: 2 + Argc: 1 Argv: `Fl' Length: 2 + Space: `' Class: Executable + Argc: 2 Argv: `aC' Length: 2 + Space: `' Class: Executable + Argc: 3 Argv: `Ar' Length: 2 + Space: `' Class: Executable + Argc: 4 Argv: `file' Length: 4 + Space: ` ' Class: String + Argc: 5 Argv: `)' Length: 1 + Space: ` ' Class: Closing Punctuation or suffix + MACRO REQUEST: .Op Fl aC Ar file ) +DEBUGGING OFF +.Ed +.Pp +The first line of information tells the name of the calling +macro, here +.Ql \&.Op , +and the line number it appears on. If one or more files are involved +(especially if text from another file is included) the line number +may be bogus. If there is only one file, it should be accurate. +The second line gives the argument count, the argument +.Pq Ql \&Fl +and its length. If the length of an argument is two characters, the +argument is tested to see if it is executable (unfortunately, any +register which contains a non-zero value appears executable). +The third line gives the space allotted for a class, and the +class type. The problem here is the argument aC should not be +executable. The four types of classes are string, executable, closing +punctuation and opening punctuation. The last line shows the entire +argument list as it was read. In this next example, the offending +.Ql \&aC +is escaped: +.Bd -literal -offset indent +\&.Db on +\&.Em An escaped \e&aC +\&.Db off +.Ed +.Bd -literal -offset indent +DEBUGGING ON +DEBUG(fargv) MACRO: `.Em' Line #: 2 + Argc: 1 Argv: `An' Length: 2 + Space: ` ' Class: String + Argc: 2 Argv: `escaped' Length: 7 + Space: ` ' Class: String + Argc: 3 Argv: `aC' Length: 2 + Space: ` ' Class: String + MACRO REQUEST: .Em An escaped &aC +DEBUGGING OFF +.Ed +.Pp +The argument +.Ql \e&aC +shows up with the same length of 2 as the +.Ql \e& +sequence produces a zero width, but a register +named +.Ql \e&aC +was not found and the type classified as string. +.Pp +Other diagnostics consist of usage statements and are self explanatory. +.Sh FILES +.Bl -tag -width /usr/share/man0/template.doc -compact +.It Pa /usr/share/tmac/tmac.doc +manual macro package +.It Pa /usr/share/man0/template.doc +template for writing a man page +.El +.Sh HISTORY +4.4 BSD +.Sh SEE ALSO +.Xr mdoc 7 , +.Xr man 1 , +.Xr troff 1 +.Sh BUGS +Undesirable hyphenation on the dash of a flag +argument is not yet resolved, and causes +occasional mishaps in the DESCRIPTION section. +(line break on the hyphen). +.Pp +Predefined strings are not declared in documentation. +.Pp +Section 3f has not been added to the header routines. +.Pp +.Ql \&.Nm +font should be changed in NAME section. +.Pp +.Ql \&.Fn +needs to have a check to prevent splitting up +if the line length is too short. Right now it +separates the last parenthesis, and sometimes +looks ridiculous if a line is in fill mode. +.Pp +The method used to prevent header and footer page +breaks (other than the initial header and footer) when using +nroff seems to be putting out a partially filled line +at the bottom of the page leaving an unsightly blank space. +.Pp +The list and display macros to not do any keeps +and certainly should be able to. diff --git a/usr/src/share/man/man7/operator.7 b/usr/src/share/man/man7/operator.7 new file mode 100644 index 0000000000..7761e440e1 --- /dev/null +++ b/usr/src/share/man/man7/operator.7 @@ -0,0 +1,70 @@ +.\" Copyright (c) 1989, 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)operator.7 5.4 (Berkeley) 7/19/91 +.\" +.Dd July 19, 1991 +.Dt OPERATOR 7 +.Os +.Sh NAME +.Nm operator +.Nd C operator precedence and order of evaluation +.Sh DESCRIPTION +.Bd -ragged -offset indent -compact +.Bl -column "Operator Associativity " +.It Operator Associativity +.It -------- ------------- +.It \&() [] -> . left to right +.It "! ~ ++ -- - (type) * & sizeof" right to left +.It \&* / % left to right +.It \&+ - left to right +.It \&<< >> left to right +.It \&< <= > >= left to right +.It \&== != left to right +.It \&& left to right +.It \&^ left to right +.It \&| left to right +.It \&&& left to right +.It \&|| left to right +.It \&?: right to left +.It \&= += -= etc. right to left +.It \&, left to right +.El +.Ed +.Sh FILES +.Bl -tag -width /usr/share/misc/operator -compact +.It Pa /usr/share/misc/operator +.El +.Sh HISTORY +The +.Nm operator +manual page is +.Ud . diff --git a/usr/src/share/man/man8/Makefile b/usr/src/share/man/man8/Makefile new file mode 100644 index 0000000000..a669694ef8 --- /dev/null +++ b/usr/src/share/man/man8/Makefile @@ -0,0 +1,8 @@ +# @(#)Makefile 0.1 (RWGrimes) 3/25/93 +# +# Not for 386bsd: man4.hp300 man4.tahoe man4.vax + +MAN8= adduser.0 intro.0 makedev.0 rc.0 sticky.0 +SUBDIR= man8.i386 + +.include diff --git a/usr/src/share/man/man8/adduser.8 b/usr/src/share/man/man8/adduser.8 new file mode 100644 index 0000000000..f6dde2d200 --- /dev/null +++ b/usr/src/share/man/man8/adduser.8 @@ -0,0 +1,115 @@ +.\" Copyright (c) 1980, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)adduser.8 6.8 (Berkeley) 3/16/91 +.\" +.Dd March 16, 1991 +.Dt ADDUSER 8 +.Os BSD 4 +.Sh NAME +.Nm adduser +.Nd procedure for adding new users +.Sh DESCRIPTION +A new user must choose a login name, which must not already appear in +.Pa /etc/passwd +or +.Pa /etc/aliases . +It must also not begin with the hyphen +.Ql Fl +character. +It is strongly recommended that it be all lower-case, and not contain +the dot +.Ql \&. +character, as that tends to confuse mailers. +An account can be added by editing a line into the passwd file; this +must be done with the password file locked e.g. by using +.Xr chpass 1 +or +.Xr vipw 8 . +.Pp +A new user is given a group and user id. +Login and user id's should be unique across the system, and often across +a group of systems, since they are used to control file access. +Typically, users working on similar projects will be put in the same groups. +At the University of California, Berkeley, we have groups for system staff, +faculty, graduate students, and special groups for large projects. +.Pp +A skeletal account for a new user +\*(lqernie\*(rq +might look like: +.Bd -literal +ernie::25:30::0:0:Ernie Kovacs,508 Evans Hall,x7925, + 642-8202:/a/users/ernie:/bin/csh +.Ed +.Pp +For a description of each of these fields, see +.Xr passwd 5 . +.Pp +It is useful to give new users some help in getting started, supplying +them with a few skeletal files such as +.Pa \&.profile +if they use +.Pa /bin/sh , +or +.Pa \&.cshrc +and +.Pa \&.login +if they use +.Pa /bin/csh . +The directory +.Pa /usr/share/skel +contains skeletal definitions of such files. +New users should be given copies of these files which, for instance, +use +.Xr tset 1 +automatically at each login. +.Sh FILES +.Bl -tag -width /etc/master.passwdxx -compact +.It Pa /etc/master.passwd +user database +.It Pa /usr/share/skel +skeletal login directory +.El +.Sh SEE ALSO +.Xr chpass 1 , +.Xr finger 1 , +.Xr passwd 1 , +.Xr aliases 5 , +.Xr passwd 5 , +.Xr mkpasswd 8 , +.Xr vipw 8 +.Sh BUGS +User information should (and eventually will) be stored elsewhere. +.Sh HISTORY +The +.Nm +command appeared in +.Bx 3.0 . diff --git a/usr/src/share/man/man8/intro.8 b/usr/src/share/man/man8/intro.8 new file mode 100644 index 0000000000..cc8dbf2701 --- /dev/null +++ b/usr/src/share/man/man8/intro.8 @@ -0,0 +1,70 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)intro.8 6.5 (Berkeley) 8/5/91 +.\" +.Dd August 5, 1991 +.Dt INTRO 8 +.Os BSD 4.2 +.Sh NAME +.Nm intro +.Nd "introduction to system maintenance and operation commands" +.Sh DESCRIPTION +This section contains information related to system operation +and maintenance. +It describes commands used to create new file systems, +.Ql Xr newfs , +verify the integrity of the file systems, +.Ql Xr fsck , +control disk usage, +.Ql Xr edquota , +maintain system backups, +.Ql Xr dump , +and recover files when disks die an untimely death, +.Ql Xr restore . +The manual +.Ql Xr format +should be consulted when formatting disk packs respective +to the architecture the system is running on. +Network related services like +.Ql Xr inetd +and +.Ql Xr ftpd +are also described. +The section +.Ql Xr crash +should be consulted in understanding how to interpret system +crash dumps. +.Sh HISTORY +The +.Nm intro +section manual page appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man8/makedev.8 b/usr/src/share/man/man8/makedev.8 new file mode 100644 index 0000000000..a4ece58ce8 --- /dev/null +++ b/usr/src/share/man/man8/makedev.8 @@ -0,0 +1,110 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)makedev.8 6.3 (Berkeley) 3/16/91 +.\" +.Dd March 16, 1991 +.Dt MAKEDEV 8 +.Os BSD 4.2 +.Sh NAME +.Nm makedev +.Nd make system special files +.Sh SYNOPSIS +.Nm MAKEDEV +.Ar device ... +.Sh DESCRIPTION +.Nm MAKEDEV +is a shell script normally used to install +special files. It resides in the +.Pa /dev +directory, as this is the normal location of special files. +Arguments to +.Nm MAKEDEV +are usually of the form +.Ar device-name Ns Sy \&? +where +.Ar device-name +is one of the supported devices listed in section 4 of the +manual and +.Dq Sy \&? +is a logical unit number (0-9). A few +special arguments create assorted collections of devices and are +listed below. +.Bl -tag -width Ds +.It Sy std +Create the +.Em standard +devices for the system; for example the standard +.Tn UNIX +devices +.Pa /dev/console and /dev/tty; +the standard hardware dependent devices, +for example in the VAX family +the +.Tn VAX-11/780 +console floppy device, +.Pa /dev/floppy , +and +.Tn VAX-11/750 +and +.Tn VAX-11/730 +console cassette device(s), +.Pa /dev/tu? +devices would be made for the appropriate system. +.It Sy local +Create those devices specific to the local site. This +request causes the shell file +.Pa /dev/MAKEDEV.local +to be executed. Site specific commands, such as those +used to setup dialup lines as +.Pa ttyd? +should be included +in this file. +.El +.Pp +Since all devices are created using +.Xr mknod 8 , +this shell script is useful only to the super-user. +.Sh DIAGNOSTICS +Either self-explanatory, or generated by one of the programs +called from the script. Use +.Ql sh -x MAKEDEV +in case of +trouble. +.Sh SEE ALSO +.Xr intro 4 , +.Xr config 8 , +.Xr mknod 8 +.Sh HISTORY +The +.Nm +command appeared in +.Bx 4.2 . diff --git a/usr/src/share/man/man8/man8.i386/MAKEDEV.8 b/usr/src/share/man/man8/man8.i386/MAKEDEV.8 new file mode 100644 index 0000000000..d6459a13ce --- /dev/null +++ b/usr/src/share/man/man8/man8.i386/MAKEDEV.8 @@ -0,0 +1,105 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)MAKEDEV.8 5.2 (Berkeley) 3/22/91 +.\" +.TH MAKEDEV 8 "March 22, 1991" +.UC 7 +.SH NAME +MAKEDEV \- create system and device special files +.SH SYNOPSIS +MAKEDEV name ... +.SH DESCRIPTION +The shell script +.IR MAKEDEV , +found in the ``/dev'' directory, is used to create the common special +files. +See +.IR special (8) +for a more complete discussion of special files. +.PP +.I MAKEDEV +takes any number of device names as arguments, where the names are +the common abbreviation for the device. +There are two special devices, ``std'' and ``local''. +The former creates the standard devices for the architecture. +The latter is for devices specific to the local site, and +executes the shell file ``MAKEDEV.local''. +.PP +The i386 supports the following devices. +Where a device name is followed by a hash sign (``#''), the hash sign +must be replaced by a unit number. +.TP 10 +std +the standard devices (console, drum, fd/*, klog, kmem, mem, null, +stderr, stdin, stdout, tty) +.br +.ns +.TP 10 +local +configuration specific devices +.br +.ns +.TP 10 +com# +standard PC COM ports +.br +.ns +.TP 10 +fd# +``floppy'' disk drives (3 1/2, 5 1/4) +.br +.ns +.TP 10 +flog# +kernel logging device +.br +.ns +.TP 10 +pty# +set of 16 master and slave pseudo terminals +.br +.ns +.TP 10 +wd# +``winchester'' disk drives (ST506, IDE, ESDI, RLL etc.) +.br +.ns +.TP 10 +wt# +QIC-interfaced (e.g. not SCSI) 3M cartridge tape +.SH FILES +/dev The special file directory. +.SH SEE ALSO +.IR mknod (1), +.IR intro (4), +.IR config (8), +.IR special (8) diff --git a/usr/src/share/man/man8/man8.i386/Makefile b/usr/src/share/man/man8/man8.i386/Makefile new file mode 100644 index 0000000000..de13225587 --- /dev/null +++ b/usr/src/share/man/man8/man8.i386/Makefile @@ -0,0 +1,6 @@ +# @(#)Makefile 0.1 (RWGrimes) 3/25/93 + +MAN8= MAKEDEV.0 +MANSUBDIR=/i386 + +.include diff --git a/usr/src/share/man/man8/rc.8 b/usr/src/share/man/man8/rc.8 new file mode 100644 index 0000000000..fdd85ca47f --- /dev/null +++ b/usr/src/share/man/man8/rc.8 @@ -0,0 +1,106 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)rc.8 6.2 (Berkeley) 3/16/91 +.\" +.Dd March 16, 1991 +.Dt RC 8 +.Os BSD 4 +.Sh NAME +.Nm rc +.Nd command script for auto\-reboot and daemons +.Sh SYNOPSIS +.Nm rc +.Nm rc.local +.Sh DESCRIPTION +.Nm Rc +is the command script which controls the automatic reboot and +.Nm rc.local +is the script holding commands which are pertinent only +to a specific site. +.Pp +When an automatic reboot is in progress, +.Nm rc +is invoked with the argument +.Em autoboot . +The first portion of +.Nm rc +runs an +.Xr fsck 8 +with option +.Fl p +to ``preen'' all the disks of minor inconsistencies resulting +from the last system shutdown and to check for serious inconsistencies +caused by hardware or software failure. +If this auto-check and repair succeeds, then the second part of +.Nm rc +is run. +.Pp +The second part of +.Nm rc , +which is run after a auto-reboot succeeds and also if +.Nm rc +is invoked when a single user shell terminates (see +.Xr init 8 ) , +starts all the daemons on the system, preserves editor files +and clears the scratch directory +.Pa /tmp . +.Pp +.Nm Rc.local +is executed immediately before any other commands after a successful +.Xr fsck . +Normally, the first commands placed in the +.Nm rc.local +file define the machine's name, using +.Xr hostname 1 , +and save any possible core image that might have been +generated as a result of a system crash, with +.Xr savecore 8 . +The latter command is included in the +.Nm rc.local +file because the directory in which core dumps are saved +is usually site specific. +.Pp +Following tradition, the startup files +.Nm rc +and +.Nm rc.local +reside in +.Pa /etc . +.Sh SEE ALSO +.Xr init 8 , +.Xr reboot 8 , +.Xr savecore 8 +.Sh HISTORY +The +.Nm +command appeared in +.Bx 4.0 . diff --git a/usr/src/share/man/man8/sticky.8 b/usr/src/share/man/man8/sticky.8 new file mode 100644 index 0000000000..6f33743c61 --- /dev/null +++ b/usr/src/share/man/man8/sticky.8 @@ -0,0 +1,101 @@ +.\" Copyright (c) 1980, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)sticky.8 6.4 (Berkeley) 3/16/91 +.\" +.Dd March 16, 1991 +.Dt STICKY 8 +.Os BSD 4 +.Sh NAME +.Nm sticky +.Nd sticky text and append-only directories +.Sh DESCRIPTION +A special file mode, called the +.Em sticky bit +(mode S_ISVTX), +is used to indicate special treatment +for shareable executable files and directories. +See +.Xr chmod 2 +or +the file +.Pa /usr/include/sys/stat.h +for an explanation of file modes. +.Sh STICKY TEXT EXECUTABLE FILES +An executable shareable file whose sticky bit is set +will not be immediately discarded from swap space after execution. +The kernel will hoard the text segment of the file for future +reuse and avoid having to reload the program. +Shareable text segments are normally placed +in a least-frequently-used cache after use, +and thus the `sticky bit' has little effect on commonly-used text images. +.Pp +Sharable executable files are created with the +.Fl n +and +.Fl z +options of +the loader +.Xr ld 1 . +.Pp +Only the super-user can set the sticky bit +on a sharable executable file. +.Sh STICKY DIRECTORIES +A directory whose `sticky bit' is set +becomes an append-only directory, or, more accurately, +a directory in which the deletion of files is restricted. +A file in a sticky directory may only be removed or renamed +by a user if the user has write permission for the directory and +the user is the owner of the file, the owner of the directory, +or the super-user. +This feature is usefully applied to directories such as +.Pa /tmp +which must be publicly writable but +should deny users the license to arbitrarily +delete or rename each others' files. +.Pp +Any user may create a sticky directory. +See +.Xr chmod 1 +for details about modifying file modes. +.Sh BUGS +Since the text areas of sticky text executables are stashed in the swap area, +abuse of the feature can cause a system to run out of swap. +.Pp +Neither +.Xr open 2 +nor +.Xr mkdir 2 +will create a file with the sticky bit set. +.Sh HISTORY +A +.Nm +command appeared in Version 32V AT&T UNIX. diff --git a/usr/src/share/me/Makefile b/usr/src/share/me/Makefile new file mode 100644 index 0000000000..9e237e8ef1 --- /dev/null +++ b/usr/src/share/me/Makefile @@ -0,0 +1,25 @@ +# @(#)Makefile 6.11 (Berkeley) 7/1/90 + +MELIB= ${BINDIR}/me +TMLIB= ${BINDIR}/tmac +MESRCS= acm.me chars.me deltext.me eqn.me float.me footnote.me \ + index.me letterhead.me local.me null.me refer.me sh.me \ + tbl.me thesis.me +TMSRCS= tmac.e +MAN7= me.0 + +beforeinstall: + cd ${.CURDIR}; for i in ${MESRCS}; do \ + sed -f strip.sed < $$i > ${DESTDIR}${MELIB}/$$i; \ + chown ${BINOWN}.${BINGRP} ${DESTDIR}${MELIB}/$$i; \ + chmod 444 ${DESTDIR}${MELIB}/$$i; \ + done + cd ${.CURDIR}; for i in ${TMSRCS}; do \ + sed -f strip.sed < $$i > ${DESTDIR}${TMLIB}/$$i; \ + chown ${BINOWN}.${BINGRP} ${DESTDIR}${TMLIB}/$$i; \ + chmod 444 ${DESTDIR}${TMLIB}/$$i; \ + done + cd ${.CURDIR}; install -c -o ${BINOWN} -g ${BINGRP} -m 444 revisions \ + ${DESTDIR}${MELIB}/revisions + +.include diff --git a/usr/src/share/me/acm.me b/usr/src/share/me/acm.me new file mode 100644 index 0000000000..a1ac10c2c7 --- /dev/null +++ b/usr/src/share/me/acm.me @@ -0,0 +1,87 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)acm.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.de ac +.ll 8.9i +.nr $s 0.5i +.if !\\n($T \ +. po 1.0i +.ie "\\$2"*" \ +\{\ +. nr hm 0.375i +. nr tm 1.125i +. pl 14.25i +. nr bm 1.5i +. de $h .. +. tl ''%'' +... +. rm $f +.\} +.el \ +\{\ +. nr hm 0 +. nr tm 0 +. pl 15i +. nr bm 3i +. nr fm 0.9i +. de $f .. +. ti 0 +\h'|0.5i'\\\\n%\h'|1.25i'\\$2\h'|3i'\\$1 +. br +... +. rm $h +.\} +.bp +.rs +.sp 0.75i +.rm ac +.. +.if t .tm Line \n(c. -- macro .ac will not work in TROFF -- request ignored. +.if t .rm ac +.de +c \" *** begin chapter +.if \\n(?A \ +\{\ +. nr ch 0 1 +. pn 1 +. ep +. af % 1 +. bp +.\} +.nr ?A 0 +.sp 1i +.if \\n(.$ \ +. $c "\\$1" +.. +.nr c. \n(_0 diff --git a/usr/src/share/me/chars.me b/usr/src/share/me/chars.me new file mode 100644 index 0000000000..aa036f4a50 --- /dev/null +++ b/usr/src/share/me/chars.me @@ -0,0 +1,94 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)chars.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.\" *** special characters *** +.\" this file uses temp strings of the form #x. +.if n \ +\{\ +. ds #[ \f1 +. ds #] \fP +. ds #h 0 +. ds #v 0.8m +. ds #f 0.3m +.\} +.if t \ +\{\ +. ds #[ \& +. ds #] \& +. ds #h ((1u-(\\\\n(.fu%2u))*0.13m) +. ds #v 0.6m +. ds #f 0 +.\} +.\" \" accents +.ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\*(#[\(aa\h'|\\n_u'\*(#] +.ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\*(#[\(ga\h'|\\n_u'\*(#] +.\" \" umlaut +.ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m+\*(#f)'\v'-\*(#v'\*(#[\z.\h'0.2m+\*(#f'.\h'|\\n_u'\v'\*(#v'\*(#] +.\" \" circumflex and tilde +.ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'\*(#[^\h'|\\n_u'\*(#] +.ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'\*(#[~\h'|\\n_u'\*(#] +.\" \" cedilla and czech +.ds , \k_\h'-(\\n(.wu)'\*(#[,\h'|\\n_u'\*(#] +.ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\*(#[\s-4v\s0\v'\*(#v'\h'|\\n_u'\*(#] +.\" \" Norwegian A or angstrom +.ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\*(#[\z\(de\v'0.4n'\h'|\\n_u'\*(#] +.\" \" there exists, for all +.ds qe \*(#[\v'0.5m'\z\(em\v'-0.65m'\z\(em\v'-0.65m'\z\(em\v'0.8m'\h'0.3m'|\h'-0.3m'\*(#] +.ds qa \*(#[\h'-0.24m'\z\e\h'0.48m'\z\(sl\h'-0.24m'\v'-0.15m'\(em\v'0.15m'\*(#] +.if t \ +\{\ +. ds qe \s-2\v'0.45m'\z\(em\v'-0.625m'\z\(em\v'-0.625m'\(em\v'0.8m'\s0\h'-0.1m'\v'-0.05m'\(br\v'0.05m'\h'0.1m' +. ds qa \z\e\h'0.35m'\z\(sl\h'-0.33m'\v'-0.3m'\s-4\(em\s0\v'0.3m'\h'0.15m' +.\} +.if \n($T \ +\{\ +. ds ' \*(#[\h'-1'\(aa\*(#] +. ds ` \*(#[\h'-1'\(ga\*(#] +. ds : \& +. ds ^ \*(#[\h'-1'^\*(#] +. ds ~ \*(#[\h'-1'~\*(#] +. ds , \*(#[\h'-1',\*(#] +. ds v \& +. ds o \& +. ds qe EXISTS +. ds qa FORALL +.\} +.rm #[ +.rm #] +.rm #h +.rm #v +.rm #f +.nr c. \n(_0 diff --git a/usr/src/share/me/deltext.me b/usr/src/share/me/deltext.me new file mode 100644 index 0000000000..61a3dff7f4 --- /dev/null +++ b/usr/src/share/me/deltext.me @@ -0,0 +1,53 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)deltext.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de (d \" *** begin delayed text +.am |d )d +.sp \\n(bsu +.. +.de )d \" *** end delayed text +.if \\n# \ +. nr $d +1 +.ds # [\\n($d]\k# +.rr # +.. +.de pd \" *** print delayed text +.|d +.rm |d +.nr $d 1 1 +.ds # [1]\k# +.. +.nr c. \n(_0 diff --git a/usr/src/share/me/eqn.me b/usr/src/share/me/eqn.me new file mode 100644 index 0000000000..4fea122369 --- /dev/null +++ b/usr/src/share/me/eqn.me @@ -0,0 +1,111 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)eqn.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de EQ \" *** equation start +.ec +.if !\\n(?e \ +\{\ +. if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request +. @D 1 "\\$1" "\\$2" +. @C 2 +. di |e +.\} +.ls 1 +.in 0 +.nf +.. +.de EN \" *** equation end +.br +.ie "\\$1"C" \ +\{\ +. nr ?e 1 +. sp \\n(esu +.\} +.el \ +\{\ +. nr ?e 0 +. di +. if \\n(dn \ +. @q \" actual equation output +. rm |e +. rm 10 +. rm 11 +. rm 12 +. rm 13 +. rm 14 +. rm 15 +. rm 16 +. rm 17 +. rm 18 +. rm 19 +. rm 20 +. rm 21 +. rm 22 +. rm 23 +. ev +.\} +.. +.de @q \" --- equation output +.nr _Q \\n(dnu +.ev +.sp \\n(esu \" output rest of preceeding text +.@C 2 \" .ev 2 may be jumbled from header +.ie \\n(_d=1 \ +. in (\\n(.lu+\\n($iu-\\n(dlu)/2u +.el .ie \\n(_d=2 \ +. in \\n($iu +.el .ie \\n(_d=3 \ +. in \\n(biu+\\n($iu +.el .if \\n(_d=4 \ +. in 0 +.if !"\\n(.z"" \!.ne \\n(_Qu +.ne \\n(_Qu+\n(.Vu \" keep it on one page +.mk _q +.if \n@>1 .tm --@e: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p +.if !"\\*(|p"" \ +\{\ +. rs +. sp (\\n(_Qu-\\n(.vu)/2u +. tl """\\*(|p" +. rt \\n(_qu +.\} +.|e +.sp |\\n(_qu+\\n(_Qu +.sp \\n(esu+\\n(.Lv-1v +.rr _q +.rr _Q +.. +.nr c. \n(_0 diff --git a/usr/src/share/me/float.me b/usr/src/share/me/float.me new file mode 100644 index 0000000000..fb0f1b5fb9 --- /dev/null +++ b/usr/src/share/me/float.me @@ -0,0 +1,100 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)float.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de (z \" *** begin floating keep +.if \n@>4 .tm >> (z, .z=\n(.z +.@D 4 \\$1 \\$2 +.@( +.nr ?T 0 +.. +.de )z \" *** end floating keep +.if \n@>4 .tm >> )z, .z=\n(.z +.sp \\n(zsu +.@) +.if \n@>4 .tm -- )z << @), .z=\n(.z +.rr _0 +.if !\\n(?b \ +. nr dn +(\\n(ppu*\\n($ru)/2u+\\n(zsu +.nr dl -\n(.H \" fudge factor necessary to make it work +.ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \ +\{\ +. nr ?a 1 +. if (\\n(dl>\\n($l)&(\\n($m>1) \ +. nr ?w 1 \" mark wider than one column (top) +. ds |x |t +.\} +.el \ +\{\ +. nr ?b 1 +. if (\\n(dl>\\n($l)&(\\n($m>1) \ +. nr ?W 1 \" mark wider than one column (bottom) +. nr _b +\\n(dnu +. ch @f -\\n(_bu +. ds |x |b +.\} +.da \\*(|x \" copy to save macro +.nf +.ls 1 +.nr ?k 1 +.if \n@>4 .tm -- )z >> \\*(|x +\!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu +.|k\" \" and the body +.ec +.if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z +.nr ?k 0 +.rm |k\" \" remove the temp macro +.da +.in 0 +.ls 1 +.xl \\n($lu +.ev +.if \n@>4 .tm << )z, .z=\\n(.z +.. +.de @k \" --- output floating keep +.if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z +.ev 1 +.nf +.ls 1 +.in 0 +.sp \\n(zsu +.\\$1 +.ec +.br +.rm \\$1 +.ev +.nr ?T 0 +.. +.nr c. \n(_0 diff --git a/usr/src/share/me/footnote.me b/usr/src/share/me/footnote.me new file mode 100644 index 0000000000..9e5a8a3c31 --- /dev/null +++ b/usr/src/share/me/footnote.me @@ -0,0 +1,118 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)footnote.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de (f \" *** begin footnote +.ec +.if "\\n(.z"|f" .tm Line \\n(c. -- Illegal footnote nesting +.ie "\\n(.z"" \ +\{\ +. nr _D \\n(dn +. nr _0 1v+\\n(nlu +. ev 2 +. da |f +. in 0 +. xl \\n($lu-\\n(fuu +. @F \\n(ff +. sz \\n(fp +. vs \\n(.su*\\n($Ru +. if !\\n(?f \ +\{\ +. nr _b +1v \" allow space for $s +. $s +. \} +. br +. if \\n(.p-\\n(_b-\\n(_0-\\n(.h-1v-\\n(fs<0 \ +\{\ +. da\" \" won't fit on page at all +. bc +. if !\\n(?f \ +. rm |f +. da |f +.\" next five lines could be dropped if headers had their own environment +. in 0 \" reset everything from .bc +. xl \\n($lu-\\n(fuu +. @F \\n(ff +. sz \\n(fp +. vs \\n(.su*\\n($Ru +. if !\\n(?f \ +. $s +. br +. \} +. rr _0 +. sp \\n(fsu +. nr ?f 1 +. fi +. if !"\\$1"_" \ +. ti \\n(fiu +. if \n@>2 .tm << (f $f=\\n($f +.\} +.el \ +\{\ +. ev 2 +\!.(f \\$1 +.\} +.. +.de )f \" *** end footnote +.ie "\\n(.z"|f" \ +\{\ +. if \\n* \ +. nr $f +1 +. ds * \\*[\\n($f\\*]\k* +. rr * +. in 0 +. da +. ev +. if \\n(_w<\\n(dl \ +. nr _w \\n(dl \" compute maximum fn width +. nr _b +\\n(dn +. ch @f -\\n(_bu +. if \\n(.p-\\n(_b<=\\n(nl \ +. ch @f \\n(nlu+\n(.Vu +. nr dn _D +. rr _D +.\} +.el \ +\{\ +. br +\!.)f +. ev +.\} +.. +.if \n(ff<=0 \ +. nr ff 1 \" footnote font: Times Roman +.if \n(fp<=0 \ +. nr fp 8 \" footnote pointsize +.nr c. \n(_0 diff --git a/usr/src/share/me/index.me b/usr/src/share/me/index.me new file mode 100644 index 0000000000..114577235d --- /dev/null +++ b/usr/src/share/me/index.me @@ -0,0 +1,109 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)index.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de (x \" *** begin index entry +.if \n@>4 .tm >> (x, .z=\\n(.z +.ds |X x +.if \\n(.$>0 \ +. ds |X \\$1 +.\" please note these cases MUST be in this order +.ie !"\\n(.z"" \ +\{\ +. ev 2 \" if in a diversion, save & process later +\!.(x \\*(|X +.rm |X +.\} +.el \ +\{\ +. am %\\*(|X )x +. sp \\n(xsu +. ti -\\n(piu +.\} +.. +.de )x \" *** end index entry +.if \n@>4 .tm >> )x, .z=\\n(.z +.ie "\\n(.z"" \ +\{\ +. ds |x \\n% +. if \\n(.$>0 \ +. ds |x \\$1 +. if "\\*(|x"_" \ +. ig .. +. am %\\*(|X .. +. if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \ +. ti +\\n(xuu +\\\\a\\\\t\\$2\\*(|x +... +. rm |x +. rm |X +.\} +.el \ +\{\ +\!.)x \\$1 \\$2 +. br \" if in a diversion, save & process later +. ev +.\} +.. +.de xp \" *** print the index +.br +.@C 2 +.ls 1 +.vs \\n(.su*\\n($Ru +.fi +.in +\\n(piu +.ds |X x +.if \\n(.$>0 \ +. ds |X \\$1 +.xl -(\\n(xuu+\w'...'u) +.di |x +.%\\*(|X +.br +.di +.rm %\\*(|X +.xl \\n($lu +.rm |X +.ev +.nf +.in 0 +.ta \\n(.lu-\\n(xuuR \\n(.luR +.|x +.fi +.in +.rm |x +.. +.if \n(xu<=0 \ +. nr xu 0.5i \" index undent +.nr c. \n(_0 diff --git a/usr/src/share/me/letterhead.me b/usr/src/share/me/letterhead.me new file mode 100644 index 0000000000..f79d394845 --- /dev/null +++ b/usr/src/share/me/letterhead.me @@ -0,0 +1,99 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)letterhead.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.\" This file defines the local letterhead. It should be changed as +.\" necessary for your organization. +.\" This version prints the U.C. letterhead, complete with seal. +.\" Unfortunately, it assumes that you have ditroff and the seal font. +.\" +.nr xx \n(.d +.nr xy \n(.u +.nr xz \n(.f +.lp +.rs +.nr xw \n(.s +.nf +.ie "\*(.T"psc" \{\ +. po 0.85i +. sp |0.7i +. ft R \} +.el \{\ +. po 0.4i +. sp |0.5i +. ie "\*(.T"ip" \ +. ft R +. el \ +. ft cr +.\} +.ps 12 +.vs 0.14i +.in 0 +UNIVERSITY OF CALIFORNIA, BERKELEY +.sp 0.3i-1v +.ie "\*(.T"psc" \{\ +\l'11.3c' \h'|13.5c'\l'4.2c' +.br +\s6\|BERKELEY \(bu DAVIS \(bu IRVINE \(bu LOS ANGELES \(bu RIVERSIDE \(bu SAN DIEGO \(bu SAN FRANCISCO \h'|11.35c' \z\(uc \h'|13.85c' SANTA BARBARA \(bu SANTA CRUZ\s10 +.sp -0.2c +\l'11.3c' \h'|13.5c'\l'4.2c'\s7 \} +.el \{\ +.ps 7 +\D't 0.013i'\D'l 4.5i 0'\h'0.83i'\D'l 1.85i 0' +.sp 0.13i-1v +\!s5 +\D't 0.024i'\|BERKELEY \v'-0.035i'\D'l 0 0'\v'0.035i' DAVIS \v'-0.035i'\D'l 0 0'\v'0.035i' IRVINE \v'-0.035i'\D'l 0 0'\v'0.035i' LOS ANGELES \v'-0.035i'\D'l 0 0'\v'0.035i' RIVERSIDE \v'-0.035i'\D'l 0 0'\v'0.035i' SAN DIEGO \v'-0.035i'\D'l 0 0'\v'0.035i' SAN FRANCISCO\h'|4.9i'\u\f(slseal\fP\h'|5.475i'\dSANTA BARBARA \v'-0.035i'\D'l 0 0'\v'0.035i' SANTA CRUZ +.sp 0.07i-1v +\D't 0.013i'\D'l 4.5i 0'\h'0.83i'\D'l 1.85i 0' \} +.sp 0.5i-1v +\|COLLEGE OF ENGINEERING\h'|4.1i'BERKELEY, CALIFORNIA 94720 +\|DEPARTMENT OF ELECTRICAL ENGINEERING +\0\0AND COMPUTER SCIENCES\D't 3u' +\|COMPUTER SCIENCE DIVISION +.ft \n(xz +.ps \n(xw +.if "\$1"d" \ +\{\ +. sp 4p +\h'|4.1i'\*(td +.\} +.if \n(xy .fi +.ie \n(xx>\n(.d \ +. sp |\n(xxu +.el .sp 0.3i +.vs +.in +.po +.nr c. \n(_0 diff --git a/usr/src/share/me/local.me b/usr/src/share/me/local.me new file mode 100644 index 0000000000..d57d74ed27 --- /dev/null +++ b/usr/src/share/me/local.me @@ -0,0 +1,43 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)local.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.\" this file may contain local macros, which are initialized with +.\" the ".lo" request. All macros and number registers in this file +.\" should be named ".*X", where X is any letter (upper or lower case) +.\" or digit, to avoid naming conflicts. +.\" +.\" *** insert new definitions before this line *** +.nr c. \n(_0 diff --git a/usr/src/share/me/me.7 b/usr/src/share/me/me.7 new file mode 100644 index 0000000000..12b561df22 --- /dev/null +++ b/usr/src/share/me/me.7 @@ -0,0 +1,317 @@ +.\" Copyright (c) 1980 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)me.7 6.5 (Berkeley) 4/17/91 +.\" +.hc % +.TH ME 7 "April 17, 1991" +.UC 3 +.SH NAME +me \- macros for formatting papers +.SH SYNOPSIS +.B "nroff \-me" +[ options ] +file ... +.br +.B "troff \-me" +[ options ] +file ... +.SH DESCRIPTION +This package of +.I nroff +and +.I troff +macro definitions provides a canned formatting +facility for tech%nical papers in various formats. +When producing 2-column output on a terminal, filter +the output through +.IR col (1). +.PP +The macro requests are defined below. +Many +.I nroff +and +.I troff +requests are unsafe in conjunction with +this package, however, these requests may be used with +impunity after the first .pp: +.nf +.IP +.ta \w'.sz +n 'u +\&.bp begin new page +\&.br break output line here +\&.sp n insert n spacing lines +\&.ls n (line spacing) n=1 single, n=2 double space +\&.na no alignment of right margin +\&.ce n center next n lines +\&.ul n underline next n lines +\&.sz +n add n to point size +.fi +.PP +Output of the +.I eqn, +.I neqn, +.I refer, +and +.IR tbl (1) +preprocessors +for equations and tables is acceptable as input. +.SH FILES +/usr/lib/tmac/tmac.e +.br +/usr/lib/me/* +.SH "SEE ALSO" +eqn(1), troff(1), refer(1), tbl(1) +.br +\-me Reference Manual, Eric P. Allman +.br +Writing Papers with Nroff Using \-me +.tr &. +.SH REQUESTS +In the following list, +\*(lqinitialization\*(rq +refers to the first .pp, .lp, .ip, .np, .sh, or .uh macro. +This list is incomplete; +see +.I "The \-me Reference Manual" +for interesting details. +.PP +.ta \w'.eh \'x\'y\'z\' 'u +\w'Initial 'u +\w'Cause 'u +.br +.di x + \ka +.br +.di +.in \nau +.ti0 +Request Initial Cause Explanation +.ti0 + Value Break +.br +.in \nau +.ti0 +\&.(c - yes Begin centered block +.ti0 +\&.(d - no Begin delayed text +.ti0 +\&.(f - no Begin footnote +.ti0 +\&.(l - yes Begin list +.ti0 +\&.(q - yes Begin major quote +.ti0 +\&.(x \fIx\fR - no Begin indexed item in index +.I x +.ti0 +\&.(z - no Begin floating keep +.ti0 +\&.)c - yes End centered block +.ti0 +\&.)d - yes End delayed text +.ti0 +\&.)f - yes End footnote +.ti0 +\&.)l - yes End list +.ti0 +\&.)q - yes End major quote +.ti0 +\&.)x - yes End index item +.ti0 +\&.)z - yes End floating keep +.ti 0 +\&.++ \fIm H\fR - no Define paper section. +.I m +defines the part of the paper, and can be +.B C +(chapter), +.B A +(appendix), +.B P +(preliminary, e.g., abstract, table of contents, etc.), +.B B +(bibliography), +.B RC +(chapters renumbered from page one each chapter), +or +.B RA +(appendix renumbered from page one). +.ti 0 +\&.+c \fIT\fR - yes Begin chapter (or appendix, etc., as +set by .++). +.I T +is the chapter title. +.ti0 +\&.1c 1 yes One column format on a new page. +.ti0 +\&.2c 1 yes Two column format. +.ti0 +\&.EN - yes Space after equation +produced by +.I eqn +or +.IR neqn . +.ti0 +\&.EQ \fIx y\fR - yes Precede equation; break out and +add space. +Equation number is +.IR y . +The optional argument \fIx\fR +may be +.I I +to indent equation (default), +.I L +to left-adjust the equation, or +.I C +to center the equation. +.ti0 +\&.GE - yes End \fIgremlin\fP picture. +.ti0 +\&.GS - yes Begin \fIgremlin\fP picture. +.ti0 +\&.PE - yes End \fIpic\fP picture. +.ti0 +\&.PS - yes Begin \fIpic\fP picture. +.ti0 +\&.TE - yes End table. +.ti0 +\&.TH - yes End heading section of table. +.ti0 +\&.TS \fIx\fR - yes Begin table; if \fIx\fR is +.I H +table has repeated heading. +.ti 0 +\&.ac \fIA N\fR - no Set up for ACM style output. +.I A +is the Author's name(s), +.I N +is the total number of pages. +Must be given before the first initialization. +.ti0 +\&.b \fIx\fR no no Print +.I x +in boldface; if no argument switch to boldface. +.ti 0 +\&.ba \fI+n\fR 0 yes Augments the base indent by +.I n. +This indent is used to set the indent on regular text +(like paragraphs). +.ti0 +\&.bc no yes Begin new column +.ti0 +\&.bi \fIx\fR no no Print +.I x +in bold italics (nofill only) +.ti0 +\&.bu - yes Begin bulleted paragraph +.ti0 +\&.bx \fIx\fR no no Print \fIx\fR in a box (nofill only). +.ti 0 +\&.ef \fI\'x\'y\'z\'\fR \'\'\'\' no Set even footer to x y z +.ti 0 +\&.eh \fI\'x\'y\'z\'\fR \'\'\'\' no Set even header to x y z +.ti 0 +\&.fo \fI\'x\'y\'z\'\fR \'\'\'\' no Set footer to x y z +.ti 0 +\&.hx - no Suppress headers and footers on next page. +.ti0 +\&.he \fI\'x\'y\'z\'\fR \'\'\'\' no Set header to x y z +.ti0 +\&.hl - yes Draw a horizontal line +.ti0 +\&.i \fIx\fR no no Italicize +.I x; +if +.I x +missing, italic text follows. +.ti0 +\&.ip \fIx y\fR no yes Start indented paragraph, +with hanging tag +.IR x . +Indentation is +.I y +ens (default 5). +.ti0 +\&.lp yes yes Start left-blocked paragraph. +.ti 0 +\&.lo - no Read in a file of local macros of the +form +.BI \&.* x. +Must be given before initialization. +.ti0 +\&.np 1 yes Start numbered paragraph. +.ti 0 +\&.of \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd footer to x y z +.ti 0 +\&.oh \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd header to x y z +.ti 0 +\&.pd - yes Print delayed text. +.ti0 +\&.pp no yes Begin paragraph. +First line indented. +.ti0 +\&.r yes no Roman text follows. +.ti 0 +\&.re - no Reset tabs to default values. +.ti 0 +\&.sc no no Read in a file of special characters +and diacritical marks. +Must be given before initialization. +.ti0 +\&.sh \fIn x\fR - yes Section head follows, +font automatically bold. +.I n +is level of section, +.I x +is title of section. +.ti 0 +\&.sk no no Leave the next page blank. +Only one page is remembered ahead. +.ti0 +\&.sm \fIx\fR - no Set +.I x +in a smaller pointsize. +.ti 0 +\&.sz \fI+n\fR 10p no Augment the point size by +.I n +points. +.ti 0 +\&.th no no Produce the paper in thesis format. +Must be given before initialization. +.ti 0 +\&.tp no yes Begin title page. +.ti0 +\&.u \fIx\fR - no Underline argument (even in \fItroff\fR). +(Nofill only). +.ti0 +\&.uh - yes Like .sh but unnumbered. +.ti0 +\&.xp \fIx\fR - no Print index +.I x. diff --git a/usr/src/share/me/null.me b/usr/src/share/me/null.me new file mode 100644 index 0000000000..fd0e6dfee3 --- /dev/null +++ b/usr/src/share/me/null.me @@ -0,0 +1,39 @@ +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)null.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.\" This file should be null -- it is called when tmac.e is sourced +.\" for the second... time. Of course, you could give an error +.\" message..... +.cc . diff --git a/usr/src/share/me/refer.me b/usr/src/share/me/refer.me new file mode 100644 index 0000000000..e0cd7989b3 --- /dev/null +++ b/usr/src/share/me/refer.me @@ -0,0 +1,129 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)refer.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de ][ \" *** refer output +.if \\$1>5 .tm Bad arg to [] +.[\\$1 +.. +.de [0 \" --- other +.(f +.ip "\\*([F.\0" +.if !"\\*([A"" \\*([A, +.if !"\\*([T"" \\f2\\*([T\\f1\c +.if !"\\*([T"" .if !"\\*([O"" ,\ +.ie !"\\*([O"" \\*([O +.el .if !"\\*([T"" \&. +.if !"\\*([D"" \\*([D. +.@p +.)f +.. +.de [1 \" --- journal article +.(f +.ip "\\*([F.\0" +\\*([A, +.if !"\\*([T"" \\*(lq\\*([T,\\*(rq +.if "\\*([V"" \\f2\\*([J\\f1, +.if !"\\*([V"" \\f2\\*([J\\f1 +.if !"\\*([V"" .if n Vol.\& +.if !"\\*([V"" \\f3\\*([V\\f1\c +.if !"\\*([N"" (\\*([N)\c +.if !"\\*([P"" \ +\{\ +. ie \\n([P>0 \ pp.\& +. el \ p.\& +\\*([P +.\} +.if !"\\*([I"" .if "\\*([R"" \\*([I, +(\\*([D). +.if !"\\*([O"" \\*([O +.)f +.. +.de [2 \" --- book +.(f +.ip "\\*([F.\0" +\\*([A, \\f2\\*([T,\\f1 +\\*([I\c +.if !"\\*([C"" , \\*([C\c + (\\*([D). +.if !"\\*([G"" Gov't. ordering no. \\*([G +.if !"\\*([O"" \\*([O +.)f +.. +.de [3 \" --- article in book +.(f +.ip "\\*([F.\0" +\\*([A, \\*(lq\\*([T,\\*(rq +.if !"\\*([P"" pp. \\*([P +in \\f2\\*([B\\f1, \c +.if !"\\*([E"" ed. \\*([E,\c +.if !"\\*([I"" \\*([I\c +.if !"\\*([C"" , \\*([C\c + (\\*([D). +.if !"\\*([O"" \\*([O +.)f +.. +.de [4 \" --- report +.(f +.ip "\\*([F.\0" +\\*([A, \\*(lq\\*([T,\\*(rq +\\*([R\c +.if !"\\*([G"" \& (\\*([G)\c +.if !"\\*([I"" , \\*([I\c +.if !"\\*([C"" , \\*([C\c + (\\*([D). +.if !"\\*([O"" \\*([O +.)f +.. +.de [5 \" --- tm style +.(f +.ip "\\*([F.\0" +\\*([A, \\f2\\*([T\\f1, +.ie \\n(TN \\*([M. +.el Bell Laboratories internal memorandum (\\*([D). +.)f +.. +.de ]< +.$p References +.lp +.rm (f )f +.. +.de ]> +.sp +.. +.de ]- +.rm [V [P [A [T [N [C [B [O [R [I [E [D +.. +.nr c. \n(_0 diff --git a/usr/src/share/me/revisions b/usr/src/share/me/revisions new file mode 100644 index 0000000000..e144063c48 --- /dev/null +++ b/usr/src/share/me/revisions @@ -0,0 +1,230 @@ +2.28 12 May 86 +-- Fix footnotes if no -rv flag specified + +2.27 17 Apr 86 +-- Assume non-C/A/T typesetters -- use -rv2 to get old function + +2.26 27 Mar 86 +-- Always go into fill mode in .sh; necessary to get output format + correct. + +2.25 3 Mar 86 +-- Drop basic unit scaling on .sz and .ps requests; this confuses some + versions of troff. + +2.24 7 Jan 86 +-- Merge ditroff and troff versions. +-- Add support for pic, gremlin, and ideal. +-- Add .lh macro to print a letterhead. +-- Adjust .bi (bold italics) to be more device resolution independent. + +2.23 23 Jun 85 +-- Allow .]< to initialize refer macros (as well as .]-). + +2.22 27 Apr 85 +-- Fix incorrect comment strip in $p macro. +-- Drop into fill mode in .TS so that text boxes will work properly. + +2.21 4 Mar 85 +-- Change \*- macro from \- to \(em in troff. +-- Change block indent (\n(bi) from 4n to 4m to look better in troff. + +2.20 18 Feb 85 +-- Don't reset ii register in .bu or .np + +2.19 14 Feb 85 +-- add .bu and .sm macros (bullet and smaller). +-- have .np take a fixed .ip width. + +2.18 14 Feb 85 +-- Avoid cut marks on laser printers. + +2.17 14 Feb 85 +-- Some bug fixes as reported from many places. + +2.16 11 Oct 84 +-- Improve some tracing. +-- Minor improvements from rrh. + +2.15 10 Apr 83 +-- Fix a name conflict between .sh and floating keeps (as suggested + by Hy Murviet). + +2.14 28 Dec 81 +-- Integrate the refer macros into -me. This is basically a cheap + and dirty modification of the -ms version, and is probably not + terribly compatible with the usual -me standards. This can be + tuned later if needed. + +2.13 22 Dec 81 +-- Allow the -rb flag to set the font you want for bold font -- + set it to font . Default 2 (italic) in nroff, 3 (bold) in + troff. + +2.12 20 Mar 81 +-- Remove silly "." at top of page on dumb terminals -- lpr is smarter + now. + +2.11 19 Mar 81 +-- Fixed indexes to indent on second line. + +2.10 26 Feb 81 +-- Improvement to nested index solution, now works for ()b & ()z. + +2.9 10 Dec 80 +-- More stuff to make indices inside keeps work correctly. + +2.8 10 Nov 80 +-- Had .)c do a .br to insure that the final line is forced out. + +2.7 24 Sep 80 +-- Fixed bug in 2.6 + +2.6 23 Sep 80 +-- Fixed problem introduced by 2.2 which occured in footnotes and + index entries in filled keeps + +2.5 29 Aug 80 +-- Changed umlaut to not be so tricky -- it seems to backfire. + +2.4 25 Aug 80 +-- Fixed bug in indices caused by 2.2. + +2.3 20 Aug 80 +-- Fixed bug in footnotes caused by 2.2. +-- Changed temp file names that macros that do dynamic loading rename + themselves to. For example, if you say '.TS ... .(f' when both of + them have been used for the first time, the @T macro got used twice. + +2.2 18 Aug 80 +-- Suspended footnote & index processing until final output + (so that they will work properly in keeps). + +2.1 18 Aug 80 +-- Release 2. No changes. + +Mod 28 18 Aug 80 +-- If \nv is set on entry, handle .po differently (for vtroff). +-- Allow ".nr fi 0". + +Mod 27 30 Jun 80 +-- Put in a cludge to try to make multi-columned output work + with wide floating keeps. Moves all wide keeps to the top + of the next real page. + +Mod 26 9 Nov 79 +-- Fixed footnote bug that caused the first line of footnotes + that were broken across a page to be indented. + +Mod 25 1 Oct 79 +-- Fixed footnote bug that caused footnotes invoked at the + top of pages to come out in bold font. +-- Fixed equation bug that caused equations at the top of + page to be improperly centered. + +Mod 24 27 Sep 79 +-- Changed delimiter in all \w's to " from ', to allow for + apostrophes in labels. +-- Increased footnote fudge factor. +-- Changed \x factor in \*[ & \*< to be one half previous value. + +Mod 23 24 Aug 79 +-- Changed .ip to start new line if the tag is too long for + the space provided. + +Mod 22 11 Jul 79 +-- Changed .ac to handle new paper (with second parameter + == "*"). + +Mod 21 24 Apr 79 +-- Changed \*[ and \*< to use \x -- to avoid line overlap. + +Mod 20 6 Apr 79 +-- Changed 12-pitch DTC terminals to still space 1/6 inch (instead + of 1/8 inch), unless the 'x' register is non-zero -- do-able with + the -rx1 option on the nroff command line. + +Mod 19 28 Mar 79 +-- Had .ep do a .rs, to avoid occasional problems (like with + .+c (again). +-- Added the 'X' register: if non-zero on startup on a 12-pitch + terminal, it outputs 6 LPI instead of 8 LPI. + +Mod 18 26 Mar 79 +-- Had .+c reset indent, to solve problems of prelim material + after a .ip (as with references) + +Mod 17 19 Mar 79 +-- Fixed a bug in .++ which caused it to renumber pages incorrectly, + the result of nroff starting a new page immediately upon reaching + the end of the previous page (damn!). + +Mod 16 8 Mar 79 +-- Fixed a bug in .++ which caused it to change page number formats + before forcing out the page. +-- Changed tmac.e so that extra '.so's to the package will next to + 'null.me'. +-- Changed .sh so that a title of "_" will cause section depth change + side-effects only (base indent will remain the same, and no output + will occur). + +Mod 15a 7 Mar 79 +-- Fixed a bug in Mod 15 which caused .ip's to fail. + +Mod 15 2 Mar 79 +-- Changed .@p to do paragraph indents normally in keeps, which + will override the indent parameter in keeps with paragraph + forms in them (use .ba to fix this). + +Mod 14 23 Feb 79 +-- Fixed .ip so it would hyphenate correctly. + +Mod 13 16 Feb 79 +-- Added .rs before eqn title output to fix vertical centering + problem. + +Mod 12 15 Feb 79 +-- Changed NROFF bold font to be regular .ul (.cu is a pain). +-- Changed .sh to output regular spaces instead of unpaddable + spaces. +-- Fixed bug in .1c with bad line length (didn't reset \n($l). + +Mod 11 13 Feb 79 +-- Added hook to .$c to call .$C (for index entries or whatever). + +Mod 10 12 Feb 79 +-- Had .xp print in current environment and not reset to single + spacing, to allow more control over output format. + +Mod 9 26 Dec 78 +-- Fixed yet another problem with equation spacing. + +Mod 8 18 Dec 78 +-- Fixed .@q to solve a problem with \n(dn getting lost on + equations at top of page. + +Mod 7 11 Dec 78 +-- Had .@q (equation output) move to end of equation after + equation output (eqn doesn't seem to space quite right). + +Mod 6 27 Nov 78 +-- Fixed the umlaut on DTC output to be prettier. + +Mod 5 5 Nov 78 +-- Fixed a bug with the second parameter to .ip. + +Mod 4 2 Nov 78 +-- Added .uh command (unnumbered heading). +-- Changed .$p and .sh accordingly. + +Mod 3 2 Oct 78 +-- Fixed .ne command in .$p (print section headings). + +Mod 2 25 Sep 78 +-- Changed .np to use () instead of []. + +Mod 1 12 Sep 78 +-- Fixed footnote fudge factor (curse NROFF!!) +-- Put "needs" on .(z, .)z. + +Mod 0 11 Sep 78 diff --git a/usr/src/share/me/sh.me b/usr/src/share/me/sh.me new file mode 100644 index 0000000000..b1380bb7c8 --- /dev/null +++ b/usr/src/share/me/sh.me @@ -0,0 +1,142 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)sh.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de sh \" *** section heading +.fi +.if (\\n(si>0)&(\\n(si<1n) \ +. nr si \\n(sin +.ce 0 +.@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.if !"\\$2"_" \ +\{\ +. ds |n \&\\$2 +. $p "\\*(|n" "\\*($n" \\n($0 +. $0 "\\*(|n" "\\*($n" \\n($0 +. rm |n +.\} +.nr $p 0 1 \" reset .np count +.. +.de @d \" --- change section depth +.if !""\\$1" \ +. nr $0 \\$1 +.if \\n($0&(\\n(.$>1) \ +. nr $\\n($0 \\$2 +.ds $n \&\" +.ie \\n($0>=1 \ +\{\ +. if '\\n($1'0' \ +. nr $1 1 +. if (\\n(.$>=3) .if !"\\$3"-" \ +. nr $1 \\$3 +. as $n \\n($1 +.\} +.el \ +. nr $1 0 +.ie \\n($0>=2 \ +\{\ +. if '\\n($2'0' \ +. nr $2 1 +. if (\\n(.$>=4) .if !"\\$4"-" \ +. nr $2 \\$4 +. as $n .\\n($2 +.\} +.el \ +. nr $2 0 +.ie \\n($0>=3 \ +\{\ +. if '\\n($3'0' \ +. nr $3 1 +. if (\\n(.$>=5) .if !"\\$5"-" \ +. nr $3 \\$5 +. as $n .\\n($3 +.\} +.el \ +. nr $3 0 +.ie \\n($0>=4 \ +\{\ +. if '\\n($4'0' \ +. nr $4 1 +. if (\\n(.$>=6) .if !"\\$6"-" \ +. nr $4 \\$6 +. as $n .\\n($4 +.\} +.el \ +. nr $4 0 +.ie \\n($0>=5 \ +\{\ +. if '\\n($5'0' \ +. nr $5 1 +. if (\\n(.$>=7) .if !"\\$7"-" \ +. nr $5 \\$7 +. as $n .\\n($5 +.\} +.el \ +. nr $5 0 +.ie \\n($0>=6 \ +\{\ +. if '\\n($6'0' \ +. nr $6 1 +. if (\\n(.$>=8) .if !"\\$8"-" \ +. nr $6 \\$8 +. as $n .\\n($6 +.\} +.el \ +. nr $6 0 +.. +.de sx \" *** heading up, no increment (2.1.1 -> 2.1) +.ce 0 +.ul 0 +.nr _0 \\n($0-1 +.if \\n(.$ .nr _0 +1 +.if \\n(.$ .nr _0 \\$1 +.@d \\n(_0 +.rr _0 +.$p "" "" \\n($0 +.nr $p 0 1 \" reset .np count +.. +.de uh \" *** unnumbered section heading +.$p "\\$1" +.$0 "\\$1" +.. +.if \n(sf<=0 \ +. nr sf 8 \" section font -- Times Bold +.if \n(sp<=0 \ +. nr sp 10 \" section title pointsize +.if \n(ss<=0 \ +. nr ss 12p \" section prespacing +.if \n(si<=0 \ +. nr si 0 \" section indent +.nr c. \n(_0 diff --git a/usr/src/share/me/strip.sed b/usr/src/share/me/strip.sed new file mode 100644 index 0000000000..9ef6802891 --- /dev/null +++ b/usr/src/share/me/strip.sed @@ -0,0 +1,44 @@ +#! /bin/sed -f +# +# Copyright (c) 1988 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)strip.sed 5.3 (Berkeley) 4/17/91 +# + +/%beginstrip%/{ + h + s/.*/.\\" This version has had comments stripped; an unstripped version is available./p + g +} +/%beginstrip%/,$s/[. ][ ]*\\".*// +/^$/d +/\\n@/d diff --git a/usr/src/share/me/summary.external b/usr/src/share/me/summary.external new file mode 100644 index 0000000000..faed3e90f4 --- /dev/null +++ b/usr/src/share/me/summary.external @@ -0,0 +1,238 @@ +" F\(sc comment (to end of line) +# S optional delayed text tag string +$ F\(sc interpolate argument +$0 R section depth +$0\(dg M invoked after section title printed +$1 R first section number +$1\(dg M invoked before printing depth 1 section +$2 R second section number +$2\(dg M invoked before printing depth 2 section +$3 R third section number +$3\(dg M invoked before printing depth 3 section +$4 R fourth section number +$4\(dg M invoked before printing depth 4 section +$5 R fifth section number +$5\(dg M invoked before printing depth 5 section +$6 R sixth section number +$6\(dg M invoked before printing depth 6 section +$C\(dg M called at beginning of chapter +$H\(dg M text header +$R\(dd R relative vertical spacing in displays +$c R current column number +$c\(dd M print chapter title +$d R delayed text number +$f R footnote number +$f\(dd M print footer +$h\(dd M print header +$i R paragraph base indent +$l R column width +$m R number of columns in effect +$n S section name +$p R numbered paragraph number +$p\(dd M print section heading (internal macro) +$r\(dd R relative vertical spacing in text +$s R column indent +$s\(dd M footnote separator (from text) +% R\(sc current page number +& F\(sc zero width character, useful for hiding controls +( F\(sc interpolate special character +(b M begin block +(c M begin centered block +(d M begin delayed text +(f M begin footnote +(l M begin list +(q M begin quote +(space) F\(sc unpaddable space +(x M begin index entry +(z M begin floating keep +)b M end block +)c M end centered block +)d M end delayed text +)f M end footnote +)l M end list +)q M end quote +)x M end index entry +)z M end floating keep +* F\(sc interpolate string +* S optional footnote tag string +++ M set paper section type ++c M begin chapter +, S cedilla +- F\(sc minus sign +- S 3/4 em dash +0 F\(sc unpaddable digit-width space +1c M revert to single columned output +2c M begin two columned output +: S umlat +< S begin subscript +> S end subscript +EN M end equation +EQ M begin equation +L F\(sc vertical line drawing function +TE M end table +TH M end header of table +TS M begin table +[ S begin superscript +\&.$ R\(sc number of arguments to macro +\&.i R\(sc current indent +\&.l R\(sc current line length +\&.s R\(sc current point size +\&\' S acute accent +\&\` S grave accent +\' F\(sc acute accent +\` F\(sc grave accent +] S end superscript +^ F\(sc 1/12 em narrow space +^ S caret +ac M ACM mode +ad M\(sc set text adjustment +af M\(sc assign format to register +am M\(sc append to macro +ar M set page numbers in arabic +as M\(sc append to string +b M bold font +ba M set base indent +bc M begin new column +bi M bold italic +bi R display (block) indent +bl M blank lines (even at top of page) +bm R bottom title margin +bp M\(sc begin page +br M\(sc break (start new line) +bs R display (block) pre/post spacing +bt R block keep threshold +bx M boxed +c F\(sc continue input +ce M\(sc center lines +ch R current chapter number +de M\(sc define macro +df R display font +ds M\(sc define string +dw R\(sc current day of week +dw S current day of week +dy R\(sc day of month +e F\(sc printable version of \e +ef M set footer (even numbered pages only) +eh M set header (even numbered pages only) +el M\(sc else part of conditional +ep M end page +es R equation pre/post space +f F\(sc inline font change +fc M\(sc set field characters +ff R footnote font +fi M\(sc fill output lines +fi R footnote indent (first line only) +fm R footer margin +fo M set footer +fp R footnote pointsize +fs R footnote prespace +fu R footnote undent (from right margin) +h F\(sc local horizontal motion +hc M\(sc set hyphenation character +he M set header +hl M draw horizontal line +hm R header margin +hx M suppress headers and footers on next page +hy M\(sc set hyphenation mode +i M italic font +ie M\(sc conditional with else +if M\(sc conditional +ii R indented paragraph indent +in M\(sc indent (transient, use .ba for pervasive) +ip M begin indented paragraph +ix M indent, no break +l F\(sc horizontal line drawing function +lc M\(sc set leader repetition character +ll M set line length +lo M load local macros +lp M begin left justified paragraph +lq S left quote marks +ls M\(sc set multi-line spacing +m1 M set space from top of page to header +m2 M set space from header to text +m3 M set space from text to footer +m4 M set space from footer to bottom of page +mc M\(sc insert margin character +mk M\(sc mark vertical position +mo R\(sc month of year +mo S current month +n F\(sc interpolate number register +n1 M number lines in margin +n2 M number lines in margin +na M\(sc turn off text adjustment +ne M\(sc need vertical space +nf M\(sc don't fill output lines +nh M\(sc turn off hyphenation +np M begin numbered paragraph +nr M\(sc set number register +ns M\(sc no space mode +o S circle (e.g., for Norse A) +of M set footer (odd numbered pages only) +oh M set header (odd numbered pages only) +pa M begin page +pd M print delayed text +pf R paragraph font +pi R paragraph indent +pl M\(sc set page length +pn M\(sc set next page number +po M\(sc page offset +po R simulated page offset +pp M begin paragraph +pp R paragraph pointsize +ps R paragraph prespace +q M quoted +qa S for all +qe S there exists +qi R quote indent (also shortens line) +qp R quote pointsize +qs R quote pre/post space +r M roman font +rb M real bold font +re M reset tabs +rm M\(sc remove macro or string +rn M\(sc rename macro or string +ro M set page numbers in roman +rq S right quote marks +rr M\(sc remove register +rs M\(sc restore spacing +rt M\(sc return to vertical position +s F\(sc inline size change +sc M load special characters +sf R section title font +sh M begin numbered section +si R relative base indent per section depth +sk M skip next page +so M\(sc source input file +so R additional section title offset +sp M\(sc vertical space +sp R section title pointsize +ss R section prespace +sx M change section depth +sz M set pointsize and vertical spacing +ta M\(sc set tab stops +tc M\(sc set tab repetition character +td S today's date +tf R title font +th M set thesis mode +ti M\(sc temporary indent (next line only) +tl M\(sc three part title +tm R top title margin +tp M begin title page +tp R title pointsize +tr M\(sc translate +u M underlined +uh M unnumbered section +ul M\(sc underline next line +v F\(sc local vertical motion +v S czeck ``e'' +w F\(sc return width of string +xl M set line length (local) +xp M print index +xs R index entry prespace +xu R index undent (from right margin) +yr R\(sc year (last two digits only) +zs R floating keep pre/post space +{ F\(sc begin conditional group +| F\(sc 1/6 em narrow space +} F\(sc end conditional group +~ S tilde diff --git a/usr/src/share/me/tbl.me b/usr/src/share/me/tbl.me new file mode 100644 index 0000000000..f6c55318ae --- /dev/null +++ b/usr/src/share/me/tbl.me @@ -0,0 +1,143 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)tbl.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.de TS \" *** table start +.sp \\n(bsu +.@C 1 +.fi \" drop into fill mode for text boxes +.if "\\$1"H" \ +\{\ +. di |h \" save header part +. nr ?T 1 +.\} +.ls 1 +.ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line +.. +.de TH \" *** end header part of table +.nr T. 0 +.T# 0 +.di +.nr _i \\n(.i +.in 0 +.|h \" put in the initial header +.in \\n(_iu +.rr _i +.mk #T +.. +.de TE \" *** table end +.nr ?T 0 +.ch @f -\\n(_bu \" reset pseudo-trap +.ev +.sp \\n(bsu+\\n(.Lv-1v +.re +.rr 31 +.rr 32 +.rr 33 +.rr 34 +.rr 35 +.rr 36 +.rr 37 +.rr 38 +.rr 39 +.rr 40 +.rr 41 +.rr 42 +.rr 43 +.rr 44 +.rr 45 +.rr 46 +.rr 47 +.rr 48 +.rr 49 +.rr 50 +.rr 51 +.rr 52 +.rr 53 +.rr 54 +.rr 55 +.rr 56 +.rr 57 +.rr 58 +.rr 59 +.rr 60 +.rr 61 +.rr 62 +.rr 63 +.rr 64 +.rr 65 +.rr 66 +.rr 67 +.rr 68 +.rr 69 +.rr 70 +.rr 71 +.rr 72 +.rr 73 +.rr 74 +.rr 75 +.rr 76 +.rr 77 +.rr 78 +.rr 79 +.rr 80 +.rr 81 +.rr 82 +.rr 83 +.rr 84 +.rr 85 +.rr 86 +.rr 87 +.rr 88 +.rr 89 +.rr 90 +.rr 91 +.rr 92 +.rr 93 +.rr 94 +.rr 95 +.rr 96 +.rr 97 +.rr 98 +.rr 99 +.rr #I +.rr #T +.rr #a +.rr ## +.rr #- +.rr #^ +.rr T. +.. +.nr c. \n(_0 diff --git a/usr/src/share/me/test/test.accent b/usr/src/share/me/test/test.accent new file mode 100644 index 0000000000..5b0da66f7f --- /dev/null +++ b/usr/src/share/me/test/test.accent @@ -0,0 +1,7 @@ +.sc +.sp 4 +.b e\\*'migre +.sp 4 +.b emigre\\*` +.sp 4 +.b e\\*'migre\\*` diff --git a/usr/src/share/me/test/test.umlaut b/usr/src/share/me/test/test.umlaut new file mode 100644 index 0000000000..67358d2f2d --- /dev/null +++ b/usr/src/share/me/test/test.umlaut @@ -0,0 +1,39 @@ +.sc +.lp +.ec $ +umlaut is: $*: +.ec +.sp +\w"umlau\*:t" +.sp +.XX "umlau\*:t" +null +.sp +.de XX +null +.. +.XX "umlau\\\\*:t" +.br +.XX "umlau\\*:t" +.br +.XX "umlau\*:t" +.sp +.de XX +.ec ^ +$1 = ^$1 +.br +$2 = ^$2 +.ec +.. +.XX "umlau\*:t" +.sp +.de XX +$1 = \\$1 +.br +$2 = \\$2 +.. +.XX "umlau\*:t" +.sp +.i "umlau\*:t" +.sp +.b "umlau\*:t" diff --git a/usr/src/share/me/thesis.me b/usr/src/share/me/thesis.me new file mode 100644 index 0000000000..6db988c51e --- /dev/null +++ b/usr/src/share/me/thesis.me @@ -0,0 +1,53 @@ +.nr _0 \n(c. +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)thesis.me 5.1 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.\" Setup for thesis. +.\" This file should be modified to keep up with the standard +.\" for a doctoral thesis at Berkeley. Other macros which may +.\" be useful for a thesis are defined here. +.\" +.nr tf 1 \" set titles in Roman +.he '''%' +.if n .if \n(_o \ +. po 1.5i +.if t .po 1.125i \" + .5 inch (off 8i paper roll) = 1.5i +.ll 5.75i \" allow 1/4 inch fudge +.if n .if 1n=0.1i \ +. ll 5.8i \" make it even character amount +.m1 1i +.nr ?t 1 +.ls 2 +.nr c. \n(_0 diff --git a/usr/src/share/me/tmac.e b/usr/src/share/me/tmac.e new file mode 100644 index 0000000000..f703c0ae0f --- /dev/null +++ b/usr/src/share/me/tmac.e @@ -0,0 +1,1190 @@ +.nr _0 \n(.c +.\" Copyright (c) 1988 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)tmac.e 2.35 (Berkeley) 4/17/91 +.\" +.\" %beginstrip% +.\" +.\"********************************************************************** +.\"* * +.\"* ****** - M E N R O F F / T R O F F M A C R O S ****** * +.\"* * +.\"* Produced for your edification and enjoyment by: * +.\"* Eric Allman * +.\"* Electronics Research Laboratory * +.\"* U.C. Berkeley. * +.\"* current address: * +.\"* Britton-Lee, Inc. * +.\"* 1919 Addison Street Suite 105 * +.\"* Berkeley, California 94704 * +.\"* * +.\"* VERSION 2.35 First Release: 11 Sept 1978 * +.\"* See file \*(||/revisions for revision history * +.\"* * +.\"* Documentation is available. * +.\"* * +.\"********************************************************************** +.\" +.\" Code on .de commands: +.\" *** a user interface macro. +.\" &&& a user interface macro which is redefined +.\" when used to be the real thing. +.\" $$$ a macro which may be redefined by the user +.\" to provide variant functions. +.\" --- an internal macro. +.\" +.\" library directory for sourced files: +.ds || /usr/share/me +.if \n@>0 .ds || . +.\" +.if !\n(.V .tm You are using the wrong version of NROFF/TROFF!! +.if !\n(.V .tm This macro package works only on the version seven +.if !\n(.V .tm release of NROFF and TROFF. +.if !\n(.V .ex +.if \n(pf \ +. nx \*(||/null.me +.\" *** INTERNAL GP MACROS *** +.de @C \" --- change ev's, taking info with us +.nr _S \\n(.s +.nr _V \\n(.v +.nr _F \\n(.f +.nr _I \\n(.i +.ev \\$1 +.ps \\n(_S +.vs \\n(_Vu +.ft \\n(_F +'in \\n(_Iu +.xl \\n($lu +.lt \\n($lu +.rr _S +.rr _V +.rr _F +.rr _I +.ls 1 +'ce 0 +.. +.de @D \" --- determine display type (Indent, Left, Center) +.ds |p "\\$3 +.nr _d \\$1 +.ie "\\$2"C" \ +. nr _d 1 +.el .ie "\\$2"L" \ +. nr _d 2 +.el .ie "\\$2"I" \ +. nr _d 3 +.el .ie "\\$2"M" \ +. nr _d 4 +.el \ +. ds |p "\\$2 +.. +.de @z \" --- end macro +.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a +.if !"\\n(.z"" \ +\{\ +. tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z) +. di +. ex +.\} +.if \\n(?a \ +. bp \" force out final table +.rm bp +.rm @b\" \" don't start another page +.if t \ +. wh -1p @m +.br +.if \n@>1 .tm << @z +.. +.de @I \" --- initialize processor +.rm th +.rm ac +.rm lo +.rm sc +.rm @I +.. +.\" *** STANDARD HEADERS AND FOOTERS *** +.de he \" *** define header +.ie !\\n(.$ \ +\{\ +. rm |4 +. rm |5 +.\} +.el \ +\{\ +. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.. +.de eh \" *** define even header +.ie !\\n(.$ \ +. rm |4 +.el \ +. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de oh \" *** define odd header +.ie !\\n(.$ \ +. rm |5 +.el \ +. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de fo \" *** define footer +.ie !\\n(.$ \ +\{\ +. rm |6 +. rm |7 +.\} +.el \ +\{\ +. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.. +.de ef \" *** define even foot +.ie !\\n(.$ \ +. rm |6 +.el \ +. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de of \" *** define odd footer +.ie !\\n(.$ \ +. rm |7 +.el \ +. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de ep \" *** end page (must always be followed by a .bp) +.if \\n(nl>0 \ +\{\ +. wh 0 +. rs +. @b +.\} +.. +.\" *** INTERNAL HEADER AND FOOTER MACROS *** +.de @h \" --- header +.if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w +.if (\\n(.i+\\n(.o)>=\\n(.l \ +. tm Line \\n(c. -- Offset + indent exceeds line length +.if t .if (\\n(.l+\\n(.o)>7.75i \ +. tm Line \\n(c. -- Offset + line length exceeds paper width +.\" initialize a pile of junk +.nr ?h \\n(?H \" transfer "next page" to "this page" +.rr ?H +.nr ?c \\n(?C +.rr ?C +.rn |4 |0 +.rn |5 |1 +.rn |6 |2 +.rn |7 |3 +.nr _w 0 \" reset max footnote width +.nr ?W 0 \" no wide floats this page (yet) +.nr ?I 1 +.\" begin actual header stuff +.ev 2 +.rs +.if t .@m \" output cut mark +.if \\n(hm>0 \ +. sp |\\n(hmu \" move to header position +.@t $h \" output header title +.if \\n(tm<=0 \ +. nr tm \n(.Vu +.sp |\\n(tmu \" move to top of text +.ev +.mk _k \" for columned output +.if \\n(?n .nm 1 \" restore line numbering if n1 mode +.nr $c 1 \" set first column +.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm +.ie \\n(?s \ +\{\ +. rr ?s +. rs +' @b +.\} +.el \ +. @n \" begin the column +.if \n@>2 .tm << @h +.. +.if \nv=2 \ +\{\ +. de @m \" --- output cut mark (only on C/A/T-style) +. @O 0 +. lt 7.5i +. tl '\(rn''\(rn' +. @O +. lt +.. +.\} +.de @n \" --- new column or page +.if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o +.if \\n(bm<=0 \ +. nr bm \\n(.Vu +.if (\\n(_w<=\\n($l)&(\\n(?W=0) \ +\{\ +. nr _b (\\n(ppu*\\n($ru)/2u \" compute fudge factor (must be < 1P) +. if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \ +. nr _b (\\n(ppu*\\n($ru)-\n(.Vu +. nr _b +\\n(bmu +.\} +.nr _B \\n(_bu +.ch @f +.wh -\\n(_bu @f +.nr _b +(\\n(ppu*\\n($ru) \" add 1 paragraph v in case of sweep past +.if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B +.nr ?f 0 \" reset footnote flag +.if \\n(?o \ +\{\ +. (f _ \" reprocess footnotes which run off page +. nf +. |o +. fi +. )f +. rm |o +.\} +.nr ?o 0 +.if \\n(?T \ +\{\ +. nr _i \\n(.i +. in \\n($iu +. |h \" output the table header +. in \\n(_iu +. rr _i +. mk #T \" for tbl commands +. ns +.\} +.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \ +\{\ +. nr ?a 0 \" output floating keep +. @k |t +. if \\n(?w \ +. mk _k \" don't overstrike wide keeps +. nr ?w 0 +.\} +.os +.$H \" special column header macro +.ns +.. +.de @f \" --- footer +.if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f +.if \n@>2 .nr VL \\n(.pu-\\n(nlu +.if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL +.ec +.if \\n(?T \ +\{\ +. nr T. 1 \" for tbl commands (to output bottom line) +. T# 1 \" output the sides and bottom lines +. br +.\} +.ev 2 +.ce 0 +.if \\n(?b \ +\{\ +. nr ?b 0 +. @k |b\" \" output bottom of page tables +.\} +.if \\n(?f \ +. @o \" output footnote if present +.ie \\n($c<\\n($m \ +. @c \" handle new column +.el \ +. @e \" new page +.ev +.if \n@>2 .tm << @f +.. +.de @o \" --- output footnote +.nf +.ls 1 +.in 0 +.if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B +.wh -\\n(_Bu @r +.|f +.fi +.if \n@>2 .tm @o triggered @r (?o) = \\n(?o +.if \\n(?o \ +\{\ +. di \" just in case triggered @r +. if \\n(dn=0 \ +\{\ +. rm |o +. nr ?o 0 +. \} +. nr dn \\n(_D +. rr _D +.\} +.rm |f +.ch @r +.. +.de @c \" --- new column +.if \n@>2 .tm >> @c %=\\n% +.rs +.sp |\\n(_ku +.@O +\\n($lu+\\n($su +.nr $c +1 +.@n +.. +.de @e \" --- end page +.if \n@>2 .tm >> @e +.@O \\n(_ou +.rs +.sp |\\n(.pu-\\n(fmu-(\\n(tpu*\\n($ru) \" move to footer position +.@t $f \" output footer title +.nr ?h 0 +.bp +.. +.de @t \" --- output header or footer title +.if !\\n(?h \ +\{\ +. sz \\n(tp \" set header/footer type fonts, etc. +. @F \\n(tf +. lt \\n(_Lu \" make title span entire page +. nf +. \\$1 +. br +.\} +.. +.de $h \" $$$ print header +.rm |z +.if !\\n(?c \ +\{\ +. if e .ds |z "\\*(|0 +. if o .ds |z "\\*(|1 +.\} +.if !\(ts\\*(|z\(ts\(ts \ +' tl \\*(|z +.rm |z +.. +.de $f \" $$$ print footer +.rm |z +.if \\n(?c \ +\{\ +. if e .ds |z "\\*(|0 +. if o .ds |z "\\*(|1 +.\} +.if \(ts\\*(|z\(ts\(ts \ +\{\ +. if e .ds |z "\\*(|2 +. if o .ds |z "\\*(|3 +.\} +.if !\(ts\\*(|z\(ts\(ts \ +' tl \\*(|z +.rm |z +.. +.de @r \" --- reprocess overflow footnotes +.if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b +.di |o \" save overflow footnote +.nr ?o 1 +.nr _D \\n(dn +.ns +.. +.\" *** COMMANDS WITH VARIANT DEFINITIONS *** +.rn bp @b \" --- begin page +.de bp \" *** begin new page (overrides columns) +.nr $c \\n($m \" force new page, not new column +.ie \\n(nl>0 \ +. @b \\$1 +.el \ +\{\ +. if \\n(.$>0 \ +. pn \\$1 +. if \\n(?I \ +. @h \" 'spring' the header trap +.\} +.br +.wh 0 @h \" reset header +.. +.rn ll xl \" *** special line length (local) +.de ll \" *** line length (global to environments) +.xl \\$1 +.lt \\$1 +.nr $l \\n(.l +.if (\\n($m<=1):(\\n($l>\\n(_L) \ +. nr _L \\n(.l +.. +.rn po @O \" --- local page offset +.de po \" *** page offset +.@O \\$1 +.nr _o \\n(.o +.. +.\" *** MISCELLANEOUS ROFF COMMANDS *** +.de hx \" *** suppress headers and footers next page +.nr ?H 1 +.. +.de ix \" *** indent, no break +'in \\$1 +.. +.de bl \" *** contiguous blank lines +.br +.ne \\$1 +.rs +.sp \\$1 +.. +.de n1 \" *** line numbering 1 +.nm 1 +.xl -\w'0000'u +.nr ?n 1 +.. +.de n2 \" *** line numbering 2 +.nm \\$1 +.ie \\n(.$ \ +. xl -\w'0000'u +.el \ +. xl \\n($lu +.. +.de pa \" *** new page +.bp \\$1 +.. +.de ro \" *** roman page numbers +.af % i +.. +.de ar \" *** arabic page numbers +.af % 1 +.. +.de m1 \" *** position one space +.nr _0 \\n(hmu +.nr hm \\$1v +.nr tm +\\n(hmu-\\n(_0u +.rr _0 +.. +.de m2 \" *** position two space +.nr tm \\n(hmu+\\n(tpp+\\$1v +.. +.de m3 \" *** position three space +.nr bm \\n(fmu+\\n(tpp+\\$1v +.. +.de m4 \" *** position four space +.nr _0 \\n(fmu +.nr fm \\$1v +.nr bm +\\n(fmu-\\n(_0u +.. +.de sk \" *** leave a blank page (next page) +.if \\n(.$>0 \ +. tm Line \\n(c. -- I cannot skip multiple pages +.nr ?s 1 +.. +.\" *** MISCELLANEOUS USER SUPPORT COMMANDS *** +.de re \" *** reset tabs (TROFF defines 15 stops default) +.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +.. +.if t .ig +.de re \" *** reset tabs (NROFF version) +.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +.. +.de ba \" *** set base indent +.ie \\n(.$ \ +. nr $i \\$1n +.el \ +. nr $i \\n(siu*\\n($0u +.. +.de hl \" *** draw horizontal line +.br +\l'\\n(.lu-\\n(.iu' +.sp +.. +.\" *** PARAGRAPHING *** +.de pp \" *** paragraph +.lp \\n(piu +.. +.de lp \" *** left aligned paragraph +.@p +.if \\n(.$ \ +. ti +\\$1 +.nr $p 0 1 +.. +.de ip \" *** indented paragraph w/ optional tag +.if (\\n(ii>0)&(\\n(ii<1n) \ +. nr ii \\n(iin +.nr _0 \\n(ii +.if \\n(.$>1 \ +. nr _0 \\$2n +.@p \\n(_0u +.if \\w"\\$1" \ +\{\ +. ti -\\n(_0u +. ie \\w"\\$1">=\\n(_0 \ +\{\ +\&\\$1 +. br +. \} +. el \&\\$1\h'|\\n(_0u'\c +.\} +.rr _0 +.. +.de np \" *** numbered paragraph +.if \\n($p<0 \ +. nr $p 0 \" reset number after .bu +.nr $p +1 \" increment paragraph number +.@p \w'\0(000)\0'u +.ti -\w'\0(000)\0'u +\0(\\n($p)\h'|\w'\0(000)\0'u'\c +.. +.de bu \" *** bulleted paragraph +.br +.if \\n($p<0 \ +. ns \" don't space between .bu paragraphs +.nr $p 0-1 \" mark "bulleted paragraph" mode +.@p \w'\0\(bu\0'u +.ti -\w'\0\(bu\0'u +\0\(bu\0\c +.. +.de @p \" --- initialize for paragraph +.@I \" initialize macro processor +.if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation +.in \\n($iu+\\n(pou +.if \\n(.$ \ +. in +\\$1n +.ce 0 +.fi +.@F \\n(pf +.sz \\n(pp +.sp \\n(psu +.ne \\n(.Lv+\\n(.Vu +.ns +.. +.\" *** SECTION HEADINGS *** +.de sh \" &&& section heading +.rn sh @T +.so \\*(||/sh.me +.sh "\\$1" "\\$2" \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.rm @T +.. +.de $p \" $$$ print section heading +.if (\\n(si>0)&(\\n(.$>2) \ +. nr $i \\$3*\\n(si +.in \\n($iu +.ie !"\\$1\\$2"" \ +\{\ +. sp \\n(ssu \" one of them is non-null +. ne \\n(.Lv+\\n(.Vu+\\n(psu+(\\n(spu*\\n($ru*\\n(.Lu) +. ie \\n(.$>2 \ +. ti -(\\n(siu-\\n(sou) +. el \ +. ti +\\n(sou +. @F \\n(sf +. sz \\n(sp +. if \\$3>0 \ +. $\\$3 +. if \w"\\$2">0 \\$2. +. if \w"\\$1">0 \\$1\f1\ \ \& +.\} +.el \ +. sp \\n(psu +.@F \\n(pf +.sz \\n(pp +.. +.de uh \" *** unnumbered section heading +.rn uh @T +.so \\*(||/sh.me +.uh "\\$1" +.rm @T +.. +.\" *** COLUMNNED OUTPUT *** +.de 2c \" *** double columned output +.br +.if \\n($m>1 \ +. 1c \" revert to 1c if already 2c +.nr $c 1 +.nr $m 2 +.if \\n(.$>1 \ +. nr $m \\$2 +.if \\n(.$>0 \ +. nr $s \\$1n \" param 1: column seperation +.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m +.xl \\n($lu +.mk _k +.ns +.. +.de 1c \" *** single columned output +.br +.nr $c 1 +.nr $m 1 +.ll \\n(_Lu \" return to normal output +.sp |\\n(.hu +.@O \\n(_ou +.. +.de bc \" *** begin column +.sp 24i +.. +.\" *** FLOATING TABLES AND NONFLOATING BLOCKS *** +.de (z \" &&& begin floating keep +.rn (z @V +.so \\*(||/float.me +.(z \\$1 \\$2 +.rm @V +.. +.de )z \" &&& end floating keep +.tm Line \\n(c. -- unmatched .)z +.. +.de (t \" XXX temp ref to (z +.(z \\$1 \\$2 +.. +.de )t \" XXX temp ref to )t +.)z \\$1 \\$2 +.. +.de (b \" *** begin block +.br +.@D 3 \\$1 \\$2 +.sp \\n(bsu +.@( +.. +.de )b \" *** end block +.br +.@) +.if (\\n(bt=0):(\\n(.t<\\n(bt) \ +. ne \\n(dnu \" make it all on one page +.ls 1 +.nf +.|k +.ec +.fi +.in 0 +.xl \\n($lu +.ev +.rm |k +.sp \\n(bsu+\\n(.Lv-1v +.. +.de @( \" --- begin keep +.if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z +.@M +.di |k +\!'rs +.. +.de @M \" --- set modes for display +.nr ?k 1 +.@C 1 +.@F \\n(df +.vs \\n(.su*\\n($Ru +.nf +.if "\\*(|p"F" \ +. fi \" set fill mode if "F" parameter +.if \\n(_d=4 \ +. in 0 +.if \\n(_d=3 \ +\{\ +. in +\\n(biu +. xl -\\n(biu +.\} +.if \\n(_d=1 \ +. ce 10000 +.. +.de @) \" --- end keep +.br +.if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened +.nr ?k 0 +.di +.in 0 +.ce 0 +.. +.de (c \" *** begin block centered text +.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests +.di |c +.. +.de )c \" *** end block centered text +.if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c +.br \" force out final line +.di +.if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl +.ev 1 +.ls 1 +.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u +.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl +.nf +.|c +.ec +.in +.ls +.ev +.rm |c +.. +.\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS *** +.de (q \" *** begin block quote +.br +.@C 1 +.fi +.sp \\n(qsu +.in +\\n(qiu +.xl -\\n(qiu +.sz \\n(qp +.. +.de )q \" *** end block quote +.br +.ev +.sp \\n(qsu+\\n(.Lv-1v +.nr ?k 0 +.. +.de (l \" *** begin list +.br +.sp \\n(bsu +.@D 3 \\$1 \\$2 +.@M +.. +.de )l \" *** end list +.br +.ev +.sp \\n(bsu+\\n(.Lv-1v +.nr ?k 0 +.. +.\" *** PREPROCESSOR SUPPORT *** +.\" +.\" EQN +.\" +.de EQ \" &&& begin equation +.rn EQ @T +.so \\*(||/eqn.me +.EQ \\$1 \\$2 +.rm @T +.. +.\" +.\" TBL +.\" +.de TS \" &&& begin table +.rn TS @W +.so \\*(||/tbl.me +.TS \\$1 \\$2 +.rm @W +.. +.\" +.\" REFER +.\" +.de ]- \" &&& initialize reference +.rn ]- @] +.so \\*(||/refer.me +.]- +.rm @] +.. +.de ]< \" &&& initialize reference +.rn ]< @] +.so \\*(||/refer.me +.]< +.rm @] +.. +.if n .ds [. " [ +.if t .ds [. \s-2\v'-.4m'\f1 +.if n .ds .] ] +.if t .ds .] \v'.4m'\s+2\fP +.if n .ds <. " +.if t .ds <. . +.if n .ds >. . +.if t .ds >. " +.\" +.\" IDEAL +.\" +.de IS \" *** start ideal picture +.nr g7 \\n(.u +.ls 1 +.. +.de IF +.if \\n(g7 .fi +.ls +.. +.de IE \" *** end ideal picture +.if \\n(g7 .fi +.ls +.. +.\" +.\" PIC +.\" +.de PS \" *** start picture: $1=height, $2=width in units or inches +.if t \ +. sp 0.3 +.nr g7 \\$2 +.in (\\n(.lu-\\n(g7u)/2u +.ne \\$1u +.nr g7 \\n(.u +.ls 1 +.. +.de PE \" *** end picture +.ls +.in +.if \\n(g7 .fi +.if t .sp .6 +.. +.\" +.\" GREMLIN +.\" +.de GS \" *** start gremlin picture +.nr g7 (\\n(.lu-\\n(g1u)/2u +.if "\\$1"L" .nr g7 \\n(.iu +.if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u +.in \\n(g7u +.nr g7 \\n(.u +.ls 1 +.nf +.ne \\n(g2u +.. +.de GE \" *** end gremlin picture +.GF +.if t .sp .6 +.. +.de GF \" *** finish gremlin picture; stay at top +.ls +.in +.if \\n(g7 .fi +.. +.\" *** FONT AIDS *** +.de sz \" *** set point size and vertical spacing +.ps \\$1 +.vs \\n(.su*\\n($ru \" default vs at pointsize + 20% +.bd S B \\n(.su/3u +.. +.de r \" *** enter roman font +.nr _F \\n(.f +.ul 0 +.ft 1 +.if \\n(.$ \&\\$1\f\\n(_F\\$2 +.rr _F +.. +.de i \" *** enter italic +.nr _F \\n(.f +.ul 0 +.ft 2 +.if \\n(.$ \&\\$1\f\\n(_F\\$2 +.rr _F +.. +.de b \" *** enter boldface (underline in NROFF) +.nr _F \\n(.f +.ul 0 +.ft \\n($b +.if \\n(.$ \&\\$1\f\\n(_F\\$2 +.rr _F +.. +.de rb \" *** enter real boldface (not underlined in NROFF) +.nr _F \\n(.f +.ul 0 +.ft 3 +.if \\n(.$ \&\\$1\f\\n(_F\\$2 +.rr _F +.. +.de u \" *** enter underlined word +\&\\$1\l'|0\(ul'\\$2 +.. +.de q \" *** enter quoted word +\&\\*(lq\\$1\\*(rq\\$2 +.. +.de bi \" *** enter word in bold italics +.ft 2 +.ie t \&\k~\\$1\h'|\\n~u+(\\w' 'u/4u)'\\$1\fP\\$2 +.el \&\\$1\fP\\$2 +.. +.de bx \" *** enter boxed word +.ie \\n($T \&\f2\\$1\fP\\$2 +.el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2 +.. +.de sm \" *** print in smaller font +\s-1\\$1\\s0\\$2 +.. +.de @F \" --- change font (8 -> underlined, 0 -> no change) +.nr ~ \\$1 +.if \\n~>0 \ +\{\ +. ul 0 +. if \\n~=8 \ +. nr ~ \\n($b +. ft \\n~ +.\} +.rr ~ +.. +.\" *** FOOTNOTING *** +.de (f \" &&& begin footnote +.rn (f @U +.so \\*(||/footnote.me +.(f \\$1 \\$2 +.rm @U +.. +.de )f \" &&& end footnote +.tm Line \\n(c. -- unmatched .)f +.. +.de $s \" $$$ footnote separator +\l'2i' +.if n \ +. sp 0.3 +.. +.\" *** DELAYED TEXT *** +.de (d \" &&& begin delayed text +.rn (d @U +.so \\*(||/deltext.me +.(d \\$1 \\$2 +.rm @U +.. +.de )d \" &&& end delayed text +.tm Line \\n(c. -- unmatched .)d +.. +.\" *** INDEXES (TABLE OF CONTENTS) *** +.de (x \" &&& begin index +.rn (x @U +.so \\*(||/index.me +.(x \\$1 \\$2 +.rm @U +.. +.de )x \" &&& end index entry +.tm Line \\n(c. -- unmatched .)x +.. +.\" *** STUFF FOR "STANDARD" PAPERS *** +.de th \" *** set "thesis" mode +.so \\*(||/thesis.me +.rm th +.. +.de +c \" *** begin chapter +.ep \" force out footnotes +.if \\n(?o:\\n(?a \ +\{\ +. bp \" force out a table or more footnote +. rs +. ep +.\} +.nr ?C 1 +.nr $f 1 1 +.ds * \\*[1\\*]\k* +.if \\n(?R \ +. pn 1 +.bp +.in \\n($iu \" reset the indent +.rs +.ie \\n(.$ \ +. $c "\\$1" +.el \ +. sp 3 +.. +.de ++ \" *** declare chapter type +.nr _0 0 +.if "\\$1"C" \ +. nr _0 1 \" chapter +.if "\\$1"RC" \ +. nr _0 11 \" renumbered chapter +.if "\\$1"A" \ +. nr _0 2 \" appendix +.if "\\$1"RA" \ +. nr _0 12 \" renumbered appendix +.if "\\$1"P" \ +. nr _0 3 \" preliminary material +.if "\\$1"B" \ +. nr _0 4 \" bibliographic material +.if "\\$1"AB" \ +. nr _0 5 \" abstract +.if \\n(_0=0 \ +. tm Line \\n(c. -- Bad mode to .++ +.nr ?R 0 +.if \\n(_0>10 \ +.\{ +. nr ?R 1 +. nr _0 -10 +.\} +.nr ch 0 1 +.if (\\n(_0=3):(\\n(_0=5) \ +. pn 1 \" must do before .ep +.ep \" end page for correct page number types +.if \\n(_0=1 \ +\{\ +. af ch 1 +. af % 1 +.\} +.if \\n(_0=2 \ +\{\ +. af ch A +. af % 1 +.\} +.if \\n(_0=3 \ +. af % i +.if \\n(_0=4 \ +. af % 1 +.if \\n(_0=5 \ +. af % 1 +.if \\n(.$>1 \ +. he \\$2 +.if !\\n(_0=\\n(_M .if \\n(_M=3 \ +. pn 1 +.nr _M \\n(_0 +.rr _0 +.. +.de $c \" $$$ print chapter title +.sz 12 +.ft B +.ce 1000 +.if \\n(_M<3 \ +. nr ch +1 +.ie \\n(_M=1 CHAPTER\ \ \\n(ch +.el .if \\n(_M=2 APPENDIX\ \ \\n(ch +.if \w"\\$1" .sp 3-\\n(.L +.if \w"\\$1" \\$1 +.if (\\n(_M<3):(\w"\\$1") \ +. sp 4-\\n(.L +.ce 0 +.ft +.sz +.ie \\n(_M=1 \ +. $C Chapter \\n(ch "\\$1" +.el .if \\n(_M=2 \ +. $C Appendix \\n(ch "\\$1" +.. +.de tp \" *** title page +.hx +.bp +.br +.rs +.pn \\n% +.. +.de ac \" *** setup for ACM photo-ready paper +.rn ac @T +.so \\*(||/acm.me +.ac "\\$1" "\\$2" +.rm @T +.. +.de lo \" *** pull in the set of local macros +.\" all these macros should be named "*X", where X is any letter +.so \\*(||/local.me +.rm lo +.. +.de lh \" *** letterhead +.so \\*(||/letterhead.me +.. +.\" *** DATES *** +.if \n(mo=1 .ds mo January +.if \n(mo=2 .ds mo February +.if \n(mo=3 .ds mo March +.if \n(mo=4 .ds mo April +.if \n(mo=5 .ds mo May +.if \n(mo=6 .ds mo June +.if \n(mo=7 .ds mo July +.if \n(mo=8 .ds mo August +.if \n(mo=9 .ds mo September +.if \n(mo=10 .ds mo October +.if \n(mo=11 .ds mo November +.if \n(mo=12 .ds mo December +.if \n(dw=1 .ds dw Sunday +.if \n(dw=2 .ds dw Monday +.if \n(dw=3 .ds dw Tuesday +.if \n(dw=4 .ds dw Wednesday +.if \n(dw=5 .ds dw Thursday +.if \n(dw=6 .ds dw Friday +.if \n(dw=7 .ds dw Saturday +.ds td \*(mo \n(dy, 19\n(yr +.\" *** PARAMETRIC INITIALIZATIONS *** +.if (1m<0.1i)&(\nx!=0) \ +. vs 9p \" for 12-pitch DTC terminals +.rr x +.nr $r \n(.v/\n(.s \" ratio of vs to ps for .sz request +.nr $R \n($r \" ratio for displays & footnotes +.nr hm 4v \" header margin +.nr tm 7v \" top margin +.nr bm 6v \" bottom margin +.nr fm 3v \" footer margin +.nr tf 3 \" title font: (real) Times Bold +.nr tp 10 \" title point size +.hy 14 +.nr bi 4m \" indent for blocks +.nr pi 5n \" indent for paragraphs +.nr pf 1 \" normal text font +.nr pp 10 \" normal text point size +.nr qi 4n \" indent for quotes +.nr qp -1 \" down one point +.nr ii 5n \" indent for .ip's and .np's +.nr $m 1 \" max number of columns +.nr $s 4n \" column separation +.bd S B 3 +.\" *** OTHER INITIALIZATION *** +.ds [ \u\x'-0.25v' +.ds ] \d +.ds < \d\x'0.25v' +.ds > \u +.ds - -- +.if t \ +\{\ +. ds [ \v'-0.4m'\x'-0.2m'\s-3 +. ds ] \s0\v'0.4m' +. ds < \v'0.4m'\x'0.2m'\s-3 +. ds > \s0\v'-0.4m' +. ds - \(em +. nr fi 0.3i +.\} +.if n \ +\{\ +. nr fi 3n +.\} +.nr _o \n(.o +.if n .po 1i +.if \n(.V=1v \ +. nr $T 2 +.if n .if \n(.T=0 \ +. nr $T 1 +.if \nv=2 \ +\{\ +. nr $T 0 +. po -0.5i \" make ugly line on LHS on C/A/T typesetters +.\} +.if \n($T \ +\{\ +. if \n($T=1 \ +. po 0 +. ds [ [ +. ds ] ] +. ds < < +. ds > > +.\} +.nr $b \nb \" figure the real font 8 font +.rr b +.if \n($b=0 \ +\{\ +. if n .nr $b 2 \" italic +. if t .nr $b 3 \" bold +.\} +.nr ps 0.5v \" paragraph pre/post spacing +.if \n($T \ +. nr ps 1v +.if t .nr ps 0.35v +.nr bs \n(ps \" block pre/post spacing +.nr qs \n(ps \" quote pre/post spacing +.nr zs 1v \" float-block pre/postspacing +.nr xs 0.2v \" index prespacing +.nr fs 0.2v \" footnote prespacing +.if \n($T \ +. nr fs 0 +.if n .nr es 1v \" equation pre/postspacing +.if t .nr es 0.5v +.wh 0 @h \" set header +.nr $l \n(.lu \" line length +.nr _L \n(.lu \" line length of page +.nr $c 1 \" current column number +.nr $f 1 1 \" footnote number +.ds * \*[1\*]\k*\" \" footnote "name" +.nr $d 1 1 \" delayed text number +.ds # [1]\k#\" \" delayed text "name" +.nr _M 1 \" chapter mode is chapter +.ds lq \&"\" \" left quote +.ds rq \&"\" \" right quote +.if t \ +. ds lq `` +.if t \ +. ds rq '' +.em @z +.\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS *** +.de sc \" *** define special characters +.so \\*(||/chars.me +.rm sc +.. +.ll 6.0i +.lt 6.0i diff --git a/usr/src/share/mk/Makefile b/usr/src/share/mk/Makefile new file mode 100644 index 0000000000..ac05188323 --- /dev/null +++ b/usr/src/share/mk/Makefile @@ -0,0 +1,13 @@ +# @(#)Makefile 5.3 (Berkeley) 6/22/90 + +FILES= bsd.README bsd.doc.mk bsd.lib.mk bsd.man.mk bsd.own.mk \ + bsd.prog.mk bsd.subdir.mk sys.mk +NOOBJ= noobj + +all clean cleandir depend lint tags: + +install: + install -c -o ${BINOWN} -g ${BINOWN} -m 444 ${FILES} \ + ${DESTDIR}${BINDIR}/mk + +.include diff --git a/usr/src/share/mk/bsd.README b/usr/src/share/mk/bsd.README new file mode 100644 index 0000000000..e8752d90bc --- /dev/null +++ b/usr/src/share/mk/bsd.README @@ -0,0 +1,306 @@ +# @(#)bsd.README 5.1 (Berkeley) 5/11/90 + +This is the README file for the new make "include" files for the BSD +source tree. The files are installed in /usr/share/mk, and are, by +convention, named with the suffix ".mk". Each ".mk" file has a +corresponding ".rd" file which is an explanation of the ".mk" file. + +Note, this file is not intended to replace reading through the .mk +files for anything tricky. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +RANDOM THINGS WORTH KNOWING: + +The files are simply C-style #include files, and pretty much behave like +you'd expect. The syntax is slightly different in that a single '.' is +used instead of the hash mark, i.e. ".include ". + +One difference that will save you lots of debugging time is that inclusion +of the file is normally done at the *end* of the Makefile. The reason for +this is because .mk files often modify variables and behavior based on the +values of variables set in the Makefile. To make this work, remember that +the FIRST target found is the target that is used, i.e. if the Makefile has: + + a: + echo a + a: + echo a number two + +the command "make a" will echo "a". To make things confusing, the SECOND +variable assignment is the overriding one, i.e. if the Makefile has: + + a= foo + a= bar + + b: + echo ${a} + +the command "make b" will echo "bar". This is for compatibility with the +way the V7 make behaved. + +It's fairly difficult to make the BSD .mk files work when you're building +multiple programs in a single directory. It's a lot easier split up the +programs than to deal with the problem. Most of the agony comes from making +the "obj" directory stuff work right, not because we switch to a new version +of make. So, don't get mad at us, figure out a better way to handle multiple +architectures so we can quit using the symbolic link stuff. (Imake doesn't +count.) + +The file .depend in the source directory is expected to contain dependencies +for the source files. This file is read automatically by make after reading +the Makefile. + +The variable DESTDIR works as before. It's not set anywhere but will change +the tree where the file gets installed. + +The profiled libraries are no longer built in a different directory than +the regular libraries. A new suffix, ".po", is used to denote a profiled +object. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The include file has the default rules for all makes, in the BSD +environment or otherwise. You probably don't want to touch this file. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The include file handles installing manual pages and their +links. + +It has a single target: + + maninstall: + Install the manual pages and their links. + +It sets/uses the following variables: + +MANDIR Base path for manual installation. + +MANGRP Manual group. + +MANOWN Manual owner. + +MANMODE Manual mode. + +MANSUBDIR Subdirectory under the manual page section, i.e. "/vax" + or "/tahoe" for machine specific manual pages. + +MAN1 ... MAN8 The manual pages to be installed (use a .0 suffix). + +MLINKS List of manual page links (using a .1 - .8 suffix). The + linked-to file must come first, the linked file second, + and there may be multiple pairs. The files are soft-linked. + +The include file includes a file named "../Makefile.inc" if +it exists. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The include file contains the owners, groups, etc. for both +manual pages and binaries. + +It has no targets. + +It sets/uses the following variables: + +BINGRP Binary group. + +BINOWN Binary owner. + +BINMODE Binary mode. + +STRIP The flag passed to the install program to cause the binary + to be stripped. This is to be used when building your + own install script so that the entire system can be made + stripped/not-stripped using a single nob. + +COPY The flag passed to the install program to cause the binary + to be copied rather than moved. This is to be used when + building our own install script so that the entire system + can either be installed with copies, or with moves using + a single nob. + +MANDIR Base path for manual installation. + +MANGRP Manual group. + +MANOWN Manual owner. + +MANMODE Manual mode. + +This file is generally useful when building your own Makefiles so that +they use the same default owners etc. as the rest of the tree. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The include file handles building programs from one or +more source files, along with their manual pages. It has a limited number +of suffixes, consistent with the current needs of the BSD tree. + +It has seven targets: + + all: + build the program and its manual page + clean: + remove the program, any object files and the files a.out, + Errs, errs, mklog, and core. + cleandir: + remove all of the files removed by the target clean, as + well as .depend, tags, and any manual pages. + depend: + make the dependencies for the source files, and store + them in the file .depend. + install: + install the program and its manual pages; if the Makefile + does not itself define the target install, the targets + beforeinstall and afterinstall may also be used to cause + actions immediately before and after the install target + is executed. + lint: + run lint on the source files + tags: + create a tags file for the source files. + +It sets/uses the following variables: + +BINGRP Binary group. + +BINOWN Binary owner. + +BINMODE Binary mode. + +CLEANFILES Additional files to remove for the clean and cleandir targets. + +COPTS Additional flags to the compiler when creating C objects. + +HIDEGAME If HIDEGAME is defined, the binary is installed in + /usr/games/hide, and a symbolic link is created to + /usr/games/dm. + +LDADD Additional loader objects. Usually used for libraries. + For example, to load with the compatibility and utility + libraries, use: + + LDFILES=-lutil -lcompat + +LDFLAGS Additional loader flags. + +LINKS The list of binary links; should be full pathnames, the + linked-to file coming first, followed by the linked + file. The files are hard-linked. For example, to link + /bin/test and /bin/[, use: + + LINKS= ${DESTDIR}/bin/test ${DESTDIR}/bin/[ + +MAN1...MAN8 Manual pages (should end in .0). If no MAN variable is + defined, "MAN1=${PROG}.0" is assumed. + +PROG The name of the program to build. If not supplied, nothing + is built. + +SRCS List of source files to build the program. If PROG is not + defined, it's assumed to be ${PROG}.c. + +DPADD Additional dependencies for the program. Usually used for + libraries. For example, to depend on the compatibility and + utility libraries use: + + SRCLIB=${LIBCOMPAT} ${LIBUTIL} + + The following libraries are predefined for DPADD: + + LIBC /lib/libc.a + LIBCOMPAT /usr/lib/libcompat.a + LIBCURSES /usr/lib/libcurses.a + LIBDBM /usr/lib/libdbm.a + LIBDES /usr/lib/libdes.a + LIBL /usr/lib/libl.a + LIBKDB /usr/lib/libkdb.a + LIBKRB /usr/lib/libkrb.a + LIBM /usr/lib/libm.a + LIBMP /usr/lib/libmp.a + LIBPC /usr/lib/libpc.a + LIBPLOT /usr/lib/libplot.a + LIBRPC /usr/lib/sunrpc.a + LIBTERM /usr/lib/libterm.a + LIBUTIL /usr/lib/libutil.a + +SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared + strings, using xstr(1). + +STRIP The flag passed to the install program to cause the binary + to be stripped. + +SUBDIR A list of subdirectories that should be built as well. + Each of the targets will execute the same target in the + subdirectories. + +The include file includes the file named "../Makefile.inc" +if it exists, as well as the include file . + +Some simple examples: + +To build foo from foo.c with a manual page foo.1, use: + + PROG= foo + + .include + +To build foo from foo.c with a manual page foo.2, add the line: + + MAN2= foo.0 + +If foo does not have a manual page at all, add the line: + + NOMAN= noman + +If foo has multiple source files, add the line: + + SRCS= a.c b.c c.c d.c + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The include file contains the default targets for building +subdirectories. It has the same seven targets as : all, clean, +cleandir, depend, install, lint, and tags. For all of the directories +listed in the variable SUBDIRS, the specified directory will be visited +and the target made. There is also a default target which allows the +command "make subdir" where subdir is any directory listed in the variable +SUBDIRS. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +The include file has support for building libraries. It has +the same seven targets as : all, clean, cleandir, depend, +install, lint, and tags. It has a limited number of suffixes, consistent +with the current needs of the BSD tree. + +It sets/uses the following variables: + +LIBDIR Target directory for libraries. + +LINTLIBDIR Target directory for lint libraries. + +LIBGRP Library group. + +LIBOWN Library owner. + +LIBMODE Library mode. + +LDADD Additional loader objects. + +MAN1 ... MAN8 The manual pages to be installed (use a .0 suffix). + +SRCS List of source files to build the library. Suffix types + .s, .c, and .f are supported. Note, .s files are preferred + to .c files of the same name. (This is not the default for + versions of make.) + +The include file includes the file named "../Makefile.inc" +if it exists, as well as the include file . + +It has rules for building profiled objects; profiled libraries are +built by default. + +Libraries are ranlib'd before installation. diff --git a/usr/src/share/mk/bsd.doc.mk b/usr/src/share/mk/bsd.doc.mk new file mode 100644 index 0000000000..f41cc17684 --- /dev/null +++ b/usr/src/share/mk/bsd.doc.mk @@ -0,0 +1,38 @@ +# @(#)bsd.doc.mk 5.3 (Berkeley) 1/2/91 + +PRINTER=psc + +BIB?= bib +EQN?= deqn -P${PRINTER} +GREMLIN?= grn -P${PRINTER} +GRIND?= vgrind -f +INDXBIB?= indxbib +PIC?= pic -P${PRINTER} +REFER?= refer +ROFF?= ditroff -t ${MACROS} ${PAGES} -P${PRINTER} +SOELIM?= soelim +TBL?= dtbl -P${PRINTER} + +.PATH: ${.CURDIR} + +.if !target(print) +print: paper.${PRINTER} + lpr -P${PRINTER} paper.${PRINTER} +.endif + +clean cleandir: + rm -f paper.* [eE]rrs mklog ${CLEANFILES} + rm -rf obj + +FILES?= ${SRCS} +install: + install ${COPY} -o ${BINOWN} -g ${BINGRP} -m 444 \ + Makefile ${FILES} ${EXTRA} ${DESTDIR}${BINDIR}/${DIR} + +spell: ${SRCS} + spell ${SRCS} | sort | comm -23 - spell.ok > paper.spell + +BINDIR?= /usr/share/doc +BINGRP?= bin +BINOWN?= bin +BINMODE?= 444 diff --git a/usr/src/share/mk/bsd.lib.mk b/usr/src/share/mk/bsd.lib.mk new file mode 100644 index 0000000000..c9f8459d1b --- /dev/null +++ b/usr/src/share/mk/bsd.lib.mk @@ -0,0 +1,161 @@ +# @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 + +.if exists(${.CURDIR}/../Makefile.inc) +.include "${.CURDIR}/../Makefile.inc" +.endif + +LIBDIR?= /usr/lib +LINTLIBDIR?= /usr/libdata/lint +LIBGRP?= bin +LIBOWN?= bin +LIBMODE?= 444 + +STRIP?= -s + +BINGRP?= bin +BINOWN?= bin +BINMODE?= 555 + +.MAIN: all + +# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries +.SUFFIXES: +.SUFFIXES: .out .o .po .s .c .f .y .l .8 .7 .6 .5 .4 .3 .2 .1 .0 + +.8.0 .7.0 .6.0 .5.0 .4.0 .3.0 .2.0 .1.0: + nroff -mandoc ${.IMPSRC} > ${.TARGET} + +.c.o: + ${CC} ${CFLAGS} -c ${.IMPSRC} + @${LD} -x -r ${.TARGET} + @mv a.out ${.TARGET} + +.c.po: + ${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} + @${LD} -X -r ${.TARGET} + @mv a.out ${.TARGET} + +.s.o: + ${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ + ${AS} -o ${.TARGET} + @${LD} -x -r ${.TARGET} + @mv a.out ${.TARGET} + +.s.po: + ${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \ + ${AS} -o ${.TARGET} + @${LD} -X -r ${.TARGET} + @mv a.out ${.TARGET} + +MANALL= ${MAN1} ${MAN2} ${MAN3} ${MAN4} ${MAN5} ${MAN6} ${MAN7} ${MAN8} + +.if !defined(NOPROFILE) +_LIBS=lib${LIB}.a lib${LIB}_p.a +.else +_LIBS=lib${LIB}.a +.endif + +all: ${_LIBS} ${MANALL}# llib-l${LIB}.ln + +OBJS+= ${SRCS:R:S/$/.o/g} + +lib${LIB}.a:: ${OBJS} + @echo building standard ${LIB} library + @rm -f lib${LIB}.a + @${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${LDADD} + ranlib lib${LIB}.a + +POBJS+= ${OBJS:.o=.po} +lib${LIB}_p.a:: ${POBJS} + @echo building profiled ${LIB} library + @rm -f lib${LIB}_p.a + @${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${LDADD} + ranlib lib${LIB}_p.a + +llib-l${LIB}.ln: ${SRCS} + ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} + +.if !target(clean) +clean: + rm -f a.out Errs errs mklog core ${CLEANFILES} ${OBJS} ${POBJS} \ + ${MANALL} profiled/*.o lib${LIB}.a lib${LIB}_p.a llib-l${LIB}.ln +.endif + +.if !target(cleandir) +cleandir: + rm -f a.out Errs errs mklog core ${CLEANFILES} ${OBJS} ${POBJS} \ + profiled/*.o lib${LIB}.a lib${LIB}_p.a llib-l${LIB}.ln \ + ${MANALL} ${.CURDIR}/tags .depend + cd ${.CURDIR}; rm -rf obj; +.endif + +.if !target(depend) +depend: .depend +.depend: ${SRCS} + mkdep ${CFLAGS:M-[ID+]*} ${AINC} ${.ALLSRC} + @(TMP=/tmp/_depend$$$$; \ + sed -e 's/^\([^\.]*\).o:/\1.o \1.po:/' < .depend > $$TMP; \ + mv $$TMP .depend) +.endif + +.if !target(install) +.if !target(beforeinstall) +beforeinstall: +.endif + +realinstall: beforeinstall + ranlib lib${LIB}.a + install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} lib${LIB}.a \ + ${DESTDIR}${LIBDIR} + ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a +.if !defined(NOPROFILE) + ranlib lib${LIB}_p.a + install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + lib${LIB}_p.a ${DESTDIR}${LIBDIR} + ${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a +.endif +# install ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ +# llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR} +.if defined(LINKS) && !empty(LINKS) + @set ${LINKS}; \ + while test $$# -ge 2; do \ + l=${DESTDIR}$$1; \ + shift; \ + t=${DESTDIR}$$1; \ + shift; \ + echo $$t -\> $$l; \ + rm -f $$t; \ + ln $$l $$t; \ + done; true +.endif + +install: afterinstall +afterinstall: realinstall maninstall +.endif + +.if !target(lint) +lint: +.endif + +.if !target(tags) +tags: ${SRCS} + -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \ + sed "s;\${.CURDIR}/;;" > tags +.endif + +.include +.if !target(obj) +.if defined(NOOBJ) +obj: +.else +obj: + @cd ${.CURDIR}; rm -rf obj; \ + here=`pwd`; dest=/usr/obj/`echo $$here | sed 's,/usr/src/,,'`; \ + echo "$$here -> $$dest"; ln -s $$dest obj; \ + if test -d /usr/obj -a ! -d $$dest; then \ + mkdir -p $$dest; \ + else \ + true; \ + fi; +.endif +.endif diff --git a/usr/src/share/mk/bsd.man.mk b/usr/src/share/mk/bsd.man.mk new file mode 100644 index 0000000000..a68fbcd616 --- /dev/null +++ b/usr/src/share/mk/bsd.man.mk @@ -0,0 +1,58 @@ +# @(#)bsd.man.mk 5.2 (Berkeley) 5/11/90 + +.if exists(${.CURDIR}/../Makefile.inc) +.include "${.CURDIR}/../Makefile.inc" +.endif + +MANGRP?= bin +MANOWN?= bin +MANMODE?= 444 + +MANDIR?= /usr/share/man/cat + +MINSTALL= install ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} + +maninstall: +.if defined(MAN1) && !empty(MAN1) + ${MINSTALL} ${MAN1} ${DESTDIR}${MANDIR}1${MANSUBDIR} +.endif +.if defined(MAN2) && !empty(MAN2) + ${MINSTALL} ${MAN2} ${DESTDIR}${MANDIR}2${MANSUBDIR} +.endif +.if defined(MAN3) && !empty(MAN3) + ${MINSTALL} ${MAN3} ${DESTDIR}${MANDIR}3${MANSUBDIR} +.endif +.if defined(MAN3F) && !empty(MAN3F) + ${MINSTALL} ${MAN3F} ${DESTDIR}${MANDIR}3f${MANSUBDIR} +.endif +.if defined(MAN4) && !empty(MAN4) + ${MINSTALL} ${MAN4} ${DESTDIR}${MANDIR}4${MANSUBDIR} +.endif +.if defined(MAN5) && !empty(MAN5) + ${MINSTALL} ${MAN5} ${DESTDIR}${MANDIR}5${MANSUBDIR} +.endif +.if defined(MAN6) && !empty(MAN6) + ${MINSTALL} ${MAN6} ${DESTDIR}${MANDIR}6${MANSUBDIR} +.endif +.if defined(MAN7) && !empty(MAN7) + ${MINSTALL} ${MAN7} ${DESTDIR}${MANDIR}7${MANSUBDIR} +.endif +.if defined(MAN8) && !empty(MAN8) + ${MINSTALL} ${MAN8} ${DESTDIR}${MANDIR}8${MANSUBDIR} +.endif +.if defined(MLINKS) && !empty(MLINKS) + @set ${MLINKS}; \ + while test $$# -ge 2; do \ + name=$$1; \ + shift; \ + dir=${DESTDIR}${MANDIR}`expr $$name : '[^\.]*\.\(.*\)'`; \ + l=$${dir}${MANSUBDIR}/`expr $$name : '\([^\.]*\)'`.0; \ + name=$$1; \ + shift; \ + dir=${DESTDIR}${MANDIR}`expr $$name : '[^\.]*\.\(.*\)'`; \ + t=$${dir}${MANSUBDIR}/`expr $$name : '\([^\.]*\)'`.0; \ + echo $$t -\> $$l; \ + rm -f $$t; \ + ln $$l $$t; \ + done; true +.endif diff --git a/usr/src/share/mk/bsd.own.mk b/usr/src/share/mk/bsd.own.mk new file mode 100644 index 0000000000..7ebe01496b --- /dev/null +++ b/usr/src/share/mk/bsd.own.mk @@ -0,0 +1,14 @@ +# @(#)bsd.own.mk 0.1 (RGrimes) 4/4/93 + +BINGRP?= bin +BINOWN?= bin +BINMODE?= 555 + +STRIP?= -s + +COPY?= -c + +MANDIR?= /usr/share/man/cat +MANGRP?= bin +MANOWN?= bin +MANMODE?= 444 diff --git a/usr/src/share/mk/bsd.prog.mk b/usr/src/share/mk/bsd.prog.mk new file mode 100644 index 0000000000..41a1c62d33 --- /dev/null +++ b/usr/src/share/mk/bsd.prog.mk @@ -0,0 +1,188 @@ +# @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 + +.if exists(${.CURDIR}/../Makefile.inc) +.include "${.CURDIR}/../Makefile.inc" +.endif + +.SUFFIXES: .out .o .c .y .l .s .8 .7 .6 .5 .4 .3 .2 .1 .0 + +.8.0 .7.0 .6.0 .5.0 .4.0 .3.0 .2.0 .1.0: + nroff -mandoc ${.IMPSRC} > ${.TARGET} + +CFLAGS+=${COPTS} + +STRIP?= -s + +BINGRP?= bin +BINOWN?= bin +BINMODE?= 555 + +LIBCRT0?= /usr/lib/crt0.o +LIBC?= /usr/lib/libc.a +LIBCOMPAT?= /usr/lib/libcompat.a +LIBCURSES?= /usr/lib/libcurses.a +LIBDBM?= /usr/lib/libdbm.a +LIBDES?= /usr/lib/libdes.a +LIBL?= /usr/lib/libl.a +LIBKDB?= /usr/lib/libkdb.a +LIBKRB?= /usr/lib/libkrb.a +LIBM?= /usr/lib/libm.a +LIBMP?= /usr/lib/libmp.a +LIBPC?= /usr/lib/libpc.a +LIBPLOT?= /usr/lib/libplot.a +LIBRESOLV?= /usr/lib/libresolv.a +LIBRPC?= /usr/lib/sunrpc.a +LIBTERM?= /usr/lib/libterm.a +LIBUTIL?= /usr/lib/libutil.a + +.if defined(SHAREDSTRINGS) +CLEANFILES+=strings +.c.o: + ${CC} -E ${CFLAGS} ${.IMPSRC} | xstr -c - + @${CC} ${CFLAGS} -c x.c -o ${.TARGET} + @rm -f x.c +.endif + +.if defined(PROG) +.if defined(SRCS) + +OBJS+= ${SRCS:R:S/$/.o/g} + +.if defined(LDONLY) + +${PROG}: ${LIBCRT0} ${LIBC} ${OBJS} ${DPADD} + ${LD} ${LDFLAGS} -o ${.TARGET} ${LIBCRT0} ${OBJS} ${LIBC} ${LDADD} + +.else defined(LDONLY) + +${PROG}: ${OBJS} ${LIBC} ${DPADD} + ${CC} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} + +.endif + +.else defined(PROG) + +SRCS= ${PROG}.c + +${PROG}: ${SRCS} ${LIBC} ${DPADD} + ${CC} ${CFLAGS} -o ${.TARGET} ${.CURDIR}/${SRCS} ${LDADD} + +MKDEP= -p + +.endif + +.if !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \ + !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \ + !defined(MAN7) && !defined(MAN8) && !defined(NOMAN) +MAN1= ${PROG}.0 +.endif +.endif +MANALL= ${MAN1} ${MAN2} ${MAN3} ${MAN4} ${MAN5} ${MAN6} ${MAN7} ${MAN8} + +_PROGSUBDIR: .USE +.if defined(SUBDIR) && !empty(SUBDIR) + @for entry in ${SUBDIR}; do \ + (echo "===> $$entry"; \ + if test -d ${.CURDIR}/$${entry}.${MACHINE}; then \ + cd ${.CURDIR}/$${entry}.${MACHINE}; \ + else \ + cd ${.CURDIR}/$${entry}; \ + fi; \ + ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/}); \ + done +.endif + +.MAIN: all +all: ${PROG} ${MANALL} _PROGSUBDIR + +.if !target(clean) +clean: _PROGSUBDIR + rm -f a.out [Ee]rrs mklog core ${PROG} ${OBJS} ${CLEANFILES} ${MANALL} +.endif + +.if !target(cleandir) +cleandir: _PROGSUBDIR + rm -f a.out [Ee]rrs mklog core ${PROG} ${OBJS} ${CLEANFILES} \ + ${MANALL} ${.CURDIR}/tags .depend + cd ${.CURDIR}; rm -rf obj; +.endif + +# some of the rules involve .h sources, so remove them from mkdep line +.if !target(depend) +depend: .depend _PROGSUBDIR +.depend: ${SRCS} +.if defined(PROG) + mkdep ${MKDEP} ${CFLAGS:M-[ID]*} ${.ALLSRC:M*.c} +.endif +.endif + +.if !target(install) +.if !target(beforeinstall) +beforeinstall: +.endif +.if !target(afterinstall) +afterinstall: +.endif + +realinstall: _PROGSUBDIR +.if defined(PROG) + install ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + ${PROG} ${DESTDIR}${BINDIR} +.endif +.if defined(HIDEGAME) + (cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG}; \ + chown games.bin ${PROG}) +.endif +.if defined(LINKS) && !empty(LINKS) + @set ${LINKS}; \ + while test $$# -ge 2; do \ + l=${DESTDIR}$$1; \ + shift; \ + t=${DESTDIR}$$1; \ + shift; \ + echo $$t -\> $$l; \ + rm -f $$t; \ + ln $$l $$t; \ + done; true +.endif + +install: maninstall +maninstall: afterinstall +afterinstall: realinstall +realinstall: beforeinstall +.endif + +.if !target(lint) +lint: ${SRCS} _PROGSUBDIR +.if defined(PROG) + @${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1 +.endif +.endif + +.if !target(obj) +.if defined(NOOBJ) +obj: _PROGSUBDIR +.else +obj: _PROGSUBDIR + @cd ${.CURDIR}; rm -rf obj; \ + here=`pwd`; dest=/usr/obj/`echo $$here | sed 's,/usr/src/,,'`; \ + echo "$$here -> $$dest"; ln -s $$dest obj; \ + if test -d /usr/obj -a ! -d $$dest; then \ + mkdir -p $$dest; \ + else \ + true; \ + fi; +.endif +.endif + +.if !target(tags) +tags: ${SRCS} _PROGSUBDIR +.if defined(PROG) + -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC} | \ + sed "s;\${.CURDIR}/;;" > tags +.endif +.endif + +.if !defined(NOMAN) +.include +.endif diff --git a/usr/src/share/mk/bsd.subdir.mk b/usr/src/share/mk/bsd.subdir.mk new file mode 100644 index 0000000000..81ba0ee594 --- /dev/null +++ b/usr/src/share/mk/bsd.subdir.mk @@ -0,0 +1,69 @@ +# @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91 + +.MAIN: all + +STRIP?= -s + +BINGRP?= bin +BINOWN?= bin +BINMODE?= 555 + +_SUBDIRUSE: .USE + @for entry in ${SUBDIR}; do \ + (if test -d ${.CURDIR}/$${entry}.${MACHINE}; then \ + echo "===> $${entry}.${MACHINE}"; \ + cd ${.CURDIR}/$${entry}.${MACHINE}; \ + else \ + echo "===> $$entry"; \ + cd ${.CURDIR}/$${entry}; \ + fi; \ + ${MAKE} ${.TARGET:realinstall=install}); \ + done + +${SUBDIR}:: + @if test -d ${.TARGET}.${MACHINE}; then \ + cd ${.CURDIR}/${.TARGET}.${MACHINE}; \ + else \ + cd ${.CURDIR}/${.TARGET}; \ + fi; \ + ${MAKE} all + +.if !target(all) +all: _SUBDIRUSE +.endif + +.if !target(clean) +clean: _SUBDIRUSE +.endif + +.if !target(cleandir) +cleandir: _SUBDIRUSE +.endif + +.if !target(depend) +depend: _SUBDIRUSE +.endif + +.if !target(install) +.if !target(beforeinstall) +beforeinstall: +.endif +.if !target(afterinstall) +afterinstall: +.endif +install: afterinstall +afterinstall: realinstall +realinstall: beforeinstall _SUBDIRUSE +.endif + +.if !target(lint) +lint: _SUBDIRUSE +.endif + +.if !target(obj) +obj: _SUBDIRUSE +.endif + +.if !target(tags) +tags: _SUBDIRUSE +.endif diff --git a/usr/src/share/mk/sys.mk b/usr/src/share/mk/sys.mk new file mode 100644 index 0000000000..dd938daeb6 --- /dev/null +++ b/usr/src/share/mk/sys.mk @@ -0,0 +1,95 @@ +# @(#)sys.mk 5.11 (Berkeley) 3/13/91 + +unix= We run UNIX. + +.SUFFIXES: .out .a .ln .o .c .F .f .e .r .y .l .s .cl .p .h + +.LIBS: .a + +AR= ar +ARFLAGS= rl +RANLIB= ranlib + +AS= as +AFLAGS= + +CC= cc +CFLAGS= -O + +CPP= cpp + +FC= f77 +FFLAGS= -O +EFLAGS= + +LEX= lex +LFLAGS= + +LD= ld +LDFLAGS= + +LINT= lint +LINTFLAGS= -chapbx + +MAKE= make + +PC= pc +PFLAGS= + +RC= f77 +RFLAGS= + +SHELL= sh + +YACC= yacc +YFLAGS=-d + +.c.o: + ${CC} ${CFLAGS} -c ${.IMPSRC} + +.p.o: + ${PC} ${PFLAGS} -c ${.IMPSRC} + +.e.o .r.o .F.o .f.o: + ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} + +.s.o: + ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} + +.y.o: + ${YACC} ${YFLAGS} ${.IMPSRC} + ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET} + rm -f y.tab.c + +.l.o: + ${LEX} ${LFLAGS} ${.IMPSRC} + ${CC} ${CFLAGS} -c lex.yy.c -o ${.TARGET} + rm -f lex.yy.c + +.y.c: + ${YACC} ${YFLAGS} ${.IMPSRC} + mv y.tab.c ${.TARGET} + +.l.c: + ${LEX} ${LFLAGS} ${.IMPSRC} + mv lex.yy.c ${.TARGET} + +.s.out .c.out .o.out: + ${CC} ${CFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} + +.f.out .F.out .r.out .e.out: + ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${.IMPSRC} \ + ${LDLIBS} -o ${.TARGET} + rm -f ${.PREFIX}.o + +.y.out: + ${YACC} ${YFLAGS} ${.IMPSRC} + ${CC} ${CFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET} + rm -f y.tab.c + +.l.out: + ${LEX} ${LFLAGS} ${.IMPSRC} + ${CC} ${CFLAGS} lex.yy.c ${LDLIBS} -ll -o ${.TARGET} + rm -f lex.yy.c + +.include diff --git a/usr/src/share/skel/Makefile b/usr/src/share/skel/Makefile new file mode 100644 index 0000000000..2c8b8a3d83 --- /dev/null +++ b/usr/src/share/skel/Makefile @@ -0,0 +1,12 @@ +# @(#)Makefile 5.3 (Berkeley) 6/8/90 + +FILES= dot.cshrc dot.login dot.mailrc dot.profile dot.rhosts +NOOBJ= noobj + +all clean cleandir depend lint tags: + +install: + install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${FILES} \ + ${DESTDIR}${BINDIR}/skel + +.include diff --git a/usr/src/share/skel/dot.cshrc b/usr/src/share/skel/dot.cshrc new file mode 100644 index 0000000000..d1e8a36ee1 --- /dev/null +++ b/usr/src/share/skel/dot.cshrc @@ -0,0 +1,27 @@ +# .cshrc initialization + +alias df df -k +alias du du -k +alias f finger +alias h 'history -r | more' +alias j jobs -l +alias la ls -a +alias lf ls -FA +alias ll ls -lgsA +alias su su -m +alias tset 'set noglob histchars=""; eval `\tset -s \!*`; unset noglob histchars' +alias x exit +alias z suspend + +set path = (~/bin /bin /usr/{bin,new,games,local,old} .) + +if ($?prompt) then + # An interactive shell -- set some stuff up + set filec + set history = 1000 + set ignoreeof + set mail = (/var/mail/$USER) + set mch = `hostname -s` + set prompt = "$mch:q:$cwd:t {\!} " + umask 2 +endif diff --git a/usr/src/share/skel/dot.login b/usr/src/share/skel/dot.login new file mode 100644 index 0000000000..bdbc750683 --- /dev/null +++ b/usr/src/share/skel/dot.login @@ -0,0 +1,15 @@ +#csh login file + +if ( ! $?TERMCAP ) then + tset -Q '-mdialup:?vt100' $TERM +endif + +stty newcrt crterase + +set savehist=100 +set ignoreeof + +setenv EXINIT 'set ai sm noeb' +setenv HOSTALIASES $HOME/.hostaliases + +/usr/games/fortune diff --git a/usr/src/share/skel/dot.mailrc b/usr/src/share/skel/dot.mailrc new file mode 100644 index 0000000000..7c8a99b905 --- /dev/null +++ b/usr/src/share/skel/dot.mailrc @@ -0,0 +1,2 @@ +set ask +ignore message-id received date fcc status resent-date resent-message-id resent-from in-reply-to diff --git a/usr/src/share/skel/dot.profile b/usr/src/share/skel/dot.profile new file mode 100644 index 0000000000..95ed15cdc5 --- /dev/null +++ b/usr/src/share/skel/dot.profile @@ -0,0 +1,2 @@ +PATH=/bin:/usr/bin:/usr/new:/usr/local:/usr/games:/usr/old:. +export PATH HOME TERM diff --git a/usr/src/share/skel/dot.rhosts b/usr/src/share/skel/dot.rhosts new file mode 100644 index 0000000000..2704975166 --- /dev/null +++ b/usr/src/share/skel/dot.rhosts @@ -0,0 +1,2 @@ +OtherMachine +OtherMachine myFriend diff --git a/usr/src/share/tabset/3101 b/usr/src/share/tabset/3101 new file mode 100644 index 0000000000..dab586bf65 --- /dev/null +++ b/usr/src/share/tabset/3101 @@ -0,0 +1 @@ +H 0 0 0 0 0 0 0 0 0 diff --git a/usr/src/share/tabset/9837 b/usr/src/share/tabset/9837 new file mode 100644 index 0000000000..57d211f64e --- /dev/null +++ b/usr/src/share/tabset/9837 @@ -0,0 +1 @@ +3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \ No newline at end of file diff --git a/usr/src/share/tabset/Makefile b/usr/src/share/tabset/Makefile new file mode 100644 index 0000000000..d2eb626acb --- /dev/null +++ b/usr/src/share/tabset/Makefile @@ -0,0 +1,14 @@ +# @(#)Makefile 5.3 (Berkeley) 10/22/90 + +FILES= 3101 9837 aa aed512 beehive diablo dtc382 hp700-wy ibm3101 std \ + stdcrt tandem653 teleray vt100 wyse-adds xerox1720 xerox1730 \ + xerox1730-lm zenith29 +NOOBJ= noobj + +all clean cleandir depend lint tags: + +install: + install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${FILES} \ + ${DESTDIR}${BINDIR}/tabset + +.include diff --git a/usr/src/share/tabset/aa b/usr/src/share/tabset/aa new file mode 100644 index 0000000000..578474569b --- /dev/null +++ b/usr/src/share/tabset/aa @@ -0,0 +1 @@ + 1 1 1 1 1 1 1 1 1  diff --git a/usr/src/share/tabset/aed512 b/usr/src/share/tabset/aed512 new file mode 100644 index 0000000000..2c9d5fc20b --- /dev/null +++ b/usr/src/share/tabset/aed512 @@ -0,0 +1 @@ +\EG1MMM.`40K0001202080K8001????00^L\EC80L80{80^L\EK010100????K0601??0000c818100\EG1HHH.\07210000019A27FD006A280D002A200A52429FE8524861086118612861360N031B4C3F3F1800N041B0C1B4C38301800N001B3B313030301800N011B3B313030341800N021B3B313030381800N050800N061B3B313335301800\07211000015A58E8D5011A58F8D5111A5908D5211A5918D531160\07212000015AD5011858EAD5111858FAD52118590AD5311859160\0721300004B2071C5858E0A18658E0A0A858EA900858F268FA5278590A50A29018591A9F51865908590A90165918591A59038E58E8590A591E58F290185912071C5180A0A0A0901858EA900858F268F60\0721350000BA9472031DEA9502031DE60\E\E\E\EG1MMM.^A diff --git a/usr/src/share/tabset/beehive b/usr/src/share/tabset/beehive new file mode 100644 index 0000000000..6d30c69270 --- /dev/null +++ b/usr/src/share/tabset/beehive @@ -0,0 +1,2 @@ + +                                                                                diff --git a/usr/src/share/tabset/diablo b/usr/src/share/tabset/diablo new file mode 100644 index 0000000000..8acc53fe33 --- /dev/null +++ b/usr/src/share/tabset/diablo @@ -0,0 +1,3 @@ + 9 +2 1 1 1 !1 )1 11 91 A1 I1 Q1 Y1 a1 i1 q1 y1 + 9 diff --git a/usr/src/share/tabset/dtc382 b/usr/src/share/tabset/dtc382 new file mode 100644 index 0000000000..79257c39fd --- /dev/null +++ b/usr/src/share/tabset/dtc382 @@ -0,0 +1 @@ +  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \ No newline at end of file diff --git a/usr/src/share/tabset/hp700-wy b/usr/src/share/tabset/hp700-wy new file mode 100644 index 0000000000000000000000000000000000000000..a48c65be5aa2bca2ec1eae96beb50c11ad80c474 GIT binary patch literal 105 Tcmb1U;FV_F4+XSi@p1tGQN=w7 literal 0 HcmV?d00001 diff --git a/usr/src/share/tabset/ibm3101 b/usr/src/share/tabset/ibm3101 new file mode 100644 index 0000000000..7e510ef869 --- /dev/null +++ b/usr/src/share/tabset/ibm3101 @@ -0,0 +1 @@ +H 0 0 0 0 0 0 0 0 0 \ No newline at end of file diff --git a/usr/src/share/tabset/std b/usr/src/share/tabset/std new file mode 100644 index 0000000000..e93f737f0e --- /dev/null +++ b/usr/src/share/tabset/std @@ -0,0 +1 @@ + 3 1 1 1 1 1 1 1 1 1 1 1 1 1 diff --git a/usr/src/share/tabset/stdcrt b/usr/src/share/tabset/stdcrt new file mode 100644 index 0000000000..66ba12f64d --- /dev/null +++ b/usr/src/share/tabset/stdcrt @@ -0,0 +1 @@ + 3 1 1 1 1 1 1 1 1 1 \ No newline at end of file diff --git a/usr/src/share/tabset/tandem653 b/usr/src/share/tabset/tandem653 new file mode 100644 index 0000000000..4588c34e51 --- /dev/null +++ b/usr/src/share/tabset/tandem653 @@ -0,0 +1 @@ +3 1 1 1 1 1 1 1 1 1 1 diff --git a/usr/src/share/tabset/teleray b/usr/src/share/tabset/teleray new file mode 100644 index 0000000000..46158f398e --- /dev/null +++ b/usr/src/share/tabset/teleray @@ -0,0 +1 @@ +GY9(FY90FY98FY9@FY9HFY9PFY9XFY9`FY9hF \ No newline at end of file diff --git a/usr/src/share/tabset/vt100 b/usr/src/share/tabset/vt100 new file mode 100644 index 0000000000..6cd0675a97 --- /dev/null +++ b/usr/src/share/tabset/vt100 @@ -0,0 +1,3 @@ + + +H H H H H H H H H H H H H H H H H diff --git a/usr/src/share/tabset/wyse-adds b/usr/src/share/tabset/wyse-adds new file mode 100644 index 0000000000..996ed66095 --- /dev/null +++ b/usr/src/share/tabset/wyse-adds @@ -0,0 +1,3 @@ +Setting tabs... 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 + + diff --git a/usr/src/share/tabset/xerox1720 b/usr/src/share/tabset/xerox1720 new file mode 100644 index 0000000000..7437292bff --- /dev/null +++ b/usr/src/share/tabset/xerox1720 @@ -0,0 +1 @@ +2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 \ No newline at end of file diff --git a/usr/src/share/tabset/xerox1730 b/usr/src/share/tabset/xerox1730 new file mode 100644 index 0000000000000000000000000000000000000000..47da660ff7b099f1b4fa4f8a7e4aa3156644a783 GIT binary patch literal 222 zcmc)4p$dR76o%2+yn`Dog8WIFakiC-(WX(b7>!2XUcRUBgcE{%3qR4UK}Bt?Gs-Gu c*CaC~SwkK5G*Y5W3$3)%K^NWh(5vL}1F{bdYybcN literal 0 HcmV?d00001 diff --git a/usr/src/share/tabset/xerox1730-lm b/usr/src/share/tabset/xerox1730-lm new file mode 100644 index 0000000000000000000000000000000000000000..00b5ec5031c2f48d9ce9b7f819c87a697399d805 GIT binary patch literal 224 zcmc)Cp%Oq)5Jusv*|0$|WBx=FSG$D~HKG|s6h&{(c?u_d@uVbQ(@$wqr%`pOLslre c2AL^j6*SO74*?lwSYU%4PPpKPN8$DzU)78a!T /dev/null + +clean: + rm -f termcap + +cleandir: clean + rm -f ${MAN5} + +beforeinstall: + install -o ${BINOWN} -g ${BINGRP} -m 444 termcap \ + ${DESTDIR}${BINDIR}/misc + install -c -o ${BINOWN} -g ${BINGRP} -m 444 ${.CURDIR}/map3270 \ + ${DESTDIR}${BINDIR}/misc + +.include diff --git a/usr/src/share/termcap/README b/usr/src/share/termcap/README new file mode 100644 index 0000000000..d701bb00b6 --- /dev/null +++ b/usr/src/share/termcap/README @@ -0,0 +1,51 @@ +<< 14 October 1987 >> +It is probably easiest to make local termcap changes in separate +files, eg /usr/local/etc/termcap, and encourage people to put + + setenv TERMPATH ~/.termcap:/usr/local/etc/termcap:/etc/termcap + +in their shell startup files. This way local system-wide changes can be +isolated in /usr/local/etc/termcap and user changes in ~/.termcap, all +without consuming lots of disk or requiring re-integration of local +changes when system termcap files change. + + John Kunze + termcap@berkeley + +<< 12 May 1983 >> +To install this directory on your system: + +First determine a list of "common terminals" for your system. +This list will probably be small, and can be empty if you like, +but you should probably put your own terminal in it. + +Second, edit the editor script "reorder" to use this list instead +of the list built in to it. The changes will be evident from looking +at the script. Notice that the script contains the terminals in order +from least common to most common, since the move commands will move them +to the front in that order, the effect will be to put the most common +at the front of termcap since that's moved last. The s.* terminals +are specials, and although they don't have to go to the front, they are +probably quite common and really should go near the front. + +Third, if you are not a super user and cannot create the directory +/usr/lib/tabset, make a corresponding directory somewhere you can and +add a line to reorder to globally change all /usr/lib/tabset's to your +own path name. This change is better than just changing the termcap.src +file because it makes it easier to diff it from newer distributed versions. +Try to keep the source as is whenever possible, and put mungings into reorder. + +Now you can run "make install" which will create an /etc/termcap. Again, +if you aren't a super user change the cp command to put it where you can. +In this case you will have to redefine E_TERMCAP in "local/uparm.h", which +will probably be in subdirectories with the other UCB software. + + +Finally, if you make additions or fixes to termcap, please mail a note +explaining what you did with the fixed termcap entry (not the whole file, +please!) to me at one of the addresses below, so it can be incorporated +back into the original source. I will normally include anything unless +there is a good reason not to, but I reserve the right to redo it differently. + + ucbvax!termcap (uucp) + termcap@berkeley (Arpanet) diff --git a/usr/src/share/termcap/map3270 b/usr/src/share/termcap/map3270 new file mode 100644 index 0000000000..6974780308 --- /dev/null +++ b/usr/src/share/termcap/map3270 @@ -0,0 +1,1025 @@ +# Copyright (c) 1989 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)map3270 5.4 (Berkeley) 4/17/91 +# + +# This file contains mappings between characters entered from the keyboard, +# and 3270 keys, for use by programs (like tn3270) doing 3270 emulation +# from unix. +# +# Inside the single quotes, a caret ("^") introduces a control character +# sequence (rub out = ^?, by the way). Also inside the single quotes, +# a backslash ('\') introduces an escaped character. Also, \n, \r, \t, +# are all as in C, and \E is another way of representing escape. +# +# NOTE that while we are defining lots of function, much of that +# function (ie: local editing keys) may not yet be available from tn3270. +# +# Please e-mail changes to termcap@berkeley.edu or uunet!ucbvax!termcap. +# + +3a | adm3a { + enter = '^m'; + clear = '^z'; + + nl = '^n'; + tab = '^i'; + btab = '^b' | '\E^i'; + left = '^h'; + right = '^l'; + up = '^k'; + down = '^j'; + home = '^@'; + + delete = '^d' | '^?'; # rubout + eeof = '^e'; + einp = '^w'; + insrt = '\E '; + dp = '^u'; + fm = '^y'; + + # pf keys + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; + pfk5 = '\E5'; pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; + pfk9 = '\E9'; pfk10 = '\E0'; pfk11 = '\E:'; pfk12 = '\E-'; + pfk13 = '^f13'; pfk14 = '^f14'; pfk15 = '^f15'; pfk16 = '^f16'; + pfk17 = '^f17'; pfk18 = '^f18'; pfk19 = '^f19'; pfk20 = '^f20'; + pfk21 = '^f21'; pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + + # program attention keys + pa1 = '^p1'; + pa2 = '^p2'; + pa3 = '^p3'; + + # other keys + cursel = '\E.'; + centsign = '^\'; + + # local control keys + + reset = '^t'; # well, there is a little confusion here... + master_reset = '^g'; + flinp = '^x'; + reshow = '^v'; # redisplay screen + escape = '^c'; # escape to telnet command mode + + # local editing keys + settab = '\E;'; + deltab = '\E\''; + clrtab = '\E+'; + setmrg = '\E('; + sethom = '\E!'; + coltab = '\Ei'; + colbak = '\Eb'; + indent = '\El'; + undent = '\Eh'; + +} # end of adm3a + +920c | tvi920c | 920b { # tvi920c definitions... + + # command keys + enter = '^m'; + clear = '^z'; + + # cursor movement keys + nl = '^^' | '^n'; # home + tab = '^i'; + btab = '^b' | '\E^i'; + left = '^h'; + right = '^l'; + up = '^k'; + down = '^j'; + home = '^@'; + + # edit control keys + delete = '^?' | '^d'; # delete + eeof = '^e'; + einp = '^w'; + insrt = '\E '; + dp = '^u'; + fm = '^y'; + + # program function keys + + # F1 to F11 + pfk1 = '^a@^m'; pfk2 = '^aA^m'; pfk3 = '^aB^m'; pfk4 = '^aC^m'; + pfk5 = '^aD^m'; pfk6 = '^aE^m'; pfk7 = '^aF^m'; pfk8 = '^aG^m'; + pfk9 = '^aH^m'; pfk10 = '^aI^m'; pfk11 = '^aJ^m'; + + # SHIFT-F11 + pfk12 = '^aj^m'; + + # ESC F1 to ESC F11 + pfk11 = '\E^a@^m'; pfk12 = '\E^aA^m'; + pfk13 = '\E^aB^m'; pfk14 = '\E^aC^m'; pfk15 = '\E^aD^m'; pfk16 = '\E^aE^m'; + pfk17 = '\E^aF^m'; pfk18 = '\E^aG^m'; pfk19 = '\E^aH^m'; pfk20 = '\E^aI^m'; + pfk21 = '\E^a`^m'; + + # ESC SHIFT-F1 to ESC SHIFT-F4 + pfk21 = '\E^a`^m'; pfk22 = '\E^aa^m'; pfk23 = '\E^ab^m'; pfk24 = '\E^ac^m'; + + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; + pfk5 = '\E5'; pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; + pfk9 = '\E9'; pfk10 = '\E0'; pfk11 = '\E-'; pfk12 = '\E='; + pfk13 = '^f13'; pfk14 = '^f14'; pfk15 = '^f15'; pfk16 = '^f16'; + pfk17 = '^f17'; pfk18 = '^f18'; pfk19 = '^f19'; pfk20 = '^f20'; + pfk21 = '^f21'; pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + + # program attention keys + + pa1 = '^a`^m' | '^p1'; + pa2 = '^aa^m' | '^p2'; + pa3 = '^ab^m' | '^p3'; + + # miscellaneous 3270 keys + + cursel = '\E.'; + centsign = '^\'; + + # local control keys + + reset = '^t'; # there is some confusion here... + master_reset = '^g'; + flinp = '^x'; + reshow = '^v'; + escape = '^c'; # escape to telnet command mode + + # local editing keys + + settab = '\E;'; + deltab = '\E\''; + clrtab = '\E:'; + setmrg = '\E*'; + sethom = '\E!'; + coltab = '\Ei' | '\EI'; + colbak = '\Eb' | '\EB'; + indent = '\El' | '\EL'; + undent = '\Eh' | '\EH'; +} # end of tvi920c table... + +925 | tvi925 | 925vb | tvi925vb | televideo 925 { + + # command keys + + enter = '^m'; + clear = '^z'; + + # cursor movement keys + + nl = '^j' | '^n'; + tab = '^i'; + btab = '\EI'; + left = '^h'; + right = '^l'; + up = '^k'; + down = '^v'; + home = '^^'; + + # edit control keys + + delete = '^?'; # that's rubout... + eeof = '^e'; + einp = '^w'; + insrt = '\E ' | '\EW'; + + # program function keys + + pfk1 = '^a@^m'; + pfk2 = '^aA^m'; + pfk3 = '^aB^m'; + pfk4 = '^aC^m'; + pfk5 = '^aD^m'; + pfk6 = '^aE^m'; + pfk7 = '^aF^m'; + pfk8 = '^aG^m'; + pfk9 = '^aH^m'; + pfk10 = '^aI^m'; + pfk11 = '^aJ^m'; + pfk12 = '\EQ'; + pfk13 = '\E^a@^m'; + pfk14 = '\E^aA^m'; + pfk15 = '\E^aB^m'; + pfk16 = '\E^aC^m'; + pfk17 = '\E^aD^m'; + pfk18 = '\E^aE^m'; + pfk19 = '\E^aF^m'; + pfk20 = '\E^aG^m'; + pfk21 = '\E^aH^m'; + pfk22 = '\E^aI^m'; + pfk23 = '\E^aJ^m'; + pfk24 = '\E\EQ'; + + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; + pfk5 = '\E5'; pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; + pfk9 = '\E9'; pfk10 = '\E0'; pfk11 = '\E-'; pfk12 = '\E='; + pfk13 = '^f13'; pfk14 = '^f14'; pfk15 = '^f15'; pfk16 = '^f16'; + pfk17 = '^f17'; pfk18 = '^f18'; pfk19 = '^f19'; pfk20 = '^f20'; + pfk21 = '^f21'; pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + + # program attention keys + + pa1 = '^a`^m'; + pa2 = '^aa^m'; + pa3 = '^ab^m'; + + # other keys + centsign = '^\'; + + # local control keys + + reset = '^t'; # again, there is some confusion here... + master_reset = '^g'; + flinp = '^x'; + reshow = '^b'; + escape = '^c'; # escape to telnet command mode + +# local editing keys + + settab = '\EY'; + deltab = '\Ey'; + clrtab = '\E:'; + setmrg = '\ET'; + sethom = '\Et'; + coltab = '^p'; + colbak = '^o'; + indent = '\ER'; + undent = '\EE'; +} + + +924 | tvi924 { + + # command keys + + enter = '^m'; + clear = '^z'; + + # cursor movement keys + + nl = '^j'; + tab = '^i'; + btab = '\EI'; + left = '^h'; + right = '^l'; + up = '^k'; + down = '^v'; + home = '^^'; + + # edit control keys + + delete = '^?'; # that's rubout... + eeof = '^e'; + einp = '^w'; + insrt = '\E ' | '\EW'; + dp = '^u'; + fm = '^y'; + + # program function keys + + pfk1 = '^a@^m'; + pfk2 = '^aA^m'; + pfk3 = '^aB^m'; + pfk4 = '^aC^m'; + pfk5 = '^aD^m'; + pfk6 = '^aE^m'; + pfk7 = '^aF^m'; + pfk8 = '^aG^m'; + pfk9 = '^aH^m'; + pfk10 = '^aI^m'; + pfk11 = '^aJ^m'; + pfk12 = '^aK^m'; + pfk13 = '^aL^m'; + pfk14 = '^aM^m'; + pfk15 = '^aN^m'; + pfk16 = '^aO^m'; + pfk17 = '^af^m'; + pfk18 = '^ag^m'; + pfk19 = '^ah^m'; + pfk20 = '^ai^m'; + pfk21 = '^aj^m'; + pfk22 = '^ak^m'; + pfk23 = '^al^m'; + pfk24 = '^am^m'; + + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; + pfk5 = '\E5'; pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; + pfk9 = '\E9'; pfk10 = '\E0'; pfk11 = '\E-'; pfk12 = '\E='; + pfk13 = '^f13'; pfk14 = '^f14'; pfk15 = '^f15'; pfk16 = '^f16'; + pfk17 = '^f17'; pfk18 = '^f18'; pfk19 = '^f19'; pfk20 = '^f20'; + pfk21 = '^f21'; pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + + # program attention keys + + pa1 = '^a`^m'; + pa2 = '^aa^m'; + pa3 = '^ab^m'; + + # other keys + centsign = '^\'; + + # local control keys + + reset = '^t'; # again, there is some confusion here... + master_reset = '^g'; + flinp = '^x'; + reshow = '^b'; + escape = '^c'; # escape to telnet command mode + + # local editing keys + + settab = '\EY'; + deltab = '\Ey'; + clrtab = '\E:'; + setmrg = '\ET'; + sethom = '\Et'; + coltab = '^p'; + colbak = '^o'; + indent = '\ER'; + undent = '\EE'; +} + +h19 | heath | h19b | heathkit | heath-19 | z19 | zenith { +enter = '^m'; +clear = '^z'; + +nl = '^n' | '^?'; +tab = '^i'; +btab = '^b'; +left = '^h'; +right = '^l'; +up = '^k'; +down = '^j'; +home = '^@'; + +delete = '^d'; +eeof = '^e'; +einp = '^w'; +insrt = '\E '; + +# pf keys +pfk1 = '\E?p\E?q'; pfk2 = '\E?p\E?r'; pfk3 = '\E?p\E?s'; pfk4 = '\E?p\E?t'; +pfk5 = '\E?p\E?u'; pfk6 = '\E?p\E?v'; pfk7 = '\E?p\E?w'; pfk8 = '\E?p\E?x'; +pfk9 = '\E?p\E?y'; pfk10 = '\E?q\E?p'; pfk11 = '\E?q\E?q'; pfk12 = '\E?q\E?r'; +pfk13 = '\E?q\E?s'; pfk14 = '\E?q\E?t'; pfk15 = '\E?q\E?u'; pfk16 = '\E?q\E?v'; +pfk17 = '\E?q\E?w'; pfk18 = '\E?q\E?x'; pfk19 = '\E?q\E?y'; pfk20 = '\E?r\E?p'; +pfk21 = '\E?r\E?q'; pfk22 = '\E?r\E?r'; pfk23 = '\E?r\E?s'; pfk24 = '\E?r\E?t'; + + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; + pfk5 = '\E5'; pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; + pfk9 = '\E9'; pfk10 = '\E0'; pfk11 = '\E-'; pfk12 = '\E='; + pfk13 = '^f13'; pfk14 = '^f14'; pfk15 = '^f15'; pfk16 = '^f16'; + pfk17 = '^f17'; pfk18 = '^f18'; pfk19 = '^f19'; pfk20 = '^f20'; + pfk21 = '^f21'; pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + +# program attention keys +pa1 = '\EP'; +pa2 = '\EQ'; +pa3 = '\ER'; + +# other keys + + centsign = '^\'; +# cursel = '\E.'; # find out what this does +master_reset = '^g'; + +# local control keys + +reset = '^t'; # well, there is a little confusion here... +flinp = '^x'; +reshow = '^v'; # redisplay screen +escape = '^c'; # escape to telnet command mode + +# local editing keys +settab = '\E;'; +clrtab = '\E:'; +setmrg = '\E\''; +sethom = '\E!'; +coltab = '\Ei'; +colbak = '\Eb'; +indent = '\El'; +undent = '\Eh'; + +} # end of h19 + + +co | c100 | concept | c100-4p | concept100 { +enter = '^m'; +clear = '^z' | '^\2'; + +nl = '^n'; +tab = '^i'; +btab = '^b'; +left = '^h' | '\E>'; +right = '^l' | '\E='; +up = '^k' | '\E;'; +down = '^j' | '\E<'; +home = '\E?'; + +delete = '^d' | '^?' | '^\1'; +eeof = '^e' | '^\3'; +einp = '^w'; +insrt = '^\0'; + +# pf keys +pfk1 = '\E\E1' | '^\5'; pfk2 = '\E\E2' | '^\6'; pfk3 = '\E\E3' | '^\7'; +pfk4 = '\E\E4' | '^\8'; pfk5 = '\E\E5' | '^\9'; pfk6 = '\E\E6' | '^\:'; +pfk7 = '\E\E7' | '^\;'; pfk8 = '\E\E8' | '^\<'; pfk9 = '\E\E9' | '^\='; +pfk10 = '\E\E0' | '^\>'; pfk11 = '\E\E-' | '^\?'; pfk12 = '^\@'; +pfk13 = '^\A'; pfk14 = '^\B'; pfk15 = '^\)'; pfk16 = '^\*'; +pfk17 = '^\+'; pfk18 = '^\,'; pfk19 = '^\-'; pfk20 = '^\.'; +pfk21 = '^\/'; pfk22 = '^\C'; pfk23 = '^\D'; pfk24 = '^\E'; + + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; + pfk5 = '\E5'; pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; + pfk9 = '\E9'; pfk10 = '\E0'; pfk11 = '\E-'; pfk12 = '^f12'; + pfk13 = '^f13'; pfk14 = '^f14'; pfk15 = '^f15'; pfk16 = '^f16'; + pfk17 = '^f17'; pfk18 = '^f18'; pfk19 = '^f19'; pfk20 = '^f20'; + pfk21 = '^f21'; pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + +# program attention keys +pa1 = '^\%'; +pa2 = '^\&' | '\E+'; +pa3 = '^\\''; + +# other keys +cursel = '\E.'; +aplon = '\E{'; +aplend = '\E}'; +aploff = '\E_'; +master_reset = '^g'; +centsign = '\E\\'; + +# local control keys + +reset = '^t'; # well, there is a little confusion here... +flinp = '^x'; +reshow = '^v'; # redisplay screen +escape = '^c'; # escape to telnet command mode + +# local editing keys +settab = '\E\E;'; +clrtab = '\E\E:'; +setmrg = '\E\E*'; +sethom = '\E\E!'; +coltab = '\E\Ei'; +colbak = '\E\Eb'; +indent = '\E\El'; +undent = '\E\Eh'; + +} # end of concept +avt | avt-8p-s | avt-4p-s | avt-rv { +enter = '^m'; +clear = '^z' | '\EOM'; + +nl = '^?'; +tab = '^i'; +btab = '^b'; +left = '^h' | '\E[D'; +right = '^l' | '\E[C'; +up = '^k' | '\E[A'; +down = '^j' | '\E[B'; +home = '\EOn'; + +delete = '^d'; +eeof = '^e'; +einp = '^w'; +insrt = '^ ' | '\E '; + +# pf keys +pfk1 = '\EOq' | '\E1'; pfk2 = '\EOr' | '\E2'; pfk3 = '\EOs' | '\E3'; +pfk4 = '\EOt' | '\E4'; pfk5 = '\EOu' | '\E5'; pfk6 = '\EOv' | '\E6'; +pfk7 = '\EOw' | '\E7'; pfk8 = '\EOx' | '\E8'; pfk9 = '\EOy' | '\E9'; +pfk10 = '\EOP\EOp' | '\E0'; pfk11 = '\EOP\EOq' | '\E-'; +pfk12 = '\EOP\EOr' | '\E='; pfk13 = '\EOP\EOs' | '^f13'; +pfk14 = '\EOP\EOt' | '^f14'; pfk15 = '\EOP\EOu' | '^f15'; +pfk16 = '\EOP\EOv' | '^f16'; pfk17 = '\EOP\EOw' | '^f17'; +pfk18 = '\EOP\EOx' | '^f18'; pfk19 = '\EOP\EOy' | '^f19'; +pfk20 = '\EOQ\EOp' | '^f20'; pfk21 = '\EOQ\EOq' | '^f21'; + + pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + +# program attention keys +pa1 = '\E\EOP' | '^p1'; +pa2 = '\E\EOQ' | '^p2'; + +# local control keys + +escape = '^c'; # escape to telnet command mode +master_reset = '^g'; + centsign = '^\'; + +# local editing keys +settab = '\E;'; +deltab = '\E\''; +clrtab = '\E:'; +setmrg = '\E,'; +sethom = '\E.'; +coltab = '\E\E[B'; +colbak = '\E\E[A'; +indent = '\E\E[C'; +undent = '\E\E[D'; +} # end of avt, etc. + +tvipt | vp | televideopt { + enter = '^m'; + clear = '^z'; + + nl = '^n'; + tab = '^i'; + btab = '^b'; + left = '^h'; + right = '^l'; + up = '^k'; + down = '^j'; + home = '^^'; + + delete = '^?'; + eeof = '^e'; + einp = '^w'; + insrt = '\E '; + + # pf keys + pfk1 = '\E1' | '^A@^m'; + pfk2 = '\E2' | '^AA^m'; + pfk3 = '\E3' | '^AB^m'; + pfk4 = '\E4' | '^AC^m'; + pfk5 = '\E5' | '^AD^m'; + pfk6 = '\E6' | '^AE^m'; + pfk7 = '\E7' | '^AF^m'; + pfk8 = '\E8'; + pfk9 = '\E9'; + pfk10 = '\E0'; + pfk11 = '\E!' | '\E^A@^m'; + pfk12 = '\E@' | '\E^AA^m'; + pfk13 = '\E#' | '\E^AB^m'; + pfk14 = '\E$' | '\E^AC^m'; + pfk15 = '\E%' | '\E^AD^m'; + pfk16 = '\E^AE^m' | '\E\^'; + pfk17 = '\E&' | '\E^AF^m'; + pfk18 = '\E*'; + pfk19 = '\E('; + pfk20 = '\E)'; + + # program attention keys + pa1 = '^AG^m'; + pa2 = '^AH^m'; + pa3 = '^AI^m'; + + # other keys +# # cursel = '\E.'; + centsign = '^\'; + + # local control keys + + reset = '^t'; # well, there is a little confusion here... + master_reset = '^g'; + flinp = '^x'; + reshow = '^v'; # redisplay screen + escape = '^c'; # escape to telnet command mode + + # local editing keys + settab = '\E;'; + clrtab = '\E:'; + setmrg = '\E['; + sethom = '\E+'; + coltab = '\Ei' | '\EI'; + colbak = '\Eb' | '\EB'; + indent = '\El' | '\EL'; + undent = '\Eh' | '\EH'; +} # end of tvipt +vt100 | vt100nam | pt100 | vt125 | vt102 | direct831 | tek4125 | pcplot | microvax{ +enter = '^m'; +clear = '^z' | '\EOM'; + +nl = '^?'; +tab = '^i'; +btab = '^b'; +left = '^h' | '\EOD'; +right = '^l' | '\EOC'; +up = '^k' | '\EOA'; +down = '^j' | '\EOB'; +home = '\EOn'; + +delete = '^d'; +eeof = '^e'; +einp = '^w'; +insrt = '^ ' | '\E '; + +# pf keys +pfk1 = '\EOq' | '\E1'; pfk2 = '\EOr' | '\E2'; pfk3 = '\EOs' | '\E3'; +pfk4 = '\EOt' | '\E4'; pfk5 = '\EOu' | '\E5'; pfk6 = '\EOv' | '\E6'; +pfk7 = '\EOw' | '\E7'; pfk8 = '\EOx' | '\E8'; pfk9 = '\EOy' | '\E9'; +pfk10 = '\EOP\EOp' | '\E0'; pfk11 = '\EOP\EOq' | '\E-'; +pfk12 = '\EOP\EOr' | '\E='; pfk13 = '\EOP\EOs' | '^f13'; +pfk14 = '\EOP\EOt' | '^f14'; pfk15 = '\EOP\EOu' | '^f15'; +pfk16 = '\EOP\EOv' | '^f16'; pfk17 = '\EOP\EOw' | '^f17'; +pfk18 = '\EOP\EOx' | '^f18'; pfk19 = '\EOP\EOy' | '^f19'; +pfk20 = '\EOQ\EOp' | '^f20'; pfk21 = '\EOQ\EOq' | '^f21'; + +# program attention keys +pa1 = '\E\EOP' | '^p1'; +pa2 = '\E\EOQ' | '^p2'; + +# local control keys + +escape = '^c'; # escape to telnet command mode +master_reset = '^g'; + centsign = '^\'; + +# local editing keys +settab = '\E;'; +deltab = '\E\''; +clrtab = '\E:'; +setmrg = '\E,'; +sethom = '\E.'; +coltab = '\E\E[B'; +colbak = '\E\E[A'; +indent = '\E\E[C'; +undent = '\E\E[D'; +} # end of vt100, etc. + +sun { + enter = '^m'; + clear = '^z' | '\E[222z'; + + nl = '^j'; + tab = '^i'; + btab = '^b' | '\E[195z' | '\E[216z'; + left = '^h' | '\E[D' | '\EOD'; + right = '^l' | '\E[C' | '\EOC'; + up = '^k' | '\E[A' | '\EOA'; + down = '\E[B' | '\EOB'; + home = '\E[218z'; + + delete = '^d' | '^?'; + eeof = '^e' | '\E[214z'; + einp = '^w' | '\E[213z'; + insrt = '\E ' | '\E[220z'; + dp = '^u'; + fm = '^y'; + + # pf keys + pfk1 = '\E[224z' | '\E1'; pfk2 = '\E[225z' | '\E2'; + pfk3 = '\E[226z' | '\E3'; pfk4 = '\E[227z' | '\E4'; + pfk5 = '\E[228z' | '\E5'; pfk6 = '\E[229z' | '\E6'; + pfk7 = '\E[230z' | '\E7'; pfk8 = '\E[231z' | '\E8'; + pfk9 = '\E[232z' | '\E9'; pfk10 = '\E[208z' | '\E0'; + pfk11 = '\E[209z' | '\E-'; pfk12 = '\E[210z' | '\E='; + pfk13 = '^f13'; pfk14 = '^f14'; pfk15 = '^f15'; pfk16 = '^f16'; + pfk17 = '^f17'; pfk18 = '^f18'; pfk19 = '^f19'; pfk20 = '^f20'; + pfk21 = '^f21'; pfk22 = '^f22'; pfk23 = '^f23'; pfk24 = '^f24'; + + # program attention keys + pa1 = '^p1' | '\E[211z'; + pa2 = '^p2' | '\E[212z'; + pa3 = '^p3'; + + # other keys + cursel = '\E.'; + centsign = '^\'; + + # local control keys + + reset = '^t'; # well, there is a little confusion here... + master_reset = '^g'; + flinp = '^x'; + reshow = '^v'; # redisplay screen + escape = '^c'; # escape to telnet command mode + + # local editing keys + settab = '\E;'; + clrtab = '\E+'; + setmrg = '\E('; + sethom = '\E!'; + coltab = '\Ei'; + colbak = '\Eb'; + indent = '\El'; + undent = '\Eh'; +} # end of sun +# +# Works with /usr/ucb/tn3270 except tn3270pc which requires /usr/new/tn3270. +# +msk22714 | mskermit22714 | msk227 | mskermit227 { +# +# 9-5-86 gts +# MS-Kermit UCB 227.14 to Unix then tn3270 to CMS. +# Includes underlying ADM3A keystrokes for full S/1 compatibiliy. +# Attempts to work for both "do unix" and "do cms" keyboards. Differences are +# marked with (C) for CMS only or (U) for Unix only. Incidental effects are +# enclosed in square brackets []. +# New functions WERASE Ctrl-\ and FERASE Ctrl-_. + + enter = '^m'; # <--' + clear = '^z'; # keypad + (C) + + nl = '^n'; # keypad End (C) + tab = '^i'; # --->| + btab = '^b' | '\E^I'; # |<--- (C|U) + left = '^h'; # keypad Left + right = '^l'; # keypad Right + up = '^k'; # keypad Up + down = '^j' | '\EB'; # keypad Down (U|C) + # [ keypad End (U) ] + home = '^^' | '^@'; # keypad Home (U|C) + dp = '^u' | '^a'; # [ keypad PgUp (U) ] + fm = '^y'; + + delete = '^d' | '^?'; # keypad Del + # [ keypad PgDn (U) ] + eeof = '^e'; + einp = '^w'; # keypad - (C) + insrt = '\E ' | '\Ei'; # keypad Ins (C|U) + + # pf keys IBM PC/XT/AT and ADM3A Esc d + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; pfk5 = '\E5'; + pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; pfk9 = '\E9'; pfk10= '\E0'; + # pf keys IBM PC/XT/AT Shift and ADM3A Ctrl-F nn + pfk11='^f11'; pfk12='^f12'; pfk13='^f13'; pfk14='^f14'; pfk15='^f15'; + pfk16='^f16'; pfk17='^f17'; pfk18='^f18'; pfk19='^f19'; pfk20='^f20'; + # pf keys IBM PC/XT/AT Ctrl- and ADM3A Ctrl-F nn + pfk21='^f21'; pfk22='^f22'; pfk23='^f23'; pfk24='^f24'; pfk25='^f25'; + pfk26='^f26'; pfk27='^f27'; pfk28='^f28'; pfk29='^f29'; pfk30='^f30'; + # pf keys IBM PC/XT/AT Ctrl-Shift- and ADM3A Ctrl-F nn + pfk31='^f31'; pfk32='^f32'; pfk33='^f33'; pfk34='^f34'; pfk35='^f35'; + pfk36='^f36'; + # pf keys IBM PC/XT/AT Alt-1 to Alt-= (generated as, Esc d, ^F 11, ^F 12) + # pf keys ADM3A Esc d (d = 1 to 0 interpreted as above) + pfk11 = '\E-'; pfk12 = '\E='; + + # program attention keys (same as ADM3A) + pa1 = '^p1'; # Alt-F1 + pa2 = '^p2'; # Alt-F2 + pa3 = '^p3'; # Alt-F3 + #pa4 = '^p4'; # Alt-F3 + #testreq = '^pr' | '^pR'; # Alt-F5 + + # other keys + cursel = '\E.'; + werase = '^\'; + ferase = '^_'; + + # local control keys + master_reset = '^g'; + reset = '^r' | '^t'; + flinp = '^x'; + reshow = '^v'; + escape = '^c'; # escape to telnet + + # local editing keys + settab = '\E;'; + deltab = '\E\''; + clrtab = '\E:' | '\E+'; + setmrg = '\E('; + sethom = '\E!'; + coltab = '\EI'; + #coltab = '\Ei' | '\EI'; # cannot use Esc i + colbak = '\Eb'; # on S/1 \EB is down + #colbak = '\Eb' | '\EB'; # cannot use Esc B + indent = '\El' | '\EL'; + undent = '\Eh' | '\EH'; # on S/1 \EH is Home + +} # end of msk22714 +# +ansisys | ansisysk | nansisys | nansisysk { +# +# 9-5-86 gts +# IBM PC/XT/AT using the ansi.sys | ansi.sysk | nansi.sys | nansi.sysk termcaps. +# +# PROBLEM: cannot use periods in termcap name until mset fixed (gts 9-5-86). +# +# PROBLEM: cannot use eval `mset ...` until Unix csh changed to allow more +# than 1024 characters in an environment string or until mset changed to +# return only the filename if the resulting string is longer than 1024. +# +# PROBLEM when NUL (^@) immediately follows a Return: Unix telent apparently +# ignores the NUL! (Can tn3270 negotiate a different newline?) +# +# Nearly identical to the map3270 for the IBM PC TN3270, which itself is nearly +# identical to the MS-Kermit UCB 227.14 keyboard which in turn was a modest +# improvement of the BIJOU Yterm keyboard. See HELP TN3270PC on CMS. +# Includes the underlying ADM3A keystrokes for full S/1 compatibility. +# Adds some Ctrl-keypad keys to compensate for TN3270 ROMBIOS dependency +# which prevents separate use of the keypad plus and minus keys. +# Adds new functions WERASE and FERASE. +# + + enter = '^m'; # <--' + clear = '^z' | '^@w'; # Ctrl-Home + + nl = '^n' | '^@O'; # keypad End + tab = '^i'; # --->| + btab = '^b' | '^@^O'; # |<--- + left = '^h' | '^@K'; # keypad Left + right = '^l' | '^@M'; # keypad Right + up = '^k' | '^@H'; # keypad Up + down = '^j' | '^@P'; # keypad Down + home = '^^' | '^@G'; # keypad Home + # (cannot use Ctrl-@) + dp = '^u'; + fm = '^y'; + + delete = '^d' | '^?' | '^@S'; # keypad Del + eeof = '^e' | '^@u'; # keypad Ctrl-End + einp = '^w'; + insrt = '\E ' | '^@R' | '\E\Ei'; # keypad Ins + + # pf keys IBM PC/XT/AT + pfk1 = '^@;'; pfk2 = '^@<'; pfk3 = '^@='; pfk4 = '^@>'; pfk5 = '^@?'; + pfk6 = '^@@'; pfk7 = '^@A'; pfk8 = '^@B'; pfk9 = '^@C'; pfk10= '^@D'; + # pf keys IBM PC/XT/AT Shift + pfk11 = '^@T'; pfk12 = '^@U'; pfk13 = '^@V'; pfk14 = '^@W'; pfk15 = '^@X'; + pfk16 = '^@Y'; pfk17 = '^@Z'; pfk18 = '^@['; pfk19 = '^@\\'; pfk20 = '^@]'; + # pf keys IBM PC/XT/AT Ctrl- + pfk21 = '^@\^';pfk22 = '^@_'; pfk23 = '^@`'; pfk24 = '^@a'; pfk25 = '^@b'; + pfk26 = '^@c'; pfk27 = '^@d'; pfk28 = '^@e'; pfk29 = '^@\f'; pfk30 = '^@g'; + # pf keys IBM PC/XT/AT Ctrl-Shift- (cannot be done yet with PC tn3270) + # pf keys IBM PC/XT/AT Alt-d + pfk1 = '^@x'; pfk2 = '^@y'; pfk3 = '^@z'; pfk4 = '^@{'; pfk5 = '^@|'; + pfk6 = '^@}'; pfk7 = '^@~'; pfk8 = '^@^?';pfk9 = '^@^@';pfk10= '^@^A'; + pfk11='^@^B'; pfk12= '^@^C'; + + # pf keys ADM3A Esc d + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; pfk5 = '\E5'; + pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; pfk9 = '\E9'; pfk10= '\E0'; + pfk11 = '\E-'; pfk12 = '\E='; + # pf keys ADM3A Ctrl-F n n + pfk1 = '^f01'; pfk2 = '^f02'; pfk3 = '^f03'; pfk4 = '^f04'; pfk5= '^f05'; + pfk6 = '^f06'; pfk7 = '^f07'; pfk8 = '^f08'; pfk9 = '^f09'; pfk10= '^f10'; + pfk11= '^f11'; pfk12= '^f12'; pfk13= '^f13'; pfk14= '^f14'; pfk15= '^f15'; + pfk16= '^f16'; pfk17= '^f17'; pfk18= '^f18'; pfk19= '^f19'; pfk20= '^f20'; + pfk21= '^f21'; pfk22= '^f22'; pfk23= '^f23'; pfk24= '^f24'; pfk25= '^f25'; + pfk26= '^f26'; pfk27= '^f27'; pfk28= '^f28'; pfk29= '^f29'; pfk30= '^f30'; + pfk31= '^f31'; pfk32= '^f32'; pfk33= '^f33'; pfk34= '^f34'; pfk35= '^f35'; + pfk36= '^f36'; + + # program attention keys + pa1 = '^p1' | '^@h'; # Alt-F1 + pa2 = '^p2' | '^@i'; # Alt-F2 + pa3 = '^p3' | '^@j'; # Alt-F3 + #pa4 = '^p4' | '^@k'; # Alt-F4 + #testreq = '^pr' | '^pR' | '^@l' # Alt-F5 + + # other keys + cursel = '\E.'; + werase = '^\'; + ferase = '^_'; + pfk7 = '^@I' | '\E^U'; # keypad PgUp + pfk8 = '^@Q' | '\E^D'; # keypad PgDn + + # local control keys + reset = '^r' | '^t'; + master_reset = '^g'; + flinp = '^x'; + reshow = '^v'; + escape = '^c'; # escape to TN3270 command prompt + + # local editing keys + settab = '\E;'; + deltab = '\E\''; + clrtab = '\E:' | '\E+'; + setmrg = '\E('; + sethom = '\E!'; + coltab = '\Ei' | '\EI'; + colbak = '\Eb' | '\EB'; # on S/1 \EB is down + indent = '\El' | '\EL'; + undent = '\Eh' | '\EH'; # on S/1 \EH is Home + +} # end of ansi.sys +# +tn3270pc | ibm-3278-2 { +# +# 2-14-87 gts +# +# MAP3270 for the IBM PC logged into Unix with PC TN3270 with TERM=nansisys, +# nansisysk, ansisys or ansisysk, hence requires KETBD=tn3270pc. +# +# MAP3270 for the IBM PC +# Nearly identical to the MS-Kermit UCB 227.14 keyboard which in turn was +# an modest improvement of the BIJOU Yterm keyboard. +# Includes underlying ADM3A keystrokes for full S/1 compatibiliy. +# Adds some Ctrl-keypad keys to compensate for TN3270 ROMBIOS dependency +# which prevents separate use of the keypad plus and minus keys, and adds +# new functions WERASE, FERASE, WORDTAB, WORDBACKTAB, WORDEND and FIELDEND. +# Where possible these extensions are compatible with IBM PC keystroke usage +# (see XT technical reference manual Keyboard Usage Guidelines). +# Includes F11 and F12 keys from the new IBM PC/XT/AT keyboard. +# + + centsign = '\Ec' | '\EC'; # CentSign for input + enter = '^m'; # <--' + clear = '^z' | '^Aw'; # Ctrl-Home + + nl = '^n' | '^AO'; # keypad End + tab = '^i'; # --->| + btab = '^b' | '\E^I' | '^A^O'; # |<--- + left = '^h' | '^AK'; # keypad Left + right = '^l' | '^AM'; # keypad Right + up = '^k' | '^AH'; # keypad Up + down = '^j' | '^AP'; # keypad Down + home = '^^' | '^AG' | '^@'; # keypad Home + dp = '^u'; + fm = '^y'; + + delete = '^d' | '^AS'; # keypad Del + eeof = '^e' | '^Au'; # keypad End + einp = '^w'; + insrt = '\E ' | '^AR'; # keypad Ins + + # pf keys IBM PC/XT/AT + pfk1 = '^A;'; pfk2 = '^A<'; pfk3 = '^A='; pfk4 = '^A>'; pfk5 = '^A?'; + pfk6 = '^A@'; pfk7 = '^AA'; pfk8 = '^AB'; pfk9 = '^AC'; pfk10= '^AD'; + # pf keys IBM PC/XT/AT Shift + pfk11 = '^AT'; pfk12 = '^AU'; pfk13 = '^AV'; pfk14 = '^AW'; pfk15 = '^AX'; + pfk16 = '^AY'; pfk17 = '^AZ'; pfk18 = '^A['; pfk19 = '^A\\'; pfk20 = '^A]'; + # pf keys IBM PC/XT/AT Ctrl- + pfk21 = '^A\^';pfk22 = '^A_'; pfk23 = '^A`'; pfk24 = '^Aa'; pfk25 = '^Ab'; + pfk26 = '^Ac'; pfk27 = '^Ad'; pfk28 = '^Ae'; pfk29 = '^Af'; pfk30 = '^Ag'; + # pf keys IBM PC/XT/AT Alt-d + pfk1 = '^Ax'; pfk2 = '^Ay'; pfk3 = '^Az'; pfk4 = '^A{'; pfk5 = '^A|'; + pfk6 = '^A}'; pfk7 = '^A~'; pfk8 = '^A^?';pfk9 = '^A^A^@';pfk10= '^A^A^A'; + pfk11='^A^A^b'; pfk12= '^A^A^c'; + # pf keys NEW IBM PC/XT/AT Keyboard + pfk11='^A^A^e'; pfk12= '^A^A^f'; + + # pf keys ADM3A Esc d + pfk1 = '\E1'; pfk2 = '\E2'; pfk3 = '\E3'; pfk4 = '\E4'; pfk5 = '\E5'; + pfk6 = '\E6'; pfk7 = '\E7'; pfk8 = '\E8'; pfk9 = '\E9'; pfk10= '\E0'; + pfk11 = '\E-'; pfk12 = '\E='; + # pf keys ADM3A Ctrl-F n n + pfk1 = '^f01'; pfk2 = '^f02'; pfk3 = '^f03'; pfk4 = '^f04'; pfk5= '^f05'; + pfk6 = '^f06'; pfk7 = '^f07'; pfk8 = '^f08'; pfk9 = '^f09'; pfk10= '^f10'; + pfk11= '^f11'; pfk12= '^f12'; pfk13= '^f13'; pfk14= '^f14'; pfk15= '^f15'; + pfk16= '^f16'; pfk17= '^f17'; pfk18= '^f18'; pfk19= '^f19'; pfk20= '^f20'; + pfk21= '^f21'; pfk22= '^f22'; pfk23= '^f23'; pfk24= '^f24'; pfk25= '^f25'; + pfk26= '^f26'; pfk27= '^f27'; pfk28= '^f28'; pfk29= '^f29'; pfk30= '^f30'; + pfk31= '^f31'; pfk32= '^f32'; pfk33= '^f33'; pfk34= '^f34'; pfk35= '^f35'; + pfk36= '^f36'; + + # program attention keys + pa1 = '^p1' | '^Ah'; # Alt-F1 + pa2 = '^p2' | '^Ai'; # Alt-F2 + pa3 = '^p3' | '^Aj'; # Alt-F3 + treq = '^pr' | '^pR' | '^Al'; # Alt-F5 + + # other keys + cursel = '\E.'; + werase = '^\'; + ferase = '^_'; + wordtab = '^At'; # Ctrl-Right + wordbacktab = '^As'; # Ctrl-Left + wordend = '^A^A^d'; # Ctrl-PgUp + fieldend = '^Av'; # Ctrl-PgDn + pfk7 = '^AI'; # keypad PgUp + pfk8 = '^AQ'; # keypad PgDn + + # local control keys + reset = '^r' | '^t'; + master_reset = '^g'; + flinp = '^x'; + reshow = '^v'; + escape = '^c'; # to command prompt + disc = '^pS1D'; # disconnect (suspend)? + sync = '^pS1S'; # in sync with user? + + # local editing keys + settab = '\E;'; + deltab = '\E\''; + clrtab = '\E:' | '\E+'; + setmrg = '\E('; + sethom = '\E!'; + coltab = '\Ei' | '\EI'; + colbak = '\Eb' | '\EB'; # on S/1 \EB is down + indent = '\El' | '\EL'; + undent = '\Eh' | '\EH'; # on S/1 \EH is Home + +} # end of tn3270pc diff --git a/usr/src/share/termcap/reorder b/usr/src/share/termcap/reorder new file mode 100644 index 0000000000..dbc1b43cad --- /dev/null +++ b/usr/src/share/termcap/reorder @@ -0,0 +1,62 @@ +/# << EOH -/k a +/|adm12|/;.,/^[^ ]/-m'a +/|pcplot/;.,/^[^ ]/-m'a +/|c100|/;.,/^[^ ]/-m'a +/|c100-rv|/;.,/^[^ ]/-m'a +/|c100-rv-pp|/;.,/^[^ ]/-m'a +/|c108-4p|/;.,/^[^ ]/-m'a +/|c108-rv-4p|/;.,/^[^ ]/-m'a +/|c108-8p|/;.,/^[^ ]/-m'a +/|c108-rv-8p|/;.,/^[^ ]/-m'a +/|avt|/;.,/^[^ ]/-m'a +/|avt-rv|/;.,/^[^ ]/-m'a +/|avt-4p-s|/;.,/^[^ ]/-m'a +/|avt-8p-s|/;.,/^[^ ]/-m'a +/|ansi.sys|/;.,/^[^ ]/-m'a +/|ansi.sysk|/;.,/^[^ ]/-m'a +/|nansi.sys|/;.,/^[^ ]/-m'a +/|nansi.sysk|/;.,/^[^ ]/-m'a +/|h19kermit|/;.,/^[^ ]/-m'a +/|mskermit22714|/;.,/^[^ ]/-m'a +/|mskermit227am|/;.,/^[^ ]/-m'a +/|mskermit227|/;.,/^[^ ]/-m'a +/|pckermit120|/;.,/^[^ ]/-m'a +/|pckermit|/;.,/^[^ ]/-m'a +/|kermitam|/;.,/^[^ ]/-m'a +/|kermit|/;.,/^[^ ]/-m'a +/|sun-17|/;.,/^[^ ]/-m'a +/|sun-24|/;.,/^[^ ]/-m'a +/|sun-34|/;.,/^[^ ]/-m'a +/|sun-48|/;.,/^[^ ]/-m'a +/|sun-s-e|/;.,/^[^ ]/-m'a +/|sun-s|/;.,/^[^ ]/-m'a +/|sun-e|/;.,/^[^ ]/-m'a +/|sun|/;.,/^[^ ]/-m'a +/|xterms|/;.,/^[^ ]/-m'a +/|xterm|/;.,/^[^ ]/-m'a +/|adm3|/;.,/^[^ ]/-m'a +/|adm31|/;.,/^[^ ]/-m'a +/|adm3a|/;.,/^[^ ]/-m'a +/|tvi924vb|/;.,/^[^ ]/-m'a +/|tvi924|/;.,/^[^ ]/-m'a +/|tvi920|/;.,/^[^ ]/-m'a +/|tvi920c|/;.,/^[^ ]/-m'a +/|tvi925vb|/;.,/^[^ ]/-m'a +/|tvi925|/;.,/^[^ ]/-m'a +/|vt100|/;.,/^[^ ]/-m'a +/|vt220|/;.,/^[^ ]/-m'a +/|hp|/;.,/^[^ ]/-m'a +/|2645|/;.,/^[^ ]/-m'a +/|2621-nl|/;.,/^[^ ]/-m'a +/|2621|/;.,/^[^ ]/-m'a +/|h29|/;.,/^[^ ]/-m'a +/|h19|/;.,/^[^ ]/-m'a +/|h19-u|/;.,/^[^ ]/-m'a +/|h19-us|/;.,/^[^ ]/-m'a +/|h19-e|/;.,/^[^ ]/-m'a +/|h19-g|/;.,/^[^ ]/-m'a +/|5620|/;.,/^[^ ]/-m'a +/^s/;.,/^#/-m'a +'ad +w! termcap +q diff --git a/usr/src/share/termcap/tck b/usr/src/share/termcap/tck new file mode 100644 index 0000000000..0f49e67a2a --- /dev/null +++ b/usr/src/share/termcap/tck @@ -0,0 +1,91 @@ +#!/bin/sh - +# +# Copyright (c) 1991 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)tck 5.2 (Berkeley) 4/17/91 +# + +# Look for default (and termcap-only?) capabilities. +# Defaults should be removed to save space. + +showtc $* | \ +sed -n \ + -e 's/ bc=^H$/DEFAULT &/p' \ + -e 's/ bc=\\h$/DEFAULT &/p' \ + -e 's/ bc=\\10$/DEFAULT &/p' \ + -e 's/ bc=\\010$/DEFAULT &/p' \ + -e 's/ bl=^G$/DEFAULT &/p' \ + -e 's/ bl=\\7$/DEFAULT &/p' \ + -e 's/ bl=\\07$/DEFAULT &/p' \ + -e 's/ bl=\\007$/DEFAULT &/p' \ + -e 's/ cr=^M$/DEFAULT &/p' \ + -e 's/ cr=\\r$/DEFAULT &/p' \ + -e 's/ cr=\\15$/DEFAULT &/p' \ + -e 's/ cr=\\015$/DEFAULT &/p' \ + -e 's/ ff=^L$/DEFAULT &/p' \ + -e 's/ ff=^L$/DEFAULT &/p' \ + -e 's/ ff=\\14$/DEFAULT &/p' \ + -e 's/ ff=\\014$/DEFAULT &/p' \ + -e 's/ nl=^J$/DEFAULT &/p' \ + -e 's/ nl=\\n$/DEFAULT &/p' \ + -e 's/ nl=\\12$/DEFAULT &/p' \ + -e 's/ nl=\\012$/DEFAULT &/p' \ + -e 's/ ta=^I$/DEFAULT &/p' \ + -e 's/ ta=\\t$/DEFAULT &/p' \ + -e 's/ ta=\\11$/DEFAULT &/p' \ + -e 's/ ta=\\011$/DEFAULT &/p' \ + \ + -e 's/ bc$/TERMCAP ONLY &/p' \ + -e 's/ bs$/TERMCAP ONLY &/p' \ + -e 's/ dB$/TERMCAP ONLY &/p' \ + -e 's/ dC$/TERMCAP ONLY &/p' \ + -e 's/ dF$/TERMCAP ONLY &/p' \ + -e 's/ dN$/TERMCAP ONLY &/p' \ + -e 's/ dT$/TERMCAP ONLY &/p' \ + -e 's/ dV$/TERMCAP ONLY &/p' \ + -e 's/ EP$/TERMCAP ONLY &/p' \ + -e 's/ HD$/TERMCAP ONLY &/p' \ + -e 's/ kn$/TERMCAP ONLY &/p' \ + -e 's/ ko$/TERMCAP ONLY &/p' \ + -e 's/ LC$/TERMCAP ONLY &/p' \ + -e 's/ ma$/TERMCAP ONLY &/p' \ + -e 's/ ml$/TERMCAP ONLY &/p' \ + -e 's/ mu$/TERMCAP ONLY &/p' \ + -e 's/ nc$/TERMCAP ONLY &/p' \ + -e 's/ NL$/TERMCAP ONLY &/p' \ + -e 's/ nl$/TERMCAP ONLY &/p' \ + -e 's/ ns$/TERMCAP ONLY &/p' \ + -e 's/ OP$/TERMCAP ONLY &/p' \ + -e 's/ pt$/TERMCAP ONLY &/p' \ + -e 's/ UC$/TERMCAP ONLY &/p' \ + -e 's/ xr$/TERMCAP ONLY &/p' \ + -e 's/ xx$/TERMCAP ONLY &/p' \ diff --git a/usr/src/share/termcap/termcap.5 b/usr/src/share/termcap/termcap.5 new file mode 100644 index 0000000000..3214bae8c9 --- /dev/null +++ b/usr/src/share/termcap/termcap.5 @@ -0,0 +1,1845 @@ +.\" Copyright (c) 1985, 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)termcap.5 6.9 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt TERMCAP 5 +.Os BSD 3 +.Sh NAME +.Nm termcap +.Nd terminal capability data base +.Sh SYNOPSIS +.Nm termcap +.Sh DESCRIPTION +The +.Nm Termcap +file +is a data base describing terminals, +used, +for example, +by +.Xr \&vi 1 +and +.Xr curses 3 . +Terminals are described in +.Nm termcap +by giving a set of capabilities that they have and by describing +how operations are performed. +Padding requirements and initialization sequences +are included in +.Nm termcap . +.Pp +Entries in +.Nm termcap +consist of a number of `:'-separated fields. +The first entry for each terminal gives the names that are known for the +terminal, separated by `|' characters. +The first name is always two characters +long and is used by older systems which store the terminal type +in a 16-bit word in a system-wide data base. +The second name given is the most common abbreviation for the terminal, +the last name given should be a long name fully identifying the terminal, +and all others are understood as synonyms for the terminal name. +All names but the first and last +should be in lower case and contain no blanks; +the last name may well contain +upper case and blanks for readability. +.Pp +Terminal names (except for the last, verbose entry) +should be chosen using the following conventions. +The particular piece of hardware making up the terminal +should have a root name chosen, thus +.Dq hp2621 +This name should not contain hyphens. +Modes that the hardware can be in +or user preferences +should be indicated by appending a hyphen and an indicator of the mode. +Therefore, a +.Dq vt100 +in 132-column mode would be +.Dq vt100-w . +The following suffixes should be used where possible: +.Pp +.Bd -filled -offset indent +.Bl -column indent "With automatic margins (usually default)xx" +.Sy Suffix Meaning Example +-w Wide mode (more than 80 columns) vt100-w +-am With automatic margins (usually default) vt100-am +-nam Without automatic margins vt100-nam +.Pf \- Ar n Ta No "Number of lines on the screen aaa-60" +-na No arrow keys (leave them in local) concept100-na +.Pf \- Ar \&np Ta No "Number of pages of memory concept100-4p" +-rv Reverse video concept100-rv +.El +.Ed +.Sh CAPABILITIES +The characters in the +The +.Em Notes +function +field in the table have the following meanings +(more than one may apply to a capability): +.Pp +.Bd -unfilled -offset indent +N indicates numeric parameter(s) +P indicates that padding may be specified +* indicates that padding may be based on the number of lines affected +o indicates capability is obsolete +.Ed +.Pp +.Dq Obsolete +capabilities have no +.Em terminfo +equivalents, +since they were considered useless, +or are subsumed by other capabilities. +New software should not rely on them at all. +.Pp +.Bl -column indent indent indent +.Sy Name Type Notes Description +functions +.It "ae str (P) End alternate character set." +.It AL str (NP*) Add" +.Em n +new blank lines +.It "al str (P*) Add new blank line." +.It "am bool Terminal has automatic margins." +.It "as str (P) Start alternate character set." +.It "bc str (o) Backspace if not." +.Sy \&^H . +.It "bl str (P) Audible signal (bell)." +.It "bs bool (o) Terminal can backspace with" +.Sy \&^H . +.It "bt str (P) Back tab." +.It "bw bool " Ta Sy \&le +(backspace) wraps from column 0 to last column. +.It "CC str Terminal settable command character in prototype." +.It "cd str (P*) Clear to end of display." +.It "ce str (P) Clear to end of line." +.It "ch str (NP) Set cursor column (horizontal position)." +.It "cl str (P*) Clear screen and home cursor." +.It "CM str (NP) Memory-relative cursor addressing." +.It "cm str (NP) Screen-relative cursor motion." +.It "co num Number of columns in a line (See" +.Sx BUGS +section below). +.It "cr str (P) Carriage return." +.It "cs str (NP) Change scrolling region (VT100)." +.It "ct str (P) Clear all tab stops." +.It "cv str (NP) Set cursor row (vertical position)." +.It "da bool Display may be retained above the screen." +.It "dB num (o) Milliseconds of" +.Sy \&bs +delay needed (default 0). +.It "db bool Display may be retained below the screen." +.It "DC str (NP*) Delete" +.Em n +characters. +.It "dC num (o) Milliseconds of" +.Sy \&cr +delay needed (default 0). +.It "dc str (P*) Delete character." +.It "dF num (o) Milliseconds of" +.Sy \&ff +delay needed (default 0). +.It "DL str (NP*) Delete" +.Ar n +lines. +.It "dl str (P*) Delete line." +.It "dm str Enter delete mode." +.It "dN num (o) Milliseconds of +.Sy \&nl +delay needed (default 0). +.It "DO str (NP*) Move cursor down: +.Ar n +lines. +.It "do str Down one line." +.It "ds str Disable status line." +.It "dT num (o) Milliseconds of horizontal tab delay needed (default 0)." +.It "dV num (o) Milliseconds of vertical tab delay needed (default 0)." +.It "ec str (NP) Erase" +.Ar n +characters. +.It "ed str End delete mode." +.It "ei str End insert mode." +.It "eo bool Can erase overstrikes with a blank." +.It "EP bool (o) Even parity." +.It "es bool Escape can be used on the status line." +.It "ff str (P*) Hardcopy terminal page eject." +.It "fs str Return from status line." +.It "gn bool Generic line type, for example dialup, switch)." +.It "hc bool Hardcopy terminal." +.It "HD bool (o) Half-duplex." +.It "hd str Half-line down (forward 1/2 linefeed)." +.It "ho str (P) Home cursor." +.It "hs bool Has extra" +.Dq status line . +.It "hu str Half-line up (reverse 1/2 linefeed)." +.It "hz bool Cannot print ``~'' (Hazeltine)." +.It "i1-i3 str Terminal initialization strings" +.Pf ( Xr terminfo +only) +.It "IC str (NP*) Insert" +.Ar n +blank characters. +.It "ic str (P*) Insert character." +.It "if str Name of file containing initialization string." +.It "im str Enter insert mode." +.It "in bool Insert mode distinguishes nulls." +.It "iP str Pathname of program for initialization" +.Pf ( Xr terminfo +only). +.It "ip str (P*) Insert pad after character inserted." +.It "is str Terminal initialization string" +.Pf ( Nm termcap +only). +.It "it num Tabs initially every" +.Ar n +positions. +.It "K1 str Sent by keypad upper left." +.It "K2 str Sent by keypad upper right." +.It "K3 str Sent by keypad center." +.It "K4 str Sent by keypad lower left." +.It "K5 str Sent by keypad lower right." +.It "k0-k9 str Sent by function keys 0-9." +.It "kA str Sent by insert-line key." +.It "ka str Sent by clear-all-tabs key." +.It "kb str Sent by backspace key." +.It "kC str Sent by clear-screen or erase key." +.It "kD str Sent by delete-character key." +.It "kd str Sent by down-arrow key." +.It "kE str Sent by clear-to-end-of-line key." +.It "ke str Out of" +.Dq keypad transmit +mode. +.It "kF str Sent by scroll-forward/down key." +.It "kH str Sent by home-down key." +.It "kh str Sent by home key." +.It "kI str Sent by insert-character or enter-insert-mode key." +.It "kL str Sent by delete-line key." +.It "kl str Sent by left-arrow key." +.It "kM str Sent by insert key while in insert mode." +.It "km bool Has a" +.Dq meta +key (shift, sets parity bit). +.It "kN str Sent by next-page key." +.It "kn num (o) Number of function" +.Pq Sy \&k\&0 Ns \- Sy \&k\&9 +keys (default 0). +.It "ko str (o) Termcap entries for other non-function keys." +.It "kP str Sent by previous-page key." +.It "kR str Sent by scroll-backward/up key." +.It "kr str Sent by right-arrow key." +.It "kS str Sent by clear-to-end-of-screen key." +.It "ks str Put terminal in" +.Dq keypad transmit +mode. +.It "kT str Sent by set-tab key." +.It "kt str Sent by clear-tab key." +.It "ku str Sent by up-arrow key." +.It "l0-l9 str Labels on function keys if not" +.Dq \&f Ns Em n . +.It "LC bool (o) Lower-case only." +.It "LE str (NP) Move cursor left" +.Ar n +positions. +.It "le str (P) Move cursor left one position." +.It "li num Number of lines on screen or page (See" +.Sx BUGS +section below) +.It "ll str Last line, first column +.It "lm num Lines of memory if >" Sy \&li +(0 means varies). +.It "ma str (o) Arrow key map (used by" +.Xr \&vi +version 2 only). +.It "mb str Turn on blinking attribute." +.It "md str Turn on bold (extra bright) attribute." +.It "me str Turn off all attributes." +.It "mh str Turn on half-bright attribute." +.It "mi bool Safe to move while in insert mode." +.It "mk str Turn on blank attribute (characters invisible)." +.It "ml str (o) Memory lock on above cursor." +.It "mm str Turn on" +.Dq meta mode +(8th bit). +.It "mo str Turn off" +.Dq meta mode . +.It "mp str Turn on protected attribute." +.It "mr str Turn on reverse-video attibute." +.It "ms bool Safe to move in standout modes." +.It "mu str (o) Memory unlock (turn off memory lock)." +.It "nc bool (o) No correctly-working" +.Sy \&cr +(Datamedia 2500, Hazeltine 2000). +.It "nd str Non-destructive space (cursor right)." +.It "NL bool (o)" Ta Sy \&\en No "is newline, not line feed." +.It "nl str (o) Newline character if not" Sy \en . +.It "ns bool (o) Terminal is a" Tn CRT No "but doesn't scroll." +.It "nw str (P) Newline (behaves like" +.Sy \&cr +followed by +.Sy \&do ). +.It "OP bool (o) Odd parity." +.It "os bool Terminal overstrikes." +.It "pb num Lowest baud where delays are required." +.It "pc str Pad character (default" Tn NUL ). +.It "pf str Turn off the printer." +.It "pk str Program function key" +.Em n +to type string +.Em s +.Pf ( Xr terminfo +only). +.It "pl str Program function key" +.Em n +to execute string +.Em s +.Pf ( Xr terminfo +only). +.It "pO str (N) Turn on the printer for" +.Em n +bytes. +.It "po str Turn on the printer." +.It "ps str Print contents of the screen." +.It "pt bool (o) Has hardware tabs (may need to be set with" +.Sy \&is ). +.It "px str Program function key" +.Em n +to transmit string +.Em s +.Pf ( Xr terminfo +only). +.It "r1-r3 str Reset terminal completely to sane modes" +.Pf ( Xr terminfo +only). +.It "rc str (P) Restore cursor to position of last" +.Sy \&sc . +.It "rf str Name of file containing reset codes." +.It "RI str (NP) Move cursor right" +.Em n +positions. +.It "rp str (NP*) Repeat character" +.Em c n +times. +.It "rs str Reset terminal completely to sane modes" +.Pf ( Nm termcap +only). +.It "sa str (NP) Define the video attributes." +.It "sc str (P) Save cursor position." +.It "se str End standout mode." +.It "SF str (NP*) Scroll forward" +.Em n +lines. +.It "sf str (P) Scroll text up." +.It "sg num Number of garbage chars left by" +.Sy \&so +or +.Sy \&se +(default 0). +.It "so str Begin standout mode." +.It "SR str (NP*) Scroll backward" +.Em n +lines. +.It "sr str (P) Scroll text down." +.It "st str Set a tab in all rows, current column." +.It "ta str (P) Tab to next 8-position hardware tab stop." +.It "tc str Entry of similar terminal \- must be last." +.It "te str String to end programs that use" +.Nm termcap . +.It "ti str String to begin programs that use" +.Nm termcap . +.It "ts str (N) Go to status line, column" +.Em n . +.It "UC bool (o) Upper-case only." +.It "uc str Underscore one character and move past it." +.It "ue str End underscore mode." +.It "ug num Number of garbage chars left by" +.Sy \&us +or +.Sy \&ue +(default 0). +.It "ul bool Underline character overstrikes." +.It "UP str (NP*) Move cursor up" +.Em n +lines. +.It "up str Upline (cursor up)." +.It "us str Start underscore mode." +.It "vb str Visible bell (must not move cursor)." +.It "ve str Make cursor appear normal (undo" +.Sy \&vs Ns / Sy \&vi ) . +.It "vi str Make cursor invisible." +.It "vs str Make cursor very visible." +.It "vt num Virtual terminal number (not supported on all systems)." +.It "wi str (N) Set current window." +.It "ws num Number of columns in status line." +.It "xb bool Beehive" +.Pf ( "f1=" Dv ESC , +.Pf "f2=" Sy \&^C ) . +.It "xn bool Newline ignored after 80 cols (Concept)." +.It "xo bool Terminal uses xoff/xon" +.Pq Dv DC3 Ns / Ns Dv DC1 +handshaking. +.It "xr bool (o) Return acts like" +.Sy "ce cr nl" +(Delta Data). +.It "xs bool Standout not erased by overwriting (Hewlett-Packard)." +.It "xt bool Tabs ruin, magic" +.SY \&so +char (Teleray 1061). +.It "xx bool (o) Tektronix 4025 insert-line." +.El +.Ss A Sample Entry +The following entry, which describes the Concept\-100, is among the more +complex entries in the +.Nm termcap +file as of this writing. +.Pp +.Bd -literal +ca\||\|concept100\||\|c100\||\|concept\||\|c104\||\|concept100-4p\||\|HDS Concept\-100:\e + :al=3*\eE^R:am:bl=^G:cd=16*\eE^C:ce=16\eE^U:cl=2*^L:cm=\eEa%+ %+ :\e + :co#80:.cr=9^M:db:dc=16\eE^A:dl=3*\eE^B:do=^J:ei=\eE\e200:eo:im=\eE^P:in:\e + :ip=16*:is=\eEU\eEf\eE7\eE5\eE8\eEl\eENH\eEK\eE\e200\eEo&\e200\eEo\e47\eE:k1=\eE5:\e + :k2=\eE6:k3=\eE7:kb=^h:kd=\eE<:ke=\eEx:kh=\eE?:kl=\eE>:kr=\eE=:ks=\eEX:\e + :ku=\eE;:le=^H:li#24:mb=\eEC:me=\eEN\e200:mh=\eEE:mi:mk=\eEH:mp=\eEI:\e + :mr=\eED:nd=\eE=:pb#9600:rp=0.2*\eEr%.%+ :se=\eEd\eEe:sf=^J:so=\eEE\eED:\e + :.ta=8\et:te=\eEv \e200\e200\e200\e200\e200\e200\eEp\er\en:\e + :ti=\eEU\eEv 8p\eEp\er:ue=\eEg:ul:up=\eE;:us=\eEG:\e + :vb=\eEk\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\eEK:\e + :ve=\eEw:vs=\eEW:vt#8:xn:\e + :bs:cr=^M:dC#9:dT#8:nl=^J:ta=^I:pt: +.Ed +.Pp +Entries may continue onto multiple lines by giving a \e as the last +character of a line, and empty fields +may be included for readability (here between the last field on a line +and the first field on the next). +Comments may be included on lines beginning with +.Dq # . +.Ss Types of Capabilities +Capabilities in +.Nm termcap +are of three types: Boolean capabilities, +which indicate particular features that the terminal has; +numeric capabilities, +giving the size of the display or the size of other attributes; +and string capabilities, +which give character sequences that can be used to perform particular +terminal operations. +All capabilities have two-letter codes. +For instance, the fact that +the Concept has +.Em automatic margins +(an automatic return and linefeed +when the end of a line is reached) is indicated by the Boolean capability +.Sy \&am . +Hence the description of the Concept includes +.Sy \&am . +.Pp +Numeric capabilities are followed by the character `#' then the value. +In the example above +.Sy \&co , +which indicates the number of columns the display has, +gives the value `80' for the Concept. +.Pp +Finally, string-valued capabilities, such as +.Sy \&ce +(clear-to-end-of-line +sequence) are given by the two-letter code, an `=', then a string +ending at the next following `:'. +A delay in milliseconds may appear after +the `=' in such a capability, +which causes padding characters to be supplied by +.Xr tputs +after the remainder of the string is sent to provide this delay. +The delay can be either a number, +such as `20', or a number followed by +an `*', +such as `3*'. +An `*' indicates that the padding required is proportional +to the number of lines affected by the operation, and the amount given is +the per-affected-line padding required. +(In the case of insert-character, +the factor is still the number of +.Em lines +affected; +this is always 1 unless the terminal has +.Sy \&in +and the software uses it.) +When an `*' is specified, it is sometimes useful to give a delay of the form +`3.5' to specify a delay per line to tenths of milliseconds. +(Only one decimal place is allowed.) +.Pp +A number of escape sequences are provided in the string-valued capabilities +for easy encoding of control characters there. +.Sy \&\eE +maps to an +.Dv ESC +character, +.Sy \&^X +maps to a control-X for any appropriate X, +and the sequences +.Sy \&\en +.Sy \&\er +.Sy \&\et +.Sy \&\eb +.Sy \&\ef +map to linefeed, return, tab, backspace, and formfeed, respectively. +Finally, characters may be given as three octal digits after a +.Sy \&\e , +and the characters +.Sy \&^ +and +.Sy \&\e +may be given as +.Sy \&\e^ +and +.Sy \&\e\e . +If it is necessary to place a +.Sy \&: +in a capability it must be escaped in +octal as +.Sy \&\e072 . +If it is necessary to place a +.Dv NUL +character in a string capability it +must be encoded as +.Sy \&\e200 . +(The routines that deal with +.Nm termcap +use C strings and strip the high bits of the output very late, so that +a +.Sy \&\e200 +comes out as a +.Sy \&\e000 +would.) +.Pp +Sometimes individual capabilities must be commented out. +To do this, put a period before the capability name. +For example, see the first +.Sy \&cr +and +.Sy \&ta +in the example above. +.Ss Preparing Descriptions +The most effective way to prepare a terminal description is by imitating +the description of a similar terminal in +.Nm termcap +and to build up a description gradually, using partial descriptions +with +.Xr \&vi +to check that they are correct. +Be aware that a very unusual terminal may expose deficiencies in +the ability of the +.Nm termcap +file to describe it +or bugs in +.Xr \&vi . +To easily test a new terminal description you are working on +you can put it in your home directory in a file called +.Pa .termcap +and programs will look there before looking in +.Pa /usr/share/misc/termcap . +You can also set the environment variable +.Ev TERMPATH +to a list of absolute file pathnames (separated by spaces or colons), +one of which contains the description you are working on, +and programs will search them in the order listed, and nowhere else. +See +.Xr termcap 3 . +The +.Ev TERMCAP +environment variable is usually set to the +.Nm termcap +entry itself +to avoid reading files when starting up a program. +.Pp +To get the padding for insert-line right +(if the terminal manufacturer did not document it), +a severe test is to use +.Xr \&vi +to edit +.Pa /etc/passwd +at 9600 baud, delete roughly 16 lines from the middle of the screen, +then hit the `u' key several times quickly. +If the display messes up, more padding is usually needed. +A similar test can be used for insert-character. +.Ss Basic Capabilities +The number of columns on each line of the display is given by the +.Sy \&co +numeric capability. +If the display is a +.Tn CRT , +then the +number of lines on the screen is given by the +.Sy \&li +capability. +If the display wraps around to the beginning of the next line when +the cursor reaches the right margin, then it should have the +.Sy \&am +capability. +If the terminal can clear its screen, +the code to do this is given by the +.Sy \&cl +string capability. +If the terminal overstrikes +(rather than clearing the position when a character is overwritten), +it should have the +.Sy \&os +capability. +If the terminal is a printing terminal, +with no soft copy unit, +give it both +.Sy \&hc +and +.Sy \&os . +.Pf ( Sy \&os +applies to storage scope terminals, +such as the Tektronix 4010 series, +as well as to hard copy and +.Tn APL +terminals.) +If there is a code to move the cursor to the left edge of the current row, +give this as +.Sy \&cr . +(Normally this will be carriage-return, +.Sy \&^M . ) +If there is a code to produce an audible signal (bell, beep, +etc. ) , +give this as +.Sy \&bl . +.Pp +If there is a code (such as backspace) +to move the cursor one position to the left, +that capability should be given as +.Sy \&le . +Similarly, +codes to move to the right, up, and down +should be given as +.Sy \&nd , +.Sy \&up , +and +.Sy \&do , +respectively. +These +.Em local cursor motions +should not alter the text they pass over; +for example, you would not normally use +.Dq nd=\ \& +unless the terminal has the +.Sy \&os +capability, +because the space would erase the character moved over. +.Pp +A very important point here is that the local cursor motions encoded +in +.Nm termcap +have undefined behavior at the left and top edges of a +.Tn CRT +display. +Programs should never attempt to backspace around the left edge, +unless +.Sy \&bw +is given, and never attempt to go up off the top +using local cursor motions. +.Pp +In order to scroll text up, +a program goes to the bottom left corner of the screen and sends the +.Sy \&sf +(index) string. +To scroll text down, +a program goes to the top left corner of the screen and sends the +.Sy \&sr +(reverse index) string. +The strings +.Sy \&sf +and +.Sy \&sr +have undefined behavior +when not on their respective corners of the screen. +Parameterized versions of the scrolling sequences are +.Sy \&SF +and +.Sy \&SR , +which have the same semantics as +.Sy \&sf +and +.Sy \&sr +except that they take one parameter +and scroll that many lines. +They also have undefined behavior +except at the appropriate corner of the screen. +.Pp +The +.Sy \&am +capability tells whether the cursor sticks at the right +edge of the screen when text is output there, +but this does not necessarily apply to +.Sy \&nd +from the last column. +Leftward local motion is defined from the left edge only when +.Sy \&bw +is given; then an +.Sy \&le +from the left edge will move to the right edge of the previous row. +This is useful for drawing a box around the edge of the screen, +for example. +If the terminal has switch-selectable automatic margins, +the +.Nm termcap +description usually assumes that this feature is on, +.Em i.e . , +.Sy \&am . +If the terminal has a command +that moves to the first column of the next line, +that command can be given as +.Sy \&nw +(newline). +It is permissible for this to clear the remainder of the current line, +so if the terminal has no correctly-working +.Tn \&CR +and +.Tn \&LF +it may still be possible to craft a working +.Sy \&nw +out of one or both of them. +.Pp +These capabilities suffice to describe hardcopy and +.Dq glass-tty +terminals. +Thus the Teletype model 33 is described as +.Bd -literal -offset indent +T3\||\|tty33\||\|33\||\|tty\||\|Teletype model 33:\e + :bl=^G:co#72:cr=^M:do=^J:hc:os: +.Ed +.Pp +and the Lear Siegler +.Tn ADM Ns \-3 +is described as +.Bd -literal -offset indent +l3\||\|adm3\||\|3\||\|LSI \s-1ADM\s0-3:\e +:am:bl=^G:cl=^Z:co#80:cr=^M:do=^J:le=^H:li#24:sf=^J: +.Ed +.Ss Parameterized Strings +Cursor addressing and other strings requiring parameters +are described by a +parameterized string capability, with +.Xr printf 3 Ns \-like +escapes +.Sy \&%x +in it, +while other characters are passed through unchanged. +For example, to address the cursor the +.Sy \&cm +capability is given, using two parameters: the row and column to move to. +(Rows and columns are numbered from zero and refer to the physical screen +visible to the user, not to any unseen memory. +If the terminal has memory-relative cursor addressing, +that can be indicated by an analogous +.Sy \&CM +capability.) +.Pp +The +.Sy \&% +encodings have the following meanings: +.Bl -column xxxxx +.It "%% output `%'" +.It "%d output value as in" +.Xr printf +%d +.It "%2 output value as in" +.Xr printf +%2d +.It "%3 output value as in" +.Xr printf +%3d +.It "%. output value as in" +.Xr printf +%c +.It "%+" Ns Em x Ta No add +.Em x +to value, then do %. +.It "%>" Ns Em \&xy Ta No if +value > +.Em x +then add +.Em y , +no output +.It "%r reverse order of two parameters, no output" +.It "%i increment by one, no output" +.It "%n exclusive-or all parameters with 0140 (Datamedia 2500)" +.It "%B" Ta Tn BCD No "(16*(value/10)) + (value%10), no output" +.It "%D Reverse coding (value \- 2*(value%16)), no output (Delta Data)." +.El +.Pp +Consider the Hewlett-Packard 2645, which, to get to row 3 and column 12, needs +to be sent +.Dq \eE&a12c03Y +padded for 6 milliseconds. +Note that the order +of the row and column coordinates is reversed here +and that the row and column +are sent as two-digit integers. +Thus its +.Sy \&cm +capability is +.Dq Li cm=6\eE&%r%2c%2Y . +.Pp +The Datamedia 2500 needs the current row and column sent +encoded in binary using +.Dq \&%. . +Terminals that use +.Dq \&%. +need to be able to +backspace the cursor +.Po Sy \&le Pc +and to move the cursor up one line on the screen +.Po Sy \&up Pc . +This is necessary because it is not always safe to transmit +.Sy \&\en , +.Sy \&^D , +and +.Sy \&\er , +as the system may change or discard them. +(Programs using +.Nm termcap +must set terminal modes so that tabs are not expanded, so +.Sy \&\et +is safe to send. +This turns out to be essential for the Ann Arbor 4080.) +.Pp +A final example is the Lear Siegler +.Tn ADM Ns \-3a, +which offsets row and column +by a blank character, thus +.Dq Li cm=\eE=%+ %+\ \& . +.Pp +Row or column absolute cursor addressing +can be given as single parameter capabilities +.Sy \&ch +(horizontal position absolute) and +.Sy \&cv +(vertical position absolute). +Sometimes these are shorter than the more general two-parameter sequence +(as with the Hewlett-Packard 2645) and can be used in preference to +.Sy \&cm . +If there are parameterized local motions +.Pf ( Em e.g . , +move +.Ar n +positions to the right) +these can be given as +.Sy \&DO , +.Sy \&LE , +.Sy \&RI , +and +.Sy \&UP +with a single parameter indicating how many positions to move. +These are primarily useful if the terminal does not have +.Sy \&cm , +such as the Tektronix 4025. +.Ss Cursor Motions +.Pp +If the terminal has a fast way to home the cursor +(to the very upper left corner of the screen), this can be given as +.Sy \&ho . +Similarly, a fast way of getting to the lower left-hand corner +can be given as +.Sy \&ll ; +this may involve going up with +.Sy \&up +from the home position, +but a program should never do this itself (unless +.Sy \&ll +does), because it can +make no assumption about the effect of moving up from the home position. +Note that the home position is the same as +cursor address (0,0): to the top left corner of the screen, not of memory. +(Therefore, the +.Dq \eEH +sequence on Hewlett-Packard terminals +cannot be used for +.Sy \&ho . ) +.Ss Area Clears +If the terminal can clear from the current position to the end of the +line, leaving the cursor where it is, this should be given as +.Sy \&ce . +If the terminal can clear from the current position to the end of the +display, this should be given as +.Sy \&cd . +.Sy \&cd +must only be invoked from the first column of a line. +(Therefore, +it can be simulated by a request to delete a large number of lines, +if a true +.Sy \&cd +is not available.) +.Ss Insert/Delete Line +If the terminal can open a new blank line +before the line containing the cursor, +this should be given as +.Sy \&al ; +this must be invoked only from the first +position of a line. +The cursor must then appear at the left of the newly blank line. +If the terminal can delete the line that the cursor is on, this +should be given as +.Sy \&dl ; +this must only be used from the first position on +the line to be deleted. +Versions of +.Sy \&al +and +.Sy \&dl +which take a single parameter +and insert or delete that many lines +can be given as +.Sy \&AL +and +.Sy \&DL . +If the terminal has a settable scrolling region +(like the VT100), +the command to set this can be described with the +.Sy \&cs +capability, +which takes two parameters: the top and bottom lines of the scrolling region. +The cursor position is, alas, undefined after using this command. +It is possible to get the effect of insert or delete line +using this command \(em the +.Sy \&sc +and +.Sy \&rc +(save and restore cursor) commands are also useful. +Inserting lines at the top or bottom of the screen can also be done using +.Sy \&sr +or +.Sy \&sf +on many terminals without a true insert/delete line, +and is often faster even on terminals with those features. +.Pp +If the terminal has the ability to define a window as part of memory +which all commands affect, it should be given as the parameterized string +.Sy \&wi . +The four parameters are the starting and ending lines in memory +and the starting and ending columns in memory, in that order. +(This +.Xr terminfo +capability is described for completeness. +It is unlikely that any +.Nm termcap Ns \- using +program will support it.) +.Pp +If the terminal can retain display memory above the screen, then the +.Sy \&da +capability should be given; +if display memory can be retained +below, then +.Sy \&db +should be given. +These indicate +that deleting a line or scrolling may bring non-blank lines up from below +or that scrolling back with +.Sy \&sr +may bring down non-blank lines. +.Ss Insert/Delete Character +There are two basic kinds of intelligent terminals with respect to +insert/delete character that can be described using +.Nm termcap . +The most common insert/delete character operations affect only the characters +on the current line and shift characters off the end of the line rigidly. +Other terminals, such as the Concept\-100 and the Perkin Elmer Owl, make +a distinction between typed and untyped blanks on the screen, shifting +upon an insert or delete only to an untyped blank on the screen which is +either eliminated or expanded to two untyped blanks. +You can determine +the kind of terminal you have by clearing the screen then typing +text separated by cursor motions. +Type +.Dq Li abc\ \ \ \ def +using local +cursor motions (not spaces) between the +.Dq abc +and the +.Dq def . +Then position the cursor before the +.Dq abc +and put the terminal in insert +mode. +If typing characters causes the rest of the line to shift +rigidly and characters to fall off the end, then your terminal does +not distinguish between blanks and untyped positions. +If the +.Dq abc +shifts over to the +.Dq def +which then move together around the end of the +current line and onto the next as you insert, then you have the second type of +terminal and should give the capability +.Sy \&in , +which stands for +.Dq insert null . +While these are two logically separate attributes +(one line +.Em \&vs . +multi-line insert mode, +and special treatment of untyped spaces), +we have seen no terminals whose insert +mode cannot be described with the single attribute. +.Pp +.Nm Termcap +can describe both terminals that have an insert mode and terminals +that send a simple sequence to open a blank position on the current line. +Give as +.Sy \&im +the sequence to get into insert mode. +Give as +.Sy \&ei +the sequence to leave insert mode. +Now give as +.Sy \&ic +any sequence that needs to be sent just before +each character to be inserted. +Most terminals with a true insert mode +will not give +.Sy \&ic ; +terminals that use a sequence to open a screen +position should give it here. +(If your terminal has both, +insert mode is usually preferable to +.Sy \&ic . +Do not give both unless the terminal actually requires both to be used +in combination.) +If post-insert padding is needed, give this as a number of milliseconds +in +.Sy \&ip +(a string option). +Any other sequence that may need to be +sent after insertion of a single character can also be given in +.Sy \&ip . +If your terminal needs to be placed into an `insert mode' +and needs a special code preceding each inserted character, +then both +.Sy \&im Ns / Sy \&ei +and +.Sy \&ic +can be given, and both will be used. +The +.Sy \&IC +capability, with one parameter +.Em n , +will repeat the effects of +.Sy \&ic +.Em n +times. +.Pp +It is occasionally necessary to move around while in insert mode +to delete characters on the same line +.Pf ( Em e.g . , +if there is a tab after +the insertion position). +If your terminal allows motion while in +insert mode, you can give the capability +.Sy \&mi +to speed up inserting +in this case. +Omitting +.Sy \&mi +will affect only speed. +Some terminals +(notably Datamedia's) must not have +.Sy \&mi +because of the way their +insert mode works. +.Pp +Finally, you can specify +.Sy \&dc +to delete a single character, +.Sy \&DC +with one parameter +.Em n +to delete +.Em n +characters, +and delete mode by giving +.Sy \&dm +and +.Sy \&ed +to enter and exit delete mode +(which is any mode the terminal needs to be placed in for +.Sy \&dc +to work). +.Ss Highlighting, Underlining, and Visible Bells +If your terminal has one or more kinds of display attributes, +these can be represented in a number of different ways. +You should choose one display form as +.Em standout mode , +representing a good high-contrast, easy-on-the-eyes format +for highlighting error messages and other attention getters. +(If you have a choice, reverse video plus half-bright is good, +or reverse video alone.) +The sequences to enter and exit standout mode +are given as +.Sy \&so +and +.Sy \&se , +respectively. +If the code to change into or out of standout +mode leaves one or even two blank spaces or garbage characters on the screen, +as the +.Tn TVI +912 and Teleray 1061 do, +then +.Sy \&sg +should be given to tell how many characters are left. +.Pp +Codes to begin underlining and end underlining can be given as +.Sy \&us +and +.Sy \&ue , +respectively. +Underline mode change garbage is specified by +.Sy \&ug , +similar to +.Sy \&sg . +If the terminal has a code to underline the current character and move +the cursor one position to the right, +such as the Microterm Mime, +this can be given as +.Sy \&uc . +.Pp +Other capabilities to enter various highlighting modes include +.Sy \&mb +(blinking), +.Sy \&md +(bold or extra bright), +.Sy \&mh +(dim or half-bright), +.Sy \&mk +(blanking or invisible text), +.Sy \&mp +(protected), +.Sy \&mr +(reverse video), +.Sy \&me +(turn off +.Em all +attribute modes), +.Sy \&as +(enter alternate character set mode), and +.Sy \&ae +(exit alternate character set mode). +Turning on any of these modes singly may or may not turn off other modes. +.Pp +If there is a sequence to set arbitrary combinations of mode, +this should be given as +.Sy \&sa +(set attributes), taking 9 parameters. +Each parameter is either 0 or 1, +as the corresponding attributes is on or off. +The 9 parameters are, in order: standout, underline, reverse, blink, +dim, bold, blank, protect, and alternate character set. +Not all modes need be supported by +.Sy \&sa , +only those for which corresponding attribute commands exist. +(It is unlikely that a +.Nm termcap Ns \-using +program will support this capability, which is defined for compatibility +with +.Xr terminfo . ) +.Pp +Terminals with the +.Dq magic cookie +glitches +.Pf ( Sy \&sg +and +.Sy \&ug ) , +rather than maintaining extra attribute bits for each character cell, +instead deposit special +.Dq cookies , +or +.Dq garbage characters ,, +when they receive mode-setting sequences, +which affect the display algorithm. +.Pp +Some terminals, +such as the Hewlett-Packard 2621, +automatically leave standout +mode when they move to a new line or when the cursor is addressed. +Programs using standout mode +should exit standout mode on such terminals +before moving the cursor or sending a newline. +On terminals where this is not a problem, +the +.Sy \&ms +capability should be present +to say that this overhead is unnecessary. +.Pp +If the terminal has +a way of flashing the screen to indicate an error quietly +(a bell replacement), +this can be given as +.Sy \&vb ; +it must not move the cursor. +.Pp +If the cursor needs to be made more visible than normal +when it is not on the bottom line +(to change, for example, a non-blinking underline into an easier-to-find +block or blinking underline), +give this sequence as +.Sy \&vs . +If there is a way to make the cursor completely invisible, give that as +.Sy \&vi . +The capability +.Sy \&ve , +which undoes the effects of both of these modes, +should also be given. +.Pp +If your terminal correctly displays underlined characters +(with no special codes needed) +even though it does not overstrike, +then you should give the capability +.Sy \&ul . +If overstrikes are erasable with a blank, +this should be indicated by giving +.Sy \&eo . +.Ss Keypad +If the terminal has a keypad that transmits codes when the keys are pressed, +this information can be given. +Note that it is not possible to handle +terminals where the keypad only works in local mode +(this applies, for example, to the unshifted Hewlett-Packard 2621 keys). +If the keypad can be set to transmit or not transmit, +give these codes as +.Sy \&ks +and +.Sy \&ke . +Otherwise the keypad is assumed to always transmit. +The codes sent by the left-arrow, right-arrow, up-arrow, down-arrow, +and home keys can be given as +.Sy \&kl , +.Sy \&kr , +.Sy \&ku , +.Sy \&kd , +and +.Sy \&kh , +respectively. +If there are function keys such as f0, f1, ..., f9, the codes they send +can be given as +.Sy \&k0 , +.Sy \&k1 , +..., +.Sy \&k9 . +If these keys have labels other than the default f0 through f9, the labels +can be given as +.Sy \&l0 , +.Sy \&l1 , +..., +.Sy \&l9 . +The codes transmitted by certain other special keys can be given: +.Sy \&kH +(home down), +.Sy \&kb +(backspace), +.Sy \&ka +(clear all tabs), +.Sy \&kt +(clear the tab stop in this column), +.Sy \&kC +(clear screen or erase), +.Sy \&kD +(delete character), +.Sy \&kL +(delete line), +.Sy \&kM +(exit insert mode), +.Sy \&kE +(clear to end of line), +.Sy \&kS +(clear to end of screen), +.Sy \&kI +(insert character or enter insert mode), +.Sy \&kA +(insert line), +.Sy \&kN +(next page), +.Sy \&kP +(previous page), +.Sy \&kF +(scroll forward/down), +.Sy \&kR +(scroll backward/up), and +.Sy \&kT +(set a tab stop in this column). +In addition, if the keypad has a 3 by 3 array of keys +including the four arrow keys, then the other five keys can be given as +.Sy \&K1 , +.Sy \&K2 , +.Sy \&K3 , +.Sy \&K4 , +and +.Sy \&K5 . +These keys are useful when the effects of a 3 by 3 directional pad are needed. +The obsolete +.Sy \&ko +capability formerly used to describe +.Dq other +function keys has been +completely supplanted by the above capabilities. +.Pp +The +.Sy \&ma +entry is also used to indicate arrow keys on terminals that have +single-character arrow keys. +It is obsolete but still in use in +version 2 of +.Sy \&vi +which must be run on some minicomputers due to +memory limitations. +This field is redundant with +.Sy \&kl , +.Sy \&kr , +.Sy \&ku , +.Sy \&kd , +and +.Sy \&kh . +It consists of groups of two characters. +In each group, the first character is what an arrow key sends, and the +second character is the corresponding +.Sy \&vi +command. +These commands are +.Ar h +for +.Sy \&kl , +.Ar j +for +.Sy \&kd , +.Ar k +for +.Sy \&ku , +.Ar l +for +.Sy \&kr , +and +.Ar H +for +.Sy \&kh . +For example, the Mime would have +.Dq Li ma=^Hh^Kj^Zk^Xl +indicating arrow keys left (^H), down (^K), up (^Z), and right (^X). +(There is no home key on the Mime.) +.Ss Tabs and Initialization +If the terminal needs to be in a special mode when running +a program that uses these capabilities, +the codes to enter and exit this mode can be given as +.Sy \&ti +and +.Sy \&te . +This arises, for example, from terminals like the Concept with more than +one page of memory. +If the terminal has only memory-relative cursor addressing and not +screen-relative cursor addressing, +a screen-sized window must be fixed into +the display for cursor addressing to work properly. +This is also used for the Tektronix 4025, where +.Sy \&ti +sets the command character to be the one used by +.Nm termcap . +.Pp +Other capabilities +include +.Sy \&is , +an initialization string for the terminal, +and +.Sy \&if , +the name of a file containing long initialization strings. +These strings are expected to set the terminal into modes +consistent with the rest of the +.Nm termcap +description. +They are normally sent to the terminal by the +.Xr tset +program each time the user logs in. +They will be printed in the following order: +.Sy \&is ; +setting tabs using +.Sy \&ct +and +.Sy \&st ; +and finally +.Sy \&if . +.Pf ( Xr Terminfo +uses +.Sy \&i\&1-i2 +instead of +.Sy \&is +and runs the program +.Sy \&iP +and prints +.Sy "\&i\&3" +after the other initializations.) +A pair of sequences that does a harder reset from a totally unknown state +can be analogously given as +.Sy \&rs +and +.Sy \&if . +These strings are output by the +.Xr reset +program, which is used when the terminal gets into a wedged state. +.Pf ( Xr Terminfo +uses +.Sy "\&r1-r3" +instead of +.Sy \&rs . ) +Commands are normally placed in +.Sy \&rs +and +.Sy \&rf +only if they produce annoying effects on the screen and are not necessary +when logging in. +For example, the command to set the VT100 into 80-column mode +would normally be part of +.Sy \&is , +but it causes an annoying glitch of the screen and is not normally needed +since the terminal is usually already in 80-column mode. +.Pp +If the terminal has hardware tabs, +the command to advance to the next tab stop can be given as +.Sy \&ta +(usually +.Sy \&^I ) . +A +.Dq backtab +command which moves leftward to the previous tab stop +can be given as +.Sy \&bt . +By convention, +if the terminal driver modes indicate that tab stops are being expanded +by the computer rather than being sent to the terminal, +programs should not use +.Sy \&ta +or +.Sy \&bt +even if they are present, +since the user may not have the tab stops properly set. +If the terminal has hardware tabs that are initially set every +.Ar n +positions when the terminal is powered up, then the numeric parameter +.Sy \&it +is given, showing the number of positions between tab stops. +This is normally used by the +.Xr tset +command to determine whether to set the driver mode for hardware tab +expansion, and whether to set the tab stops. +If the terminal has tab stops that can be saved in nonvolatile memory, the +.Nm termcap +description can assume that they are properly set. +.Pp +If there are commands to set and clear tab stops, they can be given as +.Sy \&ct +(clear all tab stops) and +.Sy \&st +(set a tab stop in the current column of every row). +If a more complex sequence is needed to set the tabs than can be +described by this, the sequence can be placed in +.Sy \&is +or +.Sy \&if . +.Ss Delays +Certain capabilities control padding in the terminal driver. +These are primarily needed by hardcopy terminals and are used by the +.Xr tset +program to set terminal driver modes appropriately. +Delays embedded in the capabilities +.Sy \&cr , +.Sy \&sf , +.Sy \&le , +.Sy \&ff , +and +.Sy \&ta +will cause the appropriate delay bits to be set in the terminal driver. +If +.Sy \&pb +(padding baud rate) is given, these values can be ignored at baud rates +below the value of +.Sy \&pb . +For +.Bx 4.2 +.Xr tset , +the delays are given as numeric capabilities +.Sy \&dC , +.Sy \&dN , +.Sy \&dB , +.Sy \&dF , +and +.Sy \&dT +instead. +.Ss Miscellaneous +If the terminal requires other than a +.Dv NUL +(zero) character as a pad, +this can be given as +.Sy \&pc . +Only the first character of the +.Sy \&pc +string is used. +.Pp +If the terminal has commands to save and restore the position of the +cursor, give them as +.Sy \&sc +and +.Sy \&rc . +.Pp +If the terminal has an extra +.Dq status line +that is not normally used by +software, this fact can be indicated. +If the status line is viewed as an extra line below the bottom line, +then the capability +.Sy \&hs +should be given. +Special strings to go to a position in the status line and to return +from the status line can be given as +.Sy \&ts +and +.Sy \&fs . +.Pf ( Xr \&fs +must leave the cursor position in the same place that it was before +.Sy \&ts . +If necessary, the +.Sy \&sc +and +.Sy \&rc +strings can be included in +.Sy \&ts +and +.Sy \&fs +to get this effect.) +The capability +.Sy \&ts +takes one parameter, which is the column number of the status line +to which the cursor is to be moved. +If escape sequences and other special commands such as tab work while in +the status line, the flag +.Sy \&es +can be given. +A string that turns off the status line (or otherwise erases its contents) +should be given as +.Sy \&ds . +The status line is normally assumed to be the same width as the +rest of the screen, +.Em i.e . , +.Sy \&co . +If the status line is a different width (possibly because the terminal +does not allow an entire line to be loaded), then its width in columns +can be indicated with the numeric parameter +.Sy \&ws . +.Pp +If the terminal can move up or down half a line, this can be +indicated with +.Sy \&hu +(half-line up) and +.Sy \&hd +(half-line down). +This is primarily useful for superscripts and subscripts on hardcopy +terminals. +If a hardcopy terminal can eject to the next page (form feed), +give this as +.Sy \&ff +(usually +.Sy \&^L ) . +.Pp +If there is a command to repeat a given character a given number of times +(to save time transmitting a large number of identical characters), +this can be indicated with the parameterized string +.Sy \&rp . +The first parameter is the character to be repeated and the second is +the number of times to repeat it. +(This is a +.Xr terminfo +feature that is unlikely to be supported by a program that uses +.Nm termcap . ) +.Pp +If the terminal has a settable command character, such as the +Tektronix 4025, this can be indicated with +.Sy \&CC . +A prototype command character is chosen which is used in all capabilities. +This character is given in the +.Sy \&CC +capability to identify it. +The following convention is supported on some +.Ux +systems: +The environment is to be searched for a +.Ev \&CC +variable, +and if found, +all occurrences of the prototype character are replaced by the character +in the environment variable. +This use of the +.Ev \&CC +environment variable +is a very bad idea, as it conflicts with +.Xr make 1 . +.Pp +Terminal descriptions that do not represent a specific kind of known +terminal, such as +.Em switch , +.Em dialup , +.Em patch , +and +.Xr network , +should include the +.Sy \&gn +(generic) capability so that programs can complain that they do not know +how to talk to the terminal. +(This capability does not apply to +.Em virtual +terminal descriptions for which the escape sequences are known.) +.Pp +If the terminal uses xoff/xon +.Pq Tn DC3 Ns / Ns Tn DC1 +handshaking for flow control, give +.Sy \&xo . +Padding information should still be included so that routines can make +better decisions about costs, but actual pad characters will not be +transmitted. +.Pp +If the terminal has a +.Dq meta key +which acts as a shift key, setting the +8th bit of any character transmitted, then this fact can be indicated with +.Sy \&km . +Otherwise, software will assume that the 8th bit is parity and it will +usually be cleared. +If strings exist to turn this +.Dq meta mode +on and off, they can be given as +.Sy \&mm +and +.Sy \&mo . +.Pp +If the terminal has more lines of memory than will fit on the screen at once, +the number of lines of memory can be indicated with +.Sy \&lm . +An explicit value of 0 indicates that the number of lines is not fixed, +but that there is still more memory than fits on the screen. +.Pp +If the terminal is one of those supported by the +.Ux +system virtual +terminal protocol, the terminal number can be given as +.Sy \&vt . +.Pp +Media copy strings which control an auxiliary printer +connected to the terminal can be given as +.Sy \&ps : +print the contents of the screen; +.Sy \&pf : +turn off the printer; and +.Sy \&po : +turn on the printer. +When the printer is on, all text sent to the terminal will be sent to the +printer. +It is undefined whether the text is also displayed on the terminal screen +when the printer is on. +A variation +.Sy \&pO +takes one parameter and leaves the printer on for as many characters as the +value of the parameter, then turns the printer off. +The parameter should not exceed 255. +All text, including +.Sy \&pf , +is transparently passed to the printer while +.Sy \&pO +is in effect. +.Pp +Strings to program function keys can be given as +.Sy \&pk , +.Sy \&pl , +and +.Sy \&px . +Each of these strings takes two parameters: the function key number +to program (from 0 to 9) and the string to program it with. +Function key numbers out of this range may program undefined keys +in a terminal-dependent manner. +The differences among the capabilities are that +.Sy \&pk +causes pressing the given key to be the same as the user typing the given +string; +.Sy \&pl +causes the string to be executed by the terminal in local mode; +and +.Sy \&px +causes the string to be transmitted to the computer. +Unfortunately, due to lack of a definition for string parameters in +.Nm termcap , +only +.Xr terminfo +supports these capabilities. +.Ss Glitches and Braindamage +Hazeltine terminals, which do not allow `~' characters to be displayed, +should indicate +.Sy \&hz . +.Pp +The +.Sy \&nc +capability, now obsolete, formerly indicated Datamedia terminals, +which echo +.Sy \&\er \en +for +carriage return then ignore a following linefeed. +.Pp +Terminals that ignore a linefeed immediately after an +.Sy \&am +wrap, such as the Concept, should indicate +.Sy \&xn . +.Pp +If +.Sy \&ce +is required to get rid of standout +(instead of merely writing normal text on top of it), +.Sy \&xs +should be given. +.Pp +Teleray terminals, where tabs turn all characters moved over to blanks, +should indicate +.Sy \&xt +(destructive tabs). +This glitch is also taken to mean that it is not possible +to position the cursor on top of a \*(lqmagic cookie\*(rq, and that +to erase standout mode it is necessary to use delete and insert line. +.Pp +The Beehive Superbee, which is unable to correctly transmit the +.Dv ESC +or +.Sy \&^C +characters, has +.Sy \&xb , +indicating that the +.Dq \&f\&1 +key is used for +.Dv ESC +and +.Dq \&f\&2 +for ^C. +(Only certain Superbees have this problem, depending on the +.Tn ROM . ) +.Pp +Other specific terminal problems may be corrected by adding more +capabilities of the form +.Sy x Em x . +.Ss Similar Terminals +If there are two very similar terminals, +one can be defined as being just like the other with certain exceptions. +The string capability +.Sy \&tc +can be given +with the name of the similar terminal. +This capability must be +.Em last , +and the combined length of the entries +must not exceed 1024. +The capabilities given before +.Sy \&tc +override those in the terminal type invoked by +.Sy \&tc . +A capability can be canceled by placing +.Sy \&xx@ +to the left of the +.Sy \&tc +invocation, where +.Sy \&xx +is the capability. +For example, the entry +.Bd -literal -offset indent +hn\||\|2621\-nl:ks@:ke@:tc=2621: +.Ed +.Pp +defines a +.Dq 2621\-nl +that does not have the +.Sy \&ks +or +.Sy \&ke +capabilities, +hence does not turn on the function key labels when in visual mode. +This is useful for different modes for a terminal, or for different +user preferences. +.Sh FILES +.Bl -tag -width /usr/share/misc/termcap -compact +.It Pa /usr/share/misc/termcap +File containing terminal descriptions. +.El +.Sh SEE ALSO +.Xr \&ex 1 , +.Xr more 1 , +.Xr tset 1 , +.Xr \&ul 1 , +.Xr vi 1 , +.Xr curses 3 , +.Xr printf 3 , +.Xr termcap 3 , +.Xr term 7 +.Sh CAVEATS AND BUGS +The +.Em Note : +.Nm termcap +functions +were replaced by +.Xr terminfo +in +.At V +Release 2.0. +The transition will be relatively painless if capabilities flagged as +.Dq obsolete +are avoided. +.Pp +Lines and columns are now stored by the kernel as well as in the termcap +entry. +Most programs now use the kernel information primarily; the information +in this file is used only if the kernel does not have any information. +.Pp +.Xr \&Vi +allows only 256 characters for string capabilities, and the routines +in +.Xr termlib 3 +do not check for overflow of this buffer. +The total length of a single entry (excluding only escaped newlines) +may not exceed 1024. +.Pp +Not all programs support all entries. +.Sh HISTORY +The +.Nm +file format appeared in +.Bx 3 . diff --git a/usr/src/share/termcap/termcap.src b/usr/src/share/termcap/termcap.src new file mode 100644 index 0000000000..0fe3bd5683 --- /dev/null +++ b/usr/src/share/termcap/termcap.src @@ -0,0 +1,3460 @@ +# Copyright (c) 1980, 1985, 1989 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)termcap.src 5.88 (Berkeley) 4/30/91 +# + +# Termcap source file +# John Kunze, Berkeley +# Craig Leres, Berkeley +# +# Please e-mail changes to termcap@berkeley.edu or uunet!ucbvax!termcap. +# +# << EOH - after reordering, above header lines survive and this line dies >> +# +# DESCRIPTION: +# This file describes capabilities of various terminals, as needed by +# software such as screen editors. It does not attempt to describe +# printing terminals very well, nor graphics terminals. Someday. +# See termcap(5) in the Unix Programmers Manual for documentation. +# +# Conventions: First entry is two chars, first char is manufacturer, +# second char is canonical name for model or mode. +# Third entry is the one the editor will print with "set" command. +# Last entry is verbose description. +# Others are mnemonic synonyms for the terminal. +# +# Terminal naming conventions: +# Terminal names look like - +# Certain abbreviations (e.g. c100 for concept100) are also allowed +# for upward compatibility. The part to the left of the dash, if a +# dash is present, describes the particular hardware of the terminal. +# The part to the right can be used for flags indicating special ROM's, +# extra memory, particular terminal modes, or user preferences. +# All names are always in lower case, for consistency in typing. +# +# The following are conventionally used flags: +# rv Terminal in reverse video mode (black on white) +# 2p Has two pages of memory. Likewise 4p, 8p, etc. +# w Wide - in 132 column mode. +# pp Has a printer port which is used. +# na No arrow keys - termcap ignores arrow keys which are +# actually there on the terminal, so the user can use +# the arrow keys locally. +# +# There are some cases where the same name is used for two different +# terminals, e.g. "teleray" or "2621" or "vt100". In these cases, +# if a site has one of these, they should choose a local default and +# bring that terminal to the front in the reorder script. This works +# because tgetent picks the first match in /etc/termcap. +# The list of names intentionally duplicated is: +# 2621, c108, dtc, hp2621, teleray, tvi, vt100. +# +# To easily test a new terminal description, put it in $HOME/.termcap +# and programs will look there before looking in /etc/termcap. +# You can also setenv TERMPATH to a list of full pathnames (separated +# by spaces or colons) to be searched by tgetent() in the order listed. +# The TERMCAP environment variable is usually set to the termcap +# entry itself to avoid reading files when starting up a program. +# +# If you absolutely MUST check for a specific terminal (this is discouraged) +# check for the 2nd entry (the canonical form) since all other codes are +# subject to change. The two letter codes are there for version 6 and are +# EXTREMELY subject to change, or even to go away if version 6 becomes for +# all practical purposes obsolete. We would much rather put in special +# capabilities to describe your terminal rather than having you key on the +# name. +# +# Special manufacturer codes: +# A: hardcopy daisy wheel terminals +# M: Misc. (with only a few terminals) +# q: Homemade +# s: special (dialup, etc.) +# +# Comments in this file begin with # - they cannot appear in the middle +# of a termcap entry. Individual entries are commented out by +# placing a period between the colon and the capability name. +# +# This file is to be installed with an editor script (reorder) +# that moves the most common terminals to the front of the file. +# If the source is not available, it can be constructed by sorting +# the above entries by the 2 char initial code. +# # -------------------------------- +# +# A: DAISY WHEEL PRINTERS +# +# The A manufacturer represents Diablo, DTC, Xerox, Qume, and other Daisy +# wheel terminals until such time as termcap distinguishes between them +# enough to justify separate codes. +# This is an "experimental" entry for the SRI Agiles. +# It has been tried in a minimal way -- the Agile did not blow up! +# However, it has not been exhaustively tested. +# Anyone who tries it and finds it wanting should get in touch with: +# Ralph Keirstead (ralph@sri-unix); +# EK352; SRI International; 333 Ravenswood Avenue; Menlo Park, CA 94025 +Aa|agile|agiles|sri agiles:\ + :bs:hc:os:pl:co#132:do=^J:kb=^H:up=\E\n:\ + :hu=\E0:hd=\E9:if=/usr/share/tabset/std:is=\EE\EF\EJ: +A6|1620|1720|450|ipsi|diablo 1620:\ + :do=^J:ct=\E2:st=\E1:ch=\E\t%i%.:\ + :if=/usr/share/tabset/xerox1720:\ + :kb=^H:le=^H:bs:co#132:hc:hu=\EU:hd=\ED:os:pt:up=\E\n: +A7|1620-m8|1640-m8|diablo 1620 w/8 column left margin:\ + :do=^J:co#124:is=\r \E9:tc=1620: +A8|1640|1740|630|1730|x1700|diablo|xerox|diablo 1640:\ + :if=/usr/share/tabset/xerox1730:\ + :us=\EE:ue=\ER:so=\EW:se=\E&:tc=1620: +Am|1640-lm|1740-lm|630-lm|1730-lm|x1700-lm|diablo-lm|xerox-lm|\ + diablo 1640 with idented left margin:\ + :if=/usr/share/tabset/xerox1730-lm:\ + :co#124:us=\EE:ue=\ER:so=\EW:se=\E&:tc=1620: +# DTC 382 with VDU. Has no cd so we fake it with ce. Standout works but +# won't go away without dynamite. The terminal has tabs, but I'm getting +# tired of fighting the braindamage. If no tab is set or the terminal's +# in a bad mood, it glitches the screen around all of memory. Note that +# return puts a blank ("a return character") in the space the cursor was +# at, so we use ^P return (and thus ^P newline for newline). Note also +# that if you turn off pt and let Unix expand tabs, curses won't work +# (current version) because it doesn't turn off this bit, and cursor +# addressing sends a tab for row/column 9. What a losing terminal! I +# have been unable to get tabs set in all 96 lines - it always leaves at +# least one line with no tabs in it, and once you tab through that line, +# it completely weirds out. +Ac|dtc|ps|dtc382|382:\ + :do=^J:al=^P^Z:am:le=^H:\ + :bs:co#80:ce=^P^U:cl=20^P^]:cm=%r^P^Q%.%.:dc=^X:\ + :dl=^P^S:ei=^Pi:ho=^P^R:im=^PI:ve=^Pb:vs=^PB:pc=\177:te=20^P^]:\ + :li#24:nd=^PR:.se=^P \200:.so=^P \002^PF:us=^P \020:ue=^P \200:\ + :up=^P^L:nc:xr:xs:da:db:.pt:cr=^P^M:cd=^P^U^P^S^P^S:\ + :if=/usr/share/tabset/dtc382: +Ad|dtc300s|300|300s|dtc 300s:\ + :ct=\E3:st=\E1:do=^J:\ + :kb=^h:le=^H:bs:co#132:hc:hu=\EH:hd=\Eh:os:pt:up=^Z: +Ag|gsi:\ + :le=^H:bs:co#132:hc:hd=\Eh:hu=\EH:os:pt:up=^Z:do=^J: +# This used to have :pl: - maybe they meant :pt:? +Aj|aj830|aj832|aj|anderson jacobson:\ + :do=^J:le=^H:bs:hc:hd=\E9:hu=\E8:os:up=\E7: +# From Chris Torek Thu, 7 Nov 85 18:21:58 EST +AJ|aj510|AJ510|Anderson-Jacobson model 510:\ + :ic=:ip=.1*:so=\E"I:us=\E"U:cd=\E'P:ce=\E'L:cl=^L:cm=\E#%+ %+ :\ + :dl=2*\E&D:ue=\E"U:co#80:li#24:se=\E"I:al=2*\E&I:im=\E'I:ei=\E'J:\ + :dc=.1*\E'D:up=\EY:nd=\EX:bs:am:mi:ti=\E"N:te=\E"N:\ + :ku=\EY:kd=\EZ:kl=\EW:kr=\EX:pc=\177: +# From cbosg!ucbvax!pur-ee!cincy!chris Thu Aug 20 09:09:18 1981 +# This is incomplete, but it's a start. +An|5520|nec|spinwriter|nec 5520:\ + :ct=\E3:st=\E1:do=^J:kb=^h:le=^H:bs:co#132:hc:hu=\E]s\E9\E]W:\ + :hd=\E]s\n\E]W:os:pt:up=\E9: +Aq|qume5|qume|Qume Sprint 5:\ + :ct=\E3:st=\E1:do=^J:\ + :kb=^h:le=^H:bs:co#80:hc:hu=\EH:hd=\Eh:os:pt:up=^Z: +Ar|q102|qume102|Qume 102:\ + :al=\EE:am:bs:bt=\EI:\ + :cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:ct=\E3:\ + :dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:\ + :k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:kd=^J:kl=^H:kr=^L:ku=^K:\ + :le=^H:li#24:ma=^K^P^L :nd=^L:\ + :se=\EG0:sg#1:so=\EG4:st=\E1:\ + :ue=\EG0:ug#1:up=^K:us=\EG8: +# From ucbvax!mtxinu!sybase!tim (Tim Wood) Fri Sep 27 10:25:24 PDT 1985 +# This entry supports line and character insert and delete, scroll up and +# down and the arrow keys. To use it, perform the following on your qvt-101 +# 1) enter SET-UP mode, select the SET 3 line; +# 2) move the cursor to the EMULATION item and hit SPACE +# until QVT-101B appears +# 3) enter SHIFT-S +# 4) exit SET-UP - the terminal is now configured +Aq|q101|qvt101|qvt-101|Qume 101 $310 special:\ + :al=\EE:am:bt=\EI:ce=\Et:cl=\E*:dc=\EW:\ + :dl=\ER:do=^J:ic=\EQ:ei=:im=:md=\E(:me=\EG0:mh=\E):\ + :le=^H:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:ku=^K:\ + :vs=\EM4\040\200\200\200:mr=\EG4:ms:so=\EG4:se=\EG1: +# I suspect the xerox1720 is the same as the diablo 1620. +Ax|x1720|x1700|1700|x1750|xerox 1720:\ + :co#132:le=^H:bs:hc:os:pt:do=^J:ct=\E2:st=\E1: +# # -------------------------------- +# +# B: AT&T ATT +# +# AT&T Teletype 5410 Terminal (a.k.a. 4410) +# From: carvalho%kepler@Berkeley.EDU (Marcio de Carvalho) +# Date: Thu, 26 Feb 87 09:16:50 PST +# +# Although the 5410 supports labels, it blanks the screen after +# each label is programmed creating to much visual activity. +# To use the labels, use FL=\E[%d;00q%-16s +# +Ba|5410|4410|tty5410|att4410|AT&T Teletype 5410 terminal with 80 columns:\ + :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\ + :cm=5\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:im=:ei=:ic=\E[@:\ + :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\ + :li#24:nd=\E[C:se=\E[m:so=\E[2;7m:sr=\EM:\ + :ue=\E[m:up=\E[A:us=\E[4m:EE=\E[m:BO=\E[0;7m:DS=\E[2m:\ + :KM=/usr/lib/ua/kmap.5410:is=\E[0m^O\E[?6l:kn#8:\ + :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k4=\EOg:k6=\EOh:\ + :k7=\EOi:k8=\EOj:ko=nd,up,ho: +# AT&T 630 MTG DMD from muller%sdcc7@ucsd.edu (Keith Muller) +Bi|att630|dmd630|ATT630|630DMD|630dmd|630MTG|AT&T 630 windowing terminal:\ + :am:da:db:ms:bs:co#80:it#8:li#60:lm#0:\ + :up=\E[A:do=\E[B:nd=\E[C:le=\b:UP=\E[%dA:DO=\E[%dB:RI=\E[%dC:\ + :LE=\E[%dD:cm=\E[%i%d;%dH:ho=\E[H:bt=\E[Z:\ + :sf=\n:sr=\EM:SF=\E[%dS:SR=\E[%dT:us=\E[4m:ue=\E[m:so=\E[7m:se=\E[m:\ + :mr=\E[7m:mh=\E[2m:mb=\E[5m:me=\E[m:ce=\E[K:cd=\E[J:cl=\E[H\E[J:\ + :dc=\E[P:dl=\E[M:al=\E[L:DC=\E[%dP:DL=\E[%dM:AL=\E[%dL:\ + :ic=\E[@:IC=\E[%d@:im=:ei=:sc=\E7:rc=\E8:i2=\E[m:rs=\Ec:\ + :pf=\E[?4i:po=\E[?5i:\ + :kb=\b:kC=\E[2J:kh=\E[H:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D: +Bj|dmd630-24|att630-24|ATT630-24|630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines:\ + :li#24:tc=att630: +Bk|dmd615|att615|ATT615|615DMD|615MTG|AT&T 615 windowing terminal 80 column:\ + :li#24:tc=att630: +Bl|dmd615-w|att615-w|ATT615-w|615DMD-w|615MTG-w|AT&T 615 windowing terminal 132 column:\ + :li#24:co#132:tc=att630: +Bm|dmd620|att620|ATT620|620DMD|620MTG|AT&T 620 windowing terminal 80 column:\ + :li#24:tc=att630: +Bn|dmd620-w|att620-w|ATT620-w|620DMD-w|620MTG-w|AT&T 620 windowing terminal 132 column:\ + :li#24:co#132:tc=att630: +# AT&T Teletype 5420 Terminal (a.k.a. 4415) June 5, 1985 +Bb|5420|4415|tty5420|att4415|AT&T Teletype 5420 terminal:\ + :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\ + :cm=\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:im=\E[4h:ei=\E[4l:\ + :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\ + :li#24:nd=\E[C:se=\E[m:so=\E[2;7m:sr=\EM:\ + :ue=\E[m:up=\E[A:us=\E[4m:EE=\E[m:BO=\E[0;7m:DS=\E[2m:\ + :KM=/usr/lib/ua/kmap.5420:\ + :is=\E[0m^O\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[25;1j\212\E[8;0j\E[9;0j\E[10;0j\E[19;1j:\ + :db:mi:pt:kn#8:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:\ + :k7=\EOi:k8=\EOj:ve=\E[11;0j:\ + :vs=\E[11;1j:ko=bt,nd,up,dc,dl,ho,im,al: +# AT&T Teletype 5425 Terminal (a.k.a 4425) June 5, 1985 +Bc|5425|4425|tty5425|att4425|AT&T Teletype 5425:\ + :FL=\E[%d;00q%-16s\E~:FE=\E|:KM=/usr/lib/ua/kmap.5425:\ + :is=\E[0m^O\E[1;2;3;4;6l\E[12;13;14;20l\E[?6l\E[?7h\E[4i\E[9;0j\E[10;0j\E[11;0j\E[21;1j\E[25;1j\212:\ + :ve=\E[12;0j:vs=\E[12;1j:tc=5420: +Bd|t4|4420|tty4420|Teletype 4420:\ + :vs=\ER:ve=\ER:am:da:db:mi:cr=\EG:\ + :im=:ei=:dm=:ed=:nl=\EG\EB:li#23:\ + :co#80:cl=\EH\EJ:cd=\EJ:cm=\EY%+ %+ :\ + :bs:up=\E7:do=\EB:nd=\EC:al=\EL:\ + :dl=\EM:dc=\EP:ic=\E\136:sf=\EH\EM\EY5 :sr=\ET:kb=^H: +Be|pc6300plus|6300|6300plus:\ + :al=\E[1L:am:bs:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:co#80:\ + :dc=\E[1P:dl=\E[1M:do=\E[B:ei=:ho=\E[H:\ + :ic=\E[1@:im=:kb=\10:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:li#24:\ + :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\ + :k9=\EOk:k10=\EOu:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:\ + :EE=\E[m:BO=\E[0;7m:CV=\E[=C:CI=\E[=1C:KM=/usr/lib/ua/kmap.s5: +# AT&T 6386 decompiled and hacked from SVR3.1 terminfo +# From: caron@polya.Stanford.EDU (Ilan G. Caron) +# Problems: (1) The mode lines are screwed up - they're not in standout +# (an extraneous ESC-RD sequence is prepended to each mode line). +# (2) Cursor addressing into the mode line is often off-by-one, +# in particular, when the percentage indicator is updated. +# (3) When reverting to a single window (C-x 1), the display +# needs refreshing (an extraneous ESC-S seems to be generated). +# (The above 3 might be manifestations of the same problem). +# (4) Deletes sometime don't, especially when done fast - does this +# suggest that I need to pad something? +Bh|AT386|at386|386AT|386at|at/386 console:\ + :am:bw:eo:xo:Co#8:NC#3:co#80:li#25:pa#64:kn#6:\ + :@7=\E[Y:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\ + :F1=\EOZ:F2=\EOA:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:\ + :SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\ + :ac=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~:\ + :ae=\E[10m:al=\E[1L:as=\E[12m:bl=^G:cd=\E[J:ce=\E[K:\ + :cl=\E[2J\E[H:cm=\E[%i%2;%2H:cr=\r:dc=\E[P:dl=\E[1M:\ + :do=\E[B:ho=\E[H:ic=\E[1@:is=\E[0;10;39m:k1=\EOP:\ + :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:\ + :k8=\EOW:k9=\EOX:k;=\EOY:kB=^]:kC=\E[2J:kD=\E[P:\ + :kI=\E[@:kM=\E0:kN=\E[U:kP=\E[V:kb=\b:kd=\E[B:kh=\E[H:\ + :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:\ + :me=\E[0;10m:mk=\E[9m:mr=\E[7m:nd=\E[C:op=\E[0m:\ + :se=\E[m:sf=\E[S:so=\E[43;30m:ta=\t:ue=\E[m:up=\E[A:\ + :sr=\E[T:TC=\E[%d@:IC=\E[%d@:\ + :us=\E[4m:vb=^G:bc=\E[D:nl=\E[B:ko=le,do,nd,up,dc,h +Bf|s4|PC7300|unixpc|pc7300|7300|3b1|Safari 4:\ + :so=\E[2;7m:DS=\E[2m:XS=\E[9m:KM=/usr/lib/ua/kmap.s4:tc=pc6300plus: +# AT&T Teletype 610 Terminal +Bg|b610|610|610bct|tty610:\ + :CV=\E[25h:CI=\E[25l:KM=/usr/lib/ua/kmap.s4:\ + :FL=\E[%d;00q%-16s\E[0p:FE=\E[2p:cl=\E[1;1H\E[J:\ + :is=\E[0m^O\E[25;1|^J\E[8;0|\E[4;13;20l\E[?5l\E[12h\E[?7h\E[?4i:\ + :ve=\E[?12l:vs=\E[?12h:tc=5420: +# # -------------------------------- +# +# C: CONTROL DATA +# +Ca|cdc456|cdc:\ + :do=^J:li#24:co#80:cl=^Y^X:nd=^L:up=^Z:le=^H:bs:\ + :cm=\E1%+ %+ :ho=^Y:al=\E\114:dl=\E\112:ce=^V:cd=^X:am: +Cc|cdc456tst:\ + :do=^J:li#24:co#80:cl=^y^x:le=^H:bs:cm=\E1%+ %+ :am: +# # -------------------------------- +# +# D: DATAMEDIA +# +D0|dm1520|dm1521|1521|1520|datamedia 1520:\ + :do=^J:am:le=^H:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %+ :co#80:ho=^Y:\ + :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\ + :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt: +D2|dm2500|datamedia2500|2500|datamedia 2500:\ + :do=^J:al=15^P\n^X^]^X^]:le=^H:bs:ce=^W:cl=^^^^\177:\ + :cm=^L%r%n%.%.:co#80:dc=10*^P\b^X^]:dl=10*^P^Z^X^]:\ + :dm=^P:ed=^X^]:ei=10\377\377^X^]:ho=^B:ic=10*^P^\^X^]:\ + :im=^P:li#24:nc:nd=^\:pc=\377:so@=^N:se=^X^]:up=^Z: +D3|dm3025|datamedia 3025a:\ + :MT:is=\EQ\EU\EV:do=^J:\ + :al=130\EP\n\EQ:le=^H:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :\ + :co#80:dc=6\b:dl=130\EP\EA\EQ:dm=\EP:ed=\EQ:ei=\EQ:ho=\EH:\ + :im=\EP:ip=6:li#24:nd=\EC:pt:so=\EO1:se=\EO0:up=\EA: +D4|3045|dm3045|datamedia 3045a:\ + :is=\EU\EV:do=^J:\ + :am:le=^H:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :co#80:\ + :dc=6\EB:dm=:ed=:ei=\EP:ho=\EH:ic=:im=\EP:ip=6:\ + :k0=\Ey\r:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:\ + :k5=\Et\r:k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:k9=\Ex\r:\ + :kh=\EH:ku=\EA:kr=\EC:li#24:nd=\EC:pc=\177:pt:eo:ul:up=\EA:xn: +# dt80/1 is a vt100 lookalike, but it doesn't seem to need any padding. +D5|dt80|dmdt80|dm80|datamedia dt80/1:\ + :do=^J:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=%i\E[%d;%dH:ho=\E[H:\ + :nd=\E[C:sr=\EM:so=\E[7m:se=\E[m:up=\E[A:us=\E[4m:ue=\E[m:tc=vt100: +# except in 132 column mode, where it needs a little padding. +# This is still less padding than the vt100, and you can always turn on +# the ^S/^Q handshaking, so you can use vt100 flavors for things like +# reverse video. +D6|dt80w|dmdt80w|dm80w|datamedia dt80/1 in 132 char mode:\ + :do=^J:cd=20\E[0J:co#132:ce=20\E[0K:\ + :cm=5\E[%i%d;%dH:cl=50\E[H\E[2J:up=5\E[A:tc=dmdt80: +# # -------------------------------- +# +# H: HAZELTINE +# +# Since nd is blank, when you want to erase something you +# are out of luck. You will have to do ^L's a lot to +# redraw the screen. h1000 is untested. It doesn't work in +# vi - this terminal is too dumb for even vi. (The code is +# there but it isn't debugged for this case.) +H1|h1000|hazeltine 1000:\ + :le=^H:bs:ho=^K:cl=^L:nd= :co#80:li#12:do=^J: +# Note: the h1552 appears to be the first Hazeltine terminal which +# is not braindamaged. It has tildes and backprimes and everything! +# Be sure the auto lf/cr switch is set to cr. +H2|h1552|hazeltine 1552:\ + :do=^J:al=\EE:dl=\EO:k1=\EP:l1=blue:k2=\EQ:\ + :l2=red:k3=\ER:l3=green:tc=vt52: +H3|h1552rv|hazeltine 1552 reverse video:\ + :do=^J:so=\ES:se=\ET:tc=h1552: +# From cbosg!ucbvax!pur-ee!cincy!chris Thu Aug 20 09:09:18 1981 +H4|h1420|hazeltine 1420:\ + :do=^J:le=^H:bs:am:li#24:co#80:al=\E^Z:dl=\E^S:cd=\E^X:cl=\E\034:\ + :up=\E^L:nd=^P:ce=\E^O:ta=^N:cm=\E^Q%r%.%+ :so=\E\037:se=\E^Y: +# New "safe" cursor movement (11/87) from cgs@umd5. Prevents freakout with +# out-of-range args and tn3270. No hz since it needs to receive ~'s. +H5|h1500|hazeltine 1500:\ + :al=40~^Z:am:bs:cd=10~^X:ce=~^O:cl=~^\:cm=~^Q%r%>^^ %+`%+`:\ + :co#80:dl=40~^S:do=~^K:ho=~^R:kh=~^R:kr=^P:ku=~^L:kd=^J:kl=^H:\ + :le=^H:li#24:nd=^P:so=~^_:se=~^Y:up=~^L:.cm=~^Q%r%.%.: +# h1510 assumed to be in sane escape mode. Else use h1500. +H6|h1510|hazeltine 1510:\ + :do=^J:al=\E^Z:am:le=^H:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%.%.:\ + :co#80:dl=\E^S:do=\E^K:hz:li#24:nd=^P:.se=\E^_:.so=\E^Y:up=\E^L: +H8|h1520|hazeltine 1520:\ + :do=^J:al=~^Z:am:le=^H:bs:cd=~^X:ce=~^O:cl=~\034:cm=~^Q%r%.%.\200:\ + :co#80:dl=~^S:do=~^K:hz:li#24:nd=^P:se=~^Y:so=~\037:up=~^L:ho=~^R: +# Note: h2000 won't work well because of a clash between upper case and ~'s. +H7|h2000|hazeltine 2000:\ + :do=^J:al=6~^z:am:le=^H:bs:cl=6~^\:cm=~^q%r%.%.:co#74:\ + :dl=6~^s:ho=~^r:li#27:nc:pc=\177: +# Hazeltine esprit entries from Univ of Utah Tue Feb 1 06:39:37 1983 +# J.Lepreau, lepreau@utah-cs, harpo!utah-cs!lepreau +HE|esprit|hazeltine esprit:\ + :al=40\E^Z:bs:cd=5\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%>^^ %+`%+`:co#80:\ + :dl=40\E^S:do=\E^K:ho=\E^R:li#24:nd=^P:se=\E^Y:so=\E^_:up=\E^L: +HF|esprit-am|hazeltine esprit auto-margin:\ + :am:tc=esprit: +# # -------------------------------- +# +# I: IBM +# +# ibm61 and ibm63 from Warren Gish (cswarren@violet.berkeley.edu). +# installed 12-17-86. +# 3161 only opens a new line if a null line exists on the screen. +# To ensure a null line exists, an SBA is performed, positioning the +# Buffer Address in column 0 of the last line. The last line is then +# cleared to nulls, BA mode is cancelled, and the new line is opened +# at the cursor position. +I1|ibm61|ibm3161|3161|IBM 3161-11:\ + :am:bs:bw:cl=\EL:li#24:co#80:cd=\EJ:al=\EX7 \EI\E Z\EN:\ + :ce=\EI:cm=\EY%+\040%+\040:nd=\EC:up=\EA:do=\EB:\ + :dl=\EO:dc=\EQ:kd=\EB:ku=\EA:kl=\ED:kr=\EC:kh=\EH:\ + :us=\E4\102:ue=\E4\100:so=\E4\110:se=\E4\100: +#From seth@sirius.ctr.columbia.edu Sun May 20 11:02:34 1990 +I3|ibm3163|ibm63|i3163|3163|IBM 3163:\ + :al=\EN:am:bs:bt=\E2:cd=\EJ:ce=\EI:cl=\EL:\ + :cm=\EY%+\040%+\040:co#80:ct=\E 1:dc=\EQ:\ + :dl=\EO:do=\EB:ds=\E#\072:es:fs=\E=:ho=\EH:\ + :hs:ic=\EP:kA=\EN:kB=\E2:kC=\EQ:\ + :kD=\EQ:kE=\EI:kI=\EI:kL=\EO:kS=\EJ:\ + :kb=^H:kd=\EB:kl=\EB:kr=\EC:ku=\EA:\ + :le=\ED:li#24:mb=\E4D:md=\E4H:me=\E4@:\ + :mk=\E4P:mr=\E4A:nd=\EC:\ + :ds=\E#\::es:fs=\E=\E#;:hs:ts=\E=:ws#80:\ + :se=\E4@:so=\E4I:ue=\E4@:up=\EA:us=\E4B: +I4|ibm|ibm3101|3101|i3101|IBM 3101-10:\ + :do=^J:ct=\EH:st=\E0:\ + :if=/usr/share/tabset/ibm3101:\ + :am:le=^H:bs:cl=\EK:li#24:co#80:nd=\EC:up=\EA:cd=\EJ:ce=\EI:\ + :kd=\EB:kl=\ED:kr=\EC:ku=\EA:ho=\EH:cm=\EY%+\40%+\40:pt: +Ia|ibm-apl|apl|IBM apl terminal simulator:\ + :li#25:tc=dm1520: +# ibmapa* and ibmmono entries come from ACIS 4.3 distribution +Ib|rtpc|ibmapa16|ibm6155|IBM 6155 Extended Monochrome Graphics Display:\ + :ts=\Ej\EY@%+ \Eo:ds=\Ej\EY@\40\EI\Ek:li#32:tc=ibmconsole: +# Advanced Monochrome (6153) and Color (6154) Graphics Display: +Ic|ibmapa8c|ibmapa8|ibm6154|ibm6153|IBM 6153/4 Advanced Graphics Display:\ + :ts=\Ej\EY?%+ \Eo:ds=\Ej\EY?\40\EI\Ek:li#31:tc=ibmconsole: +Id|ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display color termcap:\ + :ts=\Ej\EY?%+ \Eo:ds=\Ej\EY?\40\EI\Ek:li#31:mh=\EF\Ef7;:tc=ibmega-c: +Ie|ibmmono|ibmconsole|ibm5151|IBM workstation monochrome:\ + :se=\Ez:so=\EZ:sr=\EA:al=\EL:dl=\EM:\ + :kb=^H:us=\EW:ue=\Ew:\ + :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\EY:\ + :k0=\E<:I0=f10:kI=\000:kh=\EH:kR=\EG:kP=\Eg:kF=\EE:kN=\EE:\ + :md=\EZ:me=\Ew\Eq\Ez\EB:mk=\EF\Ef0;\Eb0;:mr=\Ep:\ + :ts=\Ej\EY8%+ \Eo:fs=\Ek:ds=\Ej\EY8\40\EI\Ek:es:hs:sb:tc=ibm3101: +If|ibmega-c|ibm5154-c|IBM Enhanced Color Display color termcap:\ + :se=\EB:so=\EF\Ef3;:ue=\EB:us=\EF\Ef2;:tc=ibmconsole: +#from marc pawliger--marc@ibminet.awdpa.ibm.com +#also in /usr/lpp/bos/bsdsysadmin. +Ig|hft-c|ibm8512|ibm8513|IBM High Function Terminal:\ + :co#80:li#25:am:ht:\ + :cm=\E[%i%d;%dH:ti=\E[20;4l\E[?7h\Eb:te=\E[20h:\ + :nd=\E[C:up=\E[A:do=^J:ho=\E[H:\ + :ec=\E[%dX:\ + :cl=\E[H\E[J:cd=\E[J:el=\E[K:\ + :AL=\E[%dL:DL=\E[%dM:al=\E[L:dl=\E[M:\ + :im=\E[4h:ei=\E[4l:mi:\ + :dm=\E[4h:ed=\E[4l:\ + :so=\E[7m:se=\E[m:ul=\E[4m:ue=\E[m:ms:\ + :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ + :ac=^N:ae=^O:sc=\E[s:rc=\E[u:\ + :kb=\E[D:kf=\E[C:ku=\E[A:kd=\E[B:kh=\E[H:\ + :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\ + :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:k0=\E[010q:\ + :is=\Eb\E[m^O\E[?7h:rs=\Eb\E[m^O\E[?7h\E[H\E[J: +Ih|hft|AIWS High Function Terminal:\ + :al=\E[L:cr=^M:do=^J:sf=^J:bl=^G:am:le=^H:cd=\E[J:\ + :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:li#25:\ + :dc=\E[P:dl=\E[M:ho=\E[H:\ + :ic=\E[@:im=\E6:ei=\E6:\ + :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[0m:\ + :ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:kh=\E[H:kb=^H:\ + :nd=\E[C:ta=^I:up=\E[A:xo:\ + :ue=\E[m:us=\E[4m:se=\E[m:so=\E[7m:\ + :kP=\E[159q:kN=\E[153q:\ + :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:\ + :k5=\E[005q:k6=\E[006q:k7=\E[007q:k8=\E[008q:\ + :k9=\E[009q:ka=\E[010q: +# # -------------------------------- +# +# M: MISCELLANEOUS TERMINALS +# +# The tab 132 uses xon/xoff, so no padding needed. +# ks/ke have nothing to do with arrow keys. +# is sets 80 col mode, normal video, autowrap on (for am). +# Seems to be no way to get rid of status line. +M0|abm80|amtek business machines 80:\ + :do=^J:al=\E^Z:am:le=^H:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%+ %+ :\ + :co#80:dl=\E^S:do=\E^K:li#24:nd=^P:.so=\E^_:.se=\E^Y:up=\E^L:\ + :bw:bt=^T:ho=\E^R: +M1|tab132|tab|tab132/15|tab 132/15:\ + :is=\E[?7h\E[?3l\E[?5l:dN@:ks@:ke@:do=^J:\ + :da:db:al=\E[L:dl=\E[M:dc=\E[P:ei=\E[4l:im=\E[4h:cm=\E[%i%d;%dH:\ + :ku=\E[A:kd=\E[B:kl=\E[D:tc=vt100: +M2|tab132w:\ + :co#132:is=\E[?7h\E[?3h\E[?5l:tc=tab132: +M3|tab132rv:\ + :is=\E[?7h\E[?3l\E[?5h:tc=tab132: +M4|tab132wrv:\ + :is=\E[?7h\E[?3h\E[?5h:tc=tab132w: +# This used to say "de#001202" which presumably refers to the stty bits +# that need to be set for some version of Unix. We need the real delay +# requirements in MS. +M5|mw2|Multiwriter 2:\ + :do=^J:co#132:hc:os: +M6|trs80|trs-80|radio shack trs-80 Model I:\ + :do=^J:am:le=^H:bs:co#64:li#16: +M7|d800|Direct 800/A:\ + :do=^J:co#80:li#24:am:cl=\E[1;1H\E[2J:le=^H:bs:cm=\E[%i%d;%dH:\ + :nd=\E[C:up=\E[A:ce=\E[K:cd=\E[J:\ + :so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:xs:vs=\E[>12l:ve=\E[>12h:\ + :sf=\ED:sr=\EM:da:db:as=\E[1m:ae=\E[0m:ms:pt:\ + :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:\ + :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ + :k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW: +M8|vc404|volker-craig 404:\ + :do=^J:am:le=^H:bs:cd=40^W:ce=20^V:cl=40^X:cm=^P%+ %+ :co#80:\ + :ho=40^Y:kd=^J:kl=^H:kr=^U:ku=^Z:li#24:ma=^Z^P^U :nd=^U:up=^Z: +M9|vc404-s|volker-craig 404 w/standout mode:\ + :do=^J:se=^O:so=^N:tc=vc404: +MA|vc404-na|volker-craig 404 w/no arrow keys:\ + :ma@:kr@:ku@:tc=vc404: +MB|vc404-s-na|volker-craig 404 w/standout mode and no arrow keys:\ + :se=^O:so=^N:tc=vc404-na: +# missing in vc303a and vc303 descriptions: they scroll 2 lines at a time +MC|vc303a|vc403a|volker-craig 303a:\ + :do=^J:am:le=^H:bs:ce=20^V:cl=40^X:co#80:ho=40^Y:kd=^J:kl=^H::kr=^U:\ + :ku=^Z:li#24:ll=^P^@W:nd=^U:ns:up=^Z: +MD|vc303|vc103|vc203|volker-craig 303:\ + :do=^J:am:le=^H:bs:cl=40^L:co#80:ho=40^K:kd=^J:kl=^H:\ + :kr=^I:ku=^N:li#24:ll=^O\200W:nd=^I:ns:up=^N: +# Test version for Falco ts-1. See "arpavax.hickman@ucb" for info +ME|falco|ts1|ts-1|falco ts-1:is=\Eu\E3:\ + :do=^J:al=\EE:am:bs:ce=\ET\EG0^h:cm=\E=%+ %+ :cl=\E*:cd=\EY:co#80:\ + :dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:k0=^A0\r:kd=^J:kl=^H:pt:\ + :kr=^L:ku=^K:li#24:nd=^L:se=\Eg0:so=\Eg1:up=^K:us=\Eg1:ue=\Eg0: +MF|falco-p|falco ts-1sp|falco with paging option:\ + :is=\EZ\E3\E_c:\ + :al=\EE:am:bs:ce=\ET\EG0^H\Eg0:cl=\E*:cd=\EY:co#80:dc=\EW:\ + :dl=\ER:kd=\E[B:kl=\E[D:ei=\Er:im=\Eq:pt:db:\ + :kr=\E[C:ku=\E[A:li#24:nd=\E[C:se=\Eg0:so=\Eg4:\ + :up=\E[A:us=\Eg1:ti=\E_d:te=\E_b:\ + :ue=\Eg0:do=\E[B:cm=\E=%+ %+ :ms:kh=\E[H:da:mi:bt=\EI: +#NOTE: bg can scroll, it just would rather not (ns) - rwells 3/13/81. +# (Shouldn't you take out ns and put in an nl instead? - mrh) +MG|bg|bitgraph|BBN BitGraph terminal:\ + :do=^J:al=2*\E[L:bs:cd=150\E[J:ce=2\E[K:\ + :cl=150\E[H\E[J:cm=%i\E[%d;%dH:co#85:\ + :dl=2*\E[M:k0=\EP:k1=\EQ:k2=\ER:k3=\ES:kd=\EB:ke=\E>:kl=\ED:kr=\EC:\ + :ks=\E=:ku=\EA:li#64:nd=\E[C:ns:pt:se=\E[0m:so=\E[7m:up=\E[A:sf=280\n: +MH|d132|datagraphix|datagraphix 132a:\ + :do=^J:co#80:li#30:cl=^l:ho=\Et:da:db:sf=\Ev:sr=\Ew:\ + :up=\Ek:nd=\El:vs=\ex:ve=\Em\En:\ + :al=\E3:ic=\E5:dc=\E6:in:ic=\E5: +MI|soroc|Soroc 120:\ + :do=^J:cd=\EY:ce=\ET:cl=2\E*:ma=^K^P^R^L^L :\ + :kl=^H:ku=^K:kr=^L:kd=^J:tc=adm3a: +# From: ma179abu%sdcc3@sdcsvax.ucsd.edu (Bill Houle) +MI|iq140|soroc140|Soroc IQ140 with inverse & dim:\ + :ic=\EQ:dc=\EW:al=\EE:dl=\ER:ce=\ET:cd=\EY:cl=\E+:cm=\E=%+ %+ :\ + :up=^K:do=^J:le=^H:nd=^L:ho=^^:ta=\Ei:ma=^Kk^Jj^Hh^Ll^^h:am:bs:\ + :co#80:li#24:ei=:im=:kb=^H:kh=^^:ku=^K:kd=^J:kl=^H:kr=^L:\ + :k0=^AI:k1=^A@:k2=^AA:k3=^AB:k4=^AC:k5=^AD:k6=^AE:k7=^AF:\ + :k8=^AG:k9=^AH:se=\E:so=\E:us=\E):ue=\E(: +# tec is untested, and taken from CB/Unix virtual terminal driver. +# Upper case terminal, uses lower case for control sequences!!! +# The driver shows the C ~ operator used on CM coordinates. +# Without the terminal in front of me, I can't figure out what's +# going on, so I've dotted out the cm. Note there is no ~ in tgoto. +MJ|tec400|tec scope:\ + :do=^J:.cm=l%r%.%.:up=x:do=h:nd=g:le=w:ho=i:so={:se=|:sg#1:\ + :cl=f:al=e:dl=u:ic=d:dc=t:ce=c:cd=s: +# From ucbvax!geoff Mon Sep 21 21:15:45 1981 +# This entry has been tested. +MK|tec500|tec 500:\ + :do=^J:am:le=^H:bs:cm=\E=%+ %+ :cl=20^Z:\ + :co#80:ho=^^:li#24:nd=^L:up=^K:so=^]:se=^\: +# I would appreciate more information on this terminal, such as the +# manufacturer and the model number. There are too many tecs in here. +ML|tec:\ + :li#24:co#80:cl=^l:up=^k:nd=\037:\ + :am:le=^H:bs:ho=\036:ma=^K^P^_ :do=^J: +MM|teletec|Teletec Datascreen:\ + :do=^J:am:le=^H:bs:co#80:cl=^l:ho=^^:li#24:nd=^_:up=^k: +# From cbosg!ucbvax!SRC:george Fri Sep 11 22:38:32 1981 +MN|ampex|d80|dialogue|dialogue80|ampex dialogue 80:\ + :ct=\E3:st=\E1:do=^J:is=\EA:us=\El:ue=\Em:\ + :am:le=^H:bs:pt:cl=75\E*:cm=\E=%+ %+ :\ + :al=5*\EE:bt=\EI:ic=\EQ:im=:ei=:dl=5*\ER:dc=\EW:\ + :ce=\Et:cd=\Ey:so=\Ej:se=\Ek:li#24:co#80:nd=^L:up=^K: +# From: atd!dsd!rcb@ucbvax.berkeley.edu (Richard Bascove) +A2|a210|210|ampex210|ampex a210:\ + :am:bs:cl=\E*:cm=\E=%+ %+ :al=\EE:bt=\EI:ic=\EQ:im=:ei=:\ + :dl=\ER:dc=\EW:ho=^^:xn:ce=\Et:cd=\Ey:li#24:co#80:nd=^L:up=^K:\ + :pt:if=/usr/share/tabset/std:is=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En:\ + :kl=^H:kr=^L:kd=^V:ku=^K:kh=^^:hs:ts=\E.0\Eg\E}\Ef:fs=\E.2:\ + :kn#10:k0=^A0^M:k1=^A1^M:k2=^A2^M:k3=^A3^M:k4=^A4^M:k5=^A5^M:\ + :vb=\EU\EX\EU\EX\EU\EX\EU\EX:k6=^A6^M:k7=^A7^M:k8=^A8^M:k9=^A9^M:\ + :so=\EG4:se=\EG0:us=\EG8:ue=\EG0:ug#1:sg#1: +MO|digilog|333|digilog 333:\ + :le=^H:bs:co#80:ce=\030:ho=^n:li#16:nd=^i:up=^o:do=^J: +MP|ep48|ep4080|execuport 4080:\ + :am:le=^H:bs:os:co#80:hu=\036:hd=\034:do=^J: +MQ|ep40|ep4000|execuport 4000:\ + :am:le=^H:bs:os:co#136:hu=\036:hd=\034:do=^J: +MR|terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200:\ + :co#120:hc:os:do=^J: +# AED 512 +# by giles Billingsley (gilesb%ucbcad@berkeley) +# rewritten 8/82 for newer AEDs and better operation of vi,etc. +MS|aed|AED|aed512|AED512|aed 512:\ + :db:co#64:li#40:cl=^L:bs:nd=\Ei0800\001:\ + :up=^K:ve=\E\E\E\E\E\E\E\072004=000200??\001:\ + :vb=\EK0001??0000K0001202080\001:\ + :us=\E\07200>8000140\001:ue=\E\07200>8000100\001:\ + :uc=\Ei???>l0800i0102\001:\ + :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\ + :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\ + :so=\E\07200>8000140[80C00\001:se=\E[00C80\001:\ + :is=\EG1MMM.`40K0001202080K8001????00^L\EC80L80{80^L\EK010100????K0601??0000c818100\EG1HHH.\07210000019A27FD006A280D002A200A52429FE8524861086118612861360N031B4C3F3F1800N041B0C1B4C38301800N001B3B313030301800N011B3B313030341800N021B3B313030381800N050800N061B3B313335301800\07211000015A58E8D5011A58F8D5111A5908D5211A5918D531160\07212000015AD5011858EAD5111858FAD52118590AD5311859160\0721300004B2071C5858E0A18658E0A0A858EA900858F268FA5278590A50A29018591A9F51865908590A90165918591A59038E58E8590A591E58F290185912071C5180A0A0A0901858EA900858F268F60\0721350000BA9472031DEA9502031DE60\E\E\E\EG1MMM.^A: +zL|aed-ucb|AED-UCB|aed512-ucb|AED512-UCB|aed 512 w/o UCB ROM:\ + :db:co#64:li#40:cl=^L:bs:nd=\Ei0800\001:up=^K:\ + :ve=\E\E\E\E\E\E\E\072004=000200??\001:\ + :vb=\EK0001??0000K0001202080\001:\ + :us=\E\07200>8000140\001:ue=\E\07200>8000100\001:\ + :uc=\Ei???>l0800i0102\001:\ + :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\ + :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\ + :so=\E\07200>8000140[80C00\001:se=\E[00C80\001:\ + :if=/usr/share/tabset/aed512: +# CIT 80 - vt 100 emulator, the termcap has been modified to remove +# the delay times and do an auto tab set rather than the indirect +# file used in vt100. +MT|cit80|cit 80|Citoh 80:\ + :co#80:li#24:am:cl=\E[;H\EJ:bs:cm=\E[%i%2;%2H:nd=\E[C:up=\E[A:\ + :ce=\EK:cd=\EJ:is=\E>:ks=\E[?1h\E=:ke=\E[?1l\E>:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD: +# From mtxinu!sybase!tim (Tim Wood) Fri Sep 27 09:39:12 PDT 1985 +# Alternate cit101 (vt100 em) file used in vt100. +# Uses 23 lines so can run citsys (like h19sys). +# 24 May 85 (mtxinu!sybase!tim) - removed 2-byte limit on 'cm' cursor +# coordinates otherwise there is garbling on long lines in +# co#132 mode; also added support for multipage memory on the Itoh. +MU|citc|Citoh fast vt100:\ + :co#80:li#23:am:cl=\E[;H\E[2J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ + :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\ + :ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ + :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:\ + :dc=\E[P:al=\E[L:im=:ei=:dl=\E[M:ic=\E[@:vs=\E7\E[U:ve=\E[V\E8:xn: +MV|cita|:\ + :co#80:li#23:am:cl=\E[;H\E[2J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ + :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\ + :ks=\E[?1h\E=:ke=\E[?1l\E>:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:vs=\E7\E[U:ve=\E[V\E8:\ + :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:xn: +MW|cit101:li#24:vb@:tc=citc: +MX|cit101b:li#24:tc=citc: +Mh|cit500|cit-500|cit 500:\ + :co#80:li#40:cl=50\E[;H\E[2J:bs:am:cm=5\E[%i%2;%2H:nd=2\E[C:up=2\E[A:\ + :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ + :is=\E(B\E)0\E>\E[?3l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ + :if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ + :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:xn:\ + :do=\ED:al=\E[L:dc=\E[P:dl=\E[M: +# Note several versions of blit. I don't know exactly what is what +# so please send me any corrections to this -- mrh +# From research!ikeya!rob Tue Aug 31 23:41 EDT 1982 +MY|blit|jerq|blit-pb|blit running teletype rom:\ + :do=^J:IC=\Ef%+ :DC=\Ee%+ :AL=\EF%+ :DL=\EE%+ :\ + :mi:dl=\EE!:ic=\Ef!:dc=\Ee!:al=\EF!:\ + :ce=\EK:cl=^L:cm=\EY%r%+ %+ :co#87:li#72:nd=\EC:\ + :up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:am:ul:pt:eo: +MZ|cbblit|columbus enhanced tty blit:\ + :vb=\E^G:so=\EU!:se=\EV!:us=\EU":ue=\EV":cd=\EJ:\ + :im=\EQ:ei=\ER:ic@:co#88:sf=\EG:tc=blit: +Ma|oblit|ojerq|first version of blit rom:\ + :do=^J:AL=\Ef%+ :DL=\Ee%+ :mi:dl=\EE:ei=\ER:im=\EQ:dc=\EO:da:db:\ + :al=\EF:cd=\EJ:ce=\EK:cl=^L:cm=\EY%r%+ %+ :co#88:li#72:nd=\EC:\ + :up=\EA:vb=\E^G:am:ul:pt:eo: +Mb|daleblit|daleterm|blit running Dale DeJager's ROM:\ + :ku=\EA:kd=\EB:kr=\EC:kl=\ED:so=\EU!:se=\EV!:us=\EU":ue=\EV":\ + :da@:db@:tc=oblit: +Mc|datapoint|dp3|dp3360|datapoint 3360:\ + :do=^J:am:le=^H:bs:cd=^_:ce=^^:cl=^]^_:co#82:ho=^]:li#25:nd=^x:up=^z: +#From: cbosgd!utcs!romwa@ucbvax.berkeley.edu (mark dornfeld) +# This termcap is for the LANPAR Technologies VISION 3220 +# terminal. The function key definitions k0-k5 represent the +# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN, +# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to +# PF4 keys. +v0|v3220|LANPAR Vision II model 3220/3221/3222:\ + :co#80:li#24:cl=\E[H\E[J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ + :is=\E>\E[?3l\E[?7h\E[?8h\E[p:ks=\E=:ke=\E>:\ + :kn#10:k0=\E[1~:k1=\E[2~:k2=\E[3~:k3=\E[4~:k4=\E[5~:k5=\E[6~:\ + :k6=\E[OP:k7=\E[OQ:k8=\E[OR:k9=\E[OS:\ + :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\ + :kh=\E[H:pt:sr=\EM:xn:\ + :dl=\E[M:dc=\E[P:ei=\E[4l:al=\E[L:im=\E[4h:mi: +# From ucbvax!faletti (Faletti@Berkeley) +# FREEDOM 100 by Liberty Electronics USA, SF. +# :kh=^^: left out because it precludes using change-to-alternate-file in vi. +# Basic Freedom 100 entry, works with VI at 1200 baud. +Md|f100|freedom100|freedom|freedom 100 no padding:\ + :am:bs:bw:mi:ms:pt:co#80:kn#20:li#24:\ + :ct=\E3:st=\E1:is=\Eg\Ef\r\Ed:kr=^L:\ + :cl=^Z:do=^J:ho=^^:kb=^H:kl=^H:\:kd=^V:\ + :ko=dc,al,dl,cl,bt,ce,cd:ku=^K:le=^H:nd=^L:\ + :ch=\E]%+ :cm=\E=%+ %+ :cv=\E[%+ :sr=\Ej:up=^K:\ + :al=\EE:bt=\EI:cd=\EY:ce=\ET:dc=\EW:dl=\ER:ei=\Er:im=\Eq:\ + :se=\EG0:so=\EG4:ue=\EG0:us=\EG8:as=\E$:ae=\E%:\ + :vb=\Eb\200\200\Ed:\ + :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\ + :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k0=^AI\r:\ + :hs:ts=\Eg\Ef:fs=\r:ds=\Eg\Ef\r: +Me|f100-rv|freedom100-rv|freedom-rv|freedom100 with reverse video at 1200:\ + :is=\Eg\Ef\r\Eb:vb=\Ed\200\200\Eb:tc=freedom100: +# VI at 9600 baud (or EMACS at 1200 -- but may be more than is needed for emacs) +Mf|f100-v|freedom100-v|freedom-v|freedom100 for 9600 vi or 1200 emacs:\ + :al=6.5*\EE:dl=11.5*\ER:\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :tc=freedom100: +Mx|f100-v-rv|freedom100-v-rv|freedom-v-rv|freedom100 rev. vid. for 9600 vi:\ + :al=6.5*\EE:dl=11.5*\ER:is=\Eg\Ef\r\Eb:\ + :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ + :tc=freedom100: +# EMACS at 9600 baud -- this still needs some more work on the padding +My|f100-e|freedom100-e|freedom-e|freedom100 for 9600 emacs:\ + :al=8.5*\EE:dl=11.5*\ER:ip=6:\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :tc=freedom100: +Mz|f100-e-rv|freedom100-e-rv|freedom-e-rv|freedom100 rev. vid. for emacs 9600:\ + :al=8.5*\EE:dl=11.5*\ER:ip=6:is=\Eg\Ef\r\Eb:\ + :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ + :tc=freedom100: +zM|f110-v|freedom110-v|freedom110 for 9600 vi or 1200 emacs:\ + :is=\Eg\Ef\r\Ed\EO:dc=\EO\EW:im=\EO\Eq:\ + :al=6.5*\EE:dl=11.5*\ER:\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :tc=freedom100: +# (from kerch@lll-crg) +Q1|f200|freedom200| Freedom 200 VDT by Liberty Electronics :\ + :if=/usr/share/tabset/stdcrt:al=\EE:am:bs:bt=\EI:cd=\EY:\ + :ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:do=^V:\ + :ds=\Eh:ei=\Er:im=\Eq:is=\Eg\El\E\041\062:\ + :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\ + :k6=^AE\r:k7=^AE\r:k8=^AF\r:k9=^AG\r:kd=^V:kr=L:\ + :ku=^K:li#24:ms:nd=^L:se=\EG0:so=\EG4:sr=\Ej:\ + :te=\EJ\E\\2\E|\041\061^L^Y:ti=\E\\1\EK\E|\041\061L^Y:\ + :ts=\Ef:ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:hs:i2=\E^O\Eg:\ + :ts=\Ef:fs=^M:ds=\E^N: +Mg|dg|dg6053|data general 6053:\ + :do=^J:am:le=^H:bs:cm=^P%r%.%.:cl=^L:ho=^H:nd=^S:\ + :up=^W:ce=^K:co#80:li#24: +# dg450 and dg200 from cornell +Mj|dg450|dg6134|data general 6134:\ + :nd=\030:bs@:tc=dg200: +Mk|dg200|data general Dasher 200:\ + :am:bc=^Y:bs=0:ce=^K:cl=^L:cm=^P%r%+\200%+\200:co#80:do=^Z:\ + :ho=^H:li#24:\ + :ll=\036FP0017:se=\036E:so=\036D:up=^W:\ + :is=\036O\036FQ2\036FB000\036FE\036FA\036FQ2: +# Note: lesser Dasher terminals will not work with vi because vi insists upon +# having a command to move straight down from any position on the bottom line +# and scroll the screen up, or a direct vertical scroll command. The 460 and +# above have both, the D210/211, for instance, has neither. We must use ANSI +# mode rather than DG mode because standard UNIX tty drivers assume that ^H is +# backspace on all terminals. This is not so in DG mode. +zF|dg460-ansi|Data General Dasher 460, ANSI-mode:\ + :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J:\ + :cm=\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:do=\E[B:\ + :ei=:ho=\E[H:ic=\E[@:im=:ue=\E[05:ul:up=\E[A:us=\E[4m:is=\036F@:\ + :k0=\E[001z:k1=\E[002z:k2=\E[003z:k3=\E[004z:k4=\E[005z:k5=\E[006z:\ + :k6=\E[007z:k7=\E[008z:k8=\E[009z:k9=\E[00\:z:\ + :kb=\E[D:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:kn#6:\ + :l0=f1:l1=f2:l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:l9=f10:\ + :le=^H:li#24:mb=\E[5m:me=\E[0m:mh=\E[2m:mr=\E[7m:ms:mu=\EW:\ + :nd=\E[C:nl=\ED:pt:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T: +zG|v603|visual603|603|Visual model 603:\ + :hs:ts=\EP2~:fs=\E\\:ds=\EP2;1~\E\\:\ + :im=\E[4h:ei=\E[4l:mi:dc=\E[P:dm=:ed=:al=\E[L:dl=\E[M:\ + :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:sb=\EM:\ + :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\ + :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ + :is=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ + :rs=\E>\E[?3l\E[?4l\E[?7h\E[?8h:\ + :tc=vt100: +Mi|cdi|cdi1203:\ + :am:le=^H:bs:hc:os:co#80:dC#200:do=^J: +# ^S is an arrow key! Boy is this guy in for a surprise on v7! +Ml|sol:\ + :do=^J:am:le=^Y:ho=^H:bs:cm=\E^1%.\E^2%.:cl=^K:ho=^N:co#64:li#16:\ + :nd=^S:up=^W:kl=^A:kr=^S:ku=^W:kd=^Z:ma=^A^H^S ^W^P^Z^N: +Mn|xl83|Cybernex XL-83:\ + :do=^J:am:le=^H:bs:cd=62^P:ce=3^O:cl=62^L:cm=^W%+ %+ :co#80:ho=^K:\ + :kd=^J:kl=^H:ku=^N:li#24:up=^N:nd=^I: +Mo|omron|Omron 8025AG:\ + :do=^J:al=\EL:am:le=^H:bs:cd=\ER:co#80:ce=\EK:cl=\EJ:\ + :da:db:dc=\EP:dl=\EM:ho=\EH:li#24:nd=\EC:se=\E4:sf=\ES:\ + :so=\Ef:sr=\ET:up=\EA:ve=:vs=\EN: +Mp|plasma|plasma panel:\ + :am:le=^H:bs:cl=^L:co#85:ho=^^:li#45:nd=\030:up=\026:do=^J: +Mq|pty|psuedo teletype:\ + :do=^J:co#80:li#24:am:cl=\EJ:le=^H:bs:cm=\EG%+ %+ :nd=\EC:\ + :up=\EA:ce=\EK:cd=\EL:al=\EP:dl=\EN:ic=\EO:\ + :so=\Ea$:se=\Eb$:us=\Ea!:ue=\Eb!: +Mr|remote|virtual remote terminal:\ + :co#79:am@:nl@:tc=virtual: +Ms|swtp|ct82|southwest technical products ct82:\ + :do=^J:am:le=^d:bc=^d:\ + :al=^\^y:cd=^v:ce=^F:cl=^L:cm=%r^k%.%.:co#82:li#20:\ + :dl=^z:nd=^s:up=^a:so=^^^v:se=^^^F:dc=^\^h:ic=^\^x:ho=^p:\ + :ei=:sf=^n:sr=^o:ll=^c:im=:\ + :is=^\^r^^^s^^^d^]^w^i^s^^^]^^^o^]^w^r^i: +Mt|terak|Terak emulating Datamedia 1520:\ + :tc=dm1520: +Mu|sun|Sun Microsystems Workstation console:\ + :li#34:co#80:cl=^L:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :am:bs:mi:ms:pt:km:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:\ + :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:kh=\E[H:\ + :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ + :al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\ + :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP: +# From john@ucbrenoir Tue Sep 24 13:14:44 1985 +Mu|sun-s|Sun Microsystems Workstation window with status line:\ + :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun: +Mu|sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\ + :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun-e: +M0|sun-48|Sun 48-line window:\ + :li#48:co#80:tc=sun: +M1|sun-34|Sun 34-line window:\ + :li#34:co#80:tc=sun: +M2|sun-24|Sun 24-line window:\ + :li#24:co#80:tc=sun: +M3|sun-17|Sun 17-line window:\ + :li#17:co#80:tc=sun: +M4|sun-12|Sun 12-line window:\ + :li#12:co#80:tc=sun: +M5|sun-1|Sun 1-line window for sysline:\ + :li#1:co#80:es:hs:ts=\r:fs=\E[K:ds=^L:tc=sun: +M6|sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\ + :ic@:im@:ei@:tc=sun: +M7|sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history:\ + :te=\E[>4h:ti=\E[>4l:tc=sun: +# For NeWS's psterm from Eric Messick & Hugh Daniel +p0|psterm|psterm-basic|psterm-80x34:\ + :am:bs:al=\EA:cd=\EB:ce=\EC:cl=^L:cm=\E%d;%d;:cs=\EE%d;%d;:\ + :dc=\EF:dl=\EK:do=\EP:ei=\ENi:el=\ENl:fs=\ENl:\ + :ho=\ER:hs:im=\EOi:is=\EN*:km:kd=\E[B:ku=\E[A:kr=\E[C:kl=\E[D:\ + :mb=\EOb:md=\EOd:me=\EN*:mr=\EOr:nd=\EV:pt:rc=\034:rs=\EN*:sc=\035:\ + :se=\ENo:sf=\EW:sl=\EOl:so=\EOo:sr=\EX:te=\ENt:ti=\EOt:ts=\EOl:\ + :ue=\ENu:le=\ET:ll=\EU:ul:up=\EY:us=\EOu:vb=\EZ:co#80:li#34: +p1|psterm-96x48:\ + :co#96:li#48:tc=psterm-basic: +p2|psterm-90x28:\ + :co#90:li#28:tc=psterm-basic: +p3|psterm-80x24:\ + :co#80:li#24:tc=psterm-basic: +# This is a faster termcap for psterm. Warning: if you use this termcap, +# some control characters you type will do strange things to the screen. +p4|psterm-fast:\ + :am:bs:al=^A:cd=^B:ce=^C:cl=^L:cm=^D%d;%d;:cs=^E%d;%d;:\ + :dc=^F:dl=^K:do=^P:ei=^Ni:el=^Nl:fs=^Nl:\ + :ho=^R:hs:im=^Oi:is=^N*:km:kd=\E[B:ku=\E[A:kr=\E[C:kl=\E[D:\ + :mb=^Ob:md=^Od:me=^N*:mr=^Or:nd=^V:pt:rc=\034:rs=^N*:sc=\035:\ + :se=^No:sf=^W:sl=^Ol:so=^Oo:sr=^X:te=^Nt:ti=^Ot:ts=^Ol:ue=^Nu:\ + :le=^T:ll=^U:ul:up=^Y:us=^Ou:vb=^Z:co#80:li#34: +LS|apollo:\ + :al=\EI:am:bs:cd=\EJ:ce=\EK:ch=\EN%d:cl=^L:cm=\EM%+ %d):\ + :cv=\EO+ :dc=\EP:dl=\EL:do=\EB:ei=\ER:im=\EQ:mi:nd=\EC:se=\ET:sf=\EE:\ + :so=\ES:sr=\ED:te=\EX:ti=\EW:ue=\EV:up=\EA:us=\EU:co#88:li#53: +# Apollo termcaps from Gary Darland, goodmanc@garnet +LP|apollo_15P|apollo 15 inch display:\ + :dN@:tc=vt132: +LQ|apollo_19L|apollo 19 inch display:\ + :dN@:tc=vt132: +LR|apollo_color|apollo color display:\ + :dN@:tc=vt132: +Mv|virtual|VIRTUAL|cb unix virtual terminal:\ + :do=^J:co#80:li#24:am:cl=\E\112:le=^H:bs:cm=\E\107%r%.%.:nd=\E\103:\ + :up=\E\101:ce=\E\113:cd=\E\114:al=\E\120:dl=\E\116:im=:ei=:ic=\E\117:\ + :da:db:kl=\E\104:kr=\E\103:ku=\E\101:kd=\E\102:kh=\E\105:\ + :so=\E\141\004:se=\E\142\004:us=\E\141\001:ue=\E\142\001: +Mw|it2|intertube2|intertec data systems intertube 2:\ + :do=^J:am:bs:cl=^L:co#80:ho=^A:li#25:up=^Z:ce=\EK:\ + :cm=^N%+ %+ :ch=^P%\102%.:cv=^K%.:nd=^F:do=\n:ll=^K^X\r:\ + :so=\E0P:se=\E0@: +Mx|delta|dd5000|delta data 5000:\ + :do=^J:am:le=^H:bs:cl=^NR:cm=^O%\068%+9%\068%+9:co#80:li#27:\ + :ho=^NQ:nc:nd=^Y:up=^Z:ce=^NU:dc=^NV:ma=^K^J^Z^P^Y :xr: +My|mdl110|cybernex mdl-110:\ + :cm=^P%+ %+ :co#80:li#24:am:cl=70^X:le=^H:bs:do=^J:\ + :nd=^U:up=^Z:ho=^Y:ce=145^N@^V:cd=145^NA^W:al=65^NA^N^]:\ + :dl=40^NA^N^^:im=:ei=:ic=3.5^NA^]:dm=:ed=:dc=3.5^NA^^:\ + :so=^NF:se=^NG:ta=43\t:ma=^Z^P:cd=6^N@^V: +Mz|zen30|z30|zentec 30:\ + :do=^J:mi:co#80:li#24:ma=^L ^R^L^K^P:ul:\ + :al=1.5*\EE:le=^H:bs:ce=1.0*\ET:cm=\E=%+ %+ :cl=\E*:\ + :ho=^^:nd=^L:se=\EG0:so=\EG6:up=^K:im=\Eq:ei=\Er:\ + :am:dc=\EW:dl=1.5*\ER:cd=\EY: +m0|modgraph|mod|Modgraph terminal emulating vt100, 24x80:\ + :xn@:rf@:sr=5\EM\E[K:vs=\E\^9;0s\E\^7;1s:\ + :is=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s:\ + :tc=vt100: +# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82) +# also, has a meta-key (MT) +# from goldberger@su-csli.arpa +MX|dmchat|dmchat version of datamedia 2500:\ + :al=1*^P\n^X^]^X^]:\ + :MT:km:\ + :dl=2^P^Z^X^]:\ + :tc=dm2500: +# originally from Carol Block at ear (cblock@ear); changed O's to 0's and +# fixed :is \E from pcuser@garnet.berkeley.edu, 27 Feb 90 +m7|mt70|m70|morrow mt70:\ + :is=\EG0\E"5:cl=^Z:cm=\E=%+ %+ :do=^J:im=:ic=\EQ:ei:\ + :dm=:dc=\EW:ed=:kl=\034L:kr=\034M:ku=\034J:kd=\034K:\ + :so=\EG4:se=\EG0:us=\EG1:ue=\EG0:vs=\E"2:ve=\E"5\E(:\ + :tc=adm31: +# from keith bostic (bostic@monet) +# +m2|mod2|Modgraph GX-1000, set to 80x24, keypad not enabled:\ + :is=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;1s\E\^9;1s\E\^27;1:\ + :bs:cd=50\EJ:ce=3\EK:cl=50\EH\EJ:cm=5\EY%+ %+ :co#80:li#24:nd=2\EC:\ + :pt:sr=5\EI:up=2\EA:da:db:am: +S1|wsiris|iris40|iris emulating a 40 line visual 50 (approximately):\ + :am:al=\EL:is=\E7B0\E7F7\E7C2\E7R3:\ + :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:ho=\EH:cm=\EY%+ %+ :co#80:li#40:nd=\EC:\ + :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:\ + :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ + :vs=\E;:ve=\E>:cl=\Ev:ho=\EH:dl=\EM:so=\E9P:se=\E0@:\ + :HS=\E7F2:HE=\E7F7:\ + :us=\E7R2\E9P:ue=\E7R3\E0@:\ + :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite: + +# # -------------------------------- +# +# N: ANN ARBOR +# +# Needs function keys added. +# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs. +# Highly modified 6/22 by Mike O'Brien. +# split out into several for the various screen sizes by dave-yost@rand +# Modifications made 3/82 by Mark Horton +# Modified by Tom Quarles at UCB for greater efficiency and more diversity +# status line moved to top of screen, vb removed 5/82 +# +# assumes the following setup: +# A menu: 0000 1010 0001 0000 +# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 +# C menu: 56 66 0 0 9600 0110 1100 +# D menu: 0110 1001 1 0 +# +# Briefly, the settings are for the following modes: +# (values are for bit set/clear with * indicating our preference +# and the value used to test these termcaps) +# Note that many of these settings are irelevent to the termcap +# and are just set to the default mode of the terminal as shipped +# by the factory. +# +# A menu: 0000 1010 0001 0000 +# Block/underline cursor* +# blinking/nonblinking cursor* +# key click/no key click* +# bell/no bell at column 72* +# +# key pad is cursor control*/key pad is numeric +# return and line feed/return for key * +# repeat after .5 sec*/no repeat +# repeat at 25/15 chars per sec. * +# +# hold data until pause pressed/process data unless pause pressed* +# slow scroll/no slow scroll* +# Hold in area/don't hold in area* +# functions keys have default*/function keys disabled on powerup +# +# show/don't show position of cursor during page transmit* +# unused +# unused +# unused +# +# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 +# Baud rate (9600*) +# +# 2 bits of parity - 00=odd,01=even*,10=space,11=mark +# 1 stop bit*/2 stop bits +# parity error detection off*/on +# +# keyboard local/on line* +# half/full duplex* +# disable/do not disable keyboard after data transmission* +# +# transmit entire page/stop transmission at cursor* +# transfer/do not transfer protected characters* +# transmit all characters/transmit only selected characters* +# transmit all selected areas/transmit only 1 selected area* +# +# transmit/do not transmit line seperators to host* +# transmit/do not transmit page tab stops tabs to host* +# transmit/do not transmit column tab stop tabs to host* +# transmit/do not transmit graphics control (underline,inverse..)* +# +# enable*/disable auto XON/XOFF control +# require/do not require receipt of a DC1 from host after each LF* +# pause key acts as a meta key/pause key is pause* +# unused +# +# unused +# unused +# unused +# unused +# +# XON character (17*) +# XOFF character (19*) +# +# C menu: 56 66 0 0 9600 0110 1100 +# number of lines to print data on (printer) (56*) +# +# number of lines on a sheet of paper (printer) (66*) +# +# left margin (printer) (0*) +# +# number of pad chars on new line to printer (0*) +# +# printer baud rate (9600*) +# +# printer parity: 00=odd,01=even*,10=space,11=mark +# printer stop bits: 2*/1 +# print/do not print guarded areas* +# +# new line is: 01=LF,10=CR,11=CRLF* +# unused +# unused +# +# D menu: 0110 1001 1 0 +# LF is newline/LF is down one line, same column* +# wrap to preceeding line if move left from col 1*/don't wrap +# wrap to next line if move right from col 80*/don't wrap +# backspace is/is not destructive* +# +# display*/ignore DEL character +# display will not/will scroll* +# page/column tab stops* +# erase everything*/erase unprotected only +# +# editing extent: 0=display,1=line*,2=field,3=area +# +# unused +# +NA|aaa-unk|ann arbor ambassador (internal - don't use this directly):\ + :do=^J:al=3\E[L:am:le=^H:bs:\ + :cd=\E[J:ce=5\E[K:cl=156\E[H\E[J:cm=\E[%i%d;%dH:co#80:\ + :dc=4\E[P:dl=3\E[M:ho=\E[H:ic=4\E[@:\ + :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[m:\ + :ku=\EM:kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:ko=cl,dc,dl,ce,cd:\ + :ks=\EP`?z~[H~[[J`>z~[[J`8xz~[M`4xz~[[D`6xz~[[C`2xz~[D\E\\:\ + :ke=\EP`?y~[H~[[J`>y~[[2J`8xy~[M`4xy~[[D`6xy~[[C`2xy~[D\E\\:\ + :ch=\E[%i%d`:ei=:im=:pt:bw:bt=\E[Z:\ + :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM: +NB|aaa-18|ann arbor ambassador/18 lines:\ + :ti=\E[2J\E[18;0;0;18p:te=\E[60;0;0;18p\E[18;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#18:tc=aaa-unk: +NC|aaa-20|ann arbor ambassador/20 lines:\ + :ti=\E[2J\E[20;0;0;20p:te=\E[60;0;0;20p\E[20;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#20:tc=aaa-unk: +ND|aaa-22|ann arbor ambassador/22 lines:\ + :ti=\E[2J\E[22;0;0;22p:te=\E[60;0;0;22p\E[22;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#22:tc=aaa-unk: +NE|aaa-24|ann arbor ambassador/24 lines:\ + :ti=\E[2J\E[24;0;0;24p:te=\E[60;0;0;24p\E[24;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#24:tc=aaa-unk: +NF|aaa-26|ann arbor ambassador/26 lines:\ + :ti=\E[2J\E[26;0;0;26p:te=\E[60;0;0;26p\E[26;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#26:tc=aaa-unk: +NG|aaa-28|ann arbor ambassador/28 lines:\ + :ti=\E[2J\E[28;0;0;28p:te=\E[60;0;0;28p\E[28;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#28:tc=aaa-unk: +NH|aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines:\ + :ti=\E[2J\E[30;0;0;30p:te=\E[60;0;0;30p\E[30;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#30:tc=aaa-unk: +NI|aaa-36|ann arbor ambassador/36 lines:\ + :ti=\E[2J\E[36;0;0;36p:te=\E[60;0;0;36p\E[36;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#36:tc=aaa-unk: +NJ|aaa-40|ann arbor ambassador/40 lines:\ + :ti=\E[2J\E[40;0;0;40p:te=\E[60;0;0;40p\E[40;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#40:tc=aaa-unk: +NK|aaa-48|ann arbor ambassador/48 lines:\ + :ti=\E[2J\E[48;0;0;48p:te=\E[60;0;0;48p\E[48;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#48:tc=aaa-unk: +NL|aaa-60|ann arbor ambassador/60 lines:\ + :ti=\E[2J\E[60;0;0;60p:te=\E[60;0;0;60p\E[60;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#60:tc=aaa-unk: +NS|aaa-unk-s|ann arbor ambassador unknown with/status:\ + :es:hs:i2=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\ + :ts=\E7\E[>51h\E[H\E[2K\E[%i%d`:fs=\E[>51l\E8:\ + :ds=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\ + :tc=aaa-unk: +NM|aaa-18-s|ambassador|ann arbor ambassador/18 lines + status line:\ + :ti=\E[2J\E[18;1;0;18p:\ + :te=\E[60;1;0;18p\E[17;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#17:tc=aaa-unk-s: +NN|aaa-20-s|ambassador|ann arbor ambassador/20 lines + status line:\ + :ti=\E[2J\E[20;1;0;20p:\ + :te=\E[60;1;0;20p\E[19;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#19:tc=aaa-unk-s: +NO|aaa-22-s|ambassador|ann arbor ambassador/22 lines + status line:\ + :ti=\E[2J\E[22;1;0;22p:\ + :te=\E[60;1;0;22p\E[21;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#21:tc=aaa-unk-s: +NP|aaa-24-s|ambassador|ann arbor ambassador/24 lines + status line:\ + :ti=\E[2J\E[24;1;0;24p:\ + :te=\E[60;1;0;24p\E[23;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#23:tc=aaa-unk-s: +NQ|aaa-26-s|ambassador|ann arbor ambassador/26 lines + status line:\ + :ti=\E[2J\E[26;1;0;26p:\ + :te=\E[60;1;0;26p\E[25;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#25:tc=aaa-unk-s: +NR|aaa-28-s|ambassador|ann arbor ambassador/28 lines + status line:\ + :ti=\E[2J\E[28;1;0;28p:\ + :te=\E[60;1;0;28p\E[27;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#27:tc=aaa-unk-s: +NT|aaa-30-s|ambassador|ann arbor ambassador/30 lines + status line:\ + :ti=\E[2J\E[30;1;0;30p:\ + :te=\E[60;1;0;30p\E[29;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#29:tc=aaa-unk-s: +NU|aaa-36-s|ambassador|ann arbor ambassador/36 lines + status line:\ + :ti=\E[2J\E[36;1;0;36p:\ + :te=\E[60;1;0;36p\E[35;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#35:tc=aaa-unk-s: +NV|aaa-40-s|ambassador|ann arbor ambassador/40 lines + status line:\ + :ti=\E[2J\E[40;1;0;40p:\ + :te=\E[60;1;0;40p\E[39;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#39:tc=aaa-unk-s: +NW|aaa-48-s|ann arbor ambassador/48 lines+sl:\ + :ti=\E[2J\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\EP`?y~[[2J~[[H\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#47:tc=aaa-unk-s: +NX|aaa-60-s|ambassador|ann arbor ambassador/60 lines + status line:\ + :ti=\E[2J\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:\ + :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#59:tc=aaa-unk-s: +NY|aaa-18-rv|ambassador/18 lines+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-18: +NZ|aaa-20-rv|ambassador/20 lines+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-20: +Na|aaa-22-rv|ambassador/22 lines+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-22: +Nb|aaa-24-rv|ambassador/24 lines+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-24: +Nc|aaa-26-rv|ambassador/26 lines+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-26: +Nd|aaa-28-rv|ambassador/28 lines+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-28: +Ne|aaa-30-rv|ann arbor ambassador/30 lines in reverse video:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-30: +Nf|aaa-36-rv|ann arbor ambassador/36 lines in reverse video:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-36: +Ng|aaa-40-rv|ann arbor ambassador/40 lines in reverse video:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-40: +Nh|aaa-48-rv|ann arbor ambassador/48 lines in reverse video:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-48: +Ni|aaa-60-rv|ann arbor ambassador/60 lines in reverse video:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-60: +Nj|aaa-18-rv-s|aaa-18-s-rv|ambassador/18 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[18;1;0;18p:te=\E[60;1;0;18p\E[17;1H\E[J:li#17:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Nk|aaa-20-rv-s|aaa-20-s-rv|ambassador/20 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[20;1;0;20p:te=\E[60;1;0;20p\E[19;1H\E[J:li#19:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Nl|aaa-22-rv-s|aaa-22-s-rv|ambassador/22 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[22;1;0;22p:te=\E[60;1;0;22p\E[21;1H\E[J:li#21:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Nm|aaa-24-rv-s|aaa-24-s-rv|ambassador/24 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[24;1;0;24p:te=\E[60;1;0;24p\E[23;1H\E[J:li#23:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Nn|aaa-26-rv-s|aaa-26-s-rv|ambassador/26 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[26;1;0;26p:te=\E[60;1;0;26p\E[25;1H\E[J:li#25:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +No|aaa-28-rv-s|aaa-28-s-rv|ambassador/28 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[28;1;0;28p:te=\E[60;1;0;28p\E[27;1H\E[J:li#27:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Np|aaa-rv|aaa-30-rv-s|aaa-30-s-rv|ambassador/30 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[30;1;0;30p:te=\E[60;1;0;30p\E[29;1H\E[J:li#29:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Nq|aaa-36-rv-s|aaa-36-s-rv|ambassador/36 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[36;1;0;36p:te=\E[60;1;0;36p\E[35;1H\E[J:li#35:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Nr|aaa-40-rv-s|aaa-40-s-rv|ambassador/40 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[40;1;0;40p:te=\E[60;1;0;40p\E[39;1H\E[J:li#39:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Ns|aaa-48-rv-s|aaa-48-s-rv|ambassador/48 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:li#47:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +Nt|aaa-60-rv-s|aaa-60-s-rv|ambassador/60 lines+sl+rv:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :ti=\E[2J\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:li#59:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :tc=aaa-unk-s: +NL|aaa-24-ctxt|ann arbor ambassador/24 lines:\ + :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24: +NL|aaa-24-rv-ctxt|ambassador/24+rv:\ + :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24-rv: +NL|aaa-s-ctxt|aaa-30-s-ctxt|hairy aaa:\ + :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:tc=aaa-30-s: +NL|aaa-s-rv-ctxt|aaa-30-s-rv-ctxt|hairy aaa:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:\ + :li#29:tc=aaa-unk-s: +NH|aaa-ctxt|aaa-30-ctxt|ann arbor ambassador/30 lines:\ + :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:tc=aaa-30: +NH|aaa-rv-ctxt|aaa-30-rv-ctxt|ann arbor ambassador/30 lines:\ + :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:\ + :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ + :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ + :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ + :li#30:tc=aaa-unk: +Nd|aaa-db|ann arbor ambassador 30/destructive backspace:\ + :ti=\E[H\E[J\E[30;0;0;30p:te=\E7\E[60;0;0;30p\E8:li#30:\ + :is=\E[60;0;0;30p\E[H\E[J\E[1Q\E[m\E[20l\E[>30h:le=\E[D:bc=\E[D:bs@:\ + :tc=aaa-unk: +N1|aa|annarbor|4080|ann arbor 4080:\ + :do=^J:pt:ct=^\^P^P:st=^]^P1:cm=^O%r%\066%.%>^S^L%+@:\ + :co#80:li#40:le=^H:bs:cl=2^L:up=^N:nd=^_:ho=^K:am:\ + :kb=^^:kd=^J:ku=^N:kl=^H:kr=^_:kh=^K:ma=^_ ^N^P: +# # -------------------------------- +# +# P: PC entries for use with kermit +# +# greg small (gts@populi) +# +# Cannot use :pt:, it does not work (why?). :ho: seems required (why?). [gts] +# Caution: 4.3 BSD tset does not pass li#25 to stty rows except during login? +# :cl: clears attributes and sets wrap at margin before clearing the screen. +P1|ansi.sys|ansisys|PC-DOS 3.1 ANSI.SYS:\ + :am:bs:ce=\E[K:cl=\E[m\E[7h\E[2J:cm=\E[%i%d;%dH:co#80:\ + :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\ + :ho=\E[H:li#25:nd=\E[C:up=\E[A:\ + :ms:md=\E[1m:me=\E[m:mr=\E[7m:se=\E[m:so=\E[1m:ue=\E[m:us=\E[4m:\ + :is=U1 PC-DOS 3.1 ANSI.SYS 9-23-86\n\E[m\E[7h: +# +# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS. +# This should only be used when the terminal emulator cannot redefine the keys. +# Since redefining keys with ansi.sys also affects PC-DOS programs, the key +# definitions must be restored. If the terminal emulator is quit while in vi +# or others using :ks:ke:, the keypad keys will not be defined as per PC-DOS. +# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix +# (^U and ^D are already defined for tn3270). The ESC is safe for vi but it +# does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab. +# Left arrow is always BS, because PC-dos can tolerate this change. +# Caution: vi is limited to 256 string bytes, longer crashes or wierds vi. +# Consequently the End keypad key could not be set (it is relatively safe and +# actually useful because it sends ^@ O, which beeps and opens a line above). +P2|ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\ + :ks=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p:\ + :ke=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p:\ + :is=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\ + :tc=ansi.sys: +# +# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer. +P3|nansi.sys|nansisys||PC-DOS Public Domain NANSI.SYS:\ + :al=\E[1L:dl=\E[1M:ic=\E[1@:dc=\E[1P:\ + :is=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n:\ + :tc=ansi.sys: +# +# See U2 ansi.sysk and U3 nansi.sys above. +P4|nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi:\ + :al=\E[1L:dl=\E[1M:ic=\E[1@:dc=\E[1P:\ + :is=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\ + :tc=ansi.sysk: +# # -------------------------------- +# +# T: TELETYPE +# +# We need descriptions for the model 40. There are known to be at least three +# flavors of the 40, both seem more like IBM half duplex forms fillers than +# ASCII terminals. They have lots of awful braindamage, such as printing +# a visible newline indicator after each newline. The 40-1 is a half duplex +# terminal and is hopeless. The 40-2 is braindamaged but has hope and is +# described here. The 40-4 is a 3270 lookalike and beyond hope. +# The terminal has visible bell but I don't know it - it's +# null here to prevent it from showing the BL character. +# There is an \EG in nl because of a bug in vi (if stty says you have +# a "newline" style terminal (-crmode) vi figures all it needs is nl +# to get crlf, even if cr is not ^M.) +T0|40|tty40|ds40|ds40/2|ds40-2|dataspeed40|teletype dataspeed 40/2:\ + :cl=160\ER:cd=160\EJ:al=160\EL:dl=160\EM:dc=50\EP:im=:ei=:ic=50\E\^:\ + :nd=\EC:up=\E7:bs:cr=\EG:nl=\EG\EB:do=\EB:co#80:li#24:vb=:\ + :so=\E3:se=\E4: +T3|33|tty33|tty|model 33 teletype:\ + :do=^J:co#72:hc:os: +T4|43|tty43|model 43 teletype:\ + :do=^J:kb=^h:am:le=^H:bs:hc:os:co#132: +T7|37|tty37|model 37 teletype:\ + :do=^J:le=^H:bs:hc:hu=\E8:hd=\E9:up=\E7:os: +# From jwb Wed Mar 31 13:25:09 1982 remote from ihuxp +# This entry appears to avoid the top line - I have no idea why. +TT|4424|tty4424|teletype 4424M:\ + :al=\EL:da:db:ip=2:im=:ei=:ic=\E\^:dc=\EP:dl=\EM:\ + :co#80:li#23:am:cl=\E[2;H\E[J:bs:cm=\E[%i%2;%2H\E[B:\ + :nd=\E[C:up=\E[A:pt:mi:sr=\ET:\ + :ce=\E[K:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ + :is=\E[m\E[2;24r:\ + :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:\ + :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS: +# Teletype blit. +TD|dmd|5620|ttydmd|tty5620|5620 terminal 88 columns:\ + :co#88:li#70:am:bs:pt:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :cl=\E[H\E[J:cd=\E[J:ce=\E[K:al=\E[L:dl=\E[M:do=^J:\ + :im=:ei=:ic=\E[@:dc=\E[P:sr=\E[T:sf=\E[S:le=^H:kb=^H:\ + :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:kh=\E[H:ho=\E[H:ll=\E[70;1H:\ + :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:rc=\E8:rs=\Ec:sc=\E7:\ + :so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:ms:me=\E[0m:mr=\E[7m: +# # -------------------------------- +# +# V: VISUAL +# +# The Visual 200 beeps when you type a character in insert mode. +# This is a horribly obnoxious misfeature, and some of the entries +# below try to get around the problem by ignoring the feature or +# turning it off when inputting a character. They are said not to +# work well at 300 baud. (You could always cut the wire to the bell!) +#From mike@brl-vgr Mon Nov 14 08:34:29 1983 +V2|vi200|vis200|visual 200 with function keys:\ + :so=\E4:se=\E3:ms:do=^J:\ + :al=\EL:am:le=^H:bs:cd=\Ey:ce=\Ex:cl=\Ev:\ + :cm=\EY%+ %+ :co#80:dc=\EO:dl=\EM:ho=\EH:\ + :im=:ei=:ic=\Ei \b\Ej:\ + :is=\E3\Eb\Ej\E\\\El\EG\Ec\Ek:\ + :k0=\EP:k1=\EQ:k2=\ER:k3=\E :k4=\E!:k5=\E":k6=\E#:\ + :k7=\E$:k8=\E%:k9=\E&:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ + :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec: +VR|vi200-rv-ic|visual 200 reverse video using insert char:\ + :ei=\Ej:im=\Ei:ic@:tc=vi200-rv: +# The older Visuals didn't come with function keys. This entry uses +# ks and ke so that the keypad keys can be used as function keys. +# If your version of vi doesn't support function keys you may want +# to use V2. +Vf|vi200-f|visual|visual 200 no function keys:\ + :do=^J:al=\EL:am:le=^H:bs:cd=\Ey:ce=4*\Ex:cl=\Ev:\ + :cm=\EY%+ %+ :co#80:dc=4*\EO:dl=4*\EM:ho=\EH:\ + :im=:ei=:ic=\Ei \b\Ej:\ + :is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:ks=\E=:ke=\E>:\ + :k0=\E?p:k1=\E?q:k2=\E?r:k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:\ + :k7=\E?w:k8=\E?x:k9=\E?y:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ + :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec: +Vr|vi200-rv|visual 200 reverse video:\ + :so=\E4:se=\E3:sr@:vs@:ve@:tc=vi200: +Vt|vi200-ic|visual 200 using insert char:\ + :ei=\Ej:im=\Ei:ic@:tc=vi200: +# From: jbs@athena.mit.edu Jeff Siegal +V5|vi55|Visual 55:\ + :im=\Ea:ei=\Eb:mi:dc=\Ew:dm=:ed=:al=\EL:dl=\EM:cs=\E_%+A%+A:\ + :ho=\EH:cl=\Ev:is=\Ev\E_AX\Eb\EW\E9P\ET:so=\EU:se=\ET:ms:\ + :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cm=\EY%+ %+ :co#80:li#24:\ + :nd=\EC:pt:am:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: +# # -------------------------------- +# +# X: TEKTRONIX +# +Xa|tek|tek4012|4012|tektronix 4012:\ + :do=^J:is=\E^O:le=^H:bs:cl=1000\E^L:co#75:ns:li#35:os: +Xb|tek4013|4013|tektronix 4013:\ + :as=\E^N:ae=\E^O:dF#1000:tc=4012: +Xc|tek4014|4014|tektronix 4014:\ + :is=\E^O\E9:co#81:li#38:dF#1000:tc=tek4012: +Xd|tek4015|4015|tektronix 4015:\ + :as=\E^N:ae=\E^O:tc=4014: +Xe|tek4014-sm|4014-sm|tektronix 4014 in small font:\ + :is=\E^O\E\072:co#121:li#58:tc=tek4014: +Xf|tek4015-sm|4015-sm|tektronix 4015 in small font:\ + :as=\E^N:ae=\E^O:tc=4014-sm: +# I think the 1000UP is supposed to be so expensive it never happens. +X4|tek4023|4023|tex|tektronix 4023:\ + :do=^J:so=^_P:se=^_@:cm=\034%r%+ %+ :nd=\t:le=^H:\ + :bs:cl=4\E^L:co#80:li#24:am:up=1000UP:vt#4: +# Can't use cursor motion because it's memory relative, and because +# it only works in the workspace, not the monitor. Same for home. +# Likewise, standout only works in the workspace. +# 145 ms padding on al and AL taken out since it doesn't seem to be needed much. +X5|4025|4027|4024|tek4025|tek4027|tek4024|4025cu|4027cu|tektronix 4024/4025/4027:\ + :sf=^F^J:do=^F^J:is=\41com 31\r\n^_sto 9 17 25 33 41 49 57 65 73\r:\ + :ks=^_lea p4 /h/\r^_lea p8 /k/\r^_lea p6 / /\r^_lea p2 /j/\r^_lea f5 /H/\r^_lea p5 /H/\r:\ + :ke=^_lea p2\r^_lea p4\r^_lea p6\r^_lea p8\r^_lea p5\r^_lea f5\r:\ + :am:le=^H:bs:da:db:pt:li#34:co#80:cl=^_era\r\n\n:up=^K:nd=^_rig\r:\ + :al=^_up\r^_ili\r:dl=^_dli\r^F:\ + :dc=^_dch\r:im=^_ich\r:ei=^F^_dow\r^K:nl=^F\n:\ + :cd=^_dli 50\r:CC=^_:AL=^_up\r^_ili %d\r:DL=^_dli %d\r^F:\ + :UP=^_up %d\r:DO=^_dow %d\r:LE=^_lef %d\r:RI=^_rig %d\r: +# Tektronix 4025A from gwyn@brl-smoke.ARPA (Doug Gwyn ) +# The following status modes are assumed for normal operation (replace the +# initial "!" by whatever the current command character is): +# !COM 29 # NOTE: changes command character to GS (^]) +# ^]DUP +# ^]ECH R +# ^]EOL +# ^]RSS T +# ^]SNO N +# ^]STO 9 17 25 33 41 49 57 65 73 +# Other modes may be set according to communication requirements. +# If the command character is inadvertently changed, termcap can't restore it. +# Insert-character cannot be made to work on both top and bottom rows. +# Clear-to-end-of-display emulation via !DLI 988 is too groady to use, alas. +# There also seems to be a problem with vertical motion, perhaps involving +# delete/insert-line, following a typed carriage return. This terminal sucks. +# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +X6|tek4025a|4025a|Tektronix 4025A:\ + :al=^K^]ili;:am:bl=^G:bt=^]bac;:bw:CC=^]:cl=^]era;^J^]rup;:co#80:\ + :cr=^M:ct=^]sto;:da:db:DC=^]dch %d;:dc=^]dch;:DL=^]dli %d;:dl=^]dli;:\ + :DO=^]dow %d;:do=^J:it#8:LE=^]lef %d;:le=^H:li#34:nd=^]rig;:\ + :RI=^]rig %d;:\ + :rs=!com 29^]del 0^]rss t^]buf^]buf n^]cle^]dis^]dup^]ech r^]eol\ +^]era g^]for n^]pad 203^]pad 209^]sno n^]sto 9 17 25 33 41 49 57 65 73\ +^]wor 0;:\ + :SF=^]dow %d;:sf=^J:ta=^I:UP=^]up %d;:up=^K:xo:\ + :ce=^]dch 80;:ch=\r^]rig %d;:\ + :bs:pt:xx: +X7|4025-17|4027-17|tek 4025 17 line window:\ + :li#17:tc=4025: +X8|4025-17ws|4027-17ws|tek 4025 17 line window in workspace:\ + :is=\41com 31\r\n^_sto 9,17,25,33,41,49,57,65,73\r^_wor 17\r^_mon 17\r:\ + :ti=^_wor h\r:te=^_mon h\r:so=^_att e\r:se=^_att s\r:tc=4025-17: +X9|4025ex|4027ex|tek 4025 w/!:\ + :ti=\41com 31\r:te=^_com 33\r:\ + :is=^_com 33\r\n\41sto 9,17,25,33,41,49,57,65,73\r:tc=4025: +# From jcoker@ucbic +Xp|tek4107|tek4207|4107|4207|Tektronix 4107 graphics terminal with memory:\ + :ti=\E[?6l\E[H\E[J:te=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f:\ + :is=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\ + :li#32:do=^J:al=3\E[L:xn:am:le=^H:bs:cd=\E[J:\ + :ce=5\E[K:cl=156\E[H\E[J:cm=\E[%i%d;%dH:co#80:dc=4\E[P:dl=3\E[M:\ + :ho=\E[H:ic=4\E[@:md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:ku=\EM:\ + :kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:\ + :ul:ei=:im=:pt:bw:bt=\E[Z:mi:nd=\E[C:se=\E[m:so=\E[7m:\ + :ue=\E[m:us=\E[4m:up=\EM: +# Tektronix 4107 with sysline +Xq|4107-s|tek4107-s|Tektronix 4107 with sysline but no memory:\ + :is=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\ + :es:hs:i2=\E7\E[?6l\E[2K\E[?6h\E8:ts=\E7\E[?6l\E[2K\E[;%i%df:\ + :fs=\E[?6h\E8:ds=\E7\E[?6l\E[2K\E[?6h\E8:tc=4107: +# From cbosg!teklabs!davem Wed Sep 16 21:11:41 1981 +# Here's the comamnd file that I use to get rogue to work on the 4025. +# It should work with any program using the old curses (e.g. it better +# not try to scroll, or cursor addressing won't work. Also, you can't +# see the cursor.) +# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh) +Xr|4025-cr|tek 4025 for curses and rogue:\ + :is=\41com 31\r\n^_sto 9 17 25 33 41 49 57 65 73\r:\ + :am:le=^H:bs:pt:li#33:co#80:cm=^_jum%i%d,%d;:up=^K:\ + :do=^F^J:cl=^_era;:nd=^_rig;:nl=^F\n:ti=^_wor 33h:te=^_wor 0: +# next two lines commented out since curses only allows 128 chars, sigh. +# :ti=^_lea p1/b/^_lea p2/j/^_lea p3/n/^_lea p4/h/^_lea p5/ /^_lea p6/l/^_lea p7/y/^_lea p8/k/^_lea p9/u/^_lea p./f/^_lea pt/`era w/13^_lea p0/s/^_wor 33h:\ +# :te=^_lea p1^_lea p2^_lea p3^_lea p4^_lea pt^_lea p5^_lea p6^_lea p7^_lea p8^_lea p9/la/13^_lea p.^_lea p0^_wor 0: +# The 4110 series may be a wonderful graphics series, but they make the 4025 +# look good for screen editing. In the dialog area, you can't move the cursor +# off the bottom line. Out of the dialog area, ^K moves it up, but there +# is no way to scroll. +Xs|4112|4114|tek4112|tektronix 4110 series:\ + :is=\E3!1:li#34:co#80:am:al=\E[L:bs:bt=\E[Z:\ + :cd=\E[0J:ce=\E[0K:cl=\E[2J\E[0;0H:cm=\E[%i%d;%dH:\ + :db:dc=\E[P:dl=\E[M:ic=\E[@:im=:nd=\E[C:se=\E[m:\ + :so=\E[7m:ue=\E[m:up=\EM:us=\E[4m:vs=:ve=:\ + :sr=\E7\E[0;0H\E[L\E8:sf=\E7\E[0;0H\E[M\E8: +Xt|4112-nd|4112 not in dialog area:up=^K:ns:tc=4112: +Xu|4112-5|4112 in 5 line dialog area:li#5:tc=4112: +Xv|4113|tek4113|tektronix 4113 color graphics, 5 line dialog area:\ + :le=^H:do=^J:eo:da:bs:am:li#5:co#80:is=\EKA1\ELL5\ELV0\ELV1:\ + :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\ + :cl=\ELZ:uc=^H\ELM1_\ELM0:nd=\LM1 \LM0:\ + :.as=\E^N:.ae=\E^O: +Xw|4113-34|tek4113-34|tektronix 4113 color graphics, 34 line dialog area:\ + :is=\EKA1\ELLB2\ELV0\ELV1:li#34:tc=tek4113: +# ns hidden from vi to allow visual mode. APL font (as, ae) not supported here. +# uc is slow, but looks nice. Suggest setenv MORE -up . vb needs enough delay +# to let you see the background color being toggled. +Xy|4113-nd|tek4113-nd|tektronix 4113 color graphics, no dialog area:\ + :le=^H:do=^J:nd=\t:up=^K:ll=\ELF hl @:ho=\ELF7l\177 @:\ + :eo:bs:am:li#34:co#80:is=\ELZ\EKA0\ELF7l\177 @:vs=\ELZ\EKA0:\ + :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\ + :cl=\E\f:uc=^H\EMG1_\EMG0:so=\EMT2:se=\EMT1:\ + :.ns:.as=\E^N:.ae=\E^O: +Xz|4105|tek4105:\ + :al=\E[1L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:co#80:\ + :dc=\E[1P:dl=\E[1M:do=\E[1B:ho=\E[H:im=\E[4h:li#30:mi:nd=\E[1C:\ + :as=\E[1m:ae=\E[0m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:kb=^h:ku=\E[1A:\ + :kd=\E[1B:kl=\E[1D:kr=\E[1C:us=\E[4m:ue=\E[0m:is=\E%!1\E[?6l\E[0m:\ + :mr=\E[<3m:md=\E[<4m:mh=\E[<6m:mb=\E[<7m:me=\E[<1m:ti=\E%!1\E[?6l:xt: +# This entry is from Tek. Inc. (Brian Biehl) +Xz|4115|tek4115|Tektronix 4115:\ + :co#80:li#34:\ + :al=\E[L:am:bc=\E[D:bs:bt=\E[Z:cd=\E[J:ce=\E[K:\ + :cl=\E[;H\E[2J:cm=\E[%i%d;%dH:da:db:dc=\E[P:dl=\E[M:do=\E[B:\ + :ei=\E[4l:eo:ho=\E[;H:im=\E[4h:if=/usr/share/tabset/vt100:\ + :is=\E%\0410\E%\014\ELV0\EKA1\ELBB2\ENU@\075\ELLB2\ELM0\ELV1\EKYA?\E%\0411\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[0m:\ + :kb=^H:ke=\E>:ks=\E=:nd=\E[C:pt:se=\E[m:so=\E[7m:sr=\EM:\ + :te=\E%\0410\ELBG8\E%\0411\E[34;1H\E[J:\ + :ti=\E%\0410\ELBB2\E%\0411:\ + :ue=\E[m:up=\E[A:us=\E[4m:\ + :ve=\E%\0410\ELBG8\E%\0411\E[34;1H:\ + :vs=\E%\0410\ELBB2\E%\0411: +# The tek4125 emulates a vt100 incorrectly - the scrolling region +# command is ignored. The following entry replaces the cs with the +# needed al, dl, and im; removes some cursor pad commands that the tek4125 +# chokes on; and adds a lot of initialization for the tek dialog area. +# Note that this entry uses all 34 lines and sets the cursor color to green. +# Steve Jacobson 8/85 +XB|tek4125:\ + :ks=\E=:li#34:\ + :is=\E%\!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:dl=\E[1M:\ + :al=\E[1L:cs@:sc@:rc@:im=\E1:tc=vt100: +# From carolyn@dali.berkeley.edu Thu Oct 31 12:54:27 1985 +XA|4404|tek4404:\ + :al=\E[1L:bs:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:co#80:\ + :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[1M:do=^J:ei=\E[4l:ho=\E[H:im=\E[4h:\ + :kd=\E[B:ke=\E[?1h:kl=\E[D:kr=\E[C:ks=\E[?1l:ku=\E[A:li#32::mb=\E[5m:\ + :md=\E[1m:me=\E[m:nd=\E[C:pt:rc=\E8:sc=\E7:se=\E[27m:so=\E[7m:\ + :ta=\E[2I:ti=\E%\!1\E[1;32r\E[?6l\E>:te=\E[1;1H\E[0J\E[?6h\E[?1l:\ + :ue=\E[m:up=\E[A:us=\E[4m: +# # -------------------------------- +# +# Z: Miscellaneous +# +# These compucolors appear similar, but they at least have different +# sized screens. I don't know what's going on here. +Z1|8001|ISC8001|compucolor|intecolor:\ + :do=^J:al=\EU:am:le=^Z:bc=^Z:cl=3*^L:cm=^C%r%.%.:\ + :co#80:cd=\EQ:dm=\EQ:ed=\EF:dc=\177:dl=\EV:ei=\EF:\ + :im=\EQ:li#40:nd=1^Y:ta=8\t:up=^\:ho=1^H:pc=^@: +Z2|compucolor2|compucolorII:\ + :do=^J:pt:am:cm=%r^C%.%.:le=^Z:bc=^Z:li#32:co#64:\ + :cl=^L:ho=^H:nd=^Y:up=^\: +# From cithep!eric Wed Sep 16 08:06:44 1981 +Z3|intext|Interactive Systems Corporation modified owl 1200:\ + :do=^J:al=5.5*\020:am:le=^_:bc=^_:le=^H:bs:bt=^Y:cd=5.5*\026J:\ + :ce=^K\160^R:cl=132\014:cm=\017%+ %+ :co#80:dc=5.5*\022:dl=5.5*\021:\ + :ei=\026\074:im=\026\073:ip=5.5*:li#24:nd=\036:pt:up=\034:\ + :se=^V# :sg#1:so=^V$,:ma=^K^P^R^L^L :\ + :kl=^_:kd=^J:kr=^^:ku=\034:kb=^H:kh=^Z:\ + :k1=^VA\r:k2=^VB\r:k3=^VC\r:k4=^VD\r:k5=^VE\r:\ + :k6=^VF\r:k7=^VG\r:k8=^VH\r:k9=^VI\r:k0=^VJ\r: +# # -------------------------------- +# +# a: ADDS +# +# Regent: lowest common denominator, works on all regents. +a0|regent|Adds Regent Series:li#24:co#80:am:cl=^L:ll=^A:up=^Z:\ + :bs:bc=^U:nd=^F:do=^J:ho=\EY : +# Regent 100 has a bug where if computer sends escape when user is holding +# down shift key it gets confused, so we avoid escape. +a1|regent100|Adds Regent 100:k0=^B1^M:k1=^B2^M:k2=^B3^M:k3=^B4^M:\ + :k4=^B5^M:k5=^B6^M:k6=^B7^M:k7=^B8^M:\ + :l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:\ + :so=\E0P:ue=\E0@:us=\E0`:se=\E0@:\ + :cm=^K%+ %B^P%.:ug#1:sg#1:tc=regent: +a2|regent20|Adds Regent 20:cd=\Ek:ce=\EK:cm=\EY%+ %+ :tc=regent: +a3|regent25|Adds Regent 25:kh=^A:kl=^U:kr=^F:ku=^Z:kd=^J:tc=regent20: +a4|regent40|Adds Regent 40:k0=^B1^M:k1=^B2^M:k2=^B3^M:k3=^B4^M:\ + :k4=^B5^M:k5=^B6^M:k6=^B7^M:k7=^B8^M:\ + :l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:\ + :al=2*\EM:dl=2*\El:\ + :so=\E0P:ue=\E0@:us=\E0`:se=\E0@:ug#1:sg#1:tc=regent25: +a5|regent40+|Adds Regent 40+:is=\EB:tc=regent40: +a6|regent60|regent200|Adds Regent 60:se=\ER\E0@\EV:so=\ER\E0P\EV:dc=\EE:ei=\EF:\ + :im=\EF:is=\EV\EB:ko=dc,im,ei:tc=regent40+: +a7|regent60na|regent 60 w/no arrow keys:\ + kl@:kr@:ku@:kd@:tc=regent60: +# +# adds viewpoint 90 - from cornell +# Note: emacs sends ei occasionally to insure the terminal is out of +# insert mode. This unfortunately puts the viewpoint90 IN insert +# mode. A hack to get around this is: ic=\EF \EF^U. (Also, +# - ei=:im=: must be present.) +# - xs indicates glich that attributes stick to location +# - bs save to move in standout mode +# - cl=\EG\Ek clears screen and visual attributes without affecting +# the status line +a9|vp90|viewpoint90|adds viewpoint 90:\ + :bs:bw:cd=\Ek:ce=\EK:cl=\EG\Ek:cm=\EY%+ %+ :co#80:\ + :dc=\EE:dl=\El:dm=:do=^J:ed=:ei=:im=:ic=\EF \EF^U:ho=\EY :\ + :nd=^F:up=^Z:\ + :kb=^H:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:li#24:ll=^A:\ + :so=\ER\E0Q\EV:se=\ER\E0@\EV:\ + :us=\ER\E0`\EV:ue=\ER\E0@\EV:\ + :xs:ms: +# Note: if return acts weird on a980, check internal switch #2 +# on the top chip on the CONTROL pc board. +ac|a980|adds consul 980:\ + :do=^J:al=13\E^N:am:le=^H:bs:cl=^L\200^K@:cm=^K%+@\E^E%2:co#80:\ + :dl=13\E^O:k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:\ + :k8=\E8:k9=\E9:li#24:nd=\E^E01:so=^Y^^^N:se=^O:up=9: +as|viewpt60|viewpoint60|addsviewpoint60|adds viewpoint60:\ + :tc=regent40: +# From Onyx:edward Thu Jul 9 09:27:33 1981 +av|viewpoint|addsviewpoint|adds viewpoint:\ + :do=^J:am:le=^H:bs:li#24:co#80:cm=\EY%+ %+ :cd=\Ek:ce=\EK:\ + :up=^Z:cl=^L:ll=^A:kl=^U:kd=^J:ku=^Z:kh=^A:\ + :so=^N:se=^O:us=^N:ue=^O:is=^O\E0`:vs=^O\E0P:ve=^O\E0`: +# # -------------------------------- +# +# b: BEEHIVE +# +# Reports are that most of these Beehive entries (except superbee) have not been +# tested and do not work right. se is a trouble spot. Be warned. +b2|sb2|sb3|fixed superbee:\ + :xb@:tc=superbee: +# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs. +# good grief - does this entry make sg/ug when it doesn't have to? +# look at those spaces in se/so. Seems strange to me... +bh|bh3m|beehiveIIIm:\ + :if=/usr/share/tabset/beehive:do=^J:\ + :al=160^S:am:le=^H:bs:cd=^R:ce=^P:cl=^E^R:\ + :co#80:dl=350^Q:ho=^E:li#20:ll=^E^K:\ + :nd=^L:pt:se= ^_:so=^] :up=^K: +# This loses on lines > 80 chars long, use at your own risk +bi|superbeeic|super bee with insert char:\ + :ic=:im=\EQ:ei=\ER:tc=superbee: +bm|microb|microbee|micro bee series:\ + :do=^J:am:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:co#80:cm=\EF%+ %+ :\ + :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:k9=\Ex:\ + :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\ + :li#24:nd=\EC:pt:se=\Ed@ :so= \EdP:ue=\Ed@:up=\EA:us=\Ed`: +# Superbee - f1=escape, f2=^C. +# Note: there are at least 3 kinds of superbees in the world. The sb1 +# holds onto escapes and botches ^C's. The sb2 is the best of the 3. +# The sb3 puts garbage on the bottom of the screen when you scroll with +# the switch in the back set to CRLF instead of AEP. This description +# is tested on the sb2 but should work on all with either switch setting. +# The f1/f2 business is for the sb1 and the :xb: can be taken out for +# the other two if you want to try to hit that tiny escape key. +# This description is tricky: being able to use cm depends on there being +# 2048 bytes of memory and the hairy nl string. +bs|sb1|superbee|superb|beehive super bee:\ + :ct=\E3:st=\E1:is=\EH\EJ:do=^J:\ + :sf=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\ + :am:le=^H:bs:cd=3\EJ:ce=3\EK:cl=3\EH\EJ:co#80:cm=\EF%r%3%3:cr=1000\r:\ + :dC#10:da:db:xb:dc=3\EP:dl=100\EM:so=\E_1:se=\E_3:\ + :li#25:nl=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\ + :nd=\EC:pt:up=\EA:ho=\EH:ve=\n:\ + :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\ + :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA: +# 8675, 8686, and bee from Cyrus Rahman +b7|8675|harris 8675:\ + :k1=^F:k2=^P:k3=^N:k4=^V:k5=^J:k6=^T:k7=^H:k8=\177:k9=\Ee:k10=\Ed:\ + :k11=^W:k12=\ER:k13=\EE:k14=\EI:k15=\Ei:k16=\Eg:\ + :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU:\ + :tc=bee: +b8|8686|harris 8686:\ + :k1=^B^[p^C:k2=^B^[q^C:k3=^B^[r^C:k4=^B^[s^C:k5=\E3:\ + :k6=\EI:k7=\ER:k8=\EJ:k9=\E(:k10=\Ej:k11=\EW:\ + :k12=^B^[{^C:k13=^B^[|^C:k14=^B^[}^C:k15=^B^[~^C:k16=^B^[\177^C:\ + :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\ + \E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\ + \E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\ + \E"8FB5021B7283#:\ + :tc=bee: +be|bee|harris beehive:\ + :co#80:li#24:am:bs:cd=\EJ:ce=\EK:cl=\EE:nd=\EC:\ + :cm=\EF%+ %+ :up=\EA:do=\EB:ho=\EH:bt=\E>:\ + :al=\EL:dc=\EP:dl=\EM:ei=\E@:im=\EQ:ic=:mi:\ + :kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:kb=^H:\ + :us=\Ed`:ue=\Ed@:so=\EdP:se=\Ed@:\ + :ko=al,bt,ce,cl,dc,dl,ei,ho,ic,im: +# # -------------------------------- +# +# c: CONCEPT (HUMAN DESIGNED SYSTEMS) +# +# From vax135!hpk Sat Jun 27 07:41:20 1981 +# Extensive changes to c108 by arpavax:eric Feb 1982 +# +# There seem to be a number of different versions of the C108 PROMS +# (with bug fixes in its Z-80 program). +# The first one that we had would lock out the keyboard of you +# sent lots of short lines (like /usr/dict/words) at 9600 baud. +# Try that on your C108 and see if it sends a ^S when you type it. +# If so, you have an old version of the PROMs. +# The old one also messed up running vi with a 132-character line-length. +# You should configure the C108 to send ^S/^Q before running this. +# It is much faster (at 9600 baud) than the c100 because the delays +# are not fixed. +# new status line display entries for c108: +# hs - has status capability +# es - escape sequences are OK on status line +# i2 - second init str - setup term for status display - set programmer mode, +# select window 2, define window at last line of memory, +# set bkgnd stat mesg there, select window 0. +# ts - to status line - select window 2, home cursor, erase to end-of-window, +# 1/2 bright on, goto(line#0, col#?) +# fs - from status line - 1/2 bright off, select window 0 +# ds - disable status display - set bkgnd status mesg with illegal window # +# +# the following two entries are for emacs -- they are just like the regular +# entries except that they have buffer overflow control OFF +c0|e108-8p:\ + :i2=\EU\E z"\Ev^A\177 !p\E ;"\E z \Ev ^A\177p\Ep\n:\ + :te=\Ev ^A\177p\Ep\r\n:tc=e108-4p: +c1|e108-4p:\ + :is=\EU\E f\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ + :tc=c108-4p: +c2|c108|c108-8p|concept108-8p|concept 108 w/8 pages:\ + :i2=\EU\E z"\Ev^A\177 !p\E ;"\E z \Ev ^A\177p\Ep\n:\ + :te=\Ev ^A\177p\Ep\r\n:tc=c108-4p: +c3|c108-4p|concept108-4p|concept 108 w/4 pages:\ + :es:hs:ts=\E z"\E?\E^C\Ea %+ :fs=\E z :ds=\E ;\177:\ + :i2=\EU\E z"\Ev\177 !p\E ;"\E z \Ev \177p\Ep\n:do=^J:pt:\ + :is=\EU\E F\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ + :ti=\EU\Ev 8p\Ep\r:te=\Ev \177p\Ep\r\n:\ + :al=\E^R:le=^H:bs:cd=\E^C:ce=\E^S:cl=\E?\E^E:cm=\Ea%+ %+ :co#80:\ + :dc=\E^Q:dl=\E^B:ei=\E\200:eo:im=\E^P:li#24:mi:nd=\E=:\ + :kb=^h:up=\E;:db:us=\EG:ue=\Eg:vs=\EW:ve=\Ew:am:xn:\ + :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\ + :ks=\EX:ke=\Ex:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:\ + :k1=\E5:k2=\E6:k3=\E7:k4=\E8:k5=\E9:k6=\E\72:\ + :so=\ED:se=\Ed:mh=\EE:md=\ED:mr=\ED:me=\Ee\Ed\Eg\Ec: +c4|c108-rv-8p|concept108-rv-8p|concept 108 w/8 pages, in reverse video:\ + :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\ + :is=\EU\E F\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ + :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :tc=c108-8p: +c5|c108-rv-4p|concept108-rv-4p|concept 108 w/4 pages, in reverse video:\ + :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\ + :is=\EU\E F\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ + :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :tc=c108-4p: +c6|c108-na|c108-na-8p|concept108-na-8p|concept 108 w/8 pages, no arrows:\ + :ks@:ke@:k7=\E;:k8=\E<:k9=\E=:tc=c108-8p: +c7|c108-rv-na|c108-rv-na-8p|concept 108 w/8 pages, no arrows in rev video:\ + :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :\ + :ks@:ke@:k7=\E;:k8=\E<:k9=\E=:tc=c108-rv-8p: +# this needs new frotz in the cm capability for 2-char addrs when > 95.... +c8|c108-w|c108-w-8p|concept108-w-8p|concept 108 w/8 pages in wide mode:\ + :is=\EU\E F\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E"\E^G!\E^HA@ :\ + :ti=\EU\Ev 8^AD\Ep\r:te=\Ev ^A0^AD\Ep\r\n:pt@:cm@:\ + :co#132:tc=c108-8p: +cA|avt-w|avtw|HDS concept avt w/4 or 8 pages; 132 columns:\ + :is=\E[1*q\E[2!t\E[7!t\E[=4;101;119l\E[=103;107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n:\ + :ch=\E[%i%3G:cm=\E[%i%2;%3H:co#132:tc=avt: +cB|avt-8p-s|concept avt w/8 pages & 80 cols running sysline:\ + :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[2!w\E[192w\E[2*w\E[!w\E[1;191w\E2\r\n:\ + :hs:es:ts=\E[2!w\E[H\E[J\E[%i%dG:fs=\E[!w:\ + :ds=\E[2!w\E[2J\E[!w\E[*w:te=\E[1;191w\E2\n:tc=avt: +cC|avt-4p-s|concept avt w/4 pages & 80 cols running sysline:\ + :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[2!w\E[96w\E[2*w\E[!w\E[1;95w\E2\r\n:\ + :hs:es:ts=\E[2!w\E[H\E[J\E[%i%dG:fs=\E[!w:\ + :ds=\E[2!w\E[2J\E[!w\E[*w:te=\E[1;95w\E2\n:tc=avt: +cD|avt-rv|HDS concept avt w/4 or 8 pages, 80 columns, reverse video:\ + :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;205;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n:\ + :ve=\E[4l:vs=\E[4l:tc=avt: +cE|avt|HDS concept avt w/4 or 8 pages, 80 columns:\ + :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119;205l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n\E[*w:\ + :ae=^O:al=\E[L:am:as=^N:bs:bt=\E[Z:cd=\E[J:ce=\E[K:\ + :ch=\E[%i%2G:cl=\E[H\E[J:cm=\E[%i%2;%2H:co#80:cv=\E[%i%2d:\ + :dc=\E[P:dl=\E[M:do=\E[B:ei=\E1:eo:ho=\E[H:im=\E1:kb=^H:kd=\E[B:\ + :kh=\E[H:kl=\E[D:ko=do,ho,nd,up:kr=\E[C:\ + :ks=\E[1;4!z\E[1;8!z\E[1;10!z\E[1;11!z\E[1;12!z\E[1;14!z\E[3;7!z\E[3;9!z:\ + :ke=\E[;4!z\E[;8!z\E[;10!z\E[;11!z\E[;12!z\E[3;14!z\E[;7!z\E[;9!z:\ + :ku=\E[A:li#24:mi:nd=\E[C:pt:se=\E[7!{:so=\E[7m:\ + :te=\E[w\E2\n:ti=\E[1;24w\E2\n:ue=\E[4!{:\ + :up=\E[A:us=\E[4m:ve=\E[=4;119l:vs=\E[4l\E[=119h:xn: +# +# Concepts have only window relative cursor addressing, not screen relative. +# To get it to work right here, ti/te (which were invented for the concept) +# lock you into a one page window for screen style programs. To get out of +# the one page window, we use a clever trick: we set the window size to zero +# ("\Ev " in te) which the terminal recognizes as an error and resets the +# window to all of memory. +# +# Some tty drivers use cr3 for concept, others use nl3, hence dN/dC below. +# This padding is only needed at 9600 baud. +# 2 nulls padding on te isn't always enough. 6 works fine. Maybe less +# than 6 but more than 2 will work. +ca|c100|concept|c1004p|c100-4p|concept100|concept 100:\ + :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E^G\041\E^HA@ :\ + :ti=\EU\Ev 8p\Ep\r:te=\Ev \200\200\200\200\200\200\Ep\r\n:\ + :al=3*\E^R:am:le=^H:bs:cd=16*\E^C:ce=16\E^U:cl=2*^L:cm=\Ea%+ %+ :co#80:\ + :dc=16\E^Q:dl=3*\E^B:ei=\E\200:eo:im=\E^P:ip=16*:li#24:mi:nd=\E=:\ + :pt:kb=^h:ta=8\t:up=\E;:db:us=\EG:ue=\Eg:xn:\ + :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\ + :.dN#9:dC#9:pb#9600:vt#8:us=\EG:ue=\Eg:so=\EE\ED:se=\Ed\Ee:\ + :mh=\EE:mr=\ED:mb=\EC:mp=\EI:mk=\EH:me=\EN\200:do=^J:\ + :ks=\EX:ke=\Ex:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:k1=\E5:k2=\E6:k3=\E7: +cb|c100-rv-pp|c100-rv-4p-pp|concept100-rv-pp|c100rv4ppp|w/ printer port:\ + :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\Ek\E\200\Eo&\200\Eo\041\200\EQ"\EY(^W\Eo\47\E\E^G\041\E^HA@ :\ + :tc=c100-rv: +cc|c100-rv-na|c100-rv-4p-na|concept100-rv-na|c100rv4pna|c100 with no arrows:\ + :ks@:ke@:tc=c100-rv: +cd|c100-rv|c100-rv-4p|concept100-rv|c100rv4p|c100rv|c100 rev video:\ + :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E^G\041\E^HA@ :\ + :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\ + :so=\EE:se=\Ee:tc=c100: +# This is useful at 1200 baud. +ce|c100-s|concept-s|concept100-s|slow concept 100:\ + :vb=\Ek\200\EK:pt:dC@:dN@:tc=c100: +cf|c100-rv-s|concept-rv-s|concept100-rv-s|c100rvs|slow reverse concept 100:\ + :vb=\EK\200\Ek:pt:dC@:dN@:tc=c100-rv: +# # -------------------------------- +# +# d: DEC (DIGITAL EQUIPMENT CORPORATION) +# +# Note that xn glitch in vt100 is not quite the same as concept, since +# the cursor is left in a different position while in the weird state +# (concept at beginning of next line, vt100 at end of this line) so +# all versions of vi before 3.7 don't handle xn right on vt100. +# I assume you have smooth scroll off or are at a slow enough baud +# rate that it doesn't matter (1200? or less). Also this assumes +# that you set auto-nl to "on", if you set it off use vt100-nam below. +# +# Since there are two things here called vt100, the installer can make +# a local decision to make either one standard "vt100" by including +# it in the list of terminals in reorder, since the first vt100 in +# /etc/termcap is the one that it will find. The choice is between +# nam (no automatic margins) and am (automatic margins), as determined +# by the wrapline switch (group 3 #2). I presonally recommend turning +# on the bit and using vt100-am, since having stuff hammer on the right +# margin is sort of hard to read. However, the xn glitch does not occur +# if you turn the bit off. +# +# I am unsure about the padding requirements listed here. I have heard +# a claim that the vt100 needs no padding. It's possible that it needs +# padding only if the xon/xoff switch is off. For UNIX, this switch +# should probably be on. +# +# The vt100 uses rs and rf rather than is/ct/st because the tab settings +# are in non-volatile memory and don't need to be reset upon login. +# You can type "reset" to get them set. +dp|vt100-np|vt100 with no padding (for psl games):\ + :cl=\E[H\E[2J:sr=\EM:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ + :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:tc=vt100: +d0|vt100|vt100-am|vt100am|dec-vt100|dec vt100:\ + :do=^J:co#80:li#24:cl=50\E[;H\E[2J:sf=2*\ED:\ + :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ + :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ + :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\ + :rf=/usr/share/tabset/vt100:\ + :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ + :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=2*\EM:vt#3:xn:\ + :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: +d1|vt100-nam|vt100nam|vt100 w/no am:\ + :am@:xn@:\ + :is=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ + :tc=vt100-am: +d2|gt42|dec gt42:\ + :do=^J:le=^H:bs:co#72:ns:li#40:os: +#From ts@pc.ecn.purdue.edu (Thomas Ruschak) +dR|vt131|dec vt131:\ + :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[;H\E[2J:\ + :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ + :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ + :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\ + :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:.ks=\E[?1h\E=:.ke=\E[?1l\E>:\ + :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:\ + :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:pt:sr=5\EM:vt#3:xn:\ + :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: +d3|vt132|vt132:\ + :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: +d4|gt40|dec gt40:\ + :do=^J:le=^H:bs:co#72:ns:li#30:os: +d5|vt50|dec vt50:\ + :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:co#80:li#12:nd=\EC:pt:up=\EA: +d6|vt125|vt125-am|DEC vt125:\ + :xn:do=^J:co#80:li#24:cl=50\E[H\E[2J:dC=10:dN#10:\ + :le=^H:am:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:ce=3\E[K:cd=50\E[J:\ + :so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:\ + :me=2\E[m:is=\E[1;24r\E[24;1H\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ + :ks=\E[?1h\E=:ke=\E[?1l\E>:if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:\ + :kr=\EOC:kl=\EOD:kb=^H:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ + :pt:sr=5\EM:vt#3:sc=\E7:rc=\E8:cs=\E[%i%d;%dr: +d9|vt125-nam|DEC vt125 no automatic margin:\ + :am@:tc=vt125-am: +# DEC gigi color graphic terminal, same as vt52 +d7|gigi|dec gigi terminal:\ + :co#80:is=200\E>\E[?4l\E[?5l\E[?7h\E[?8h:\ + :li#24:cl=100\E[;H\E[2J:bs:cm=50\E[%i%2;%2H:nd=200\E[C:up=100\E[A:\ + :ce=120\E[K:cd=100\E[J:so=20\E[7m:se=20\E[m:us=20\E[4m:ue=20\E[m:\ + :ks=200\E[?1h\E=:ke=200\E[?1l\E>:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ + :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=200\EM:\ + :dC=50:dF=200:dN#50:dT=50: +#From William King , basic ln03 entries +da|ln03|dec ln03 LaserPrinter:\ + :co#80:li#66:hc:hu=\EL:hd=\EK:so=\E[1m:se=\E[22m:\ + :us=\E[4m:ue=\E[24m: +db|ln03-w|dec ln03 LaserPrinter 132 cols:\ + :co#132:tc=ln03: +dI|dw1|decwriter I:\ + :do=^J:le=^H:bs:co#72:hc:os: +# From tut@Topaz.CC Thu May 12 14:49:02 1983 +dJ|dw3|la120|decwriter III:\ + :bs:kb=^H:co#132:hc:os:pt:\ + :is=\E(B\E[20l\E[w\E[1;132s\E[2g\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\E[z\E[66t\E[1;66r\E[4g\E>\r: +# From tut@topaz.CC Thu Sep 24 22:10:46 1981 +df|dw4|decwriter IV:\ + :do=^J:le=^H:bs:co#132:hc:os:am:\ + :pt:is=\Ec:k0=\EOP:k1=\EOQ:k2=\EOR:k3=\EOS:kb=^H: +dh|vt50h|dec vt50h:\ + :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\ + :co#80:li#12:nd=\EC:pt:sr=\EI:up=\EA: +di|vt100-s|vt100 with status line at top:\ + :li#23:i2=\E[2;24r\E[24;1H:cm@:ho=\E[H^J:cl=50\E[;H^J\E[0J:\ + :hs:es:ts=\E7\E[1;%dH\E[1K:fs=\E8:tc=vt100-am: +dj|vt100-s-bot|vt100 with status line at bottom:\ + :li#23:i2=\E[1;23r\E[23;1H:\ + :hs:es:ts=\E7\E[24;%dH\E[1K:fs=\E8:tc=vt100-am: +ds|vt100-nav|dec vt100 132 cols 14 lines (w/o advanced video option):\ + :li#14:tc=vt100-w: +dt|vt100-w|dec vt100 132 cols (w/advanced video):\ + :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am: +dv|vt100-w-nam|dec vt100 132 cols (w/advanced video), no am:\ + :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:vt@:tc=vt100-nam: +d8|vt102|vt100 w/adv. video:\ + :al=\E[1L:dl=\E[1M:im=\E[4h:ei=\E[4l:mi:dc=\E[1P:ku=\EOA:kd=\EOB:\ + :kr=\EOC:kl=\EOD:k0=\EOp:k1=\EOq:k2=\EOr:k3=\EOs:k4=\EOt:k5=\EOu:\ + :k6=\EOv:k7=\EOw:k8=\EOx:k9=\EOy:as=\E(0:ae=\E(B:am@:xn@:tc=vt100am: +# (from lai@decwrl) should be a vt102, but have heard enough +# unsubstantiated complaints to make it an alternate (obsolete) version +dy|vt102-obs|dec vt102:\ + :do=^J:co#80:li#24:cl=50\E[;H\E[2J:\ + :le=^H:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ + :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ + :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\ + :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ + :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:vt#3:\ + :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:vs=\E[?7l:ve=\E[?7h: +dw|vt52|dec vt52:\ + :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:\ + :nd=\EC:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: +# vt61 created by Roger Sacilotto Massachusetts Computer Associates, Inc +# Similar to vt52 but add al and dl +# +dq|vt61|dec vt61:\ + :al=\EPf:dl=\EPd:tc=vt52: +dx|dw2|decwriter II:\ + :do=^J:kb=^h:le=^H:bs:co#132:hc:os: +# DEC PRO-350 console (VT220-style) +dP|pro350|decpro|dec pro console:\ + :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:\ + :cm=\EY%+ %+ :co#80:ho=\EH:\ + :kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ + :k0=\EE:k1=\EF:k2=\EG:k3=\EH:k4=\EI:k5=\EJ:k6=\Ei:k7=\Ej:\ + :li#24:nd=\EC:pt:sr=\EI:up=\EA:do=\EB:\ + :se=\E^N:so=\E^H:us=\E^D:ue=\E^C:\ + :ae=\EG:as=\EF: +# +# From: Bracy H. Elton +dl|vt200|vt220|vt200-js|vt220-js|dec vt200 series with jump scroll:\ + :im=\E[4h:ei=\E[4l:mi:dc=\E[P:dm=:ed=:al=\E[L:\ + :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:sb=\EM:\ + :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\ + :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ + :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ + :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ + :tc=vt100: +dm|vt200-ss|vt220-ss|dec vt200 series with smooth scroll:\ + :is=\E>\E[?3l\E[?4h\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ + :rs=\E>\E[?3l\E[?4h\E[?5l\E[?7h\E[?8h:\ + :tc=vt200: +dn|vt200-w|vt220-w|vt200-wj|vt220-wj|dec vt200 series; 132 col.; jump scroll:\ + :is=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ + :rs=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:\ + :co#132:tc=vt200: +do|vt200-ws|vt220-ws|dec vt200 series; 132 col.; smooth scroll:\ + :is=\E>\E[?3h\E[?4h\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ + :rs=\E>\E[?3h\E[?4h\E[?5l\E[?7h\E[?8h:\ + :co#132:tc=vt200: +# @(#)termcap X10/6.6 11/7/86, minus alternate screen, plus :cs +vs|xterm|vs100|xterm terminal emulator (X window system):\ + :do=^J:le=^H:ho=\E[H:\ + :co#80:li#65:cl=\E[H\E[2J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ + :md=\E[1m:mr=\E[7m:me=\E[m:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ + :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sf=\n:sr=\EM:\ + :al=\E[L:dl=\E[M:im=\E[4h:ei=\E[4l:mi:dc=\E[P:\ + :MT:ks=\E[?1h\E=:ke=\E[?1l\E>:xn:\ + :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:\ + :hs:ts=\E[?E\E[?%i%dT:fs=\E[?F:es:ds=\E[?E:\ + :is=\E\E[m\E[?7h\E[?1;4l:cs=\E[%i%d;%dr:\ + :rs=\E[r\E<\E[m\E[H\E[2J\E[?7h\E[?1;3;4;6l: +v2|xterms|vs100s|xterm terminal emulator (small)(X window system):\ + :co#80:li#24:tc=xterm: +# vs100 emulator using tsim (from lai@decwrl) +vt|vs100t|tsim|vs100-tsim:\ + :bs:cm=\EM%+ %+ :ho=\EH:do=^J:up=^K:cl=\EE:ce=\EL:cs=\ES%+ %+ :\ + :so=\Eh:se=\Er:us=\Eu:ue=\Ev:al=\EI:Al=\E+%+ :dl=\ED:Dl=\E-%+ :\ + :ic=\Ei:dc=\Ed:is=\ER:rs=\ER:am:cd=\EQ:pt:nd=\En:li#24:co#80: +# # -------------------------------- +# +# h: HEWLETT PACKARD +# +# Note: no "ho" on HP's since that homes to top of memory, not screen. +# Due to severe 2621 braindamage, the only way to get the arrow keys to +# transmit anything at all is to turn on the function key labels +# (f1-f8) with ks, and even then the poor user has to hold down shift! +# The default 2621 turns off the labels except when it has to to enable +# the function keys. If your installation prefers labels on all the time, +# or off all the time (at the "expense" of the function keys) move the +# 2621-nl or 2621-wl labels to the front using reorder. +# Note: there are newer ROM's for 2621's that allow you to set strap A +# so the regular arrow keys xmit \EA, etc, as with the 2645. However, +# even with this strap set, the terminal stops xmitting if you reset it, +# until you unset and reset the strap! Since there is no way to set/unset +# the strap with an escape sequence, we don't use it in the default. +# If you like, you can use 2621-ba (braindamaged arrow keys). +h1|2621-ba|2621 w/new rom, strap A set:\ + :ks@:ke@:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:tc=hp2621: +# 2621 with function labels. Most of the time they are off, +# but inside vi, the function key labels appear. You have to +# hold down shift to get them to xmit. +h2|2621|hp2621|hp2621a|hp2621p|2621a|2621p|2621-pb|hp2621-fl|hp 2621:\ + :is=\E&j@\r:bt=\Ei:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:pb#19200:\ + :so=\E&dD:se=\E&d@:us=\E&dD:ue=\E&d@:me=\E&d@:\ + :kh=\Ep\r:ku=\Et\r:kl=\Eu\r:kr=\Ev\r:kd=\Ew\r:\ + :kn#8:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:\ + :k8=\Ew\r:ks=\E&jB:ke=\E&j@:ta=2^I:tc=hp: +# 2621k45: untested +# 2622: unsure if this is quite it, have only heard about the terminal. +h3|2621k45|hp2621k45|k45|2622|hp2622|hp 2621 with 45 keyboard:\ + :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=2621: +h4|hp2645|2645|hp45:\ + :mh=\E&dH:mr=\E&dB:us=\E&dD:mb=\E&dA:me=\E&d@:\ + :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=hp: +h5|hp|hewlett-packard:\ + :ct=\E3:st=\E1:do=^J:al=\EL:am:le=^H:bs:\ + :cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:cm=6\E&a%r%dc%dY:\ + :co#80:cv=\E&a%dY:da:db:dc=\EP:dl=\EM:ei=\ER:im=\EQ:\ + :kb=^H:li#24:mi:nd=\EC:pt:se=\E&d@:so=\E&dJ:\ + :us=\E&dD:ue=\E&d@:up=\EA:xs:vt#6:pb#9600: +# This entry does not use any of the fancy windowing stuff of the 2621. +# Indeed, termcap does not yet handle such stuff. We are looking at it. +h6|hp2626|hp2626a|hp2626p|2626|2626a|2626p|hp 2626:\ + :dc=2\EP:ip=2:se=\E&d@:so=\E&dB:cd=500\EJ:\ + :mr=\E&dB:us=\E&dD:mb=\E&dA:mk=\E&dS:me=\E&d@:ue=\E&d@:\ + :kh=\Eh:ku=\EA:kl=\ED:kr=\EC:kd=\EB:ks=\E&s1A:ke=\E&s0A:\ + :sf=\ES:ta=2^I:xs:tc=2621: +# cD is a pain - but it only screws up at 9600 baud. +# You should use this terminal at 4800 baud or less. +h8|hp2648|hp2648a|2648a|2648|HP 2648a graphics terminal:\ + :cl=50\EH\EJ:cm=20\E&a%r%dc%dY:dc=7\EP:ip=5:tc=2645: +# This terminal should be used at 4800 baud or less. +h9|hp2645-np|2645 w/no padding:cm=\E&a%r%dc%dY:tc=hp2645: +# 2640a doesn't have the Y cursor addressing feature, and C is memory relative +# instead of screen relative, as we need. +ha|2640|hp2640a|2640a|hp 2640a:\ + :cm@:ks@:ke@:tc=2645: +hb|2640b|hp2640b|2644a|hp2644a|hp 264x series:\ + :ks@:ke@:tc=2645: +# 2621 using all 48 lines of memory, only 24 visible at any time. Untested. +hl|2621-48|48 line 2621:\ + :li#48:ho=\EH:cm=\E&a%r%dc%dR:tc=2621: +# From: mcvax!westc!ahof@seismo.css.gov (Anton Hofland) (ahof@westc.uucp) +# For newer versions, :li should correspond to the actual number of lines. +hm|hp110|HP110|HP110A|Hewlett Packard 110A Portable Computer:\ + :co#80:li#16:am:db:cl=\E[2J:is=\E&j@\E[=7h:ch=\E&a%2C:cv=\E&a%2R:\ + :cm=\E&a%2r%2C:ho=\Eh:cr=^M:nl=^J:ks=\E&s1A:ke=\E&s0A:kd=\EB:\ + :ku=\EA:kr=\EC:kl=\ED:nd=\EC:up=\EA:le=^H:do=^J:bc=^H:bt=\Ei:\ + :ta=\EI:sf=\E[s\EH\EM\E[u\EJ:sr=\ET:al=\EL:dl=\EM:kb=^H:bl=^G:\ + :kh=\Eh:dc=\EP:im=\EQ:ei=\ER:mi:ms:xs:mr=\E[7m:mb=\E[5m:me=\E[0m:\ + :so=\E[7m:se=\E[0m:rs=\E[0m\E&j@:cd=\EJ:ce=\EK:kn#8:k1=\Ep:k2=\Eq:\ + :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew: +# 2621 with no labels ever. Also prevents vi delays on escape. +hn|2621-nl|hp2621nl|2621nl|hp2621-nl|hp 2621 with no labels:\ + :ks@:ke@:kh@:ku@:kl@:kr@:kd@:tc=hp2621-fl: +# Needed for UCB ARPAVAX console, since lsi-11 expands tabs (wrong). +ht|hp2621-nt|2621nt|2621-nt|hp2621nt|hp 2621 w/no tabs:\ + :pt@:tc=hp2621: +# 2621 with labels on all the time - normal outside vi, function inside vi. +hw|hp2621wl|2621wl|2621-wl|hp2621-wl|hp 2621 w/labels:\ + :is=\E&jA\r:ke=\E&jA:tc=hp2621-fl: +# 2392 (from haddix@arpa?) +hz|2392|hp2392|hp2392a:\ + :bt=\Ei:ip=2:is=\E&j@\E3\r:if=/usr/share/tabset/stdcrt:\ + :ml=\El:MT:mu=\Em:km:\ + :mh=\E&dH:mr=\E&dB:us=\E&dD:mb=\E&dA:me=\E&d@:\ + :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=hp: +#HP 236 console +#from ddavis@ic.berkeley.edu +h7|236|hp236|HP236 internal terminal emulator:\ + :am:bs:li#24:co#80:ce=\EK:cl=\EF:cm=\EE%+ %+ :\ + :dc=\EJ:dl=\EH:ic=\EI:al=\EG:up=^K:im=:ei=:\ + :so=\EBI:se=\ECI:vs=\EDB:ve=\EDE: +# hp150 from ddavis@ic.berkeley.edu +h0|150|hp150|hp150a|150a:\ + :is=\E&s1A\E&f0a1k2L\Ep\r\E&k0K\E&f0a2k2L\Eq\r\E&f0a3k2L\Er\r\E&f0a4k2L\Es\r\E&f0a5k2L\Et\r\E&f0a6k2L\Eu\r\E&f0a7k2L\Ev\r\E&f0a8k2L\Ew\r\E&k0D\E&s0A:\ + :bt=\Ei:li#24:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:pb#19200:so=\E&dJ:\ + :se=\E&d@:us=\E&dD:ue=\E&d@:me=\E&d@:kh=\Eh:ku=\EA:kl=\ED:kr=\EC:\ + :kd=\EB:kn#8:k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:\ + :k8=\Ew:ta=2^I:ct=\E3:st=\E1:do=^J:al=\EL:am:le=^H:\ + :bs:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\Eh\EJ:co#80:cv=\E&a%dY:da:db:dl=\EM:\ + :ei=\ER:im=\EQ:kb=^H:mi:nd=\EC:pt:up=\EA:xs:vt#6:sf=\ES:sr=\ET:\ + :vs=\E&s1A:ve=\E&s0A:ks=\E&jB\E&j@:ke=\E&j@: +# From leres@okeeffe: This works on a hp300 console running Utah 4.3 BSD +hc|300h|hp300h|HP Catseye console:\ + :am:bs:cm=\E&a%dy%dC:do=\EB:le=\b:nd=\EC:up=\EA:dc=\EP:dl=\EM:\ + :xs:da:db:mi:co#128:li#51:lm#0:sg#0:bt=\Ei:bl=^G:cr=\r:\ + :ct=\E3:cl=\E&a0y0C\EJ:ce=\EK:cd=\EJ:ch=\E&a%dC:cv=\E&a%dY:\ + :se=\E&d@:ue=\E&d@:im=\EQ:so=\E&dB:us=\E&dD:me=\E&d@:ei=\ER:\ + :if=/usr/share/tabset/stdcrt:al=\EL:kb=\b:kd=\EB:kh=\Eh:kl=\ED:\ + :kr=\EC:ku=\EA:ke=\E&s0A:ks=\E&s1A:sf=\n:ta=\t: +#From gregc@ernie.berkeley.edu (Greg Couch) +hd|9837|hp9837|98720|hp98720|98721|hp98721|HP 9000/300 workstations:\ + :bs:pt:am:xs:da:db:mi:\ + :co#128:li#46:lm#0:\ + :is=\E&v0m1b0i&j@:bt=\Ei:bl=^G:ct=\E3:\ + :cl=\E&a0y0C\EJ:ce=\EK:cd=\EJ:ch=\E&a%dC:\ + :cm=\E&a%dy%dC:do=\EB:le=^H:nd=\EC:\ + :up=\EA:dc=\EP:dl=\EM:im=\EQ:\ + :so=\E&v5S:us=\E&dD:me=\E&d@:ei=\ER:\ + :se=\E&v0S:ue=\E&d@:al=\EL:\ + :kb=^H:kd=\EB:kh=\Eh:kl=\ED:\ + :kr=\EC:ku=\EA:ke=\E&s0A:ks=\E&s1A:\ + :cv=\E&a%dY:sf=\n:st=\E1:\ + :ko=ce,cd,al,im,dl,dc:kN=\EU:kP=\EV +# Developed 07SEP90 by Charles A. Finnell of MITRE +hx|98550|hp98550|98550a|hp98550a|HP 9000 Series 300 color console:\ + :ae=^O:al=\EL:am:as=^N:bl=^G:bs:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\ + :cl=\EH\EJ:cm=\E&a%dy%dC:co#128:cr=\r:ct=\E3:cv=\E&a%dY:da:db:dc=\EP:\ + :dl=\EM:do=\n:ei=\ER:if=/usr/share/tabset/9837:im=\EQ:k1=\Ep:k2=\Eq:\ + :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kA=\EL:kC=\EJ:kD=\EP:\ + :kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:kR=\ET:\ + :kS=\EJ:kT=\E1:ka=\E3:kb=\b:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kn#12:\ + :ko=al,cd,ce,ct,dc,dl,do,ei,im,nd,st,up:kr=\EC:ks=\E&s1A:kt=\E2:\ + :ku=\EA:le=\b:li#49:lm#0:mb=\E&dA:md=\E&dJ:me=\E&d@:mh=\E&dH:mi:\ + :mk=\E&ds:mr=\E&dJ:nd=\EC:pt:se=\E&d@:sf=\n:so=\E&dJ:st=\E1:ta=\t:\ + :ue=\E&d@:up=\EA:us=\E&dD:ve=\E*dQ:vi=\E*dR:xs: +# From: vic@fine.Princeton.EDU (Victor Duchovni) +hy|hp700-wy|HP700/41 emulating wyse30:\ + :al=0.7*\EE:am:bl=^G:bs:bt=\EI:bw:cd=\EY:ce=10\ET:cl=^Z:cm=\E=%+ %+ :\ + :co#80:cr=^M:ct=\E0:cv=\E[%+ :dc=\EW:dl=\ER:do=^V:ei=\Er:\ + :ho=^^:if=/usr/share/tabset/hp700-wy:ll=^^^K:mi:ms:nd=^L:nl=^J:pt:\ + :im=\Eq:is=\E~"\EC\Er\E(\EG0^C\E`9\E`1:kb=^?:kd=^V:\ + :kh=^^:kl=^H:ko=cl,ho,ce,bt,ta,im,ei,ce,cd:kr= :ku= :le=^H:li#24:\ + :rs=\E~"\EC\Er\E(\EG0^C\E`9\E`1:se=10\EG0:sg#1:so=10\EG4:sr=\Ej:\ + :st=\E1:ue=10\EG0:up=^K:ug#1:us=10\EG8: +# # -------------------------------- +# +# i: INFOTON (GENERAL TERMINAL) +# +# Infoton is now called General Terminal Corp. or some such thing. +# gt100 sounds like something DEC would come out with. Lets hope they don't. +i1|i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\ + :do=^J:cl=^L:cd=\EJ:ce=\EK:li#24:co#80:\ + :al=\EL:dl=\EM:up=\EA:nd=\EC:ho=\EH:cm=\Ef%r%+ %+ :vb=\Eb\Ea:\ + :am:le=^H:bs:so=\Eb:se=\Ea: +i4|i400|400|infoton 400:\ + :do=^J:al=\E[L:am:le=^H:bs:ce=\E[N:cl=\E[2J:cm=%i\E[%3;%3H:co#80:\ + :dl=\E[M:li#25:nd=\E[C:up=\E[A:im=\E[4h\E[2Q:ei=\E[4l\E[0Q:\ + :dc=\E[4h\E[2Q\E[P\E[4l\E[0Q: +ia|addrinfo:\ + :do=^J:li#24:co#80:cl=^L:ho=^H:nd=^Y:cd=^K:\ + :up=^\:am:le=^Z:bc=^Z:cm=\037%+\377%+\377:ll=^H^\: +ik|infotonKAS:\ + :do=^J:am:le=^Z:bc=^Z:cd=^K:cl=^L:co#80:li#24:nd=^Y:up=^\:ll=^H^\: +# # -------------------------------- +# +# k: HEATHKIT (ZENITH) +# +kA|h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode:\ + :\ + :al=1*\E[1L:am:le=^H:bs:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%2;%2H:co#80:\ + :dc=\E[1P:dl=1*\E[1M:do=\E[1B:ei=\E[4l:ho=\E[H:im=\E[4h:li#24:mi:\ + :nd=\E[1C:as=\E[10m:ae=\E[11m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:\ + :vs=\E[>4h:ve=\E[>4l:kb=^h:ku=\E[1A:kd=\E[1B:kl=\E[1D:kr=\E[1C:\ + :kh=\E[H:kn#8:k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:l6=blue:\ + :l7=red:l8=white:k6=\EOP:k7=\EOQ:k8=\EOR:\ + :sr=\EM:is=\E<\E[>1;2;3;4;5;6;7;8;9l\E[0m\E[11m\E[?7h: +kB|h19-bs|h19bs|heathkit w/keypad shifted:\ + :ks=\Et:ke=\Eu:tc=h19-b: +#written by David Shewmake, UCSF Medical Information Science +#ucbvax!ucsfmis!shewmake +kC|h29|heath-29|z29|zenith-29:\ + :am:bc=\ED:bt=\E-:do=^J:\ + :al=\EL:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\ + :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\ + :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ + :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#1:k0=\E~:l0=HOME:\ + :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\E0I:\ + :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:us=\Es8:ue=\Es0: +#the z29-e entry sucks...but it works with emacs +kD|z29-e|zenith 29 hacked for emacs:\ + :ip=1.5:ks=\Et:ke=\Eu:vs@:ve@:al=1*\EL:am:le=^H:\ + :bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:dl=1*\EM:\ + :do=\EB:ho=\EH:li#24:nd=\EC:as=\EF:ae=\EG:ms:\ + :pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:kb=^h:\ + :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:k1=\ES:k2=\ET:k3=\EU:\ + :k4=\EV:k5=\EW:l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:es:hs:\ + :ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1: +# z29 in ansi mode. Assumes that the cursor is in the correct state, and that +# the world is stable. `rs' causes the terminal to be reset to the state +# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore +# cursor, bc -> block cursor. +# from Mike Meyers +kF|z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode:\ + :do=^J:co#80:li#24:cl=\E[2J:pt:ho=\E[H:\ + :le=^H:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:mb=\E[5m:mr=\E7m:\ + :ce=\E[K:cd=\E[J:so=\E[7;2m:se=\E[m:us=\E[4m:ue=\E[m:mh=\E[2m:\ + :md=\E[2m:mr=\E[7m:mb=\E[5m:me=\E[m:\ + :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m\E[11m:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ + :k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:k6=\EOP:k7=\EOQ:k8=\EOR:\ + :k9=\EOX:k0=\E[~:l0=help:kn#2:ko=ho,cd:if=/usr/share/tabset/zenith29:\ + :es:hs:ts=\E[s\E[>5;1h\E[25;%i%dH\E[1K:fs=\E[u\E[>5l:ds=\E[>1l:\ + :cs=\E[%i%d;%dr:sr=\EM:sf=\ED:DO=\E[%dB:UP=\E[%dA:LE=\E[%dD:\ + :RI=\E[%dC:AL=\E[%dL:DL=\E[%dM:sc=\E[s:rc=\E[r:dc=\E[1P:DC=\E[%dP:\ + :kC=\E[J:ct=\E[3g:st=\EH:ti=\E[?7l:te=\E[?7h:ps=\E#7: +kG|z29a-kc-uc|h29a-kc-uc|heath/zenith 29 in ansi mode:\ + :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m:\ + :tc=z29a: +kH|z29a-nkc-bc|h29a-nkc-bc|heath/zenith 29 in ansi mode:\ + :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m:\ + :tc=z29a: +kI|z29a-nkc-uc|h29a-nkc-uc|heath/zenith 29 in ansi mode:\ + :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m:\ + :tc=z29a: +#z100 entry from Brad Brahms at TRW (Brahms@USC-ECLC) +# usenet: {decvax,ucbvax}!trwrb!trwspp!brahms +kc|z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor:\ + :vs=\Ex4\Em71:ve=\Ey4\Em70:tc=z100bw: +kY|z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc:\ + :al=5*\EL:bs:cd=\EJ:ce=\EK:cl=5*\EE:cm=1*\EY%+ %+ :co#80:dc=1*\EN:\ + :dl=5*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\ + :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ + :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#10:\ + :k0=\EJ:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\k6=\EP:k7=\EQ:\ + :k8=\ER:k9=\EOI: +kp|p19:\ + :al=2*\EL:dl=2*\EM:tc=h19-b: +kU|h19-us|h19us|heathkit w/keypad shifted/underscore cursor:\ + :ks=\Et:ke=\Eu:tc=h19-u: +kb|h19|heath|h19-b|h19b|heathkit|heath-19|z19|zenith|heathkit h19:\ + :al=1*\EL:am:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\ + :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\ + :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ + :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:ke=\E>:ks=\E=:\ + :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\ + :l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:\ + :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1: +ke|h19-e|h19e|h19 for emacs:ip=1.5:tc=h19-us: +ku|h19-u|h19u|heathkit with underscore cursor:\ + :vs@:ve@:tc=h19-b: +kg|h19-g|h19g|heathkit w/block cursor:\ + :ve=\Ex4:tc=h19-b: +# from ucscc!B.fiatlux@ucbvax.berkeley.edu +zx|ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10/11:\ + :al=\EL:am:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:\ + :dl=\EM:do=^J:ho=\EH:is=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>:\ + :k0=\ES:k1=\EB:k2=\EU:k3=\EV:k4=\EW:k5=\EP:k6=\EQ:k7=\ER:kb=^H:kd=\EB:\ + :kl=\ED:kr=\EC:ku=\EA:le=^H:li#24:nd=\EC:pt:se=\Eq:so=\Es5:\ + :sr=\EI:sr=\EI:ue=\Eq:up=\EA:us=\Es2:\ + :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1: +# # -------------------------------- +# +# l: LEAR SIEGLER (ADM) +# +# If the adm31 gives you trouble with standout mode, check the DIP switch +# in position 6, bank @c11, 25% from back end of pc. Should be OFF. +# If there is no such switch, you have an old adm31 and must use oadm31 +l1|adm31|31|lsi adm31:\ + :is=\Eu\E0:do=^J:al=\EE:am:le=^H:bs:ce=\ET:cm=\E=%+ %+ :\ + :cl=\E*:cd=\EY:co#80:dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:\ + :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:\ + :k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:\ + :li#24:ma=j^Jk^P^K^Pl ^R^L^L :mi:nd=^L:\ + :se=\EG0:so=\EG1:up=^K:us=\EG1:ue=\EG0: +l2|adm2|lsi adm2:\ + :do=^J:al=\EE:am:le=^H:bs:cd=\EY:ce=\ET:cl=\E;:\ + :cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:\ + :ei=:ho=^^:ic=\EQ:im=:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K: +l3|adm3|3|lsi adm3:\ + :do=^J:am:le=^H:bs:cl=^Z:li#24:ma=^K^P:co#80: +l4|adm42|42|lsi adm42:\ + :vs=\EC\E3 \E3(:do=^J:al=270\EE:am:le=^H:bs:cd=\EY:ce=\ET:cl=\E;:\ + :cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:ei=\Er:im=\Eq:ip=6*:li#24:\ + :bt=\EI:nd=^L:se=\EG0:so=\EG4:up=^k:ma=^K^P:pc=\177: +l5|adm5|5|lsi adm5:\ + :do=^J:cd=\EY:ce=\ET:do=^J:kb=^H:kh=^^:\ + :ma=^Hh^Jj^Kk^Ll^^H:se=\EG:sg#1:so=\EG:tc=adm3aplus: +l7|adm20|lear siegler adm20:\ + :am:li#24:co#80:bs:cl=^Z:cm=\E=%i%r%+^_%+^_:nd=^L:up=^K:ho=^^:ce=\ET:\ + :cd=\EY:al=\EE:dl=\ER:im=:ei=:ic=\EQ:dm=:ed=:dc=\EW:so=\E):se=\E(:\ + :bt=\EI:pt:kn#7:k1=^A:k2=^B:k3=^W:k4=^D:k5=^E:k6:^X:k7=^Z: +# From Andrew Scott Beals +l8|adm12|12|lsi adm12:\ + :is=\Eq:do=^J:al=\EE:am:le=^H:bs:ce=\ET:cm=\E=%+ %+ :cl=^Z:cd=\EY:\ + :co#80:dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:\ + :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:\ + :k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:\ + :li#24:ma=j^Jk^P^K^Pl ^R^L^L :mi:nd=^L:\ + :se=\EG0:so=\EG4:up=^K:us=\EG1:ue=\EG0: +la|adm3a|3a|lsi adm3a:\ + :am:do=^J:le=^H:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:\ + :li#24:ma=^K^P:nd=^L:up=^K: +lb|adm3a+|3a+|adm3aplus:\ + :kl=^H:kd=^J:ku=^K:kr=^L:tc=adm3a: +lc|adm22|22|lsi adm22:\ + :is=\E%\014\014\014\016\003\000\003\002\003\002\000\000\000\000\000\000\000\000\000\000\000:\ + :al=\EE:am:bs:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:cm=\000\E=%+ %+ :co#80:\ + :dc=\EW:dl=\ER:do=^J:em=:ho=^^:ic=\EQ:im=:\ + :k1=\001@\015:k2=\001A\015:k3=\001B\015:k4=\001C\015:\ + :k5=\001D\015:k6=\001E\015:k7=\001F\015:kn#7:\ + :ko=ho:l1=F1:l2=F2:l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:\ + :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:\ + :ma=j^Jk^P^K^Pl ^R^L^L :nd=^L:se=\E(:so=\E):ta=\Ei:up=^K: +#From: stephen%comp.lancs.ac.uk@ucl-cs.arpa +le|adm11|lsi adm11:\ + :do=^J:bs:\ + :cd=\EY:ce=\ET:kb=^H:kh=^^:\ + :ma=^Hh^Jj^Kk^Ll^^H:so=\E):se=\E(:\ + :kl=^H:kd=^J:ku=^K:kr=^L:\ + :am:cm=\E=%+ %+ :cl=^Z:co#80:li#24:nd=^L:up=^K:\ + :hs:ts=\EF\E):fs=\E(^M:ds=\Eh: +# # -------------------------------- +# +# m: MICROTERM +# +# These mime1 entries refer to the Microterm Mime I or Mime II. +# The default mime is assumed to be in enhanced act iv mode. +m3|mime3a|mime1 emulating 3a:\ + :am@:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:tc=adm3a: +# New "safe" cursor movement (5/87) from reuss@umd5. Prevents freakout with +# out-of-range args on Sytek multiplexors. No so and se since it gets confused +# and it's too dim anyway. No ic since Sytek insists ^S means xoff. +m4|act4|microterm|microterm act iv:\ + :am:bs:cd=2.2*^_:ce=.1*^~:cl=12^L:cm=^T%+^X%>/0%+P:co#80:li#24:\ + :le=^H:nd=^X:up=^Z:ho=^]:al=2.3*^A:do=^K:dc=.1*^D:dl=2.3*^W:\ + :ku=^Z:kd=^K:kl=^H:kr=^X:\ + :.so=^N:.se=^N:.ic=2^S:.ei=:.im=:.ip=.1*^V:.cm=^T%.%.: +# The padding on sr and ta for act5 and mime is a guess and not final. +# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)... +m5|microterm5|act5|microterm act v:\ + :uc=^H\EA:sr=3\EH:ku=^Z:kd=^K:kl=^H:kr=^X:ma=^Z^P^Xl^Kj:tc=act4: +# Act V in split screen mode. act5s is not tested and said not to work. +mS|act5s|skinny act5:\ + :ti=\EP:te=\EQ:li#48:co#39:tc=act5: +# Mimes using brightness for standout. Half bright is really dim unless +# you turn up the brightness so far that lines show up on the screen. +# uc is disabled to get around a curses bug, should be put back in someday. +mf|mime-fb|full bright mime1:\ + :so=^Y:se=^S:is=^S\E:tc=mime: +mh|mime-hb|half bright mime1:\ + :so=^S:se=^Y:is=^Y\E:tc=mime: +mm|mime|mime1|mime2|mimei|mimeii|microterm mime1:\ + :do=^J:al=80^A:am:le=^H:bs:cd=^_:ce=^^:cl=\035^C:cm=^T%+^X%> 0%+P:\ + :co#80:dl=80^W:ta=2^I:li#24:nd=^X:pt:uc=^U:up=^z:ho=\035:do=^K:\ + :is=^S\E^Q:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:sr=3^R:vt#9: +# These termcaps (for mime 2a) put the terminal in low intensity mode +# since high intensity mode is so obnoxious. +ms|mime2a-s|microterm mime2a (emulating an enhanced soroc iq120):\ + :do=^J:al=20*^A:am:le=^H:bs:cd=20*\EJ:ce=\EK:cl=\EL:cm=\E=%+ %+ :\ + :us=\E6:ue=\E7:co#80:dc=\ED:\ + :dl=20*^W:kl=^H:kr=^L:ku=^K:kd=^J:ho=^^:is=\E):sr=\EI\ + :im=\EE:ei=^Z:ip=2:li#24:nd=^L:so=\E\072:se=\E;:up=\EI: +# This is the preferred mode (but ^X can't be used as a kill character) +mv|mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52):\ + :do=^J:al=20*^A:le=^H:bs:cd=20*\EQ:co#80:ce=\EP:cl=\EL:cm=\EY%+ %+ :\ + :is=^Y:dc=^N:dl=20*^W:ip=2:ei=^Z:ho=\EH:im=^O:kd=\EB:kl=\ED:kr=\EC:\ + :ku=\EA:li#24:nd=\EC:pt:se=\E9:so=\E8:up=\EA:sr=\EA:us=\E4:ue=\E5: +mx|mime3ax|mime-3ax|mime1 emulating enhanced 3a:\ + :al=80^A:dl=80^W:pt:ce=^X:cd=^_:tc=mime3a: +# # -------------------------------- +# +# p: PERKIN ELMER +# +pe|pe550|bantam|perkin elmer 550:\ + :do=^J:le=^H:bs:co#80:ce=20\EI:cl=20\EK:cm=\EX%+ \EY%+ :\ + :ho=\EH:li#24:ll=\EH\EA:nd=\EC:up=\EA:ma=^Z^P:cd=6^N@^V: +pf|fox|perkin elmer 1100:\ + :ct=\E3:st=\E1:do=^J:\ + :am:le=^H:bs:cd=5.5*\EJ:ce=\EI:cl=132\EH\EJ:co#80:ho=\EH:li#24:\ + :ll=\EH\EA:nd=\EC:cm=\EX%+ \EY%+ :up=\EA:vb=^P^B^P^C: +po|owl|perkin elmer 1200:\ + :ct=\E3:st=\E1:do=^J:al=5.5*\EL:am:le=^H:\ + :bs:cd=5.5*\EJ:ce=5.5\EI:cl=132\EH\EJ:ho=\EH:ll=\EH\EA:\ + :cm=\EX%+ \EY%+ :co#80:dc=5.5*\EO:dl=5.5*\EM:ei=:ic=\EN:im=:ip=5.5*:\ + :kb=^h:in:li#24:nd=\EC:up=\EA:se=\E!\200:so=\E!^H:vb=^P^B^P^C:\ + :k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:\ + :k7=\ERG:k8=\ERH:k9=\ERI:k0=\ERJ: +# # -------------------------------- +# +# q: HOME MADE TERMINALS +# +qB|bc|bill croft homebrew:\ + :do=^J:am:le=^H:bs:cm=\E=%+ %+ :cl=^Z:co#96:ho=^^:li#72:\ + :nd=^L:up=^K:vb=: +qN|nucterm|rayterm|NUC homebrew:\ + :do=^J:am:le=^H:bs:cl=1^L:li#24:co#80:nd=^C:\ + :up=^N:ho=^B:ll=^K:ce=^A:cd=^E: +qb|ex3000:\ + :do=^J:li#24:co#80:ho=^Q: +qc|carlock|klc:\ + :do=^J:al=^E:am:bs:ce=^U:cl=100^Z:cm=\E=%+ %+ :co#80:dc=\177:dl=^D:\ + :dm=:ed=:ei=^T:ho=^^:im=^T:li#24:nd=^L:se=^V:so=^V:up=^K:vb=\EV\EV: +# uVAX +qd|qdss|qdcons|qdss glass tty:\ + :am:do=^J:le=^H:bs:cm=\E=%.%.:cl=1^Z:co#128:li#57::nd=^L:up=^K: +qe|exidy|exidy2500|exidy sorcerer as dm2500:\ + :do=^J:al=^P^J^X:am:le=^H:bs:ce=^W:cl=^^:cm=^L%r%n%.%.:co#64:\ + :dc=\b:dl=^P^Z^X:dm=^P:ed=^X:ei=^X:ho=^B:ic=^\:\ + :im=^P:li#30:nd=^\:pt:so=^N:se=^X:up=^Z: +qn|netx|netronics:\ + :do=^J:le=^H:bs:cd=2000^F^E:ce=1600^E:cl=466^L:cm=\E=%+@%+@:\ + :co#64:ho=^D:li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K: +# This came from the comp ctr who got it from some user. Smart indeed! +qs|sexidy|exidy smart:\ + :do=^J:li#24:co#64:cl=^l:ho=^q:nd=^s:\ + :up=^w:le=^H:bs:le=^a:bc=^a:ma=^x^J:kd=^S: +qu|ubell|ubellchar:\ + :if=/usr/share/tabset/ubell:do=^J:am:le=^H:bs:pt:ce=\Ed:cl=^Z:\ + :cm=\E=%+ %+ :co#80:li#24:nd=^L:up=^K:ma=j^Jk^P^K^Pl :ho=^^: +qw|ttyWilliams:\ + :do=^J:co#80:li#12:le=^Y:bc=^Y:do=^K:up=^Z:cl=^^:ce=^_:am:ho=^]:nd=^X: +qx|xitex|xitex sct-100:\ + :do=^J:le=^H:bs:cd=2000^F^E:ce=1600^E:cl=400^L:cm=\E=%+@%+@:co#64:\ + :ho=^D:li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K: +# # -------------------------------- +# +# s: SPECIALS +# +# Special "terminals". These are used to label tty lines when you don't +# know what kind of terminal is on it. The characteristics of an unknown +# terminal are the lowest common denominator - they look about like a ti 700. +sa|network:\ + :tc=unknown: +sb|arpanet:\ + :tc=unknown: +sc|bussiplexer:\ + :tc=unknown: +sd|du|dialup:\ + :tc=unknown: +se|ethernet:\ + :tc=unknown: +sl|lpr|printer|print|printing|line printer:\ + :do=^J:le=^H:bs:co#132:hc:os: +sp|plugboard|patch|patchboard:\ + :tc=unknown: +su|dumb|un|unknown:\ + :am:co#80:do=^J: +sw|switch|intelligent switch:\ + :tc=unknown: +sx|ansi|any ansi terminal with pessimistic assumptions:\ + :co#80:li#24:cl=50\E[;H\E[2J:bs:am:cm=\E[%i%d;%dH:\ + :nd=\E[C:up=\E[A:ce=\E[K:ho=\E[H:pt: +# # -------------------------------- +# +# t: TEXAS INSTRUMENTS +# +t3|ti|ti700|ti733|735|ti735|ti silent 700:\ + :do=^J:le=^H:bs:co#80:hc:os:dC#162: +t4|ti745|745|743|ti silent 745:\ + :do=^J:le=^H:bs:co#80:hc:os: +t8|ti800|ti omni 800:\ + :do=^J:le=^H:bs:co#132:hc:os: +# From lesleymw@topaz.berkeley.edu +t9|ti931|ti 931:\ + al=\EN:am:bs:cd=\EJ:ce=\EI:cl=\EL:cm=\EY%+ %+ :co#80:dl=\EO:do=\EB:\ + eo:ho=\EH:li#24:ku=\EA:kd=\EB:kr=\EC:kl=\ED:mi:nd:sf=\Eb:sr=\Ea:up=\EA: +# # -------------------------------- +# +# v: TELEVIDEO +# +# There are some tvi's that require incredible amounts of padding and +# some that don't. I'm assuming 912 and 920 are the old slow ones, +# and 912b, 912c, 920b, 920c are the new ones that don't need padding. +v1|tvi912|912|920|tvi920|old televideo:\ + :ct=\E3:st=\E1:do=^J:\ + :al=33*\EE:le=^H:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:dc=\EW:dl=33*\ER:ei=:\ + :kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:\ + :bs:am:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\ + :ho=^^:im=:ic=\EQ:li#24:nd=^L:pt:se=\Ek:so=\Ej:up=^K:us=\El:ue=\Em:\ + :ma=^K^P^L :sg#1:ug#1:if=/usr/share/tabset/stdcrt: +# the 912 has a key that's like shift: 8 xmits "^A8\r". +# The 920 has this plus real function keys that xmit different things. +# Termcap makes you use the funct key on the 912 but the real keys on the 920. +v2|912b|912c|tvi912b|tvi912c|tvi|new televideo 912:\ + :al=5*\EE:dl=5*\ER:tc=tvi912: +v3|920b|920c|tvi920b|tvi920c|new televideo 920:\ + :k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\ + :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:al=5*\EE:dl=5*\ER:tc=tvi912: +# set to page 1 when entering ex (\E-17 ) +# reset to page 0 when exiting ex (\E-07 ) +v4|tvi912-2p|tvi920-2p|912-2p|920-2p|tvi-2p|televideo w/2 pages:\ + :ti=\E-17 :te=\E-07 :tc=tvi912: +v5|tvi950-ap|tvi 950 w/alt pages:\ + :is=\E\\1:ti=\E-06 :te=\E-16 :tc=tvi950: +v6|tvi950-b|bare tvi950 no is:\ + :is@:tc=tvi950: +v7|tvi950-ns|tvi950 w/no standout:\ + :so@:se@:us@:ue@:tc=tvi950: +vi|tvi925|925|televideo model 925:\ + :hs:xn:am:bs:co#80:li#24:cm=\E=%+ %+ :cl=\E*:cd=\Ey:ce=\Et:is=\El\E":\ + :al=\EE:dl=\ER:im=:ei=:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:\ + :ho=^^:nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:sg#1:us=\EG8:ue=\EG0:ug#1:\ + :up=^K:do=^V:kb=^H:ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^V^J^L :\ + :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\ + :k8=^AG\r:k9=^AH\r:k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:\ + :ts=\Ef:fs=^M\Eg:ds=\Eh:sr=\Ej: +vj|tvi925vb|925vb|televideo model 925 visual bells:\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :tc=tvi925: +# Since the 925's uses a character position to store the escape sequences to go +# in and out of both stand out and underline modes, screen positioning is +# difficult. The following 925 entries don't use these modes. +vn|tvi925n|925n|televideo model 925 no standout or underline:\ + :so@:se@:us@:ue@:tc=tvi925: +vk|tvi925vbn|925vbn|televideo model 925 visual bells no so or ul:\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :tc=tvi925n: +# entry by Tim Curry 5/21/82 Univ. of Central Fla. duke!ucf-cs!tim +v9|925a|tvi925a|TeleVideo Model 925:\ + :al=\EE:am:bs:bt=\EI:bw:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:dc=\EW:\ + :dl=\ER:do=^V:ei=:ic=\EQ:if=/usr/share/tabset/std:im=:kb=^H:kd=^V:\ + :kh=^^:kl=^H:kn#12:kr=^L:ku=^K:li#24:nd=^L:pt:se=\EG0:sg#1:so=\EG4:\ + :ue=\EG0:ug#1:up=^K:us=\EG8:is=\El\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :ve=\E.4:vs=\E.2: +# The following tvi descriptions from B:pjphar and virus!mike +# is for all 950's. It sets the following attributes: +# full duplex (\EDF) write protect off (\E() +# conversation mode (\EC) graphics mode off (\E%) +# white on black (\Ed) auto page flip off (\Ew) +# turn off status line (\Eg) clear status line (\Ef\r) +# normal video (\E0) monitor mode off (\EX or \Eu) +# edit mode (\Er) load blank char to space (\Ee\040) +# line edit mode (\EO) enable buffer control (^O) +# protect mode off (\E\047) duplex edit keys (\El) +# program unshifted send key to send line all (\E016) +# program shifted send key to send line unprotected (\E004) +# set the following to nulls: +# field delimiter (\Ex0\200\200) +# line delimiter (\Ex1\200\200) +# start-protected field delimiter (\Ex2\200\200) +# end-protected field delimiter (\Ex3\200\200) +# set end of text delimiter to carriage return/null (\Ex4\r\200) +# CHANGED 4-29-87 to set tabs and keep status line --John Kunze (jak@opal) +va|tvi950|950|televideo950:\ + :ct=\E3:st=\E1:do=^J:\ + :is=\EDF\EC\Ed\EG0\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ + \El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ + \Ex3\200\200\Ex4\r\200\Ef\r:if=/usr/share/tabset/stdcrt:\ + :al=\EE:am:le=^H:bs:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\ + :co#80:dc=\EW:dl=\ER:do=^V:ei=\Er:ho=^^:im=\Eq:k0=^A0\r:\ + :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\ + :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^V:kh=^^:kl=^H:\ + :ko=ic\054dc\054al\054dl\054cl\054bt\054ce\054cd:kr=^L:\ + :ku=^K:li#24:ma=^Vj^Kk^Hh^Ll^^H:mi:ms:nd=^L:pt:se=\EG0:\ + :sg#1:so=\EG4:sr=\Ej:ue=\EG0:ug#1:up=^K:us=\EG8:\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :xn:hs:ts=\Eg\Ef:fs=\r:ds=\Eg\Ef\r: +# +# is for 950 with two pages adds the following: +# set 48 line page (\E\\2) +# place cursor at page 0, line 24, column 1 (\E-07 ) +# set local (no send) edit keys (\Ek) +# +# two page 950 adds the following: +# when entering ex, set 24 line page (\E\\1) +# when exiting ex, reset 48 line page (\E\\2) +# place cursor at 0,24,1 (\E-07 ) +# set duplex (send) edit keys (\El) when entering vi +# set local (no send) edit keys (\Ek) when exiting vi +# +vb|tvi950-2p|950-2p|televideo950 w/2 pages:\ + :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ + \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ + \Ex3\200\200\Ex4\r\200\E\\2\E-07 \ + :te=\E\\2\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: +# +# is for 950 with four pages adds the following: +# set 96 line page (\E\\3) +# place cursor at page 0, line 24, column 1 (\E-07 ) +# +# four page 950 adds the following: +# when entering ex, set 24 line page (\E\\1) +# when exiting ex, reset 96 line page (\E\\3) +# place cursor at 0,24,1 (\E-07 ) +# +vc|tvi950-4p|950-4p|televideo950 w/4 pages:\ + :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ + \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ + \Ex3\200\200\Ex4\r\200\E\\3\E-07 \ + :te=\E\\3\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: +# +# is for reverse video 950 changes the following: +# set reverse video (\Ed) +# +# set vb accordingly (\Ed ...nulls... \Eb) +# +vd|tvi950-rv|950-rv|televideo950 rev video:\ + :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ + \El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ + \Ex3\200\200\Ex4\r\200:\ + :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ + :tc=tvi950: +# +# uses the appropriate entries from 950-2p and 950-rv +# +ve|tvi950-rv-2p|950-rv-2p|televideo950 rev video w/2 pages:\ + :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ + \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ + \Ex3\200\200\Ex4\r\200\E\\2\E-07 :\ + :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ + :te=\E\\2\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: +# +# uses the appropriate entries from 950-4p and 950-rv +# +vf|tvi950-rv-4p|950-rv-4p|televideo950 rev video w/4 pages:\ + :is=\EDF\EC\Eb\EG0\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ + \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ + \Ex3\200\200\Ex4\r\200\E\\3\E-07 :\ + :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ + :te=\E\\3\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: +vg|tvi924|924|televideo model 924:\ + :am:bs:xn:co#80:li#24:cm=\E=%+ %+ :cl=\E*0:cd=\Ey:ce=\Et:is=\Ek0\E"^O:\ + :al=\EE:dl=\ER:im=:ei=:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:ho=^^:\ + :nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:us=\EG8:ue=\EG0:up=^K:do=^V:kb=^H:\ + :ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^Vj^Kk^Ll^^H^R^L:k1=^A@\r:k2=^AA\r:\ + :k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\ + :k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:sr=\Ej:\ + :hs:fs=^Y\Es1:ts=\Ef:ds=\Es0\Ef^Y: +vo|tvi924vb|924vb|televideo model 924 visual bells:\ + :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ + :tc=tvi924: +# tvipt termcap from armsis@amber (Gene Rochlin), 9/19/84. Works with vi and +# rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 char/line (rather than +# 40), Esc K chooses the normal character set. Not sure padding is needed, but +# adapted from the tvi920c termcap. so and us are klutzy, but at least use no +# screen space. +vp|tvipt|televideopt:if=/usr/share/tabset/stdcrt:\ + :is=\Ev\Eu\EK:al=5*\EE:am:bs:bt=\EI:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:\ + :dl=5*\ER:kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:ho=^^:li#24:nd=^L:se=\EF:\ + :so=\EG1@A\EH:ue=\EF:us=\EG1B@\EH:up=^K:ma=^Kk^Ll^R^L: +# Vanilla tvi910 -- W. Gish (cswarren@violet) 10/29/86 +vm|tvi910|910|televideo model 910:if=/usr/share/tabset/stdcrt:\ + :bs:bt=\EI:cd=\EY:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:\ + :kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\ + :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k0=^AI\r:\ + :li#24:nd=^L:pt:se=\EG0:so=\EG4:up=^K:us=\EG8:ue=\EG0:\ + :ho=\E=\001\001:ma=^Kk^Ll^R^L:sg#1: +# from Alan R. Rogers (rogers%albany@csnet-relay) +vh|tvi910+|910+|televideo 910+:\ + :al=5*\EE:am:bs:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+\040%+\040:\ + :co#80:dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:\ + :if=/usr/share/tabset/stdcrt:im=:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\ + :k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=^H:\ + :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:ll=\E=7\040:ma=^K^P^L\040:\ + :nd=^L:pt:se=\EG0:sg#1:so=\EG4:ue=\EG0:up=^K:us=\EG8:xn: +# From Humberto Appleton, beto@cs.utexas.edu, 880521 UT Austin +vs|tvi970|970|televideo970:\ + :is=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J:\ + :ae=\E(B:al=\E[L:as=\E(B:bs:bt=\E[Z:\ + :cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:cm=\E[%i%d;%df:co#80:\ + :da:db:dc=\E[P:dl=\E[M:do=\ED:ei=\E[4l:im=\E[4h:\ + :k1=\E?a:k2=\E?b:k3=\E?c:k4=\E?d:k5=\E?e:k6=\E?f:k7=\E?g:k8=\E?h:\ + :k9=\E?i:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\ + :li#24:mi:ms:nd=\E[C:pt:se=\E[0m:sg#0:so=\E[7m:sr=\EM:\ + :ue=\E[0m:ug#0:up=\EM:us=\E[4m:vs=\E[1Q:\ + :vb=\E[5;m\200\200\200\200\200\200\200\200\200\E[0;m +# From fair@ucbarpa Sun Oct 27 07:21:05 1985 +v6|ims950-b|bare ims950 no is:\ + :is@:tc=ims950: +v7|ims950-ns|ims950 w/no standout:\ + :so@:se@:us@:ue@:tc=ims950: +va|ims950|ims televideo 950 emulation:\ + :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:ko@:kr@:ku@:\ + :vb@:xn@:tc=tvi950: +vd|ims950-rv|ims tvi950 rev video:\ + :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:ko@:kr@:ku@:\ + :vb@:xn@:tc=tvi950-rv: +vx|ims-ansi|ultima2|ultimaII|IMS Ultima II:\ + :pt:am:bs:co#80:li#24:\ + :is=\E[0m\E[>14l\E[?1;?5;20l\E>\E[1m^M:if=/usr/share/tabset/vt100:\ + :cl=\E[;H\E[2J:cd=\E[0J:ce=\E[0K:cm=\E[%i%2;%2H:up=\EM:do=\ED:\ + :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kh=\E[H:\ + :so=\E[7m:se=\E[0m\E[1m:us=\E[4m:ue=\E[0m\E[1m:sr=\EM: +# # -------------------------------- +# +# w: WYSE +# +# The wy{30,50,75,85} entries are recommended by +# Wyse Technology +# 3571 North First Street +# San Jose, CA 95134 +# Entries for the wy60 and wy99 are only based on Wyse's recommendations. +# +# Advice on the Wyse 30 and 50 standout mode glitch: +# (from steve@omni.com or ...pyramid!koosh!steve) +# +# These terminals support a "PROTECT" sequence on/off that has no +# standout-glitch (xmc), while the regular "attribute" stuff enabled +# with G'some-character' gives a 1-space glitch. +# +# All but the very old revision firmware on both terminals support a +# visible PROTECT attribute that's selectable by the ol' SETUP menu. +# (The older rev. terminals do support PROTECT attribute but only +# have the options REGULAR and DIM) +# +# Get into your terminal's SETUP menu, and down-key to the 5'th +# menu (on a wyse 30; I think 3'rd or 4'th on a wyse 50) and +# right-key over to the PROTECT item. +# +# Change PROTECT to REVERSE or REVERSE/DIM, and go over to the next +# item -- ATTRIBUTE and change it to LINE; then save the changes for +# power-on. (ATTRIBUTE change isn't necessary but looks a whole lot +# nicer to the eye when inverting the remainder of a line rather then +# the rest of the screen!). +# +# The next thing to do is change your /usr/lib/something?/terminfo/w/wyse50 +# so that it uses the proper escape sequences to turn on/off the protect +# sequence rather than the very-ugly \EG4 and \EG0. +# +# Change standout to \E), standend to \E(, and glitch to 0, which means +# changing the so, se, and sg fields to :so=\E):se=\E(:sg#0: +# +w0|wy30|wyse30|Wyse 30:\ + :am:bw:hs:mi:xo:bs:pt:\ + :co#80:li#24:sg#1:ug#1:kn#9:\ + :ae=\EG0\EH^C:al=2\EE:as=\EG0\EH^B:bt=\EI:cd=80\Ey:\ + :ce=\Et:cl=80\E*:cm=\E=%+ %+ :ct=\E0:dc=10\EW:dl=1\ER:\ + :ds=\EF\r:ei=\Er:fs=\r:ho=^^:im=\Eq:ip=2:\ + :is=\E'\E(\E\^3\E`9^N^T:k1=^A@\r:k2=^AA\r:k3=^AB\r:\ + :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:kb=\b:\ + :kd=\n:kh=^^:kl=\b:kr=\f:ku=^K:nd=\f:se=\EG0:so=\EG4:\ + :sr=3\Ej:st=\E1:ts=\EF:ue=\EG0:up=^K:us=\EG8:ve=\E`1:\ + :pf=^T:po=^R:\ + :vi=\E`0:ko=bt,le,do,nd,up,dc,dl,ho,al: +w1|wy30-vb|wyse30-vb|wyse 30 visual bell:\ + :vb=\E`8\E`\072\E`9:\ + :tc=wy30: +w2|wy50|wyse50|Wyse 50:\ + :am:bw:hs:mi:xo:bs:pt:\ + :co#80:li#24:sg#1:ug#1:kn#9:\ + :ae=\EG0\EH^C:al=\EE:as=\EG0\EH^B:bt=\EI:cd=20\Ey:\ + :ce=\Et:cl=20\E*:cm=\E=%+ %+ :ct=\E0:dc=1\EW:dl=\ER:\ + :ds=\EF\r:ei=\Er:fs=\r:ho=^^:i1=30\E`\072\E`9:im=\Eq:\ + :ip=1:is=^N^T\E'\E(:k1=^A@\r:k2=^AA\r:k3=^AB\r:\ + :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:\ + :k9=^AH\r:kb=\b:kd=\n:kh=^^:kl=\b:kr=\f:ku=^K:nd=\f:\ + :se=\EG0:so=\EGt:sr=\Ej:st=\E1:ts=\EF:ue=\EG0:up=^K:\ + :us=\EG8:ve=\E`1:vi=\E`0:\ + :pf=^T:po=^R:\ + :ko=bt,le,do,nd,up,dc,dl,ho,al: +w3|wy50-vb|wyse50-vb|wyse 50 visual bell:\ + :vb=\E`8\E`\072\E`9:\ + :tc=wy50: +w4|wy50-w|wyse50-w|wyse 50 132-column:\ + :cm=\Ea%i%dR%dC:co#132:dc=2\EW:i1=\E`;\E`9:\ + :tc=wy50: +w5|wy50-wvb|wyse50-wvb|wyse 50 132-column visual bell:\ + :cm=\Ea%i%dR%dC:co#132:dc=2\EW:i1=\E`;\E`9:\ + :vb=\E`8\E`;\E`9:\ + :tc=wy50: +# from John Gillmore hoptoad!gnu@lll-crg.arpa +wg|wyse-vp|wyse|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on:\ + :am:do=^J:if=/usr/share/tabset/wyse-adds:\ + :le=^H:bs:li#24:co#80:cm=\EY%+ %+ :cd=\Ek:ce=\EK:nd=^F:\ + :up=^Z:cl=^L:ho=^A:ll=^A^Z:kl=^U:kr=^F:kd=^J:ku=^Z:kh=^A:\ + :pt:so=^N:se=^O:us=^N:ue=^O:dl=\El:al=\EM:im=\Eq:ei=\Er:dc=\EW:\ + :is=\E`\072\E`9^O\Er:rs=\E`\072\E`9^O\Er: +wh|wyse-vp-nk|Wyse 50 in ADDS Viewpoint enhanced mode with cursor keys gone:\ + :kl@:kr@:kd@:ku@:kh@:tc=wyse-vp: +wi|wyse925|Wyse-50 emulating tvi925:\ + :xn@:tc=tvi925: +# Wyse 60 in 24 row native mode, switches screens for vi and emacs. +# This termcap is a composite of entries submitted by Steve Van Domelen +# (Wyse Tech, svd@bigboy.wyse.com) and Douglas Good (doug@cli.com). +# Merged by Paul Vojta (vojta@math.berkeley.edu). +w6|wy60|Wyse 60 in native mode:\ + :ae=\EH^C:al=4\EE:am:as=\EH^B:bl=^G:bs:bt=\EI:bw:cd=100\Ey:ce=\Et:\ + :cl=100\E*:cm=\E=%+ %+ :co#80:ct=\E0:da:db:dc=11\EW:dl=5\ER:do=^J:\ + :ds=\EF\r:ei=\Er:fs=\r:ho=^^:hs:if=/usr/share/tabset/std:im=\Eq:ip=3:\ + :is=\Ed$\EcD\E'\Er\EH^C\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1^N^T\EwG\Ew0^^^K:\ + :k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:k6=^AF\r:\ + :k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=\b:kd=\EOB:ke=200\EcU:kh=\E{:kl=\EOD:\ + :km:kn#10:ko=bt,le,do,nd,up,dc,dl,ho,al:kr=\EOC:\ + :ks=200\EZ0+\EOA\177\EZ0,\EOB\177\EZ0.\EOC\177\EZ0-\EOD\177\EZ0*\E{\177:\ + :ku=\EOA:l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:l8=F9:l9=F10:\ + :le=\b:li#24:ll=^^^K:mb=\EG2:me=\EG0:mh=\EGp:mi:mr=\EG4:ms:nd=\f:pf=^T:\ + :po=^R:pt:rs=500\E~!\E~4\E`\:\EeF\Ee(\EwG:se=\EG0:sf=^J:so=\EGt:\ + :sr=7\Ej:st=\E1:te=50^Z\Ew0:ti=50\Ew1:ts=\EF:ue=\EG0:up=^K:us=\EG8: +# Must delete uc= if using infocomp to translate +w7|wy60-w|wyse60-w|wyse 60 132-column:\ + :co#132:cm=\Ea%i%dR%dC:dc=16\EW:ip=5:\ + :rs=500\E~!\E~4\EeF\E`;\Ee(\EwG:tc=wy60: +# From now on, page-switching is no longer possible +w8|wy60-25|wyse60-25|wyse 60 80-column 25-lines:\ + :li#25:te:ti:\ + :rs=500\E~!\E~4\E`\:\EeG\Ee)\EwG:tc=wy60: +w9|wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines:\ + :co#132:li#25:cm=\Ea%i%dR%dC:dc=16\EW:ip=5:te:ti:\ + :rs=500\E~!\E~4\EeF\E`;\Ee)\EwG:tc=wy60: +wa|wy60-42|wyse60-42|wyse 60 80-column 42-lines:\ + :li#42:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\E=%+ %+ :dc=16\EW:\ + :dl=11\ER:ip=5:sr=10\Ej:te:ti:\ + :rs=500\E~!\E~4\E`\:\EeF\Ee*\EwG:tc=wy60: +wb|wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines:\ + :co#132:li#42:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\Ea%i%dR%dC:dc=19\EW:\ + :dl=11\ER:ho=2^^:ip=6:sr=10\Ej:te:ti:\ + :rs=500\E~!\E~4\EeF\E`;\Ee*\EwG:tc=wy60: +wc|wy60-43|wyse60-43|wyse 60 80-column 43-lines:\ + :li#43:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\E=%+ %+ :dc=16\EW:\ + :dl=11\ER:ip=5:sr=10\Ej:te:ti:\ + :rs=500\E~!\E~4\E`\:\EeF\Ee+\EwG:tc=wy60: +wd|wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines:\ + :co#132:li#43:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\Ea%i%dR%dC:dc=19\EW:\ + :dl=11\ER:ho=2^^:ip=6:sr=10\Ej:te:ti:\ + :rs=500\E~!\E~4\EeF\E`;\Ee+\EwG:tc=wy60: +# Not recommended at high baud rates +we|wy60-vb|wyse60-vb|Wyse 60 visual bell:\ + :vb=\E`8\E`9:\ + :tc=wy60: +wf|wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visual bell:\ + :vb=\E`8\E`9:\ + :tc=wy60-w: +# +# The Wyse 75 is a vt100 lookalike without advanced video. +# +# The Wyse 75 can support one attribute (e.g. Dim, Inverse, +# Underline) without magic cookies. The following description +# uses this capability, but when more than one attribute is +# put on the screen at once, all attributes will be changed +# to be the same as the last attribute given. +# The Wyse 75 can support more attributes when used with magic +# cookies. The wy75-mc terminal description uses magic cookies +# to correctly handle multiple attributes on a screen. +# +wm|wy75|wyse75|wyse 75:\ + :am:hs:mi:ms:xn:xo:bs:pt:\ + :co#80:li#24:pb#1201:kn#6:\ + :AL=2*\E[%dL:DC=3*\E[%dP:DL=1*\E[%dM:DO=\E[%dB:\ + :IC=1*\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\ + :al=2\E[L:as=\E[0m^N:bt=\E[1Z:cd=30\E[J:ce=3\E[K:\ + :ch=\E[%i%dG:cl=30\E[H\E[J:cm=\E[%i%d;%dH:\ + :cs=2\E[%i%d;%dr:ct=\E[3g:dc=3\E[P:dl=\E[M:\ + :ds=\E[>,^A^A\E[>-^A^A:ei=\E[4l:fs=^A:ho=\E[H:\ + :im=\E[4h:ip=1:is=\E>\E[?7;?8h\E[4;?1l^O\E)0:kb=\b:\ + :kd=\E[B:ke=\E[?1l\E>:kh=\E[H:kl=\E[D:kr=\E[C:\ + :ks=\E[?1l\E[?7h\E=:ku=\E[A:nd=\E[C:r1=\E7\E[1;24r\E8:\ + :r2=20\E[0m\E[35;?7;?8h\E[30;?1l:r3=80\E[?3l:rc=\E8:\ + :sc=\E7:se=\E[0m:so=\E[1t\E[7m:sr=2\EM:st=\EH:\ + :ts=\E[>,^A:ue=\E[0m:up=\E[A:us=\E[2t\E[4m:ve=\E[?25h:\ + :po=\E[5i:pf=\E[4i:\ + :vi=\E[?25l:ko=nd,up,dl,ce,ho,al: +# +# This terminal description uses the non-hidden attribute mode +# (with magic cookie). +# +wn|wy75-mc|wyse75-mc|wyse 75 with magic cookies:\ + :ae=\E[0p^O:as=\E[0p^N:ms@:r2=20\E[0p\E[35;?7;?8h\E[30;?1l:\ + :se=\E[0p:sg#1:so=\E[17p:ue=\E[0p:ug#1:us=\E[8p:\ + :tc=wy75: +wo|wy75-vb|wyse75-vb|wyse 75 with visual bell:\ + :vb=\E[30h\E,\E[30l:\ + :tc=wy75: +wp|wy75-w|wyse75-w|wyse 75 in 132 column mode:\ + :co#132:r3=80\E[?3h:\ + :tc=wy75: +wq|wy75-wvb|wyse75-wvb|wyse 75 with visual bell 132 columns:\ + :co#132:r3=80\E[?3h:vb=\E[30h\E,\E[30l:\ + :tc=wy75: +# +wj|wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad:\ + :is=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=:\ + :kd=\EOB:ke=10\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:\ + :ks=10\E[?1h\E=:ku=\EOA:\ + :tc=wyse75: +# +# Wyse 85 emulating a vt220 7 bit mode. +# 24 line screen with status line. +# +# The vt220 mode permits more function keys but it wipes out +# the escape key. I strongly reccomend that f11 be set to +# escape (esc). +# The terminal may have to be set for 8 data bits and 2 stop +# bits for the arrow keys to work. +# The Wyse 85 runs faster with XON/XOFF enabled. Also the +# (dch) and (ich) work best when XON/XOFF is set. (ich) and +# (dch) leave trash on the screen when used without XON/XOFF. +# +wr|wy85|wyse85|wyse 85:\ + :am:hs:mi:ms:xn:xo:bs:pt:\ + :co#80:li#24:kn#3:\ + :AL=5*\E[%dL:DC=3*\E[%dP:DL=3*\E[%dM:DO=\E[%dB:\ + :IC=4*\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\ + :al=5\E[L:as=^N:bt=\E[Z:cd=110\E[J:ce=\E[K:\ + :cl=110\E[H\E[J:cm=1\E[%i%d;%dH:cs=\E[%i%d;%dr:\ + :ct=\E[3g:dc=3\E[P:dl=3\E[M:ds=\E[40l:ei=\E[4l:\ + :fs=\E[1;24r\E8:ho=\E[H:\ + :i1=\E[62;1"p\E7\E[?6l\E8\E[?5W:im=\E[4h:ip=3:\ + :is=16\E[2;4;20;30l\E[?1;4;10;16l\E[12;36h\E[?7;8;25h:\ + :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ + :kb=\b:kd=\E[B:ke=\E>:kh=\E[26~:\ + :kl=\E[D:kr=\E[C:ks=\E[?1l\E=:ku=\E[A:l1=PF1:l2=PF2:\ + :l3=PF3:l4=PF4:nd=\E[C:\ + :r1=\E<\E[3;13l\E[!p\E7\E[1;24r\E8\E(B:\ + :r2=70\E[35h\E[?3l:rc=\E8:sc=\E7:se=\E[m:so=\E[1m:\ + :sr=3\EM:st=\EH:ts=\E[40h\E7\E[25;%i%dH:ue=\E[m:\ + :up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:nl=\E[B:\ + :po=\E[5i:pf=\E[4i:\ + :ko=do,nd,up: +# +# Wyse 85 with visual bell. +ws|wy85-vb|wyse85-vb|wyse 85 with visual bell:\ + :vb=\E[30h\E,\E[30l:\ + :tc=wy85: +# +# Wyse 85 in 132-column mode. +wt|wy85-w|wyse85-w|wyse 85 in 132-column mode:\ + :co#132:\ + :r2=120\E[35h\E[?3h:\ + :tc=wy85: +# +# Wyse 85 in 132-column mode with visual bell. +wu|wy85-wvb|wyse85-wvb|wyse 85 with visual bell 132-columns:\ + :vb=\E[30h\E,\E[30l:\ + :tc=wy85: +# From pett@cgl.ucsf.edu +wv|wy99|wyse-99gt|wyse99gt|wyse 99GT, 80 col, native mode:\ + :is=\E\140\072\Ee(\Ew1\Ee-\Ee$\Ee'\EeT^T:ct=\E0:st=\E1:gn:\ + :li#24:co#80:bl=^G:am:bw:ul:hs:as=\EcE:ae=\EcD:bt=\EI:\ + :ma=^Kj^Jk^Hh^Ll^^H:cm=\Ea%i%2R%3C:it#8:\ + :vs=^^\EY\E\140\072:vi=\E`0:es:ws#80:\ + :lm#0:md=\Ee1\EG6:me=\Ee0\E(:mh=\Ee1\EGb:mb=\Ee1\EG2:\ + :mk=\Ee1\EG1:mp=\E):mr=\Ee1\EG4:pf=^T:po=\EP\E7:ps=:\Ed&\E7\ + :fs=\004:ds=\EA31:i2=\EA30:vb=\E\1361\E\1360:da:db:sf=^J:sr=\Ej:\ + :cl=^Z:ce=\ET:cd=\EY:al=\EE:dl=\ER:dc=\EW:\ + :so=\EGt:se=\EG0:sg#1:ue=\EG0:us=\EG8:ug#1:ll=\Ea24R1C:\ + :pt:bs:nd=^L:up=^K:do=^J:ho=^^:kl=^H:kr=^L:ku=^K:kd=^J:kh=^^:kn#20:\ + :ei=\Er:im=\Eq:ic=:mi:if=/usr/share/tabset/stdcrt:\ + :k1=^A@^M:k2=^AA^M:k3=^AB^M:k4=^AC^M:k5=^AD^M:\ + :k6=^AE^M:k7=^AF^M:k8=^AG^M:k9=^AH^M:k0=^AI^M:\ + :l1=^A`^M:l2=^Aa^M:l3=^Ab^M:l4=^Ac^M:l5=^Ad^M:\ + :l6=^Ae^M:l7=^Af^M:l8=^Ag^M:l9=^Ah^M:l0=^Ai^M: +# From freudent@eric.ultra.nyu.edu (Eric Freudenthal) +ww|wy100q|Wyse 100 for Quotron:\ + :al=\EE:bs:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:\ + :dc=\EW:dl=\ER:do=^J:ei=\Er:im=\Eq:is=\E`\072\200\EC\EDF\E0\E'\E(\EA21:\ + :kd=^J:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K:us=\EG8:ue=\EG0:\ + :so=\EG4:se=\EG0:sg#1:sr=\Ej:ho=^^:ug#1: +# # -------------------------------- +# +# y: TELERAY +# +# Note two things called "teleray". Reorder should move the common one +# to the front if you have either. A dumb teleray with the cursor stuck +# on the bottom and no obvious model number is probably a 3700. +y1|t3700|teleray|dumb teleray 3700:\ + :do=^J:le=^H:bs:cl=^L:co#80:li#24: +y3|t3800|teleray 3800 series:\ + :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80: \ + :do=\n:ho=\EH:li#24:ll=\EY7 :nd=\EC:pt:up=^K: +y6|t1061|teleray 1061:\ + :if=/usr/share/tabset/teleray:\ + :ct=\EG:st=\EF:do=^J:\ + :al=2*\EL:am:le=^H:bs:cd=1\EJ:ce=\EK:cl=1^L:cm=\EY%+ %+ :co#80:\ + :dc=\EQ:dl=2*\EM:ei=:ho=\EH:ic=\EP:im=:ip=0.4*:\ + :k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:k8=^Z8:\ + :li#24:nd=\EC:pt:se=\ER@:so= \ERD:\ + :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\ + :up=\EA:us=\ERH:ue=\ER@:xs:xt:sg#2:ug#1: +# "Teleray Arpa Special", offically designated as +# "Teleray Arpa network model 10" with "Special feature 720". +# This is the new (1981) fast microcode updating the older "arpa" proms +# (which gave meta-key and pgmmable-fxn keys). 720 is much much faster, +# converts the keypad to programmable function keys, and has other goodies. +# Standout mode is still broken (magic cookie, etc) so is suppressed as no +# programs handle such lossage properly. +# Note: this is NOT the old termcap's "t1061f with fast proms." +# From Univ of Utah, J.Lepreau Tue Feb 1 06:39:37 1983 +# lepreau@utah-cs, harpo!utah-cs!lepreau +# +y7|t10|teleray 10 special:\ + :so@:se@:us@:ue@:\ + :al=\EL:bs:cd=\EJ:ce=\EK:cl=30\Ej:cm=\EY%+ %+ :co#80:\ + :dc=\EQ:dl=\EM:ei=:ho=\EH:ic=\EP:im=:km:li#24:nd=\EC:pc=\200:pt:\ + :se=\ER@:so=\ERD:sf=\Eq:sg#2:sr=\Ep:up=\EA:ug#1:ue=\ER@:us=\ERH:\ + :xs:xt: +yf|t1061f|teleray 1061 with fast PROMs:\ + :al=\EL:ip@:dl=\EM:tc=t1061: +# # -------------------------------- +# +# z: Miscellaneous +# +z0|wind:\ + :bs:cm=\Ep%r%.%.:cl=\En\120\030\Eo:co#80:\ + :ho=\Ep\200\200:li#24:nd=^L:up=^K:nl=\035:\ + :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\ + :so=\Em\014:se=\Em\003: +z1|wind16:\ + :bs:cm=\Ep%r%.%.:cl=\En\120\020\Eo:co#80:\ + :ho=\Ep\200\200:li#16:nd=^L:up=^K:nl=\035:\ + :so=\Em\014:se=\Em\003: +z2|wind40:\ + :bs:cm=\Ep%r%.%.:cl=\En\120\050\Eo:co#80:\ + :ho=\Ep\200\200:li#40:nd=^L:up=^K:nl=\035:\ + :so=\Em\014:se=\Em\003: +z3|wind50:\ + :bs:cm=\Ep%r%.%.:cl=\En\128\062\Eo:co#88:\ + :ho=\Ep\200\200:li#50:nd=^L:up=^K:nl=\035:\ + :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\ + :so=\Em\014:se=\Em\003: +z4|cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars:\ + :am:bs:cl=^Z:co#73:ho=\036:li#36:nd=^L:up=^K: +z5|cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars:\ + :am:bs:cl=^Z:co#85:ho=\036:li#39:nd=^L:up=^K:\ + :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\ + :so=\Em\014:se=\Em\003: +z6|v50|visual 50:\ + :am:bs:al=\EL:dl=\EM:\ + :cd=\Ek:ce=\EK:cl=^Z:cm=\E=%+\040%+\040:co#80:do=^J:ho=\EH:\ + :kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:li#24:ms:nd=^L:pt:\ + :so=\EU:se=\ET:up=^K: +z7|trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M:\ + :nl=^_:al=^D:am:bs:cd=^B:ce=^A:cl=^L:cm=\EY%+ %+ :co#80:\ + :dl=^K:do=^_:ho=^F:li#24:nd=^]:ms:pt:se=^O:so=^N:up=^^:\ + :kb=^H:kd=^_:kl=^\:kr=^]:ku=^^: +#From: ksb@mentor.cc.purdue.edu (Kevin Braunsdorf) +z8|trs16|trs-80 model 16 console:\ + :al=\EL:am:bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80:dc=\EQ:dl=\EM:\ + :do=\EB:ei=:ic=\EP:ho=\EH:im=:kb=^H:kd=\EB:kl=\ED:kn#2:kr=\EC:\ + :ku=\EA:k0=^A:k1=^B:l0=f1:l1=f2:li#24:nd=\EC:pt:se=\ER@:sg#0:so=\ERD:\ + :k2=^D:k3=^L:k4=^U:k5=^P:k6=^N:k7=^S:\ + :l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:\ + :up=\EA:GS=\ERG:GE=\ERg:GV=s:GH=u:GU=e:GD=c:G1=`:G2=_:G3=b:G4=a:\ + :BN=\E[?33h:BF=\E[?33l:UC=\E[_\040q:BC=\E[\177\040q:\ + :PN=\E]=:PS=\E]+:\ + :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@: +#From {pbrown,ctl}@ocf.berkeley.edu, 12 Mar 90 +zp|coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II:\ + :am:bs:cl=5*^L:li#24:co#80:ho=^A:\ + :cd=^K:ce=^D:cm=2%r^B%+ %+ :\ + :bl#7:do=^J:up=^I:nd=^F:so=\037\040:se=\037\041:\ + :us=\037\042:ue=\037\043:al=\037\060:dl=\037\061:\ + :ku=^L:kd=^J:kr=^I:kl=^H:ta:mb=\037\042:md=\E\072^A:\ + :mr=\037\040:me=\037\041\E\072\000:\ + :vi=\005\040:ve=\005\041 +z9|ps300|Picture System 300:us@:ue@:so@:se@:xt:pt@:tc=vt100: +za|masscomp2:co#64:li#21:tc=masscomp: +zb|masscomp1:co#104:li#36:tc=masscomp: +zc|masscomp:\ + :al=\E[L:bs:cd=\E[J:ce=\E[K:co#80:dc=\E[P:dl=\E[M:do=\E[B:\ + :ei=\E[4l:im=\E[4h:is=\EGc\EGb\EGw:li#24:mi:MT:nd=\E[C:pt:se=\E[0m:\ + :sg#0:so=\E[7m:cm=\E[%i%d;%dH:ue=\EGau:us=\EGu:up=\E[A:\ + :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^h:cl=\E[2J: +# Kimtron TC entries include (undocumented) codes for: enter dim mode (mh), +# enter bold mode (md), enter reverse mode (mr), turn off all attributes (me) +# Kimtron ABM 85 added by Dual Systems +zd|abm85|Kimtron ABM 85:\ + :is=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq:if=/usr/share/tabset/stdcrt:\ + :li#24:co#80:am:bs:bw:ms:pt:\ + :cl=\E*:cd=\Ey:dl=\ER:al=\EE:ce=\Et:dc=\EW:im=\EQ:ei=\Er:\ + :cm=\E=%+ %+ :do=^J:nd=^L:up=^K:bt=\EI:\ + :kh=^^:kb=^H:kd=^J:ku=^K:kd=^J:kl=^H:kr=^L:\ + :so=\Ej:se=\Ek:sg#1:us=\El:ue=\Em:ug#1: +# Kimtron ABM 85H added by Dual Systems. +# Some notes about the 85h entries: +# 1) there are several firmware revs of 85H in the world. Use o85h for +# firmware revs prior to SP51 +# 2) Make sure to use 85h entry if the terminal is in 85H mode and the +# 85e entry if it is in 920 emulation mode. They are incompatible in +# some places and NOT software settable i.e., `is' can't fix change it) +# 3) In 85h mode, the arrow keys and special functions transmit when +# the terminal is in dup-edit, and work only locally in local-edit. +# Vi won't swallow `del char' for instance, but `vs' turns on +# dup-edit anyway so that the arrow keys will work right. If the +# arrow keys don't work the way you like, change `vs', `ve', and `is'. +# 920E mode does not have software commands to toggle between dup +# and local edit, so you get whatever was set last on the terminal. +# 4) vb attribute is nice, but seems too slow to work correctly (\Eb\Ed) +# 5) Make sure `hidden' attributes are selected. If `embedded' attributes +# are selected, the entries :sg@: and :ug@: should be removed. +# 6) auto new-line should be on (selectable from setup mode only) +# +# From fair@ucbarpa Sun Oct 27 07:21:05 1985 +ze|85h|85H|abm85h|Kimtron ABM 85H, 85H mode:\ + :is=\EC\EN\EX^T^N\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef^M\EG0\Ed\E.4\El:\ + :im=\EZ:kd=^V:so=\EG4:se=\EG0:us=\EG8:ue=\EG0:vb@:vs=\E.2:ve=\E.4:\ + :mh=\E):mr=\EG4:me=\E(\EG0:sg@:ug@:ds=\Ee:fs=^M:hs:ts=\Eg\Ef:tc=abm85: +zf|85e|85E|abm85e|Kimtron ABM 85H, 920E mode:\ + :is=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef^M\Ek\Eq\Em:\ + :mh=\E):mr=\Ej:me=\E(\Ek:im=\EZ:sg@:ug@:vb@:tc=abm85: +zg|o85h|oabm85h|Kimtron ABM 85H, old firmware rev.:\ + :is=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF:\ + :im=\EZ:sg@:ug@:vb=\200\200\200^G\200\200\200:\ + :mh=\E):mr=\Ej:me=\E(\Ek:tc=abm85: +#from malman@bbn-vax.arpa +zE|kt7|kimtron model kt-7:\ + :am:bs:co#80:li#24:cm=\E=%+ %+ :cl=^Z:cd=\EY:ce=\ET:is=\El\E":\ + :al=\EE:dl=\ER:im=:ei=:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:\ + :ho=^^:nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:sg#0:us=\EG8:ue=\EG0:ug#0:\ + :up=^K:do=^V:kb=^H:ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^V^J^L :\ + :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\ + :k8=^AG\r:k9=^AH\r:k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:\ + :ts=\Ef:fs=\Eg: +zh|appleII|apple ii plus:vs=\024\103\066:ve=\024\103\062:\ + :am:co#80:ce=\035:li#24:cl=\014:bs:nd=\034:up=\037:ho=\E\031:pt:\ + :cd=\013:so=\017:se=\016:cm=\036%r%+ %+ :is=\024T1\016:do=^J:kd=^J:\ + :vb=\024G1\024T1:kr=: +# Gary Ford 21NOV83 +# New version from ee178aci%sdcc7@SDCSVAX.ARPA Fri Oct 11 21:27:00 1985 +zi|apple-80|apple II with smarterm 80 col:\ + :am:bs:bt=^R:bw:cd=10*^K:ce=10^]:cl=10*^L:cm=^^%r%+ %+ :\ + :co#80:cr=10*^M:do=^J:ho=^Y:le=^H:li#24:nd=^\\:up=^_: +zj|lisa|apple lisa console display, black on white:\ + :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:co#88:\ + :dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:li#32:\ + :nd=\E[C:ms:pt:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:up=\E[A:\ + :kb=^h:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:eo:is=\E>\E[0m^L:\ + :GS=\E[11m:GE=\E[10m:GV=\140:GH=a:G1=c:G2=f:G3=e:G4=d:GU=u:\ + :GD=s:GC=b:GL=v:GR=t:CO=\E[5l:CF=\E[5h: +zq|liswb|apple lisa console display, white on black:\ + :so=\E[0m:se=\E[0;7m:us=\E[4m:ue=\E[0;7m:is=\E>\E[0;7m^L:\ + :tc=lisa: +# The following is a version of the ibm-pc entry distributed with PC/IX, +# (Interactive Systems' System 3 for the Big Blue), modified by Richard +# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original, +# (the former is untrue, and the latter failed under UCB/man); standout and +# underline modes have been added. Note: this entry describes the "native" +# capabilities of the PC monochrome display, without ANY emulation; most +# communications packages (but NOT PC/IX connect) do some kind of emulation. +pc|ibmpc|ibm pc PC/IX:\ + :li#24:co#80:am:bs:bw:eo:\ + :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[;H:\ + :nd=\E[C:up=\E[A:so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m: +pc3|ibmpc3|IBM PC 386BSD Console:\ + :li#25:tc=pc: +zk|ibmx|ibmpcx|IBM PC xenix console display:\ + :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%d;%dH:co#80:\ + :dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:li#25:\ + :nd=\E[C:ms:se=\E[0m:so=\E[7m:us=\E[4m:\ + :ue=\E[m:up=\E[A:MR=\E[0m:\ + :kb=^h:kh=\E[Y:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:eo:\ + :GS=\E[11m:GE=\E[10m:\ + :GC=b:GL=v:GR=t:RT=^J:\ + :GH=\E[196g:GV=\E[179g:\ + :GU=\E[193g:GD=\E[194g:\ + :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\ + :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\ + :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\ + :HM=\E[Y:EN=\E[d:PU=\E[Z:PD=\E[e: +zl|ibmc|ibmcpc|IBM PC xenix color console display:\ + :tc=ibm: +zo|ibmcx|ibmcpcx|IBM PC xenix color console display:\ + :tc=ibmx: +zm|kaypro|kaypro2|kaypro II:\ + :am:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:up=^K:\ + :kr= :kl=^H:ku= :kd=^J: +# From Suk Lee ..!{decvax,linus,allegra,ihnp4}!utcsrgv!spoo +zn|trs100|Radio Shack Model 100:\ + :am:bs:le=^H:li#8:co#40:ku=^^:kd=^_:kl=^]:kr=^\:up=\EA:\ + :nd=\EC:ho=\EH:ce=\EK:cd=\EJ:cl=\EE:xt:cm=\EY%+ %+ :\ + :so=\Ep:se=\Eq:al=\EL:dl=\EM: +zt|mac|macintosh|Macintosh with MacTerminal:\ + :al=20\E[L:dl=20\E[M:ip=7:dc=7\E[P:ic=9\E[@:xn:dN#30:tc=vt100: +zs|zen50|z50:zephyr:\ + :cm=\E=%+ %+ :cd=\EY:co#80:li#24:\ + :am:al=\EE:ce=\ET:dc=\EW:dl=\ER:ic=\EQ:im=:ei=:\ + :cl=\E+:bs:ma=^Hh^Ll^Jj^Kk:sg#1:se=\EGO:so=\EG4:\ + :kl=^H:kr=^L:ku=^K:kd=^J:kh=\036:up=^K:\ + :BS=^U:CL=^V:CR=^B:RK=^L:UK=^K:LK=^H:DK=^J:HM=\036: +zu|go140|graphon go-140:\ + :co#80:li#24:cl=10\E[;H\E[2J:bs:cm=\E[%i%2;%2H:nd=\E[C:up=\E[A:\ + :ce=\E[K:cd=10\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ + :is=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q:\ + :dl=\E[M:al=\E[L:dc=\E[P:im=\E[4h:ei=\E[4l:\ + :ks=\E[?1h\E=:ke=\E[?1l\E>:\ + :if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ + :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=\EM: +zv|go140w|graphon go-140 in 132 column mode:\ + :co#132:is=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q:\ + :tc=go140: +#From edm@nwnexus.WA.COM. Hacked up vt200 termcap to handle GO-225/VT220 +zH|go225|go-225|Graphon 225:\ + :im=\E[4h:ei=\E[4l:mi:dc=\E[P:al=\E[L:dl=\E[M:\ + :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:\ + :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\ + :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ + :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ + :rs=\E[!p\E[?7h\E[2;1;1#w:rf=/usr/lib/tabset/vt100:\ + :do=^J:co#80:li#25:le=^H:bs:am:ks=\E=:ke=\E>:\ + :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:kh=\E[H:\ + :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:vt#3:xn:\ + :sc=\E7:rc=\E8:ti=\E[2;0#w\E[1;25r:te=\E[!p\E[?7h\E[2;1;1#w: +zw|sanyo55|sanyo|sanyo mbc-55x pc compatible:\ + :co#80:li#25:am:cl=\E[H\E[J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ + :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m: +#From: Simson L. Garfinkel +zC|ST|atari st:\ + :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#25:nd=\EC:\ + :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:\ + :do=\EB:\ + :so=\Ep:se=\Eq:dl=\EM:al=\EL:am: +# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode +# From Paul M. Aoki, aoki@ucbvax.Berkeley.EDU +zD|uniterm|uniterm49|UniTerm VT200 emulator, 49 lines:\ + :li#49:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H:\ + :tc=vt200: +# YTERM standard version 1.0. (gts 9-25-84) +# Straight old ascii keyboard except function keys are Yale (e.g.,ASCII.KBD). +# Only 80 tab columns (else yterm 1.1 bug). No :xn: in 1.0. +# Cannot use termcap :sr=\EM: because vi will not work, too bad. +# vi string is given so that yterm is reset each vi startup. +Y0|yterm10|yterm 1.0 UCB ascii.kbd:\ + :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %+ :co#80:EP:ho=^Y:li#24:nd=^\:pt:\ + :rc=\E8:sc=\E7:so=\E[7m:se=\E[m:up=^_:us=\E[4m:ue=\E[m:\ + :is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 for \EHYTERM 1.\EH0 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\ + :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=h\012j k lH:\ + :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ + :vs=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 \EH \EH \EH \EH \EH \EH \EH \EH \EH\r: +# YTERM varient version 1.1. (gts 9-13-84) Version 1.1 has :xn:. +Y1|yterm11|yterm 1.1 UCB ascii.kbd:\ + :xn:is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY1 for \EHYTERM 1.\EH1 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\ + :tc=yterm10: +# YTERM 1.0 varient no autowrap or tabs +# X does not remember autowrap or tabs when T is deleted and restarted. +Y2|yterm10nat|yterm 1.0 UCB ascii.kbd no autowrap or tabs:\ + :am@:pt@:vs=^O\E[7i\E[m\E[?7l\E[?3g\rY2\r:\ + :is=^O\E[7i\E[m\E[?7l\E[?3g\rY2 for YTERM 1.0 with ASCII.KBD 9-20-84 no autowrap or tabs\n:\ + :tc=yterm10: +# KERMIT standard all versions. (gts 9-25-84) +# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. +K0|kermit|standard kermit:\ + :bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:ho=\EH:li#24:nd=\EC:up=\EA:\ + :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\ + :is=K0 Standard Kermit 9-25-84\n: +K1|kermitam|standard kermit plus am:\ + :am:is=K1 Standard Kermit plus Automatic Margins\n:tc=kermit: +# IBMPC Kermit 1.2. (gts 8-30-84) +# Bugs :cd:ce: do not work except at beginning of line! :cl: does not work, +# but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of line). +K2|pckermit|pckermit12|UCB IBMPC Kermit 1.2:\ + :am:li#25:cd@:ce@:cl=\EH\EJ:\ + :is=K2 UCB IBMPC Kermit 1.2 8-30-84\n:tc=kermit: +# IBMPC Kermit 1.20 (gts 12-19-84) +# Cannot use line 25, now acts funny like ansi special scrolling region. +# Initialization must escape from that region by cursor position to line 24. +# Cannot use character insert because 1.20 goes crazy if insert at col 80. +# Does not use am: because autowrap mode lost when kermit dropped and restarted. +K3|pckermit120|UCB IBMPC Kermit 1.20:\ + :al=\EL:am@:dc=\EN:dl=\EM:do=\EB:ei@:im@:li#24:pt:se=\Eq:so=\Ep:\ + :is=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20 12-19-84\n:\ + :vs=\EO\Eq\EEK3:tc=kermit: +# MS-DOS Kermit 2.27 for the IBMPC (UCB gts 3-17-85) +# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. +# Cannot use line 25, now acts funny like ansi special scrolling region. +# Initialization must escape from that region by cursor position to line 24. +# Does not use am: because autowrap mode lost when kermit dropped and restarted. +# Reverse video for standout like H19. +K4|msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC:\ + :al=\EL:am@:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:\ + :dc=\EN:dl=\EM:do=\EB:ei=\EO:im=\E@:\ + :ho=\EH:li#24:nd=\EC:up=\EA:pt:rc=\Ek:sc=\Ej:se=\Eq:so=\Ep:\ + :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\ + :is=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n:\ + :vs=\EO\Eq\EG\EwK4: +# MS-DOS Kermit 2.27 with automatic margins (UCB gts 3-17-85) +K5|msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins:\ + :am:\ + :is=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n:\ + :vs=\EO\Eq\EG\EvK5:tc=mskermit227: +# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC (UCB gts 3-17-85) +# Automatic margins now default. Use ansi set graphic rendition for standout, +# underline and ul codes (md,me,mr). Define function keys. +K6|msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC:\ + :am:kn#10:\ + :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ + :md=\E[1m:me=\E[m:mr=\E[7m:se=\E[m:so=\E[1m:ue=\E[m:us=\E[4m:\ + :is=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n:\ + :vs=\EO\Eq\EG\EvK6:tc=mskermit227: +# From earle@smeagol.UUCP 29 Oct 85 05:40:18 GMT +# MS-Kermit with Heath-19 emulation mode enabled +Kh|h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin):\ + :am@:ta@:pt@:xt:da:db:tc=h19-u: +# Amiga termcap by Kent Polk, kent@swrinde.nde.swri.edu (30 May 90) +# Added a few more entries, converted caret-type control sequence (^x) entries +# to '\0xx' entries since a couple of people mentioned loosing '^x' sequences. +# +# :as, :ae Support for alternate character sets. +# :ve=\E[\040p:vi=\E[\060\040p cursor visible/invisible. +# :xn: vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept) +# This one appears to fix a problem I always had with a line ending +# at 'width+1' (I think) followed by a blank line in vi. The blank +# line tended to disappear and reappear depending on how the screen +# was refreshed. Note that this is probably needed only if you use +# something like a Dnet Fterm with the window sized to some peculiar +# dimension larger than 80 columns. +# :k0=\E9~ map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;' +# :F1-FA removed F11 through F20. +AA|amiga|Amiga ANSI:\ + :co#80:li#24:am:bs:bw:\ + :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\ + :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:IC=\E[%d@:\ + :ae=\017:al=\E[L:as=\016:bl=\007:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\ + :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ho=\E[H:ic=\E[@:is=\E[20l:\ + :k1=\E0~:k2=\E1~:k3=\E2~:k4=\E3~:k5=\E4~:k6=\E5~:k7=\E6~:k8=\E7~:\ + :k9=\E8~:k0=\E9~:kn#10:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=\E[D:\ + :mb=\E[7;2m:md=\E[1m:me=\E[0m:mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:\ + :rs=\Ec:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T:ue=\E[0m:up=\E[A:us=\E[4m:\ + :vb=\007:ve=\E[\040p:vi=\E[\060\040p:xn: +# The pcplot IBM-PC terminal emulation program is really messed up. It is +# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly, +# doesn't support scrolling regions, ignores add line commands, and ignores +# delete line commands. Consequently, the resulting behavior looks like a +# crude adm3a-type terminal. +# Steve Jacobson 8/85 +pp|pcplot:\ + :cs@:sc@:rc@:xn@:tc=vt100: +# From Joel Rubin, jmrubin@coral, a preliminary TERMCAP for VIDTEX, +# a terminal program sold by Compuserve. Line and column numbers are +# computer-dependent (I have a Commodore '64); you should use the meta-B +# option to shut off clean-breaking of lines. No key codes included +# since some of them are programmable and most are machine-specific. +# Works on vi if you don't use clean-breaking. Very similar to the IBM 3101 +# termcap. Escape-D used for backspace because control-H is destructive +# backspace. There seem to be a few weirdnesses (especially at the beginning +# of a wrapped line), and the cursor does not, unfortunately, flash. +zQ|vid|vidtex|Compuserve vidtex program:\ + :am:bc=\ED:cl=^L:li#25:co#40:nd=\EC:up=\EA:cd=\EJ:ce=\EK:\ + :ho=\EH:cm=\EY%+\40%+\40:pt: +# Fortune from c160-3bp@Coral (Robert Nathanson) via tut Wed Oct 5, 1983 +zK|fos|fortune|Fortune system:\ + :is=^_..:li#25:co#80:am:bs:bw:cl=20^L:cd=3*^\Y:\ + :ic=5^\Q:dc=5^\W:dl=15^\R:al=15^\E:cm=^\C%+ %+ :ta=^Z:ho=10^^:do=3^J:\ + :up=3^K:bs=^H:kb=^H:kd=^Ay\r:kh=^A?\r:kl=^Aw\r:kr=^Az\r:ku=^Ax\r:\ + :nl=5^J:so=^\H`:se=^\I`:sg=0:us=^\HP:ue=^\IP:ug=0:ce=^\Z:rv=\EH:re=\EI:\ + :rg=0:GS=\Eo:GE=^O:GG=0:GV=-:GH=&:GU=%:GD=#:G1=(:G2= :G3=":G4=*:CF=\E]:\ + :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\ + :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:PU=^An\r:PD=^Ao\r:\ + :PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F: +# basis from Peter Harrison, Computer Graphics Lab, San Francisco +# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA +ba|basis|BASIS108 computer with terminal translation table active:\ + :do=5000^J:nl=5000*^J:\ + :cd=\EY:ce=\ET:cl=300\E*:ma=^K^P^R^L^L :\ + :kb=^H:kl=^H:ku=^K:kr=^L:kd=^J:so=\E(:se=\E):tc=adm3a: +# From Peter Harrison, Computer Graphics Lab, San Francisco +# ucbvax!ucsfmis!harrison .....uucp +# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA +# "These two work. If you don't have the inverse video chip for the +# Apple with videx then remove the so and se fields." +zO|DaleApple|Apple with videx videoterm 80 column board with inverse video:\ + :do=^J:am:le=^H:bs:cd=^K:ce=^]:cl=300^L:cm=^^%r%+ %+ :co#80:ho=^Y:\ + :kd=^J:kl=^H:kr=^U:kh=^Y:\ + :li#24:nd=^\:pt:so=^Z3:se=^Z2:up=^_:xn: +zJ|ibmaed|IBM Experimental display:\ + :al=\EN:am:bs:cd=\EJ:ce=\EI:cl=\EH\EK:cm=\EY%+\40%+\40:co#80:\ + :dc=\EQ:dl=\EO:do=\EB:ei=:ho=\EH:ic=\EP:im=:li#52:\ + :nd=\EC:ms:so=\E0:se=\E0:us=:ue=:up=\EA:\ + :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:eo:vb=\EG:pt: +# funny terminal that the TANDEM uses. +zA|653|t653x|Tandem 653x multipage terminal:\ + :li#24:co#80:ho=\EH:cm=\023%+ %+ :cl=\EI:cd=\EJ:ce=\EK:am:bs:\ + :if=/usr/share/tabset/tandem653:sb=\ES:sr=\ET:da:db:so=\E6$:se=\E6 :\ + :us=\E60:ue=\E6 :sg#1:ug#1:up=\EA:do=\012:le=\010:nd=\EC:\ + :hs:ts=\Eo:fs=\r:ds=\Eo\r:ws#64: +# From Paul Leondis, unllab@amber.berkeley.edu +zB|ifmr|Informer D304:\ + :am:bs:cd=\E/:ce=\EQ:cl=\EZ:cm=\EY%r%+ %+ :co#80:dc=\E\\:\ + :do=^J:im=:ei=:ic=\E[:li#24:nd=\EC:so=\EJ:se=\EK:up=\EA:\ + :sr=\En:ho=\EH: +# +# END OF TERMCAP +# ------------------------ diff --git a/usr/src/share/tmac/Makefile b/usr/src/share/tmac/Makefile new file mode 100644 index 0000000000..920d59c56c --- /dev/null +++ b/usr/src/share/tmac/Makefile @@ -0,0 +1,24 @@ +# @(#)Makefile 6.13 (Berkeley) 3/20/91 + +BINDIR= /usr/share +FILES= tmac.andoc tmac.doc.old +MSRCS= doc doc-ditroff doc-common doc-nroff doc-syms +LINKS= ${BINDIR}/tmac/tmac.andoc ${BINDIR}/tmac/tmac.an +NOOBJ= noobj + +# old macros not currently installed... +OFILES= tmac.an.v6compat tmac.an6n tmac.an6t tmac.a tmac.cp + +all clean cleandir depend lint tags: + +beforeinstall: + for i in ${MSRCS}; do \ + sed -f strip.sed < $$i > ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \ + chown ${BINOWN}.${BINGRP} ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \ + chmod 444 ${DESTDIR}${BINDIR}/tmac/tmac.$$i; \ + done + install -c -o ${BINOWN} -g ${BINOWN} -m 444 ${FILES} \ + ${DESTDIR}${BINDIR}/tmac + + +.include diff --git a/usr/src/share/tmac/README b/usr/src/share/tmac/README new file mode 100644 index 0000000000..8c16b9ec52 --- /dev/null +++ b/usr/src/share/tmac/README @@ -0,0 +1,177 @@ +.\" Copyright (c) 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)README 5.2 (Berkeley) 4/20/91 +.\" + +-mdoc stuff + doc-* files are unstripped tmac.doc-* files + +Site specific string and register names (for doc-{common,nroff,ditroff}) + +.\" tmac.doc-nroff +.\" +.\" Default fonts +.\" FONT DITROFF style TROFF Style NROFF Style +.\" Default Times Roman Times Roman Printer Dependent +.\" Default bold Times Bold Times Bold Printer Dependent +.\" Default italic Times Italic Times Italic Underline +.\" Const width lit Courier Times ? Printer Dependent +.\" Const width bold Courier Bold ? Printer Dependent +.\" Const width ital Courier Oblique ? Printer Dependent +.\" +.\" Default point size 10 (vs 12), Section Header point size 12 (vs 14) +.\" +.\" STRING CONSTANTS +.\" NS aD string (site) Address Style +.\" NS aR string (site) Argument Reference Style +.\" NS cM string (site) Interactive Comand Modifier (flag) +.\" NS eM string (site) Emphasis (in the English sense - usually italics) +.\" NS eR string (site) Errno Style +.\" NS eV string (site) Environment Variable Style +.\" NS fA string (site) Function Argument Style +.\" NS fL string (site) Command Line Flag Style +.\" NS fN string (site) Function Name Style +.\" NS Hs string (site) Header String Style +.\" NS iC string (site) Interactive Command Style +.\" NS lI string (site) Literal Style +.\" NS lp string (site) Left Function Parenthesis Style +.\" NS rp string (site) Right Function Parenthesis Style +.\" NS lP string (site) Left Parenthesis Style +.\" NS rP string (site) Right Parenthesis Style +.\" NS lB string (site) Bracket Open Style +.\" NS rB string (site) Bracket Close Style +.\" NS mL string (site) Diagnostic Message List Style +.\" NS nM string (site) Name (subject of manpage) Style +.\" NS nO string (site) normal font (default) +.\" NS lO string (site) Options Open Bracket Style +.\" NS rO string (site) Options Close Bracket Style +.\" NS pA string (site) Pathname Style +.\" NS Pu string (site) Accepted punctuation string for -mdoc syntax +.\" NS rA string (site) Reference Author Style +.\" NS rT string (site) Reference Title Style +.\" NS sH string (site) Section Header Style +.\" NS sY string (site) Symbolic Emphasis (boldface) +.\" NS sX string (site) Section Header Cross References +.\" NS tN string (site) Trade Name Style +.\" NS vA string (site) Generic Variable Style +.\" NS Vs string (site) Volume Title Style +.\" NS xR string (site) Cross Reference STyle (man page only) +.\" MISCELLANEOUS +.\" NS lS string (site) list-label-sep (list-types hang, number, bullet, diag) +.\" NS iV string soft space (can be split on a newline or padded in adjust mode) +.\" NS sV string manipulable space +.\" NS hV string hard space (cannot be split on newline or padded) +.\" NS tV string tab space (for column function) +.\" NS sI register (site) subheader indent +.\" NS tI register (site) text indent +.\" NS cR register nroff crt flag (1 for crt/online, 0 for printer) +.\" NS Pp register (site) paragraph vertical spacing +.\" NS dI register flag (Bd) +.\" INDENT WIDTHS (used for tag widths, and argument tests) +.\" NS Ad register (site) Width Needed for Address Tag (indented amount) +.\" NS Ac register (site) Angle Quote Close Value +.\" NS Ao register (site) Angle Quote Open Width +.\" NS Aq register (site) Angle Quote Width +.\" NS Bc register (site) Bracket Quote Close Value +.\" NS Bl register (site) Bullet List Macro Value +.\" NS Bo register (site) Bracket Quote Open Width +.\" NS Bq register (site) Bracket Quote Width +.\" NS Ar register (site) Width Needed for Argument +.\" NS Cm register (site) Width neeeded for Interactive Command Modifier +.\" NS Co register (site) Width Needed for Column offset +.\" NS Cx register (site) Width Needed for Complex Expressions +.\" NS Ds register (site) Width Needed for Display (right and left margins) +.\" NS Dc register (site) Double Quote Close Value +.\" NS Do register (site) Double Quote Open Width +.\" NS Dq register (site) Double Quote Width +.\" NS Dv register (site) Defined (#define) variable (markup) +.\" NS tI register (site) tI is dependent on Ds and used by .Dp +.\" NS Ec register (site) Enclose Quote Close Value +.\" NS El register (site) Enumerated List Macro Value +.\" NS Eo register (site) Enclose Quote Open Width +.\" NS Em register (site) Width Needed for Display +.\" NS Eq register (site) Enclose Quote Width +.\" NS Er register (site) Width Needed for Errno Types +.\" NS Ev register (site) Width Needed for Environment Variables +.\" NS Ex register (site) Width Needed for Example Indent +.\" NS Fa register (site) Width Needed for Function Argument +.\" NS Fl register (site) Width Needed for Flag +.\" NS Fc register (site) Funtion Quote Close Value +.\" NS Fn register (site) Width Needed for Function +.\" NS Fo register (site) Funtion Quote Open Width +.\" NS Hl register (site) Hypehnated List Macro Value (sub bullet list) +.\" NS I1, I2, I3 register (site) Indent values +.\" NS Ic register (site) Width neeeded for Interactive Command Name +.\" NS Li register (site) Width Needed for Literal Constant +.\" NS Ms register (site) Width Needed for Math Symbol ? not sure if needed +.\" NS Nm register (site) Width Needed for Name +.\" NS No register (site) Width Needed for Name +.\" NS Ns register (site) No Space Macro Value +.\" NS Oo register (site) Width Needed for Option Open +.\" NS Oc register (site) Width Needed for Option Close +.\" NS Op register (site) Width Needed for Option (one line) +.\" NS Pa register (site) Width Needed for Pathname +.\" NS Pf register (site) Prefix Macro Value +.\" NS Pq register (site) Parenthesis Quote Width +.\" NS Ql register (site) Width Needed for Quoted Literal +.\" NS Sc register (site) Single Quote Close Value +.\" NS So register (site) Single Quote Open Width +.\" NS Sq register (site) Single Quote Width +.\" NS Sy register (site) Width Needed for Symbols, Modes or Masks +.\" NS Sx register (site) Width Needed for Section Header Cross References +.\" NS Ra register (site) Reference Author +.\" NS Rj register (site) Reference Journal Name +.\" NS Rn register (site) Reference Issue Number +.\" NS Ro register (site) Reference Optional Information +.\" NS Rr register (site) Reference Technical Report Name +.\" NS Rt register (site) Reference Book or Article title Title +.\" NS Rv register (site) Reference Volume +.\" NS Ta register (site) Tab macro register +.\" NS Tn register (site) Trade Name Macro Value +.\" NS Tv register (site) Tab Macro Value +.\" NS Tx register (site) Width needed for default or unknown text width +.\" NS Va register (site) Width Needed for Generic Variable +.\" NS Xc register (site) Extended Argument List Close Value +.\" NS Xo register (site) Extended Argument List Open Width +.\" NS Xr register (site) Width Needed for Cross Reference. +.\" .nr %A 1 +.\" .nr %J 1 +.\" .nr %N 1 +.\" .nr %O 1 +.\" .nr %R 1 +.\" .nr %T 1 +.\" .nr %V 1 +.\" PAGE LAYOUT +.\" NS pL macro - page layout +.\" NS Hm register header margin +.\" NS Fm register footer margin +.\" NS vV register vertical distance (from Section headers/Lists/Subsections) diff --git a/usr/src/share/tmac/doc b/usr/src/share/tmac/doc new file mode 100644 index 0000000000..a1b2114371 --- /dev/null +++ b/usr/src/share/tmac/doc @@ -0,0 +1,3415 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc 5.8 (Berkeley) 8/5/91 +.\" +.\" .mdoc-parse - attempt to parse troff request arguments +.\" %beginstrip% +.if \n(.g \{\ +.cp 0 +.ftr C CR +.\} +.if t \{\ +. so /usr/share/tmac/tmac.doc-ditroff +.\} +.if n \{\ +. so /usr/share/tmac/tmac.doc-nroff +.\} +.so /usr/share/tmac/tmac.doc-common +.so /usr/share/tmac/tmac.doc-syms +.\" NS Db macro - start/stop DEBUG MODE +.\" NS Db register DEBUG MODE +.\" NS iN register DEBUG MODE (inline if 1, to stderr if 0 (default)) +.nr Db 0 +.de Db +.ie \\n(.$==0 \{\ +. ie \\n(Db==0 \{\ +.tm DEBUGGING ON +. nr Db 1 +. \} +. el \{\ +.tm DEBUGGING OFF +. nr Db 0 +. \} +.\} +.el \{\ +. if "\\$1"on" \{\ +.tm DEBUGGING ON +. nr Db 1 +. \} +. if "\\$1"off" \{\ +.tm DEBUGGING OFF +. nr Db 0 +. \} +.\} +.. +.\" NS aV macro - parse argument vector (recursive) (.aV arg ... ) +.\" NS fV macro - parse argument vector (recursive) (.fV) +.\" NS aC register argument counter (aV/fV) +.\" NS fV register argument counter (must set to \\n(.$ prior to reuqest) (fV) +.\" NS A[0-9] argument vector (aV/fV) +.\" NS C[0-9] reg. arg type(1=macro, 2=arg, 3=punct-suf, 4=punct-pre) (aV/fV) +.\" NS S[0-9] space vector (sV) +.\" NS aP register argument pointer (aV) +.\" NS yU local string used for debugging +.\" NS iI local register (indent for inline debug mode) +.\" NS mN name of calling request (set in each user requestable macro) +.de aV +.nr aC \\n(aC+1 +.ie "\\$1"|" \{\ +. if "\\*(mN"Op" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Ar" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Fl" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"Cm" .ds A\\n(aC \fR\\$1\fP +. if "\\*(mN"It" .ds A\\n(aC \fR\\$1\fP +.\} +.el .ds A\\n(aC \\$1 +.aU \\n(aC +.nr C\\n(aC \\n(aT +.s\\n(aT +.if \\n(Db \{\ +. if \\n(aT==1 .ds yU Executable +. if \\n(aT==2 .ds yU String +. if \\n(aT==3 .ds yU Closing Punctuation or suffix +. if \\n(aT==4 .ds yU Opening Punctuation or prefix +. if \\n(iN==1 \{\ +. br +. nr iI \\n(.iu +. in -\\n(iIu +. if \\n(aC==1 \{\ +\&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c +. \} +\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW +\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU +. \} +. if \\n(iN==0 \{\ +. if \\n(aC==1 \{\ +. tm DEBUG(argv) MACRO: `.\\*(mN' Line #: \\n(.c +. \} +. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW +. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU +. \} +.\} +.ie \\n(.$==1 \{\ +. nr aP 0 +. ie \\n(dZ==1 \{\ +. if \\n(oM>1 .as b1 \\*(S0 +. \} +. el \{\ +. if \\n(oM>0 \{\ +. if \\n(fC==0 .as b1 \\*(S0 +. \} +. \} +. ds S0 \\*(S\\n(aC +. if \\n(Db \{\ +. if \\n(iN==1 \{\ +\&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. br +. in \\n(iIu +. \} +. if \\n(iN==0 \{\ +.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. \} +. \} +.\} +.el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de fV +.nr aC \\n(aC+1 +.if "\\*(A\\n(aC"|" \{\ +. if "\\*(mN"Op" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"Ar" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"Fl" .ds A\\n(aC \fR\&\\*(A\\n(aC\fP +. if "\\*(mN"Cm" .ds A\\n(aC \fR\\*(A\\n(aC\fP +. if "\\*(mN"It" .ds A\\n(aC \fR\\*(A\\n(aC\fP +.\} +.aU \\n(aC +.nr C\\n(aC \\n(aT +.s\\n(aT +.if \\n(Db \{\ +. if \\n(aT==1 .ds yU Executable +. if \\n(aT==2 .ds yU String +. if \\n(aT==3 .ds yU Closing Punctuation or suffix +. if \\n(aT==4 .ds yU Opening Punctuation or prefix +. if \\n(iN==1 \{\ +. br +. nr iI \\n(.iu +. in -\\n(iIu +. if \\n(aC==1 \{\ +\&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c +. \} +\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW +\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU +. \} +. if \\n(iN==0 \{\ +. if \\n(aC==1 \{\ +. tm DEBUG(fargv) MACRO: `.\\*(mN' Line #: \\n(.c +. \} +. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW +. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU +. \} +.\} +.ie \\n(fV==1 \{\ +. nr aP 0 +. ie \\n(dZ==1 \{\ +. if \\n(oM>1 .as b1 \\*(S0 +. \} +. el \{\ +. if \\n(oM>0 \{\ +. if \\n(fC==0 .as b1 \\*(S0 +. \} +. \} +. ds S0 \\*(S\\n(aC +. nr fV 0 +. if \\n(Db \{\ +. ie \\n(iN \{\ +\&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. br +. in \\n(iIu +. \} +. el \{\ +.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +. \} +. \} +.\} +.el \{\ +. nr fV \\n(fV-1 +. fV +.\} +.. +.\" NS aX macro - stuff saved strings into `b1' (used by -diag list) +.de aX +.nr aP \\n(aP+1 +.as b1 \&\\*(A\\n(aP +.ie \\n(fV==1 \{\ +. nr aP 0 +. nr fV 0 +.\} +.el \{\ +. as b1 \&\\*(sV +. nr fV \\n(fV-1 +. aX +.\} +.. +.\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only) +.de aI +.ie \\n(aC<9 \{\ +. nr aC \\n(aC+1 +. ds A\\n(aC \\$1 +. nr C\\n(aC \\$2 +. s\\$2 +. ds xV S\\n(aC +.\} +.el \{\ +. tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c) +. tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9 +.\} +.. +.\" +.\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY) +.de aZ +.pB +.aY +.. +.\" NS aY macro - clean up arg vector +.de aY +.rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 +.rm A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 +.rm S1 S2 S3 S4 S5 S6 S7 S8 S9 +.nr aC 0 +.nr aP 0 +.. +.\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert) +.de pB +.ie \\n(dZ==1 \{\ +. if \\n(oM==1 \{\&\\*(b1 +. rm S0 +. ds b1 +. \} +. if \\n(oM==0 \{\ +. x2 +. \} +.\} +.el \{\ +. ie \\n(oM==0 \{\&\\*(b1 +. rm S0 +. ds b1 +. \} +. el \{\ +. if ((\\n(sM==1)&(\\n(tP==0)) \{\ +. x1 +. \} +. \} +.\} +.hy +.. +.\" NS x1 macro - save buffer and divert if tP flag set +.\" NS eB diversion string +.\" NS b2 string save of buffer +.\" NS lK register count of lines read from input file +.de x1 +.nr dZ \\n(dZ+1 +.ds b2 \\*(b1 +.ds b1 +.nr lK \\n(.c +.ev 2 +.fi +.di eB +.. +.\" +.\" NS x2 macro - end diversion and print +.\" NS b0 string local temporary +.de x2 +.br +.di +.ev +.ie (\\n(.c-\\n(lK>1) \{\ +. ds b0 \&\\*(eB\\ +. ds b1 \\*(b2\\*(b0\\*(b1 +.\} +.el .ds b1 \\*(b2\\*(b1 +\&\\*(b1 +.rm eB b2 b0 b1 +.nr dZ \\n(dZ-1 +.. +.\" NS Fl macro - flags (appends - and prints flags) +.\" NS cF register save current font +.\" NS cZ register save current font size +.de Fl +.as b1 \&\\*(fL +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 \&\|\-\|\fP\s0 +. pB +. \} +. el \{\ +. ds mN Fl +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&\|\-\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&\|\-\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(C\\n(aP==3 \{\ +. as b1 \&\|\-\| +. \} +. fR +. \} +. \} +.\} +.. +.\" +.\" NS fR macro - Fl flag recursion routine (special handling) +.\" NS jM local register +.\" NS jN local register +.\" +.de fR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +. as b1 \&\fP\s0 +. \\*(A\\n(aP +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 \{\ +. ie !"\\*(A\\n(aP"\\*(Ba" \{\ +. ie !"\\*(A\\n(aP"\fR|\fP" \{\ +. ie "\\*(A\\n(aP"-" .as b1 \&\|\-\^\-\| +. el .as b1 \&\|\-\\*(A\\n(aP +. \} +. el .as b1 \&\\*(A\\n(aP +. \} +. el .as b1 \&\\*(A\\n(aP +. \} +. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +. if \\n(jM==4 .as b1 \&\|\- +. as b1 \&\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie ((\\n(C\\n(aP==3)&(\\n(C\\n(jN==4)) .as b1 \&\|\- +. el .as b1 \&\\*(S\\n(jN +. fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.rr jM jN +.. +.\" +.\" NS nR macro - general name recursion routine +.\" NS jM local register +.\" NS jN local register +.de nR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +. as b1 \&\f\\n(cF\s\\n(cZ +. \\*(A\\n(aP +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP +. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +. as b1 \&\f\\n(cF\s\\n(cZ +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(S\\n(jN +. nR +. \} +.\} +.rr jM jN +.. +.\" NS Ar macro - command line `argument' macro +.\" +.de Ar +.as b1 \\*(aR +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 file\ ...\fP\s0 +. pB +. \} +. el \{\ +. ds mN Ar +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&file\ ...\fP\s0 +. aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&file\ ...\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(C\\n(aP==3 \{\ +. as b1 \&file\ ... +. \} +. nR +. \} +. \} +.\} +.. +.\" NS Ad macro - Addresses +.de Ad +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ad +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(aD +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable) +.\" needs work - not very translatable +.de Cd +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c) +. el \{\ +. ds mN Cd +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.br +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(nM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(nS \{\ +. if "\\*(mN"Cd" \{\ +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 .nr iS \\n(Dsu +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +. \} +. nR +. in -\\n(iSu +. \} +. el .nR +.\} +.. +.\" NS Cm macro - Interactive command modifier (flag) +.de Cm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Cm +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(cM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Dv macro - define variable +.de Dv +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Dv +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Em macro - Emphasis +.de Em +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .Em text ... \\*(Pu (#\\n(.c) +. \} +. el \{\ +. ds mN Em +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eM +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Er macro - Errnotype +.de Er +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Er +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ev macro - Environment variable +.de Ev +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ev +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(eV +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Fd macro - function declaration - not callable (& no err check) +.\" NS fD register subroutine test (in synopsis only) +.\" NS fY register subroutine count (in synopsis only) (fortran only) +.\" NS fZ register also subroutine count (in synopsis only) +.de Fd +.ds mN Fd +.if \\n(nS>0 \{\ +.\" if a variable type was the last thing given, want vertical space +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +.\" if a subroutine was the last thing given, want vertical space +. if \\n(fZ>0 \{\ +. ie \\n(fD==0 \{\ +. Pp +. rs +. \} +. el .br +. \} +. nr fD \\n(fD+1 +.\} +.nr cF \\n(.f +.nr cZ \\n(.s +\&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.br +.ft \\n(cF +.fs \\n(cZ +.. +.\" NS Fr macro - function return value - not callable (at the moment) +.de Fr +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fr +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(aR +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ic macro - Interactive command +.de Ic +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ic +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(iC +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Li macro - literals +.de Li +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Li +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(lI +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Or macro - Pipe symbol (OR) +.de Or +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Or +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(iC +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Ms macro - Math symbol +.de Ms +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Ms +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(sY +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Nm macro - Name of command or page topic +.\" NS n1 string - save first invocation of .Nm +.\" NS iS register - indent second command line in a synopsis +.de Nm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c) +. el \&\\*(nM\\*(n1\fP\s0 +. \} +. el \{\ +. ds mN Nm +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>0 \{\ +. ie \\n(aC==\\n(aP \{\ +. as b1 \&\\*(nM\\*(n1\fP\s0 +. aZ +. \} +. el \{\ +. as b1 \\*(nM +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. as b1 \&\\*(n1\fP\s0 +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. if \\n(nS \{\ +. if "\\*(mN"Nm" \{\ +. rs +. in -\\n(iSu +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. sw \\$1 +. nr iS ((\\n(sWu+1)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +. \} +. \} +. if "\\*(n1"" .ds n1 \\*(A\\n(aP +. nR +. \} +. \} +.\} +.. +.\" NS Pa macro - Pathname +.de Pa +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \&\\*(pA~\fP\s0 +. el \{\ +. ds mN Pa +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(pA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Sy macro - Symbolics +.de Sy +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Sy +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(sY +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Tn macro - Trade Name Macro +.de Tn +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Tn +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(tN\\*(tF +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS nN macro - Trade Name Macro for inside of reference +.de nN +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Tn +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(tN +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS Va macro - variable name macro +.de Va +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Va +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. as b1 \\*(vA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" +.\" NS No macro - Normal text macro (default text style if mess up) +.de No +.as b1 \\*(nO +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c) +. el \{\ +. ds mN No +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. \\*(A\\n(aP +. \} +. el \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +. \} +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Op macro - Option Expression +.de Op +.if \\n(aC==0 \{\ +. ds mN Op +.\} +.\" .ds qL \&\\*(lO +.\" .ds qR \&\\*(rO +.ds qL \&\\*(lB +.ds qR \&\\*(rB +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.. +.\" NS Aq macro - Enclose string in angle brackets +.de Aq +.if \\n(aC==0 .ds mN Aq +.ds qL \&< +.ds qR \&> +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bq macro - Enclose string in square brackets +.de Bq +.if \\n(aC==0 .ds mN Bq +.ds qL \&\\*(lB +.ds qR \&\\*(rB +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Dq macro - Enclose string in double quotes +.de Dq +.if \\n(aC==0 .ds mN Dq +.ds qL \&\\*(Lq +.ds qR \&\\*(Rq +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Eq macro - Enclose string in double quotes +.de Eq +.if \\n(aC==0 .ds mN Eq +.ds qL \\$1 +.ds qR \\$2 +.En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Pq macro - Enclose string in parenthesis +.de Pq +.if \\n(aC==0 .ds mN Pq +.ds qL \&\\*(lP +.ds qR \&\\*(rP +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ql macro - Quoted literal is in file mdoc-[dit|n|g]roff (too large +.\" an if-else to carry along recursively for `if n ...') +.\" +.\" NS Sq macro - Enclose string in single quotes +.de Qq +.if \\n(aC==0 .ds mN Qq +.ds qL \&\\*q +.ds qR \&\\*q +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Sq macro - Enclose string in single quotes +.de Sq +.if \\n(aC==0 .ds mN Sq +.ds qL \&\\*(sL +.ds qR \&\\*(sR +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Es macro - Set up strings for .En call +.de Es +.if \\n(aC==0 \{\ +. ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el \{\ +. ds qL \\$1 +. ds qR \\$2 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ds qL \\*(A\\n(aP +. nr aP \\n(aP+1 +. ds qR \\*(A\\n(aP +. ie \\n(aC>\\n(aP .c\\n(C\\n(aP +. el .aZ +.\} +.. +.\" .tm En beg arg(A[\\n(aP])==\\*(A\\n(aP; +.\" .tm En oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +.\" NS En macro - Enclose string with given args (eg [ and ] etc) +.\" NS qL string variable set by calling macro +.\" NS qR string variable set by calling macro +.\" NS aJ register (for vR) +.de En +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. as b1 \&\\*(qL\\*(qR +. pB +. \} +. el \{\ +.\". as mN (En) +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. as b1 \&\\*(qL +. \} +.\} +.el \{\ +. as b1 \&\\*(qL +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 \{\ +. as b1 \&\\*(qR +. aZ +. \} +. el \{\ +. ie \\n(C\\n(aC==3 \{\ +. nr aJ \\n(aC-1 +. vR +. nr aJ \\n(aJ+1 +. ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ +. nr aJ 0 +. \} +. el .aI \&\\*(qR 3 +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==1 .\\*(A\\n(aP +. if \\n(C\\n(aP>1 \{\ +. nr aP \\n(aP-1 +. No +. \} +. \} +.\} +.. +.\" NS vR macro - vector routine (for En, trace backwards past trail punct) +.de vR +.if \\n(C\\n(aJ==3 \{\ +. nr aJ \\n(aJ-1 +. vR +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Ao macro - Angle open +.de Ao +.if \\n(aC==0 .ds mN Ao +.ds qL \&< +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ac macro - Angle close +.de Ac +.if \\n(aC==0 .ds mN Ac +.ds qR \&> +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bo macro - Bracket open +.de Bo +.if \\n(aC==0 .ds mN Bo +.ds qL \&[ +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Bc macro - Bracket close +.de Bc +.if \\n(aC==0 .ds mN Bc +.ds qR \&] +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Do macro - Double Quote open +.de Do +.if \\n(aC==0 .ds mN Do +.ds qL \&\\*(Lq +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Dc macro - Double Quote close +.de Dc +.if \\n(aC==0 .ds mN Dc +.ds qR \&\\*(Rq +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Eo macro - Enclose open +.de Eo +.if \\n(aC==0 .ds mN Eo +.ds qL \\$1 +.eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Ec macro - Enclose close +.de Ec +.if \\n(aC==0 .ds mN Ec +.ds qR \\$1 +.eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Oo macro - Option open +.de Oo +.if \\n(aC==0 .ds mN Oo +.ds qL \&[ +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Oc macro - Option close +.de Oc +.if \\n(aC==0 .ds mN Oc +.ds qR \&] +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Po macro - Parenthesis open +.de Po +.if \\n(aC==0 .ds mN Po +.ds qL \&( +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Pc macro - Parenthesis close +.de Pc +.if \\n(aC==0 .ds mN Pc +.ds qR \&) +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Qo macro - Straight Double Quote open +.de Qo +.if \\n(aC==0 .ds mN Qo +.ds qL \&\\*q +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Qc macro - Straight Double Quote close +.de Qc +.if \\n(aC==0 .ds mN Qc +.ds qR \&\\*q +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS So macro - Single Quote open +.de So +.if \\n(aC==0 .ds mN So +.ds qL \&\\*(sL +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Sc macro - Single Quote close +.de Sc +.if \\n(aC==0 .ds mN Sc +.ds qR \&\\*(sR +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Xo macro - Extend open (continue) +.de Xo +.if \\n(aC==0 .ds mN Xo +.\" .nr mN 1 +.ds qL +.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Xe macro - Extend close (end) +.de Xc +.\" .nr mN 0 +.if \\n(aC==0 .ds mN Xc +.ds qR +.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS eO macro - enclose string open +.\" NS oM register (extension possible) +.de eO +.nr oM \\n(oM+1 +.\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ; +.ie \\n(aC==0 \{\ +. ie \\n(.$>0 \{\ +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. as b1 \\*(qL +. \} +. el \{\ +. as b1 \\*(qL +. if (\\n(dZ==0)&(\\n(sM==1) \{\ +. nr dZ \\n(dZ+1 +. ds b2 \\*(b1 +. ds b1 +. nr lK \\n(.c +. ev 2 +. fi +. di eB +. \} +. \} +.\} +.el \{\ +. as b1 \\*(qL +.\} +.ie \\n(aC>0 \{\ +. if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .\\*(A\\n(aP +. el \{\ +. nr aP \\n(aP-1 +. No +. \} +. \} +. if \\n(aC==\\n(aP \{\ +. if \\n(tP==1 \{\ +.\" .tm SETTING Xt!!! +. nr Xt 1 +. \} +.\".\" . ds S0 +.\"CHANGED ds S0 \\*(iV +. aY +. \} +.\} +.el \{\ +. if \\n(oM>1 .as b1 \\*(sV +.\} +.. +.\" +.\" NS eC macro - enclose string close +.\" NS aa local register +.de eC +.nr oM \\n(oM-1 +.\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ; +.as b1 \\*(qR +.if \\n(aC==0 \{\ +. ie \\n(.$>0 \{\ +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +. el \{\ +. ie "\\*(xB"" \{\ +. pB +. \} +. el \{\ +. pB +.\\*(L\\n(lC +. nr Xt 0 +. ds xB +. \} +. \} +.\} +.if \\n(aC>0 \{\ +. ie \\n(aC==\\n(aP \{\ +. ie \\n(oM==0 \{\ +. aZ +. \} +. el .aY +. \} +. el \{\ +. nr aa \\n(aP+1 +. if \\n(C\\n(aa==2 .as b1 \\*(S\\n(aC +.\" tm CURRENT arg (aP==\\*(A\\n(aP and ap+1==\\*(A\\n(aa) tP==\\n(tP Xt==\\n(Xt +. rr aa +. if \\n(tP>0 \{\ +.\" tm UNSETTING Xt==\\n(Xt!!!! +. if \\n(Xt>0 .nr Xt \\n(Xt-1 +.\" tm NOW Xt==\\n(Xt!!!! +. \} +. No +. \} +.\} +.. +.\"------------------------------------------------------------------------ +.\" NS Pf macro - Prefix (calls .pF) +.de Pf +.if \\n(aC==0 .ds mN Pf +.ds qL \&\\$1 +.pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS pF macro - Prefix (for prefixing open quotes, brackets etc) +.de pF +.ie \\n(aC==0 \{\ +. as b1 \&\\*(qL +. ie \\n(.$<2 \{\ +. tm Warning: Missing arguments - prefix .Pf) +. pB +. \} +. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.el \{\ +. ie (\\n(aC-\\n(aP)>1 \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(A\\n(aP +. \} +. el .tm Warning: .Pf: trailing prefix (#\\n(.c) +.\} +.if \\n(aC>0 \{\ +. ie (\\n(aC-\\n(aP)==0 .aZ +. el \{\ +. nr aP \\n(aP+1 +. c\\n(C\\n(aP +. \} +.\} +.. +.\" NS Ns macro - remove space (space remove done by .aV or .fV) +.de Ns +.if \\n(aC==0 \{\ +. ds mN Ns +. ie \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el .tm Usage: .Ns must be called with arguments (#\\n(.c) +.\} +.No +.. +.de Ap +.if \\n(aC==0 \{\ +. ds mN Ap +. tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c) +.\} +.as b1 \&' +.No +.. +.\" NS Hv macro - Hard (unpaddable) Space vector +.\" NS iV string inter-vector space +.\" NS sV string inter-argument space +.de Hv +.ds iV \\*(sV +.ds sV \\*(hV +.. +.\" NS Sv macro - Soft Space vector (troff limitation) +.de Sv +.ds sV \\*(iV +.. +.\" NS Tv macro - Tab Space vector +.de Tv +.ds sV \\*(tV +.. +.\" NS Sm macro - Space mode +.\" NS sM register - default is one (space mode on) +.nr sM 1 +.de Sm +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c) +. el \{\ +. ds mN Sm +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>0 \{\ +. nr aP \\n(aP+1 +. if "\\*(A\\n(aP"on" \{\ +. ds sV \\*(iV +. nr sM 1 +. \} +. if "\\*(A\\n(aP"off" \{\ +. ds sV +. rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 +. nr sM 0 +. \} +. ie \\n(aC>\\n(aP \{\ +. No +. \} +. el .aY +.\} +.. +.\"------------------------------------------------------------------------ +.\" Size and Argument type macros +.\" NS aT macro - argument type +.\" NS aU macro - argument type (same as .aT but uses A[1-9] strings +.\" NS aT register argument type +.if \n(.g \{\ +.de aT +.nr aT 0 +.ie \\n(sW>2:(\A'\\$1'==0) \{\ +. nr aT 2 +.\} +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\$1>2 \{\ +. nr aT \\n(z\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie \\n(\\$1 \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.de aU +.nr aT 0 +.aW \\$1 +.ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2 +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\*(A\\$1>2 \{\ +. nr aT \\n(z\\*(A\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie (\\n(\\*(A\\$1) \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.\} +.if !\n(.g \{\ +.de aT +.nr aT 0 +.ie \\n(sW>2 \{\ +. nr aT 2 +.\} +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\$1>2 \{\ +. nr aT \\n(z\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie \\n(\\$1 \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.de aU +.nr aT 0 +.aW \\$1 +.ie \\n(sW>2 .nr aT 2 +.el \{\ +. if \\n(sW==1 \{\ +. ie \\n(z\\*(A\\$1>2 \{\ +. nr aT \\n(z\\*(A\\$1 +. \} +. el .nr aT 2 +. \} +. if \\n(sW==2 \{\ +. ie (\\n(\\*(A\\$1) \{\ +. nr aT 1 +. \} +. el .nr aT 2 +. \} +.\} +.. +.\} +.\" NS s1 macro - set spacing for class type 1 +.\" NS s2 macro - set spacing for class type 2 +.\" NS s3 macro - set spacing for class type 3 +.\" NS s1 macro - set spacing for class type 1 +.\" NS s2 macro - set spacing for class type 2 +.\" NS s3 macro - set spacing for class type 3 +.\" NS s4 macro - set spacing for class type 4 +.\" NS S[0-9] string spacing +.\" NS xX local register +.\" NS aa local register +.de s0 +.tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c) +.. +.de s1 +.if \\n(\\*(A\\n(aC==3 \{\ +. nr xX \\n(aC-1 +. rm S\\n(xX +. ds S\\n(aC \\*(sV +.\} +.if \\n(\\*(A\\n(aC==2 \{\ +. nr xX \\n(aC-1 +.\" this kludge can probably go away, but need to double check first +. ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV +. el .rm S\\n(xX +.\} +.. +.de s2 +.ds S\\n(aC \\*(sV +.. +.de s3 +.if \\n(aC>1 \{\ +. nr xX \\n(aC-1 +. rm S\\n(xX +.\} +.ds S\\n(aC \\*(sV +.. +.de s4 +.nr aa 0 +.. +.\" Class switches (on current argument aP) +.\" NS c0 macro - catch errors (non-existent class type 0) +.\" NS c1 macro - call request if type 1 +.\" NS c2 macro - call .No if type 2 +.\" NS c3 macro - call .No if type 3 +.\" NS c4 macro - call .No if type 4 +.de c0 +.tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c) +.. +.de c1 +.\\*(A\\n(aP +.. +.de c2 +.nr aP \\n(aP-1 +.No +.. +.de c3 +.nr aP \\n(aP-1 +.No +.. +.de c4 +.nr aP \\n(aP-1 +.No +.. +.\" NS y1 macro - ignore if class 1 +.\" NS y2 macro - ignore if class 2 +.\" NS y3 macro - append if type 3 +.\" NS y4 macro - append if type 4 +.de y1 +.nr aa 1 +.. +.de y2 +.nr aa 1 +.. +.de y3 +.as b1 \\*(A\\n(aP +.nr aP \\n(aP+1 +.n\\C\\n(aP +.. +.de y4 +.as b1 \\*(A\\n(aP +.nr aP \\n(aP+1 +.n\\C\\n(aP +.. +.\"-------------------------------------------------------------------------- +.\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX) +.\" Ns Ef macro - End Font Mode +.de Bf +.ds mN Bf +.ie \\n(.$>0 \{\ +. nr bF \\n(.f +. nr bZ \\n(.s +. if "\\$1"Em" \&\\*(eM\c +. if "\\$1"Li" \&\\*(lI\c +. if "\\$1"Sy" \&\\*(sY\c +. if "\\$1"-emphasis" \&\\*(eM\c +. if "\\$1"-literal" \&\\*(lI\c +. if "\\$1"-symbolic" \&\\*(sY\c +.\} +.el .tm Usage .Bf [Em | emphasis | Li | literal | Sy | symbolic] (#\\n(.c) +.. +.de Ef +.ds mN Ef +.ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c) +.el \&\f\\n(bF\s\\n(bZ +.. +.\" Ns Bk macro - Begin Keep +.\" Ns Ek macro - End Keep +.\" Ns kS string - keep type +.de Bk +.ds mN Bk +.ie \\n(.$==0 \{\ +.tm Usage: .Bk [-lines | -words] (#\\n(.c) +.\} +.el \{\ +. if !"\\*(kS"" .tm .Bk: nesting keeps not implemented yet. (#\\n(.c) +. if "\\$1"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c) +. if "\\$1"-words" .Hv +. ds kS \\$1 +.\} +.. +.de Ek +.ds mN Ek +.ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c) +.el \{\ +. if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c) +. if "\\*(kS"-words" .Sv +. rm kS +.\} +.. +.\" NS Bd macro - Begin Display display-type [offset string] +.\" NS Ed macro - end Display +.\" NS O[0-9] registers - stack of indent +.\" NS d[0-9] registers - display-type stack +.de Bd +.ds mN Bd +.ie \\n(.$==0 \{\ +.tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c) +.\} +.el \{\ +. ds aa +. nr bV 0 +. nr iD 0 +. nr dP \\n(dP+1 +. if "\\$1"-literal" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dL +. nr cF \\n(.f +. nr cZ \\n(.s +. ie t \{\&\\*(lI +' ta 9n 18n 27n 36n 45n 54n 63n 72n +. \} +. el \{\ +' ta 8n 16n 24n 32n 40n 48n 56n 64n 72n +. \} +. nf +. \} +. if "\\$1"-filled" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dF +. br +. \} +. if "\\$1"-ragged" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dR +. na +. \} +. if "\\$1"-unfilled" \{\ +. nr iD \\n(iD+1 +. ds d\\n(dP dU +. nf +. \} +.\" .tm Here is argc: \\n(.$ and here is iD \\n(iD +. if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\ +. bV \\$2 \\$3 \\$4 +. \} +. if \\n(O\\n(dP>0 'in \\n(.iu+\\n(O\\n(dPu +. if (\\n(bV==0) \{\ +. if (\\n(nS==0) \{\ +. ie "\\*(d\\n(dP"dR" .sp \\n(dVu +. el 'sp \\n(dVu +. \} +. \} +. if \\n(cR==0 .ne 2v +. nr bV 0 +. nr iD 0 +.\} +.. +.\" NS bV macro - resolve remaining .Bd arguments +.de bV +.\" .tm in bV with args: \\$1 \\$2 \\$3 +.nr iD 1 +.ds bY +.if "\\$1"-offset" \{\ +. ds bY \\$2 +. if "\\*(bY"left" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP 0 +. \} +. if "\\*(bY"right" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP (\\n(.l/3)u +. \} +. if "\\*(bY"center" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP (\\n(.l-\\n(.i)/4u +. \} +. if "\\*(bY"indent" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP \\n(dIu +. \} +. if "\\*(bY"indent-two" \{\ +. nr iD \\n(iD+1 +. nr O\\n(dP \\n(dIu+\\n(dIu +. \} +. if \\n(iD==1 \{\ +. nr iD \\n(iD+1 +. sW "\\*(bY" +. ie \\n(sW>2 \{\ +. ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\ +. nr O\\n(dP \\*(bY +. \} +. el .nr O\\n(dP (\\n(sW)*\\n(fWu +. \} +. el \{\ +. if \\n(sW==2 .aT \\*(bY +. ie \\n(aT==1 \{\ +. nr O\\n(dP \\n(\\*(bY +. \} +. el .nr O\\n(dP \\*(bY +. \} +. \} +.\} +.if "\\$1"-compact" \{\ +. nr bV 1 +.\} +.if \\n(iD<\\n(.$ \{\ +. ie "\\*(bY"" \{\ +. bV \\$2 \\$3 +. \} +. el \{\ +. bV \\$3 +. \} +.\} +.. +.\" NS Ed macro - end display +.de Ed +.ds mN Ed +.br +.if \\n(dP==0 .tm mdoc: Extraneous .Ed +.if "\\*(d\\n(dP"dL" \{\ +. ft \\n(cF +. fz \\n(cZ +.\} +.in \\n(.iu-\\n(O\\n(dPu +.rr O\\n(dP +.rm d\\n(dP +.nr dP \\n(dP-1 +.fi +.if t .ad +.. +.\"-------------------------------------------------------------------------- +.\" NS Bl macro - begin list (.Bl list-type) +.\" NS L[0-9] registers - stack of list types +.de Bl +.ie \\n(.$==0 \{\ +.tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c) +.\} +.el \{\ +. ds mN Bl +. nr aP 0 +. nr lC \\n(lC+1 +. ds A1 \\$2 +. ds A2 \\$3 +. ds A3 \\$4 +. ds A4 \\$5 +. ds A5 \\$6 +. ds A6 \\$7 +. ds A7 \\$8 +. ds A8 \\$9 +. nr fV \\n(.$-1 +. if "\\$1"-hang" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hL +. nr w\\n(lC 6n +. nr tC 1 +. \} +. if "\\$1"-tag" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC tL +. nr tC 1 +. \} +. if "\\$1"-item" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC iT +. nr tC 1 +. \} +. if "\\$1"-enum" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC nU +. nr w\\n(lC 3n +. nr tC 1 +. \} +. if "\\$1"-bullet" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC bU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-dash" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-hyphen" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC hU +. nr w\\n(lC 2n +. nr tC 1 +. \} +. if "\\$1"-inset" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC lL +. nr tC 1 +. \} +. if "\\$1"-diag" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC mL +. nr mL 1 +. \} +. if "\\$1"-ohang" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC oL +. nr tC 1 +. \} +. if "\\$1"-column" \{\ +. nr aP \\n(aP+1 +. ds L\\n(lC cL +. \} +. ie \\n(aP==0 \{\ +. tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c) +. \} +. el \{\ +. tY +. if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\ +. nr aP 0 +. lV +. if "\\*(L\\n(lC"cL" \{\ +. W\\n(wV +. nr w\\n(lC 0 +' in -\\n(eWu +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +. nf +. nr wV 0 +. \} +. \} +. \} +. nr aP 0 +.\" . ds b1 +. aY +.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC +.\} +.. +.if \n(.g \{\ +. nr i 10 +. while \ni<100 \{\ +. nr num!\nin 1 +. nr i +1 +. \} +.\} +.\" NS lV macro - resolve remaining .Bl arguments +.de lV +.nr aP \\n(aP+1 +.if \\n(fV>=\\n(aP \{\ +. nr iD 0 +. if "\\*(A\\n(aP"-compact" \{\ +. nr iD 1 +. nr v\\n(lC 1 +. \} +. if "\\*(A\\n(aP"-width" \{\ +. nr iD 1 +. nr aP \\n(aP+1 +. nr tW 1 +. ds t\\n(lC TagwidtH +. ds tS \\*(A\\n(aP +. aW \\n(aP +. ie \\n(sW>2 \{\ +. nr w\\n(lC (\\n(sW)*\\n(fWu +. if \\n(sW==3 \{\ +. ie \\n(.g \{\ +. if \A'\\*(tS' .if r num!\\*(tS \{\ +. nr w\\n(lC \\*(tS +. \} +. \} +. el \{\ +. if (\\*(tS>9n)&(\\*(tS<99n) \{\ +. nr w\\n(lC \\*(tSu +. \} +. \} +. \} +. \} +. el \{\ +. aT \\*(tS +. ie \\n(aT==1 \{\ +. nr w\\n(lC \\n(\\*(tS +. \} +. el \{\ +. nr w\\n(lC \\*(tSu +. \} +. \} +. \} +. if "\\*(A\\n(aP"-offset" \{\ +. nr iD 1 +. nr aP \\n(aP+1 +. ie "\\*(A\\n(aP"indent" \{\ +. nr o\\n(lC \\n(Dsu +. \} +. el \{\ +. ds tS \\*(A\\n(aP +. aW \\n(aP +. ie \\n(sW>2 \{\ +. nr o\\n(lC (\\n(sW)*\\n(fWu +. ie \\n(.g \{\ +. if \A'\\*(tS' .if r num!\\*(tS \{\ +. nr o\\n(lC \\*(tS +. \} +. \} +. el \{\ +. if (\\*(tS>9n)&(\\*(tS<100n) \{\ +. nr o\\n(lC \\*(tS +. \} +. \} +. \} +. el \{\ +. ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS +. el .nr o\\n(lC \\*(tS +. \} +. \} +. \} +. if \\n(iD==0 \{\ +. if "\\*(L\\n(lC"cL" \{\ +. nr wV \\n(wV+1 +. ds A\\n(wV \\*(A\\n(aP +. \} +. \} +. if \\n(fV>\\n(aP .lV +.\} +.. +.\" NS El macro - end list +.\" NS iD local register +.de El +.ie \\n(.$>0 \{\ +. tm Usage: .El (#\\n(.c) +.\} +.el \{\ +. ds mN El +. nr iD 0 +. if "\\*(L\\n(lC"cL" \{\ +. nr iD 1 +. cC +. \} +. if "\\*(L\\n(lC"nU" \{\ +. nr nU 0 +. \} +. if \\n(mL>0 \{\ +. nr iD 1 +. nr mL 0 +. tZ +. nr lC \\n(lC-1 +. tY +. \} +. if "\\*(L\\n(lC"iT" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if "\\*(L\\n(lC"oL" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if "\\*(L\\n(lC"lL" \{\ +' in \\n(.iu-\\n(o\\n(lCu +. tZ +. nr lC \\n(lC-1 +. tY +. nr iD 1 +. \} +. if \\n(iD==0 \{\ +. lE +. \} +. br +. nr iD 0 +.\} +.. +.\" NS It macro - list item +.\" NS iD local register +.\" NS aA save pA font string for section FILES (no underline if nroff) +.de It +.if "\\*(L\\n(lC"" \{\ +. tm Usage .Bl -list-type [-width [string] | -compact | -offset [string]] (#\\n(.c) +. tm .It \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.\} +.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC +.ne 3v +.ie \\n(.$>0 \{\ +. ds mN It +. ds b1 +. nr iD 0 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. if "\\*(L\\n(lC"mL" \{\ +. nr iD 1 +. nr aP 0 +. aX +. \\*(L\\n(lC +. \} +. if "\\*(L\\n(lC"cL" \{\ +. ds b1 +. nr aP 0 +. nr iD 1 +. \\*(L\\n(lC +. \} +. if "\\*(L\\n(lC"iT" \{\ +. nr aP 0 +. nr iD 1 +. \\*(L\\n(lC +. \} +. if \\n(iD==0 \{\ +. fV +.\" tm ------------------------------------------------------------------------ +.\" tm It list-type==\\*(L\\n(lC, aP==\\n(aP +.\" tm It beg arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +. nr oM \\n(oM+1 +. nr tP 1 +. nr aP \\n(aP+1 +. nr tX \\n(C\\n(aP +. ds tX \\*(A\\n(aP +. if \\n(nF==1 \{\ +. ds aA \\*(pA +. if n .ds pA \\*(nO +. \} +. ie \\n(C\\n(aP==1 \{\ +. \\*(A\\n(aP +. \} +. el \{\ +. nr aP \\n(aP-1 +. No +. \} +.\" tm in It here is b1==\\*(b1 +.\" tm It mid arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC +. ie \\n(Xt==1 .ds xB \&\\*(L\\n(lC +. el .\\*(L\\n(lC +. \} +. nr iD 0 +.\} +.el .\\*(L\\n(lC +.. +.\" NS lL macro - .It item of list-type inset +.de lL +.lY +.br +\&\\*(b1 +.nr oM \\n(oM-1 +.nr tP 0 +.ds b1 +.aY +'fi +.. +.\" NS hL macro - .It item of list-type hanging label (as opposed to tagged) +.de hL +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1 +.el \&\\*(b1\h'|\\n(bbu'\c +.nr oM \\n(oM-1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS oL macro - .It item of list-type overhanging label +.de oL +.lY +\&\\*(b1 +.br +.nr oM \\n(oM-1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS iT macro - .It item of list-type [empty label] +.de iT +.lY +.br +.\" .ds b1 +.aY +'fi +.. +.\" NS nU macro - Enumerated list +.\" NS nU register count +.\" NS hU macro - Hyphen paragraph list (sub bullet list) +.\" NS bU macro - Bullet paragraph list +.de nU +.nr oM \\n(oM+1 +.nr nU \\n(nU+1 +.ds b1 \&\\n(nU. +.uL +.. +.de bU +.nr oM \\n(oM+1 +.nr bU \\n(bU+1 +.ds b1 \&\\*(sY\&\(bu\fP +.uL +.. +.de hU +.nr oM \\n(oM+1 +.nr bU \\n(bU+1 +.ds b1 \&\\*(sY\&\-\fP +.uL +.. +.\" NS uL macro - .It item of list-type enum/bullet/hyphen +.de uL +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1 +.el \&\\*(b1\h'|\\n(bbu'\c +.nr oM \\n(oM-1 +.\" .nr dZ \\n(dZ+1 +.ds b1 +.nr tP 0 +.aY +'fi +.. +.\" NS mL macro - .It item of list-type diagnostic-message +.de mL +.nr cF \\n(.f +.nr cZ \\n(.s +.ie \\n(mL==1 \{\ +. nr zB \\n(.c +. ie (\\n(zB-\\n(zA)>1 .Pp +. el .br +. nr zA \\n(zB +. nr zB 0 +.\} +.el \{\ +. nr zA \\n(.c +. br +.\} +\&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c +.aY +.ds b1 +'fi +.. +.\" NS tL macro - .It item of list-type "tag" +.de tL +.\" tm in tL here is b1==\\*(b1 +.if \\n(tW==0 .lW +.lX +.nr bb \\n(w\\n(lCu+\\n(lSu +.ti -\\n(bbu +.ie (\w\\*(b1u)>(\\n(w\\n(lCu) \{\&\\*(b1 +. br +.\} +.el \&\\*(b1\h'|\\n(bbu'\c +.if \\n(nF==1 \{\ +. if n .ds pA \\*(aA +.\} +.nr oM \\n(oM-1 +.nr tP 0 +.\" .nr dZ \\n(dZ+1 +.ds b1 +.aY +'fi +.. +.\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only) +.de lW +.if !"TagwidtH"\\*(t\\n(lC" \{\ +. ie \\n(tX==1 \{\ +. ds t\\n(lN \\*(tX +. nr w\\n(lN \\n(\\*(tX +. \} +. el \{\ +. ds t\\n(lN No +. nr w\\n(lN \\n(No +. \} +. if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1 +.\} +.. +.\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all) +.de lX +.ie \\n(tC \{\ +. nr tC 0 +. nr tW 0 +. if \\n(v\\n(lC==0 .sp \\n(dVu +. in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu +.\} +.el \{\ +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +.\} +.if !\\n(cR .ne 2v +.. +.\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all) +.de lY +.ie \\n(tC \{\ +. nr tC 0 +. nr tW 0 +. if \\n(v\\n(lC==0 .sp \\n(dVu +. in \\n(.iu+\\n(o\\n(lCu +.\} +.el \{\ +. ie \\n(v\\n(lC==1 \{\ +. nr aa 0 +. \} +. el \{\ +. sp \\n(dVu +. \} +.\} +.if !\\n(cR .ne 2v +.. +.\" NS tS temporary string +.\" NS hL macro - hanging list function +.\" NS tS temporary string +.\" NS hL macro - hanging list function +.\" NS lT macro - tagged list function +.\" NS lE macro - list end function +.\" NS tX string (initial string) +.\" NS tX register (initial class) +.\" NS tC parameter change flag +.\" NS Xt save current list-type flag +.\" NS lC register - list type stack counter +.\" NS tP register tag flag (for diversions) +.\" NS w[0-9] register tag stack (nested tags) +.\" NS t[0-9] register tag string stack (nested tags) +.\" NS o[0-9] register offset stack (nested tags) +.\" NS v[0-9] register vertical tag break stack +.\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0) +.nr lC 0 +.nr wV 0 +.nr w1 0 +.nr o1 0 +.nr v1 0 +.nr h1 0 +.ds t\n(lC +.de lE +.\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC, +.ie \\n(o\\n(lC>0 \{\ +' in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu +. rr o\\n(lC +.\} +.el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu +.if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c) +.tZ +.nr lC \\n(lC-1 +.tY +.. +.\" NS tY macro - set up next block for list +.\" NS tZ macro - decrement stack +.\" NS tY register (next possible lC value) +.de tY +.nr tY (\\n(lC+1) +.nr w\\n(tY 0 +.nr h\\n(tY 0 +.nr o\\n(tY 0 +.ds t\\n(tY \\*(t\\n(lC +.ds L\\n(tY +.nr v\\n(tY 0 +.. +.de tZ +.rm L\\n(tY +.rr w\\n(tY +.rr h\\n(tY +.rr o\\n(tY +.rm t\\n(tY +.rr v\\n(tY +.nr tY \\n(tY-1 +.. +.\" initial values +.nr w1 0 +.nr o1 0 +.nr h1 0 +.ds t1 +.nr v1 0 +.nr tY 1 +.\" NS Xr macro - cross reference (man page only) +.de Xr +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Xr +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c) +. el \{\ +. ie \\n(C\\n(aP>2 .y\\n(C\\n(aP +. el \{\ +. as b1 \&\\*(xR\\*(A\\n(aP\fP\s0 +. if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==2 \{\ +. as b1 \&(\\*(A\\n(aP) +. nr aP \\n(aP+1 +. \} +. if \\n(aC>=\\n(aP \{\ +. c\\n(C\\n(aP +. \} +. \} +. \} +. aZ +. \} +.\} +.. +.\" NS Sx macro - cross section reference +.de Sx +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Sx +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. as b1 \\*(sX +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS cC macro - column-list end-list +.\" NS eW macro - column indent width +.\" NS cI register - column indent width +.\" NS W[1-5] macro - establish tabs for list-type column +.de cC +'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.fi +.tZ +.nr lC \\n(lC-1 +.tY +.. +.de W1 +.ta \w\\*(A1 u +.nr eW \w\\*(A1 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W2 +.ta \w\\*(A1 u +\w\\*(A2 u +.nr eW \w\\*(A1 u+\w\\*(A2 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W3 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +.nr eW \w\\*(A1 u+\w\\*(A2 u+\w\\*(A3 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W4 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +.nr eW \w\\*(A1 u+\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.de W5 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.\" This is packed abnormally close, intercol width should be an option +.de W6 +.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6 +.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6 +' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu +.. +.\" NS cL macro - column items +.de cL +.if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu +.if \\n(.u==0 \{\ +. fi +' in \\n(.iu+\\n(eWu +.\} +.ti -\\n(eWu +.fV +.nr aP \\n(aP+1 +.ie \\n(aC>=\\n(aP \{\ +. if "\\*(A\\n(aP"Ta" \{\ +. nr jJ \\n(aP-1 +. rm S\\n(jJ +. rr jJ +. \} +. c\\n(C\\n(aP +.\} +.el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c) +.. +.\" NS Ta macro - append tab (\t) +.de Ta +.ie \\n(aC>0 \{\ +. nr aP \\n(aP+1 +. ie \\n(aC>=\\n(aP \{\ +. if "\\*(A\\n(aP"Ta" \{\ +. nr jJ \\n(aP-1 +. rm S\\n(jJ +. rr jJ +. \} +. as b1 \\t +. c\\n(C\\n(aP +. \} +. el \{\ +. as b1 \\t\\c +. rm S\\n(aP +. pB +. aY +.\" . ds b1 +. \} +.\} +.el \{\ +. tm Usage: Ta must follow column entry: e.g. (#\\n(.c) +. tm .It column_string [Ta [column_string ...] ] +.\} +.. +.\" +.\" NS Dl macro - display (one line) literal +.de Dl +'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.in \\n(.iu+\\n(Dsu +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .Dl argument ... (#\\n(.c) +. \} +. el \{\ +. ds mN Dl +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. Li +. \} +.\} +.el \{\ +. tm Usage: .Dl not callable by other macros (#\\n(.c) +.\} +.in \\n(.iu-\\n(Dsu +.. +.\" +.\" NS D1 macro - display (one line) +.de D1 +'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.in \\n(.iu+\\n(Dsu +.ie \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +. tm Usage: .D1 argument ... (#\\n(.c) +. \} +. el \{\ +. ds mN D1 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 .\\*(A\\n(aP +. el .No +. \} +.\} +.el \{\ +. tm Usage: .D1 not callable by other macros (#\\n(.c) +.\} +.in \\n(.iu-\\n(Dsu +.. +.\" NS Ex macro - DEFUNCT +.de Ex +.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Ex macro - DEFUNCT +.de Ex +.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" +.\" NS Vt macro - Variable type (for forcing old style variable declarations) +.\" this is not done in the same manner as .Ot for fortrash - clean up later +.de Vt +.\" if a function declaration was the last thing given, want vertical space +.if \\n(fD>0 \{\ +. Pp +. nr fD 0 +.\} +.\" if a subroutine was the last thing given, want vertical space +.if \\n(fZ>0 \{\ +. ie \\n(fX==0 \{\ +. Pp +. rs +. \} +. el .br +.\} +.nr fX \\n(fX+1 +.nr cF \\n(.f +.nr cZ \\n(.s +\\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.ie \\n(oT==0 .br +.el \&\ \& +.ft \\n(cF +.fs \\n(cZ +.. +.\" +.\" NS Ft macro - Function type +.nr fZ 0 +.de Ft +.if \\n(nS>0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +. nr fY 1 +.\} +.nr cF \\n(.f +.nr cZ \\n(.s +\&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.ft \\n(cF +.fs \\n(cZ +.\" .br +.. +.\" +.\" NS Ot macro - Old Function type (fortran - no newline) +.\" Ns oT register +.nr oT 0 +.de Ot +.nr oT 1 +.if \\n(nS>0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fD 0 +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fX 0 +. \} +. nr fY 1 +.\} +.if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4 +.if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 +.if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2 +.if \\n(.$==1 .as b1 \&\\*(fT\&\\$1 +.as b1 \&\ \fP +.. +.\" +.\" NS Fa macro - Function arguments +.de Fa +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fa +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.ie \\n(fC>0 \{\ +. fC +.\} +.el \{\ +. if \\n(aC>\\n(aP \{\ +. as b1 \\*(fA +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +. if \\n(nS>0 \{\ +. if \\n(fZ>0 .br +. \} +. \} +.\} +.. +.\" NS fC macro - interal .Fa for .FO and .Fc +.de fC +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +.\" . nr aa \\n(aP +.\" . if \\n(nS>0 \{\ +. ds Fb +. nr fB 0 +. nr Fb 0 +. fB \\*(A\\n(aP +. if \\n(fB>1 \{\ +. rm A\\n(aP +. rn Fb A\\n(aP +. \} +.\" . \} +. if \\n(fC>1 \{\ +. as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0 +.\" . as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0 +. \} +. if \\n(fC==1 \{\ +. as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0 +. \} +. nr fC \\n(fC+1 +. fC +.\} +.el \{\ +. aY +.\} +.. +.\" NS Fn macro - functions +.\" NS fY register - dick with old style function declarations (fortran) +.\" NS fZ register - break a line when more than one function in a synopsis +.\" +.de Fn +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN Fn +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(nS>0 \{\ +.\" if there is/has been more than one subroutine declaration +. if \\n(fY==0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fX 0 +. nr fD 0 +. \} +. \} +. if \\n(fY==1 \{\ +. br +. nr fX 0 +. nr fD 0 +. nr fY 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fD 0 +. \} +. nr fZ \\n(fZ+1 +. nr fY 0 +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. nr iS ((8)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp +. ie \\n(aC>\\n(aP \{\ +. as b1 \\*(fA +. nr aP \\n(aP+1 +. f\\n(C\\n(aP +. \} +. el \{\ +. as b1 \|\\*(rp +. aZ +. \} +. if \\n(nS>0 \{\ +. in -\\n(iSu +. \} +.\} +.. +.\" +.\" NS f1 macro - class switch +.\" NS f2 macro - handle function arguments +.\" NS f3 macro - punctuation +.\" NS f4 macro - write out function +.de f1 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ +.\\*(A\\n(aP +.. +.de f2 +.if \\n(nS>0 \{\ +. ds Fb +. nr fB 0 +. nr Fb 0 +. fB \\*(A\\n(aP +. if \\n(fB>1 \{\ +. rm A\\n(aP +. rn Fb A\\n(aP +. \} +.\} +.as b1 \\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. nr aa \\n(aP +. nr aP \\n(aP+1 +. if \\n(C\\n(aP==2 \{\ +. as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\| +. \} +. f\\n(C\\n(aP +.\} +.el \{\ +. as b1 \\*(rp\f\\n(cF\s\\n(cZ +. aZ +.\} +.. +.de f3 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. No +.\} +.el .aZ +.. +.de f4 +.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. No +.\} +.el .aZ +.. +.de Fo +.hy 0 +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .Fo function_name +. el \{\ +. ds mN Fo +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(nS>0 \{\ +.\" if there is/has been more than one subroutine declaration +. if \\n(fY==0 \{\ +. if \\n(fZ>0 \{\ +. Pp +. nr fX 0 +. nr fD 0 +. \} +. \} +. if \\n(fY==1 \{\ +. br +. nr fX 0 +. nr fD 0 +. nr fY 0 +. \} +. if \\n(fD>0 \{\ +. Pp +. nr fX 0 +. \} +. if \\n(fX>0 \{\ +. Pp +. nr fD 0 +. \} +. nr fZ \\n(fZ+1 +. nr fY 0 +. rs +. ie \\n(nS>1 .br +. el \{\ +. if \\n(iS==0 \{\ +. nr iS ((8)*\\n(fW)u +. \} +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +.\} +.if \\n(aC>\\n(aP \{\ +. nr oM \\n(oM+1 +. nr fC 1 +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp +. aY +.\} +.. +.de Fc +.if \\n(aC==0 \{\ +. if \\n(.$>0 \{\ +. ds mN Fo +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.nr fC 0 +.nr oM \\n(oM-1 +.as b1 \|\\*(rp +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. \\*(A\\n(aP +.\} +.el \{\ +. aZ +.\} +.if \\n(nS>0 \{\ +. in -\\n(iSu +.\} +.hy +.. +.\" NS fb macro - if SYNOPSIS, set hard space inbetween function args +.\" NS fb register - count of words in a function argument +.\" NS Fb register - counter +.\" NS Fb string - temporary string +.de fB +.\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6 +.if \\n(fB==0 \{\ +. nr fB \\n(.$ +. nr Fb 0 +. ds Fb +.\} +.nr Fb \\n(Fb+1 +.as Fb \&\\$1 +.if \\n(Fb<\\n(fB \{\ +. as Fb \&\\*(hV +. fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.. +.\" NS Fc - Function close - not implemented yet +.\" NS Fo - Function open - not implemented yet +.\" +.\" Very crude references, stash all reference info into strings (usual +.\" use of b1 buffer, then b1 contents copied to string of retrievable +.\" naming convention), print out reference on .Re request and clean up. +.\" Ordering very limited, no fancy citations, but can do articles, journals +.\" and books - need to add several missing options (like city etc). +.\" should be able to grab a refer entry, massage it a wee bit (prefix +.\" a `.' to the %[A-Z]) and not worry (ha!) +.\" +.\" NS Rs macro - Reference Start +.\" NS rS register - Reference Start flag +.\" NS rS string - Reference Start buffer name for next save (of b1 buffer) +.de Rs +.nr rS 1 +.rC +.if \\n(nA==1 .Pp +.nr Kl 0 +.. +.\" NS Re macro - Reference End +.de Re +.rZ +.rC +.nr rS 0 +.. +.\" NS rC macro - reference cleanup +.de rC +.nr uK 0 +.nr jK 0 +.nr nK 0 +.nr oK 0 +.nr qK 0 +.nr rK 0 +.nr tK 0 +.nr vK 0 +.nr dK 0 +.nr pK 0 +.nr bK 0 +.ds rS +.rm U1 U2 U3 U4 U5 U6 U7 U8 +.rm uK jK nK oK rK qK tK vK dK pK bK +.. +.\" NS rZ macro - reference print +.de rZ +.if \\n(uK \{\&\\*(U1, +. nr aK 1 +. if (\\n(uK>1 \{\ +. aK +. \} +. nr Kl -\\n(uK +.\} +.if \\n(tK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \{\ +. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q. +. \} +. el \{\&\\*(eM\\*(tK\\*(nO. +. \} +. \} +. if \\n(Kl>0 \{\ +. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q, +. \} +. el \{\&\\*(eM\\*(tK\\*(nO, +. \} +. \} +.\} +.if \\n(bK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO. +. if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO, +.\} +.if \\n(jK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO. +. if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO, +.\} +.if \\n(rK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(rK. +. if \\n(Kl>0 \&\\*(rK, +.\} +.if \\n(nK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(nK. +. if \\n(Kl>0 \&\\*(nK, +.\} +.if \\n(vK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(vK. +. if \\n(Kl>0 \&\\*(vK, +.\} +.if \\n(pK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(pK. +. if \\n(Kl>0 \&\\*(pK, +.\} +.if \\n(qK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(qK. +. if \\n(Kl>0 \&\\*(qK, +.\} +.if \\n(dK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(dK. +. if \\n(Kl>0 \&\\*(dK, +.\} +.if \\n(oK \{\ +. nr Kl \\n(Kl-1 +. if \\n(Kl==0 \&\\*(oK. +. if \\n(Kl>0 \&\\*(oK, +.\} +.if \\n(Kl>0 .tm unresolved reference problem +.. +.\" NS aK macro - print out reference authors +.de aK +.nr aK \\n(aK+1 +.ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK, +.\} +.el \{\&\\*(U\\n(aK, +. aK +.\} +.. +.\" NS %A macro - reference author(s) +.\" NS uK register - reference author(s) counter +.\" NS U[1-9] strings - reference author(s) names +.de %A +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c) +. el \{\ +. nr uK \\n(uK+1 +. nr Kl \\n(Kl+1 +. ds rS U\\n(uK +. ds mN %A +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %B macro - [reference] Book Name +.\" NS bK string - Book Name +.\" NS bK register - Book Name flag +.de %B +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c) +. el \{\ +. ds mN %B +. if \\n(rS>0 \{\ +. nr bK \\n(bK+1 +. nr Kl \\n(Kl+1 +. ds rS bK +. \} +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(rS==0 \{\ +. as b1 \&\\*(eM +. nR +. \} +. el .rR +.\} +.. +.\" NS %D macro - [reference] Date +.\" NS dK string - Date String +.\" NS dK register - Date flag +.de %D +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c) +. el \{\ +. ds mN %D +. nr dK \\n(dK+1 +. nr Kl \\n(Kl+1 +. ds rS dK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %J macro - [reference] Journal Name +.\" NS jK register - [reference] Journal Name flag +.\" NS jK string - [reference] Journal Name +.de %J +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c) +. el \{\ +. ds mN %J +. nr jK \\n(jK+1 +. ds rS jK +. nr Kl \\n(Kl+1 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %N macro - [reference] issue number +.\" NS nK register - [reference] issue number flag +.\" NS nK string - [reference] issue number +.de %N +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c) +. el \{\ +. nr nK \\n(nK+1 +. nr Kl \\n(Kl+1 +. ds rS nK +. ds mN %N +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %O macro - [reference] optional information +.\" NS oK register - [reference] optional information flag +.\" NS oK string - [reference] optional information +.de %O +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %O +. nr oK \\n(oK+1 +. nr Kl \\n(Kl+1 +. ds rS oK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %P macro - [reference] page numbers +.\" NS pK register - [reference] page number flag +.\" NS pK string - [reference] page number +.de %P +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %P +. nr pK \\n(pK+1 +. nr Kl \\n(Kl+1 +. ds rS pK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %Q macro - Corporate or Foreign Author +.\" NS qK string - Corporate or Foreign Author +.\" NS qK register - Corporate or Foreign Author flag +.de %Q +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c) +. el \{\ +. ds mN %Q +. nr qK \\n(qK+1 +. nr Kl \\n(Kl+1 +. ds rS qK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %R macro - [reference] report name +.\" NS rK string - [reference] report name +.\" NS rK register - [reference] report flag +.de %R +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c) +. el \{\ +. ds mN %R +. nr rK \\n(rK+1 +. nr Kl \\n(Kl+1 +. ds rS rK +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS %T macro - reference title +.\" NS tK string - reference title +.\" NS tK register - reference title flag +.de %T +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%T (#\\n(.c) +. el \{\ +. ds mN %T +. if \\n(rS>0 \{\ +. nr tK \\n(tK+1 +. nr Kl \\n(Kl+1 +. ds rS tK +. \} +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +.\" . ie \\n(jS==1 \{\ +.\" . nr cF \\n(.f +.\" . nr cZ \\n(.s +.\" . ds qL \&\\*(Lq\\*(rA +.\" . ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ +.\" . En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\" . \} +.\" . el \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. ie \\n(rS==0 \{\ +. as b1 \&\\*(eM +. nR +. \} +. el .rR +.\" . \} +.\} +.. +.\" NS %V macro - reference volume +.\" NS vK string - reference volume +.\" NS vK register - reference volume flag +.de %V +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN %V +. nr vK \\n(vK+1 +. nr Kl \\n(Kl+1 +. ds rS vK +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. rR +.\} +.. +.\" NS rR macro - reference recursion routine +.\" NS jM local register +.\" NS jN local register +.de rR +.hy 0 +.nr jM \\n(C\\n(aP +.ie \\n(jM==1 \{\ +.\" . as b1 \&\f\\n(cF\s\\n(cZ +. ie "\\*(A\\n(aP"Tn" \{\ +. nN +. \} +. el \{\ +. if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c) +. aI rR 1 +. \\*(A\\n(aP +. \} +.\} +.el \{\ +. nr jN \\n(aP +. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP +. el .as b1 \&\\*(A\\n(aP +.\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0 +. ie \\n(aC==\\n(aP \{\ +.\" . as b1 \&\f\\n(cF\s\\n(cZ +. rD +. \} +. el \{\ +. nr aP \\n(aP+1 +. as b1 \&\\*(S\\n(jN +. rR +. \} +.\} +.rr jM jN +.. +.\" NS rD macro - save b1 buffer in to appropriate name +.de rD +.as \\*(rS \\*(b1 +.ds b1 +.ds rS +.aY +.. +.\" NS Hf macro - source include header files. +.de Hf +.Pp +File: +.Pa \\$1 +.Pp +.nr cF \\n(.f +.nr cZ \\n(.s +.ie t \{\ +\&\\*(lI +.br +.ta +9n 18n 27n 36n 45n 54n 63n 72n +.\} +.el \{\ +.ta +8n 16n 24n 32n 40n 48n 56n 64n 72n +.\} +.nf +.so \\$1 +.fi +.ft \\n(cF +.fz \\n(cZ +.Pp +.. +.\" NS An macro - author name +.\" NS aN register +.nr aN 0 +.de An +.if \\n(nY==1 \{\ +. ie \\n(aN==1 \{\ +. br +. \} +. el \{\ +. nr aN 1 +. \} +.\} +.if \\n(aC==0 \{\ +. ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c) +. el \{\ +. ds mN An +. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nr cF \\n(.f +. nr cZ \\n(.s +. nR +.\} +.. +.\" NS Sf macro -defunct +.de Sf +.tm .Sf defunct, use prefix or Ns +.. +.ds rV "function returns the value 0 if successful; otherwise the value -1 is returned and the global variable \\*(vAerrno\fP is set to indicate the error. +.\" Ns Rv macro - return values +.\" Ns rV string - standard return message +.de Rv +.ie \\n(.$==0 \{\ +.tm Usage: .Rv [-std] (#\\n(.c) +.\} +.el \{\ +. ds mN Rv +.\" . nr aP 0 +.\" . nr lR \\n(lR+1 +.\" . ds A1 \\$2 +.\" . ds A2 \\$3 +.\" . ds A3 \\$4 +.\" . ds A4 \\$5 +.\" . ds A5 \\$6 +.\" . ds A6 \\$7 +.\" . ds A7 \\$8 +.\" . ds A8 \\$9 +.\" . nr fV \\n(.$-1 +. if "\\$1"-std" \{\ +. nr cH \\*(cH +. if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only +. br +\&The +.Fn \\$2 +\&\\*(rV +. \} +.\} +.. diff --git a/usr/src/share/tmac/doc-common b/usr/src/share/tmac/doc-common new file mode 100644 index 0000000000..2d25d0b786 --- /dev/null +++ b/usr/src/share/tmac/doc-common @@ -0,0 +1,449 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc-common 5.7 (Berkeley) 8/5/91 +.\" +.\" %beginstrip% +.nr %A 1 +.nr %J 1 +.nr %N 1 +.nr %O 1 +.nr %R 1 +.nr %T 1 +.nr %V 1 +.nr Ad 12n +.nr Ac 3 +.nr Ao 12n +.nr Ap 2 +.nr An 12n +.nr Aq 12n +.nr Ar 12n +.nr Bc 3 +.nr Bl 1 +.nr Bo 12n +.nr Bq 12n +.nr Bx 12n +.nr Cd 12n +.nr Cm 10n +.nr Co 15n +.nr Cx 20n +.nr Dc 3 +.nr Do 10n +.nr Dq 12n +.nr Ds 6n +.nr Dq 12n +.nr Dv 12n +.nr tI \n(Dsu +.nr Ec 3 +.nr El 1 +.nr Eo 12n +.nr Eq 12n +.nr Em 10n +.nr Er 12n +.nr Ev 15n +.nr Ex 10n +.nr Fa 12n +.nr Fl 10n +.nr Fc 3 +.nr Fo 16n +.nr Fn 16n +.nr Hl 1 +.nr I1 6n +.nr I2 12n +.nr I3 18n +.nr Ic 10n +.nr Li 16n +.nr Ms 6n +.nr Nm 10n +.nr No 12n +.nr Ns 2 +.nr Oo 10n +.nr Oc 3 +.nr Op 14n +.nr Pa 32n +.nr Pf 12n +.nr Pc 3 +.nr Po 12n +.nr Pq 12n +.nr Ql 16n +.nr Qc 3 +.nr Qo 12n +.nr Qq 12n +.nr Sc 3 +.nr So 12n +.nr Sq 12n +.nr Sy 6n +.nr Sx 16n +.nr Ra 1 +.nr Rj 1 +.nr Rn 1 +.nr Ro 1 +.nr Rr 1 +.nr Rt 1 +.nr Rv 1 +.nr Tn 10n +.nr Ta 1 +.nr Tv 1 +.nr Tx 22n +.nr Ux 10n +.nr Va 12n +.nr Xc 3 +.nr Xo 1 +.nr Xr 10n +.ds sV \& \& +.ds hV \&\ \& +.ds iV \& \& +.ds tV \&\\t\& +.\" Punctuation values (3 = closing punctuation, 4 = opening) +.nr z. 3 +.nr z, 3 +.nr z: 3 +.nr z; 3 +.nr z( 4 +.nr z) 3 +.nr z[ 4 +.nr z] 3 +.\" Matching pairs +.ds z( z) +.ds z[ z] +.ds z< z> +.\" This is disgusting, troff not parse ``if'' stmt properly +.nr z0 0 +.nr z1 0 +.nr z2 0 +.nr z3 0 +.nr z4 0 +.nr z5 0 +.nr z6 0 +.nr z7 0 +.nr z8 0 +.nr z9 0 +.nr z# 0 +.\" Header assembly macros +.de Dt +.ds dT UNTITLED +.ds vT LOCAL +.ds cH Null +.if !"\\$1"" .ds dT \\$1 +.if !"\\$2"" \{\ +. ds cH \\$2 +.\" . if "\\$3"" \{\ +. if \\$2>=1 .if \\$2<=8 \{\ +. ds vT UNIX Reference Manual +. if \\$2>1 .if \\$2<6 .ds vT UNIX Programmer's Manual +. if "\\$2"8" .ds vT UNIX System Manager's Manual +. nr sN \\$2 +. \} +. if "\\$2"unass" .ds vT DRAFT +. if "\\$2"draft" .ds vT DRAFT +. if "\\$2"paper" .ds vT UNTITLED +.\" . \} +.\} +.if !"\\$3"" \{\ +. if "\\$3"USD" .ds vT UNIX User's Supplementary Documents +. if "\\$3"PS1" .ds vT UNIX Programmers's Supplementary Documents +. if "\\$3"AMD" .ds vT UNIX Ancestral Manual Documents +. if "\\$3"SMM" .ds vT UNIX System Manager's Manual +. if "\\$3"URM" .ds vT UNIX Reference Manual +. if "\\$3"PRM" .ds vT UNIX Programmers's Manual +. if "\\$3"IND" .ds vT UNIX Manual Master Index +.\" . if "\\$3"CON" .ds vT UNIX Contributed Software Manual +.\" . if "\\$3"IMP" .ds vT UNIX Implementation Notes +.\" . if "\\$3"HOW" .ds vT UNIX How Pocket Manual +. if "\\$3"LOCAL" .ds vT UNIX Local Manual +. if "\\$3"tahoe" .as vT \ (Tahoe Architecture) +. if "\\$3"vax" .as vT \ (VAX Architecture) +. if "\\$3"hp300" .as vT \ (HP300 Architecture) +. if "\\*(vT"LOCAL" .ds vT \\$3 +.\} +.. +.\" NS Os macro - Operating System (behaviour changes after first call) +.\" . ds vT \f(CODRAFT\fP\ \ \-\-\ \ \\*(vT\ \ \-\-\ \ \f(CODRAFT +.\" . ds dD \f(CODRAFT\fP\ \ \-\-\ \ \\*(dD\ \ \-\-\ \ \f(CODRAFT +.\" .ds vT \s+4\f(CODRAFT\fP\s-4\ \ \-\-\ \ \\*(vT\ \ \-\-\ \ \s+4\f(CODRAFT\s-4 +.\" .ds dD \s+4\f(CODRAFT\fP\s-4\ \ \-\-\ \ \\*(dD\ \ \-\-\ \ \s+4\f(CODRAFT\s-4 +.de Os +.ds oS Null +.if "\\$1"" \{\ +. ds oS BSD Experimental +.\} +.if "\\$2"" \{\ +. ds aa Non-Null +.\} +.if "\\$1"ATT" \{\ +. ds oS AT&T +. if "\\$2"" .as oS \0UNIX +. if "\\$2"7th" .as oS \07th Edition +. if "\\$2"7" .as oS \07th Edition +. if "\\$2"III" .as oS \0System III +. if "\\$2"3" .as oS \0System III +. if "\\$2"V" .as oS \0System V +. if "\\$2"V.2" .as oS \0System V Release 2 +. if "\\$2"V.3" .as oS \0System V Release 3 +. if "\\$2"V.4" .as oS \0System V Release 4 +.\} +.if "\\$1"BSD" \{\ +. if "\\$2"3" .ds oS 3rd Berkeley Distribution +. if "\\$2"4" .ds oS 4th Berkeley Distribution +. if "\\$2"4.1" .ds oS 4.1 Berkeley Distribution +. if "\\$2"4.2" .ds oS 4.2 Berkeley Distribution +. if "\\$2"4.3" .ds oS 4.3 Berkeley Distribution +. if "\\$2"4.3T" .ds oS 4.3-Tahoe Berkeley Distribution +. if "\\$2"4.3R" .ds oS 4.3-Reno Berkeley Distribution +. if "\\$2"4.3t" .ds oS 4.3-Tahoe Berkeley Distribution +. if "\\$2"4.3r" .ds oS 4.3-Reno Berkeley Distribution +. if "\\$2"4.4" .ds oS BSD Experimental +.\} +.if "\\*(oS"Null" .ds oS \0\\$1 +.if "\\*(aa"Non-Null" .as oS \0\\$2 +.rm aa +.. +.de Dd +.if !"\\*(dD"" .nr gX 1 +.ie \\n(.$>0 \{\ +. ie \\n(.$==3 \{\ +. ds dD \\$1 \\$2 \\$3 +. \} +. el \{\ +. if "\\n(mo"1" .ds dD January +. if "\\n(mo"2" .ds dD February +. if "\\n(mo"3" .ds dD March +. if "\\n(mo"4" .ds dD April +. if "\\n(mo"5" .ds dD May +. if "\\n(mo"6" .ds dD June +. if "\\n(mo"7" .ds dD July +. if "\\n(mo"8" .ds dD August +. if "\\n(mo"9" .ds dD September +. if "\\n(mo"10" .ds dD October +. if "\\n(mo"11" .ds dD November +. if "\\n(mo"12" .ds dD December +. as dD \&\ \\n(dy, 19\\n(yr +. \} +.\} +.el \{\ +. ds dD Epoch +.\} +.. +.de hM +.ev 1 +.pL +.if !\\n(cR 'sp \\n(Hmu +.tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@ +'sp \\n(Hmu +.ev +.. +.de fM +.ie \\n(cR 'br +.el \{\ +. ev 1 +. pL +. if !\\n(cR \{\ +' sp \\n(Fmu +. tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@ +' bp +. \} +. ev +.\} +.\" .tm IN 444 fM .k == \\n(.k and nl == \\n(nl +.. +.de lM +.fl +.if \\n(cR \{\ +' sp +. tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@ +. pl \\n(nlu +.\} +.. +.de Pp +.sp \\n(Ppu +.ne 2 +.ns +.. +.de Lp +.Pp +.. +.de LP +.tm Not a \-mdoc command: .LP +.. +.de PP +.tm Not a \-mdoc command: .PP +.. +.de pp +.tm Not a \-mdoc command: .pp +.. +.de Nd +\&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de Ss +.sp +.ne 2 +.ti -.25i +\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9 +\&\fP\s0 +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.if !\\n(cR .ne 2 +.br +.. +.de Rd +.tm MDOC REGISTER DUMP +.tm Db==\\n(Db register DEBUG MODE +.tm L[0-9] registers - stack of list types +.tm L0==\\n(L0 +.tm L1==\\n(L1 +.tm L2==\\n(L2 +.tm L3==\\n(L3 +.tm L4==\\n(L4 +.tm L5==\\n(L5 +.tm L6==\\n(L6 +.tm L7==\\n(L7 +.tm L8==\\n(L8 +.tm L9==\\n(L9 +.tm O[0-9] registers - stack of indent +.tm O0==\\n(O0 +.tm O1==\\n(O1 +.tm O2==\\n(O2 +.tm O3==\\n(O3 +.tm O4==\\n(O4 +.tm O5==\\n(O5 +.tm O6==\\n(O6 +.tm O7==\\n(O7 +.tm O8==\\n(O8 +.tm O9==\\n(O9 +.tm aC==\\n(aC register argument counter (aV/fV) +.tm aJ==\\n(aJ register (for vR) +.tm aN==\\n(aN register +.tm aP==\\n(aP register argument pointer (aV) +.tm aT==\\n(aT register argument type +.tm aa==\\n(aa local register +.tm bK==\\n(bK register - Book Name flag +.tm cF==\\n(cF register save current font +.tm cI==\\n(cI register - column indent width +.tm cZ==\\n(cZ register save current font size +.tm dK==\\n(dK register - Date flag +.tm d[0-9] registers - display-type stack +.tm d0==\\n(d0 +.tm d1==\\n(d1 +.tm d2==\\n(d2 +.tm d3==\\n(d3 +.tm d4==\\n(d4 +.tm d5==\\n(d5 +.tm d6==\\n(d6 +.tm d7==\\n(d7 +.tm d8==\\n(d8 +.tm d9==\\n(d9 +.tm dZ==\\n(dZ register diversion count +.tm fD==\\n(fD register subroutine test (in synopsis only) +.tm fV==\\n(fV register argument counter (must set to \\n(.$ prior to +.tm fY==\\n(fY register - dick with old style function declarations (fortran) +.tm fZ==\\n(fZ register also subroutine count (in synopsis only) +.tm h[0-9] register horizontal tag stack (continuous if 1, break if +.tm h0==\\n(h0 +.tm h1==\\n(h1 +.tm h2==\\n(h2 +.tm h3==\\n(h3 +.tm h4==\\n(h4 +.tm h5==\\n(h5 +.tm h6==\\n(h6 +.tm h7==\\n(h7 +.tm h8==\\n(h8 +.tm h9==\\n(h9 +.tm iD==\\n(iD local register +.tm iI==\\n(iI local register (indent for inline debug mode) +.tm iN==\\n(iN register DEBUG MODE (inline if 1, to stderr if +.tm iS==\\n(iS register - indent second command line in a synopsis +.tm jK==\\n(jK register - [reference] Journal Name flag +.tm jM==\\n(jM local register +.tm jN==\\n(jN local register +.tm lC==\\n(lC register - list type stack counter +.tm lK==\\n(lK register count of lines read from input file +.tm nK==\\n(nK register - [reference] issue number flag +.tm nU==\\n(nU register count +.tm oK==\\n(oK register - [reference] optional information flag +.tm oM==\\n(oM register (extension possible) +.tm o[0-9] register offset stack (nested tags) +.tm o0==\\n(o0 +.tm o1==\\n(o1 +.tm o2==\\n(o2 +.tm o3==\\n(o3 +.tm o4==\\n(o4 +.tm o5==\\n(o5 +.tm o6==\\n(o6 +.tm o7==\\n(o7 +.tm o8==\\n(o8 +.tm o9==\\n(o9 +.tm oM==\\n(oM register open ended line flag +.tm pK==\\n(pK register - [reference] page number flag +.tm qK==\\n(qK register - Corporate or Foreign Author flag +.tm rK==\\n(rK register - [reference] report flag +.tm rS==\\n(rS register - Reference Start flag +.tm sM==\\n(sM register - default is one (space mode on) +.tm tK==\\n(tK register - reference title flag +.tm tP==\\n(tP register tag flag (for diversions) +.tm tX==\\n(tX register (initial class) +.tm tY==\\n(tY register (next possible lC value) +.tm t[0-9] register tag string stack (nested tags) +.tm t0==\\n(t0 +.tm t1==\\n(t1 +.tm t2==\\n(t2 +.tm t3==\\n(t3 +.tm t4==\\n(t4 +.tm t5==\\n(t5 +.tm t6==\\n(t6 +.tm t7==\\n(t7 +.tm t8==\\n(t8 +.tm t9==\\n(t9 +.tm uK==\\n(uK register - reference author(s) counter +.tm vK==\\n(vK register - reference volume flag +.tm v[0-9] register vertical tag break stack +.tm v0==\\n(v0 +.tm v1==\\n(v1 +.tm v2==\\n(v2 +.tm v3==\\n(v3 +.tm v4==\\n(v4 +.tm v5==\\n(v5 +.tm v6==\\n(v6 +.tm v7==\\n(v7 +.tm v8==\\n(v8 +.tm v9==\\n(v9 +.tm w[0-9] register tag stack (nested tags) +.tm w0==\\n(w0 +.tm w1==\\n(w1 +.tm w2==\\n(w2 +.tm w3==\\n(w3 +.tm w4==\\n(w4 +.tm w5==\\n(w5 +.tm w6==\\n(w6 +.tm w7==\\n(w7 +.tm w8==\\n(w8 +.tm w9==\\n(w9 +.tm xX==\\n(xX local register +.tm END OF REGISTER DUMP +.. diff --git a/usr/src/share/tmac/doc-ditroff b/usr/src/share/tmac/doc-ditroff new file mode 100644 index 0000000000..d63923eb5e --- /dev/null +++ b/usr/src/share/tmac/doc-ditroff @@ -0,0 +1,269 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc-ditroff 5.8 (Berkeley) 8/5/91 +.\" +.\" tmac.mdoc-ditroff +.\" %beginstrip% +.\" +.ds aD \fI\s10 +.ds aR \f(CO\s10 +.ds cM \f(CB\s10 +.ds dF \fR\s10 +.ds eM \fI\s10 +.ds eR \fC\s10 +.ds eV \fC\s10 +.ds fA \f(CO\s10 +.ds fD \f(CB\s10 +.ds fL \f(CB\s10 +.ds fN \f(CB\s10 +.ds fP \fP\s0 +.ds fS \s0 +.ds fT \f(CO\s10 +.ds Hs \fR\s10 +.ds iC \f(CB\s10 +.ds lI \fC +.ds lP \fR\|(\|\fP\s10 +.ds lp \fR(\fP\s10 +.ds rP \fR\|)\|\fP\s10 +.ds rp \fR)\fP\s10 +.ds lB \fR\^[\^\fP\s10 +.ds rB \fR\^]\fP\s10 +.ds mL \fB\s10 +.ds nM \f(CB\s10 +.ds nO \fR\s10 +.ds nT \s0 +.ds pA \fC\s10 +.ds Pu \fR{\ .\ ,\ :\ ;\ (\ )\ [\ ]\ \fR} +.ds rA \fR\s10 +.ds rT \f(CO\s10 +.ds sH \fB\s10 +.ds sP \s0 +.ds sY \fB\s10 +.ds sX \fR\s10 +.ds tF \fR +.ds tN \s9 +.ds vA \fI\s10 +.ds Vs \fR\s10 +.ds vT \f(CB\s10 +.ds xR \fC\s10 +.tr *\(** +.nr sI \w\fC,u*5 +.nr Ti \n(sIu +.nr Pp .5v +.ds lS \0 +.nr lS \w'\0'u +.nr dI 6n +.de pL +.nr Hm .5i +.nr Fm .5i +.nr ll 6.5i +.ll 6.5i +.nr lt 6.5i +.lt 6.5i +.nr po 1i +.po 1.i +.nr dV .5v +.. +.ds <= \(<= +.ds >= \(>= +.ds Lq \&`` +.ds Rq \&'' +.ds ua \(ua +.ds aa \(aa +.ds ga \(ga +.ds sR \&' +.ds sL \&` +.ds q \&" +.\" Math stuff +.ds Pi \(*p +.ds Ne \(!= +.ds Le \(<= +.ds Ge \(>= +.ds Lt < +.ds Gt > +.ds Pm \(+- +.ds If \(if +.ds Na \fINaN\fP +.ds Ba \fR\&|\fP +.\" +.nr gX 0 +.de hK +.ds hT \\*(dT +.if !"\\*(cH"Null" \{\ +. ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|) +. el .as hT \\|(\\|\\*(cH\\|) +.\} +.if "\\*(cH"Null" \{\ +. if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|) +.\} +.wh 0 hM +.wh -1.25i fM +.\" .tm Here is gX == \\n(gX +.ie \\n(gX==1 \{\ +. rm n1 +. if \\n(.g .br +. if !\\n(.g .bp +.\} +.el \{\ +. if \\n(.g .br +. if !\\n(.g 'bp +.\} +.nr % 1 +.nr gX 0 +.em lM +.. +.\" +.nr fW \w\fC0 +.de sW +.nr sW \w\fC\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el \{\ +. ie \\n(sW>0 .nr sW 1 +. el .nr sW 0 +.\} +.. +.\" +.de aW +.nr sW \w\fC\\*(A\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el \{\ +. ie \\n(sW>0 .nr sW 1 +. el .nr sW 0 +.\} +.. +.\" NS Ql macro - Quoted literal define +.de Ql +.if \\n(aC==0 \{\ +. ds mN Ql +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. nr fV \\n(.$ +. fV +.\} +.nr aP \\n(aP+1 +.aW \\n(aP +.nr aP \\n(aP-1 +.if \\n(sW>2 .Li +.if \\n(sW<=2 \{\ +.\" Db on +. if (\\n(aP>0) \{\ +. ds A\\n(aP Li +. nr aP \\n(aP -1 +. \} +. if (\\n(aP==0) \{\ +. rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 +. rm S1 S2 S3 S4 S5 S6 S7 S8 S9 +. rn A8 A9 +. rn A7 A8 +. rn A6 A7 +. rn A5 A6 +. rn A4 A5 +. rn A3 A4 +. rn A2 A3 +. rn A1 A2 +. ds A1 Li +. nr fV \\n(aC+1 +. nr aC 0 +. fV +. \} +. ds qL \&\\*(sL +. ds qR \&\\*(sR +. En +.\" Db off +.\} +.. +.\" NS Sh macro - Section Headers +.\" NS nS register - Section Header SYNOPSIS flag +.\" NS nF register - Section Header FILES flag +.\" NS nA register - Section Header SEE ALSO flag +.\" NS nT register - Section Header STANDARDS flag +.de Sh +.nr nS 0 +.nr sE 0 +.nr iS 0 +'ad +.ie "\\$1"NAME" \{\ +. hK +' in 0 +.\} +.el \{\ +. nr nS 0 +. nr nA 0 +. nr nF 0 +. nr nT 0 +. nr nY 0 +. nr oT 0 +. if "\\$1"SYNOPSIS" \{\ +. na +. nr nS 1 +. \} +. if "\\$1"DESCRIPTION" \{\ +. nr fY 0 +. nr fZ 0 +. nr fB 0 +. nr Fb 0 +. ds Fb +. \} +. if "\\$1"SEE" \{\ +. nr nA 1 +. na +. \} +. if "\\$1"FILES" .nr nF 1 +. if "\\$1"STANDARDS" .nr nT 1 +. if "\\$1"AUTHORS" .nr nY 1 +. if "\\$1"SEE" .nr sE 1 +. in 0 +. nr aN 0 +.\} +.pL +'sp +.ns +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.if !\\n(cR .ne 3 +'fi +\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9 +\&\fP\s0\& +.in \\n(.iu+\\n(Tiu +.ns +.. diff --git a/usr/src/share/tmac/doc-nroff b/usr/src/share/tmac/doc-nroff new file mode 100644 index 0000000000..c036f21812 --- /dev/null +++ b/usr/src/share/tmac/doc-nroff @@ -0,0 +1,225 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc-nroff 5.6 (Berkeley) 8/5/91 +.\" +.\" tmac.mdoc-nroff +.\" %beginstrip% +.\" +.ds aD \fI +.ds aR \fI +.ds cM \fB +.ds dF \fR +.ds eM \fI +.ds eR \fR +.ds eV \fR +.ds fA \fI +.ds fD \fB +.ds fL \fB +.ds fN \fB +.ds fP \fP +.ds fS +.ds fT \fI +.ds Hs \fR +.ds iC \fB +.ds lI \fR +.ds lP \fR\|(\fP +.ds rP \fR\|)\fP +.ds lp \fR\|(\fP +.ds rp \fR\|)\fP +.ds lB \fR\|[\|\fP +.ds rB \fR\|]\fP +.ds mL \fB +.ds nM \fB +.ds nO \fR +.ds pA \fI +.ds Pu {\ .\ ,\ ;\ :\ (\ )\ [\ ]} +.ds rA \fR +.ds rT \fI +.ds sH \fB +.ds sP +.ds sY \fB +.ds sX \fI +.ds tF \fR +.ds tN +.ds vA \fI +.ds Vs \fR +.ds vT \fB +.ds xR \fR +.\" MISCELLANEOUS +.nr sI .5i +.nr Ti .5i +.nr cR 1 +.nr Pp 1v +.ds lS \0\0 +.nr lS \w'\0\0'u +.nr dI 6n +.\" +.de pL +.ie \\n(cR .nr Hm 0 +.el .nr Hm .5i +.nr Fm .5i +.nr ll 78n +.ll 78n +.nr lt 78n +.lt 78n +.nr po 0i +.po 0i +.nr dV 1v +.ad l +.na +.. +.ds <= \&<\&= +.ds >= \&>\&= +.ds Rq '' +.ds Lq `` +.ds ua ^ +.ds aa \' +.ds ga \` +.ds sL ` +.ds sR ' +.ds q \&" +.\" Math stuff +.ds Pi pi +.ds Ne != +.ds Le <= +.ds Ge >= +.ds Lt < +.ds Gt > +.ds Pm +- +.ds If infinity +.ds Na \fINaN\fP +.ds Ba \fR\&|\fP + +.\" +.de hK +.nr % 1 +.ds hT \\*(dT +.if !"\\*(cH"Null" \{\ +. ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|) +. el .as hT \\|(\\|\\*(cH\\|) +.\} +.if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|) +.ie \\n(cR \{\ +. hM +. wh -1v fM +.\} +.el \{\ +. wh 0 hM +. wh -1.167i fM +.\} +.if \\n(nl==0:\\n(nl==-1 'bp +.em lM +.. +.nr fW \w'0' +.de sW +.nr sW \w\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el .nr sW 0 +.. +.de aW +.nr sW \w\\*(A\\$1 +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el .nr sW 0 +.. +.\" NS Ql macro - Quoted literal define +.de Ql +.if \\n(aC==0 \{\ +. ds mN Ql +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +.\} +.ds qL \&\\*(sL +.ds qR \&\\*(sR +.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" NS Sh macro - Section Headers +.\" NS nS register - Section Header SYNOPSIS flag +.\" NS nF register - Section Header FILES flag +.\" NS nA register - Section Header SEE ALSO flag +.\" NS nT register - Section Header STANDARDS flag +.de Sh +.nr nS 0 +.nr sE 0 +.nr iS 0 +.ie "\\$1"NAME" \{\ +. hK +' in 0 +.\} +.el \{\ +. nr nS 0 +. nr nA 0 +. nr nF 0 +. nr nT 0 +. nr nY 0 +. nr aN 0 +. nr oT 0 +. if "\\$1"SEE" .nr nA 1 +. if "\\$1"FILES" .nr nF 1 +. if "\\$1"STANDARDS" .nr nT 1 +. if "\\$1"SYNOPSIS" .nr nS 1 +. if "\\$1"DESCRIPTION" \{\ +. rr fB +. rr Fb +. ds Fb +. nr fY 0 +. nr fZ 0 +. \} +. if "\\$1"AUTHORS" .nr nY 1 +. in 0 +.\} +.pL +'sp +.ns +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.if !\\n(cR .ne 3 +'fi +\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9 +\&\fP\s0\& +.in \\n(.iu+\\n(Tiu +.if "\\$1"SEE" .nr sE 1 +.ns +.. diff --git a/usr/src/share/tmac/doc-syms b/usr/src/share/tmac/doc-syms new file mode 100644 index 0000000000..a9504e9bd8 --- /dev/null +++ b/usr/src/share/tmac/doc-syms @@ -0,0 +1,234 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)doc-syms 5.6 (Berkeley) 8/5/91 +.\" +.\" %beginstrip% +.\" NS Ux macro - UNIX +.de Ux +.nr cF \\n(.f +.nr cZ \\n(.s +.ds aa \&\f\\n(cF\s\\n(cZ +.as b1 \&\\*(tNUNIX\\*(aa +.rm aa +.if \\n(aC==0 \{\ +. if \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==1 \{\ +. \\*(A\\n(aP +. \} +. el .nR +.\} +.el .aZ +.. +.\" NS Bx macro -BSD UNIX (fix smaller nroff version) +.de Bx +.nr cF \\n(.f +.nr cZ \\n(.s +.ds aa \&\f\\n(cF\s\\n(cZ +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \&\\*(tNBSD\\*(aa \\*(tNUNIX\\*(aa +. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.if "\\$1"-alpha" \{\ +\¤tly in alpha test. +. aY +.\} +.if "\\$1"-beta" \{\ +\¤tly in beta test. +. aY +.\} +.if "\\$1"-devel" \{\ +\¤tly under development. +. aY +.\} +.if \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. ie \\n(C\\n(aP==2 \{\ +. as b1 \&\\*(A\\n(aP\&\\*(tNBSD\\*(aa +. ie \\n(aC>\\n(aP \{\ +. nr jj \\n(aP+1 +. ie \\n(C\\n(jj==2 \{\ +. if "\\*(A\\n(jj"Reno" \{\ +. nr aP \\n(aP+1 +. as b1 \&\-\\*(A\\n(jj +. \} +. if "\\*(A\\n(jj"reno" \{\ +. nr aP \\n(aP+1 +. as b1 \&\-Reno +. \} +. if "\\*(A\\n(jj"Tahoe" \{\ +. nr aP \\n(aP+1 +. as b1 \&\-\\*(A\\n(jj +. \} +. if "\\*(A\\n(jj"tahoe" \{\ +. nr aP \\n(aP+1 +. as b1 \&\-Tahoe +. \} +. ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nR +. \} +. el .aZ +. \} +. el \{\ +. nr aP \\n(aP+1 +. nR +. \} +. rr jj +. \} +. el .aZ +. \} +. el \{\ +. as b1 \&\\*(tNBSD\\*(aa U\\*(tNNIX\\*(aa +. nR +. \} +.\} +.. +.\" Ns Ud macro - prints "currently under development" (HISTORY section) +.de Ud +\¤tly under development. +.. +.\" Ns At macro - AT&T UNIX +.de At +.nr cF \\n(.f +.nr cZ \\n(.s +.ds aa \&\f\\n(cF\s\\n(cZ +.if \\n(.$==2 \{\ +. if "\\$1"32v" \&Version 32V \\*(tNAT&T UNIX\\*(aa\\$2 +. if "\\$1"v6" \&Version 6 \\*(tNAT&T UNIX\\*(aa\\$2 +. if "\\$1"v7" \&Version 7 \\*(tNAT&T UNIX\\*(aa\\$2 +. if "\\$1"V" \&\\*(tNAT&T\\*(aa System V \\*(tNUNIX\\*(aa\\$2 +. if "\\$1"V.1" \&\\*(tNAT&T\\*(aa System V.1 \\*(tNUNIX\\*(aa\\$2 +. if "\\$1"V.4" \&\\*(tNAT&T\\*(aa System V.4 \\*(tNUNIX\\*(aa\\$2 +.\} +.if \\n(.$==1 \{\ +. if "\\$1"32v" \&Version 32V \\*(tNAT&T UNIX\\*(aa +. if "\\$1"v6" \&Version 6 \\*(tNAT&T UNIX\\*(aa +. if "\\$1"v7" \&Version 7 \\*(tNAT&T UNIX\\*(aa +. if "\\$1"V" \&\\*(tNAT&T\\*(aa System V \\*(tNUNIX\\*(aa +. if "\\$1"V.1" \&\\*(tNAT&T\\*(aa System V.1 \\*(tNUNIX\\*(aa +. if "\\$1"V.4" \&\\*(tNAT&T\\*(aa System V.4 \\*(tNUNIX\\*(aa +.\} +.. +.\" The Bt macro should go away now +.\" Ns Bt macro - prints "is currently in beta test." (HISTORY section) +.de Bt +\&is currently in beta test. +.. +.\" NS St macro - standards (posix, ansi - formal standard names) +.ds Px \\*(tNPOSIX +.ds Ai \\*(tNANSI +.de St +.if \\n(aC==0 \{\ +. ie \\n(.$==0 \{\ +.tm Usage: .St [-p1003.1-88 | -p1003.2 | -ansiC-89 | -iso ] \\*(Pu ... (#\\n(.c) +. \} +. el \{\ +. ds mN St +. nr aP 0 +. ds A1 \\$1 +. ds A2 \\$2 +. ds A3 \\$3 +. ds A4 \\$4 +. ds A5 \\$5 +. ds A6 \\$6 +. ds A7 \\$7 +. ds A8 \\$8 +. ds A9 \\$9 +. nr fV \\n(.$ +. fV +. \} +.\} +.if \\n(aC>\\n(aP \{\ +. nr cF \\n(.f +. nr cZ \\n(.s +. ds aa \&\f\\n(cF\s\\n(cZ +. nr aP \\n(aP+1 +. if "\\*(A\\n(aP"-p1003.1-88" \{\ +. ie \\n(sT==1 \{\ +. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1-1988\\*(sV +. as b1 (``\\*(tN\\*(Px\\*(aa'') +. \} +. el \{\ +. ds b1 \&\\*(tNIEEE Std\\*(aa1003.1-1988\\*(sV +. as b1 (``\\*(tN\\*(Px\\*(aa'') +. \} +. \} +. if "\\*(A\\n(aP"-p1003.2" \{\ +. ie \\n(sT==1 \{\ +. ds b1 \&\\*(tNIEEE Std\\*(aa1003.2 +. as b1 (``\\*(tN\\*(Px\\*(aa'') +. \} +. el \{\ +. ds b1 \&\\*(tNIEEE Std\\*(aa1003.2\\*(sV +. as b1 (``\\*(tN\\*(Px\\*(aa'') +. \} +. \} +. if "\\*(A\\n(aP"-ansiC" \{\ +. ie \\n(sT==1 \{\ +. ds b1 \&\\*(tNANSI C\\*(aa3.159-1989\\*(sV +. as b1 (``\\*(tNANSI C\\*(aa'') +. \} +. el \{\ +. ds b1 \&\\*(tNANSI C\\*(aa3.159-1989\\*(sV +. as b1 (``\\*(tNANSI C\\*(aa'') +. \} +. \} +. if "\\*(A\\n(aP"-ansiC-89" \{\ +. ie \\n(sT==1 \{\ +. ds b1 \&\\*(tNANSI C\\*(aa3.159-1989\\*(sV +. as b1 (``\\*(tNANSI C\\*(aa'') +. \} +. el \{\ +. ds b1 \&\\*(tNANSI C\\*(aa3.159-1989\\*(sV +. as b1 (``\\*(tNANSI C\\*(aa'') +. \} +. \} +. if "\\*(A\\n(aP"-iso8802-3" \{\ +. ie \\n(sT==1 \{\ +. ds b1 \&\\*(tNISO \\*(aa8802-3: 1989\\*(sV +.\" . as b1 (``\\*(tNANSI C\\*(aa'') +. \} +. el \{\ +. ds b1 \&\\*(tNISO \\*(aa8802-3: 1989\\*(sV +.\" . as b1 (``\\*(tNANSI C\\*(aa'') +. \} +. \} +. ie \\n(aC>\\n(aP \{\ +. nr aP \\n(aP+1 +. nR +. \} +. el .aZ +.\} +.. diff --git a/usr/src/share/tmac/strip.sed b/usr/src/share/tmac/strip.sed new file mode 120000 index 0000000000..707714fbb7 --- /dev/null +++ b/usr/src/share/tmac/strip.sed @@ -0,0 +1 @@ +../me/strip.sed \ No newline at end of file diff --git a/usr/src/share/tmac/tmac.andoc b/usr/src/share/tmac/tmac.andoc new file mode 100644 index 0000000000..7e4fa035cb --- /dev/null +++ b/usr/src/share/tmac/tmac.andoc @@ -0,0 +1,55 @@ +.\" +.\" Copyright (c) 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)tmac.andoc 5.6 (Berkeley) 8/5/91 +.\" +.\" 12 section one files still have not ben upgraded from tmac.doc.old +.\" once those are done this `.de Vx' can go away. +.nr Vx 0 +.de Vx +.nr Vx 1 +.so /usr/share/tmac/tmac.doc.old +.. +.de Dd +.if \\n(vX==0 \{\ +. rn Dd xX +. so /usr/share/tmac/tmac.doc +. Dd \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +. rm xX +.\} +.. +.de TH +.rn TH xX +.so /usr/share/tmac/tmac.an.old +.TH \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.rm xX +.. diff --git a/usr/src/share/tmac/tmac.doc.old b/usr/src/share/tmac/tmac.doc.old new file mode 100644 index 0000000000..a2ac9e7877 --- /dev/null +++ b/usr/src/share/tmac/tmac.doc.old @@ -0,0 +1,1833 @@ +.\" +.\" Copyright (c) 1990 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)tmac.doc.old 5.2 (Berkeley) 3/13/91 +.\" +.\" Assume nroff on crt's only if cR==1 +.if n .nr cR 1 +.\" STRING CONSTANTS +.\" DITROFF +.if t \{\ +.\" Address Style +.ds aD \fI +.\" Argument Reference Style +.ds aR \f(CO +.\" Interactive Comand Modifier (flag) +.ds cM \f(CB +.\" Emphasis (in the English sense - usually italics) +.ds eM \fI +.\" Errno Style +.ds eR \fC +.\" Environment Variable Style +.ds eV \fC +.\" Command Line Flag Style +.ds fL \f(CB +.\" Header String Style +.ds Hs \fR +.\" Interactive Command Style +.ds iC \f(CB +.\" Literal Style +.ds lI \fC +.\" Left Parenthesis Style +.ds lP \fR\|(\|\fP +.\" Right Parenthesis Style +.ds rP \fR\|)\|\fP +.\" Options Open Bracket Style +.ds lB \fR\^[\^\fP +.\" Options Open Bracket Style +.ds rB \fR\^]\fP +.\" Name (subject of manpage) Style +.ds nM \f(CB +.\" Pathname Style +.ds pA \fC +.\" Accepted punctuation string for -mdoc syntax +.ds Pu \fR[.,:;(\^)[\^]\fR] +.\" Section Header Style +.ds Sp \s12\fB +.\" .ds sT \s-2\fR +.\" Symbolic Emphasis (boldface) +.ds sY \f(CB +.\" Generic Variable Style +.ds vA \fI +.\" Volume Title Style +.ds Vs \fR +.\" Cross Reference STyle (man page only) +.ds xR \fC +.\" Math * +.tr *\(** +.\} +.\" NROFF +.if n \{\ +.\" Address Style +.ds aD \fI +.\" Argument Reference Style +.ds aR \fI +.\" Interactive Command Modifier (flag) +.ds cM \fB +.\" Emphasis (in the English sense - usually italics) +.ds eM \fI +.\" Errno Style +.ds eR \fR +.\" Environment Variable Style +.ds eV \fR +.\" Command Line Flag Style +.ds fL \fB +.\" Header String Style +.ds Hs \fR +.\" Interactive Command Style +.ds iC \fB +.\" Literal Style +.ds lI \fR +.\" Left Parenthesis Style +.ds lP \fR\|(\fP +.\" Right Parenthesis Style +.ds rP \fR\|)\fP +.\" Options Open Bracket Style +.ds lB \fR\|[\|\fP +.\" Options Open Bracket Style +.ds rB \fR\|]\fP +.\" Name (subject of manpage) Style +.ds nM \fB +.\" Pathname Style +.ds pA \fI +.\" Accepted punctuation string for -mdoc syntax +.ds Pu [.,;:()[]] +.\" Section Header Style +.ds Sp \s12\fB +.\" .ds sT \s-2\fR +.\" .ds sT \s-2\fR +.\" Symbol, Mode or Mask Style +.ds sY \fB +.\" Generic Variable Style +.ds vA \fI +.\" Volume Title Style +.ds Vs \fR +.\" Cross Reference Style (man page only) +.ds xR \fR +.\} +.\" INDENTS - Subheaders(sI), Text(Ti) between Section Headers and Subsects +.if t \{\ +. nr sI \w'\fC,'u*5 +. nr Ti \n(sIu +.\} +.if n \{\ +. nr sI .5i +. nr Ti .5i +.\} +.\" Flags for macros names which are used only for .Ds +.nr dI 6n +.nr dC 1 +.nr dL 1 +.nr dR 1 +.\" INDENT WIDTHS (for Lists) +.\" Width Needed for Address Tag (indented amount) +.nr Ad 12n +.\" Angle Quote Width +.nr Aq 12n +.\" Width Needed for Argument +.nr Ar 12n +.\" Width Needed for Column offset +.nr Cl 15n +.\" Width neeeded for Interactive Command Modifier +.nr Cm 10n +.\" Width Needed for Complex Expressions +.nr Cx 20n +.\" Indent Width Needed for Display (right and left margins) +.nr Ds 6n +.\" Double Quote Width +.nr Dq 12n +.\" tI is dependent on Ds and used by .Dp +.nr tI \n(Dsu +.\" Width Needed for Display +.nr Em 10n +.\" Width Needed for Errno Types +.nr Er 15n +.\" Width Needed for Environment Variables +.nr Ev 15n +.\" Width Needed for Example Indent +.nr Ex 10n +.\" Width Needed for Flag +.nr Fl 10n +.\" Width Needed for Function +.nr Fn 16n +.\" Width neeeded for Interactive Command Name +.nr Ic 10n +.\" Width Needed for Constant +.nr Li 16n +.\" Width Needed for Math Symbol ? not sure if needed +.nr Ms 6n +.\" Width Needed for Name +.nr Nm 10n +.\" Width Needed for Option Begin +.nr Ob 14n +.\" Width Needed for Option End +.nr Oe 14n +.\" Width Needed for Option (one line) +.nr Op 14n +.\" Width Needed for Pathname +.nr Pa 32n +.\" Parenthesis Quote Width +.nr Pq 12n +.\" Single Quote Width +.nr Sq 12n +.\" Width Needed for Symbols, Modes or Masks +.nr Sy 6n +.\" Width needed for default or unknown text width +.nr Tx 22n +.\" Width Needed for Generic Variable +.nr Va 12n +.\" Width Needed for Cross Reference, should the cross ref be annotated. +.nr Xr 10n +.\" PARAGRAPH SPACE +.if t \{\ +. nr Pp .5v +.\} +.if n \{\ +. nr Pp 1v +.\} +.\" PAGE LAYOUT +.\" .Li Tagged Paragraph Style - zero if break on oversized tag +.\" one if add em space and continue filling line. +.nr tP 0 +.\" Page Layout Macro +.de pL +.\" DITROFF +.ie t \{\ +.\" Header Margin +. nr Hm .5i +.\" Footer Margin +. nr Fm .5i +.\" Line length +. nr ll 5.5i +.\" Line length +. ll 5.5i +.\" Title length +. nr lt 5.5i +.\" Title length +. lt 5.5i +.\" Page offset +. nr po 1.56i +.\" Page offset +. po 1.56i +.\" Vertical space distance (from Section headers/Lists/Subsections) +. nr vV .5v +.\" em space +. ds tP \|\|\|\|\|\| +.\} +.el \{\ +.\" Line length +. nr ll 78n +. ll 78n +.\" Title length +. nr lt 78n +.\" Title length +. lt 78n +.\" Page offset +. nr po 0i +.\" Page offset +. po 0i +.\" Vertical space distance (from Section headers/Lists/Subsections) +. nr vV 1v +.\" em space +. ds tP \0\0 +.\" Test for crt +. ie \\n(cR .nr Hm 0 +. el .nr Hm .5i +.\" Footer Margin +. nr Fm .5i +.\} +.. +.\" Adjustment mode +.if n \{\ +.ad l +.na +.. +.\} +.\" PREDEFINED STRINGS +.if t \{\ +. ds <= \(<= +. ds >= \(>= +. ds Lq \&`` +. ds Rq \&'' +. ds ua \(ua +. ds aa \(aa +. ds ga \(ga +. ds sR \(aa +. ds sL \(ga +.\} +.if n \{\ +. ds <= \&<\&= +. ds >= \&>\&= +. ds Rq '' +. ds Lq `` +. ds ua ^ +. ds aa ' +. ds ga ` +. ds sL ` +. ds sR ' +.\} +.\" Note: The distances from the bottom or top of the page are set +.\" in headers (macro .hK): to -1.25 for troff, and -1.167 for nroff +.\" bottoms, and top is 0. +.\" +.\" .Dt Document/manpage_title section/chapter volume +.\" The \{ and \} is necessary as roff doesn't nest if-elses +.\" properly, especially with .ds. +.\" TODO: separate Dt into Dt, Ch and Vt for supp docs. +.de Dt +.ds dT UNTITLED +.ds vT Local +.ds cH Null +.\" Volume and Section Number or Chapter Number +.if !"\\$1"" .ds dT \\$1 +.if !"\\$2"" \{\ +. ds cH \\$2 +. if "\\$3"" \{\ +. \" Volume Title if none given +. if \\$2>=1 .if \\$2<=8 \{\ +. ds vT UNIX Reference Manual +. if \\$2>1 .if \\$2<6 .ds vT UNIX Programmer's Manual +. if "\\$2"8" .ds vT UNIX System Manager's Manual +. \} +. if "\\$2"unass" .ds vT DRAFT +. if "\\$2"draft" .ds vT DRAFT +. if "\\$2"paper" .ds vT Null +. \} +.\} +.if !"\\$3"" \{\ +. \" Volume Title if given +. if "\\$3"USD" .ds vT UNIX User's Supplementary Documents +. if "\\$3"PS1" .ds vT UNIX Programmers's Supplementary Documents +. if "\\$3"AMD" .ds vT UNIX Ancestral Manual Documents +. if "\\$3"SMM" .ds vT UNIX System Manager's Manual +. if "\\$3"URM" .ds vT UNIX Reference Manual +. if "\\$3"PRM" .ds vT UNIX Programmers's Manual +. if "\\$3"IND" .ds vT UNIX Manual Master Index +. if "\\$3"CON" .ds vT UNIX Contributed Software Manual +. if "\\$3"IMP" .ds vT UNIX Implementation Notes +. if "\\$3"HOW" .ds vT UNIX How Pocket Manual +. if "\\$3"LOCAL" .ds vT UNIX Local Manual +. if "\\*(vT"Local" .ds vT \\$3 +.\} +.. +.\" +.\" .Os Operating System/Standard and Release or Version Number +.\" +.de Os +.ds oS Null +.if "\\$1"" \{\ +. ds oS \fIBSD Experimental\fP +.\" . ds oS (\fIBag o' Bits\fP) +.\} +.if "\\$2"" \{\ +. ds o1 Non-Null +.\} +.if "\\$1"ATT" \{\ +. ds oS AT&T +. if "\\$2"" .as oS \0UNIX +. if "\\$2"7th" .as oS \07th Edition +. if "\\$2"7" .as oS \07th Edition +. if "\\$2"III" .as oS \0System III +. if "\\$2"3" .as oS \0System III +. if "\\$2"V" .as oS \0System V +. if "\\$2"V.2" .as oS \0System V Release 2 +. if "\\$2"V.3" .as oS \0System V Release 3 +. if "\\$2"V.4" .as oS \0System V Release 4 +.\} +.if "\\$1"BSD" \{\ +. if "\\$2"3" .ds oS 3rd Berkeley Distribution +. if "\\$2"4" .ds oS 4th Berkeley Distribution +. if "\\$2"4.1" .ds oS 4.1 Berkeley Distribution +. if "\\$2"4.2" .ds oS 4.2 Berkeley Distribution +. if "\\$2"4.3" .ds oS 4.3 Berkeley Distribution +. if "\\$2"4.3+" .ds oS 4.3+tahoe Berkeley Distribution +.\} +.if "\\*(oS"Null" .ds oS \\$1 +.if "\\*(o1"Non-Null" .as oS \0\\$2 +.rm o1 +.. +.\" +.\" Standards +.\" +.\" .de St +.\" .ds sT Null +.\" .if "\\$1"POSIX" \{\ +.\" . ds sT IEEE Standard POSIX +.\" . if \\$2 .as sT \0\\$2 +.\" .\} +.\" .if "\\$1"ANSI" \{\ +.\" . ds sT ANSI Standard +.\" . if \\$2 .as sT \0\\$2 +.\" .\} +.\" .if "\\$1"ISO" \{\ +.\" . ds sT ISO Standard +.\" . if \\$2 .as sT \0\\$2 +.\" .\} +.\" .if "\\*(sT"Null" .ds sR \\$3 +.\" .. +.\" +.\" .de Gp +.\" .ie !"\\$1"" .ds gP \&\\$1 \\$2 \\$3 \\$4 \\$5 +.\" .el .ds gP Null +.\" .. +.\" +.\" +.de Dd +.nr aa 0 +.ie \\n(.$>0 \{\ +. ie \\n(.$<4 \{\ +. ds dD \\$1 \\$2 \\$3 +. \} +. el .tm Usage: .Dd Month Day, Year (e.g July 4, 1977). +.\} +.el \{\ +. ds dD Epoch +.\} +.. +.\" +.\" House Keeping Macro - Make sense of dT, cH, vT, sT, gP and dS +.\" TODO: Try to get else's for efficiency +.\" TODO: GET RID OF .wh -1.167i (its in v7) +.\" +.\" +.de hK +.nr % 1 +.ds hT \\*(dT +.if !"\\*(cH"Null" \{\ +. ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|) +. el .as hT \\|(\\|\\*(cH\\|) +.\} +.if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|) +.if t \{\ +. wh 0 hM +. wh -1.25i fM +.\} +.if n \{\ +. ie \\n(cR \{\ +. hM +. wh -0v fM +. \} +. el \{\ +. wh 0 hM +. wh -1.167i fM +. \} +.\} +.if n \{\ +. if \\n(nl==0:\\n(nl==-1 'bp +.\} +.if t 'bp +.em lM +.. +.\" Header Macro +.\" +.de hM +.ev 1 +.pL +.if !\\n(cR 'sp \\n(Hmu +.tl @\\*(Hs\\*(hT\fP@\\*(Vs\\*(vT\fP@\\*(Hs\\*(hT\fP@ +'sp \\n(Hmu +.ev +.. +.\" +.de fM +.ev 1 +.pL +.if !\\n(cR \{\ +' sp \\n(Fmu +. tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@ +' bp +.\} +.if \\n(cR \{\ +.\" . tl @\\*(Hs\\*(oS\fP@\\*(Vs\\*(dD\fP@%@ +.\" ' bp +.\} +.ev +.. +.de lM +.fl +.if \\n(cR \{\ +. fM +. pl \\n(nlu +.\} +.. +.de Pp +.sp \\n(Ppu +.ne 2 +.ns +.. +.de Lp +.Pp +.. +.de LP +.tm Not a \-mdoc command: .LP +.. +.de PP +.tm Not a \-mdoc command: .PP +.. +.de pp +.tm Not a \-mdoc command: .pp +.. +.de Co +.tm Not a \-mdoc command: .Co +.. +.nr z. 1 +.nr z, 1 +.nr z: 1 +.nr z; 1 +.nr z) 1 +.nr z( 1 +.nr z[ 1 +.nr z] 1 +.\" This is disgusting, troff not parse if stmt properly +.nr z1 0 +.nr z2 0 +.nr z3 0 +.nr z4 0 +.nr z5 0 +.nr z6 0 +.nr z7 0 +.nr z8 0 +.nr z9 0 +.nr z0 0 +.nr z# 0 +.\" +.de Ad +.ie \\n(.$==0 \{\ +. tm Usage: .Ad address [...] \\*(Pu +.\} +.el \{\ +. ds sV \\*(aD +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.\" Command Line Argument Macro +.\" +.de Ar +.ie \\n(.$==0 \{\ +. ie !"\\*(iM"" .as f1 \&[\|\\*(aRfile\ ...\fP\|] +. el \&[\|\\*(aRfile\ ...\fP\|] +.\} +.el \{\ +. ds sV \\*(aR +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Em +.ie \\n(.$==0 \{\ +. tm Usage: .Em text ... \\*(Pu +.\} +.el \{\ +. ds sV \\*(eM +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Er +.ie \\n(.$==0 \{\ +. tm Usage: .Er ERRNOTYPE ... \\*(Pu +. \} +.el \{\ +. ds sV \\*(eR +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Ev +.ie \\n(.$==0 \{\ +. tm Usage: .Ev ENVIRONMENT_VARIABLE(s) ... \\*(Pu +. \} +.el \{\ +. ds sV \\*(eV +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.\" Flag Name Macro +.\" +.de Fl +.ie \\n(.$==0 \{\ +. ie !"\\*(iM"" .as f1 \&\\*(fL\-\fP +. el \&\\*(fL\-\fP +.\} +.el \{\ +. nr rZ 0 +. sW \\$1 +. if (\\n(sW==1&\\n(.$==1) .rZ \\$1 +. ds sV \\*(fL +. nr cF \\n(.f +. ie \\n(rZ \{\ +. ie "\\*(iM"" .ds f1 \&\\*(sV\-\f\\n(cF\\$1 +. el \&\\*(sV\-\f\\n(cF\\$1 +. \} +. el \{\ +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. fB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +. \} +.\} +.. +.\" Interactive Commands Macro +.\" +.de Ic +.ie \\n(.$==0 \{\ +. tm Usage: .Ic Interactive Commands(s) ... \\*(Pu +.\} +.el \{\ +. ds sV \\*(iC +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.\" Interactive Command Modifiers (flags) +.\" +.de Cm +.ie \\n(.$==0 \{\ +. tm Usage: .Cm Interactive Command Modifier(s) ... \\*(Pu +.\} +.el \{\ +. ds sV \\*(cM +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Li +.ie \\n(.$==0 \{\ +. tm Usage: .Li literal ... \\*(Pu +. \} +.el \{\ +. ds sV \\*(lI +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" If in nroff or any other case where the default font +.\" is constant width, and literal means zilch, single quote instead. +.ie n \{\ +.de Ql +. ie \\n(.$==0 \{\ +. tm Usage: .Ql literal ... \\*(Pu +. \} +. el \{\ +. Sq \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.. +.\} +.el \{\ +.de Ql +. ie \\n(.$==0 \{\ +. tm Usage: .Ql literal ... \\*(Pu +. \} +. el \{\ +. Li \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.. +.\} +.\" +.de Nm +.ie \\n(.$==0 \{\ +. if "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu +. ie !"\\*(iM"" .as f1 \&\\*(nM\\*(n1\\$1\fP +. el \&\\*(nM\\*(n1\\$1\fP +.\} +.el \{\ +. ds sV \\*(nM +. nr cF \\n(.f +. if \\n(nS \{\ +. rs +. in -\\n(iSu +. ie \\n(nS>1 .br +. el \{\ +. sW \\$1 +. nr iS ((\\n(sW+1)*\\n(fW)u +. \} +. in +\\n(iSu +. ti -\\n(iSu +. nr nS \\n(nS+1 +. \} +. if "\\*(n1"" .ds n1 \\$1 +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Pa +.ie \\n(.$==0 \{\ +\&\\*(pA~\fP +.\} +.el \{\ +. ds sV \\*(pA +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Sy +.ie \\n(.$==0 \{\ +. tm Usage: .Sy Symbolic Text ... \\*(Pu +. \} +.el \{\ +. ds sV \\*(sY +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Ms +.ie \\n(.$==0 \{\ +. tm Usage: .Ms Math Symbol ... \\*(Pu +. \} +.el \{\ +. ds sV \\*(sY +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de Va +.ie \\n(.$==0 \{\ +. tm Usage: .Va variable_name(s) ... \\*(Pu +.\} +.el \{\ +. ds sV \\*(vA +. nr cF \\n(.f +. ie "\\*(iM"" .ds f1 \&\\*(sV +. el .as f1 \&\\*(sV +. nB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +.\} +.. +.\" +.de nB +.hy 0 +.if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)? +.ie \\n(.$>1 \{\ +. rZ \\$1 +. ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP +. el .as f1 \&\\$1 +. rZ \\$2 +. if !\\n(rZ \{\ +. ie !"\\*(iM""\{\ +.\" I surrender +. if "\\*(iM"Tp" .as f1 \&\ \& +. if "\\*(iM"Dp" .as f1 \&\ \& +. if "\\*(iM"Op" .as f1 \&\ \& +. if "\\*(iM"Cx" .as f1 \&\ \& +. if "\\*(iM"Dq" .as f1 \& \& +. if "\\*(iM"Sq" .as f1 \& \& +. if "\\*(iM"Pq" .as f1 \& \& +. if "\\*(iM"Aq" .as f1 \& \& +. \} +. el .as f1 \& \& +. \} +. nB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.el \{\ +. rZ \\$1 +. ie \\n(rZ .as f1 \&\f\\n(cF\\$1 +. el .as f1 \&\\$1\f\\n(cF +. if "\\*(iM"" \{\&\\*(f1 +. ds f1 +. \} +. hy +.\} +.. +.de fB +.hy 0 +.if \\n(.$==0 .tm Usage error: called with empty arguments (empty quotes)? +.ie \\n(.$>1 \{\ +. rZ \\$1 +. ie \\n(rZ .as f1 \&\f\\n(cF\\$1\fP +. el \{\ +. ie "\\$1"-" .as f1 \&\-\- +. el .as f1 \&\-\\$1 +. \} +. rZ \\$2 +. if !\\n(rZ \{\ +. ie !"\\*(iM""\{\ +.\" I surrender +. if "\\*(iM"Tp" .as f1 \&\ \& +. if "\\*(iM"Dp" .as f1 \&\ \& +. if "\\*(iM"Op" .as f1 \&\ \& +. if "\\*(iM"Cx" .as f1 \&\ \& +. if "\\*(iM"Dq" .as f1 \& \& +. if "\\*(iM"Sq" .as f1 \& \& +. if "\\*(iM"Pq" .as f1 \& \& +. if "\\*(iM"Aq" .as f1 \& \& +. \} +. el .as f1 \& \& +. \} +. fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.el \{\ +. rZ \\$1 +. ie \\n(rZ .as f1 \&\f\\n(cF\\$1 +. el \{\ +. ie "\\$1"-" .as f1 \&\-\-\f\\n(cF +. el .as f1 \&\-\\$1\f\\n(cF +. \} +. if "\\*(iM"" \{\&\\*(f1 +. ds f1 +. \} +. hy +.\} +.. +.\" +.\" Single quoted Items +.\" eF, sB g[0-9] and f2 +.de Sq +.nr eF 0 +.ie \\n(.$==0 \{\ +. ie "\\*(iM"" \&\\*(sL\&\\*sR +. el .as f1 \&\\*(sL\&\\*(sR +.\} +.el \{\ +. ie "\\*(iM"" \{\ +. ds f1 \&\\*(sL +. ds iM Sq +. \} +. el .as f1 \&\\*(sL +. sB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ie \\n(eF>0 .\\*(g1 \\*(g2 \\*(g3 \\*(g4 \\*(g5 \\*(g6 \\*(g7 \\*(g8 +. el .as f1 \\*(g0 +. as f1 \\*(sR +. if !"\\*(f2"" .as f1 \\*(f2 +. if "\\*(iM"Sq" \{\ +\&\\*(f1 +. ds f1 +. ds iM +. \} +. ds f2 +. rm g0 g1 g2 g3 g4 g5 g6 g7 g8 g9 +. nr eF 0 +.\} +.. +.\" +.\" Double quoted Items +.de Dq +.nr Ef 0 +.ie \\n(.$==0 \{\ +. ie "\\*(iM"" \&\\*(Lq\&\\*(Rq +. el .as f1 \&\\*(Lq\&\\*(Rq +.\} +.el \{\ +. ie "\\*(iM"" \{\ +. ds f1 \&\\*(Lq +. ds iM Dq +. \} +. el .as f1 \&\\*(Lq +. Sb \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ie \\n(Ef>0 .\\*(k1 \\*(k2 \\*(k3 \\*(k4 \\*(k5 \\*(k6 \\*(k7 \\*(k8 +. el .as f1 \\*(k0 +. as f1 \\*(Rq +. if !"\\*(f4"" .as f1 \\*(f4 +. if "\\*(iM"Dq" \{\ +\&\\*(f1 +. ds f1 +. ds iM +. \} +. ds f4 +. rm k0 k1 k2 k3 k4 k5 k6 k7 k8 k9 +. nr Ef 0 +.\} +.. +.\" +.\" Parenthesis quoted Items +.de Pq +.nr pQ 0 +.ie \\n(.$==0 \{\ +. ie "\\*(iM"" \&(\&) +. el .as f1 \&(\&) +.\} +.el \{\ +. ie "\\*(iM"" \{\ +. ds f1 \&( +. ds iM Pq +. \} +. el .as f1 \&( +. pB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ie \\n(pQ>0 .\\*(y1 \\*(y2 \\*(y3 \\*(y4 \\*(y5 \\*(y6 \\*(y7 \\*(y8 +. el .as f1 \\*(y0 +. as f1 \&) +. if !"\\*(f3"" .as f1 \\*(f3 +. if "\\*(iM"Pq" \{\ +\&\\*(f1 +. ds f1 +. ds iM +. \} +. ds f3 +. rm y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 +. nr pQ 0 +.\} +.. +.\" eF, sB g[0-9] and f2 +.de sB +.hy 0 +.ie \\n(.$==0 .tm Sick Logic: macro sB +.el \{\ +. ie \\n(eF>=1 .nr eF \\n(eF+1 +. el \{\ +. mN \\$1 +. if \\n(mN .nr eF \\n(eF+1 +. \} +. rZ \\$1 +. ie \\n(rZ .as f2 \\$1 +. el \{\ +. ie \\n(eF<1 .as g\\n(eF \\$1 +. el .as g\\n(eF \\$1 +. \} +. if \\n(.$>1 \{\ +. rZ \\$2 +. if \\n(rZ==0 \{\ +. if \\n(eF<1 \{\ +. as g\\n(eF \& \& +. \} +. \} +. sB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.. +.de Sb +.hy 0 +.ie \\n(.$==0 .tm Sick Logic: macro Sb +.el \{\ +. ie \\n(Ef>=1 .nr Ef \\n(Ef+1 +. el \{\ +. mN \\$1 +. if \\n(mN .nr Ef \\n(Ef+1 +. \} +. rZ \\$1 +. ie \\n(rZ .as f4 \\$1 +. el \{\ +. ie \\n(Ef<1 .as k\\n(Ef \\$1 +. el .as k\\n(Ef \\$1 +. \} +. if \\n(.$>1 \{\ +. rZ \\$2 +. if \\n(rZ==0 \{\ +. if \\n(Ef<1 \{\ +. as k\\n(Ef \& \& +. \} +. \} +. Sb \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.. +.de pB +.hy 0 +.ie \\n(.$==0 .tm Sick Logic: macro pB +.el \{\ +. ie \\n(pQ>=1 .nr pQ \\n(pQ+1 +. el \{\ +. mN \\$1 +. if \\n(mN .nr pQ \\n(pQ+1 +. \} +. rZ \\$1 +. ie \\n(rZ .as f3 \\$1 +. el \{\ +. ie \\n(pQ<1 .as y\\n(pQ \\$1 +. el .as y\\n(pQ \\$1 +. \} +. if \\n(.$>1 \{\ +. rZ \\$2 +. if \\n(rZ==0 \{\ +. if \\n(pQ<1 \{\ +. as y\\n(pQ \& \& +. \} +. \} +. pB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.. +.de aQ +.hy 0 +.ie \\n(.$==0 .tm Bad Syntax: .Aq +.el \{\ +. ie \\n(aQ>=1 .nr aQ \\n(aQ+1 +. el \{\ +. mN \\$1 +. if \\n(mN .nr aQ \\n(aQ+1 +. \} +. rZ \\$1 +. ie \\n(rZ .as aZ \\$1 +. el \{\ +. ie \\n(aQ<1 .as a\\n(aQ \\$1 +. el .as a\\n(aQ \\$1 +. \} +. if \\n(.$>1 \{\ +. rZ \\$2 +. if \\n(rZ==0 \{\ +. if \\n(aQ<1 \{\ +. as a\\n(aQ \& \& +. \} +. \} +. aQ \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.. +.\" Angle Bracket Quoted Items +.de Aq +.nr aQ 0 +.ie \\n(.$==0 \{\ +. ie "\\*(iM"" \&<\&> +. el .as f1 \&<\&> +.\} +.el \{\ +. ie "\\*(iM"" \{\ +. ds f1 \&< +. ds iM Aq +. \} +. el .as f1 \&< +. aQ \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +. ie \\n(aQ>0 .\\*(a1 \\*(a2 \\*(a3 \\*(a4 \\*(a5 \\*(a6 \\*(a7 \\*(a8 +. el .as f1 \\*(a0 +. as f1 \&> +. if !"\\*(aZ"" .as f1 \\*(aZ +. if "\\*(iM"Aq" \{\ +\&\\*(f1 +. ds f1 +. ds iM +. \} +. ds aZ +. rm a0 a1 a2 a3 a4 a5 a6 a7 a8 +. nr aQ 0 +.\} +.. +.\" macro Name test, return macro register value if true +.de mN +.nr mN 0 +.sW \\$1 +.if \\n(sW==2 \{\ +. if \\n(\\$1 .nr mN \\n(\\$1 +.\} +.. +.\" Punctuation test (using z registers), return 1 if true +.de rZ +.nr rZ 0 +.sW \\$1 +.if \\n(sW==1 \{\ +. if \\n(z\\$1==1 \{\ +. nr rZ 1 +. \} +.\} +.. +.\" +.\" sW returns number of characters in a string +.if t \{\ +.nr fW \w'\fC,' +.de sW +.nr sW \w'\fC\\$1' +.\} +.if n \{\ +.nr fW \w'0' +.de sW +.nr sW \w'\\$1' +.\} +.ie \\n(sW>=\\n(fW \{\ +. ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1 +. el .nr sW \\n(sW/\\n(fW +.\} +.el .nr sW 0 +.. +.\" Option Expression - +.\" TODO - add line overflow check (right!) +.nr eP 0 +.ds e1 +.nr oE 0 +.nr hP 0 +.ds hP +.nr Ep 0 +.de Op +.hy 0 +.if "\\*(iM"" \{\ +. ds iM Op +. ds f1 \& +.\} +.as f1 \&\\*(lB +.\" .tm Op: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.dO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.ie !"\\$1"Cx" .oE +.el .nr oE \\n(oE+1 +.. +.\" +.\" just for mike, with every bite of garlic in mind (oops, i mean burp). +.\" dO: go dOwn an argument vector and test each argument to see if +.\" a macro name or punctuation. stash in respective place along +.\" with its arguments. +.nr oO 0 +.nr oP 0 +.nr aO 0 +.de dO +.mN \\$1 +.ie \\n(mN \{\ +. if \\n(oP \{\ +. if \\n(hP \{\ +. nr oZ 1 +. oZ +. Oz +. \} +. if \\n(e1==1 \{\ +.\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9 +. \} +. uO +. if !(\\n(oO:\\n(aO) .as f1 \& \& +. \} +. ie "\\$1"Op" \{\ +. as f1 \&\\*(lB +. nr aO \\n(aO+1 +. \} +. el \{\ +. nr eP \\n(eP+1 +. ds e\\n(eP \\$1 +. nr e\\n(eP 1 +. \} +.\} +.el \{\ +.\" .tm dO: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE +. rZ \\$1 +. ie \\n(rZ \{\ +.\" .tm dO:rZ: $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(eP +. nr hP \\n(hP+1 +. ds h\\n(hP \\$1 +. \} +. el \{\ +.\" .tm dO:word $1: \\$1: eP \\n(eP e[\\n(eP]: \\*(e\\n(ePEE +. if \\n(eP==0:\\n(e\\n(eP==1 .nr eP \\n(eP+1 +. if \\n(eZ .as e\\n(eP \& \& +. as e\\n(eP \&\\$1 +.\" . ds e\\n(eP \&\\$1 +. nr eZ \\n(eZ+1 +. \} +.\} +.nr oP 1 +.ie \\n(.$>1 \{\ +. dO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.\} +.el \{\ +. ie \\n(e1 \{\ +.\\*(e1 \\*(e2 \\*(e3 \\*(e4 \\*(e5 \\*(e6 \\*(e7 \\*(e8 \\*(e9 +. \} +. el \{\ +. as f1 \\*(e1 +. \} +.\} +.. +.\" handle old style arguments such as the arg -Idir +.\" in adb, .Oo is a toggle. +.de Oo +.ie \\n(oO .nr oO 0 +.el .nr oO 1 +.. +.\" stash punctuation +.de oZ +.if \\n(hP>=\\n(oZ \{\ +. nr eP \\n(eP+1 +. ds e\\n(eP \\*(h\\n(oZ +. nr oZ \\n(oZ+1 +. oZ +.\} +.. +.\" clean up punctuation vector +.de Oz +.if \\n(hP>0 \{\ +. rm h\\n(hP +. nr hP \\n(hP-1 +. Oz +.\} +.. +.\" uO: go back up created vector cleaning it up along the way +.de uO +.if \\n(eP>0 \{\ +. rm e\\n(eP +. rr e\\n(eP +. nr eP \\n(eP-1 +. nr oP 0 +. nr eZ 0 +. uO +.\} +.. +.\" option end +.de oE +.uO +.ie \\n(hP \{\ +. as f1 \\*(rB\\*(h1\\*(h2\\*(h3 +. Oz +. nr oZ 0 +.\} +.el \{\ +. as f1 \\*(rB +.\} +.ie "\\*(iM"Op" \{\ +. if \\n(aO .aO +.if t \{\ +. if (\\n(.lu-\\n(.ku-\\n(.ou-(2*\\n(fWu))<\w'\fC\\*(f1'u .br +.\} +.if n \{\ +. nr aa \w'\\*(f1'u +.\" . nr qq \\n(.lu-\\n(.ku-\\n(.ou +.\" \&aa == \\n(aa, f1==\\*(f1, qq==\\n(qq +. if (\\n(.lu-\\n(.ku-\\n(.ou-\\n(aau)<=(8*\\n(fWu) .br +.\} +\&\\*(f1 +. ds iM +. ds f1 +. hy +.\} +.el .nr oE \\n(oE-1 +.. +.de aO +.as f1 \\*(rB +.nr aO \\n(aO-1 +.if \\n(aO >0 .aO +.. +.\" +.de Xr +.if \\n(.$<=1 \{\ +. ie \\n(.$==1 \{\ +. if !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP +. if "\\*(iM"" \&\\*(xR\\$1\fP +. \} +. el .tm Xr Usage: .Xr manpage_name [section#] \\*(Pu +.\} +.if \\n(.$==2 \{\ +. rZ \\$2 +. ie "\\*(iM"" \{\ +. ie \\n(rZ \&\\*(xR\\$1\fP\\$2 +. el \&\\*(xR\\$1\fP(\\$2) +. \} +. el \{\ +. ie \\n(rZ .as f1 \&\\*(xR\\$1\fP\\$2 +. el .as f1 \&\\*(xR\\$1\fP(\\$2) +. \} +.\} +.if \\n(.$>=3 \{\ +. rZ \\$2 +. ie \\n(rZ \{\ +. ie !"\\*(iM"" .as f1 \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8 +. el \&\\*(xR\\$1\fP\\$2\\$3\\$4\\$5\\$6\\$7\\$8 +. \} +. el \{\ +. rZ \\$3 +. ie \\n(rZ \{\ +. if !"\\*(iM"" \{\ +. as f1 \&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8 +. \} +. if "\\*(iM"" \{\ +\&\\*(xR\\$1\fP(\\$2)\\$3\\$4\\$5\\$6\\$7\\$8 +. \} +. \} +. el \{\ +. tm rZ = \\n(rZ the arg is \\$3 +. tm Xr-XX Usage: .Xr manpage_name [section#] \\*(Pu +. \} +. \} +.\} +.. +.\" +.\" +.de Ex +.tm Ex defunct, Use .Dl: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.\" Display (one) Line of text. +.de Dl +.ie "\\*(iM"" \{\ +' ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +. in \\n(.iu+\\n(Dsu +. mN \\$1 +. ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el \{\ +. nr cF \\n(.f +.\" Literal font is none specified +\&\\*(lI\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. ft \\n(cF +. \} +. in \\n(.iu-\\n(Dsu +.\} +.el \{\ +. mN \\$1 +. ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +. el \{\ +. nr cF \\n(.f +. ds f1 \&\\*(lI\\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +. as f1 \&\f\\n(cF +. \} +.\} +.. +.\" +.\" +.\" user set Tagged Paragraph Width (used in both Dp and Tp) +.de Tw +.ie \\n(.$==0 \{\ +. nr aa 0 +.\} +.el \{\ +. mN \\$1 +. ie \\n(sW>2 \{\ +. nr tW (\\n(sW+3)*\\n(fWu) +. \} +. el \{\ +. ie \\n(mN .nr tW \\n(mN +. el .nr tW \\$1 +. \} +. nr tF 1 +.\} +.. +.\" +.de Dw +.Tw \\$1 +.. +.\" +.de Di +.ie \\n(.$==0 \{\ +. nr tI \\n(Dsu +.\} +.el \{\ +. sW \\$1 +. if \\n(sW>=2 \{\ +. nr tI \\$1u +. \} +. if \\n(sW<2 \{\ +. if "\\$1"L" \{\ +. nr tI 0 +. \} +. \} +.\} +.. +.\" tagged paragraph +.\" initialize baby stack variables +.nr np 0 +.nr p1 0 +.ds s\n(np +.\" +.de Tp +.ie "\\$1"" .pE p s np +.el \{\ +. ds iM Tp +. mN \\$1 +. ie \\n(tF \{\ +. ds tC Tw +. nr tC 1 +. nr tF 0 +. \} +. el \{\ +. if !"Tw"\\*(s\\n(np" \{\ +. ie \\n(mN \{\ +. ds tC \\$1 +. nr tW \\n(mN +. \} +. el \{\ +. ds tC Tx +. nr tW \\n(Tx +. \} +. if !"\\*(tC"\\*(s\\n(np" .nr tC 1 +. \} +. \} +. sp \\n(vVu +. if !\\n(cR .ne 2 +. if \\n(tC \{\ +. nr np \\n(np+1 +. nr p\\n(np \\n(tW +. ds s\\n(np \\*(tC +. nr tC 0 +. ds tC +. in \\n(.iu+\\n(p\\n(npu +. \} +. ie \\n(mN \{\ +. ds f1 +. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. if !"\\$1"Cx" .pT st p np +. \} +. el \{\ +. br +. ev 1 +. fi +. di Td +\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. br +. di +. ev +. na +. ds tD \\*(Td\\ +. pT di p np +. \} +.\} +.. +.\" +.\" +.\" Complex Expression Macro +.\" +.\" TODO: add length across line boundary check (like Li) +.de Cx +.hy 0 +.ie \\n(.$==0 \{\ +. if "\\*(iM"Cx" \{\ +. ds iM +. if \\n(oE .oE +\&\\*(f1 +. ds f1 +. \} +. if "\\*(iM"Tp" .pT st p np +. if "\\*(iM"Dp" .pT st q mp +.\} +.el \{\ +. if "\\*(iM"" \{\ +. ds iM Cx +. ds f1 \& +. \} +. mN \\$1 +.\" Here are the args: `\\$1' `\\$2' `\\$3' `\\$4' +. ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el \{\ +. as f1 \&\\$1 +. if \\n(.$>1 .Cx \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.. +.\" Prefix string in default font to content specified string +.de Pf +.Cx \\$1 +.\\$2 \\$3 \\$4 \\$5 +.Cx +.. +.\" Suffix string in default font to content specified string +.de Sf +.Cx \\$1 \\$2 +.Cx \\$3 +.Cx +.. +.\" Simple Option Begin +.de Ob +.hy 0 +.ie "\\*(iM"" \{\ +. ev 2 +. fi +. di oB +.\} +.el \{\ +.tm shouldn't be here +. as f1 \&[ +. mN \\$1 +. ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. el \{\ +. as f1 \&\\$1 +. if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +.\} +.. +.de Oc +.as f1 \&\\$1 +.if \\n(.$>1 .Oc \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de Oe +.hy 0 +.ie "\\*(iM"" \{\ +. br +. di +. ev +. ds bO \\*(oB\\ +\&[\\*(bO\&] +.\} +.el \{\ +. as f1 \&] +.\} +.. +.\" White space for Cx +.de Ws +.Cx \&\ \& +.. +.\" tagged paragraph +.\" initialize baby stack variables +.nr mp 0 +.nr q1 0 +.ds r\n(np +.\" +.\" Complex Dp tag +.de Dc +.Dp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.. +.\" Complex Tp tag +.de Tc +.Tp Cx \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 +.. +.\" Tag with a flag and an argument with a space +.de Ta +.if "\\$2"" \{\ +. Tp Fl \\$1 +.\} +.el \{\ +. Tp Fl \\$1 +. Cx \&\ \& +. Ar \\$2 \\$3 +. Cx +.\} +.. +.de Da +.Dp Cx Fl \\$1 +.Ws +.Ar \\$2 \\$3 +.Cx +.. +.de To +.Tp Cx Fl \\$1 +.Ar \\$2 \\$3 +.Cx +.. +.de Do +.Dp Cx Fl \\$1 +.Ar \\$2 \\$3 +.Cx +.. +.\" Blended tag toggle +.de Bt +.ie \\n(tP==0 .nr tP 1 +.el .nr tP 0 +.. +.\" Bullet paragraph +.de Bu +.Tp Sy \&\(bu +.. +.\" Display tagged paragraph +.de Dp +.ie "\\$1"" \{\ +. pE q r mp +. sp \\n(vVu +.\} +.el \{\ +. ds iM Dp +. mN \\$1 +. ie \\n(tF \{\ +. ds tC Tw +. nr tC 1 +. nr tF 0 +. \} +. el \{\ +. if !"Tw"\\*(r\\n(mp" \{\ +. ie \\n(mN \{\ +. ds tC \\$1 +. nr tW \\n(mN +. \} +. el \{\ +. ds tC Tx +. nr tW \\n(Tx +. \} +. if !"\\*(tC"\\*(r\\n(mp" .nr tC 1 +. \} +. \} +. if !\\n(cR .ne 2 +. if \\n(tC \{\ +. nr mp \\n(mp+1 +. nr q\\n(mp \\n(tW +. ds r\\n(mp \\*(tC +. nr tC 0 +. ds tC +. ie \\n(tIu==\\n(Dsu .nr i\\n(mp \\n(Dsu +. el \{\ +. nr i\\n(mp \\n(tIu +. nr tI \\n(Dsu +. \} +. in \\n(.iu+\\n(i\\n(mpu +. sp \\n(vVu +. in \\n(.iu+\\n(\\q\\n(mpu +. \} +. ie \\n(mN \{\ +. \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. if !"\\$1"Cx" .pT st q mp +. \} +. el \{\ +. br +. ev 1 +. fi +. di Td +\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. br +. di +. ev +. na +. ds tD \\*(Td\\ +. pT di q mp +. \} +.\} +.. +.\" +.\" .pE number_stack string_stack counter +.de pE +.ie "\\$3"mp" \{\ +. in \\n(.iu-(\\n(\\$1\\n(\\$3u)-(\\n(i\\n(mpu) +. rr i\\n(mp +.\} +.el .in \\n(.iu-\\n(\\$1\\n(\\$3u +.\" .in \\n(.iu-\\n(\\$1\\n(\\$3u +.if \\n(\\$3<=0 .tm Extraneous call .Tp or .Dp +.rr \\$1\\n(\\$3 +.rm \\$2\\n(\\$3 +.nr \\$3 \\n(\\$3-1 +.ds iM +.. +.\" +.\" .pT [st or di] number_stack counter +.de pT +.ie "\\$1"st" \{\ +. nr bb \\n(\\$2\\n(\\$3u +. ti -\\n(bbu +. ie (\\n(\\$2\\n(\\$3u-2n)<=\w'\\*(f1'u \{\&\\*(f1\\*(tP +. if \\n(tP==0 .br +. \} +. el \\*(f1\h'|\\n(\\$2\\n(\\$3u'\c +.\} +.el \{\ +. ti -\\n(\\$2\\n(\\$3u +. ie (\\n(\\$2\\n(\\$3u-2n)<=\\n(dlu \{\&\\*(tD\\*(tP +. if !\\n(tP .br +. \} +. el \\*(tD\h'|\\n(\\$2\\n(\\$3u-'\c +. if t 'ad +.\} +. ds iM +. ds f1 +'fi +.. +.\" +.\" The new SH +.\" +.de Sh +.\" set Sh state off, check for list state before calling indent (.In) +.nr nS 0 +.nr sE 0 +.ie "\\$1"NAME" \{\ +.\" name state on, housekeep (headers & footers) +. hK +' in 0 +.\} +.el \{\ +. if "\\$1"SYNOPSIS" .nr nS 1 +. in 0 +.\} +.pL +'sp +.ns +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.if !\\n(cR .ne 3 +'fi +\&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9 +\&\fP\& +.in \\n(.iu+\\n(Tiu +.if "\\$1"SEE" .nr sE 1 +.ns +.. +.\" +.\" Nd minus sign for an en dash used in .Sh Name +.de Nd +\&\-\& \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.de Ss +.sp +.ti -.25i +\&\fB\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9 +\&\fP\& +.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.if !\\n(cR .ne 2 +.br +.. +.\" .if "\\$1"Ss" .in \\n(.iu+\\n(sIu +.\".. +.\" +.\" +.\" Column Macro +.\" +.hy 0 +.de Cw +.ie \\n(.$==0 \{\ +. br +. in \\n(.iu-\\n(eWu +. ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i +.\} +.el \{\ +. Pp +. if \\n(.$==1 \{\ +. ta \w'\\$1 'u +. nr eW \w'\\$1 'u +' in \\n(.iu+\\n(eWu +. \} +. if \\n(.$==2 \{\ +. ta \w'\\$1 'u +\w'\\$2 'u +. nr eW \w'\\$1 'u+\w'\\$2 'u +' in \\n(.iu+\\n(eWu +. \} +. if \\n(.$==3 \{\ +. ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +. nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u +' in \\n(.iu+\\n(eWu +. \} +. if \\n(.$==4 \{\ +. ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +. nr eW \w'\\$1 'u+\w'\\$2 'u+\w'\\$3 'u +\w'\\$4 'u +' in \\n(.iu+\\n(eWu +. \} +. if \\n(.$==5 \{\ +.ta \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u +.nr eW \w'\\$1 'u +\w'\\$2 'u +\w'\\$3 'u +\w'\\$4 'u +\w'\\$5 'u +' in \\n(.iu+\\n(eWu +. \} +.\} +.. +.de Cl +.ti -\\n(eWu +.mN \\$1 +.ie \\n(mN .\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.el \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.. +.nr dQ 0 +.de Ds +.ie !"\\$1"" \{\ +. mN d\\$1 +. if \\n(mN \{\ +. nr dQ \\n(dQ+1 +. d\\$1 +. \} +.\} +.el .br +.nf +.. +.de Df +.ie !"\\$1"" \{\ +. mN d\\$1 +. if \\n(mN \{\ +. nr dQ \\n(dQ+1 +. d\\$1 +. \} +.\} +.el .br +.. +.de Dn +\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +.nf +.. +.de dI +.nr d\\n(dQ \\n(dIu +.in \\n(.iu+\\n(dIu +.. +.de dC +.nr d\\n(dQ (\\n(.l-\\n(.i)/4u +.in \\n(.iu+\\n(d\\n(dQu +.. +.de dR +.nr d\\n(dQ (\\n(.l/3)u +.in \\n(.iu+\\n(d\\n(dQu +.. +.de dL +.nr aa 0 +.. +.de De +.br +.if \\n(d\\n(dQ \{\ +. in \\n(.iu-\\n(d\\n(dQu +. rr d\\n(dQ +. nr dQ \\n(dQ-1 +.\} +.fi +.. +.\" +.de Fn +.ie \\n(.$==0 \{\ +. tm Usage: .Fn function_name function_arg(s) ... \\*(Pu +.\} +.el \{\ +. nr cF \\n(.f +. ie \\n(.$==1 .ds f1 \&\\*(nM\\$1\fP\\*(lP\fP\\*(rP\fP +. el \{\ +. ds f1 \\*(nM\\$1\fP\\*(lP +. nr aa 0 +. rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 +. \} +. if "\\*(iM"" \{\\&\\*(f1 +. ds f1 +. \} +.\} +.. +.\" +.de rC +.rZ \\$1 +.ie \\n(rZ \{\ +. as f1 \f\\n(cF\\*(rP\f\\n(cF\\$1\\$2\\$3\\$4\\$5\\$6\\$7 +.\} +.el \{\ +. ie \\n(aa .as f1 \fP, \\*(aR\\$1 +. el .as f1 \\*(aR\\$1 +. nr aa 1 +. ie \\n(.$>1 .rC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +. el .as f1 \fP\\*(rP\fP +.\} +.. diff --git a/usr/src/share/zoneinfo/Makefile b/usr/src/share/zoneinfo/Makefile new file mode 100644 index 0000000000..f396a7f999 --- /dev/null +++ b/usr/src/share/zoneinfo/Makefile @@ -0,0 +1,139 @@ +# @(#)Makefile 5.9 (Berkeley) 2/28/91 + +# Change the line below for your time zone (after finding the zone you want in +# the time zone files, or adding it to a time zone file). +# Alternately, if you discover you've got the wrong time zone, you can just +# zic -l rightzone + +LOCALTIME= US/Pacific + +# If you want something other than Eastern United States time as a template +# for handling POSIX-style time zone environment variables, +# change the line below (after finding the zone you want in the +# time zone files, or adding it to a time zone file). +# Alternately, if you discover you've got the wrong time zone, you can just +# zic -p rightzone + +POSIXRULES= US/Pacific + +# Use an absolute path name for TZDIR unless you're just testing the software. + +TZDIR= ${DESTDIR}/usr/share/zoneinfo + +# If you always want time values interpreted as "seconds since the epoch +# (not counting leap seconds)", use +# REDO= posix_only +# below. If you always want right time values interpreted as "seconds since +# the epoch" (counting leap seconds)", use +# REDO= right_only +# below. If you want both sets of data available, with leap seconds not +# counted normally, use +# REDO= posix_right +# below. If you want both sets of data available, with leap seconds counted +# normally, use +# REDO= right_posix +# below. + +REDO= right_only + +# If you're running on a System V-style system and don't want lint grief, +# add +# -DUSG +# to the end of the "CFLAGS=" line. +# +# If you're running on a system where "strchr" is known as "index", +# (for example, a 4.[012]BSD system), add +# -Dstrchr=index +# to the end of the "CFLAGS=" line. +# +# If you're running on a system with a "mkdir" function, feel free to add +# -Demkdir=mkdir +# to the end of the "CFLAGS=" line +# +# If you want to use System V compatibility code, add +# -DUSG_COMPAT +# to the end of the "CFLAGS=" line. +# +# If your system has a "GMT offset" field in its "struct tm"s +# (or if you decide to add such a field in your system's "time.h" file), +# add the name to a define such as +# -DTM_GMTOFF=tm_gmtoff +# or +# -DTM_GMTOFF=_tm_gmtoff +# to the end of the "CFLAGS=" line. +# +# If your system has a "GMT offset" field in its "struct tm"s +# (or if you decide to add such a field in your system's "time.h" file), +# add the name to a define such as +# -DTM_ZONE=tm_zone +# or +# -DTM_ZONE=_tm_zone +# to the end of the "CFLAGS=" line. +# +# If you want code inspired by certain emerging standards, add +# -DSTD_INSPIRED +# to the end of the "CFLAGS=" line. +# +# If you want Source Code Control System ID's left out of object modules, add +# -DNOID +# to the end of the "CFLAGS=" line. +# +# If you'll never want to handle solar-time-based time zones, add +# -DNOSOLAR +# to the end of the "CFLAGS=" line +# (and comment out the "SDATA=" line below). +# +# If you want to allocate state structures in localtime, add +# -DALL_STATE +# to the end of the "CFLAGS=" line. +# +# If you want an "altzone" variable (a la System V Release 3.1), add +# -DALTZONE +# to the end of the "CFLAGS=" line. +# +# If you want a "gtime" function (a la MACH), add +# -DCMUCS +# to the end of the "CFLAGS=" line + +.PATH: ${.CURDIR}/datfiles +CFLAGS= -DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone +PROG= zic +MAN5= tzfile.0 + +SRCS= zic.c scheck.c ialloc.c + +YDATA= africa antarctica asia australasia europe northamerica \ + southamerica pacificnew etcetera factory +NDATA= systemv +#SDATA= solar87 solar88 solar89 +TDATA= ${YDATA} ${NDATA} ${SDATA} +DATA= ${YDATA} ${NDATA} ${SDATA} leapseconds +USNO= usno1988 usno1989 + +posix_only: ${TDATA} + (cd ${.CURDIR}/datfiles; \ + ../obj/zic -d ${TZDIR} -L /dev/null ${TDATA}) + +right_only: leapseconds ${TDATA} + (cd ${.CURDIR}/datfiles; \ + ../obj/zic -d ${TZDIR} -L leapseconds ${TDATA}) + +other_two: leapseconds ${TDATA} + (cd ${.CURDIR}/datfiles; + ../obj/zic -d ${TZDIR}/posix -L /dev/null ${TDATA}) + (cd ${.CURDIR}/datfiles; \ + ../obj/zic -d ${TZDIR}/right -L leapseconds ${TDATA}) + +posix_right: posix_only other_two + +right_posix: right_only other_two + +install: maninstall ${DATA} ${REDO} + (cd ${.CURDIR}/datfiles; \ + ../obj/zic -d ${TZDIR} -p ${POSIXRULES}) + install -c -o ${BINOWN} -g ${BINGRP} -m 444 \ + ${TZDIR}/${LOCALTIME} ${DESTDIR}/etc/localtime + chown -R ${BINOWN}.${BINGRP} ${TZDIR} + chmod -R a-w ${TZDIR} + +.include diff --git a/usr/src/share/zoneinfo/datfiles/africa b/usr/src/share/zoneinfo/datfiles/africa new file mode 100644 index 0000000000..bed0252ea0 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/africa @@ -0,0 +1,43 @@ +# @(#)africa 4.3 + +############################################################################### + +# Egypt + +# From Bob Devine (January 28, 1988): +# Egypt: DST from first day of May to first of October (ending may +# also be on Sept 30th not 31st -- you might want to ask one of the +# soc.* groups, you might hit someone who could ask an embassy). +# DST since 1960 except for 1981-82. + +# From U. S. Naval Observatory (January 19, 1989): +# EGYPT 2 H AHEAD OF UTC +# EGYPT 3 H AHEAD OF UTC MAY 17 - SEP 30 (AFTER +# EGYPT RAMADAN) + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Egypt 1960 max - May 1 2:00 1:00 " DST" +Rule Egypt 1960 max - Oct 1 2:00 0 - + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Egypt 2:00 Egypt EET%s 1981 + 2:00 - EET 1983 + 2:00 Egypt EET%s + +############################################################################### + +# Libya + +# From Bob Devine (January 28 1988): +# Libya: Since 1982 April 1st to September 30th (?) + +# From U. S. Naval Observatory (January 19, 1989): +# LIBYAN ARAB 1 H AHEAD OF UTC JAMAHIRIYA/LIBYA +# LIBYAN ARAB 2 H AHEAD OF UTC APR 1 - SEP 30 JAMAHIRIYA/LIBYA + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Libya 1982 max - Apr 1 2:00 1:00 " DST" +Rule Libya 1982 max - Sep 30 2:00 0 - + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Libya 2:00 Libya EET%s diff --git a/usr/src/share/zoneinfo/datfiles/antarctica b/usr/src/share/zoneinfo/datfiles/antarctica new file mode 100644 index 0000000000..276dda1fa5 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/antarctica @@ -0,0 +1,4 @@ +# @(#)antarctica 4.1 + +# From Arthur David Olson (February 13, 1988): +# No data available. diff --git a/usr/src/share/zoneinfo/datfiles/asia b/usr/src/share/zoneinfo/datfiles/asia new file mode 100644 index 0000000000..13185b0f58 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/asia @@ -0,0 +1,262 @@ +# @(#)asia 7.1 + +# From Guy Harris: +# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as +# additional information from Tom Yap, Sun Microsystems Intercontinental +# Technical Support (including a page from the Official Airline Guide - +# Worldwide Edition). The names for time zones are guesses. + +############################################################################### + +# People's Republic of China + +# From Guy Harris: +# People's Republic of China. Yes, they really have only one time zone. + +# From Bob Devine (January 28, 1988): +# No they don't. See TIME mag, February 17, 1986 p.52. Even though +# China is across 4 physical time zones, before Feb 1, 1986 only the +# Peking (Bejing) time zone was recognized. Since that date, China +# has two of 'em -- Peking's and Urumqi (named after the capital of +# the Xinjiang Uighur Autonomous Region). I don't know about DST for it. +# +# . . .I just deleted the DST table and this editor makes it too +# painful to suck in another copy.. So, here is what I have for +# DST start/end dates for Peking's time zone (info from AP): +# +# 1986 May 4 - Sept 14 +# 1987 mid-April - ?? + +# From U. S. Naval Observatory (January 19, 1989): +# CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN +# CHINA 9 H AHEAD OF UTC APR 17 - SEP 10 + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule PRC 1970 max - Apr Sun<=14 2:00 1:00 D +Rule PRC 1970 max - Sep Sun<=14 3:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone PRC 8:00 PRC C%sT + +############################################################################### + +# Republic of China + +# From Guy Harris + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone ROC 8:00 - CST + +############################################################################### + +# Hongkong + +# From Guy Harris + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Hongkong 8:00 - HKT + +############################################################################### + +# Iran + +# From Bob Devine (January 28, 1988): +# Iran: Last Sunday in March to third (?) Sunday in +# September. Since the revolution, the official calendar is Monarchic +# calendar; I have no idea what the correspondence between dates are. + +# From U. S. Naval Observatory (January 19, 1989): +# IRAN 3.5H AHEAD OF UTC + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Iran 1988 max - Mar lastSun 2:00 1:00 D +Rule Iran 1988 max - Sep Sun>=15 2:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Iran 3:30 Iran I%sT + +############################################################################### + +# Israel + +# From U. S. Naval Observatory (January 19, 1989): +# ISRAEL 2 H AHEAD OF UTC +# ISRAEL 3 H AHEAD OF UTC APR 10 - SEP 3 + +# From Ephraim Silverberg (April 18, 1989): + +# Prior to 1989, the rules concerning Daylight Savings Time changed every +# year; as information, regarding exact times and dates during this period, +# is not readily available at the present time, the rules commence starting +# with the year 1989. + +# From 1989 onwards the rules are as follows: +# +# 1. Daylight Savings Time commences midnight of the first Saturday night +# following the seven-day festival of Pesach (Passover). The transition +# is from midnight Israel Standard Time to 1 a.m. Israel Daylight Savings +# time. As the Pesach festival is dependent on the Lunar calendar (the +# first day is always on the 15th day of the month of Nisan), the rule +# changes every year on the Gregorian calendar. +# +# 2. Standard Time is reinstated on the Saturday night whereupon Jews +# following the Ashkenazi (European) rite begin to recite the Selichot +# (forgiveness) prayers prior to the Jewish Lunar New Year. The transition +# is from midnight Israel Daylight Savings time to 11 p.m. Israel Standard +# Time. The law (according to the Ashkenazi custom) concerning the +# commencement of the Selichot prayers is described in chapter 128, section +# 5 of the "Code of Jewish Law," by Rabbi Shlomo Ganzfried (translated by +# Hyman E. Goldin): +# +# Beginning with the Sunday [**] before Rosh Hashanah [***], +# we rise early for the service of Selichot (supplications for +# forgiveness). If Rosh Hashanah occurs on Monday or Tuesday, we +# begin saying the Selichot from the Sunday of the preceding week. +# +# This, too, varies from year to year on the Gregorian calendar and, thus, +# two explicit timezone rules are required for each Gregorian year. +# +# [**] actually Saturday night as the Jewish day commences at nightfall. +# [***] the Jewish Lunar New Year. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Zion 1989 only - Apr 30 0:00 1:00 D +Rule Zion 1989 only - Sep 24 0:00 0:00 S +Rule Zion 1990 only - Apr 22 0:00 1:00 D +Rule Zion 1990 only - Sep 16 0:00 0:00 S +Rule Zion 1991 only - Apr 7 0:00 1:00 D +Rule Zion 1991 only - Sep 1 0:00 0:00 S +Rule Zion 1992 only - Apr 26 0:00 1:00 D +Rule Zion 1992 only - Sep 20 0:00 0:00 S +Rule Zion 1993 only - Apr 18 0:00 1:00 D +Rule Zion 1993 only - Sep 12 0:00 0:00 S +Rule Zion 1994 only - Apr 3 0:00 1:00 D +Rule Zion 1994 only - Aug 28 0:00 0:00 S +Rule Zion 1995 only - Apr 23 0:00 1:00 D +Rule Zion 1995 only - Sep 17 0:00 0:00 S +Rule Zion 1996 only - Apr 14 0:00 1:00 D +Rule Zion 1996 only - Sep 8 0:00 0:00 S +Rule Zion 1997 only - May 4 0:00 1:00 D +Rule Zion 1997 only - Sep 28 0:00 0:00 S +Rule Zion 1998 only - Apr 19 0:00 1:00 D +Rule Zion 1998 only - Sep 13 0:00 0:00 S +Rule Zion 1999 only - Apr 11 0:00 1:00 D +Rule Zion 1999 only - Sep 5 0:00 0:00 S +Rule Zion 2000 only - Apr 30 0:00 1:00 D +Rule Zion 2000 only - Sep 24 0:00 0:00 S +Rule Zion 2001 only - Apr 15 0:00 1:00 D +Rule Zion 2001 only - Sep 9 0:00 0:00 S +Rule Zion 2002 only - Apr 7 0:00 1:00 D +Rule Zion 2002 only - Sep 1 0:00 0:00 S +Rule Zion 2003 only - Apr 27 0:00 1:00 D +Rule Zion 2003 only - Sep 21 0:00 0:00 S +Rule Zion 2004 only - Apr 18 0:00 1:00 D +Rule Zion 2004 only - Sep 12 0:00 0:00 S +Rule Zion 2005 only - May 1 0:00 1:00 D +Rule Zion 2005 only - Sep 25 0:00 0:00 S +Rule Zion 2006 only - Apr 23 0:00 1:00 D +Rule Zion 2006 only - Sep 17 0:00 0:00 S +Rule Zion 2007 only - Apr 15 0:00 1:00 D +Rule Zion 2007 only - Sep 9 0:00 0:00 S +Rule Zion 2008 only - Apr 27 0:00 1:00 D +Rule Zion 2008 only - Sep 21 0:00 0:00 S +Rule Zion 2009 only - Apr 19 0:00 1:00 D +Rule Zion 2009 only - Sep 13 0:00 0:00 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Israel 2:00 Zion I%sT + +# The following is a chart of the day of the week and Gregorian date of +# the first day of Pesach and the first day of Rosh Hashanah for the years +# 1989 through 2009 inclusive. +# +# First Day of Passover +# --------------------- +# Gregorian Year Day of Week Month Day +# -------------- ----------- ----- --- +# 1989 Thursday April 20 +# 1990 Tuesday April 10 +# 1991 Saturday March 30 +# 1992 Saturday April 18 +# 1993 Tuesday April 6 +# 1994 Sunday March 27 +# 1995 Saturday April 15 +# 1996 Thursday April 4 +# 1997 Tuesday April 22 +# 1998 Saturday April 11 +# 1999 Thursday April 1 +# 2000 Thursday April 20 +# 2001 Sunday April 8 +# 2002 Thursday March 28 +# 2003 Thursday April 17 +# 2004 Tuesday April 6 +# 2005 Sunday April 24 +# 2006 Thursday April 13 +# 2007 Tuesday April 3 +# 2008 Sunday April 20 +# 2009 Thursday April 9 +# +# First Day of Rosh Hashanah +# -------------------------- +# Gregorian Year Day of Week Month Day +# -------------- ----------- ----- --- +# 1989 Saturday September 30 +# 1990 Thursday September 20 +# 1991 Monday September 9 +# 1992 Monday September 28 +# 1993 Thursday September 16 +# 1994 Tuesday September 6 +# 1995 Monday September 25 +# 1996 Saturday September 14 +# 1997 Thursday October 2 +# 1998 Monday September 21 +# 1999 Saturday September 11 +# 2000 Saturday September 30 +# 2001 Tuesday September 18 +# 2002 Saturday September 7 +# 2003 Saturday September 27 +# 2004 Thursday September 16 +# 2005 Tuesday October 4 +# 2006 Saturday September 23 +# 2007 Thursday September 13 +# 2008 Tuesday September 30 +# 2009 Saturday September 19 + +############################################################################### + +# Japan + +# From Guy Harris + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Japan 9:00 - JST + +############################################################################### + +# Republic of Korea + +# From Guy Harris: +# According to someone at the Korean Times in San Francisco, +# Daylight Savings Time was not observed until 1987. He did not know +# at what time of day DST starts or ends. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule ROK 1987 max - May Sun<=14 2:00 1:00 D +Rule ROK 1987 max - Oct Sun<=14 3:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone ROK 9:00 ROK K%sT + +############################################################################### + +# Lebanon + +# From Bob Devine (January 28, 1988): +# Lebanon: They do have DST but I don't know the dates. + +############################################################################### + +# Singapore + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Singapore 8:00 - SST diff --git a/usr/src/share/zoneinfo/datfiles/australasia b/usr/src/share/zoneinfo/datfiles/australasia new file mode 100644 index 0000000000..749a7afb79 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/australasia @@ -0,0 +1,113 @@ +# @(#)australasia 4.4 + +# Incorporates updates for Australia from Robert Elz' australia 1.1 +# and further updates from the Australian consulate. + +############################################################################### + +# Australia + +# Australian Data (for states with DST), standard rules +# Includes shift in 1987 to follow Vic/NSW rules for ending DST, +# and shift in 1986 to start DST earlier. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Oz 1971 1985 - Oct lastSun 2:00 1:00 - +Rule Oz 1986 max - Oct Sun<=24 2:00 1:00 - +Rule Oz 1972 only - Feb 27 3:00 0 - +Rule Oz 1973 1986 - Mar Sun>=1 3:00 0 - +Rule Oz 1987 max - Mar Sun<=21 3:00 0 - + +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone Australia/Tasmania 10:00 Oz EST +Zone Australia/Queensland 10:00 - EST # No DST here +Zone Australia/North 9:30 - CST # No DST here +Zone Australia/West 8:00 - WST # No DST here +Zone Australia/South 9:30 Oz CST + +# Victoria jumped to a later ending date for DST in 1986 rather than 1987. + +Zone Australia/Victoria 10:00 Oz EST 1985 Oct lastSun 2:00 + 10:00 1:00 EST 1986 Mar Sun<=21 3:00 + 10:00 Oz EST + +# New South Wales and subjurisdictions have their own ideas of a fun time. +# Based on law library research by John Mackin (john@basser.cs.su.oz), +# who notes: +# In Australia, time is not legislated federally, but rather by the +# individual states. Thus, while such terms as ``Eastern Standard Time'' +# [I mean, of course, Australian EST, not any other kind] are in common +# use, _they have NO REAL MEANING_, as they are not defined in the +# legislation. This is very important to understand. +# I have researched New South Wales time only; . . .I hope that perhaps a +# resident of each state could be found to do it for their own state. +# (And I can guarantee that Victoria and NSW are different, so the link +# between them in the current australasia file must be broken.) + +# From Robert Elz (May 5, 1989): +# +# From next year (1990) NSW will revert to ending DST on the 1st +# Sunday in March (rather than the third, which it appears will +# continue to be what everyone else uses). + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule NSW 1971 1985 - Oct lastSun 2:00 1:00 - +Rule NSW 1972 only - Feb lastSun 3:00 0 - +Rule NSW 1973 1981 - Mar Sun>=1 3:00 0 - +Rule NSW 1982 only - Apr 4 3:00 0 - +Rule NSW 1983 1985 - Mar Sun>=1 3:00 0 - +Rule NSW 1986 only - Mar 16 3:00 0 - +Rule NSW 1986 only - Oct 19 2:00 1:00 - +Rule NSW 1987 only - Mar 15 3:00 0 - +Rule NSW 1987 max - Oct lastSun 2:00 1:00 - +Rule NSW 1988 1989 - Mar Sun<=21 3:00 0 - +Rule NSW 1990 max - Mar Sun>=1 3:00 0 - + +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone Australia/NSW 10:00 NSW EST +# `Broken Hill' means the County of Yancowinna. [john@basser.cs.su.oz.au,1/4/89] +Zone Australia/Yancowinna 9:30 NSW ??? +Zone Australia/LHI 10:30 NSW ??? + +# A footnote here: +# +# . . . +# Date: Thu, j19 Feb 87 12:02:17 EST +# From: Bradley White +# . . . +# I am including a description of Australian time zones. . . +# this stuff is definitely accurate. +# . . . +# a) Australian Eastern Time: (EST = GMT+10:00, EDT = GMT+11:00) +# . . . +# Summer of 86/87 - present (current legislation): +# third Sun Oct 02:00 EST -> third [S]un Mar 02:00 EST +# +# If this turns out to be true, substitute Sun<=21 (third Sunday in October) +# for Sun<=24 (next-to-last Sunday in October) above. . .some time before +# October 1988, the first time it makes a difference. + +############################################################################### + +# New Zealand + +# New Zealand, from Elz' asia 1.1 +# Elz says "no guarantees" +# The 1989/90 rule may only last a year. It is a trial that is +# subject to Ministerial approval to be made permanent. +# The termination of "daylight saving" may actually be second +# to last Sunday in March. Noone spoken to was very sure. + +# From U. S. Naval Observatory (January 19, 1989): +# NEW ZEALAND 12 H AHEAD OF UTC (EXCLUDING CHATHAM ISLAND) +# NEW ZEALAND 13 H AHEAD OF UTC OCT 30, '88-MAR 4, '89 +# NEW ZEALAND 12H45M AHEAD OF UTC CHATHAM ISLAND + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule NZ 1974 1988 - Oct lastSun 2:00 1:00 D +Rule NZ 1989 max - Oct Sun>=8 2:00 1:00 D +Rule NZ 1975 1989 - Mar Sun>=1 3:00 0 S +Rule NZ 1990 max - Mar Sun>=15 3:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone NZ 12:00 NZ NZ%sT # New Zealand diff --git a/usr/src/share/zoneinfo/datfiles/etcetera b/usr/src/share/zoneinfo/datfiles/etcetera new file mode 100644 index 0000000000..dbda4dbd23 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/etcetera @@ -0,0 +1,55 @@ +# @(#)etcetera 4.4 + +# All of these are set up just so people can "zic -l" to a timezone +# that's right for their area, even if it doesn't have a name or dst rules +# (half hour zones are too much to bother with -- when someone asks!) + +Zone GMT 0 - GMT + +Zone GMT-12 -12 - GMT-1200 +Zone GMT-11 -11 - GMT-1100 +Zone GMT-10 -10 - GMT-1000 +Zone GMT-9 -9 - GMT-0900 +Zone GMT-8 -8 - GMT-0800 +Zone GMT-7 -7 - GMT-0700 +Zone GMT-6 -6 - GMT-0600 +Zone GMT-5 -5 - GMT-0500 +Zone GMT-4 -4 - GMT-0400 +Zone GMT-3 -3 - GMT-0300 +Zone GMT-2 -2 - GMT-0200 +Zone GMT-1 -1 - GMT-0100 +Zone GMT+1 1 - GMT+0100 +Zone GMT+2 2 - GMT+0200 +Zone GMT+3 3 - GMT+0300 +Zone GMT+4 4 - GMT+0400 +Zone GMT+5 5 - GMT+0500 +Zone GMT+6 6 - GMT+0600 +Zone GMT+7 7 - GMT+0700 +Zone GMT+8 8 - GMT+0800 +Zone GMT+9 9 - GMT+0900 +Zone GMT+10 10 - GMT+1000 +Zone GMT+11 11 - GMT+1100 +Zone GMT+12 12 - GMT+1200 +Zone GMT+13 13 - GMT+1300 # GMT+12 with DST + +Link GMT UTC +Link GMT UCT +Link GMT Universal +Link GMT Greenwich +Link GMT Zulu +Link GMT GMT-0 +Link GMT GMT+0 +Link GMT GMT0 +Link GMT+1 GMT1 +Link GMT+2 GMT2 +Link GMT+3 GMT3 +Link GMT+4 GMT4 +Link GMT+5 GMT5 +Link GMT+6 GMT6 +Link GMT+7 GMT7 +Link GMT+8 GMT8 +Link GMT+9 GMT9 +Link GMT+10 GMT10 +Link GMT+11 GMT11 +Link GMT+12 GMT12 +Link GMT+13 GMT13 diff --git a/usr/src/share/zoneinfo/datfiles/europe b/usr/src/share/zoneinfo/datfiles/europe new file mode 100644 index 0000000000..1fdffa3b3c --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/europe @@ -0,0 +1,224 @@ +# @(#)europe 4.10 + +# International country codes are used to identify countries' rules and +# zones +# +# This data is by no means authoritative; if you think you know better, go +# ahead and edit the file (and please send any changes to +# ado@ncifcrf.gov for general use in the future). + +############################################################################### + +# United Kingdom + +# From Arthur David Olson (January 19, 1989): +# +# The starting and ending dates below (from which the rules are derived) +# are from Whitaker's Almanack for 1987, page 146. +# 1960 is the earliest year for which dates are given; +# Whitaker's notes that British Summer Time (and, in some years, Double Summer +# Time) was observed in earlier years but does not give start and end dates. +# +# A source at the British Information Office in New York avers that it's +# known as "British" Summer Time in all parts of the United Kingdom. +# 1960 April 10 October 2 (yes, 2, according to the almanac) +# 1961 March 26 October 29 +# 1962 March 25 October 28 +# 1963 March 31 October 27 +# 1964 March 22 October 25 +# 1965 March 21 October 24 +# 1966 March 20 October 23 +# 1967 March 19 October 29 +# 1968 February 18 October 27 +# "British Standard Time, also one hour ahead of G. M. T., was kept between +# 1968 Oct. 27-1971 Oct. 31." +# 1972 March 19 October 29 +# 1973 March 18 October 28 +# 1974 March 17 October 27 +# 1975 March 16 October 26 +# 1976 March 21 October 24 +# 1977 March 20 October 23 +# 1978 March 19 October 29 +# 1979 March 18 October 28 +# 1980 March 16 October 26 +# 1981 March 29 October 25 +# 1982 March 28 October 24 +# 1983 March 27 October 23 +# 1984 March 25 October 28 +# 1985 March 31 October 27 +# 1986 March 30 October 26 +# 1987 March 29 October 25 + +# From an Anonymous U. K. Donor (January 4, 1989): +# +# It is NOT possible to predict when [British Summer Time] will change +# in a future year. +# +# (The admiralty calculate when they think it should be (no more that a couple +# of years in advance) and advise the government who then decide whether or +# not they will take the admiralty's advice) +# +# ...the Gre[e]nwich...observatory...[was] very helpful. +# +# I was not able to track down the Admiralty formula (I tried hard but failed) + +# ... +# Date: 4 Jan 89 08:57:25 GMT (Wed) +# From: Jonathan Leffler +# ... +# [British Summer Time] is fixed annually by Act of Parliament. +# If you can predict what Parliament will do, you should be in +# politics making a fortune, not computing. +# +# Summer time ends on Sunday 29 October 1989. + +# ... +# Date: 5 Jan 89 09:50:38 GMT (Thu) +# From: Peter Kendell +# ... +# +# From my Collins Diary for 1989 - +# +# "At the time of going to press the Home Office was unable to confirm +# the 1989 starting and finishing dates for BST*, but expressed the +# view that 26 March and 29 October were the likeliest dates to be +# adopted" +# +# *British Summer Time. + +# From an Anonymous U. K. Donor (January 5, 1989): +# +# . . .our government is seriously considering applying Double Summer Time - +# putting the clocks forwards and back TWO hours for daylight saving time. +# This is advocated to standardise time in the EEC - we're all supposed to +# keep the same time and to change the clocks on the same dates in the future. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +# Historic starting rules +Rule GB-Eire 1960 only - Apr 10 1:00s 1:00 BST +Rule GB-Eire 1961 1963 - Mar lastSun 1:00s 1:00 BST +Rule GB-Eire 1964 1967 - Mar Sun>=19 1:00s 1:00 BST +Rule GB-Eire 1968 only - Feb 18 1:00s 1:00 BST +Rule GB-Eire 1972 1980 - Mar Sun>=16 1:00s 1:00 BST +# Historic ending rules +Rule GB-Eire 1960 only - Oct 2 1:00s 0 GMT +Rule GB-Eire 1961 1967 - Oct Sun>=23 1:00s 0 GMT +Rule GB-Eire 1971 only - Oct 31 1:00s 0 GMT +# Current rules +Rule GB-Eire 1981 max - Mar lastSun 1:00s 1:00 BST +Rule GB-Eire 1972 max - Oct Sun>=23 1:00s 0 GMT + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone GB-Eire 0:00 GB-Eire %s 1968 Oct 27 1:00s + 1:00 - BST 1971 Oct 31 1:00s + 0:00 GB-Eire %s + +############################################################################### + +# Continental Europe + +# The use of 1986 as starting years below is conservative. + +Rule W-Eur 1986 max - Mar lastSun 1:00s 1:00 " DST" +Rule W-Eur 1986 max - Sep lastSun 1:00s 0 - + +Rule M-Eur 1986 max - Mar lastSun 2:00s 1:00 " DST" +Rule M-Eur 1986 max - Sep lastSun 2:00s 0 - + +Rule E-Eur 1986 max - Mar lastSun 3:00s 1:00 " DST" +Rule E-Eur 1986 max - Sep lastSun 3:00s 0 - + +Rule Turkey 1986 max - Mar lastSun 1:00 1:00 " DST" +Rule Turkey 1986 max - Sep lastSun 1:00 0 - + +Rule W-SU 1986 max - Mar lastSun 2:00s 1:00 " DST" +Rule W-SU 1986 max - Sep lastSun 2:00s 0 - + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone WET 0:00 W-Eur WET%s +Zone Iceland 0:00 - WET +Zone MET 1:00 M-Eur MET%s +Zone Poland 1:00 W-Eur MET%s +Zone EET 2:00 E-Eur EET%s +Zone Turkey 3:00 Turkey EET%s +Zone W-SU 3:00 M-Eur ???? + +# Tom Hoffman says that MET is also known as Central European Time + +Link MET CET + +############################################################################### + +# One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from +# the last Sunday in March to the last Sunday in September in 1986. +# The source shows Romania changing a day later than everybody else. +# +# According to Bernard Sieloff's source, Poland is in the MET time zone but +# uses the WE DST rules. The Western USSR uses EET+1 and ME DST rules. +# Bernard Sieloff's source claims Romania switches on the same day, but at +# 00:00 standard time (i.e., 01:00 DST). It also claims that Turkey +# switches on the same day, but switches on at 01:00 standard time +# and off at 00:00 standard time (i.e., 01:00 DST) + +# ... +# Date: Wed, 28 Jan 87 16:56:27 -0100 +# From: seismo!mcvax!cgcha!wtho (Tom Hofmann) +# Message-Id: <8701281556.AA22174@cgcha.uucp> +# ... +# +# ...the European time rules are...standardized since 1981, when +# most European coun[tr]ies started DST. Before that year, only +# a few countries (UK, France, Italy) had DST, each according +# to own national rules. In 1981, however, DST started on +# 'Apr firstSun', and not on 'Mar lastSun' as in the following +# years... +# But also since 1981 there are some more national exceptions +# than listed in 'europe': Switzerland, for example, joined DST +# one year later, Denmark ended DST on 'Oct 1' instead of 'Sep +# lastSun' in 1981---I don't know how they handle now. +# +# Finally, DST ist always from 'Apr 1' to 'Oct 1' in the +# Soviet Union (as far as I know). +# +# Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG, +# 4002 Basle, Switzerland +# UUCP: ...!mcvax!cernvax!cgcha!wtho + +# ... +# Date: Wed, 4 Feb 87 22:35:22 +0100 +# From: seismo!mcvax!cwi.nl!dik (Dik T. Winter) +# ... +# +# The information from Tom Hofmann is (as far as I know) not entirely correct. +# After a request from chongo at amdahl I tried to retrieve all information +# about DST in Europe. I was able to find all from about 1969. +# +# ...standardization on DST in Europe started in about 1977 with switches on +# first Sunday in April and last Sunday in September... +# In 1981 UK joined Europe insofar that +# the starting day for both shifted to last Sunday in March. And from 1982 +# the whole of Europe used DST, with switch dates April 1 and October 1 in +# the Sov[i]et Union. In 1985 the SU reverted to standard Europe[a]n switch +# dates... +# +# It should also be remembered that time-zones are not constants; e.g. +# Portugal switched in 1976 from MET (or CET) to WET with DST... +# Note also that though there were rules for switch dates not +# all countries abided to these dates, and many individual deviations +# occurred, though not since 1982 I believe. Another note: it is always +# assumed that DST is 1 hour ahead of normal time, this need not be the +# case; at least in the Netherlands there have been times when DST was 2 hours +# in advance of normal time. +# +# ... +# dik t. winter, cwi, amsterdam, nederland +# INTERNET : dik@cwi.nl +# BITNET/EARN: dik@mcvax + +# From Bob Devine (January 28, 1988): +# ... +# Greece: Last Sunday in April to last Sunday in September (iffy on dates). +# Since 1978. Change at midnight. +# ... +# Monaco: has same DST as France. +# ... diff --git a/usr/src/share/zoneinfo/datfiles/factory b/usr/src/share/zoneinfo/datfiles/factory new file mode 100644 index 0000000000..c1c38c180c --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/factory @@ -0,0 +1,8 @@ +# @(#)factory 1.1 + +# For companies who don't want to put time zone specification in +# their installation procedures. When users run date, they'll get the message. +# Also useful for the "comp.sources" version. + +# Zone NAME GMTOFF RULES FORMAT +Zone Factory 0 - "Local time zone must be set--see zic manual page" diff --git a/usr/src/share/zoneinfo/datfiles/leapseconds b/usr/src/share/zoneinfo/datfiles/leapseconds new file mode 100644 index 0000000000..225eb01132 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/leapseconds @@ -0,0 +1,28 @@ +# @(#)leapseconds 4.1 + +# Allowance for leapseconds added to each timezone file. + +# The correction (+ or -) is made at the given time, so lines +# will typically look like: +# Leap YEAR MON DAY 23:59:60 + R/S +# or +# Leap YEAR MON DAY 23:59:59 - R/S + +# If the leapsecond is Rolling (R) the given time is local time +# If the leapsecond is Stationary (S) the given time is GMT + +# Leap YEAR MONTH DAY HH:MM:SS CORR R/S +Leap 1972 Jun 30 23:59:60 + S +Leap 1972 Dec 31 23:59:60 + S +Leap 1973 Dec 31 23:59:60 + S +Leap 1974 Dec 31 23:59:60 + S +Leap 1975 Dec 31 23:59:60 + S +Leap 1976 Dec 31 23:59:60 + S +Leap 1977 Dec 31 23:59:60 + S +Leap 1978 Dec 31 23:59:60 + S +Leap 1979 Dec 31 23:59:60 + S +Leap 1981 Jun 30 23:59:60 + S +Leap 1982 Jun 30 23:59:60 + S +Leap 1983 Jun 30 23:59:60 + S +Leap 1985 Jun 30 23:59:60 + S +Leap 1987 Dec 31 23:59:60 + S diff --git a/usr/src/share/zoneinfo/datfiles/northamerica b/usr/src/share/zoneinfo/datfiles/northamerica new file mode 100644 index 0000000000..53a1df1265 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/northamerica @@ -0,0 +1,321 @@ +# @(#)northamerica 4.8 + +############################################################################### + +# United States + +# From Arthur David Olson: +# US Daylight Saving Time ended on the last Sunday of *October* in 1974. +# See, for example, the front page of the Saturday, October 26, 1974 +# and Sunday, October 27, 1974 editions of the Washington Post. + +# From seismo!munnari!kre: +# I recall also being told by someone once that Canada didn't have +# the DST variations in 74/75 that the US did, but I am not nearly +# sure enough of this to add anything. + +# From Arthur David Olson: +# The above has been confirmed by Bob Devine; we'll go with it here. + +# From Arthur David Olson: +# Before the Uniform Time Act of 1966 took effect in 1967, observance of +# Daylight Saving Time in the US was by local option, except during wartime. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule US 1918 1919 - Mar lastSun 2:00 1:00 D +Rule US 1918 1919 - Oct lastSun 2:00 0 S +Rule US 1942 only - Feb 9 2:00 1:00 W # War +Rule US 1945 only - Sep 30 2:00 0 S +Rule US 1967 max - Oct lastSun 2:00 0 S +Rule US 1967 1973 - Apr lastSun 2:00 1:00 D +Rule US 1974 only - Jan 6 2:00 1:00 D +Rule US 1975 only - Feb 23 2:00 1:00 D +Rule US 1976 1986 - Apr lastSun 2:00 1:00 D +Rule US 1987 max - Apr Sun>=1 2:00 1:00 D + +# From Bob Devine (January 28, 1988): +# ...Alaska (and Hawaii) had the timezone names changed in 1967. +# old new +# Pacific Standard Time(PST) -same- +# Yukon Standard Time(YST) -same- +# Central Alaska S.T. (CAT) Alaska-Hawaii St[an]dard Time (AHST) +# Nome Standard Time (NT) Bering Standard Time (BST) +# +# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz. +# The YST zone now covers nearly all of the state, AHST just part +# of the Aleutian islands. No DST. + +# From U. S. Naval Observatory (January 19, 1989): +# USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON +# USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30 +# USA CENTRAL 6 H BEHIND UTC CHICAGO, HOUSTON +# USA CENTRAL 5 H BEHIND UTC APR 3 - OCT 30 +# USA MOUNTAIN 7 H BEHIND UTC DENVER +# USA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 30 +# USA PACIFIC 8 H BEHIND UTC L.A., SAN FRANCISCO +# USA PACIFIC 7 H BEHIND UTC APR 3 - OCT 30 +# USA ALASKA STD 9 H BEHIND UTC MOST OF ALASKA (AKST) +# USA ALASKA STD 8 H BEHIND UTC APR 3 - OCT 30 (AKDT) +# USA ALEUTIAN 10 H BEHIND UTC ISLANDS WEST OF 170W +# USA - " - 9 H BEHIND UTC APR 3 - OCT 30 +# USA HAWAII 10 H BEHIND UTC +# USA BERING 11 H BEHIND UTC SAMOA, MIDWAY + +# From Arthur David Olson (January 21, 1989): +# The above dates are for 1988. +# Note the "AKST" and "AKDT" abbreviations, the claim that there's +# no DST in Samoa, and the claim that there is DST in Alaska and the +# Aleutians. + +# From Arthur David Olson (February 13, 1988): +# Legal standard time zone names, from United States Code (1982 Edition and +# Supplement III), Title 15, Chapter 6, Section 260 and forward. First, names +# up to April 1, 1967 (when most provisions of the Uniform Time Act of 1966 +# took effect), as explained in sections 263 and 261: +# (none) +# United States standard eastern time +# United States standard mountain time +# United States standard central time +# United States standard Pacific time +# (none) +# United States standard Alaska time +# (none) +# Next, names from April 1, 1967 until November 30, 1983 (the date for +# public law 98-181): +# Atlantic standard time +# eastern standard time +# central standard time +# mountain standard time +# Pacific standard time +# Yukon standard time +# Alaska-Hawaii standard time +# Bering standard time +# And after November 30, 1983: +# Atlantic standard time +# eastern standard time +# central standard time +# mountain standard time +# Pacific standard time +# Alaska standard time +# Hawaii-Aleutian standard time +# Samoa standard time +# The law doesn't give abbreviations. + +# Easy stuff first--including Alaska, where we ignore history (since we +# can't tell if we should give Yukon time or Alaska-Hawaii time for "old" +# times). + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone US/Eastern -5:00 US E%sT +Zone US/Central -6:00 US C%sT +Zone US/Mountain -7:00 US M%sT +Zone US/Pacific -8:00 US P%sT +Zone US/Alaska -9:00 US AK%sT # Abbreviation per USNO + +# Mainland US areas that are always Standard as of 1986. + +Zone US/East-Indiana -5:00 US E%sT 1946 + -5:00 - EST # Always EST as of 1986 +Zone US/Arizona -7:00 US M%sT 1946 + -7:00 - MST # Always MST as of 1986 + +# From Arthur David Olson (February 13, 1988): +# However. . .a writer from the Inter Tribal Council of Arizona, Inc., +# notes in private correspondence dated 12/28/87 that "Presently, only the +# Navajo Nation participates in the Daylight Saving Time policy, due to its +# large size and location in three states." (The "only" means that other +# tribal nations don't use DST.) + +Link US/Mountain Navajo + +# From Bob Devine (January 28, 1988): +# Michigan didn't observe DST from 1968 to 1973. + +Zone US/Michigan -5:00 US E%sT 1968 + -5:00 - EST 1973 + -5:00 US E%sT + +# Samoa just changes names. No DST, per Naval Observatory. + +Zone US/Samoa -11:00 - NST 1967 Apr 1 # N=Nome + -11:00 - BST 1983 Nov 30 # B=Bering + -11:00 - SST # S=Samoa + +# Aleutian has a name change. DST, per Naval Observatory. + +Zone US/Aleutian -10:00 US AH%sT 1983 Nov 30 + -10:00 US HA%sT + +# From Arthur David Olson: +# And then there's Hawaii. +# DST was observed for one day in 1933; +# Standard time was change by half an hour in 1947; +# it's always standard as of 1986. + +Zone US/Hawaii -10:30 US H%sT 1933 Apr 30 2:00 + -10:30 1:00 HDT 1933 May 1 2:00 + -10:30 US H%sT 1947 Jun 8 2:00 + -10:00 - HST + +# Old names, for S5 users + +# Link LINK-FROM LINK-TO +# Link US/Eastern EST5EDT +# Link US/Central CST6CDT +# Link US/Mountain MST7MDT +# Link US/Pacific PST8PDT +# Link US/East-Indiana EST +# Link US/Arizona MST +# Link US/Hawaii HST + +################################################################################ + +# Canada + +# Canada is reportedly lots easier than the US--leastways since 1951. +# I don't know what they did before then. +# 4.3BSD claims that it's perfectly regular. +# According to a posting in "comp.bugs.misc", "comp.unix.wizards", etc. +# on February 8, 1987, by Dave Sherman of the Law Society of Upper Canada, +# "...Canada (well, Ontario and at least some of the other provinces) are +# adopting the new daylight savings time rules...". We assume all of +# Canada is doing so. + +# From Bob Devine (January 28, 1988): +# All of Canada did have DST from your first rule except Saskatchewan. +# Which parts did not observe DST is hard to pinpoint but most of the +# province follows the rules. +# NOTE: those that didn't have DST for that rule, also +# probably did not have it for several years previous. + +# From U. S. Naval Observatory (January 19, 1989): +# CANADA NEW FDL 3.5H BEHIND UTC ST.JOHN'S +# CANADA NEW FDL 1.5H BEHIND UTC APR 3 - OCT 29 +# CANADA ATLANTIC 4 H BEHIND UTC HALIFAX +# CANADA ATLANTIC 3 H BEHIND UTC APR 3 - OCT 29 +# CANADA EASTERN 5 H BEHIND UTC TORONTO, MONTREAL, OTTAWA +# CANADA EASTERN 4 H BEHIND UTC APR 3 - OCT 29 +# CANADA CENTRAL 6 H BEHIND UTC REGINA, WINNIPEG +# CANADA CENTRAL 5 H BEHIND UTC APR 3 - OCT 29 +# CANADA MOUNTAIN 7 H BEHIND UTC CALGARY, EDMONTON +# CANADA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 29 +# CANADA PACIFIC 8 H BEHIND UTC VANCOUVER +# CANADA PACIFIC 7 H BEHIND UTC APR 3 - OCT 29 +# CANADA YUKON SAME AS PACIFIC DAWSON + +# From Arthur David Olson (January 21, 1989): +# April 3 fell on a Sunday in 1988; October 29 fell on a Sunday in 1989. Ahem. +# Note claim that there's double DST in Newfoundland and that Yukon should +# be same as Pacific. Stick with rules posted in 1988 until more authoritative +# information is available. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Canada 1969 max - Oct lastSun 2:00 0 S +Rule Canada 1969 1986 - Apr lastSun 2:00 1:00 D +Rule Canada 1987 max - Apr Sun>=1 2:00 1:00 D + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +# Bob Devine says that DST *is* observed in Newfoundland +Zone Canada/Newfoundland -3:30 Canada N%sT +Zone Canada/Atlantic -4:00 Canada A%sT +Zone Canada/Eastern -5:00 Canada E%sT +Zone Canada/Central -6:00 Canada C%sT +Zone Canada/East-Saskatchewan -6:00 - CST # No DST as of 1987 +Zone Canada/Mountain -7:00 Canada M%sT +Zone Canada/Pacific -8:00 Canada P%sT +Zone Canada/Yukon -9:00 Canada Y%sT + +############################################################################### + +# Mexico + +# From Guy Harris: +# Rules are from the Official Airline Guide, Worldwide Edition, for 1987. +# Rules prior to 1987 are unknown. +# The comments in the OAG say "Only Ensenada, Mexicale, San Felipe and Tijuana +# observe DST." This is presumably Baja California Norte, above 28th parallel, +# as listed there; Mexico/BajaSur is for "Baja California Sur and N. Pacific +# Coast (States of Sinaloa and Sonora)." + +# From Bob Devine (January 28, 1988): +# The Federal District (where Mexico City is) has observed [DST] several +# times but not recently. +# +# I don't where to drawn the line in the North Baja area. 28th latitude +# sounds good -- but it may be higher (how far [d]o radio stations from +# San Diego affect culture?). +# +# The dates of DST probably go back to 1981. The rules are the same as +# US's. This is going to be a headache for US presidential electi[o]n years! + +# From Arthur David Olson (February 13, 1988) +# Since the 1981 starting date is only "probable," we'll keep the 1987 +# starting date below. + +# From U. S. Naval Observatory (January 19, 1989): +# MEXICO BAJA CAL N 7 H BEHIND UTC BAJA CALIFORNIA SUR AND +# MEXICO BAJA CAL N N. PACIFIC COAST (STATES +# MEXICO BAJA CAL N OF SINALOA AND SONORA) +# MEXICO BAJA CAL N 8 H BEHIND UTC ABOVE 28TH PARALLAL APR 3 +# MEXICO BAJA CAL N - OCT 29 +# MEXICO BAJA CAL N 7 H BEHIND UTC ABOVE 28TH PARALLAL APR 3 +# MEXICO BAJA CAL N - 0CT 29 +# MEXICO 6 H BEHIND UTC STATES OF DURANGO, +# MEXICO COAHUILA, NUEVO LEON, +# MEXICO TAMAULIPAS +# MEXICO 5 H BEHIND UTC STATES OF DURANGO, +# MEXICO COAHUILA, NUEVO LEON, +# MEXICO TAMAULIPAS APR 3 - OCT 29 +# MEXICO 6 H BEHIND UTC GENERAL MEXICO, STATES OF +# MEXICO CAMPECHE, QUINTANA ROO AND +# MEXICO YUCATAN + +# From Arthur David Olson (January 21, 1989): +# April 3 fell on a Sunday in 1988; October 29 fell on a Sunday in 1989. Ahem. +# USNO claims there should be four Mexican zones rather than three: +# a zone that's GMT-8 with DST; a zone that's always GMT-7; +# a zone that's GMT-6 with DST; and a zone that's always GMT-6. +# Wait for more authoritative information before changing. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Mexico 1987 max - Oct lastSun 2:00 0 S +Rule Mexico 1987 max - Apr Sun>=1 2:00 1:00 D + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Mexico/BajaNorte -8:00 Mexico P%sT +Zone Mexico/BajaSur -7:00 - MST +Zone Mexico/General -6:00 - CST + +############################################################################### + +# Jamaica + +# From Bob Devine (January 28, 1988): +# Follows US rules. + +# From U. S. Naval Observatory (January 19, 1989): +# JAMAICA 5 H BEHIND UTC + +Link US/Eastern Jamaica + +############################################################################### + +# Cuba + +# From Bob Devine (January 28, 1988): +# . . .DST is from 2nd Sunday in May to 2nd Sunday in October since 1981. +# Change at midnight. In 1979 & 1980, started at 3rd Sunday in March +# (I think). + +# From U. S. Naval Observatory (January 19, 1989): +# CUBA 5 H BEHIND UTC +# CUBA 4 H BEHIND UTC MAR 20 - OCT 8 + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Cuba 1979 1980 - Mar Sun>=15 0:00 1:00 D +Rule Cuba 1979 1980 - Oct Sun>=8 0:00 0 S +Rule Cuba 1981 max - May Sun>=8 0:00 1:00 D +Rule Cuba 1981 max - Oct Sun>=8 0:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT +Zone Cuba -5:00 Cuba C%sT diff --git a/usr/src/share/zoneinfo/datfiles/pacificnew b/usr/src/share/zoneinfo/datfiles/pacificnew new file mode 100644 index 0000000000..8e6850c730 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/pacificnew @@ -0,0 +1,21 @@ +# @(#)pacificnew 4.4 + +# From Arthur David Olson (January 18, 1989): +# On November 10, 1987, the U. S. House of Representatives passed a bill +# (H.R. 435), the "Uniform Poll Closing Time Act", establishing +# "Pacific Presidential Election Time"; it was not acted on by the Senate +# before the end of the 100th Congress and so died. +# The bill has been reintroduced in the 101st Congress as H. R. 18; +# H. R. 96 also deals with poll closing time. Either bill would have to be +# passed by both the House and Senate and signed by the President (or have +# the President's veto overridden by the House and Senate) before becoming law. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Twilite 1989 max - Apr Sun>=1 2:00 1:00 D +Rule Twilite 1989 max uspres Oct lastSun 2:00 1:00 PE +Rule Twilite 1989 max uspres Nov Sun>=7 2:00 0 S +Rule Twilite 1989 max nonpres Oct lastSun 2:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone US/Pacific-New -8:00 US P%sT 1989 + -8:00 Twilite P%sT diff --git a/usr/src/share/zoneinfo/datfiles/solar87 b/usr/src/share/zoneinfo/datfiles/solar87 new file mode 100644 index 0000000000..5067457054 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/solar87 @@ -0,0 +1,386 @@ +# @(#)solar87 4.1 + +# So much for footnotes about Saudi Arabia. +# Apparent noon times below are for Riyadh; your mileage will vary. +# Times were computed using formulas in the U.S. Naval Observatory's +# Almanac for Computers 1987; the formulas "will give EqT to an accuracy of +# [plus or minus two] seconds during the current year." +# +# Rounding to the nearest five seconds results in fewer than +# 256 different "time types"--a limit that's faced because time types are +# stored on disk as unsigned chars. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule sol87 1987 only - Jan 1 12:03:20s -0:03:20 - +Rule sol87 1987 only - Jan 2 12:03:50s -0:03:50 - +Rule sol87 1987 only - Jan 3 12:04:15s -0:04:15 - +Rule sol87 1987 only - Jan 4 12:04:45s -0:04:45 - +Rule sol87 1987 only - Jan 5 12:05:10s -0:05:10 - +Rule sol87 1987 only - Jan 6 12:05:40s -0:05:40 - +Rule sol87 1987 only - Jan 7 12:06:05s -0:06:05 - +Rule sol87 1987 only - Jan 8 12:06:30s -0:06:30 - +Rule sol87 1987 only - Jan 9 12:06:55s -0:06:55 - +Rule sol87 1987 only - Jan 10 12:07:20s -0:07:20 - +Rule sol87 1987 only - Jan 11 12:07:45s -0:07:45 - +Rule sol87 1987 only - Jan 12 12:08:10s -0:08:10 - +Rule sol87 1987 only - Jan 13 12:08:30s -0:08:30 - +Rule sol87 1987 only - Jan 14 12:08:55s -0:08:55 - +Rule sol87 1987 only - Jan 15 12:09:15s -0:09:15 - +Rule sol87 1987 only - Jan 16 12:09:35s -0:09:35 - +Rule sol87 1987 only - Jan 17 12:09:55s -0:09:55 - +Rule sol87 1987 only - Jan 18 12:10:15s -0:10:15 - +Rule sol87 1987 only - Jan 19 12:10:35s -0:10:35 - +Rule sol87 1987 only - Jan 20 12:10:55s -0:10:55 - +Rule sol87 1987 only - Jan 21 12:11:10s -0:11:10 - +Rule sol87 1987 only - Jan 22 12:11:30s -0:11:30 - +Rule sol87 1987 only - Jan 23 12:11:45s -0:11:45 - +Rule sol87 1987 only - Jan 24 12:12:00s -0:12:00 - +Rule sol87 1987 only - Jan 25 12:12:15s -0:12:15 - +Rule sol87 1987 only - Jan 26 12:12:30s -0:12:30 - +Rule sol87 1987 only - Jan 27 12:12:40s -0:12:40 - +Rule sol87 1987 only - Jan 28 12:12:55s -0:12:55 - +Rule sol87 1987 only - Jan 29 12:13:05s -0:13:05 - +Rule sol87 1987 only - Jan 30 12:13:15s -0:13:15 - +Rule sol87 1987 only - Jan 31 12:13:25s -0:13:25 - +Rule sol87 1987 only - Feb 1 12:13:35s -0:13:35 - +Rule sol87 1987 only - Feb 2 12:13:40s -0:13:40 - +Rule sol87 1987 only - Feb 3 12:13:50s -0:13:50 - +Rule sol87 1987 only - Feb 4 12:13:55s -0:13:55 - +Rule sol87 1987 only - Feb 5 12:14:00s -0:14:00 - +Rule sol87 1987 only - Feb 6 12:14:05s -0:14:05 - +Rule sol87 1987 only - Feb 7 12:14:10s -0:14:10 - +Rule sol87 1987 only - Feb 8 12:14:10s -0:14:10 - +Rule sol87 1987 only - Feb 9 12:14:15s -0:14:15 - +Rule sol87 1987 only - Feb 10 12:14:15s -0:14:15 - +Rule sol87 1987 only - Feb 11 12:14:15s -0:14:15 - +Rule sol87 1987 only - Feb 12 12:14:15s -0:14:15 - +Rule sol87 1987 only - Feb 13 12:14:15s -0:14:15 - +Rule sol87 1987 only - Feb 14 12:14:15s -0:14:15 - +Rule sol87 1987 only - Feb 15 12:14:10s -0:14:10 - +Rule sol87 1987 only - Feb 16 12:14:10s -0:14:10 - +Rule sol87 1987 only - Feb 17 12:14:05s -0:14:05 - +Rule sol87 1987 only - Feb 18 12:14:00s -0:14:00 - +Rule sol87 1987 only - Feb 19 12:13:55s -0:13:55 - +Rule sol87 1987 only - Feb 20 12:13:50s -0:13:50 - +Rule sol87 1987 only - Feb 21 12:13:45s -0:13:45 - +Rule sol87 1987 only - Feb 22 12:13:35s -0:13:35 - +Rule sol87 1987 only - Feb 23 12:13:30s -0:13:30 - +Rule sol87 1987 only - Feb 24 12:13:20s -0:13:20 - +Rule sol87 1987 only - Feb 25 12:13:10s -0:13:10 - +Rule sol87 1987 only - Feb 26 12:13:00s -0:13:00 - +Rule sol87 1987 only - Feb 27 12:12:50s -0:12:50 - +Rule sol87 1987 only - Feb 28 12:12:40s -0:12:40 - +Rule sol87 1987 only - Mar 1 12:12:30s -0:12:30 - +Rule sol87 1987 only - Mar 2 12:12:20s -0:12:20 - +Rule sol87 1987 only - Mar 3 12:12:05s -0:12:05 - +Rule sol87 1987 only - Mar 4 12:11:55s -0:11:55 - +Rule sol87 1987 only - Mar 5 12:11:40s -0:11:40 - +Rule sol87 1987 only - Mar 6 12:11:25s -0:11:25 - +Rule sol87 1987 only - Mar 7 12:11:15s -0:11:15 - +Rule sol87 1987 only - Mar 8 12:11:00s -0:11:00 - +Rule sol87 1987 only - Mar 9 12:10:45s -0:10:45 - +Rule sol87 1987 only - Mar 10 12:10:30s -0:10:30 - +Rule sol87 1987 only - Mar 11 12:10:15s -0:10:15 - +Rule sol87 1987 only - Mar 12 12:09:55s -0:09:55 - +Rule sol87 1987 only - Mar 13 12:09:40s -0:09:40 - +Rule sol87 1987 only - Mar 14 12:09:25s -0:09:25 - +Rule sol87 1987 only - Mar 15 12:09:10s -0:09:10 - +Rule sol87 1987 only - Mar 16 12:08:50s -0:08:50 - +Rule sol87 1987 only - Mar 17 12:08:35s -0:08:35 - +Rule sol87 1987 only - Mar 18 12:08:15s -0:08:15 - +Rule sol87 1987 only - Mar 19 12:08:00s -0:08:00 - +Rule sol87 1987 only - Mar 20 12:07:40s -0:07:40 - +Rule sol87 1987 only - Mar 21 12:07:25s -0:07:25 - +Rule sol87 1987 only - Mar 22 12:07:05s -0:07:05 - +Rule sol87 1987 only - Mar 23 12:06:50s -0:06:50 - +Rule sol87 1987 only - Mar 24 12:06:30s -0:06:30 - +Rule sol87 1987 only - Mar 25 12:06:10s -0:06:10 - +Rule sol87 1987 only - Mar 26 12:05:55s -0:05:55 - +Rule sol87 1987 only - Mar 27 12:05:35s -0:05:35 - +Rule sol87 1987 only - Mar 28 12:05:15s -0:05:15 - +Rule sol87 1987 only - Mar 29 12:05:00s -0:05:00 - +Rule sol87 1987 only - Mar 30 12:04:40s -0:04:40 - +Rule sol87 1987 only - Mar 31 12:04:25s -0:04:25 - +Rule sol87 1987 only - Apr 1 12:04:05s -0:04:05 - +Rule sol87 1987 only - Apr 2 12:03:45s -0:03:45 - +Rule sol87 1987 only - Apr 3 12:03:30s -0:03:30 - +Rule sol87 1987 only - Apr 4 12:03:10s -0:03:10 - +Rule sol87 1987 only - Apr 5 12:02:55s -0:02:55 - +Rule sol87 1987 only - Apr 6 12:02:35s -0:02:35 - +Rule sol87 1987 only - Apr 7 12:02:20s -0:02:20 - +Rule sol87 1987 only - Apr 8 12:02:05s -0:02:05 - +Rule sol87 1987 only - Apr 9 12:01:45s -0:01:45 - +Rule sol87 1987 only - Apr 10 12:01:30s -0:01:30 - +Rule sol87 1987 only - Apr 11 12:01:15s -0:01:15 - +Rule sol87 1987 only - Apr 12 12:00:55s -0:00:55 - +Rule sol87 1987 only - Apr 13 12:00:40s -0:00:40 - +Rule sol87 1987 only - Apr 14 12:00:25s -0:00:25 - +Rule sol87 1987 only - Apr 15 12:00:10s -0:00:10 - +Rule sol87 1987 only - Apr 16 11:59:55s 0:00:05 - +Rule sol87 1987 only - Apr 17 11:59:45s 0:00:15 - +Rule sol87 1987 only - Apr 18 11:59:30s 0:00:30 - +Rule sol87 1987 only - Apr 19 11:59:15s 0:00:45 - +Rule sol87 1987 only - Apr 20 11:59:05s 0:00:55 - +Rule sol87 1987 only - Apr 21 11:58:50s 0:01:10 - +Rule sol87 1987 only - Apr 22 11:58:40s 0:01:20 - +Rule sol87 1987 only - Apr 23 11:58:25s 0:01:35 - +Rule sol87 1987 only - Apr 24 11:58:15s 0:01:45 - +Rule sol87 1987 only - Apr 25 11:58:05s 0:01:55 - +Rule sol87 1987 only - Apr 26 11:57:55s 0:02:05 - +Rule sol87 1987 only - Apr 27 11:57:45s 0:02:15 - +Rule sol87 1987 only - Apr 28 11:57:35s 0:02:25 - +Rule sol87 1987 only - Apr 29 11:57:25s 0:02:35 - +Rule sol87 1987 only - Apr 30 11:57:15s 0:02:45 - +Rule sol87 1987 only - May 1 11:57:10s 0:02:50 - +Rule sol87 1987 only - May 2 11:57:00s 0:03:00 - +Rule sol87 1987 only - May 3 11:56:55s 0:03:05 - +Rule sol87 1987 only - May 4 11:56:50s 0:03:10 - +Rule sol87 1987 only - May 5 11:56:45s 0:03:15 - +Rule sol87 1987 only - May 6 11:56:40s 0:03:20 - +Rule sol87 1987 only - May 7 11:56:35s 0:03:25 - +Rule sol87 1987 only - May 8 11:56:30s 0:03:30 - +Rule sol87 1987 only - May 9 11:56:25s 0:03:35 - +Rule sol87 1987 only - May 10 11:56:25s 0:03:35 - +Rule sol87 1987 only - May 11 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 12 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 13 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 14 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 15 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 16 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 17 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 18 11:56:20s 0:03:40 - +Rule sol87 1987 only - May 19 11:56:25s 0:03:35 - +Rule sol87 1987 only - May 20 11:56:25s 0:03:35 - +Rule sol87 1987 only - May 21 11:56:30s 0:03:30 - +Rule sol87 1987 only - May 22 11:56:35s 0:03:25 - +Rule sol87 1987 only - May 23 11:56:40s 0:03:20 - +Rule sol87 1987 only - May 24 11:56:45s 0:03:15 - +Rule sol87 1987 only - May 25 11:56:50s 0:03:10 - +Rule sol87 1987 only - May 26 11:56:55s 0:03:05 - +Rule sol87 1987 only - May 27 11:57:00s 0:03:00 - +Rule sol87 1987 only - May 28 11:57:10s 0:02:50 - +Rule sol87 1987 only - May 29 11:57:15s 0:02:45 - +Rule sol87 1987 only - May 30 11:57:25s 0:02:35 - +Rule sol87 1987 only - May 31 11:57:30s 0:02:30 - +Rule sol87 1987 only - Jun 1 11:57:40s 0:02:20 - +Rule sol87 1987 only - Jun 2 11:57:50s 0:02:10 - +Rule sol87 1987 only - Jun 3 11:58:00s 0:02:00 - +Rule sol87 1987 only - Jun 4 11:58:10s 0:01:50 - +Rule sol87 1987 only - Jun 5 11:58:20s 0:01:40 - +Rule sol87 1987 only - Jun 6 11:58:30s 0:01:30 - +Rule sol87 1987 only - Jun 7 11:58:40s 0:01:20 - +Rule sol87 1987 only - Jun 8 11:58:50s 0:01:10 - +Rule sol87 1987 only - Jun 9 11:59:05s 0:00:55 - +Rule sol87 1987 only - Jun 10 11:59:15s 0:00:45 - +Rule sol87 1987 only - Jun 11 11:59:30s 0:00:30 - +Rule sol87 1987 only - Jun 12 11:59:40s 0:00:20 - +Rule sol87 1987 only - Jun 13 11:59:50s 0:00:10 - +Rule sol87 1987 only - Jun 14 12:00:05s -0:00:05 - +Rule sol87 1987 only - Jun 15 12:00:15s -0:00:15 - +Rule sol87 1987 only - Jun 16 12:00:30s -0:00:30 - +Rule sol87 1987 only - Jun 17 12:00:45s -0:00:45 - +Rule sol87 1987 only - Jun 18 12:00:55s -0:00:55 - +Rule sol87 1987 only - Jun 19 12:01:10s -0:01:10 - +Rule sol87 1987 only - Jun 20 12:01:20s -0:01:20 - +Rule sol87 1987 only - Jun 21 12:01:35s -0:01:35 - +Rule sol87 1987 only - Jun 22 12:01:50s -0:01:50 - +Rule sol87 1987 only - Jun 23 12:02:00s -0:02:00 - +Rule sol87 1987 only - Jun 24 12:02:15s -0:02:15 - +Rule sol87 1987 only - Jun 25 12:02:25s -0:02:25 - +Rule sol87 1987 only - Jun 26 12:02:40s -0:02:40 - +Rule sol87 1987 only - Jun 27 12:02:50s -0:02:50 - +Rule sol87 1987 only - Jun 28 12:03:05s -0:03:05 - +Rule sol87 1987 only - Jun 29 12:03:15s -0:03:15 - +Rule sol87 1987 only - Jun 30 12:03:30s -0:03:30 - +Rule sol87 1987 only - Jul 1 12:03:40s -0:03:40 - +Rule sol87 1987 only - Jul 2 12:03:50s -0:03:50 - +Rule sol87 1987 only - Jul 3 12:04:05s -0:04:05 - +Rule sol87 1987 only - Jul 4 12:04:15s -0:04:15 - +Rule sol87 1987 only - Jul 5 12:04:25s -0:04:25 - +Rule sol87 1987 only - Jul 6 12:04:35s -0:04:35 - +Rule sol87 1987 only - Jul 7 12:04:45s -0:04:45 - +Rule sol87 1987 only - Jul 8 12:04:55s -0:04:55 - +Rule sol87 1987 only - Jul 9 12:05:05s -0:05:05 - +Rule sol87 1987 only - Jul 10 12:05:15s -0:05:15 - +Rule sol87 1987 only - Jul 11 12:05:20s -0:05:20 - +Rule sol87 1987 only - Jul 12 12:05:30s -0:05:30 - +Rule sol87 1987 only - Jul 13 12:05:40s -0:05:40 - +Rule sol87 1987 only - Jul 14 12:05:45s -0:05:45 - +Rule sol87 1987 only - Jul 15 12:05:50s -0:05:50 - +Rule sol87 1987 only - Jul 16 12:06:00s -0:06:00 - +Rule sol87 1987 only - Jul 17 12:06:05s -0:06:05 - +Rule sol87 1987 only - Jul 18 12:06:10s -0:06:10 - +Rule sol87 1987 only - Jul 19 12:06:15s -0:06:15 - +Rule sol87 1987 only - Jul 20 12:06:15s -0:06:15 - +Rule sol87 1987 only - Jul 21 12:06:20s -0:06:20 - +Rule sol87 1987 only - Jul 22 12:06:25s -0:06:25 - +Rule sol87 1987 only - Jul 23 12:06:25s -0:06:25 - +Rule sol87 1987 only - Jul 24 12:06:25s -0:06:25 - +Rule sol87 1987 only - Jul 25 12:06:30s -0:06:30 - +Rule sol87 1987 only - Jul 26 12:06:30s -0:06:30 - +Rule sol87 1987 only - Jul 27 12:06:30s -0:06:30 - +Rule sol87 1987 only - Jul 28 12:06:30s -0:06:30 - +Rule sol87 1987 only - Jul 29 12:06:25s -0:06:25 - +Rule sol87 1987 only - Jul 30 12:06:25s -0:06:25 - +Rule sol87 1987 only - Jul 31 12:06:25s -0:06:25 - +Rule sol87 1987 only - Aug 1 12:06:20s -0:06:20 - +Rule sol87 1987 only - Aug 2 12:06:15s -0:06:15 - +Rule sol87 1987 only - Aug 3 12:06:10s -0:06:10 - +Rule sol87 1987 only - Aug 4 12:06:05s -0:06:05 - +Rule sol87 1987 only - Aug 5 12:06:00s -0:06:00 - +Rule sol87 1987 only - Aug 6 12:05:55s -0:05:55 - +Rule sol87 1987 only - Aug 7 12:05:50s -0:05:50 - +Rule sol87 1987 only - Aug 8 12:05:40s -0:05:40 - +Rule sol87 1987 only - Aug 9 12:05:35s -0:05:35 - +Rule sol87 1987 only - Aug 10 12:05:25s -0:05:25 - +Rule sol87 1987 only - Aug 11 12:05:15s -0:05:15 - +Rule sol87 1987 only - Aug 12 12:05:05s -0:05:05 - +Rule sol87 1987 only - Aug 13 12:04:55s -0:04:55 - +Rule sol87 1987 only - Aug 14 12:04:45s -0:04:45 - +Rule sol87 1987 only - Aug 15 12:04:35s -0:04:35 - +Rule sol87 1987 only - Aug 16 12:04:25s -0:04:25 - +Rule sol87 1987 only - Aug 17 12:04:10s -0:04:10 - +Rule sol87 1987 only - Aug 18 12:04:00s -0:04:00 - +Rule sol87 1987 only - Aug 19 12:03:45s -0:03:45 - +Rule sol87 1987 only - Aug 20 12:03:30s -0:03:30 - +Rule sol87 1987 only - Aug 21 12:03:15s -0:03:15 - +Rule sol87 1987 only - Aug 22 12:03:00s -0:03:00 - +Rule sol87 1987 only - Aug 23 12:02:45s -0:02:45 - +Rule sol87 1987 only - Aug 24 12:02:30s -0:02:30 - +Rule sol87 1987 only - Aug 25 12:02:15s -0:02:15 - +Rule sol87 1987 only - Aug 26 12:02:00s -0:02:00 - +Rule sol87 1987 only - Aug 27 12:01:40s -0:01:40 - +Rule sol87 1987 only - Aug 28 12:01:25s -0:01:25 - +Rule sol87 1987 only - Aug 29 12:01:05s -0:01:05 - +Rule sol87 1987 only - Aug 30 12:00:50s -0:00:50 - +Rule sol87 1987 only - Aug 31 12:00:30s -0:00:30 - +Rule sol87 1987 only - Sep 1 12:00:10s -0:00:10 - +Rule sol87 1987 only - Sep 2 11:59:50s 0:00:10 - +Rule sol87 1987 only - Sep 3 11:59:35s 0:00:25 - +Rule sol87 1987 only - Sep 4 11:59:15s 0:00:45 - +Rule sol87 1987 only - Sep 5 11:58:55s 0:01:05 - +Rule sol87 1987 only - Sep 6 11:58:35s 0:01:25 - +Rule sol87 1987 only - Sep 7 11:58:15s 0:01:45 - +Rule sol87 1987 only - Sep 8 11:57:55s 0:02:05 - +Rule sol87 1987 only - Sep 9 11:57:30s 0:02:30 - +Rule sol87 1987 only - Sep 10 11:57:10s 0:02:50 - +Rule sol87 1987 only - Sep 11 11:56:50s 0:03:10 - +Rule sol87 1987 only - Sep 12 11:56:30s 0:03:30 - +Rule sol87 1987 only - Sep 13 11:56:10s 0:03:50 - +Rule sol87 1987 only - Sep 14 11:55:45s 0:04:15 - +Rule sol87 1987 only - Sep 15 11:55:25s 0:04:35 - +Rule sol87 1987 only - Sep 16 11:55:05s 0:04:55 - +Rule sol87 1987 only - Sep 17 11:54:45s 0:05:15 - +Rule sol87 1987 only - Sep 18 11:54:20s 0:05:40 - +Rule sol87 1987 only - Sep 19 11:54:00s 0:06:00 - +Rule sol87 1987 only - Sep 20 11:53:40s 0:06:20 - +Rule sol87 1987 only - Sep 21 11:53:15s 0:06:45 - +Rule sol87 1987 only - Sep 22 11:52:55s 0:07:05 - +Rule sol87 1987 only - Sep 23 11:52:35s 0:07:25 - +Rule sol87 1987 only - Sep 24 11:52:15s 0:07:45 - +Rule sol87 1987 only - Sep 25 11:51:55s 0:08:05 - +Rule sol87 1987 only - Sep 26 11:51:35s 0:08:25 - +Rule sol87 1987 only - Sep 27 11:51:10s 0:08:50 - +Rule sol87 1987 only - Sep 28 11:50:50s 0:09:10 - +Rule sol87 1987 only - Sep 29 11:50:30s 0:09:30 - +Rule sol87 1987 only - Sep 30 11:50:10s 0:09:50 - +Rule sol87 1987 only - Oct 1 11:49:50s 0:10:10 - +Rule sol87 1987 only - Oct 2 11:49:35s 0:10:25 - +Rule sol87 1987 only - Oct 3 11:49:15s 0:10:45 - +Rule sol87 1987 only - Oct 4 11:48:55s 0:11:05 - +Rule sol87 1987 only - Oct 5 11:48:35s 0:11:25 - +Rule sol87 1987 only - Oct 6 11:48:20s 0:11:40 - +Rule sol87 1987 only - Oct 7 11:48:00s 0:12:00 - +Rule sol87 1987 only - Oct 8 11:47:45s 0:12:15 - +Rule sol87 1987 only - Oct 9 11:47:25s 0:12:35 - +Rule sol87 1987 only - Oct 10 11:47:10s 0:12:50 - +Rule sol87 1987 only - Oct 11 11:46:55s 0:13:05 - +Rule sol87 1987 only - Oct 12 11:46:40s 0:13:20 - +Rule sol87 1987 only - Oct 13 11:46:25s 0:13:35 - +Rule sol87 1987 only - Oct 14 11:46:10s 0:13:50 - +Rule sol87 1987 only - Oct 15 11:45:55s 0:14:05 - +Rule sol87 1987 only - Oct 16 11:45:45s 0:14:15 - +Rule sol87 1987 only - Oct 17 11:45:30s 0:14:30 - +Rule sol87 1987 only - Oct 18 11:45:20s 0:14:40 - +Rule sol87 1987 only - Oct 19 11:45:05s 0:14:55 - +Rule sol87 1987 only - Oct 20 11:44:55s 0:15:05 - +Rule sol87 1987 only - Oct 21 11:44:45s 0:15:15 - +Rule sol87 1987 only - Oct 22 11:44:35s 0:15:25 - +Rule sol87 1987 only - Oct 23 11:44:25s 0:15:35 - +Rule sol87 1987 only - Oct 24 11:44:20s 0:15:40 - +Rule sol87 1987 only - Oct 25 11:44:10s 0:15:50 - +Rule sol87 1987 only - Oct 26 11:44:05s 0:15:55 - +Rule sol87 1987 only - Oct 27 11:43:55s 0:16:05 - +Rule sol87 1987 only - Oct 28 11:43:50s 0:16:10 - +Rule sol87 1987 only - Oct 29 11:43:45s 0:16:15 - +Rule sol87 1987 only - Oct 30 11:43:45s 0:16:15 - +Rule sol87 1987 only - Oct 31 11:43:40s 0:16:20 - +Rule sol87 1987 only - Nov 1 11:43:40s 0:16:20 - +Rule sol87 1987 only - Nov 2 11:43:35s 0:16:25 - +Rule sol87 1987 only - Nov 3 11:43:35s 0:16:25 - +Rule sol87 1987 only - Nov 4 11:43:35s 0:16:25 - +Rule sol87 1987 only - Nov 5 11:43:35s 0:16:25 - +Rule sol87 1987 only - Nov 6 11:43:40s 0:16:20 - +Rule sol87 1987 only - Nov 7 11:43:40s 0:16:20 - +Rule sol87 1987 only - Nov 8 11:43:45s 0:16:15 - +Rule sol87 1987 only - Nov 9 11:43:50s 0:16:10 - +Rule sol87 1987 only - Nov 10 11:43:55s 0:16:05 - +Rule sol87 1987 only - Nov 11 11:44:00s 0:16:00 - +Rule sol87 1987 only - Nov 12 11:44:05s 0:15:55 - +Rule sol87 1987 only - Nov 13 11:44:15s 0:15:45 - +Rule sol87 1987 only - Nov 14 11:44:20s 0:15:40 - +Rule sol87 1987 only - Nov 15 11:44:30s 0:15:30 - +Rule sol87 1987 only - Nov 16 11:44:40s 0:15:20 - +Rule sol87 1987 only - Nov 17 11:44:50s 0:15:10 - +Rule sol87 1987 only - Nov 18 11:45:05s 0:14:55 - +Rule sol87 1987 only - Nov 19 11:45:15s 0:14:45 - +Rule sol87 1987 only - Nov 20 11:45:30s 0:14:30 - +Rule sol87 1987 only - Nov 21 11:45:45s 0:14:15 - +Rule sol87 1987 only - Nov 22 11:46:00s 0:14:00 - +Rule sol87 1987 only - Nov 23 11:46:15s 0:13:45 - +Rule sol87 1987 only - Nov 24 11:46:30s 0:13:30 - +Rule sol87 1987 only - Nov 25 11:46:50s 0:13:10 - +Rule sol87 1987 only - Nov 26 11:47:10s 0:12:50 - +Rule sol87 1987 only - Nov 27 11:47:25s 0:12:35 - +Rule sol87 1987 only - Nov 28 11:47:45s 0:12:15 - +Rule sol87 1987 only - Nov 29 11:48:05s 0:11:55 - +Rule sol87 1987 only - Nov 30 11:48:30s 0:11:30 - +Rule sol87 1987 only - Dec 1 11:48:50s 0:11:10 - +Rule sol87 1987 only - Dec 2 11:49:10s 0:10:50 - +Rule sol87 1987 only - Dec 3 11:49:35s 0:10:25 - +Rule sol87 1987 only - Dec 4 11:50:00s 0:10:00 - +Rule sol87 1987 only - Dec 5 11:50:25s 0:09:35 - +Rule sol87 1987 only - Dec 6 11:50:50s 0:09:10 - +Rule sol87 1987 only - Dec 7 11:51:15s 0:08:45 - +Rule sol87 1987 only - Dec 8 11:51:40s 0:08:20 - +Rule sol87 1987 only - Dec 9 11:52:05s 0:07:55 - +Rule sol87 1987 only - Dec 10 11:52:30s 0:07:30 - +Rule sol87 1987 only - Dec 11 11:53:00s 0:07:00 - +Rule sol87 1987 only - Dec 12 11:53:25s 0:06:35 - +Rule sol87 1987 only - Dec 13 11:53:55s 0:06:05 - +Rule sol87 1987 only - Dec 14 11:54:25s 0:05:35 - +Rule sol87 1987 only - Dec 15 11:54:50s 0:05:10 - +Rule sol87 1987 only - Dec 16 11:55:20s 0:04:40 - +Rule sol87 1987 only - Dec 17 11:55:50s 0:04:10 - +Rule sol87 1987 only - Dec 18 11:56:20s 0:03:40 - +Rule sol87 1987 only - Dec 19 11:56:50s 0:03:10 - +Rule sol87 1987 only - Dec 20 11:57:20s 0:02:40 - +Rule sol87 1987 only - Dec 21 11:57:50s 0:02:10 - +Rule sol87 1987 only - Dec 22 11:58:20s 0:01:40 - +Rule sol87 1987 only - Dec 23 11:58:50s 0:01:10 - +Rule sol87 1987 only - Dec 24 11:59:20s 0:00:40 - +Rule sol87 1987 only - Dec 25 11:59:50s 0:00:10 - +Rule sol87 1987 only - Dec 26 12:00:20s -0:00:20 - +Rule sol87 1987 only - Dec 27 12:00:45s -0:00:45 - +Rule sol87 1987 only - Dec 28 12:01:15s -0:01:15 - +Rule sol87 1987 only - Dec 29 12:01:45s -0:01:45 - +Rule sol87 1987 only - Dec 30 12:02:15s -0:02:15 - +Rule sol87 1987 only - Dec 31 12:02:45s -0:02:45 - + +# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs +# Before and after 1987, we'll operate on local mean solar time. + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Mideast/Riyadh87 3:07:04 - ?? 1987 + 3:07:04 sol87 ?? 1988 + 3:07:04 - ?? diff --git a/usr/src/share/zoneinfo/datfiles/solar88 b/usr/src/share/zoneinfo/datfiles/solar88 new file mode 100644 index 0000000000..e7f647e114 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/solar88 @@ -0,0 +1,386 @@ +# @(#)solar88 4.2 + +# Apparent noon times below are for Riyadh; they're a bit off for other places. +# Times were computed using formulas in the U.S. Naval Observatory's +# Almanac for Computers 1988; the formulas "will give EqT to an accuracy of +# [plus or minus two] seconds during the current year." +# +# Rounding to the nearest five seconds results in fewer than +# 256 different "time types"--a limit that's faced because time types are +# stored on disk as unsigned chars. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule sol88 1988 only - Jan 1 12:03:15s -0:03:15 - +Rule sol88 1988 only - Jan 2 12:03:40s -0:03:40 - +Rule sol88 1988 only - Jan 3 12:04:10s -0:04:10 - +Rule sol88 1988 only - Jan 4 12:04:40s -0:04:40 - +Rule sol88 1988 only - Jan 5 12:05:05s -0:05:05 - +Rule sol88 1988 only - Jan 6 12:05:30s -0:05:30 - +Rule sol88 1988 only - Jan 7 12:06:00s -0:06:00 - +Rule sol88 1988 only - Jan 8 12:06:25s -0:06:25 - +Rule sol88 1988 only - Jan 9 12:06:50s -0:06:50 - +Rule sol88 1988 only - Jan 10 12:07:15s -0:07:15 - +Rule sol88 1988 only - Jan 11 12:07:40s -0:07:40 - +Rule sol88 1988 only - Jan 12 12:08:05s -0:08:05 - +Rule sol88 1988 only - Jan 13 12:08:25s -0:08:25 - +Rule sol88 1988 only - Jan 14 12:08:50s -0:08:50 - +Rule sol88 1988 only - Jan 15 12:09:10s -0:09:10 - +Rule sol88 1988 only - Jan 16 12:09:30s -0:09:30 - +Rule sol88 1988 only - Jan 17 12:09:50s -0:09:50 - +Rule sol88 1988 only - Jan 18 12:10:10s -0:10:10 - +Rule sol88 1988 only - Jan 19 12:10:30s -0:10:30 - +Rule sol88 1988 only - Jan 20 12:10:50s -0:10:50 - +Rule sol88 1988 only - Jan 21 12:11:05s -0:11:05 - +Rule sol88 1988 only - Jan 22 12:11:25s -0:11:25 - +Rule sol88 1988 only - Jan 23 12:11:40s -0:11:40 - +Rule sol88 1988 only - Jan 24 12:11:55s -0:11:55 - +Rule sol88 1988 only - Jan 25 12:12:10s -0:12:10 - +Rule sol88 1988 only - Jan 26 12:12:25s -0:12:25 - +Rule sol88 1988 only - Jan 27 12:12:40s -0:12:40 - +Rule sol88 1988 only - Jan 28 12:12:50s -0:12:50 - +Rule sol88 1988 only - Jan 29 12:13:00s -0:13:00 - +Rule sol88 1988 only - Jan 30 12:13:10s -0:13:10 - +Rule sol88 1988 only - Jan 31 12:13:20s -0:13:20 - +Rule sol88 1988 only - Feb 1 12:13:30s -0:13:30 - +Rule sol88 1988 only - Feb 2 12:13:40s -0:13:40 - +Rule sol88 1988 only - Feb 3 12:13:45s -0:13:45 - +Rule sol88 1988 only - Feb 4 12:13:55s -0:13:55 - +Rule sol88 1988 only - Feb 5 12:14:00s -0:14:00 - +Rule sol88 1988 only - Feb 6 12:14:05s -0:14:05 - +Rule sol88 1988 only - Feb 7 12:14:10s -0:14:10 - +Rule sol88 1988 only - Feb 8 12:14:10s -0:14:10 - +Rule sol88 1988 only - Feb 9 12:14:15s -0:14:15 - +Rule sol88 1988 only - Feb 10 12:14:15s -0:14:15 - +Rule sol88 1988 only - Feb 11 12:14:15s -0:14:15 - +Rule sol88 1988 only - Feb 12 12:14:15s -0:14:15 - +Rule sol88 1988 only - Feb 13 12:14:15s -0:14:15 - +Rule sol88 1988 only - Feb 14 12:14:15s -0:14:15 - +Rule sol88 1988 only - Feb 15 12:14:10s -0:14:10 - +Rule sol88 1988 only - Feb 16 12:14:10s -0:14:10 - +Rule sol88 1988 only - Feb 17 12:14:05s -0:14:05 - +Rule sol88 1988 only - Feb 18 12:14:00s -0:14:00 - +Rule sol88 1988 only - Feb 19 12:13:55s -0:13:55 - +Rule sol88 1988 only - Feb 20 12:13:50s -0:13:50 - +Rule sol88 1988 only - Feb 21 12:13:45s -0:13:45 - +Rule sol88 1988 only - Feb 22 12:13:40s -0:13:40 - +Rule sol88 1988 only - Feb 23 12:13:30s -0:13:30 - +Rule sol88 1988 only - Feb 24 12:13:20s -0:13:20 - +Rule sol88 1988 only - Feb 25 12:13:15s -0:13:15 - +Rule sol88 1988 only - Feb 26 12:13:05s -0:13:05 - +Rule sol88 1988 only - Feb 27 12:12:55s -0:12:55 - +Rule sol88 1988 only - Feb 28 12:12:45s -0:12:45 - +Rule sol88 1988 only - Feb 29 12:12:30s -0:12:30 - +Rule sol88 1988 only - Mar 1 12:12:20s -0:12:20 - +Rule sol88 1988 only - Mar 2 12:12:10s -0:12:10 - +Rule sol88 1988 only - Mar 3 12:11:55s -0:11:55 - +Rule sol88 1988 only - Mar 4 12:11:45s -0:11:45 - +Rule sol88 1988 only - Mar 5 12:11:30s -0:11:30 - +Rule sol88 1988 only - Mar 6 12:11:15s -0:11:15 - +Rule sol88 1988 only - Mar 7 12:11:00s -0:11:00 - +Rule sol88 1988 only - Mar 8 12:10:45s -0:10:45 - +Rule sol88 1988 only - Mar 9 12:10:30s -0:10:30 - +Rule sol88 1988 only - Mar 10 12:10:15s -0:10:15 - +Rule sol88 1988 only - Mar 11 12:10:00s -0:10:00 - +Rule sol88 1988 only - Mar 12 12:09:45s -0:09:45 - +Rule sol88 1988 only - Mar 13 12:09:30s -0:09:30 - +Rule sol88 1988 only - Mar 14 12:09:10s -0:09:10 - +Rule sol88 1988 only - Mar 15 12:08:55s -0:08:55 - +Rule sol88 1988 only - Mar 16 12:08:40s -0:08:40 - +Rule sol88 1988 only - Mar 17 12:08:20s -0:08:20 - +Rule sol88 1988 only - Mar 18 12:08:05s -0:08:05 - +Rule sol88 1988 only - Mar 19 12:07:45s -0:07:45 - +Rule sol88 1988 only - Mar 20 12:07:30s -0:07:30 - +Rule sol88 1988 only - Mar 21 12:07:10s -0:07:10 - +Rule sol88 1988 only - Mar 22 12:06:50s -0:06:50 - +Rule sol88 1988 only - Mar 23 12:06:35s -0:06:35 - +Rule sol88 1988 only - Mar 24 12:06:15s -0:06:15 - +Rule sol88 1988 only - Mar 25 12:06:00s -0:06:00 - +Rule sol88 1988 only - Mar 26 12:05:40s -0:05:40 - +Rule sol88 1988 only - Mar 27 12:05:20s -0:05:20 - +Rule sol88 1988 only - Mar 28 12:05:05s -0:05:05 - +Rule sol88 1988 only - Mar 29 12:04:45s -0:04:45 - +Rule sol88 1988 only - Mar 30 12:04:25s -0:04:25 - +Rule sol88 1988 only - Mar 31 12:04:10s -0:04:10 - +Rule sol88 1988 only - Apr 1 12:03:50s -0:03:50 - +Rule sol88 1988 only - Apr 2 12:03:35s -0:03:35 - +Rule sol88 1988 only - Apr 3 12:03:15s -0:03:15 - +Rule sol88 1988 only - Apr 4 12:03:00s -0:03:00 - +Rule sol88 1988 only - Apr 5 12:02:40s -0:02:40 - +Rule sol88 1988 only - Apr 6 12:02:25s -0:02:25 - +Rule sol88 1988 only - Apr 7 12:02:05s -0:02:05 - +Rule sol88 1988 only - Apr 8 12:01:50s -0:01:50 - +Rule sol88 1988 only - Apr 9 12:01:35s -0:01:35 - +Rule sol88 1988 only - Apr 10 12:01:15s -0:01:15 - +Rule sol88 1988 only - Apr 11 12:01:00s -0:01:00 - +Rule sol88 1988 only - Apr 12 12:00:45s -0:00:45 - +Rule sol88 1988 only - Apr 13 12:00:30s -0:00:30 - +Rule sol88 1988 only - Apr 14 12:00:15s -0:00:15 - +Rule sol88 1988 only - Apr 15 12:00:00s 0:00:00 - +Rule sol88 1988 only - Apr 16 11:59:45s 0:00:15 - +Rule sol88 1988 only - Apr 17 11:59:30s 0:00:30 - +Rule sol88 1988 only - Apr 18 11:59:20s 0:00:40 - +Rule sol88 1988 only - Apr 19 11:59:05s 0:00:55 - +Rule sol88 1988 only - Apr 20 11:58:55s 0:01:05 - +Rule sol88 1988 only - Apr 21 11:58:40s 0:01:20 - +Rule sol88 1988 only - Apr 22 11:58:30s 0:01:30 - +Rule sol88 1988 only - Apr 23 11:58:15s 0:01:45 - +Rule sol88 1988 only - Apr 24 11:58:05s 0:01:55 - +Rule sol88 1988 only - Apr 25 11:57:55s 0:02:05 - +Rule sol88 1988 only - Apr 26 11:57:45s 0:02:15 - +Rule sol88 1988 only - Apr 27 11:57:35s 0:02:25 - +Rule sol88 1988 only - Apr 28 11:57:30s 0:02:30 - +Rule sol88 1988 only - Apr 29 11:57:20s 0:02:40 - +Rule sol88 1988 only - Apr 30 11:57:10s 0:02:50 - +Rule sol88 1988 only - May 1 11:57:05s 0:02:55 - +Rule sol88 1988 only - May 2 11:56:55s 0:03:05 - +Rule sol88 1988 only - May 3 11:56:50s 0:03:10 - +Rule sol88 1988 only - May 4 11:56:45s 0:03:15 - +Rule sol88 1988 only - May 5 11:56:40s 0:03:20 - +Rule sol88 1988 only - May 6 11:56:35s 0:03:25 - +Rule sol88 1988 only - May 7 11:56:30s 0:03:30 - +Rule sol88 1988 only - May 8 11:56:25s 0:03:35 - +Rule sol88 1988 only - May 9 11:56:25s 0:03:35 - +Rule sol88 1988 only - May 10 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 11 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 12 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 13 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 14 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 15 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 16 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 17 11:56:20s 0:03:40 - +Rule sol88 1988 only - May 18 11:56:25s 0:03:35 - +Rule sol88 1988 only - May 19 11:56:25s 0:03:35 - +Rule sol88 1988 only - May 20 11:56:30s 0:03:30 - +Rule sol88 1988 only - May 21 11:56:35s 0:03:25 - +Rule sol88 1988 only - May 22 11:56:40s 0:03:20 - +Rule sol88 1988 only - May 23 11:56:45s 0:03:15 - +Rule sol88 1988 only - May 24 11:56:50s 0:03:10 - +Rule sol88 1988 only - May 25 11:56:55s 0:03:05 - +Rule sol88 1988 only - May 26 11:57:00s 0:03:00 - +Rule sol88 1988 only - May 27 11:57:05s 0:02:55 - +Rule sol88 1988 only - May 28 11:57:15s 0:02:45 - +Rule sol88 1988 only - May 29 11:57:20s 0:02:40 - +Rule sol88 1988 only - May 30 11:57:30s 0:02:30 - +Rule sol88 1988 only - May 31 11:57:40s 0:02:20 - +Rule sol88 1988 only - Jun 1 11:57:50s 0:02:10 - +Rule sol88 1988 only - Jun 2 11:57:55s 0:02:05 - +Rule sol88 1988 only - Jun 3 11:58:05s 0:01:55 - +Rule sol88 1988 only - Jun 4 11:58:15s 0:01:45 - +Rule sol88 1988 only - Jun 5 11:58:30s 0:01:30 - +Rule sol88 1988 only - Jun 6 11:58:40s 0:01:20 - +Rule sol88 1988 only - Jun 7 11:58:50s 0:01:10 - +Rule sol88 1988 only - Jun 8 11:59:00s 0:01:00 - +Rule sol88 1988 only - Jun 9 11:59:15s 0:00:45 - +Rule sol88 1988 only - Jun 10 11:59:25s 0:00:35 - +Rule sol88 1988 only - Jun 11 11:59:35s 0:00:25 - +Rule sol88 1988 only - Jun 12 11:59:50s 0:00:10 - +Rule sol88 1988 only - Jun 13 12:00:00s 0:00:00 - +Rule sol88 1988 only - Jun 14 12:00:15s -0:00:15 - +Rule sol88 1988 only - Jun 15 12:00:25s -0:00:25 - +Rule sol88 1988 only - Jun 16 12:00:40s -0:00:40 - +Rule sol88 1988 only - Jun 17 12:00:55s -0:00:55 - +Rule sol88 1988 only - Jun 18 12:01:05s -0:01:05 - +Rule sol88 1988 only - Jun 19 12:01:20s -0:01:20 - +Rule sol88 1988 only - Jun 20 12:01:30s -0:01:30 - +Rule sol88 1988 only - Jun 21 12:01:45s -0:01:45 - +Rule sol88 1988 only - Jun 22 12:02:00s -0:02:00 - +Rule sol88 1988 only - Jun 23 12:02:10s -0:02:10 - +Rule sol88 1988 only - Jun 24 12:02:25s -0:02:25 - +Rule sol88 1988 only - Jun 25 12:02:35s -0:02:35 - +Rule sol88 1988 only - Jun 26 12:02:50s -0:02:50 - +Rule sol88 1988 only - Jun 27 12:03:00s -0:03:00 - +Rule sol88 1988 only - Jun 28 12:03:15s -0:03:15 - +Rule sol88 1988 only - Jun 29 12:03:25s -0:03:25 - +Rule sol88 1988 only - Jun 30 12:03:40s -0:03:40 - +Rule sol88 1988 only - Jul 1 12:03:50s -0:03:50 - +Rule sol88 1988 only - Jul 2 12:04:00s -0:04:00 - +Rule sol88 1988 only - Jul 3 12:04:10s -0:04:10 - +Rule sol88 1988 only - Jul 4 12:04:25s -0:04:25 - +Rule sol88 1988 only - Jul 5 12:04:35s -0:04:35 - +Rule sol88 1988 only - Jul 6 12:04:45s -0:04:45 - +Rule sol88 1988 only - Jul 7 12:04:55s -0:04:55 - +Rule sol88 1988 only - Jul 8 12:05:05s -0:05:05 - +Rule sol88 1988 only - Jul 9 12:05:10s -0:05:10 - +Rule sol88 1988 only - Jul 10 12:05:20s -0:05:20 - +Rule sol88 1988 only - Jul 11 12:05:30s -0:05:30 - +Rule sol88 1988 only - Jul 12 12:05:35s -0:05:35 - +Rule sol88 1988 only - Jul 13 12:05:45s -0:05:45 - +Rule sol88 1988 only - Jul 14 12:05:50s -0:05:50 - +Rule sol88 1988 only - Jul 15 12:05:55s -0:05:55 - +Rule sol88 1988 only - Jul 16 12:06:00s -0:06:00 - +Rule sol88 1988 only - Jul 17 12:06:05s -0:06:05 - +Rule sol88 1988 only - Jul 18 12:06:10s -0:06:10 - +Rule sol88 1988 only - Jul 19 12:06:15s -0:06:15 - +Rule sol88 1988 only - Jul 20 12:06:20s -0:06:20 - +Rule sol88 1988 only - Jul 21 12:06:25s -0:06:25 - +Rule sol88 1988 only - Jul 22 12:06:25s -0:06:25 - +Rule sol88 1988 only - Jul 23 12:06:25s -0:06:25 - +Rule sol88 1988 only - Jul 24 12:06:30s -0:06:30 - +Rule sol88 1988 only - Jul 25 12:06:30s -0:06:30 - +Rule sol88 1988 only - Jul 26 12:06:30s -0:06:30 - +Rule sol88 1988 only - Jul 27 12:06:30s -0:06:30 - +Rule sol88 1988 only - Jul 28 12:06:30s -0:06:30 - +Rule sol88 1988 only - Jul 29 12:06:25s -0:06:25 - +Rule sol88 1988 only - Jul 30 12:06:25s -0:06:25 - +Rule sol88 1988 only - Jul 31 12:06:20s -0:06:20 - +Rule sol88 1988 only - Aug 1 12:06:15s -0:06:15 - +Rule sol88 1988 only - Aug 2 12:06:15s -0:06:15 - +Rule sol88 1988 only - Aug 3 12:06:10s -0:06:10 - +Rule sol88 1988 only - Aug 4 12:06:05s -0:06:05 - +Rule sol88 1988 only - Aug 5 12:05:55s -0:05:55 - +Rule sol88 1988 only - Aug 6 12:05:50s -0:05:50 - +Rule sol88 1988 only - Aug 7 12:05:45s -0:05:45 - +Rule sol88 1988 only - Aug 8 12:05:35s -0:05:35 - +Rule sol88 1988 only - Aug 9 12:05:25s -0:05:25 - +Rule sol88 1988 only - Aug 10 12:05:20s -0:05:20 - +Rule sol88 1988 only - Aug 11 12:05:10s -0:05:10 - +Rule sol88 1988 only - Aug 12 12:05:00s -0:05:00 - +Rule sol88 1988 only - Aug 13 12:04:50s -0:04:50 - +Rule sol88 1988 only - Aug 14 12:04:35s -0:04:35 - +Rule sol88 1988 only - Aug 15 12:04:25s -0:04:25 - +Rule sol88 1988 only - Aug 16 12:04:15s -0:04:15 - +Rule sol88 1988 only - Aug 17 12:04:00s -0:04:00 - +Rule sol88 1988 only - Aug 18 12:03:50s -0:03:50 - +Rule sol88 1988 only - Aug 19 12:03:35s -0:03:35 - +Rule sol88 1988 only - Aug 20 12:03:20s -0:03:20 - +Rule sol88 1988 only - Aug 21 12:03:05s -0:03:05 - +Rule sol88 1988 only - Aug 22 12:02:50s -0:02:50 - +Rule sol88 1988 only - Aug 23 12:02:35s -0:02:35 - +Rule sol88 1988 only - Aug 24 12:02:20s -0:02:20 - +Rule sol88 1988 only - Aug 25 12:02:00s -0:02:00 - +Rule sol88 1988 only - Aug 26 12:01:45s -0:01:45 - +Rule sol88 1988 only - Aug 27 12:01:30s -0:01:30 - +Rule sol88 1988 only - Aug 28 12:01:10s -0:01:10 - +Rule sol88 1988 only - Aug 29 12:00:50s -0:00:50 - +Rule sol88 1988 only - Aug 30 12:00:35s -0:00:35 - +Rule sol88 1988 only - Aug 31 12:00:15s -0:00:15 - +Rule sol88 1988 only - Sep 1 11:59:55s 0:00:05 - +Rule sol88 1988 only - Sep 2 11:59:35s 0:00:25 - +Rule sol88 1988 only - Sep 3 11:59:20s 0:00:40 - +Rule sol88 1988 only - Sep 4 11:59:00s 0:01:00 - +Rule sol88 1988 only - Sep 5 11:58:40s 0:01:20 - +Rule sol88 1988 only - Sep 6 11:58:20s 0:01:40 - +Rule sol88 1988 only - Sep 7 11:58:00s 0:02:00 - +Rule sol88 1988 only - Sep 8 11:57:35s 0:02:25 - +Rule sol88 1988 only - Sep 9 11:57:15s 0:02:45 - +Rule sol88 1988 only - Sep 10 11:56:55s 0:03:05 - +Rule sol88 1988 only - Sep 11 11:56:35s 0:03:25 - +Rule sol88 1988 only - Sep 12 11:56:15s 0:03:45 - +Rule sol88 1988 only - Sep 13 11:55:50s 0:04:10 - +Rule sol88 1988 only - Sep 14 11:55:30s 0:04:30 - +Rule sol88 1988 only - Sep 15 11:55:10s 0:04:50 - +Rule sol88 1988 only - Sep 16 11:54:50s 0:05:10 - +Rule sol88 1988 only - Sep 17 11:54:25s 0:05:35 - +Rule sol88 1988 only - Sep 18 11:54:05s 0:05:55 - +Rule sol88 1988 only - Sep 19 11:53:45s 0:06:15 - +Rule sol88 1988 only - Sep 20 11:53:25s 0:06:35 - +Rule sol88 1988 only - Sep 21 11:53:00s 0:07:00 - +Rule sol88 1988 only - Sep 22 11:52:40s 0:07:20 - +Rule sol88 1988 only - Sep 23 11:52:20s 0:07:40 - +Rule sol88 1988 only - Sep 24 11:52:00s 0:08:00 - +Rule sol88 1988 only - Sep 25 11:51:40s 0:08:20 - +Rule sol88 1988 only - Sep 26 11:51:15s 0:08:45 - +Rule sol88 1988 only - Sep 27 11:50:55s 0:09:05 - +Rule sol88 1988 only - Sep 28 11:50:35s 0:09:25 - +Rule sol88 1988 only - Sep 29 11:50:15s 0:09:45 - +Rule sol88 1988 only - Sep 30 11:49:55s 0:10:05 - +Rule sol88 1988 only - Oct 1 11:49:35s 0:10:25 - +Rule sol88 1988 only - Oct 2 11:49:20s 0:10:40 - +Rule sol88 1988 only - Oct 3 11:49:00s 0:11:00 - +Rule sol88 1988 only - Oct 4 11:48:40s 0:11:20 - +Rule sol88 1988 only - Oct 5 11:48:25s 0:11:35 - +Rule sol88 1988 only - Oct 6 11:48:05s 0:11:55 - +Rule sol88 1988 only - Oct 7 11:47:50s 0:12:10 - +Rule sol88 1988 only - Oct 8 11:47:30s 0:12:30 - +Rule sol88 1988 only - Oct 9 11:47:15s 0:12:45 - +Rule sol88 1988 only - Oct 10 11:47:00s 0:13:00 - +Rule sol88 1988 only - Oct 11 11:46:45s 0:13:15 - +Rule sol88 1988 only - Oct 12 11:46:30s 0:13:30 - +Rule sol88 1988 only - Oct 13 11:46:15s 0:13:45 - +Rule sol88 1988 only - Oct 14 11:46:00s 0:14:00 - +Rule sol88 1988 only - Oct 15 11:45:45s 0:14:15 - +Rule sol88 1988 only - Oct 16 11:45:35s 0:14:25 - +Rule sol88 1988 only - Oct 17 11:45:20s 0:14:40 - +Rule sol88 1988 only - Oct 18 11:45:10s 0:14:50 - +Rule sol88 1988 only - Oct 19 11:45:00s 0:15:00 - +Rule sol88 1988 only - Oct 20 11:44:45s 0:15:15 - +Rule sol88 1988 only - Oct 21 11:44:40s 0:15:20 - +Rule sol88 1988 only - Oct 22 11:44:30s 0:15:30 - +Rule sol88 1988 only - Oct 23 11:44:20s 0:15:40 - +Rule sol88 1988 only - Oct 24 11:44:10s 0:15:50 - +Rule sol88 1988 only - Oct 25 11:44:05s 0:15:55 - +Rule sol88 1988 only - Oct 26 11:44:00s 0:16:00 - +Rule sol88 1988 only - Oct 27 11:43:55s 0:16:05 - +Rule sol88 1988 only - Oct 28 11:43:50s 0:16:10 - +Rule sol88 1988 only - Oct 29 11:43:45s 0:16:15 - +Rule sol88 1988 only - Oct 30 11:43:40s 0:16:20 - +Rule sol88 1988 only - Oct 31 11:43:40s 0:16:20 - +Rule sol88 1988 only - Nov 1 11:43:35s 0:16:25 - +Rule sol88 1988 only - Nov 2 11:43:35s 0:16:25 - +Rule sol88 1988 only - Nov 3 11:43:35s 0:16:25 - +Rule sol88 1988 only - Nov 4 11:43:35s 0:16:25 - +Rule sol88 1988 only - Nov 5 11:43:40s 0:16:20 - +Rule sol88 1988 only - Nov 6 11:43:40s 0:16:20 - +Rule sol88 1988 only - Nov 7 11:43:45s 0:16:15 - +Rule sol88 1988 only - Nov 8 11:43:45s 0:16:15 - +Rule sol88 1988 only - Nov 9 11:43:50s 0:16:10 - +Rule sol88 1988 only - Nov 10 11:44:00s 0:16:00 - +Rule sol88 1988 only - Nov 11 11:44:05s 0:15:55 - +Rule sol88 1988 only - Nov 12 11:44:10s 0:15:50 - +Rule sol88 1988 only - Nov 13 11:44:20s 0:15:40 - +Rule sol88 1988 only - Nov 14 11:44:30s 0:15:30 - +Rule sol88 1988 only - Nov 15 11:44:40s 0:15:20 - +Rule sol88 1988 only - Nov 16 11:44:50s 0:15:10 - +Rule sol88 1988 only - Nov 17 11:45:00s 0:15:00 - +Rule sol88 1988 only - Nov 18 11:45:15s 0:14:45 - +Rule sol88 1988 only - Nov 19 11:45:25s 0:14:35 - +Rule sol88 1988 only - Nov 20 11:45:40s 0:14:20 - +Rule sol88 1988 only - Nov 21 11:45:55s 0:14:05 - +Rule sol88 1988 only - Nov 22 11:46:10s 0:13:50 - +Rule sol88 1988 only - Nov 23 11:46:30s 0:13:30 - +Rule sol88 1988 only - Nov 24 11:46:45s 0:13:15 - +Rule sol88 1988 only - Nov 25 11:47:05s 0:12:55 - +Rule sol88 1988 only - Nov 26 11:47:20s 0:12:40 - +Rule sol88 1988 only - Nov 27 11:47:40s 0:12:20 - +Rule sol88 1988 only - Nov 28 11:48:00s 0:12:00 - +Rule sol88 1988 only - Nov 29 11:48:25s 0:11:35 - +Rule sol88 1988 only - Nov 30 11:48:45s 0:11:15 - +Rule sol88 1988 only - Dec 1 11:49:05s 0:10:55 - +Rule sol88 1988 only - Dec 2 11:49:30s 0:10:30 - +Rule sol88 1988 only - Dec 3 11:49:55s 0:10:05 - +Rule sol88 1988 only - Dec 4 11:50:15s 0:09:45 - +Rule sol88 1988 only - Dec 5 11:50:40s 0:09:20 - +Rule sol88 1988 only - Dec 6 11:51:05s 0:08:55 - +Rule sol88 1988 only - Dec 7 11:51:35s 0:08:25 - +Rule sol88 1988 only - Dec 8 11:52:00s 0:08:00 - +Rule sol88 1988 only - Dec 9 11:52:25s 0:07:35 - +Rule sol88 1988 only - Dec 10 11:52:55s 0:07:05 - +Rule sol88 1988 only - Dec 11 11:53:20s 0:06:40 - +Rule sol88 1988 only - Dec 12 11:53:50s 0:06:10 - +Rule sol88 1988 only - Dec 13 11:54:15s 0:05:45 - +Rule sol88 1988 only - Dec 14 11:54:45s 0:05:15 - +Rule sol88 1988 only - Dec 15 11:55:15s 0:04:45 - +Rule sol88 1988 only - Dec 16 11:55:45s 0:04:15 - +Rule sol88 1988 only - Dec 17 11:56:15s 0:03:45 - +Rule sol88 1988 only - Dec 18 11:56:40s 0:03:20 - +Rule sol88 1988 only - Dec 19 11:57:10s 0:02:50 - +Rule sol88 1988 only - Dec 20 11:57:40s 0:02:20 - +Rule sol88 1988 only - Dec 21 11:58:10s 0:01:50 - +Rule sol88 1988 only - Dec 22 11:58:40s 0:01:20 - +Rule sol88 1988 only - Dec 23 11:59:10s 0:00:50 - +Rule sol88 1988 only - Dec 24 11:59:40s 0:00:20 - +Rule sol88 1988 only - Dec 25 12:00:10s -0:00:10 - +Rule sol88 1988 only - Dec 26 12:00:40s -0:00:40 - +Rule sol88 1988 only - Dec 27 12:01:10s -0:01:10 - +Rule sol88 1988 only - Dec 28 12:01:40s -0:01:40 - +Rule sol88 1988 only - Dec 29 12:02:10s -0:02:10 - +Rule sol88 1988 only - Dec 30 12:02:35s -0:02:35 - +Rule sol88 1988 only - Dec 31 12:03:05s -0:03:05 - + +# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs +# Before and after 1988, we'll operate on local mean solar time. + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Mideast/Riyadh88 3:07:04 - ?? 1988 + 3:07:04 sol88 ?? 1989 + 3:07:04 - ?? diff --git a/usr/src/share/zoneinfo/datfiles/solar89 b/usr/src/share/zoneinfo/datfiles/solar89 new file mode 100644 index 0000000000..4f25170c3a --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/solar89 @@ -0,0 +1,391 @@ +# @(#)solar89 1.3 + +# Apparent noon times below are for Riyadh; they're a bit off for other places. +# Times were computed using a formula provided by the U. S. Naval Observatory: +# eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l) +# -12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l) +# + 19.3 * cos(3 * l); +# where l is the "mean longitude of the Sun" given by +# l = 279.642 degrees + 0.985647 * d +# and d is the interval in days from January 0, 0 hours Universal Time +# (equaling the day of the year plus the fraction of a day from zero hours). +# The accuracy of the formula is plus or minus three seconds. +# +# Rounding to the nearest five seconds results in fewer than +# 256 different "time types"--a limit that's faced because time types are +# stored on disk as unsigned chars. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule sol89 1989 only - Jan 1 12:03:35s -0:03:35 - +Rule sol89 1989 only - Jan 2 12:04:05s -0:04:05 - +Rule sol89 1989 only - Jan 3 12:04:30s -0:04:30 - +Rule sol89 1989 only - Jan 4 12:05:00s -0:05:00 - +Rule sol89 1989 only - Jan 5 12:05:25s -0:05:25 - +Rule sol89 1989 only - Jan 6 12:05:50s -0:05:50 - +Rule sol89 1989 only - Jan 7 12:06:15s -0:06:15 - +Rule sol89 1989 only - Jan 8 12:06:45s -0:06:45 - +Rule sol89 1989 only - Jan 9 12:07:10s -0:07:10 - +Rule sol89 1989 only - Jan 10 12:07:35s -0:07:35 - +Rule sol89 1989 only - Jan 11 12:07:55s -0:07:55 - +Rule sol89 1989 only - Jan 12 12:08:20s -0:08:20 - +Rule sol89 1989 only - Jan 13 12:08:45s -0:08:45 - +Rule sol89 1989 only - Jan 14 12:09:05s -0:09:05 - +Rule sol89 1989 only - Jan 15 12:09:25s -0:09:25 - +Rule sol89 1989 only - Jan 16 12:09:45s -0:09:45 - +Rule sol89 1989 only - Jan 17 12:10:05s -0:10:05 - +Rule sol89 1989 only - Jan 18 12:10:25s -0:10:25 - +Rule sol89 1989 only - Jan 19 12:10:45s -0:10:45 - +Rule sol89 1989 only - Jan 20 12:11:05s -0:11:05 - +Rule sol89 1989 only - Jan 21 12:11:20s -0:11:20 - +Rule sol89 1989 only - Jan 22 12:11:35s -0:11:35 - +Rule sol89 1989 only - Jan 23 12:11:55s -0:11:55 - +Rule sol89 1989 only - Jan 24 12:12:10s -0:12:10 - +Rule sol89 1989 only - Jan 25 12:12:20s -0:12:20 - +Rule sol89 1989 only - Jan 26 12:12:35s -0:12:35 - +Rule sol89 1989 only - Jan 27 12:12:50s -0:12:50 - +Rule sol89 1989 only - Jan 28 12:13:00s -0:13:00 - +Rule sol89 1989 only - Jan 29 12:13:10s -0:13:10 - +Rule sol89 1989 only - Jan 30 12:13:20s -0:13:20 - +Rule sol89 1989 only - Jan 31 12:13:30s -0:13:30 - +Rule sol89 1989 only - Feb 1 12:13:40s -0:13:40 - +Rule sol89 1989 only - Feb 2 12:13:45s -0:13:45 - +Rule sol89 1989 only - Feb 3 12:13:55s -0:13:55 - +Rule sol89 1989 only - Feb 4 12:14:00s -0:14:00 - +Rule sol89 1989 only - Feb 5 12:14:05s -0:14:05 - +Rule sol89 1989 only - Feb 6 12:14:10s -0:14:10 - +Rule sol89 1989 only - Feb 7 12:14:10s -0:14:10 - +Rule sol89 1989 only - Feb 8 12:14:15s -0:14:15 - +Rule sol89 1989 only - Feb 9 12:14:15s -0:14:15 - +Rule sol89 1989 only - Feb 10 12:14:20s -0:14:20 - +Rule sol89 1989 only - Feb 11 12:14:20s -0:14:20 - +Rule sol89 1989 only - Feb 12 12:14:20s -0:14:20 - +Rule sol89 1989 only - Feb 13 12:14:15s -0:14:15 - +Rule sol89 1989 only - Feb 14 12:14:15s -0:14:15 - +Rule sol89 1989 only - Feb 15 12:14:10s -0:14:10 - +Rule sol89 1989 only - Feb 16 12:14:10s -0:14:10 - +Rule sol89 1989 only - Feb 17 12:14:05s -0:14:05 - +Rule sol89 1989 only - Feb 18 12:14:00s -0:14:00 - +Rule sol89 1989 only - Feb 19 12:13:55s -0:13:55 - +Rule sol89 1989 only - Feb 20 12:13:50s -0:13:50 - +Rule sol89 1989 only - Feb 21 12:13:40s -0:13:40 - +Rule sol89 1989 only - Feb 22 12:13:35s -0:13:35 - +Rule sol89 1989 only - Feb 23 12:13:25s -0:13:25 - +Rule sol89 1989 only - Feb 24 12:13:15s -0:13:15 - +Rule sol89 1989 only - Feb 25 12:13:05s -0:13:05 - +Rule sol89 1989 only - Feb 26 12:12:55s -0:12:55 - +Rule sol89 1989 only - Feb 27 12:12:45s -0:12:45 - +Rule sol89 1989 only - Feb 28 12:12:35s -0:12:35 - +Rule sol89 1989 only - Mar 1 12:12:25s -0:12:25 - +Rule sol89 1989 only - Mar 2 12:12:10s -0:12:10 - +Rule sol89 1989 only - Mar 3 12:12:00s -0:12:00 - +Rule sol89 1989 only - Mar 4 12:11:45s -0:11:45 - +Rule sol89 1989 only - Mar 5 12:11:35s -0:11:35 - +Rule sol89 1989 only - Mar 6 12:11:20s -0:11:20 - +Rule sol89 1989 only - Mar 7 12:11:05s -0:11:05 - +Rule sol89 1989 only - Mar 8 12:10:50s -0:10:50 - +Rule sol89 1989 only - Mar 9 12:10:35s -0:10:35 - +Rule sol89 1989 only - Mar 10 12:10:20s -0:10:20 - +Rule sol89 1989 only - Mar 11 12:10:05s -0:10:05 - +Rule sol89 1989 only - Mar 12 12:09:50s -0:09:50 - +Rule sol89 1989 only - Mar 13 12:09:30s -0:09:30 - +Rule sol89 1989 only - Mar 14 12:09:15s -0:09:15 - +Rule sol89 1989 only - Mar 15 12:09:00s -0:09:00 - +Rule sol89 1989 only - Mar 16 12:08:40s -0:08:40 - +Rule sol89 1989 only - Mar 17 12:08:25s -0:08:25 - +Rule sol89 1989 only - Mar 18 12:08:05s -0:08:05 - +Rule sol89 1989 only - Mar 19 12:07:50s -0:07:50 - +Rule sol89 1989 only - Mar 20 12:07:30s -0:07:30 - +Rule sol89 1989 only - Mar 21 12:07:15s -0:07:15 - +Rule sol89 1989 only - Mar 22 12:06:55s -0:06:55 - +Rule sol89 1989 only - Mar 23 12:06:35s -0:06:35 - +Rule sol89 1989 only - Mar 24 12:06:20s -0:06:20 - +Rule sol89 1989 only - Mar 25 12:06:00s -0:06:00 - +Rule sol89 1989 only - Mar 26 12:05:40s -0:05:40 - +Rule sol89 1989 only - Mar 27 12:05:25s -0:05:25 - +Rule sol89 1989 only - Mar 28 12:05:05s -0:05:05 - +Rule sol89 1989 only - Mar 29 12:04:50s -0:04:50 - +Rule sol89 1989 only - Mar 30 12:04:30s -0:04:30 - +Rule sol89 1989 only - Mar 31 12:04:10s -0:04:10 - +Rule sol89 1989 only - Apr 1 12:03:55s -0:03:55 - +Rule sol89 1989 only - Apr 2 12:03:35s -0:03:35 - +Rule sol89 1989 only - Apr 3 12:03:20s -0:03:20 - +Rule sol89 1989 only - Apr 4 12:03:00s -0:03:00 - +Rule sol89 1989 only - Apr 5 12:02:45s -0:02:45 - +Rule sol89 1989 only - Apr 6 12:02:25s -0:02:25 - +Rule sol89 1989 only - Apr 7 12:02:10s -0:02:10 - +Rule sol89 1989 only - Apr 8 12:01:50s -0:01:50 - +Rule sol89 1989 only - Apr 9 12:01:35s -0:01:35 - +Rule sol89 1989 only - Apr 10 12:01:20s -0:01:20 - +Rule sol89 1989 only - Apr 11 12:01:05s -0:01:05 - +Rule sol89 1989 only - Apr 12 12:00:50s -0:00:50 - +Rule sol89 1989 only - Apr 13 12:00:35s -0:00:35 - +Rule sol89 1989 only - Apr 14 12:00:20s -0:00:20 - +Rule sol89 1989 only - Apr 15 12:00:05s -0:00:05 - +Rule sol89 1989 only - Apr 16 11:59:50s 0:00:10 - +Rule sol89 1989 only - Apr 17 11:59:35s 0:00:25 - +Rule sol89 1989 only - Apr 18 11:59:20s 0:00:40 - +Rule sol89 1989 only - Apr 19 11:59:10s 0:00:50 - +Rule sol89 1989 only - Apr 20 11:58:55s 0:01:05 - +Rule sol89 1989 only - Apr 21 11:58:45s 0:01:15 - +Rule sol89 1989 only - Apr 22 11:58:30s 0:01:30 - +Rule sol89 1989 only - Apr 23 11:58:20s 0:01:40 - +Rule sol89 1989 only - Apr 24 11:58:10s 0:01:50 - +Rule sol89 1989 only - Apr 25 11:58:00s 0:02:00 - +Rule sol89 1989 only - Apr 26 11:57:50s 0:02:10 - +Rule sol89 1989 only - Apr 27 11:57:40s 0:02:20 - +Rule sol89 1989 only - Apr 28 11:57:30s 0:02:30 - +Rule sol89 1989 only - Apr 29 11:57:20s 0:02:40 - +Rule sol89 1989 only - Apr 30 11:57:15s 0:02:45 - +Rule sol89 1989 only - May 1 11:57:05s 0:02:55 - +Rule sol89 1989 only - May 2 11:57:00s 0:03:00 - +Rule sol89 1989 only - May 3 11:56:50s 0:03:10 - +Rule sol89 1989 only - May 4 11:56:45s 0:03:15 - +Rule sol89 1989 only - May 5 11:56:40s 0:03:20 - +Rule sol89 1989 only - May 6 11:56:35s 0:03:25 - +Rule sol89 1989 only - May 7 11:56:30s 0:03:30 - +Rule sol89 1989 only - May 8 11:56:30s 0:03:30 - +Rule sol89 1989 only - May 9 11:56:25s 0:03:35 - +Rule sol89 1989 only - May 10 11:56:25s 0:03:35 - +Rule sol89 1989 only - May 11 11:56:20s 0:03:40 - +Rule sol89 1989 only - May 12 11:56:20s 0:03:40 - +Rule sol89 1989 only - May 13 11:56:20s 0:03:40 - +Rule sol89 1989 only - May 14 11:56:20s 0:03:40 - +Rule sol89 1989 only - May 15 11:56:20s 0:03:40 - +Rule sol89 1989 only - May 16 11:56:20s 0:03:40 - +Rule sol89 1989 only - May 17 11:56:20s 0:03:40 - +Rule sol89 1989 only - May 18 11:56:25s 0:03:35 - +Rule sol89 1989 only - May 19 11:56:25s 0:03:35 - +Rule sol89 1989 only - May 20 11:56:30s 0:03:30 - +Rule sol89 1989 only - May 21 11:56:35s 0:03:25 - +Rule sol89 1989 only - May 22 11:56:35s 0:03:25 - +Rule sol89 1989 only - May 23 11:56:40s 0:03:20 - +Rule sol89 1989 only - May 24 11:56:45s 0:03:15 - +Rule sol89 1989 only - May 25 11:56:55s 0:03:05 - +Rule sol89 1989 only - May 26 11:57:00s 0:03:00 - +Rule sol89 1989 only - May 27 11:57:05s 0:02:55 - +Rule sol89 1989 only - May 28 11:57:15s 0:02:45 - +Rule sol89 1989 only - May 29 11:57:20s 0:02:40 - +Rule sol89 1989 only - May 30 11:57:30s 0:02:30 - +Rule sol89 1989 only - May 31 11:57:35s 0:02:25 - +Rule sol89 1989 only - Jun 1 11:57:45s 0:02:15 - +Rule sol89 1989 only - Jun 2 11:57:55s 0:02:05 - +Rule sol89 1989 only - Jun 3 11:58:05s 0:01:55 - +Rule sol89 1989 only - Jun 4 11:58:15s 0:01:45 - +Rule sol89 1989 only - Jun 5 11:58:25s 0:01:35 - +Rule sol89 1989 only - Jun 6 11:58:35s 0:01:25 - +Rule sol89 1989 only - Jun 7 11:58:45s 0:01:15 - +Rule sol89 1989 only - Jun 8 11:59:00s 0:01:00 - +Rule sol89 1989 only - Jun 9 11:59:10s 0:00:50 - +Rule sol89 1989 only - Jun 10 11:59:20s 0:00:40 - +Rule sol89 1989 only - Jun 11 11:59:35s 0:00:25 - +Rule sol89 1989 only - Jun 12 11:59:45s 0:00:15 - +Rule sol89 1989 only - Jun 13 12:00:00s 0:00:00 - +Rule sol89 1989 only - Jun 14 12:00:10s -0:00:10 - +Rule sol89 1989 only - Jun 15 12:00:25s -0:00:25 - +Rule sol89 1989 only - Jun 16 12:00:35s -0:00:35 - +Rule sol89 1989 only - Jun 17 12:00:50s -0:00:50 - +Rule sol89 1989 only - Jun 18 12:01:05s -0:01:05 - +Rule sol89 1989 only - Jun 19 12:01:15s -0:01:15 - +Rule sol89 1989 only - Jun 20 12:01:30s -0:01:30 - +Rule sol89 1989 only - Jun 21 12:01:40s -0:01:40 - +Rule sol89 1989 only - Jun 22 12:01:55s -0:01:55 - +Rule sol89 1989 only - Jun 23 12:02:10s -0:02:10 - +Rule sol89 1989 only - Jun 24 12:02:20s -0:02:20 - +Rule sol89 1989 only - Jun 25 12:02:35s -0:02:35 - +Rule sol89 1989 only - Jun 26 12:02:45s -0:02:45 - +Rule sol89 1989 only - Jun 27 12:03:00s -0:03:00 - +Rule sol89 1989 only - Jun 28 12:03:10s -0:03:10 - +Rule sol89 1989 only - Jun 29 12:03:25s -0:03:25 - +Rule sol89 1989 only - Jun 30 12:03:35s -0:03:35 - +Rule sol89 1989 only - Jul 1 12:03:45s -0:03:45 - +Rule sol89 1989 only - Jul 2 12:04:00s -0:04:00 - +Rule sol89 1989 only - Jul 3 12:04:10s -0:04:10 - +Rule sol89 1989 only - Jul 4 12:04:20s -0:04:20 - +Rule sol89 1989 only - Jul 5 12:04:30s -0:04:30 - +Rule sol89 1989 only - Jul 6 12:04:40s -0:04:40 - +Rule sol89 1989 only - Jul 7 12:04:50s -0:04:50 - +Rule sol89 1989 only - Jul 8 12:05:00s -0:05:00 - +Rule sol89 1989 only - Jul 9 12:05:10s -0:05:10 - +Rule sol89 1989 only - Jul 10 12:05:20s -0:05:20 - +Rule sol89 1989 only - Jul 11 12:05:25s -0:05:25 - +Rule sol89 1989 only - Jul 12 12:05:35s -0:05:35 - +Rule sol89 1989 only - Jul 13 12:05:40s -0:05:40 - +Rule sol89 1989 only - Jul 14 12:05:50s -0:05:50 - +Rule sol89 1989 only - Jul 15 12:05:55s -0:05:55 - +Rule sol89 1989 only - Jul 16 12:06:00s -0:06:00 - +Rule sol89 1989 only - Jul 17 12:06:05s -0:06:05 - +Rule sol89 1989 only - Jul 18 12:06:10s -0:06:10 - +Rule sol89 1989 only - Jul 19 12:06:15s -0:06:15 - +Rule sol89 1989 only - Jul 20 12:06:20s -0:06:20 - +Rule sol89 1989 only - Jul 21 12:06:20s -0:06:20 - +Rule sol89 1989 only - Jul 22 12:06:25s -0:06:25 - +Rule sol89 1989 only - Jul 23 12:06:25s -0:06:25 - +Rule sol89 1989 only - Jul 24 12:06:30s -0:06:30 - +Rule sol89 1989 only - Jul 25 12:06:30s -0:06:30 - +Rule sol89 1989 only - Jul 26 12:06:30s -0:06:30 - +Rule sol89 1989 only - Jul 27 12:06:30s -0:06:30 - +Rule sol89 1989 only - Jul 28 12:06:30s -0:06:30 - +Rule sol89 1989 only - Jul 29 12:06:25s -0:06:25 - +Rule sol89 1989 only - Jul 30 12:06:25s -0:06:25 - +Rule sol89 1989 only - Jul 31 12:06:20s -0:06:20 - +Rule sol89 1989 only - Aug 1 12:06:20s -0:06:20 - +Rule sol89 1989 only - Aug 2 12:06:15s -0:06:15 - +Rule sol89 1989 only - Aug 3 12:06:10s -0:06:10 - +Rule sol89 1989 only - Aug 4 12:06:05s -0:06:05 - +Rule sol89 1989 only - Aug 5 12:06:00s -0:06:00 - +Rule sol89 1989 only - Aug 6 12:05:50s -0:05:50 - +Rule sol89 1989 only - Aug 7 12:05:45s -0:05:45 - +Rule sol89 1989 only - Aug 8 12:05:35s -0:05:35 - +Rule sol89 1989 only - Aug 9 12:05:30s -0:05:30 - +Rule sol89 1989 only - Aug 10 12:05:20s -0:05:20 - +Rule sol89 1989 only - Aug 11 12:05:10s -0:05:10 - +Rule sol89 1989 only - Aug 12 12:05:00s -0:05:00 - +Rule sol89 1989 only - Aug 13 12:04:50s -0:04:50 - +Rule sol89 1989 only - Aug 14 12:04:40s -0:04:40 - +Rule sol89 1989 only - Aug 15 12:04:30s -0:04:30 - +Rule sol89 1989 only - Aug 16 12:04:15s -0:04:15 - +Rule sol89 1989 only - Aug 17 12:04:05s -0:04:05 - +Rule sol89 1989 only - Aug 18 12:03:50s -0:03:50 - +Rule sol89 1989 only - Aug 19 12:03:35s -0:03:35 - +Rule sol89 1989 only - Aug 20 12:03:25s -0:03:25 - +Rule sol89 1989 only - Aug 21 12:03:10s -0:03:10 - +Rule sol89 1989 only - Aug 22 12:02:55s -0:02:55 - +Rule sol89 1989 only - Aug 23 12:02:40s -0:02:40 - +Rule sol89 1989 only - Aug 24 12:02:20s -0:02:20 - +Rule sol89 1989 only - Aug 25 12:02:05s -0:02:05 - +Rule sol89 1989 only - Aug 26 12:01:50s -0:01:50 - +Rule sol89 1989 only - Aug 27 12:01:30s -0:01:30 - +Rule sol89 1989 only - Aug 28 12:01:15s -0:01:15 - +Rule sol89 1989 only - Aug 29 12:00:55s -0:00:55 - +Rule sol89 1989 only - Aug 30 12:00:40s -0:00:40 - +Rule sol89 1989 only - Aug 31 12:00:20s -0:00:20 - +Rule sol89 1989 only - Sep 1 12:00:00s 0:00:00 - +Rule sol89 1989 only - Sep 2 11:59:45s 0:00:15 - +Rule sol89 1989 only - Sep 3 11:59:25s 0:00:35 - +Rule sol89 1989 only - Sep 4 11:59:05s 0:00:55 - +Rule sol89 1989 only - Sep 5 11:58:45s 0:01:15 - +Rule sol89 1989 only - Sep 6 11:58:25s 0:01:35 - +Rule sol89 1989 only - Sep 7 11:58:05s 0:01:55 - +Rule sol89 1989 only - Sep 8 11:57:45s 0:02:15 - +Rule sol89 1989 only - Sep 9 11:57:20s 0:02:40 - +Rule sol89 1989 only - Sep 10 11:57:00s 0:03:00 - +Rule sol89 1989 only - Sep 11 11:56:40s 0:03:20 - +Rule sol89 1989 only - Sep 12 11:56:20s 0:03:40 - +Rule sol89 1989 only - Sep 13 11:56:00s 0:04:00 - +Rule sol89 1989 only - Sep 14 11:55:35s 0:04:25 - +Rule sol89 1989 only - Sep 15 11:55:15s 0:04:45 - +Rule sol89 1989 only - Sep 16 11:54:55s 0:05:05 - +Rule sol89 1989 only - Sep 17 11:54:35s 0:05:25 - +Rule sol89 1989 only - Sep 18 11:54:10s 0:05:50 - +Rule sol89 1989 only - Sep 19 11:53:50s 0:06:10 - +Rule sol89 1989 only - Sep 20 11:53:30s 0:06:30 - +Rule sol89 1989 only - Sep 21 11:53:10s 0:06:50 - +Rule sol89 1989 only - Sep 22 11:52:45s 0:07:15 - +Rule sol89 1989 only - Sep 23 11:52:25s 0:07:35 - +Rule sol89 1989 only - Sep 24 11:52:05s 0:07:55 - +Rule sol89 1989 only - Sep 25 11:51:45s 0:08:15 - +Rule sol89 1989 only - Sep 26 11:51:25s 0:08:35 - +Rule sol89 1989 only - Sep 27 11:51:05s 0:08:55 - +Rule sol89 1989 only - Sep 28 11:50:40s 0:09:20 - +Rule sol89 1989 only - Sep 29 11:50:20s 0:09:40 - +Rule sol89 1989 only - Sep 30 11:50:00s 0:10:00 - +Rule sol89 1989 only - Oct 1 11:49:45s 0:10:15 - +Rule sol89 1989 only - Oct 2 11:49:25s 0:10:35 - +Rule sol89 1989 only - Oct 3 11:49:05s 0:10:55 - +Rule sol89 1989 only - Oct 4 11:48:45s 0:11:15 - +Rule sol89 1989 only - Oct 5 11:48:30s 0:11:30 - +Rule sol89 1989 only - Oct 6 11:48:10s 0:11:50 - +Rule sol89 1989 only - Oct 7 11:47:50s 0:12:10 - +Rule sol89 1989 only - Oct 8 11:47:35s 0:12:25 - +Rule sol89 1989 only - Oct 9 11:47:20s 0:12:40 - +Rule sol89 1989 only - Oct 10 11:47:00s 0:13:00 - +Rule sol89 1989 only - Oct 11 11:46:45s 0:13:15 - +Rule sol89 1989 only - Oct 12 11:46:30s 0:13:30 - +Rule sol89 1989 only - Oct 13 11:46:15s 0:13:45 - +Rule sol89 1989 only - Oct 14 11:46:00s 0:14:00 - +Rule sol89 1989 only - Oct 15 11:45:50s 0:14:10 - +Rule sol89 1989 only - Oct 16 11:45:35s 0:14:25 - +Rule sol89 1989 only - Oct 17 11:45:20s 0:14:40 - +Rule sol89 1989 only - Oct 18 11:45:10s 0:14:50 - +Rule sol89 1989 only - Oct 19 11:45:00s 0:15:00 - +Rule sol89 1989 only - Oct 20 11:44:50s 0:15:10 - +Rule sol89 1989 only - Oct 21 11:44:40s 0:15:20 - +Rule sol89 1989 only - Oct 22 11:44:30s 0:15:30 - +Rule sol89 1989 only - Oct 23 11:44:20s 0:15:40 - +Rule sol89 1989 only - Oct 24 11:44:10s 0:15:50 - +Rule sol89 1989 only - Oct 25 11:44:05s 0:15:55 - +Rule sol89 1989 only - Oct 26 11:44:00s 0:16:00 - +Rule sol89 1989 only - Oct 27 11:43:50s 0:16:10 - +Rule sol89 1989 only - Oct 28 11:43:45s 0:16:15 - +Rule sol89 1989 only - Oct 29 11:43:40s 0:16:20 - +Rule sol89 1989 only - Oct 30 11:43:40s 0:16:20 - +Rule sol89 1989 only - Oct 31 11:43:35s 0:16:25 - +Rule sol89 1989 only - Nov 1 11:43:35s 0:16:25 - +Rule sol89 1989 only - Nov 2 11:43:35s 0:16:25 - +Rule sol89 1989 only - Nov 3 11:43:30s 0:16:30 - +Rule sol89 1989 only - Nov 4 11:43:35s 0:16:25 - +Rule sol89 1989 only - Nov 5 11:43:35s 0:16:25 - +Rule sol89 1989 only - Nov 6 11:43:35s 0:16:25 - +Rule sol89 1989 only - Nov 7 11:43:40s 0:16:20 - +Rule sol89 1989 only - Nov 8 11:43:45s 0:16:15 - +Rule sol89 1989 only - Nov 9 11:43:50s 0:16:10 - +Rule sol89 1989 only - Nov 10 11:43:55s 0:16:05 - +Rule sol89 1989 only - Nov 11 11:44:00s 0:16:00 - +Rule sol89 1989 only - Nov 12 11:44:05s 0:15:55 - +Rule sol89 1989 only - Nov 13 11:44:15s 0:15:45 - +Rule sol89 1989 only - Nov 14 11:44:25s 0:15:35 - +Rule sol89 1989 only - Nov 15 11:44:35s 0:15:25 - +Rule sol89 1989 only - Nov 16 11:44:45s 0:15:15 - +Rule sol89 1989 only - Nov 17 11:44:55s 0:15:05 - +Rule sol89 1989 only - Nov 18 11:45:10s 0:14:50 - +Rule sol89 1989 only - Nov 19 11:45:20s 0:14:40 - +Rule sol89 1989 only - Nov 20 11:45:35s 0:14:25 - +Rule sol89 1989 only - Nov 21 11:45:50s 0:14:10 - +Rule sol89 1989 only - Nov 22 11:46:05s 0:13:55 - +Rule sol89 1989 only - Nov 23 11:46:25s 0:13:35 - +Rule sol89 1989 only - Nov 24 11:46:40s 0:13:20 - +Rule sol89 1989 only - Nov 25 11:47:00s 0:13:00 - +Rule sol89 1989 only - Nov 26 11:47:20s 0:12:40 - +Rule sol89 1989 only - Nov 27 11:47:35s 0:12:25 - +Rule sol89 1989 only - Nov 28 11:47:55s 0:12:05 - +Rule sol89 1989 only - Nov 29 11:48:20s 0:11:40 - +Rule sol89 1989 only - Nov 30 11:48:40s 0:11:20 - +Rule sol89 1989 only - Dec 1 11:49:00s 0:11:00 - +Rule sol89 1989 only - Dec 2 11:49:25s 0:10:35 - +Rule sol89 1989 only - Dec 3 11:49:50s 0:10:10 - +Rule sol89 1989 only - Dec 4 11:50:15s 0:09:45 - +Rule sol89 1989 only - Dec 5 11:50:35s 0:09:25 - +Rule sol89 1989 only - Dec 6 11:51:00s 0:09:00 - +Rule sol89 1989 only - Dec 7 11:51:30s 0:08:30 - +Rule sol89 1989 only - Dec 8 11:51:55s 0:08:05 - +Rule sol89 1989 only - Dec 9 11:52:20s 0:07:40 - +Rule sol89 1989 only - Dec 10 11:52:50s 0:07:10 - +Rule sol89 1989 only - Dec 11 11:53:15s 0:06:45 - +Rule sol89 1989 only - Dec 12 11:53:45s 0:06:15 - +Rule sol89 1989 only - Dec 13 11:54:10s 0:05:50 - +Rule sol89 1989 only - Dec 14 11:54:40s 0:05:20 - +Rule sol89 1989 only - Dec 15 11:55:10s 0:04:50 - +Rule sol89 1989 only - Dec 16 11:55:40s 0:04:20 - +Rule sol89 1989 only - Dec 17 11:56:05s 0:03:55 - +Rule sol89 1989 only - Dec 18 11:56:35s 0:03:25 - +Rule sol89 1989 only - Dec 19 11:57:05s 0:02:55 - +Rule sol89 1989 only - Dec 20 11:57:35s 0:02:25 - +Rule sol89 1989 only - Dec 21 11:58:05s 0:01:55 - +Rule sol89 1989 only - Dec 22 11:58:35s 0:01:25 - +Rule sol89 1989 only - Dec 23 11:59:05s 0:00:55 - +Rule sol89 1989 only - Dec 24 11:59:35s 0:00:25 - +Rule sol89 1989 only - Dec 25 12:00:05s -0:00:05 - +Rule sol89 1989 only - Dec 26 12:00:35s -0:00:35 - +Rule sol89 1989 only - Dec 27 12:01:05s -0:01:05 - +Rule sol89 1989 only - Dec 28 12:01:35s -0:01:35 - +Rule sol89 1989 only - Dec 29 12:02:00s -0:02:00 - +Rule sol89 1989 only - Dec 30 12:02:30s -0:02:30 - +Rule sol89 1989 only - Dec 31 12:03:00s -0:03:00 - + +# Riyadh is at about 46 degrees 46 minutes East: 3 hrs, 7 mins, 4 secs +# Before and after 1989, we'll operate on local mean solar time. + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Mideast/Riyadh89 3:07:04 - ?? 1989 + 3:07:04 sol89 ?? 1990 + 3:07:04 - ?? diff --git a/usr/src/share/zoneinfo/datfiles/southamerica b/usr/src/share/zoneinfo/datfiles/southamerica new file mode 100644 index 0000000000..abab1059de --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/southamerica @@ -0,0 +1,103 @@ +# @(#)southamerica 4.3 + +# From Guy Harris: +# From Official Airline Guide - Worldwide Edition (1987). Countries not +# listed here do not observe DST, according to the OAG. Time zone names +# are pure inventions, and none are supplied for countries not observing +# DST; updates from natives would be appreciated. The times that DST +# starts and ends are based on the assumption that they switch a 2AM just +# as everybody else does. + +############################################################################### + +# Brazil + +# From Guy Harris: +# The OAG lists October 25, 1987 and February 12, 1988 as the starting and +# ending dates, giving them as "estimated date(s) based on previous year". We +# infer a rule here from one example, always a dangerous practice.... Yes, +# they really do switch on Saturday, according to the OAG. +# "Brazil/Acre" is for the Territory of Acre; "Brazil/DeNoronha" is for +# Fernando De Noronha. + +# From Bob Devine (January 28, 1988): +# The only information I found is that there was no DST up to 1985. +# But there was some before 1952! + +# From U. S. Naval Observatory (January 16, 1989): +# BRAZIL WEST 5 H BEHIND UTC TERRITORY OF ACRE +# BRAZIL WEST 4 H BEHIND UTC ACRE OCT 23, '88-FEB 11, +# BRAZIL '89 (ESTIMATED) +# BRAZIL CENTRAL 4 H BEHIND UTC MANAUS +# BRAZIL CENTRAL 3 H BEHIND UTC MANAUS OCT 23, '88-FEB 11, +# BRAZIL CENTRAL '89 (ESTIMATED) +# BRAZIL EAST 3 H BEHIND UTC COASTAL STATES, RIO, SAO +# BRAZIL EAST PAULO, BRASILIA +# BRAZIL EAST 2 H BEHIND UTC COASTAL STATES, RIO, SAO +# BRAZIL PAULO, BRASILIA OCT 23, +# BRAZIL '88-FEB 11, '89 +# BRAZIL (ESTIMATED) +# BRAZIL 2 H BEHIND UTC ATLANTIC ISLANDS, FERNANDO +# BRAZIL DE NORONHA +# BRAZIL 1 H BEHIND UTC OCT 23, '88-FEB 11, '89 +# BRAZIL (ESTIMATED) +# BRAZIL 3 H BEHIND UTC FOR MOST MAJOR AIRPORTS. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Brazil 1987 max - Feb Sat<=14 2:00 0 S +Rule Brazil 1987 max - Oct Sat<=28 2:00 1:00 D + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Brazil/East -3:00 Brazil E%sT +Zone Brazil/West -4:00 Brazil W%sT +Zone Brazil/Acre -5:00 Brazil A%sT +Zone Brazil/DeNoronha -2:00 Brazil F%sT + +############################################################################### + +# Chile + +# From Guy Harris: +# The OAG lists October 11, 1987 and March 12, 1988 as the starting and +# ending dates, giving them as "estimated date(s) based on previous year." + +# From Bob Devine (January 28, 1988): +# Chile has had 2nd Sunday in October to 2nd Sunday in March DST since 1977. +# Switch is at midnight. OAG is right. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Chile 1977 max - Oct Sun>=8 0:00 1:00 D +Rule Chile 1978 max - Mar Sun>=8 0:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone Chile/Continental -4:00 Chile C%sT +Zone Chile/EasterIsland -6:00 Chile E%sT + +############################################################################### + +# Paraguay + +# From Bob Devine (January 28, 1988): +# Paraguay: First day in October to last in March. Midnight switch?? +# Since 1980. + +# From U. S. Naval Observatory (January 19, 1989): +# PARAGUAY 4 H BEHIND UTC +# PARAGUAY 3 H BEHIND UTC OCT 1, '88-MAR 31, '89 + +# From Arthur David Olson (January 21, 1989): +# Still don't know time of day when switch occurs. Punt. + +############################################################################### + +# Argentina + +# From Bob Devine (January 28, 1988): +# Argentina: first Sunday in October to first Sunday in April since 1976. +# Double Summer time from 1969 to 1974. Switches at midnight. + +# From U. S. Naval Observatory (January 19, 19889): +# ARGENTINA 3 H BEHIND UTC + +# From Arthur David Olson (January 21, 1989): +# OAG, USNO and Bob have different data. Punt. diff --git a/usr/src/share/zoneinfo/datfiles/systemv b/usr/src/share/zoneinfo/datfiles/systemv new file mode 100644 index 0000000000..8dc7bedfb7 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/systemv @@ -0,0 +1,35 @@ +# @(#)systemv 4.1 + +# Old rules, should the need arise. +# No attempt is made to handle Newfoundland, since it cannot be expressed +# using the System V "TZ" scheme (half-hour offset), or anything outside +# North America (no support for non-standard DST start/end dates), nor +# the change in the DST rules in the US in 1987 (can't split between +# Canada, with no changes, and the US) +# +# Be sure to compile this *without* leap second correction for true conformance. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D +Rule SystemV min 1973 - Oct lastSun 2:00 0 S +Rule SystemV 1974 only - Jan 6 2:00 1:00 D +Rule SystemV 1974 only - Nov lastSun 2:00 0 S +Rule SystemV 1975 only - Feb 23 2:00 1:00 D +Rule SystemV 1975 only - Oct lastSun 2:00 0 S +Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D +Rule SystemV 1976 max - Oct lastSun 2:00 0 S + +# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +Zone SystemV/AST4ADT -4:00 SystemV A%sT +Zone SystemV/EST5EDT -5:00 SystemV E%sT +Zone SystemV/CST6CDT -6:00 SystemV C%sT +Zone SystemV/MST7MDT -7:00 SystemV M%sT +Zone SystemV/PST8PDT -8:00 SystemV P%sT +Zone SystemV/YST9YDT -9:00 SystemV Y%sT +Zone SystemV/AST4 -4:00 - AST +Zone SystemV/EST5 -5:00 - EST +Zone SystemV/CST6 -6:00 - CST +Zone SystemV/MST7 -7:00 - MST +Zone SystemV/PST8 -8:00 - PST +Zone SystemV/YST9 -9:00 - YST +Zone SystemV/HST10 -10:00 - HST diff --git a/usr/src/share/zoneinfo/datfiles/usno1988 b/usr/src/share/zoneinfo/datfiles/usno1988 new file mode 100644 index 0000000000..12d14ce1d0 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/usno1988 @@ -0,0 +1,111 @@ +# @(#)usno1988 1.1 +# +# From Arthur David Olson (January 19, 1989): +# +# Here's some United States Naval Observatory time zone data from +# February 1988. It's here mostly to convince you that the USNO has indeed +# been updating its files (see its 1989 data elsewhere). +# +ANDORRA 1 H AHEAD OF UTC +ARGENTINA 3 H BEHIND UTC +BRASIL WEST 5 H BEHIND UTC (CRUZEIRO DO SUL) +BRASIL CENTRAL 4 H BEHIND UTC (MANAUS) +BRASIL EAST 3 H BEHIND UTC COASTAL STATES, RIO, SP, BRASILIA +BRASIL 2 H BEHIND UTC ATLANTIC ISLANDS +BRAZIL 5 H BEHIND UTC WEST (CRUZEIRO DO SUL) +BRAZIL 4 H BEHIND UTC CENTRAL (MANAUS) +BRAZIL 3 H BEHIND UTC COASTAL STATES, RIO, SP, BRASILIA +BRAZIL 3 H BEHIND UTC FOR MOST MAJOR AIRPORTS. +BRAZIL 2 H BEHIND UTC ATLANTIC ISLANDS +BULGARIA 2 H AHEAD OF UTC WINTER +BULGARIA 3 H AHEAD OF UTC SUMMER MAR31 - SEP 85, 0100 LOCAL +CHINA 8 H AHEAD OF UTC; ALL OF CHINA, INCL TAIWAN +CUBA 5 H BEHIND UTC IN WINTER +CUBA 4 H BEHIND UTC MAY 8 - OCT 8 +CYPRUS 2 H AHEAD UTC IN WINTER +CYPRUS 3 H AHEAD UTC MAR 25 - SEP 30 +DENMARK 1 H AHEAD UTC IN WINTER +DENMARK 2 H AHEAD UTC MAR 31 - SEP 30 , 0200 LOCAL +DENMK. FAEROE IS 1 H AHEAD UTC MAR 31 - SEP 30 , 0200 LOCAL +EGYPT 2 H AHEAD UTC +EGYPT 3 H AHEAD UTC SUMMER (AFTER RAMADAN) +ENGLAND ON UTC IN WINTER; WALES, SCOTLAND, N.I., CH.IS. +ENGLAND 1 H AHEAD OF UTC; SUMMER TIL 28 OCT 0200 LOCAL +FINLAND 2 H AHEAD OF UTC IN WINTER +FINLAND 3 H AHEAD OF UTC MAR 25 - SEP 30 +FRANCE 1 H AHEAD OF UTC IN WINTER +FRANCE 2 H AHEAD OF UTC MAR 31 - SEP 30 , 0100 LOCAL +GREECE 2 H AHEAD OF UTC IN WINTER +GREECE 3 H AHEAD OF UTC IN SUMMER EFF. 31MAR85 02/03 LOCAL +GREECE 3 H AHEAD OF UTC MAR 25 - SEP 30 +GREENLAND 4 H BEHIND UTC IN THULE AIRBASE YEAR ROUND +GREENLAND 3 H BEHIND UTC IN WINTER AT SONDRESTROM +GREENLAND 2 H BEHIND UTC 30 MAR - 30 SEP 2200 LOCAL AT -"- +GREENLAND 2 H BEHIND UTC AROUND SCORESBY SUND +ICELAND ON UTC +IRAN 3.5H AHEAD OF UTC +IRELAND ON UTC IN WINTER +IRELAND 1 H AHEAD OF UTC MAR 31 - OCT 23 0200 LOCAL +ITALY 1 H AHEAD OF UTC IN WINTER +ITALY 2 H AHEAD OF UTC MAR 31 - SEP 30, 0030 LOCAL +JAMAICA 5 H BEHIND UTC IN WINTER +JAMAICA 4 H BEHIND UTC APR 29 - OCT 29 +LIBYA 2 H AHEAD OF UTC +MEXICO BAJA CAL N 8 H BEHIND UTC IN WINTER; NORTH BAJA CAL, TIJUANA +MEXICO BAJA CAL N 7 H BEHIND UTC APR 29 - OCT 29 +MEXICO BAJA CAL S 7 H BEHIND UTC ALL YEAR; MAZATLAN +MEXICO CENTRAL 6 H BEHIND UTC ALL YEAR; MEXICO CITY +MONACO 1 H AHEAD UTC IN WINTER +MONACO 2 H AHEAD UTC MAR 25 - SEP30 +PARAGUAY 4 H BEHIND UTC IN WINTER +PARAGUAY 3 H BEHIND UTC SEP 30 - MAR 30 +POLAND 1 H AHEAD OF UTC IN WINTER +POLAND 2 H AHEAD OF UTC MAR 24 - SEP 0200 LOCAL +PORTUGAL ON UTC IN WINTER +PORTUGAL 1 H AHEAD OF UTC IN SUMMER MAR 31 - SEP 29 0100 LOCAL +PORTUGAL AZORES 1 H BEHIND UTC IN WINTER +PORTUGAL AZORES ON UTC IN SUMMER MAR 31 - SEP 29 +PORTUGAL MADEIRA ON UTC ALL YEAR; +ROMANIA 2 H AHEAD OF UTC IN WINTER +ROMANIA 3 H AHEAD OF UTC APR 3 - SEP 24 +SCOTLAND SEE ENGLAND +SWITZERLAND 1 H AHEAD OF UTC IN WINTER +SWITZERLAND 2 H AHEAD OF UTC MAR 31 - SEP 30 0200 LOCAL +TURKEY 3 H AHEAD OF UTC +USA EASTERN 5 H BEHIND UTC IN WINTER; NEW YORK, WASHINGTON +USA EASTERN 4 H BEHIND UTC APR 29 - OCT 29 +USA CENTRAL 6 H BEHIND UTC IN WINTER; CHICAGO, HOUSTON +USA CENTRAL 5 H BEHIND UTC APR 29 - OCT 29 +USA MOUNTAIN 7 H BEHIND UTC IN WINTER; DENVER +USA MOUNTAIN 6 H BEHIND UTC APR 29 - OCT 29 +USA PACIFIC 8 H BEHIND UTC IN WINTER; L.A., SAN FRANCISCO +USA PACIFIC 7 H BEHIND UTC APR 29 - OCT 29 +USA ALASKA STD 9 H BEHIND UTC IN WINTER; MOST OF ALASKA (AKST) +USA ALASKA STD 8 H BEHIND UTC APR 29 - OCT 29 (AKDT) +USA ALEUTIAN 10 H BEHIND UTC IN WINTER; ISLANDS WEST OF 170W +USA - " - 9 H BEHIND UTC APR 29 - OCT 29 +USA HAWAII 10 H BEHIND UTC ALL YEAR; +USA BERING 11 H BEHIND UTC ALL YEAR; SAMOA, MIDWAY +USSR WEST EUROP 3 H AHEAD OF UTC IN WINTER; LENINGRAD, MOSCOW +USSR WEST EUROP 4 H AHEAD OF UTC APR 1 - SEP 30 +USSR CENTRAL EUR 4 H AHEAD OF UTC IN WINTER; ROSTOV, BAKU +USSR CENTRAL EUR 5 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST EUROP 5 H AHEAD OF UTC IN WINTER; SVERDLOVSK +USSR EAST EUROP 6 H AHEAD OF UTC APR 1 - SEP 30 +USSR WEST SIBERIAN 6 H AHEAD OF UTC IN WINTER; TASHKENT, ALMA ATA +USSR WEST SIBERIAN 7 H AHEAD OF UTC APR 1 - SEP 30 +USSR WEST-CENTRAL 7 H AHEAD OF UTC IN WINTER; NOVOSIBIRSK +USSR WEST-CENTRAL 8 H AHEAD OF UTC APR 1 - SEP 30 +USSR WEST-CENTRAL 8 H AHEAD OF UTC IN WINTER; IRKUTSK +USSR WEST-CENTRAL 9 H AHEAD OF UTC APR 1 - SEP 30 +USSR CENTRAL SIB 9 H AHEAD OF UTC IN WINTER; YAKUTSK +USSR CENTRAL SIB 10 H AHEAD OF UTC APR 1 - SEP 30 +USSR CENTRAL SIB 10 H AHEAD OF UTC IN WINTER; VLADIVOSTOK +USSR CENTRAL SIB 11 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST SIBERIA 11 H AHEAD OF UTC IN WINTER; MAGADAN +USSR EAST SIBERIA 12 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST SIBERIA 12 H AHEAD OF UTC IN WINTER; PETROPAVLOVSK +USSR EAST SIBERIA 13 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST SIBERIA 13 H AHEAD OF UTC IN WINTER; UELEN +USSR EAST SIBERIA 14 H AHEAD OF UTC APR 1 - SEP 30 +WALES SEE ENGLAND diff --git a/usr/src/share/zoneinfo/datfiles/usno1989 b/usr/src/share/zoneinfo/datfiles/usno1989 new file mode 100644 index 0000000000..82cc386437 --- /dev/null +++ b/usr/src/share/zoneinfo/datfiles/usno1989 @@ -0,0 +1,452 @@ +# @(#)usno1989 1.3 +# +# From Arthur David Olson (January 19, 1989): +# +# Here's time zone information from the United States Naval Observatory; +# no corrections have been made, and there are some obvious challenges. +# The USNO warns: +# DUE TO FREQUENT CHANGES IN THE LOCAL LAWS GOVERNING DAYLIGHT +# SAVING TIME, WE CANNOT GUARANTEE THE ACCURACY OF THIS +# INFORMATION. PLEASE ALERT US TO ANY DISCREPANCY YOU MAY +# DISCOVER. +# +AFGHANISTAN 4.5H AHEAD OF UTC +ALBANIA 1 H AHEAD OF UTC +ALBANIA 2 H AHEAD OF UTC MAR 27 - SEP 24 +ALBANIA (ESTIMATED) +ALGERIA 1 H AHEAD OF UTC +AMERICAN SAMOA 11 H BEHIND UTC +ANDORRA 1 H AHEAD OF UTC +ANDORRA 2 H AHEAD OF UTC MAR 27 - SEP 24 +ANDORRA (ESTIMATED) +ANGOLA 1 H AHEAD OF UTC +ARGENTINA 3 H BEHIND UTC +ARUBA 4 H BEHIND UTC ALSO BONAIRE, CURACAO, +ARUBA ST.MAARTEN +AUSTRALIA WEST 8 H AHEAD OF UTC PERTH, EXMOUTH +AUSTRALIA N.T. 9.5H AHEAD OF UTC DARWIN NO ADVANCED TIME +AUSTRALIA N.T. IN SUMMER +AUSTRALIA SOUTH 9.5H AHEAD OF UTC ADELAIDE +AUSTRALIA INCLUDING BROKEN HILL, NSW +AUSTRALIA SOUTH 10.5H AHEAD OF UTC ADELAIDE OCT 30, '88-MAR +AUSTRALIA SOUTH 18, '89 INCLUDING BROKEN +AUSTRIALIA SOUTH HILL, NSW +AUSTRALIA QUEENL 10 H AHEAD OF UTC +AUSTRALIA NSW 10 H AHEAD OF UTC SYDNEY +AUSTRALIA NSW 11 H AHEAD OF UTC SYDNEY OCT 30, '88-MAR 18, +AUSTRALIA NSW '89 +AUSTRALIA TASM. 10 H AHEAD OF UTC HOBART +AUSTRALIA TASM. 11 H AHEAD OF UTC HOBART OCT 30, '88-MAR 18, +AUSTRALIA TASM. '89 +AUSTRIA 1 H AHEAD OF UTC +AUSTRIA 2 H AHEAD OF UTC MAR 27 - SEPT 24 +AZORES SEE PORTUGAL +BAHAMAS 5 H BEHIND UTC EXCLUDING TURKS AND CAICOS +BAHAMAS ISLANDS) +BAHAMAS 4 H BEHIND UTC APR 3 - OCT 29 (SAME +BAHAMAS EXCLUSION) +BAHRAIN 3 H AHEAD OF UTC +BANGLADESH 6 H AHEAD OF UTC +BARBADOS 4 H BEHIND UTC +BELGIUM 1 H AHEAD OF UTC +BELGIUM 2 H AHEAD OF UTC MAR 27 - SEP 24 +BELIZE 6 H BEHIND UTC +BENIN PEOPLES REP 1 H AHEAD OF UTC DAHOMEY +BERMUDA 4 H BEHIND UTC +BERMUDA 3 H BEHIND UTC APR 3 - OCT 29 +BHUTAN 6 H AHEAD OF UTC +BOLIVIA 4 H BEHIND UTC +BONAIRE 4 H BEHIND UTC ALSO ARUBA,CURACAO, +BONAIRE ST.MAARTEN, SABA +BOTSWANA 2 H AHEAD OF UTC +BRAZIL WEST 5 H BEHIND UTC TERRITORY OF ACRE +BRAZIL WEST 4 H BEHIND UTC ACRE OCT 23, '88-FEB 11, +BRAZIL '89 (ESTIMATED) +BRAZIL CENTRAL 4 H BEHIND UTC MANAUS +BRAZIL CENTRAL 3 H BEHIND UTC MANAUS OCT 23, '88-FEB 11, +BRAZIL CENTRAL '89 (ESTIMATED) +BRAZIL EAST 3 H BEHIND UTC COASTAL STATES, RIO, SAO +BRAZIL EAST PAULO, BRASILIA +BRAZIL EAST 2 H BEHIND UTC COASTAL STATES, RIO, SAO +BRAZIL PAULO, BRASILIA OCT 23, +BRAZIL '88-FEB 11, '89 +BRAZIL (ESTIMATED) +BRAZIL 2 H BEHIND UTC ATLANTIC ISLANDS, FERNANDO +BRAZIL DE NORONHA +BRAZIL 1 H BEHIND UTC OCT 23, '88-FEB 11, '89 +BRAZIL (ESTIMATED) +BRAZIL 3 H BEHIND UTC FOR MOST MAJOR AIRPORTS. +BRITISH VIRGIN I. 4 H BEHIND UTC +BRUNEI 8 H AHEAD OF UTC +BULGARIA 2 H AHEAD OF UTC +BULGARIA 3 H AHEAD OF UTC MAR 27 - SEP 24 +BURKINA FASO ON UTC +BURMA 6.5H AHEAD OF UTC +BURUNDI 2 H AHEAD OF UTC +CAMBODIA SEE KAMPUCHEA +CAMEROON 1 H AHEAD OF UTC +CANADA NEW FDL 3.5H BEHIND UTC ST.JOHN'S +CANADA NEW FDL 1.5H BEHIND UTC APR 3 - OCT 29 +CANADA ATLANTIC 4 H BEHIND UTC HALIFAX +CANADA ATLANTIC 3 H BEHIND UTC APR 3 - OCT 29 +CANADA EASTERN 5 H BEHIND UTC TORONTO, MONTREAL, OTTAWA +CANADA EASTERN 4 H BEHIND UTC APR 3 - OCT 29 +CANADA CENTRAL 6 H BEHIND UTC REGINA, WINNIPEG +CANADA CENTRAL 5 H BEHIND UTC APR 3 - OCT 29 +CANADA MOUNTAIN 7 H BEHIND UTC CALGARY, EDMONTON +CANADA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 29 +CANADA PACIFIC 8 H BEHIND UTC VANCOUVER +CANADA PACIFIC 7 H BEHIND UTC APR 3 - OCT 29 +CANADA YUKON SAME AS PACIFIC DAWSON +CAPE VERDE 1 H BEHIND UTC +CAYMAN ISLANDS 5 H BEHIND UTC +CAROLINE ISLAND 10 H AHEAD OF UTC EXCLUDING PONAPE IS., +CAROLINE ISLAND KUSAIE, AND PINGELAP +CENTRAL AFRICA 1 H AHEAD OF UTC +CEYLON 5.5H AHEAD OF UTC, SEE SRI LANKA +CHAD 1 H AHEAD OF UTC +CHANNEL ISLANDS SEE ENGLAND +CHILE 4 H BEHIND UTC CONTINENTAL +CHILE 3 H BEHIND UTC OCT 9, '88-MAR 11, '89 +CHILE 6 H BEHIND UTC EASTER ISLAND +CHILE 5 H BEHIND UTC OCT 9, '88-MAR 11, '89 +CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN +CHINA 9 H AHEAD OF UTC APR 17 - SEP 10 +COCOS (Keeling) I. 6.5H AHEAD OF UTC +COLOMBIA 5 H BEHIND UTC +COMOROS 3 H AHEAD OF UTC +CONGO 1 H AHEAD OF UTC +COOK ISLANDS 10 H BEHIND UTC +COOK ISLANDS 9.5H BEHIND UTC OCT 30, '88-MAR 24, '89 +COOK ISLANDS (ESTIMATED) +COSTA RICA 6 H BEHIND UTC +COTE D'IVOIRE ON UTC +CUBA 5 H BEHIND UTC +CUBA 4 H BEHIND UTC MAR 20 - OCT 8 +CURACAO 4 H BEHIND UTC ALSO BONAIRE, ARUBA, +CURACAO ST.MAARTEN +CYPRUS 2 H AHEAD OF UTC +CYPRUS 3 H AHEAD OF UTC MAR 27 - SEP 24 +CZECHOSLOVAKIA 1 H AHEAD OF UTC +CZECHOSLOVAKIA 2 H AHEAD OF UTC MAR 27 - SEP 24 +DENMARK 1 H AHEAD OF UTC +DENMARK 2 H AHEAD OF UTC MAR 27 - SEP 24 +DENMK. FAEROE IS 1 H AHEAD OF UTC MAR 27 - SEP 24 +DJIBOUTI 3 H AHEAD OF UTC +DOMINICA 4 H BEHIND UTC +DOMINICAN REP 4 H BEHIND UTC +ECUADOR 5 H BEHIND UTC CONTINENTAL +ECUADOR 6 H BEHIND UTC GALAPAGOS ISLANDS +EGYPT 2 H AHEAD OF UTC +EGYPT 3 H AHEAD OF UTC MAY 17 - SEP 30 (AFTER +EGYPT RAMADAN) +EL SALVADOR 6 H BEHIND UTC +ENGLAND ON UTC (WALES, SCOTLAND, N.I., +ENGLAND CH. IS.) +ENGLAND 1 H AHEAD OF UTC MAR 27 - OCT 22 +ENEZUELA 4 H BEHIND UTC +EQUITORIAL GUINEA 1 H AHEAD OF UTC +ETHIOPIA 3 H AHEAD OF UTC +FALKLAND ISLANDS 4 H BEHIND UTC +FALKLAND ISLANDS 3 H BEHIND UTC SEP 11, '88-APR 15, '89 +FALKLAND ISLANDS (ESTIMATED) +FAROE ISLAND ON UTC +FAROE ISLAND 1 H AHEAD OF UTC MAR 27 - SEP 24 +FIJI 12 H AHEAD OF UTC +FINLAND 2 H AHEAD OF UTC +FINLAND 3 H AHEAD OF UTC MAR 27 - SEP 24 +FRANCE 1 H AHEAD OF UTC +FRANCE 2 H AHEAD OF UTC MAR 27 - SEP 24 +FRENCH GUIANA 3 H BEHIND UTC +FRENCH POLYNESIA 9 H BEHIND UTC GAMBIER ISLAND +FRENCH POLYNESIA 9.5H BEHIND UTC MARQUESAS ISLANDS +FRENCH POLYNESIA 10 H BEHIND UTC SOCIETY ISLANDS, TUBUAI +FRENCH POLYNESIA ISLANDS, TUAMOTU ISLAND, +FRENCH POLYNESIA TAHITI +GABON 1 H AHEAD OF UTC +GAMBIA ON UTC +GERMANY ALL 1 H AHEAD OF UTC +GERMANY ALL 2 H AHEAD OF UTC MAR 27 - SEP 24 +GHANA ON UTC +GIBRALTAR 1 H AHEAD OF UTC +GIBRALTAR 2 H AHEAD OF UTC MAR 27 - SEP 24 +GREECE 2 H AHEAD OF UTC +GREECE 3 H AHEAD OF UTC MAR 27 - SEP 24 +GREENLAND 4 H BEHIND UTC THULE AIRBASE YEAR ROUND +GREENLAND 3 H BEHIND UTC ANGMAGSSALIK AND W. COAST +GREENLAND 2 H BEHIND UTC MAR 27 - SEP 24 +GREENLAND 1 H BEHIND UTC SCORESBYSUND +GREENLAND ON UTC MAR 27 - SEP 24 +GRENADA 4 H BEHIND UTC +GUADELOUPE 4 H BEHIND UTC ST. BARTHELEMY, NORTHERN +GUADELOUPE ST. MARTIN MARTINIQUE +GUAM 10 H AHEAD OF UTC +GUATEMALA 6 H BEHIND UTC +GUINEA ON UTC +GUINEA BISSAU ON UTC +GUINEA REPUBLIC ON UTC +GUINEA EQUATORIAL 1 H AHEAD OF UTC +GUYANA 3 H BEHIND UTC +HAITI 5 H BEHIND UTC +HAITI 4 H BEHIND UTC APR 3 - OCT 29 +HOLLAND SEE NETHERLANDS +HONDURAS 6 H BEHIND UTC +HONG KONG 8 H AHEAD OF UTC +HUNGARY 1 H AHEAD OF UTC +HUNGARY 2 H AHEAD OF UTC MAR 27 - SEP 24 +ICELAND ON UTC +INDIA 5.5H AHEAD OF UTC INCLUDING ANDAMAN ISLANDS +INDONESIA WEST 7 H AHEAD OF UTC SUMATRA, JAVA, BALI, +INDONESIA WEST JAKARTA +INDONESIA CENTRAL 8 H AHEAD OF UTC KALIMANTAN, SULAWESI +INDONESIA EAST 9 H AHEAD OF UTC IRIAN, BARAT +IRAN 3.5H AHEAD OF UTC +IRAQ 3 H AHEAD OF UTC +IRAQ 4 H AHEAD OF UTC APR 1 - SEP 30 +IRELAND ON UTC +IRELAND 1 H AHEAD OF UTC MAR 27 - OCT 22 +ISRAEL 2 H AHEAD OF UTC +ISRAEL 3 H AHEAD OF UTC APR 10 - SEP 3 +ITALY 1 H AHEAD OF UTC +ITALY 2 H AHEAD OF UTC MAR 27 - SEP 24 +IVORY COAST ON UTC +IWAN 8 H AHEAD OF UTC +JAMAICA 5 H BEHIND UTC +JAPAN 9 H AHEAD OF UTC +JOHNSTON ISLAND 10 H BEHIND UTC +JORDAN 2 H AHEAD OF UTC +JORDAN 3 H AHEAD OF UTC APR 1 - OCT 6 +KAMPUCHEA 7 H AHEAD OF UTC +KENYA 3 H AHEAD OF UTC +KIRIBATI, REP OF 12 H AHEAD OF UTC CANTON, ENDERBURY ISLANDS +KIRIBATI, REP OF 11 H AHEAD OF UTC CHRISTMAS ISLAND +KOREA 9 H AHEAD OF UTC +KOREA, REP OF 9 H AHEAD OF UTC +KOREA, REP OF 10 H AHEAD OF UTC MAY 8 - OCT 8 +KUWAIT 3 H AHEAD OF UTC +KUSAIE, PINGELAP 12 H AHEAD OF UTC INCLUDING MARSHALL IS., +KUSAIE, PINGELAP EXCLUDING KWAJALEIN) +KWAJALEIN 12 H BEHIND UTC +LAOS 7 H AHEAD OF UTC +LEBANON 2 H AHEAD OF UTC +LEBANON 3 H AHEAD OF UTC JUN 1 - OCT 31 +LEEWARD ISLANDS 4 H BEHIND UTC ANTIGUA, DOMINICA, +LEEWARD ISLANDS MONTSERRAT, ST. +LEEWARD ISLAANDS CHRISTOPHER, ST. KITTS, +LEEWARD ISLANDS NEVIS, ANGUILLA +LESOTHO 2 H AHEAD OF UTC +LIBERIA ON UTC +LIBYAN ARAB 1 H AHEAD OF UTC JAMAHIRIYA/LIBYA +LIBYAN ARAB 2 H AHEAD OF UTC APR 1 - SEP 30 JAMAHIRIYA/LIBYA +LIECHTENSTEIN 1 H AHEAD OF UTC +LIECHTENSTEIN 2 H AHEAD OF UTC MAR 27 - SEP 24 +LUXEMBOURG 1 H AHEAD OF UTC +LUXEMBOURG 2 H AHEAD OF UTC MAR 27 - SEP 24 +MACAO 8 H AHEAD OF UTC +MADAGASCAR 3 H AHEAD OF UTC +MADEIRA SEE PORTUGAL +MALAWI 2 H AHEAD OF UTC +MALAYSIA 8 H AHEAD OF UTC +MALDIVES 5 H AHEAD OF UTC +MALI ON UTC +MALTA 1 H AHEAD OF UTC +MALTA 2 H AHEAD OF UTC MAR 27 - SEP 24 +MARTINIQUE 4 H BEHIND UTC +MAURITANIA ON UTC +MAURITIUS 4 H AHEAD OF UTC +MARIANA ISLAND 10 H AHEAD OF UTC EXCLUDING GUAM +MEXICO BAJA CAL N 7 H BEHIND UTC BAJA CALIFORNIA SUR AND +MEXICO BAJA CAL N N. PACIFIC COAST (STATES +MEXICO BAJA CAL N OF SINALOA AND SONORA) +MEXICO BAJA CAL N 8 H BEHIND UTC ABOVE 28TH PARALLAL APR 3 +MEXICO BAJA CAL N - OCT 29 +MEXICO BAJA CAL N 7 H BEHIND UTC ABOVE 28TH PARALLAL APR 3 +MEXICO BAJA CAL N - 0CT 29 +MEXICO 6 H BEHIND UTC STATES OF DURANGO, +MEXICO COAHUILA, NUEVO LEON, +MEXICO TAMAULIPAS +MEXICO 5 H BEHIND UTC STATES OF DURANGO, +MEXICO COAHUILA, NUEVO LEON, +MEXICO TAMAULIPAS APR 3 - OCT 29 +MEXICO 6 H BEHIND UTC GENERAL MEXICO, STATES OF +MEXICO CAMPECHE, QUINTANA ROO AND +MEXICO YUCATAN +MIDWAY ISLAND 11 H BEHIND UTC +MONACO 1 H AHEAD OF UTC +MONACO 2 H AHEAD OF UTC MAR 27 - SEP 24 +MONGOLIA 8 H AHEAD OF UTC +MONGOLIA 9 H AHEAD OF UTC MAR 27 - SEP 24 +MONTSERRAT 4 H BEHIND UTC +MOROCCO ON UTC +MOZAMBIQUE 2 H AHEAD OF UTC +NAMIBIA 2 H AHEAD OF UTC +NAURU, REP OF 12 H AHEAD OF UTC +NEPAL 5H45M AHEAD OF UTC +NETHERLANDS 1 H AHEAD OF UTC +NETHERLANDS 2 H AHEAD OF UTC MAR 27 - SEP 24 +NETHERLANDS 4 H BEHIND UTC ANTILLES AND SOUTHERN ST. +NETHERLANDS MAARTEN +NEW CALEDONIA 11 H AHEAD OF UTC +NEW HEBRIDES SEE VANUATU +NEW ZEALAND 12 H AHEAD OF UTC (EXCLUDING CHATHAM ISLAND) +NEW ZEALAND 13 H AHEAD OF UTC OCT 30, '88-MAR 4, '89 +NEW ZEALAND 12H45M AHEAD OF UTC CHATHAM ISLAND +NICARAGUA 6 H BEHIND UTC +NIGER 1 H AHEAD OF UTC +NIGERIA 1 H AHEAD OF UTC +NIUE ISLAND 11 H BEHIND UTC +NORFOLK ISLAND 11H30M AHEAD OF UTC +NORTHERN IRELAND ON UTC WALES, SCOTLAND, N.I., +NORTHERN IRELAND CH.IS. +NORTHERN IRELAND 1 H AHEAD OF UTC MAR 27 - OCT 22 +NORWAY 1 H AHEAD OF UTC +NORWAY 2 H AHEAD OF UTC MAR 27 - SEP 24 +OGO ON UTC +OMAN 4 H AHEAD OF UTC +PACIFIC ISLAND T.T. +PALAU ISLAND 9 H AHEAD OF UTC +PAKISTAN 5 H AHEAD OF UTC +PANAMA 5 H BEHIND UTC +PAPUA NEW GUINEA 10 H AHEAD OF UTC INCLUDING BOUGAINVILLE +PAPUA NEW GUINEA ISLAND +PARAGUAY 4 H BEHIND UTC +PARAGUAY 3 H BEHIND UTC OCT 1, '88-MAR 31, '89 +PERU 5 H BEHIND UTC +PHILIPPINES 8 H AHEAD OF UTC +PONAPE ISLAND 11 H AHEAD OF UTC +POLAND 1 H AHEAD OF UTC +POLAND 2 H AHEAD OF UTC MAR 27 - SEP 24 +PORTUGAL MAINLAND ON UTC +PORTUGAL MAINLAND 1 H AHEAD OF UTC MAR 27 - SEP 24 +PORTUGAL AZORES 1 H BEHIND UTC +PORTUGAL AZORES ON UTC MAR 27 - SEP 24 +PORTUGAL MADEIRA ON UTC +PORTUGAL MADEIRA 1 H AHEAD OF UTC MAR 27 - SEP 24 +PUERTO RICO 4 H BEHIND UTC +QATAR 3 H AHEAD OF UTC +ROMANIA 2 H AHEAD OF UTC +ROMANIA 3 H AHEAD OF UTC MAR 27 - SEP 24 +RUSSIA SEE USSR +RWANDA 2 H AHEAD OF UTC +SABA 4 H BEHIND UTC ALSO BONAIRE, CURACAO, +SAMOA 11 H BEHIND UTC +SAN MARINO 1 H AHEAD OF UTC +SAN MARINO 2 H AHEAD OF UTC MAR 27 - SEP 24 +SAN SALVADOR 6 H BEHIND UTC +SAO TOME ISLAND ON UTC AND PRINCIPE ISLAND +SAUDI ARABIA 3 H AHEAD OF UTC +SCOTLAND SEE ENGLAND +SENEGAL ON UTC +SEYCHELLES 4 H AHEAD OF UTC +SIERRA LEONE ON UTC +SINGAPORE 8 H AHEAD OF UTC +SOLOMON ISLANDS 11 H AHEAD OF UTC EXCLUDING BOUGAINVILLE +SOLOMON ISLANDS ISLAND +SOMALI 3 H AHEAD OF UTC +SOUTH AFRICA 2 H AHEAD OF UTC +SPAIN CANARY IS ON UTC +SPAIN CANARY IS 1 H AHEAD OF UTC MAR 27 - SEP 24 +SPAIN 1 H AHEAD OF UTC CONTINENTAL, BALEARIC AND +SPAIN MALLORCA ISLANDS +SPAIN 2 H AHEAD OF UTC CONTINENTAL, BALEARIC AND +SPAIN MALLORCA ISLANDS MAR 27 - +SPAIN SEP 24 +SPAIN MAINLAND 1 H AHEAD OF UTC MELILLA +SPAIN MAINLAND 2 H AHEAD OF UTC MAR 27 - SEP 24 +SRI LANKA 5H30M AHEAD OF UTC +ST.MAARTEN +ST.KITTS-NEVIS 4 H BEHIND UTC +ST.LUCIA 4 H BEHIND UTC +ST.PIERRE 3 H BEHIND UTC INCLUDING MIQUELON +ST.PIERRE 2 H BEHIND UTC INLCUDING MIQUELON APR 3 +ST.PIERRE - OCT 29 +ST.VINCENT 4 H BEHIND UTC INCLUDING THE GRENADINES +ST. HELENA ON UTC +SURINAME 3 H BEHIND UTC +SWAZILAND 2 H AHEAD OF UTC +SWEDEN 1 H AHEAD OF UTC +SWEDEN 2 H AHEAD OF UTC MAR 27 - SEP 24 +SWITZERLAND 1 H AHEAD OF UTC +SWITZERLAND 2 H AHEAD OF UTC MAR 27 - SEP 24 +SYRIA 2 H AHEAD OF UTC +SYRIA 3 H AHEAD OF UTC MAR 15 - OCT 30 +TAHITI 10 H BEHIND UTC +TANZANIA 3 H AHEAD OF UTC +THAILAND 7 H AHEAD OF UTC +TRINIDAD / TOBAGO 4 H BEHIND UTC +TUNISIA 1 H AHEAD OF UTC +TUNISIA 2 H AHEAD OF UTC APR 10 - SEP 24 +TURKEY 2 H AHEAD OF UTC +TURKEY 3 H AHEAD OF UTC MAR 27 - SEP 24 +TURKS AND CAICOS 5 H BEHIND UTC +TURKS AND CAICOS 4 H BEHIND UTC APR 3 - OCT 29 +TUVALU 12 H AHEAD OF UTC +UDAN 2 H AHEAD OF UTC +UGANDA 3 H AHEAD OF UTC +UNITED ARAB EMIR. 4 H AHEAD OF UTC ABU DHABI, DUBAI, SHARJAH, +UNITED ARAB EMIR RAS AL KHAIMAH +UNITED KINGDOM ON UTC WALES, SCOTLAND, N.I., CH. +UNITED KINGDOM IS. +UNITED KINGDOM 1 H AHEAD OF UTC MAR 27 - OCT 22 +UNITED STATES SEE USA +UPPER VOLTA ON UTC +URUGUAY 3 H BEHIND UTC +URUGUAY 2 H BEHIND UTC DEC 11, '88-FEB 25, '89 +URAGUAY (ESTIMATED) +USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON +USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30 +USA CENTRAL 6 H BEHIND UTC CHICAGO, HOUSTON +USA CENTRAL 5 H BEHIND UTC APR 3 - OCT 30 +USA MOUNTAIN 7 H BEHIND UTC DENVER +USA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 30 +USA PACIFIC 8 H BEHIND UTC L.A., SAN FRANCISCO +USA PACIFIC 7 H BEHIND UTC APR 3 - OCT 30 +USA ALASKA STD 9 H BEHIND UTC MOST OF ALASKA (AKST) +USA ALASKA STD 8 H BEHIND UTC APR 3 - OCT 30 (AKDT) +USA ALEUTIAN 10 H BEHIND UTC ISLANDS WEST OF 170W +USA - " - 9 H BEHIND UTC APR 3 - OCT 30 +USA HAWAII 10 H BEHIND UTC +USA BERING 11 H BEHIND UTC SAMOA, MIDWAY +USA FOR SPECIFIC INFO ON USA ZONES/TIMES CALL DOT 202-426-4520 +USSR WEST EUROP 3 H AHEAD OF UTC LENINGRAD, MOSCOW +USSR WEST EUROP 4 H AHEAD OF UTC APR 1 - SEP 30 +USSR CENTRAL EUR 4 H AHEAD OF UTC ROSTOV, BAKU +USSR CENTRAL EUR 5 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST EUROP 5 H AHEAD OF UTC SVERDLOVSK +USSR EAST EUROP 6 H AHEAD OF UTC APR 1 - SEP 30 +USSR WEST SIBERIAN 6 H AHEAD OF UTC TASHKENT, ALMA ATA +USSR WEST SIBERIAN 7 H AHEAD OF UTC APR 1 - SEP 30 +USSR WEST-CENTRAL 7 H AHEAD OF UTC NOVOSIBIRSK +USSR WEST-CENTRAL 8 H AHEAD OF UTC APR 1 - SEP 30 +USSR WEST-CENTRAL 8 H AHEAD OF UTC IRKUTSK +USSR WEST-CENTRAL 9 H AHEAD OF UTC APR 1 - SEP 30 +USSR CENTRAL SIB 9 H AHEAD OF UTC YAKUTSK +USSR CENTRAL SIB 10 H AHEAD OF UTC APR 1 - SEP 30 +USSR CENTRAL SIB 10 H AHEAD OF UTC VLADIVOSTOK +USSR CENTRAL SIB 11 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST SIBERIA 11 H AHEAD OF UTC MAGADAN +USSR EAST SIBERIA 12 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST SIBERIA 12 H AHEAD OF UTC PETROPAVLOVSK +USSR EAST SIBERIA 13 H AHEAD OF UTC APR 1 - SEP 30 +USSR EAST SIBERIA 13 H AHEAD OF UTC UELEN +USSR EAST SIBERIA 14 H AHEAD OF UTC APR 1 - SEP 30 +VANUATU 11 H AHEAD OF UTC (NEW HEBRIDES) +VANUATU 12 H AHEAD OF UTC SEP 25, '88-MAR 25, '89 +VANUATU (ESTIMATED) +VATICAN 1 H AHEAD OF UTC +VATICAN 2 H AHEAD OF UTC MAR 27 - SEP 24 +VIETNAM 7 H AHEAD OF UTC +VIRGIN ISLANDS 4 H BEHIND UTC ST.CROIX, ST.THOMAS, +VIRGIN ISLANDS ST.JOHN +WAKE ISLAND 12 H AHEAD OF UTC +WALES SEE ENGLAND +WALLIS/FUTUNA IS. 12 H AHEAD OF UTC +WINDWARD ISLANDS 4 H BEHIND UTC GRENADA, ST. LUCIA +YEMEN 3 H AHEAD OF UTC BOTH REPUBLICS +YUGOSLAVIA 1 H AHEAD OF UTC +YUGOSLAVIA 2 H AHEAD OF UTC MAR 27 - SEP 24 +ZAIRE EAST 1 H AHEAD OF UTC KINSHASA MBANDAKA +ZAIRE WEST 2 H AHEAD OF UTC LUBUMBASHI, KASAI, KIVU, +ZAIRE WEST HAUT-ZAIRE, SHABA +ZAMBIA 2 H AHEAD OF UTC +ZIMBABWE 2 H AHEAD OF UTC diff --git a/usr/src/share/zoneinfo/ialloc.c b/usr/src/share/zoneinfo/ialloc.c new file mode 100644 index 0000000000..9e21d1c7b3 --- /dev/null +++ b/usr/src/share/zoneinfo/ialloc.c @@ -0,0 +1,140 @@ +/*- + * Copyright (c) 1991 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Arthur David Olson of the National Cancer Institute. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +static char sccsid[] = "@(#)ialloc.c 5.3 (Berkeley) 4/20/91"; +#endif /* not lint */ + +#ifdef notdef +static char elsieid[] = "@(#)ialloc.c 8.18"; +#endif + +/*LINTLIBRARY*/ + +#include +#include + +#ifdef MAL +#define NULLMAL(x) ((x) == NULL || (x) == MAL) +#else /* !defined MAL */ +#define NULLMAL(x) ((x) == NULL) +#endif /* !defined MAL */ + +#define nonzero(n) (((n) == 0) ? 1 : (n)) + +char * icalloc __P((int nelem, int elsize)); +char * icatalloc __P((char * old, const char * new)); +char * icpyalloc __P((const char * string)); +char * imalloc __P((int n)); +char * irealloc __P((char * pointer, int size)); +void ifree __P((char * pointer)); + +char * +imalloc(n) +const int n; +{ +#ifdef MAL + register char * result; + + result = malloc((size_t) nonzero(n)); + return NULLMAL(result) ? NULL : result; +#else /* !defined MAL */ + return malloc((size_t) nonzero(n)); +#endif /* !defined MAL */ +} + +char * +icalloc(nelem, elsize) +int nelem; +int elsize; +{ + if (nelem == 0 || elsize == 0) + nelem = elsize = 1; + return calloc((size_t) nelem, (size_t) elsize); +} + +char * +irealloc(pointer, size) +char * const pointer; +const int size; +{ + if (NULLMAL(pointer)) + return imalloc(size); + return realloc((void *) pointer, (size_t) nonzero(size)); +} + +char * +icatalloc(old, new) +char * const old; +const char * const new; +{ + register char * result; + register oldsize, newsize; + + newsize = NULLMAL(new) ? 0 : strlen(new); + if (NULLMAL(old)) + oldsize = 0; + else if (newsize == 0) + return old; + else oldsize = strlen(old); + if ((result = irealloc(old, oldsize + newsize + 1)) != NULL) + if (!NULLMAL(new)) + (void) strcpy(result + oldsize, new); + return result; +} + +char * +icpyalloc(string) +const char * const string; +{ + return icatalloc((char *) NULL, string); +} + +void +ifree(p) +char * const p; +{ + if (!NULLMAL(p)) + (void) free(p); +} + +void +icfree(p) +char * const p; +{ + if (!NULLMAL(p)) + (void) free(p); +} diff --git a/usr/src/share/zoneinfo/scheck.c b/usr/src/share/zoneinfo/scheck.c new file mode 100644 index 0000000000..4d5c43b641 --- /dev/null +++ b/usr/src/share/zoneinfo/scheck.c @@ -0,0 +1,99 @@ +/*- + * Copyright (c) 1991 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Arthur David Olson of the National Cancer Institute. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +static char sccsid[] = "@(#)scheck.c 5.3 (Berkeley) 4/20/91"; +#endif /* not lint */ + +#ifdef notdef +static char elsieid[] = "@(#)scheck.c 8.9"; +#endif + +/*LINTLIBRARY*/ + +#include +#include +#include +#include + +char * +scheck(string, format) +const char * const string; +const char * const format; +{ + register char * fbuf; + register const char * fp; + register char * tp; + register int c; + register char * result; + char dummy; + + result = ""; + if (string == NULL || format == NULL) + return result; + fbuf = malloc(2 * strlen(format) + 4); + if (fbuf == NULL) + return result; + fp = format; + tp = fbuf; + while ((*tp++ = c = *fp++) != '\0') { + if (c != '%') + continue; + if (*fp == '%') { + *tp++ = *fp++; + continue; + } + *tp++ = '*'; + if (*fp == '*') + ++fp; + while (isascii(*fp) && isdigit(*fp)) + *tp++ = *fp++; + if (*fp == 'l' || *fp == 'h') + *tp++ = *fp++; + else if (*fp == '[') + do *tp++ = *fp++; + while (*fp != '\0' && *fp != ']'); + if ((*tp++ = *fp++) == '\0') + break; + } + *(tp - 1) = '%'; + *tp++ = 'c'; + *tp = '\0'; + if (sscanf((char *)string, fbuf, &dummy) != 1) + result = (char *) format; + ifree(fbuf); + return result; +} diff --git a/usr/src/share/zoneinfo/tzfile.5 b/usr/src/share/zoneinfo/tzfile.5 new file mode 100644 index 0000000000..08c1760a11 --- /dev/null +++ b/usr/src/share/zoneinfo/tzfile.5 @@ -0,0 +1,160 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" Arthur David Olson of the National Cancer Institute. +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)tzfile.5 5.3 (Berkeley) 5/10/91 +.\" +.Dd May 10, 1991 +.Dt TZFILE 5 +.Sh NAME +.Nm tzfile +.Nd time zone information +.Sh SYNOPSIS +.Fd #include +.Sh DESCRIPTION +The time zone information files used by +.Xr tzset 3 +begin with bytes reserved for future use, +followed by four four-byte values of type +.Em long , +written in a ``standard'' byte order +(the high-order byte of the value is written first). +These values are, +in order: +.Bl -tag -width tzh_ttisstdcnt +.It Fa tzh_ttisstdcnt +The number of standard/wall indicators stored in the file. +.It Fa tzh_leapcnt +The number of leap seconds for which data is stored in the file. +.It Fa tzh_timecnt +The number of "transition times" for which data is stored +in the file. +.It Fa tzh_typecnt +The number of "local time types" for which data is stored +in the file (must not be zero). +.It Fa tzh_charcnt +The number of characters of "time zone abbreviation strings" +stored in the file. +.El +.Pp +The above header is followed by +.Fa tzh_timecnt +four-byte values of type +.Em long , +sorted in ascending order. +These values are written in ``standard'' byte order. +Each is used as a transition time (as returned by +.Xr time 2 ) +at which the rules for computing local time change. +Next come +.Fa tzh_timecnt +one-byte values of type +.Fa unsigned char ; +each one tells which of the different types of ``local time'' types +described in the file is associated with the same-indexed transition time. +These values serve as indices into an array of +.Fa ttinfo +structures that appears next in the file; +these structures are defined as follows: +.Bd -literal -offset indent +struct ttinfo { + long tt_gmtoff; + int tt_isdst; + unsigned int tt_abbrind; +}; +.Ed +.Pp +Each structure is written as a four-byte value for +.Fa tt_gmtoff +of type +.Em long , +in a standard byte order, followed by a one-byte value for +.Fa tt_isdst +and a one-byte value for +.Fa tt_abbrind . +In each structure, +.Fa tt_gmtoff +gives the number of seconds to be added to GMT, +.Fa tt_isdst +tells whether +.Fa tm_isdst +should be set by +.Xr localtime 3 +and +.Fa tt_abbrind +serves as an index into the array of time zone abbreviation characters +that follow the +.Fa ttinfo +structure(s) in the file. +.Pp +Then there are +.Fa tzh_leapcnt +pairs of four-byte values, written in standard byte order; +the first value of each pair gives the time +(as returned by +.Xr time 2 ) +at which a leap second occurs; +the second gives the +.Em total +number of leap seconds to be applied after the given time. +The pairs of values are sorted in ascending order by time. +.Pp +Finally there are +.Fa tzh_ttisstdcnt +standard/wall indicators, each stored as a one-byte value; +they tell whether the transition times associated with local time types +were specified as standard time or wall clock time, +and are used when a time zone file is used in handling +.Tn POSIX Ns -style +time zone environment variables. +.Pp +.Fa Localtime +uses the first standard-time +.Fa ttinfo +structure in the file +(or simply the first +.Fa ttinfo +structure in the absence of a standard-time structure) +if either +.Fa tzh_timecnt +is zero or the time argument is less than the first transition time recorded +in the file. +.Sh SEE ALSO +.Xr ctime 3 +.Sh HISTORY +The +.Nm tzfile +file format appeared in +.Bx 4.3 tahoe. diff --git a/usr/src/share/zoneinfo/zic.8 b/usr/src/share/zoneinfo/zic.8 new file mode 100644 index 0000000000..80cfec9bc7 --- /dev/null +++ b/usr/src/share/zoneinfo/zic.8 @@ -0,0 +1,424 @@ +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" Arthur David Olson of the National Cancer Institute. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)zic.8 5.2 (Berkeley) 4/20/91 +.\" +.TH ZIC 8 +.SH NAME +zic \- time zone compiler +.SH SYNOPSIS +.B zic +[ +.B \-v +] [ +.B \-d +.I directory +] [ +.B \-l +.I localtime +] [ +.B \-p +.I posixrules +] [ +.B \-L +.I leapsecondfilename +] [ +.B \-s +] [ +.I filename +\&... ] +.SH DESCRIPTION +.if t .ds lq `` +.if t .ds rq '' +.if n .ds lq \&"\" +.if n .ds rq \&"\" +.de q +\\$3\*(lq\\$1\*(rq\\$2 +.. +.I Zic +reads text from the file(s) named on the command line +and creates the time conversion information files specified in this input. +If a +.I filename +is +.BR \- , +the standard input is read. +.PP +These options are available: +.TP +.BI "\-d " directory +Create time conversion information files in the named directory rather than +in the standard directory named below. +.TP +.BI "\-l " timezone +Use the given time zone as local time. +.I Zic +will act as if the input contained a link line of the form +.sp +.ti +.5i +Link \fItimezone\fP localtime +.TP +.BI "\-p " timezone +Use the given time zone's rules when handling POSIX-format +time zone environment variables. +.I Zic +will act as if the input contained a link line of the form +.sp +.ti +.5i +Link \fItimezone\fP posixrules +.TP +.BI "\-L " leapsecondfilename +Read leap second information from the file with the given name. +If this option is not used, +no leap second information appears in output files. +.TP +.B \-v +Complain if a year that appears in a data file is outside the range +of years representable by +.IR time (2) +values. +.TP +.B \-s +Limit time values stored in output files to values that are the same +whether they're taken to be signed or unsigned. +You can use this option to generate SVVS-compatible files. +.sp +Input lines are made up of fields. +Fields are separated from one another by any number of white space characters. +Leading and trailing white space on input lines is ignored. +An unquoted sharp character (#) in the input introduces a comment which extends +to the end of the line the sharp character appears on. +White space characters and sharp characters may be enclosed in double quotes +(") if they're to be used as part of a field. +Any line that is blank (after comment stripping) is ignored. +Non-blank lines are expected to be of one of three types: +rule lines, zone lines, and link lines. +.PP +A rule line has the form +.nf +.B +.ti +.5i +.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u +.sp +Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +.sp +For example: +.ti +.5i +.sp +Rule USA 1969 1973 \- Apr lastSun 2:00 1:00 D +.sp +.fi +The fields that make up a rule line are: +.TP "\w'LETTER/S'u" +.B NAME +Gives the (arbitrary) name of the set of rules this rule is part of. +.TP +.B FROM +Gives the first year in which the rule applies. +The word +.B minimum +(or an abbreviation) means the minimum year with a representable time value. +The word +.B maximum +(or an abbreviation) means the maximum year with a representable time value. +.TP +.B TO +Gives the final year in which the rule applies. +In addition to +.B minimum +and +.B maximum +(as above), +the word +.B only +(or an abbreviation) +may be used to repeat the value of the +.B FROM +field. +.TP +.B TYPE +Gives the type of year in which the rule applies. +If +.B TYPE +is +.B \- +then the rule applies in all years between +.B FROM +and +.B TO +inclusive; +if +.B TYPE +is +.BR uspres , +the rule applies in U.S. Presidential election years; +if +.B TYPE +is +.BR nonpres , +the rule applies in years other than U.S. Presidential election years. +If +.B TYPE +is something else, then +.I zic +executes the command +.ti +.5i +\fByearistype\fP \fIyear\fP \fItype\fP +.br +to check the type of a year: +an exit status of zero is taken to mean that the year is of the given type; +an exit status of one is taken to mean that the year is not of the given type. +.TP +.B IN +Names the month in which the rule takes effect. +Month names may be abbreviated. +.TP +.B ON +Gives the day on which the rule takes effect. +Recognized forms include: +.nf +.in +.5i +.sp +.ta \w'Sun<=25\0\0'u +5 the fifth of the month +lastSun the last Sunday in the month +lastMon the last Monday in the month +Sun>=8 first Sunday on or after the eighth +Sun<=25 last Sunday on or before the 25th +.fi +.in -.5i +.sp +Names of days of the week may be abbreviated or spelled out in full. +Note that there must be no spaces within the +.B ON +field. +.TP +.B AT +Gives the time of day at which the rule takes effect. +Recognized forms include: +.nf +.in +.5i +.sp +.ta \w'1:28:13\0\0'u +2 time in hours +2:00 time in hours and minutes +15:00 24-hour format time (for times after noon) +1:28:14 time in hours, minutes, and seconds +.fi +.in -.5i +.sp +Any of these forms may be followed by the letter +.B w +if the given time is local +.q "wall clock" +time or +.B s +if the given time is local +.q standard +time; in the absence of +.B w +or +.BR s , +wall clock time is assumed. +.TP +.B SAVE +Gives the amount of time to be added to local standard time when the rule is in +effect. +This field has the same format as the +.B AT +field +(although, of course, the +.B w +and +.B s +suffixes are not used). +.TP +.B LETTER/S +Gives the +.q "variable part" +(for example, the +.q S +or +.q D +in +.q EST +or +.q EDT ) +of time zone abbreviations to be used when this rule is in effect. +If this field is +.BR \- , +the variable part is null. +.PP +A zone line has the form +.sp +.nf +.ti +.5i +.ta \w'Zone\0\0'u +\w'Australia/South\-west\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u +Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +.sp +For example: +.sp +.ti +.5i +Zone Australia/South\-west 9:30 Aus CST 1987 Mar 15 2:00 +.sp +.fi +The fields that make up a zone line are: +.TP "\w'GMTOFF'u" +.B NAME +The name of the time zone. +This is the name used in creating the time conversion information file for the +zone. +.TP +.B GMTOFF +The amount of time to add to GMT to get standard time in this zone. +This field has the same format as the +.B AT +and +.B SAVE +fields of rule lines; +begin the field with a minus sign if time must be subtracted from GMT. +.TP +.B RULES/SAVE +The name of the rule(s) that apply in the time zone or, +alternately, an amount of time to add to local standard time. +If this field is +.B \- +then standard time always applies in the time zone. +.TP +.B FORMAT +The format for time zone abbreviations in this time zone. +The pair of characters +.B %s +is used to show where the +.q "variable part" +of the time zone abbreviation goes. +.TP +.B UNTIL +The time at which the GMT offset or the rule(s) change for a location. +It is specified as a year, a month, a day, and a time of day. +If this is specified, +the time zone information is generated from the given GMT offset +and rule change until the time specified. +.IP +The next line must be a +.q continuation +line; this has the same form as a zone line except that the +string +.q Zone +and the name are omitted, as the continuation line will +place information starting at the time specified as the +.B UNTIL +field in the previous line in the file used by the previous line. +Continuation lines may contain an +.B UNTIL +field, just as zone lines do, indicating that the next line is a further +continuation. +.PP +A link line has the form +.sp +.nf +.ti +.5i +.if t .ta \w'Link\0\0'u +\w'LINK-FROM\0\0'u +.if n .ta \w'Link\0\0'u +\w'US/Eastern\0\0'u +Link LINK-FROM LINK-TO +.sp +For example: +.sp +.ti +.5i +Link US/Eastern EST5EDT +.sp +.fi +The +.B LINK-FROM +field should appear as the +.B NAME +field in some zone line; +the +.B LINK-TO +field is used as an alternate name for that zone. +.PP +Except for continuation lines, +lines may appear in any order in the input. +.PP +Lines in the file that describes leap seconds have the following form: +.nf +.B +.ti +.5i +.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u +Leap YEAR MONTH DAY HH:MM:SS CORR R/S +.sp +For example: +.ti +.5i +.sp +Leap 1974 Dec 31 23:59:60 + S +.sp +.fi +The +.BR YEAR , +.BR MONTH , +.BR DAY , +and +.B HH:MM:SS +fields tell when the leap second happened. +The +.B CORR +field +should be +.q + +if a second was added +or +.q - +if a second was skipped. +The +.B R/S +field +should be (an abbreviation of) +.q Stationary +if the leap second time given by the other fields should be interpreted as GMT +or +(an abbreviation of) +.q Rolling +if the leap second time given by the other fields should be interpreted as +local wall clock time. +.SH NOTE +For areas with more than two types of local time, +you may need to use local standard time in the +.B AT +field of the earliest transition time's rule to ensure that +the earliest transition time recorded in the compiled file is correct. +.SH FILE +/etc/zoneinfo standard directory used for created files +.SH "SEE ALSO" +newctime(3), tzfile(5), zdump(8) +.. @(#)zic.8 4.4 diff --git a/usr/src/share/zoneinfo/zic.c b/usr/src/share/zoneinfo/zic.c new file mode 100644 index 0000000000..677fb2e9a3 --- /dev/null +++ b/usr/src/share/zoneinfo/zic.c @@ -0,0 +1,1894 @@ +/*- + * Copyright (c) 1991 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Arthur David Olson of the National Cancer Institute. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +static char sccsid[] = "@(#)zic.c 5.3 (Berkeley) 4/20/91"; +#endif /* not lint */ + +#ifdef notdef +static char elsieid[] = "@(#)zic.c 4.12"; +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef TRUE +#define TRUE 1 +#define FALSE 0 +#endif /* !defined TRUE */ + +struct rule { + const char * r_filename; + int r_linenum; + const char * r_name; + + int r_loyear; /* for example, 1986 */ + int r_hiyear; /* for example, 1986 */ + const char * r_yrtype; + + int r_month; /* 0..11 */ + + int r_dycode; /* see below */ + int r_dayofmonth; + int r_wday; + + long r_tod; /* time from midnight */ + int r_todisstd; /* above is standard time if TRUE */ + /* or wall clock time if FALSE */ + long r_stdoff; /* offset from standard time */ + const char * r_abbrvar; /* variable part of abbreviation */ + + int r_todo; /* a rule to do (used in outzone) */ + time_t r_temp; /* used in outzone */ +}; + +/* +** r_dycode r_dayofmonth r_wday +*/ + +#define DC_DOM 0 /* 1..31 */ /* unused */ +#define DC_DOWGEQ 1 /* 1..31 */ /* 0..6 (Sun..Sat) */ +#define DC_DOWLEQ 2 /* 1..31 */ /* 0..6 (Sun..Sat) */ + +struct zone { + const char * z_filename; + int z_linenum; + + const char * z_name; + long z_gmtoff; + const char * z_rule; + const char * z_format; + + long z_stdoff; + + struct rule * z_rules; + int z_nrules; + + struct rule z_untilrule; + time_t z_untiltime; +}; + +extern char * icatalloc __P((char * old, const char * new)); +extern char * icpyalloc __P((const char * string)); +extern void ifree __P((char * p)); +extern char * imalloc __P((int n)); +extern char * irealloc __P((char * old, int n)); +extern int link __P((const char * fromname, const char * toname)); +extern char * optarg; +extern int optind; +extern void perror __P((const char * string)); +extern char * scheck __P((const char * string, const char * format)); +static void addtt __P((time_t starttime, int type)); +static int addtype + __P((long gmtoff, const char * abbr, int isdst, + int ttisstd)); +static void addleap __P((time_t t, int positive, int rolling)); +static void adjleap __P((void)); +static void associate __P((void)); +static int ciequal __P((const char * ap, const char * bp)); +static void convert __P((long val, char * buf)); +static void dolink __P((const char * fromfile, const char * tofile)); +static void eat __P((const char * name, int num)); +static void eats __P((const char * name, int num, + const char * rname, int rnum)); +static long eitol __P((int i)); +static void error __P((const char * message)); +static char ** getfields __P((char * buf)); +static long gethms __P((char * string, const char * errstrng, + int signable)); +static void infile __P((const char * filename)); +static void inleap __P((char ** fields, int nfields)); +static void inlink __P((char ** fields, int nfields)); +static void inrule __P((char ** fields, int nfields)); +static int inzcont __P((char ** fields, int nfields)); +static int inzone __P((char ** fields, int nfields)); +static int inzsub __P((char ** fields, int nfields, int iscont)); +static int itsabbr __P((const char * abbr, const char * word)); +static int itsdir __P((const char * name)); +static int lowerit __P((int c)); +static char * memcheck __P((char * tocheck)); +static int mkdirs __P((char * filename)); +static void newabbr __P((const char * abbr)); +static long oadd __P((long t1, long t2)); +static void outzone __P((const struct zone * zp, int ntzones)); +static void puttzcode __P((long code, FILE * fp)); +static int rcomp __P((const void *leftp, const void *rightp)); +static time_t rpytime __P((const struct rule * rp, int wantedy)); +static void rulesub __P((struct rule * rp, char * loyearp, char * hiyearp, + char * typep, char * monthp, char * dayp, char * timep)); +static void setboundaries __P((void)); +static time_t tadd __P((time_t t1, long t2)); +static void usage __P((void)); +static void writezone __P((const char * name)); +static int yearistype __P((int year, const char * type)); + +static int charcnt; +static int errors; +static const char * filename; +static int leapcnt; +static int linenum; +static time_t max_time; +static int max_year; +static time_t min_time; +static int min_year; +static int noise; +static const char * rfilename; +static int rlinenum; +static const char * progname; +static int timecnt; +static int typecnt; +static int tt_signed; + +/* +** Line codes. +*/ + +#define LC_RULE 0 +#define LC_ZONE 1 +#define LC_LINK 2 +#define LC_LEAP 3 + +/* +** Which fields are which on a Zone line. +*/ + +#define ZF_NAME 1 +#define ZF_GMTOFF 2 +#define ZF_RULE 3 +#define ZF_FORMAT 4 +#define ZF_TILYEAR 5 +#define ZF_TILMONTH 6 +#define ZF_TILDAY 7 +#define ZF_TILTIME 8 +#define ZONE_MINFIELDS 5 +#define ZONE_MAXFIELDS 9 + +/* +** Which fields are which on a Zone continuation line. +*/ + +#define ZFC_GMTOFF 0 +#define ZFC_RULE 1 +#define ZFC_FORMAT 2 +#define ZFC_TILYEAR 3 +#define ZFC_TILMONTH 4 +#define ZFC_TILDAY 5 +#define ZFC_TILTIME 6 +#define ZONEC_MINFIELDS 3 +#define ZONEC_MAXFIELDS 7 + +/* +** Which files are which on a Rule line. +*/ + +#define RF_NAME 1 +#define RF_LOYEAR 2 +#define RF_HIYEAR 3 +#define RF_COMMAND 4 +#define RF_MONTH 5 +#define RF_DAY 6 +#define RF_TOD 7 +#define RF_STDOFF 8 +#define RF_ABBRVAR 9 +#define RULE_FIELDS 10 + +/* +** Which fields are which on a Link line. +*/ + +#define LF_FROM 1 +#define LF_TO 2 +#define LINK_FIELDS 3 + +/* +** Which fields are which on a Leap line. +*/ + +#define LP_YEAR 1 +#define LP_MONTH 2 +#define LP_DAY 3 +#define LP_TIME 4 +#define LP_CORR 5 +#define LP_ROLL 6 +#define LEAP_FIELDS 7 + +/* +** Year synonyms. +*/ + +#define YR_MINIMUM 0 +#define YR_MAXIMUM 1 +#define YR_ONLY 2 + +static struct rule * rules; +static int nrules; /* number of rules */ + +static struct zone * zones; +static int nzones; /* number of zones */ + +struct link { + const char * l_filename; + int l_linenum; + const char * l_from; + const char * l_to; +}; + +static struct link * links; +static int nlinks; + +struct lookup { + const char * l_word; + const int l_value; +}; + +static struct lookup const * byword __P((const char * string, + const struct lookup * lp)); + +static struct lookup const line_codes[] = { + "Rule", LC_RULE, + "Zone", LC_ZONE, + "Link", LC_LINK, + "Leap", LC_LEAP, + NULL, 0 +}; + +static struct lookup const mon_names[] = { + "January", TM_JANUARY, + "February", TM_FEBRUARY, + "March", TM_MARCH, + "April", TM_APRIL, + "May", TM_MAY, + "June", TM_JUNE, + "July", TM_JULY, + "August", TM_AUGUST, + "September", TM_SEPTEMBER, + "October", TM_OCTOBER, + "November", TM_NOVEMBER, + "December", TM_DECEMBER, + NULL, 0 +}; + +static struct lookup const wday_names[] = { + "Sunday", TM_SUNDAY, + "Monday", TM_MONDAY, + "Tuesday", TM_TUESDAY, + "Wednesday", TM_WEDNESDAY, + "Thursday", TM_THURSDAY, + "Friday", TM_FRIDAY, + "Saturday", TM_SATURDAY, + NULL, 0 +}; + +static struct lookup const lasts[] = { + "last-Sunday", TM_SUNDAY, + "last-Monday", TM_MONDAY, + "last-Tuesday", TM_TUESDAY, + "last-Wednesday", TM_WEDNESDAY, + "last-Thursday", TM_THURSDAY, + "last-Friday", TM_FRIDAY, + "last-Saturday", TM_SATURDAY, + NULL, 0 +}; + +static struct lookup const begin_years[] = { + "minimum", YR_MINIMUM, + "maximum", YR_MAXIMUM, + NULL, 0 +}; + +static struct lookup const end_years[] = { + "minimum", YR_MINIMUM, + "maximum", YR_MAXIMUM, + "only", YR_ONLY, + NULL, 0 +}; + +static struct lookup const leap_types[] = { + "Rolling", TRUE, + "Stationary", FALSE, + NULL, 0 +}; + +static const int len_months[2][MONSPERYEAR] = { + 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, + 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 +}; + +static const int len_years[2] = { + DAYSPERNYEAR, DAYSPERLYEAR +}; + +static time_t ats[TZ_MAX_TIMES]; +static unsigned char types[TZ_MAX_TIMES]; +static long gmtoffs[TZ_MAX_TYPES]; +static char isdsts[TZ_MAX_TYPES]; +static char abbrinds[TZ_MAX_TYPES]; +static char ttisstds[TZ_MAX_TYPES]; +static char chars[TZ_MAX_CHARS]; +static time_t trans[TZ_MAX_LEAPS]; +static long corr[TZ_MAX_LEAPS]; +static char roll[TZ_MAX_LEAPS]; + +/* +** Memory allocation. +*/ + +static char * +memcheck(ptr) +char * const ptr; +{ + if (ptr == NULL) { + (void) perror(progname); + (void) exit(EXIT_FAILURE); + } + return ptr; +} + +#define emalloc(size) memcheck(imalloc(size)) +#define erealloc(ptr, size) memcheck(irealloc(ptr, size)) +#define ecpyalloc(ptr) memcheck(icpyalloc(ptr)) +#define ecatalloc(oldp, newp) memcheck(icatalloc(oldp, newp)) + +/* +** Error handling. +*/ + +static void +eats(name, num, rname, rnum) +const char * const name; +const int num; +const char * const rname; +const int rnum; +{ + filename = name; + linenum = num; + rfilename = rname; + rlinenum = rnum; +} + +static void +eat(name, num) +const char * const name; +const int num; +{ + eats(name, num, (char *) NULL, -1); +} + +static void +error(string) +const char * const string; +{ + /* + ** Match the format of "cc" to allow sh users to + ** zic ... 2>&1 | error -t "*" -v + ** on BSD systems. + */ + (void) fprintf(stderr, "\"%s\", line %d: %s", + filename, linenum, string); + if (rfilename != NULL) + (void) fprintf(stderr, " (rule from \"%s\", line %d)", + rfilename, rlinenum); + (void) fprintf(stderr, "\n"); + ++errors; +} + +static void +usage() +{ + (void) fprintf(stderr, +"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n\ +\t[ -L leapseconds ] [ filename ... ]\n", + progname, progname); + (void) exit(EXIT_FAILURE); +} + +static const char * psxrules = NULL; +static const char * lcltime = NULL; +static const char * directory = NULL; +static const char * leapsec = NULL; +static int sflag = FALSE; + +int +main(argc, argv) +int argc; +char * argv[]; +{ + register int i, j; + register int c; + + (void) umask(umask(022) | 022); + progname = argv[0]; + while ((c = getopt(argc, argv, "d:l:p:L:vs")) != EOF) + switch (c) { + default: + usage(); + case 'd': + if (directory == NULL) + directory = optarg; + else { + (void) fprintf(stderr, +"%s: More than one -d option specified\n", + progname); + (void) exit(EXIT_FAILURE); + } + break; + case 'l': + if (lcltime == NULL) + lcltime = optarg; + else { + (void) fprintf(stderr, +"%s: More than one -l option specified\n", + progname); + (void) exit(EXIT_FAILURE); + } + break; + case 'p': + if (psxrules == NULL) + psxrules = optarg; + else { + (void) fprintf(stderr, +"%s: More than one -p option specified\n", + progname); + (void) exit(EXIT_FAILURE); + } + break; + case 'L': + if (leapsec == NULL) + leapsec = optarg; + else { + (void) fprintf(stderr, +"%s: More than one -L option specified\n", + progname); + (void) exit(EXIT_FAILURE); + } + break; + case 'v': + noise = TRUE; + break; + case 's': + sflag = TRUE; + break; + } + if (optind == argc - 1 && strcmp(argv[optind], "=") == 0) + usage(); /* usage message by request */ + if (directory == NULL) + directory = TZDIR; + + setboundaries(); + + if (optind < argc && leapsec != NULL) { + infile(leapsec); + adjleap(); + } + + zones = (struct zone *) emalloc(0); + rules = (struct rule *) emalloc(0); + links = (struct link *) emalloc(0); + for (i = optind; i < argc; ++i) + infile(argv[i]); + if (errors) + (void) exit(EXIT_FAILURE); + associate(); + for (i = 0; i < nzones; i = j) { + /* + ** Find the next non-continuation zone entry. + */ + for (j = i + 1; j < nzones && zones[j].z_name == NULL; ++j) + ; + outzone(&zones[i], j - i); + } + /* + ** Make links. + */ + for (i = 0; i < nlinks; ++i) + dolink(links[i].l_from, links[i].l_to); + if (lcltime != NULL) + dolink(lcltime, TZDEFAULT); + if (psxrules != NULL) + dolink(psxrules, TZDEFRULES); + return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} + +static void +dolink(fromfile, tofile) +const char * const fromfile; +const char * const tofile; +{ + register char * fromname; + register char * toname; + + fromname = ecpyalloc(directory); + fromname = ecatalloc(fromname, "/"); + fromname = ecatalloc(fromname, fromfile); + toname = ecpyalloc(directory); + toname = ecatalloc(toname, "/"); + toname = ecatalloc(toname, tofile); + /* + ** We get to be careful here since + ** there's a fair chance of root running us. + */ + if (!itsdir(toname)) + (void) remove(toname); + if (link(fromname, toname) != 0) { + (void) fprintf(stderr, "%s: Can't link from %s to ", + progname, fromname); + (void) perror(toname); + (void) exit(EXIT_FAILURE); + } + ifree(fromname); + ifree(toname); +} + +static void +setboundaries() +{ + register time_t bit; + + for (bit = 1; bit > 0; bit <<= 1) + ; + if (bit == 0) { /* time_t is an unsigned type */ + tt_signed = FALSE; + min_time = 0; + max_time = ~(time_t) 0; + if (sflag) + max_time >>= 1; + } else { + tt_signed = TRUE; + min_time = bit; + max_time = bit; + ++max_time; + max_time = -max_time; + if (sflag) + min_time = 0; + } + min_year = TM_YEAR_BASE + gmtime(&min_time)->tm_year; + max_year = TM_YEAR_BASE + gmtime(&max_time)->tm_year; +} + +static int +itsdir(name) +const char * const name; +{ + struct stat s; + + return (stat(name, &s) == 0 && S_ISDIR(s.st_mode)); +} + +/* +** Associate sets of rules with zones. +*/ + +/* +** Sort by rule name. +*/ + +static int +rcomp(cp1, cp2) +const void * cp1; +const void * cp2; +{ + return strcmp(((struct rule *) cp1)->r_name, + ((struct rule *) cp2)->r_name); +} + +static void +associate() +{ + register struct zone * zp; + register struct rule * rp; + register int base, out; + register int i; + + if (nrules != 0) + (void) qsort((void *) rules, (size_t) nrules, + (size_t) sizeof *rules, rcomp); + for (i = 0; i < nzones; ++i) { + zp = &zones[i]; + zp->z_rules = NULL; + zp->z_nrules = 0; + } + for (base = 0; base < nrules; base = out) { + rp = &rules[base]; + for (out = base + 1; out < nrules; ++out) + if (strcmp(rp->r_name, rules[out].r_name) != 0) + break; + for (i = 0; i < nzones; ++i) { + zp = &zones[i]; + if (strcmp(zp->z_rule, rp->r_name) != 0) + continue; + zp->z_rules = rp; + zp->z_nrules = out - base; + } + } + for (i = 0; i < nzones; ++i) { + zp = &zones[i]; + if (zp->z_nrules == 0) { + /* + ** Maybe we have a local standard time offset. + */ + eat(zp->z_filename, zp->z_linenum); + zp->z_stdoff = + gethms((char *)zp->z_rule, "unruly zone", TRUE); + /* + ** Note, though, that if there's no rule, + ** a '%s' in the format is a bad thing. + */ + if (strchr(zp->z_format, '%') != 0) + error("%s in ruleless zone"); + } + } + if (errors) + (void) exit(EXIT_FAILURE); +} + +static void +infile(name) +const char * name; +{ + register FILE * fp; + register char ** fields; + register char * cp; + register const struct lookup * lp; + register int nfields; + register int wantcont; + register int num; + char buf[BUFSIZ]; + + if (strcmp(name, "-") == 0) { + name = "standard input"; + fp = stdin; + } else if ((fp = fopen(name, "r")) == NULL) { + (void) fprintf(stderr, "%s: Can't open ", progname); + (void) perror(name); + (void) exit(EXIT_FAILURE); + } + wantcont = FALSE; + for (num = 1; ; ++num) { + eat(name, num); + if (fgets(buf, (int) sizeof buf, fp) != buf) + break; + cp = strchr(buf, '\n'); + if (cp == NULL) { + error("line too long"); + (void) exit(EXIT_FAILURE); + } + *cp = '\0'; + fields = getfields(buf); + nfields = 0; + while (fields[nfields] != NULL) { + if (ciequal(fields[nfields], "-")) + fields[nfields] = ""; + ++nfields; + } + if (nfields == 0) { + /* nothing to do */ + } else if (wantcont) { + wantcont = inzcont(fields, nfields); + } else { + lp = byword(fields[0], line_codes); + if (lp == NULL) + error("input line of unknown type"); + else switch ((int) (lp->l_value)) { + case LC_RULE: + inrule(fields, nfields); + wantcont = FALSE; + break; + case LC_ZONE: + wantcont = inzone(fields, nfields); + break; + case LC_LINK: + inlink(fields, nfields); + wantcont = FALSE; + break; + case LC_LEAP: + if (name != leapsec) + (void) fprintf(stderr, +"%s: Leap line in non leap seconds file %s\n", + progname, name); + else inleap(fields, nfields); + wantcont = FALSE; + break; + default: /* "cannot happen" */ + (void) fprintf(stderr, +"%s: panic: Invalid l_value %d\n", + progname, lp->l_value); + (void) exit(EXIT_FAILURE); + } + } + ifree((char *) fields); + } + if (ferror(fp)) { + (void) fprintf(stderr, "%s: Error reading ", progname); + (void) perror(filename); + (void) exit(EXIT_FAILURE); + } + if (fp != stdin && fclose(fp)) { + (void) fprintf(stderr, "%s: Error closing ", progname); + (void) perror(filename); + (void) exit(EXIT_FAILURE); + } + if (wantcont) + error("expected continuation line not found"); +} + +/* +** Convert a string of one of the forms +** h -h hh:mm -hh:mm hh:mm:ss -hh:mm:ss +** into a number of seconds. +** A null string maps to zero. +** Call error with errstring and return zero on errors. +*/ + +static long +gethms(string, errstring, signable) +char * string; +const char * const errstring; +const int signable; +{ + int hh, mm, ss, sign; + + if (string == NULL || *string == '\0') + return 0; + if (!signable) + sign = 1; + else if (*string == '-') { + sign = -1; + ++string; + } else sign = 1; + if (sscanf(string, scheck(string, "%d"), &hh) == 1) + mm = ss = 0; + else if (sscanf(string, scheck(string, "%d:%d"), &hh, &mm) == 2) + ss = 0; + else if (sscanf(string, scheck(string, "%d:%d:%d"), + &hh, &mm, &ss) != 3) { + error(errstring); + return 0; + } + if (hh < 0 || hh >= HOURSPERDAY || + mm < 0 || mm >= MINSPERHOUR || + ss < 0 || ss > SECSPERMIN) { + error(errstring); + return 0; + } + return eitol(sign) * + (eitol(hh * MINSPERHOUR + mm) * + eitol(SECSPERMIN) + eitol(ss)); +} + +static void +inrule(fields, nfields) +register char ** const fields; +const int nfields; +{ + static struct rule r; + + if (nfields != RULE_FIELDS) { + error("wrong number of fields on Rule line"); + return; + } + if (*fields[RF_NAME] == '\0') { + error("nameless rule"); + return; + } + r.r_filename = filename; + r.r_linenum = linenum; + r.r_stdoff = gethms(fields[RF_STDOFF], "invalid saved time", TRUE); + rulesub(&r, fields[RF_LOYEAR], fields[RF_HIYEAR], fields[RF_COMMAND], + fields[RF_MONTH], fields[RF_DAY], fields[RF_TOD]); + r.r_name = ecpyalloc(fields[RF_NAME]); + r.r_abbrvar = ecpyalloc(fields[RF_ABBRVAR]); + rules = (struct rule *) erealloc((char *) rules, + (int) ((nrules + 1) * sizeof *rules)); + rules[nrules++] = r; +} + +static int +inzone(fields, nfields) +register char ** const fields; +const int nfields; +{ + register int i; + char buf[132]; + + if (nfields < ZONE_MINFIELDS || nfields > ZONE_MAXFIELDS) { + error("wrong number of fields on Zone line"); + return FALSE; + } + if (strcmp(fields[ZF_NAME], TZDEFAULT) == 0 && lcltime != NULL) { + (void) sprintf(buf, + "\"Zone %s\" line and -l option are mutually exclusive", + TZDEFAULT); + error(buf); + return FALSE; + } + if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) { + (void) sprintf(buf, + "\"Zone %s\" line and -p option are mutually exclusive", + TZDEFRULES); + error(buf); + return FALSE; + } + for (i = 0; i < nzones; ++i) + if (zones[i].z_name != NULL && + strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) { + (void) sprintf(buf, +"duplicate zone name %s (file \"%s\", line %d)", + fields[ZF_NAME], + zones[i].z_filename, + zones[i].z_linenum); + error(buf); + return FALSE; + } + return inzsub(fields, nfields, FALSE); +} + +static int +inzcont(fields, nfields) +register char ** const fields; +const int nfields; +{ + if (nfields < ZONEC_MINFIELDS || nfields > ZONEC_MAXFIELDS) { + error("wrong number of fields on Zone continuation line"); + return FALSE; + } + return inzsub(fields, nfields, TRUE); +} + +static int +inzsub(fields, nfields, iscont) +register char ** const fields; +const int nfields; +const int iscont; +{ + register char * cp; + static struct zone z; + register int i_gmtoff, i_rule, i_format; + register int i_untilyear, i_untilmonth; + register int i_untilday, i_untiltime; + register int hasuntil; + + if (iscont) { + i_gmtoff = ZFC_GMTOFF; + i_rule = ZFC_RULE; + i_format = ZFC_FORMAT; + i_untilyear = ZFC_TILYEAR; + i_untilmonth = ZFC_TILMONTH; + i_untilday = ZFC_TILDAY; + i_untiltime = ZFC_TILTIME; + z.z_name = NULL; + } else { + i_gmtoff = ZF_GMTOFF; + i_rule = ZF_RULE; + i_format = ZF_FORMAT; + i_untilyear = ZF_TILYEAR; + i_untilmonth = ZF_TILMONTH; + i_untilday = ZF_TILDAY; + i_untiltime = ZF_TILTIME; + z.z_name = ecpyalloc(fields[ZF_NAME]); + } + z.z_filename = filename; + z.z_linenum = linenum; + z.z_gmtoff = gethms(fields[i_gmtoff], "invalid GMT offset", TRUE); + if ((cp = strchr(fields[i_format], '%')) != 0) { + if (*++cp != 's' || strchr(cp, '%') != 0) { + error("invalid abbreviation format"); + return FALSE; + } + } + z.z_rule = ecpyalloc(fields[i_rule]); + z.z_format = ecpyalloc(fields[i_format]); + hasuntil = nfields > i_untilyear; + if (hasuntil) { + z.z_untilrule.r_filename = filename; + z.z_untilrule.r_linenum = linenum; + rulesub(&z.z_untilrule, + fields[i_untilyear], + "only", + "", + (nfields > i_untilmonth) ? fields[i_untilmonth] : "Jan", + (nfields > i_untilday) ? fields[i_untilday] : "1", + (nfields > i_untiltime) ? fields[i_untiltime] : "0"); + z.z_untiltime = rpytime(&z.z_untilrule, z.z_untilrule.r_loyear); + if (iscont && nzones > 0 && z.z_untiltime < max_time && + z.z_untiltime > min_time && + zones[nzones - 1].z_untiltime >= z.z_untiltime) { +error("Zone continuation line end time is not after end time of previous line"); + return FALSE; + } + } + zones = (struct zone *) erealloc((char *) zones, + (int) ((nzones + 1) * sizeof *zones)); + zones[nzones++] = z; + /* + ** If there was an UNTIL field on this line, + ** there's more information about the zone on the next line. + */ + return hasuntil; +} + +static void +inleap(fields, nfields) +register char ** const fields; +const int nfields; +{ + register const char * cp; + register const struct lookup * lp; + register int i, j; + int year, month, day; + long dayoff, tod; + time_t t; + + if (nfields != LEAP_FIELDS) { + error("wrong number of fields on Leap line"); + return; + } + dayoff = 0; + cp = fields[LP_YEAR]; + if (sscanf((char *)cp, scheck(cp, "%d"), &year) != 1 || + year < min_year || year > max_year) { + /* + * Leapin' Lizards! + */ + error("invalid leaping year"); + return; + } + j = EPOCH_YEAR; + while (j != year) { + if (year > j) { + i = len_years[isleap(j)]; + ++j; + } else { + --j; + i = -len_years[isleap(j)]; + } + dayoff = oadd(dayoff, eitol(i)); + } + if ((lp = byword(fields[LP_MONTH], mon_names)) == NULL) { + error("invalid month name"); + return; + } + month = lp->l_value; + j = TM_JANUARY; + while (j != month) { + i = len_months[isleap(year)][j]; + dayoff = oadd(dayoff, eitol(i)); + ++j; + } + cp = fields[LP_DAY]; + if (sscanf((char *)cp, scheck(cp, "%d"), &day) != 1 || + day <= 0 || day > len_months[isleap(year)][month]) { + error("invalid day of month"); + return; + } + dayoff = oadd(dayoff, eitol(day - 1)); + if (dayoff < 0 && !tt_signed) { + error("time before zero"); + return; + } + t = (time_t) dayoff * SECSPERDAY; + /* + ** Cheap overflow check. + */ + if (t / SECSPERDAY != dayoff) { + error("time overflow"); + return; + } + tod = gethms(fields[LP_TIME], "invalid time of day", FALSE); + cp = fields[LP_CORR]; + if (strcmp(cp, "+") != 0 && strcmp(cp, "") != 0) { + /* infile() turned "-" into "" */ + error("illegal CORRECTION field on Leap line"); + return; + } + if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) { + error("illegal Rolling/Stationary field on Leap line"); + return; + } + addleap(tadd(t, tod), *cp == '+', lp->l_value); +} + +static void +inlink(fields, nfields) +register char ** const fields; +const int nfields; +{ + struct link l; + + if (nfields != LINK_FIELDS) { + error("wrong number of fields on Link line"); + return; + } + if (*fields[LF_FROM] == '\0') { + error("blank FROM field on Link line"); + return; + } + if (*fields[LF_TO] == '\0') { + error("blank TO field on Link line"); + return; + } + l.l_filename = filename; + l.l_linenum = linenum; + l.l_from = ecpyalloc(fields[LF_FROM]); + l.l_to = ecpyalloc(fields[LF_TO]); + links = (struct link *) erealloc((char *) links, + (int) ((nlinks + 1) * sizeof *links)); + links[nlinks++] = l; +} + +static void +rulesub(rp, loyearp, hiyearp, typep, monthp, dayp, timep) +register struct rule * const rp; +char * const loyearp; +char * const hiyearp; +char * const typep; +char * const monthp; +char * const dayp; +char * const timep; +{ + register struct lookup const * lp; + register char * cp; + + if ((lp = byword(monthp, mon_names)) == NULL) { + error("invalid month name"); + return; + } + rp->r_month = lp->l_value; + rp->r_todisstd = FALSE; + cp = timep; + if (*cp != '\0') { + cp += strlen(cp) - 1; + switch (lowerit(*cp)) { + case 's': + rp->r_todisstd = TRUE; + *cp = '\0'; + break; + case 'w': + rp->r_todisstd = FALSE; + *cp = '\0'; + break; + } + } + rp->r_tod = gethms(timep, "invalid time of day", FALSE); + /* + ** Year work. + */ + cp = loyearp; + if ((lp = byword(cp, begin_years)) != NULL) switch ((int) lp->l_value) { + case YR_MINIMUM: + rp->r_loyear = min_year; + break; + case YR_MAXIMUM: + rp->r_loyear = max_year; + break; + default: /* "cannot happen" */ + (void) fprintf(stderr, + "%s: panic: Invalid l_value %d\n", + progname, lp->l_value); + (void) exit(EXIT_FAILURE); + } else if (sscanf(cp, scheck(cp, "%d"), &rp->r_loyear) != 1 || + rp->r_loyear < min_year || rp->r_loyear > max_year) { + if (noise) + error("invalid starting year"); + if (rp->r_loyear > max_year) + return; + } + cp = hiyearp; + if ((lp = byword(cp, end_years)) != NULL) switch ((int) lp->l_value) { + case YR_MINIMUM: + rp->r_hiyear = min_year; + break; + case YR_MAXIMUM: + rp->r_hiyear = max_year; + break; + case YR_ONLY: + rp->r_hiyear = rp->r_loyear; + break; + default: /* "cannot happen" */ + (void) fprintf(stderr, + "%s: panic: Invalid l_value %d\n", + progname, lp->l_value); + (void) exit(EXIT_FAILURE); + } else if (sscanf(cp, scheck(cp, "%d"), &rp->r_hiyear) != 1 || + rp->r_hiyear < min_year || rp->r_hiyear > max_year) { + if (noise) + error("invalid ending year"); + if (rp->r_hiyear < min_year) + return; + } + if (rp->r_hiyear < min_year) + return; + if (rp->r_loyear < min_year) + rp->r_loyear = min_year; + if (rp->r_hiyear > max_year) + rp->r_hiyear = max_year; + if (rp->r_loyear > rp->r_hiyear) { + error("starting year greater than ending year"); + return; + } + if (*typep == '\0') + rp->r_yrtype = NULL; + else { + if (rp->r_loyear == rp->r_hiyear) { + error("typed single year"); + return; + } + rp->r_yrtype = ecpyalloc(typep); + } + /* + ** Day work. + ** Accept things such as: + ** 1 + ** last-Sunday + ** Sun<=20 + ** Sun>=7 + */ + if ((lp = byword(dayp, lasts)) != NULL) { + rp->r_dycode = DC_DOWLEQ; + rp->r_wday = lp->l_value; + rp->r_dayofmonth = len_months[1][rp->r_month]; + } else { + if ((cp = strchr(dayp, '<')) != 0) + rp->r_dycode = DC_DOWLEQ; + else if ((cp = strchr(dayp, '>')) != 0) + rp->r_dycode = DC_DOWGEQ; + else { + cp = dayp; + rp->r_dycode = DC_DOM; + } + if (rp->r_dycode != DC_DOM) { + *cp++ = 0; + if (*cp++ != '=') { + error("invalid day of month"); + return; + } + if ((lp = byword(dayp, wday_names)) == NULL) { + error("invalid weekday name"); + return; + } + rp->r_wday = lp->l_value; + } + if (sscanf(cp, scheck(cp, "%d"), &rp->r_dayofmonth) != 1 || + rp->r_dayofmonth <= 0 || + (rp->r_dayofmonth > len_months[1][rp->r_month])) { + error("invalid day of month"); + return; + } + } +} + +static void +convert(val, buf) +const long val; +char * const buf; +{ + register int i; + register long shift; + + for (i = 0, shift = 24; i < 4; ++i, shift -= 8) + buf[i] = val >> shift; +} + +static void +puttzcode(val, fp) +const long val; +FILE * const fp; +{ + char buf[4]; + + convert(val, buf); + (void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp); +} + +static void +writezone(name) +const char * const name; +{ + register FILE * fp; + register int i, j; + char fullname[BUFSIZ]; + static struct tzhead tzh; + + if (strlen(directory) + 1 + strlen(name) >= sizeof fullname) { + (void) fprintf(stderr, + "%s: File name %s/%s too long\n", progname, + directory, name); + (void) exit(EXIT_FAILURE); + } + (void) sprintf(fullname, "%s/%s", directory, name); + if ((fp = fopen(fullname, "wb")) == NULL) { + if (mkdirs(fullname) != 0) + (void) exit(EXIT_FAILURE); + if ((fp = fopen(fullname, "wb")) == NULL) { + (void) fprintf(stderr, "%s: Can't create ", progname); + (void) perror(fullname); + (void) exit(EXIT_FAILURE); + } + } + convert(eitol(typecnt), tzh.tzh_ttisstdcnt); + convert(eitol(leapcnt), tzh.tzh_leapcnt); + convert(eitol(timecnt), tzh.tzh_timecnt); + convert(eitol(typecnt), tzh.tzh_typecnt); + convert(eitol(charcnt), tzh.tzh_charcnt); + (void) fwrite((void *) &tzh, (size_t) sizeof tzh, (size_t) 1, fp); + for (i = 0; i < timecnt; ++i) { + j = leapcnt; + while (--j >= 0) + if (ats[i] >= trans[j]) { + ats[i] = tadd(ats[i], corr[j]); + break; + } + puttzcode((long) ats[i], fp); + } + if (timecnt > 0) + (void) fwrite((void *) types, (size_t) sizeof types[0], + (size_t) timecnt, fp); + for (i = 0; i < typecnt; ++i) { + puttzcode((long) gmtoffs[i], fp); + (void) putc(isdsts[i], fp); + (void) putc(abbrinds[i], fp); + } + if (charcnt != 0) + (void) fwrite((void *) chars, (size_t) sizeof chars[0], + (size_t) charcnt, fp); + for (i = 0; i < leapcnt; ++i) { + if (roll[i]) { + if (timecnt == 0 || trans[i] < ats[0]) { + j = 0; + while (isdsts[j]) + if (++j >= typecnt) { + j = 0; + break; + } + } else { + j = 1; + while (j < timecnt && trans[i] >= ats[j]) + ++j; + j = types[j - 1]; + } + puttzcode((long) tadd(trans[i], -gmtoffs[j]), fp); + } else puttzcode((long) trans[i], fp); + puttzcode((long) corr[i], fp); + } + for (i = 0; i < typecnt; ++i) + (void) putc(ttisstds[i], fp); + if (ferror(fp) || fclose(fp)) { + (void) fprintf(stderr, "%s: Write error on ", progname); + (void) perror(fullname); + (void) exit(EXIT_FAILURE); + } +} + +static void +outzone(zpfirst, zonecount) +const struct zone * const zpfirst; +const int zonecount; +{ + register const struct zone * zp; + register struct rule * rp; + register int i, j; + register int usestart, useuntil; + register time_t starttime, untiltime; + register long gmtoff; + register long stdoff; + register int year; + register long startoff; + register int startisdst; + register int startttisstd; + register int type; + char startbuf[BUFSIZ]; + + /* + ** Now. . .finally. . .generate some useful data! + */ + timecnt = 0; + typecnt = 0; + charcnt = 0; + /* + ** Two guesses. . .the second may well be corrected later. + */ + gmtoff = zpfirst->z_gmtoff; + stdoff = 0; +#ifdef lint + starttime = 0; + startttisstd = FALSE; +#endif /* defined lint */ + for (i = 0; i < zonecount; ++i) { + usestart = i > 0; + useuntil = i < (zonecount - 1); + zp = &zpfirst[i]; + eat(zp->z_filename, zp->z_linenum); + startisdst = -1; + if (zp->z_nrules == 0) { + type = addtype(oadd(zp->z_gmtoff, zp->z_stdoff), + zp->z_format, zp->z_stdoff != 0, + startttisstd); + if (usestart) + addtt(starttime, type); + gmtoff = zp->z_gmtoff; + stdoff = zp->z_stdoff; + } else for (year = min_year; year <= max_year; ++year) { + if (useuntil && year > zp->z_untilrule.r_hiyear) + break; + /* + ** Mark which rules to do in the current year. + ** For those to do, calculate rpytime(rp, year); + */ + for (j = 0; j < zp->z_nrules; ++j) { + rp = &zp->z_rules[j]; + eats(zp->z_filename, zp->z_linenum, + rp->r_filename, rp->r_linenum); + rp->r_todo = year >= rp->r_loyear && + year <= rp->r_hiyear && + yearistype(year, rp->r_yrtype); + if (rp->r_todo) + rp->r_temp = rpytime(rp, year); + } + for ( ; ; ) { + register int k; + register time_t jtime, ktime; + register long offset; + char buf[BUFSIZ]; + + if (useuntil) { + /* + ** Turn untiltime into GMT + ** assuming the current gmtoff and + ** stdoff values. + */ + offset = gmtoff; + if (!zp->z_untilrule.r_todisstd) + offset = oadd(offset, stdoff); + untiltime = tadd(zp->z_untiltime, + -offset); + } + /* + ** Find the rule (of those to do, if any) + ** that takes effect earliest in the year. + */ + k = -1; +#ifdef lint + ktime = 0; +#endif /* defined lint */ + for (j = 0; j < zp->z_nrules; ++j) { + rp = &zp->z_rules[j]; + if (!rp->r_todo) + continue; + eats(zp->z_filename, zp->z_linenum, + rp->r_filename, rp->r_linenum); + offset = gmtoff; + if (!rp->r_todisstd) + offset = oadd(offset, stdoff); + jtime = rp->r_temp; + if (jtime == min_time || + jtime == max_time) + continue; + jtime = tadd(jtime, -offset); + if (k < 0 || jtime < ktime) { + k = j; + ktime = jtime; + } + } + if (k < 0) + break; /* go on to next year */ + rp = &zp->z_rules[k]; + rp->r_todo = FALSE; + if (useuntil && ktime >= untiltime) + break; + if (usestart) { + if (ktime < starttime) { + stdoff = rp->r_stdoff; + startoff = oadd(zp->z_gmtoff, + rp->r_stdoff); + (void) sprintf(startbuf, + zp->z_format, + rp->r_abbrvar); + startisdst = + rp->r_stdoff != 0; + continue; + } + if (ktime != starttime && + startisdst >= 0) +addtt(starttime, addtype(startoff, startbuf, startisdst, startttisstd)); + usestart = FALSE; + } + eats(zp->z_filename, zp->z_linenum, + rp->r_filename, rp->r_linenum); + (void) sprintf(buf, zp->z_format, + rp->r_abbrvar); + offset = oadd(zp->z_gmtoff, rp->r_stdoff); + type = addtype(offset, buf, rp->r_stdoff != 0, + rp->r_todisstd); + if (timecnt != 0 || rp->r_stdoff != 0) + addtt(ktime, type); + gmtoff = zp->z_gmtoff; + stdoff = rp->r_stdoff; + } + } + /* + ** Now we may get to set starttime for the next zone line. + */ + if (useuntil) { + starttime = tadd(zp->z_untiltime, + -gmtoffs[types[timecnt - 1]]); + startttisstd = zp->z_untilrule.r_todisstd; + } + } + writezone(zpfirst->z_name); +} + +static void +addtt(starttime, type) +const time_t starttime; +const int type; +{ + if (timecnt != 0 && type == types[timecnt - 1]) + return; /* easy enough! */ + if (timecnt >= TZ_MAX_TIMES) { + error("too many transitions?!"); + (void) exit(EXIT_FAILURE); + } + ats[timecnt] = starttime; + types[timecnt] = type; + ++timecnt; +} + +static int +addtype(gmtoff, abbr, isdst, ttisstd) +const long gmtoff; +const char * const abbr; +const int isdst; +const int ttisstd; +{ + register int i, j; + + /* + ** See if there's already an entry for this zone type. + ** If so, just return its index. + */ + for (i = 0; i < typecnt; ++i) { + if (gmtoff == gmtoffs[i] && isdst == isdsts[i] && + strcmp(abbr, &chars[abbrinds[i]]) == 0 && + ttisstd == ttisstds[i]) + return i; + } + /* + ** There isn't one; add a new one, unless there are already too + ** many. + */ + if (typecnt >= TZ_MAX_TYPES) { + error("too many local time types"); + (void) exit(EXIT_FAILURE); + } + gmtoffs[i] = gmtoff; + isdsts[i] = isdst; + ttisstds[i] = ttisstd; + + for (j = 0; j < charcnt; ++j) + if (strcmp(&chars[j], abbr) == 0) + break; + if (j == charcnt) + newabbr(abbr); + abbrinds[i] = j; + ++typecnt; + return i; +} + +static void +addleap(t, positive, rolling) +const time_t t; +const int positive; +const int rolling; +{ + register int i, j; + + if (leapcnt >= TZ_MAX_LEAPS) { + error("too many leap seconds"); + (void) exit(EXIT_FAILURE); + } + for (i = 0; i < leapcnt; ++i) + if (t <= trans[i]) { + if (t == trans[i]) { + error("repeated leap second moment"); + (void) exit(EXIT_FAILURE); + } + break; + } + for (j = leapcnt; j > i; --j) { + trans[j] = trans[j-1]; + corr[j] = corr[j-1]; + roll[j] = roll[j-1]; + } + trans[i] = t; + corr[i] = (positive ? 1L : -1L); + roll[i] = rolling; + ++leapcnt; +} + +static void +adjleap() +{ + register int i; + register long last = 0; + + /* + ** propagate leap seconds forward + */ + for (i = 0; i < leapcnt; ++i) { + trans[i] = tadd(trans[i], last); + last = corr[i] += last; + } +} + +static int +yearistype(year, type) +const int year; +const char * const type; +{ + char buf[BUFSIZ]; + int result; + + if (type == NULL || *type == '\0') + return TRUE; + if (strcmp(type, "uspres") == 0) + return (year % 4) == 0; + if (strcmp(type, "nonpres") == 0) + return (year % 4) != 0; + (void) sprintf(buf, "yearistype %d %s", year, type); + result = system(buf); + if (result == 0) + return TRUE; + if (result == (1 << 8)) + return FALSE; + error("Wild result from command execution"); + (void) fprintf(stderr, "%s: command was '%s', result was %d\n", + progname, buf, result); + for ( ; ; ) + (void) exit(EXIT_FAILURE); +} + +static int +lowerit(a) +const int a; +{ + return (isascii(a) && isupper(a)) ? tolower(a) : a; +} + +static int +ciequal(ap, bp) /* case-insensitive equality */ +register const char * ap; +register const char * bp; +{ + while (lowerit(*ap) == lowerit(*bp++)) + if (*ap++ == '\0') + return TRUE; + return FALSE; +} + +static int +itsabbr(abbr, word) +register const char * abbr; +register const char * word; +{ + if (lowerit(*abbr) != lowerit(*word)) + return FALSE; + ++word; + while (*++abbr != '\0') + do if (*word == '\0') + return FALSE; + while (lowerit(*word++) != lowerit(*abbr)); + return TRUE; +} + +static const struct lookup * +byword(word, table) +register const char * const word; +register const struct lookup * const table; +{ + register const struct lookup * foundlp; + register const struct lookup * lp; + + if (word == NULL || table == NULL) + return NULL; + /* + ** Look for exact match. + */ + for (lp = table; lp->l_word != NULL; ++lp) + if (ciequal(word, lp->l_word)) + return lp; + /* + ** Look for inexact match. + */ + foundlp = NULL; + for (lp = table; lp->l_word != NULL; ++lp) + if (itsabbr(word, lp->l_word)) + if (foundlp == NULL) + foundlp = lp; + else return NULL; /* multiple inexact matches */ + return foundlp; +} + +static char ** +getfields(cp) +register char * cp; +{ + register char * dp; + register char ** array; + register int nsubs; + + if (cp == NULL) + return NULL; + array = (char **) emalloc((int) ((strlen(cp) + 1) * sizeof *array)); + nsubs = 0; + for ( ; ; ) { + while (isascii(*cp) && isspace(*cp)) + ++cp; + if (*cp == '\0' || *cp == '#') + break; + array[nsubs++] = dp = cp; + do { + if ((*dp = *cp++) != '"') + ++dp; + else while ((*dp = *cp++) != '"') + if (*dp != '\0') + ++dp; + else error("Odd number of quotation marks"); + } while (*cp != '\0' && *cp != '#' && + (!isascii(*cp) || !isspace(*cp))); + if (isascii(*cp) && isspace(*cp)) + ++cp; + *dp = '\0'; + } + array[nsubs] = NULL; + return array; +} + +static long +oadd(t1, t2) +const long t1; +const long t2; +{ + register long t; + + t = t1 + t2; + if (t2 > 0 && t <= t1 || t2 < 0 && t >= t1) { + error("time overflow"); + (void) exit(EXIT_FAILURE); + } + return t; +} + +static time_t +tadd(t1, t2) +const time_t t1; +const long t2; +{ + register time_t t; + + if (t1 == max_time && t2 > 0) + return max_time; + if (t1 == min_time && t2 < 0) + return min_time; + t = t1 + t2; + if (t2 > 0 && t <= t1 || t2 < 0 && t >= t1) { + error("time overflow"); + (void) exit(EXIT_FAILURE); + } + return t; +} + +/* +** Given a rule, and a year, compute the date - in seconds since January 1, +** 1970, 00:00 LOCAL time - in that year that the rule refers to. +*/ + +static time_t +rpytime(rp, wantedy) +register const struct rule * const rp; +register const int wantedy; +{ + register int y, m, i; + register long dayoff; /* with a nod to Margaret O. */ + register time_t t; + + dayoff = 0; + m = TM_JANUARY; + y = EPOCH_YEAR; + while (wantedy != y) { + if (wantedy > y) { + i = len_years[isleap(y)]; + ++y; + } else { + --y; + i = -len_years[isleap(y)]; + } + dayoff = oadd(dayoff, eitol(i)); + } + while (m != rp->r_month) { + i = len_months[isleap(y)][m]; + dayoff = oadd(dayoff, eitol(i)); + ++m; + } + i = rp->r_dayofmonth; + if (m == TM_FEBRUARY && i == 29 && !isleap(y)) { + if (rp->r_dycode == DC_DOWLEQ) + --i; + else { + error("use of 2/29 in non leap-year"); + (void) exit(EXIT_FAILURE); + } + } + --i; + dayoff = oadd(dayoff, eitol(i)); + if (rp->r_dycode == DC_DOWGEQ || rp->r_dycode == DC_DOWLEQ) { + register long wday; + +#define LDAYSPERWEEK ((long) DAYSPERWEEK) + wday = eitol(EPOCH_WDAY); + /* + ** Don't trust mod of negative numbers. + */ + if (dayoff >= 0) + wday = (wday + dayoff) % LDAYSPERWEEK; + else { + wday -= ((-dayoff) % LDAYSPERWEEK); + if (wday < 0) + wday += LDAYSPERWEEK; + } + while (wday != eitol(rp->r_wday)) + if (rp->r_dycode == DC_DOWGEQ) { + dayoff = oadd(dayoff, (long) 1); + if (++wday >= LDAYSPERWEEK) + wday = 0; + ++i; + } else { + dayoff = oadd(dayoff, (long) -1); + if (--wday < 0) + wday = LDAYSPERWEEK; + --i; + } + if (i < 0 || i >= len_months[isleap(y)][m]) { + error("no day in month matches rule"); + (void) exit(EXIT_FAILURE); + } + } + if (dayoff < 0 && !tt_signed) { + if (wantedy == rp->r_loyear) + return min_time; + error("time before zero"); + (void) exit(EXIT_FAILURE); + } + t = (time_t) dayoff * SECSPERDAY; + /* + ** Cheap overflow check. + */ + if (t / SECSPERDAY != dayoff) { + if (wantedy == rp->r_hiyear) + return max_time; + if (wantedy == rp->r_loyear) + return min_time; + error("time overflow"); + (void) exit(EXIT_FAILURE); + } + return tadd(t, rp->r_tod); +} + +static void +newabbr(string) +const char * const string; +{ + register int i; + + i = strlen(string) + 1; + if (charcnt + i >= TZ_MAX_CHARS) { + error("too many, or too long, time zone abbreviations"); + (void) exit(EXIT_FAILURE); + } + (void) strcpy(&chars[charcnt], string); + charcnt += eitol(i); +} + +static int +mkdirs(name) +char * const name; +{ + register char * cp; + + if ((cp = name) == NULL || *cp == '\0') + return 0; + while ((cp = strchr(cp + 1, '/')) != 0) { + *cp = '\0'; + if (!itsdir(name)) { + /* + ** It doesn't seem to exist, so we try to create it. + */ + if (mkdir(name, 0755) != 0) { + (void) fprintf(stderr, + "%s: Can't create directory ", + progname); + (void) perror(name); + return -1; + } + } + *cp = '/'; + } + return 0; +} + +static long +eitol(i) +const int i; +{ + long l; + + l = i; + if (i < 0 && l >= 0 || i == 0 && l != 0 || i > 0 && l <= 0) { + (void) fprintf(stderr, "%s: %d did not sign extend correctly\n", + progname, i); + (void) exit(EXIT_FAILURE); + } + return l; +} + +/* +** UNIX is a registered trademark of AT&T. +*/ -- 2.20.1