argv@island.uu.net (Dan Heller) (07/18/89)
Submitted-by: Mark Moraes <moraes@ai.toronto.edu> Posting-number: Volume 4, Issue 52 Archive-name: xtroff/part07 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 7 (of 18)." # Contents: xtroff/NeWS/Makefile xtroff/README.X11 xtroff/arc.c # xtroff/devpsc/NB xtroff/devpsc/ND xtroff/devpsc/NI xtroff/devpsc/S # xtroff/fontstuff/ch2vft.c xtroff/fontstuff/rst2ch.c # xtroff/suntroff.h # Wrapped by moraes@neat.ai on Thu Jul 13 20:55:04 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'xtroff/NeWS/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/NeWS/Makefile'\" else echo shar: Extracting \"'xtroff/NeWS/Makefile'\" \(5051 characters\) sed "s/^X//" >'xtroff/NeWS/Makefile' <<'END_OF_FILE' X# fonts/news/Makefile X# X# Makefile for NeWS fonts. X# D. A. Cahlander 88/12/31. X# Copyright (c) 1988 Cray Research, Inc. All Rights Reserved. X# PostScript is a trademark of Adobe Systems, Inc. X X# see README for more information X# makedev is the program that builds device descriptions X XNEWSDIR = /usr/NeWS/fonts XFONTDIR = /usr/lib/X11/fonts/misc XFONTS = ${TIMES} ${COURIER} ${HELVETICA} ${SYMBOL} XOTHERFONTS = ${BOSTON} ${CYRILLIC} ${CURSOR} ${GFONT} \ X ${HEVETICA_MEDIUM} ${ICON} ${KANJI} ${SCREEN} XSHELL = /bin/sh X XFBFILES = \ X Btn10.fb Btn12.fb Btn18.fb Btn30.fb Btn35.fb Btn9.fb \ X Crl11.fb \ X Crr1.fb Crr10.fb Crr12.fb Crr14.fb Crr16.fb \ X Crr18.fb Crr24.fb Crr32.fb Crr6.fb Crr7.fb Crr8.fb Crr9.fb \ X CrrB10.fb CrrB12.fb CrrB14.fb CrrB16.fb CrrB18.fb CrrB24.fb \ X CrrB32.fb \ X CrrBO10.fb CrrBO12.fb CrrBO14.fb CrrBO16.fb CrrBO18.fb CrrBO24.fb \ X CrrBO32.fb \ X CrrO10.fb CrrO12.fb CrrO14.fb CrrO16.fb CrrO18.fb CrrO24.fb \ X CrrO32.fb \ X Cursor12.fb \ X GFont12.fb \ X Hlv10.fb Hlv12.fb Hlv14.fb Hlv18.fb Hlv24.fb Hlv32.fb \ X Hlv7.fb Hlv9.fb \ X HlvB10.fb HlvB12.fb HlvB14.fb HlvB18.fb HlvB24.fb HlvB32.fb \ X HlvBO10.fb HlvBO12.fb HlvBO14.fb HlvBO18.fb HlvBO24.fb HlvBO32.fb \ X HlvO10.fb HlvO12.fb HlvO14.fb HlvO18.fb HlvO24.fb HlvO32.fb \ X HlvM32.fb \ X Icon12.fb \ X Kanji16.fb Kanji24.fb \ X Scn11.fb Scn13.fb Scn15.fb Scn7.fb \ X ScnB13.fb ScnB15.fb \ X Smb10.fb Smb12.fb Smb14.fb Smb18.fb Smb24.fb Smb32.fb \ X SmbM32.fb \ X TmsB10.fb TmsB12.fb TmsB14.fb TmsB18.fb TmsB24.fb TmsB25.fb \ X TmsB27.fb TmsB30.fb TmsB32.fb TmsB34.fb TmsB39.fb TmsB44.fb \ X TmsB49.fb TmsB54.fb TmsB59.fb TmsB69.fb TmsB89.fb \ X TmsBI10.fb TmsBI12.fb TmsBI14.fb TmsBI18.fb TmsBI24.fb TmsBI32.fb \ X TmsI10.fb TmsI12.fb TmsI14.fb TmsI18.fb TmsI24.fb TmsI26.fb \ X TmsI29.fb TmsI32.fb TmsI33.fb TmsI38.fb TmsI43.fb TmsI47.fb \ X TmsI53.fb TmsI57.fb TmsI67.fb TmsI86.fb \ X TmsR10.fb TmsR12.fb TmsR14.fb TmsR16.fb TmsR18.fb TmsR19.fb \ X TmsR20.fb TmsR23.fb TmsR24.fb TmsR26.fb TmsR28.fb TmsR31.fb \ X TmsR32.fb TmsR36.fb TmsR41.fb TmsR46.fb TmsR51.fb TmsR56.fb \ X TmsR62.fb TmsR72.fb TmsR9.fb TmsR92.fb X XBOSTON = \ X Btn10.snf Btn12.snf Btn18.snf Btn30.snf Btn35.snf Btn9.snf X XCYRILLIC = Crl11.snf X XCOURIER = \ X Crr1.snf Crr10.snf Crr12.snf Crr14.snf Crr16.snf \ X Crr18.snf Crr24.snf Crr32.snf Crr6.snf Crr7.snf Crr8.snf Crr9.snf \ X CrrB10.snf CrrB12.snf CrrB14.snf CrrB16.snf CrrB18.snf CrrB24.snf \ X CrrB32.snf \ X CrrBO10.snf CrrBO12.snf CrrBO14.snf CrrBO16.snf CrrBO18.snf CrrBO24.snf \ X CrrBO32.snf \ X CrrO10.snf CrrO12.snf CrrO14.snf CrrO16.snf CrrO18.snf CrrO24.snf \ X CrrO32.snf X XCURSOR = Cursor12.snf X XGFONT = GFont12.snf X XHELVETICAL = \ X Hlv10.snf Hlv12.snf Hlv14.snf Hlv18.snf Hlv24.snf Hlv32.snf \ X Hlv7.snf Hlv9.snf \ X HlvB10.snf HlvB12.snf HlvB14.snf HlvB18.snf HlvB24.snf HlvB32.snf \ X HlvBO10.snf HlvBO12.snf HlvBO14.snf HlvBO18.snf HlvBO24.snf HlvBO32.snf \ X HlvO10.snf HlvO12.snf HlvO14.snf HlvO18.snf HlvO24.snf HlvO32.snf X XHEVETICA_MEDIUM = HlvM32.snf X XICON = Icon12.snf X XKANJI = \ X Kanji16.snf Kanji24.snf X XSCREEN = \ X Scn11.snf Scn13.snf Scn15.snf Scn7.snf \ X ScnB13.snf ScnB15.snf X XSYMBOL = \ X Smb10.snf Smb12.snf Smb14.snf Smb18.snf Smb24.snf Smb32.snf \ X SmbM32.snf X XTIMES = \ X TmsB10.snf TmsB12.snf TmsB14.snf TmsB18.snf TmsB24.snf TmsB25.snf \ X TmsB27.snf TmsB30.snf TmsB32.snf TmsB34.snf TmsB39.snf TmsB44.snf \ X TmsB49.snf TmsB54.snf TmsB59.snf TmsB69.snf TmsB89.snf \ X TmsBI10.snf TmsBI12.snf TmsBI14.snf TmsBI18.snf TmsBI24.snf TmsBI32.snf \ X TmsI10.snf TmsI12.snf TmsI14.snf TmsI18.snf TmsI24.snf TmsI26.snf \ X TmsI29.snf TmsI32.snf TmsI33.snf TmsI38.snf TmsI43.snf TmsI47.snf \ X TmsI53.snf TmsI57.snf TmsI67.snf TmsI86.snf \ X TmsR10.snf TmsR12.snf TmsR14.snf TmsR16.snf TmsR18.snf TmsR19.snf \ X TmsR20.snf TmsR23.snf TmsR24.snf TmsR26.snf TmsR28.snf TmsR31.snf \ X TmsR32.snf TmsR36.snf TmsR41.snf TmsR46.snf TmsR51.snf TmsR56.snf \ X TmsR62.snf TmsR72.snf TmsR9.snf TmsR92.snf X Xall: ${FONTS} X Xmore: ${OTHERFONTS} X Xkanji: ${KANJI} X Xsymbol: ${SYMBOL} X Xtimes: ${TIMES} X Xsample: \ X Btn10.snf \ X Crl11.snf \ X Crr10.snf \ X CrrB10.snf \ X CrrBO10.snf \ X CrrO10.snf \ X Hlv10.snf \ X HlvB10.snf \ X HlvBO10.snf \ X HlvO10.snf \ X Smb10.snf \ X TmsB10.snf \ X TmsBI10.snf \ X TmsI10.snf \ X TmsR10.snf \ X Cursor12.snf \ X GFont12.snf \ X HlvM32.snf \ X Icon12.snf \ X Kanji16.snf \ X Scn11.snf X Xshar: Makefile README news.awk X echo "This is a shar archive. Cut off the header and" > shar.ar X echo "execute:" >> shar.ar X echo " sh < file" >> shar.ar X echo Files: $? >> shar.ar X echo "=================== cut here ===================" >> shar.ar X shar $? >> shar.ar X X${FBFILES}: X ln -s ${NEWSDIR}/$@ . X Xinstall:: all X cp ${FONTS} ${FONTDIR} X cd ${FONTDIR}; mkfontdir X Xinstallmore: more X cp ${OTHERFONTS} ${FONTDIR} X cd ${FONTDIR}; mkfontdir X Xclean:: X rm -f ${SNFFILES} ${FBFILES} core *.out X Xclobber: clean X X.SUFFIXES: .fb .afb .bdf .snf X X.fb.afb: X dumpfont -a -d . ${NEWSDIR}/$< X X.afb.snf: X awk -f news.awk $< | tee $*.bdf | bdftosnf > $*.snf X rm $< X X.fb.snf: X dumpfont -a -d . ${NEWSDIR}/$< X awk -f news.awk $*.afb | tee $*.bdf | bdftosnf > $*.snf X rm $*.afb END_OF_FILE if test 5051 -ne `wc -c <'xtroff/NeWS/Makefile'`; then echo shar: \"'xtroff/NeWS/Makefile'\" unpacked with wrong size! fi # end of 'xtroff/NeWS/Makefile' fi if test -f 'xtroff/README.X11' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/README.X11'\" else echo shar: Extracting \"'xtroff/README.X11'\" \(5375 characters\) sed "s/^X//" >'xtroff/README.X11' <<'END_OF_FILE' X X11 Notes: X ---------- X Most of the install details are the same as for Suntroff. The Xmajor difference is fonts. The Makefile is hopefully intelligent enough Xthat you can just change the few constants at the top and make install. XWherever the other README refers to suntools, read 'the X Windows XSystem Version 11' and wherever it refers to suntroff, read xtroff. X X If you are running on a system with dirent.h instead of sys/dir.h, Xyou should uncomment the -DDIRENT from the XtStuff Makefile. X X With X11R3 are included a nice set of Adobe, Bitstream and DEC Xfonts at 75dpi and 100dpi resolutions. These are in ISO collating Xformat - we use these fonts to create a new set in PostScript collating Xsequence. The code and scripts to do this were provided by Dave XCahlander <dac@earth.cray.com>. Thanks Dave. X X For X Windows releases before X11R3, the only fonts I know of that Xare widely available and come in a range of sizes useful for documents are Xvfonts, they're what this previewer uses. If you haven't got at least the Xoriginal R.*, I.*, B.*, and S.* fonts generated from the Hershey fonts for Xthe original vcat here at the University of Toronto eons ago, get 'em. XThey're not included here to conserve space. X X Since the X11 server does not load vfonts, the scaled vfonts Xgenerated by MakeSunFonts need to be converted to X11 bdf format, and Xthence to snf. The Makefile in the fontstuff directory does just that, Xusing the program vf2bdf. It can be invoked using the makefile in this Xdirectory by 'make fonts'. You then need to put these fonts someplace Xuseful, and put that location in the master Makefile. The fonts X[RIBS].* are converted to [ribs].*.snf to conform to the sample server Xdemands for lower case fontnames only. If you have any other fonts, Xyou might want to see font.c! X X The Makefile is set to generate the xfonts on install if it is not Xmaking suntroff. (WARNING: Since Sun has broken 'make' in SunOS4.0 so it Xcannot process rules with more than one period in the suffix, you'll have to Xget GNU make or some other public domain make, or make from BSD4.[23] if you Xhave source, or something to make xfonts under SunOS4.0. Complain to Sun) X X Most of the X11 code is in the file xwindows.c - chalk up a Xpoint for the X Toolkit. There are a few lines added to draw.c for Xdrawing functions, and to font.c to load fonts. X X The directory XtStuff contains the fixed menu widget, based on Xfixes made by Dana Chee to a piece of code that was in the R2 Xcontrib/menus directory. It's the only working popup menu package I Xknow of outside the HP widgets. There's a window widget that used to be Xwith Chris Peterson's xman. X X For the record, this is a straight port of the SunTools Xpreviewer suntroff which can still be made by simply defining the Xpreviewer in the Makefile to be suntroff. Credit goes to the authors Xof suntroff for an excellent troff previewer - I only did an X Xinterface. X X xtroff has been tested on Sun3-{50,60,110}s and Sun4-110s with bw2 Xand cg4 displays, running SunOS3.5 and 4.0. It works reasonably well on Xthese. It has also been tested briefly on a monochrome Vaxstation 3200 Xrunning Ultrix 2.2 and works, but runs *SLOWLY* presumably because of slow X'mi' code in the uVax server for dealing with large pixmaps. One day, Xsomeone will hopefully fix the server. It has allegedly been seen to compile Xand run on Silicon Graphics Iris4d machines and on a Cray running Unicos. X XNOTE: xwindows.c uses vfprintf() and vsprintf() for the error routines. If Xyour machine does not have them, either scream at your manufacturer, or get Xa copy from bsd-sources/src/lib/libc/stdio/v*printf.c. They're freely Xredistributable. X XThe following are X Windows specific files: X X xwindows.c This file contains all the X11 interface. X This includes the page movement, X and the menu. It provides a large X bit map for the troff drawing functions X to scribble on then displays the desired X part of the page for the user. X X xtroff.manX The manual page X xtroff.tr The ditroff output of the manual page X (so you can test the program without X ditroff first) X arc.c Substitute XDrawArc(s)/XFillArc(s) routines X which use XDrawLines to draw fast X approximate arcs instead of the much slower X server arcs. X X XIn the XtStuff directory: X CheckItem.c X CheckItem.h X CheckItemI.h X CheckItemP.h X Menu.c X Menu.h X MenuItem.c X MenuItem.h X MenuItemI.h X MenuItemP.h X MenuP.h X README.Menu The fixed menu widget X X README.Window X Window.c X Window.h X WindowP.h The Window widget - untouched. X X Minibuf.c X Minibuf.h X MinibufP.h X usleep.c A widget that emulates an Emacs-style X util.c minibuffer for text interaction and message X ask.c display. X X X Mark Moraes X Computer Systems Research Institute, X University of Toronto, X Toronto, Canada M5S 1A4 X X {your favourite backbone}!utcsri!moraes X moraes@utcsri.UUCP (new style) X moraes@csri.toronto.edu X moraes@csri.utoronto.ca X moraes@csri.utoronto (bitnet) X END_OF_FILE if test 5375 -ne `wc -c <'xtroff/README.X11'`; then echo shar: \"'xtroff/README.X11'\" unpacked with wrong size! fi # end of 'xtroff/README.X11' fi if test -f 'xtroff/arc.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/arc.c'\" else echo shar: Extracting \"'xtroff/arc.c'\" \(4811 characters\) sed "s/^X//" >'xtroff/arc.c' <<'END_OF_FILE' X#ifndef FASTARCS X X#include <X11/Xlib.h> X#include <math.h> X X/* X * The R3 miarc.c code, which is used to draw arcs in the X server is very X * slow, on Suns and uVaxen at least. (It uses iterative solution of X * transcendentals to try to be faithful to the protocol) Instead, we use a X * fast approximation that computes upto MAXPOINTS points on an arc and draws X * a lines between them. Two calls each to sin(), cos(), and some floating X * point math (could probably be done in fixed point or integer if you don't X * have a math chip). These arcs don't follow the X protocol precisely, but X * look reasonable. X */ X/* Author: D. A. Cahlander, <dac@earth.cray.com> 89/02/21 */ X/* X * Last Modified: Mark Moraes, <moraes@csri.toronto.edu> 89/03/23 to X * generalize for elliptical arc drawing as a plug compatible X * substitute for Xlib XDrawArc()/XFillArc()/XDrawArcs()/XFillArcs() X */ X X/* Basic idea: By representing a ellipse as: X X x = a * cos(t) X y = b * sin(t) X X t can be divided into a small number of lines and represent the arc to X "display precision" with 15-20 lines. (More than 20 if it was a large X arc.) X X let dt be the delta angle X dc = cos(dt) X ds = sin(dt) X X x1 dc -ds x0 X = x X y1 ds dc y0 X X or X x(i+1) = dc*x(i) - ds*y(i) X y(i+1) = ds*x(i) + dc*y(i) X X with the actual (x,y) being: X X x = xc + x(i) X y = yc + y(i) X */ X X X#define MAXPOINTS 99 X Xstatic drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, fill) XDisplay *dpy; XDrawable d; XGC gc; Xint x1, y1; Xunsigned int width, height; Xint angle1, angle2; Xint fill; X{ X XPoint points[MAXPOINTS + 2]; X int npoints; X int i; X double xc, yc; X double ang; X#ifdef ELLIPSE_WITHIN_BBOX X double delta; X#endif /* ELLIPSE_WITHIN_BBOX */ X double t, xt, yt, dc, ds; X double xr, yr; X X#define DEG_180 (180*64) X#define DEG_360 (360*64) X#define DEG_720 (720*64) X X if (angle2 > DEG_360) X angle2 = DEG_360; X X /* X * compute number of points needed for "good" display precision X */ X npoints = M_PI * sqrt((double) (width + height) / 2.0); X npoints = npoints < 8 ? 8 : npoints; X npoints = (npoints * ((angle2 < 0) ? -angle2 : angle2) + DEG_720 - 1) X / DEG_360; X npoints = npoints > MAXPOINTS ? MAXPOINTS : npoints; X /* angle between polygon points */ X ang = angle2 * M_PI / (DEG_180 * (npoints - 1)); X dc = cos(ang); X ds = - sin(ang); X X if (angle1 == 0) { X xt = 1.0; X yt = 0.0; X } else { X ang = angle1 * M_PI / DEG_180; /* start angle vector */ X xt = cos(ang); X yt = - sin(ang); X } X X#ifdef ELLIPSE_WITHIN_BBOX X /* X * Warning - possibly non-portable code. Uses internal details of GC X * struct X */ X delta = gc->values.line_width / 2.0; X#endif /* ELLIPSE_WITHIN_BBOX */ X X /* radius of arc */ X xr = width / 2.0; X yr = height / 2.0; X X /* center of arc */ X xc = x1 + xr; X yc = y1 + yr; X X#ifdef ELLIPSE_WITHIN_BBOX X xr = (xr > delta) ? xr - delta : delta; X yr = (yr > delta) ? yr - delta : delta; X#endif /* ELLIPSE_WITHIN_BBOX */ X X i = 0; X X /* X * Warning - possibly non-portable code. Uses internal details of GC X * struct X */ X if (fill && angle2 != DEG_360 && gc->values.arc_mode == ArcPieSlice) { X points[i].x = xc; X points[i].y = yc; X i++; X } X X for (; i < npoints; i ++) { /* compute polygon points */ X points[i].x = xc + xr * xt + (xt >= 0. ? .5 : -.5); X points[i].y = yc + yr * yt + (yt >= 0. ? .5 : -.5); X t = dc * xt - ds * yt; /* rotate vector */ X yt = ds * xt + dc * yt; X xt = t; X } X X if (fill) X XFillPolygon(dpy, d, gc, points, npoints, Convex, X CoordModeOrigin); X else X XDrawLines(dpy, d, gc, points, npoints, CoordModeOrigin); X#undef DEG_180 X#undef DEG_360 X#undef DEG_720 X} X XXDrawArc(dpy, d, gc, x1, y1, width, height, angle1, angle2) XDisplay *dpy; XDrawable d; XGC gc; Xint x1, y1; Xunsigned int width, height; Xint angle1, angle2; X{ X drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, 0); X} X XXDrawArcs(dpy, d, gc, arcs, n_arcs) XDisplay *dpy; XDrawable d; XGC gc; XXArc *arcs; Xint n_arcs; X{ X register XArc *arcp; X X for(arcp = arcs; n_arcs > 0; n_arcs--) X drawarc(dpy, d, gc, (int) (arcp->x), (int) (arcp->y), X (unsigned int) (arcp->width), (unsigned int) (arcp->height), X (int) (arcp->angle1), (int) (arcp->angle2), 0); X} X XXFillArc(dpy, d, gc, x1, y1, width, height, angle1, angle2) XDisplay *dpy; XDrawable d; XGC gc; Xint x1, y1; Xunsigned int width, height; Xint angle1, angle2; X{ X drawarc(dpy, d, gc, x1, y1, width, height, angle1, angle2, 1); X} X XXFillArcs(dpy, d, gc, arcs, n_arcs) XDisplay *dpy; XDrawable d; XGC gc; XXArc *arcs; Xint n_arcs; X{ X register XArc *arcp; X X for(arcp = arcs; n_arcs > 0; n_arcs--) X drawarc(dpy, d, gc, (int) (arcp->x), (int) (arcp->y), X (unsigned int) (arcp->width), (unsigned int) (arcp->height), X (int) (arcp->angle1), (int) (arcp->angle2), 1); X} X#endif /* FASTARCS */ END_OF_FILE if test 4811 -ne `wc -c <'xtroff/arc.c'`; then echo shar: \"'xtroff/arc.c'\" unpacked with wrong size! fi # end of 'xtroff/arc.c' fi if test -f 'xtroff/devpsc/NB' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/devpsc/NB'\" else echo shar: Extracting \"'xtroff/devpsc/NB'\" \(4611 characters\) sed "s/^X//" >'xtroff/devpsc/NB' <<'END_OF_FILE' X# STARTFONT 2.1 X# X# Copyright 1984, 1987 Adobe Systems, Inc. X# Portions Copyright 1988 Digital Equipment Corporation X# New Century Schoolbook is a registered trademark of Linotype. X# X# Permission to use, copy, modify, and distribute this software and X# its documentation for any purpose and without fee is hereby granted, X# provided that the above copyright notices appear in all copies and X# that both those copyright notices and this permission notice appear X# in supporting documentation, and that the names of Adobe Systems and X# Digital Equipment Corporation not be used in advertising or X# publicity pertaining to distribution of the software without X# specific, written prior permission. Adobe Systems and Digital X# Equipment Corporation make no representations about the suitability X# of this software for any purpose. It is provided "as is" without X# express or implied warranty. X# X# ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL X# WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED X# WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE X# SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER X# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF X# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN X# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. X# X# X# FONT -Adobe-New Century Schoolbook-Bold-R-Normal--24-240-75-75-P-149-ISO8859-1 X# devpsc.NB.24.75 Xname NB Xligatures fl fi 0 Xspacewidth 57 Xcharset X\| 33 0 000 1/6 em space X\^ 17 0 000 1/12 em space X\& 00 0 000 no space X! 59 2 041 exclam X" 67 2 042 quotedbl X# 115 2 043 numbersign X$ 115 3 044 dollar X% 167 2 045 percent X& 170 2 046 ampersand X' 48 2 047 quoteright X( 78 3 050 parenleft X) 78 3 051 parenright X* 100 2 052 asterisk X+ 121 2 053 plus X, 56 1 054 comma X. 56 0 056 period X/ 56 2 057 slash Xsl " X0 115 2 060 zero X1 115 2 061 one X2 115 2 062 two X3 115 2 063 three X4 115 2 064 four X5 115 2 065 five X6 115 2 066 six X7 115 2 067 seven X8 115 2 070 eight X9 115 2 071 nine X: 56 0 072 colon X; 56 1 073 semicolon X< 121 2 074 less X= 121 0 075 equal X> 121 2 076 greater X? 100 2 077 question X@ 149 2 0100 at XA 152 2 0101 A XB 156 2 0102 B XC 156 2 0103 C XD 167 2 0104 D XE 152 2 0105 E XF 144 2 0106 F XG 167 2 0107 G XH 174 2 0110 H XI 89 2 0111 I XJ 130 2 0112 J XK 163 2 0113 K XL 144 2 0114 L XM 196 2 0115 M XN 167 2 0116 N XO 167 2 0117 O XP 152 2 0120 P XQ 167 3 0121 Q XR 163 2 0122 R XS 133 2 0123 S XT 144 2 0124 T XU 167 2 0125 U XV 152 2 0126 V XW 196 2 0127 W XX 144 2 0130 X XY 144 2 0131 Y XZ 133 2 0132 Z X[ 78 3 0133 bracketleft X\ 121 2 0134 backslash X] 78 3 0135 bracketright Xa^ 121 2 0136 asciicircum X_ 100 1 0137 underscore Xul " X\_ " X` 48 2 0140 quoteleft Xa 122 0 0141 a Xb 130 2 0142 b Xc 111 0 0143 c Xd 133 2 0144 d Xe 115 0 0145 e Xf 78 2 0146 f Xg 122 3 0147 g Xh 137 2 0150 h Xi 74 2 0151 i Xj 70 3 0152 j Xk 133 2 0153 k Xl 70 2 0154 l Xm 193 0 0155 m Xn 137 0 0156 n Xo 122 0 0157 o Xp 133 1 0160 p Xq 130 1 0161 q Xr 104 0 0162 r Xs 100 0 0163 s Xt 85 2 0164 t Xu 137 0 0165 u Xv 122 0 0166 v Xw 178 0 0167 w Xx 122 0 0170 x Xy 122 1 0171 y Xz 107 0 0172 z X{ 78 3 0173 braceleft X| 121 2 0174 bar Xor " X} 78 3 0175 braceright Xa~ 121 0 0176 asciitilde X!! 59 3 0241 exclamdown XI! " Xct 115 3 0242 cent Xps 115 2 0243 sterling Xpo " Xyi 144 2 0245 yen Xyn " X$J " Xsc 100 3 0247 section Xum 67 2 0310 dieresis X.. " Xd< 100 0 0253 guillemotleft X- 67 0 055 hyphen Xhy " Xmc 67 2 0305 macron Xma " Xaa 67 2 0302 acute X\' " Xpp 149 2 0266 paragraph Xcd 67 1 0313 cedilla Xd> 100 0 0273 guillemotright X14 172 2 0201 onequarter X12 172 2 0202 onehalf X34 172 2 0203 threequarters X?? 100 3 0277 questiondown XI? " XAE 196 2 0341 AE XO/ 167 2 0351 Oslash Xss 122 2 0373 germandbls Xae 174 0 0361 ae Xo/ 122 3 0371 oslash XOE 200 2 0352 OE XPL 144 2 0350 Lslash Xui 74 0 0365 dotlessi Xem 200 0 0320 emdash Xhc 67 2 0317 caron X'' 67 2 0315 hungarumlaut Xdt 67 2 0307 dotaccent Xbe 67 2 0306 breve XPl 70 2 0370 lslash X^ 67 2 0303 circumflex Xga 67 2 0301 grave X\` " Xoe 181 0 0372 oe Xbu 121 2 0267 bullet Xog 67 1 0316 ogonek Xdd 100 3 0263 daggerdbl Xdg 100 3 0262 dagger Xen 100 0 0261 endash Xfl 137 2 0257 fl Xfi 137 2 0256 fi Xr> 67 0 0255 guilsinglright Xl< 67 0 0254 guilsinglleft X$D 115 3 0246 florin Xpm 200 2 0275 perthousand Xbq 96 1 0271 quotedblbase Xlq 96 2 0252 quotedblleft Xoq " Xrq 96 2 0272 quotedblright Xcq " Xn' 48 2 0251 quotesingle Xri 67 2 0312 ring X~ 67 2 0304 tilde X13 167 0 0210 fudgedproc! X23 167 0 0211 fudgedproc! X18 167 0 0204 fudgedproc! X38 167 0 0205 fudgedproc! X58 167 0 0206 fudgedproc! X78 167 0 0207 fudgedproc! END_OF_FILE if test 4611 -ne `wc -c <'xtroff/devpsc/NB'`; then echo shar: \"'xtroff/devpsc/NB'\" unpacked with wrong size! fi # end of 'xtroff/devpsc/NB' fi if test -f 'xtroff/devpsc/ND' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/devpsc/ND'\" else echo shar: Extracting \"'xtroff/devpsc/ND'\" \(4606 characters\) sed "s/^X//" >'xtroff/devpsc/ND' <<'END_OF_FILE' X# STARTFONT 2.1 X# X# Copyright 1984, 1987 Adobe Systems, Inc. X# Portions Copyright 1988 Digital Equipment Corporation X# New Century Schoolbook is a registered trademark of Linotype. X# X# Permission to use, copy, modify, and distribute this software and X# its documentation for any purpose and without fee is hereby granted, X# provided that the above copyright notices appear in all copies and X# that both those copyright notices and this permission notice appear X# in supporting documentation, and that the names of Adobe Systems and X# Digital Equipment Corporation not be used in advertising or X# publicity pertaining to distribution of the software without X# specific, written prior permission. Adobe Systems and Digital X# Equipment Corporation make no representations about the suitability X# of this software for any purpose. It is provided "as is" without X# express or implied warranty. X# X# ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL X# WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED X# WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE X# SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER X# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF X# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN X# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. X# X# X# FONT -Adobe-New Century Schoolbook-Bold-I-Normal--24-240-75-75-P-148-ISO8859-1 X# devpsc.ND.24.75 Xname ND Xligatures fl fi 0 Xspacewidth 57 Xcharset X\| 33 0 000 1/6 em space X\^ 17 0 000 1/12 em space X\& 00 0 000 no space X! 67 2 041 exclam X" 80 2 042 quotedbl X# 121 2 043 numbersign X$ 115 3 044 dollar X% 178 3 045 percent X& 178 2 046 ampersand X' 52 2 047 quoteright X( 81 3 050 parenleft X) 81 3 051 parenright X* 100 2 052 asterisk X+ 121 2 053 plus X, 57 1 054 comma X. 57 0 056 period X/ 56 2 057 slash Xsl " X0 115 2 060 zero X1 115 2 061 one X2 115 2 062 two X3 115 2 063 three X4 115 2 064 four X5 115 2 065 five X6 115 2 066 six X7 115 2 067 seven X8 115 2 070 eight X9 115 2 071 nine X: 57 0 072 colon X; 57 1 073 semicolon X< 121 2 074 less X= 121 0 075 equal X> 121 2 076 greater X? 96 2 077 question X@ 149 2 0100 at XA 148 2 0101 A XB 152 2 0102 B XC 152 2 0103 C XD 167 2 0104 D XE 148 2 0105 E XF 141 2 0106 F XG 163 2 0107 G XH 174 2 0110 H XI 89 2 0111 I XJ 133 2 0112 J XK 156 2 0113 K XL 141 2 0114 L XM 189 2 0115 M XN 170 2 0116 N XO 167 2 0117 O XP 148 2 0120 P XQ 167 3 0121 Q XR 159 2 0122 R XS 137 2 0123 S XT 144 2 0124 T XU 167 2 0125 U XV 148 2 0126 V XW 189 2 0127 W XX 148 2 0130 X XY 141 2 0131 Y XZ 141 2 0132 Z X[ 81 3 0133 bracketleft X\ 121 2 0134 backslash X] 81 3 0135 bracketright Xa^ 121 2 0136 asciicircum X_ 100 1 0137 underscore Xul " X\_ " X` 52 2 0140 quoteleft Xa 133 0 0141 a Xb 122 2 0142 b Xc 107 0 0143 c Xd 133 2 0144 d Xe 104 0 0145 e Xf 78 3 0146 f Xg 122 3 0147 g Xh 137 2 0150 h Xi 78 2 0151 i Xj 74 3 0152 j Xk 130 2 0153 k Xl 78 2 0154 l Xm 189 0 0155 m Xn 137 0 0156 n Xo 115 0 0157 o Xp 130 1 0160 p Xq 126 1 0161 q Xr 104 0 0162 r Xs 96 0 0163 s Xt 81 2 0164 t Xu 137 0 0165 u Xv 111 0 0166 v Xw 167 0 0167 w Xx 115 0 0170 x Xy 104 1 0171 y Xz 104 0 0172 z X{ 81 3 0173 braceleft X| 121 2 0174 bar Xor " X} 81 3 0175 braceright Xa~ 121 0 0176 asciitilde X!! 67 3 0241 exclamdown XI! " Xct 115 3 0242 cent Xps 115 2 0243 sterling Xpo " Xyi 115 2 0245 yen Xyn " X$J " Xsc 100 3 0247 section Xum 67 2 0310 dieresis X.. " Xd< 96 0 0253 guillemotleft X- 67 0 055 hyphen Xhy " Xmc 67 2 0305 macron Xma " Xaa 67 2 0302 acute X\' " Xpp 130 2 0266 paragraph Xcd 67 1 0313 cedilla Xd> 96 0 0273 guillemotright X14 172 2 0201 onequarter X12 172 2 0202 onehalf X34 172 2 0203 threequarters X?? 96 3 0277 questiondown XI? " XAE 178 2 0341 AE XO/ 167 3 0351 Oslash Xss 115 3 0373 germandbls Xae 163 0 0361 ae Xo/ 115 3 0371 oslash Xoe 170 0 0372 oe XPl 78 2 0370 lslash Xui 78 0 0365 dotlessi XOE 193 2 0352 OE XPL 141 2 0350 Lslash Xem 200 0 0320 emdash Xhc 67 2 0317 caron Xog 67 1 0316 ogonek X'' 67 2 0315 hungarumlaut Xri 67 2 0312 ring Xdt 67 2 0307 dotaccent Xbe 67 2 0306 breve X~ 67 2 0304 tilde X^ 67 2 0303 circumflex Xga 67 2 0301 grave X\` " Xpm 233 3 0275 perthousand Xrq 96 2 0272 quotedblright Xcq " Xbq 96 1 0271 quotedblbase Xbu 121 0 0267 bullet Xdd 100 3 0263 daggerdbl Xdg 100 3 0262 dagger Xen 100 0 0261 endash Xfl 137 3 0257 fl Xfi 137 3 0256 fi Xr> 56 0 0255 guilsinglright Xl< 56 0 0254 guilsinglleft Xlq 96 2 0252 quotedblleft Xoq " Xn' 45 2 0251 quotesingle X$D 115 3 0246 florin X13 167 0 0210 fudgedproc! X23 167 0 0211 fudgedproc! X18 167 0 0204 fudgedproc! X38 167 0 0205 fudgedproc! X58 167 0 0206 fudgedproc! X78 167 0 0207 fudgedproc! END_OF_FILE if test 4606 -ne `wc -c <'xtroff/devpsc/ND'`; then echo shar: \"'xtroff/devpsc/ND'\" unpacked with wrong size! fi # end of 'xtroff/devpsc/ND' fi if test -f 'xtroff/devpsc/NI' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/devpsc/NI'\" else echo shar: Extracting \"'xtroff/devpsc/NI'\" \(4605 characters\) sed "s/^X//" >'xtroff/devpsc/NI' <<'END_OF_FILE' X# STARTFONT 2.1 X# X# Copyright 1984, 1987 Adobe Systems, Inc. X# Portions Copyright 1988 Digital Equipment Corporation X# New Century Schoolbook is a registered trademark of Linotype. X# X# Permission to use, copy, modify, and distribute this software and X# its documentation for any purpose and without fee is hereby granted, X# provided that the above copyright notices appear in all copies and X# that both those copyright notices and this permission notice appear X# in supporting documentation, and that the names of Adobe Systems and X# Digital Equipment Corporation not be used in advertising or X# publicity pertaining to distribution of the software without X# specific, written prior permission. Adobe Systems and Digital X# Equipment Corporation make no representations about the suitability X# of this software for any purpose. It is provided "as is" without X# express or implied warranty. X# X# ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL X# WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED X# WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE X# SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER X# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF X# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN X# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. X# X# X# FONT -Adobe-New Century Schoolbook-Medium-I-Normal--24-240-75-75-P-136-ISO8859-1 X# devpsc.NI.24.75 Xname NI Xligatures fl fi 0 Xspacewidth 56 Xcharset X\| 33 0 000 1/6 em space X\^ 17 0 000 1/12 em space X\& 00 0 000 no space X! 67 2 041 exclam X" 80 2 042 quotedbl X# 121 2 043 numbersign X$ 111 3 044 dollar X% 167 2 045 percent X& 170 2 046 ampersand X' 41 2 047 quoteright X( 67 3 050 parenleft X) 67 3 051 parenright X* 100 2 052 asterisk X+ 121 2 053 plus X, 56 1 054 comma X. 56 0 056 period X/ 121 3 057 slash Xsl " X0 111 2 060 zero X1 111 2 061 one X2 111 2 062 two X3 111 2 063 three X4 111 2 064 four X5 111 2 065 five X6 111 2 066 six X7 111 2 067 seven X8 111 2 070 eight X9 111 2 071 nine X: 56 0 072 colon X; 56 1 073 semicolon X< 121 2 074 less X= 121 0 075 equal X> 121 2 076 greater X? 89 2 077 question X@ 149 2 0100 at XA 141 2 0101 A XB 144 2 0102 B XC 144 2 0103 C XD 156 2 0104 D XE 144 2 0105 E XF 133 2 0106 F XG 156 2 0107 G XH 167 2 0110 H XI 81 2 0111 I XJ 122 2 0112 J XK 148 2 0113 K XL 133 2 0114 L XM 189 2 0115 M XN 163 2 0116 N XO 156 2 0117 O XP 133 2 0120 P XQ 156 3 0121 Q XR 148 2 0122 R XS 133 2 0123 S XT 137 2 0124 T XU 163 2 0125 U XV 141 2 0126 V XW 185 2 0127 W XX 141 2 0130 X XY 137 2 0131 Y XZ 133 2 0132 Z X[ 67 3 0133 bracketleft X\ 121 2 0134 backslash X] 67 3 0135 bracketright Xa^ 121 2 0136 asciicircum X_ 100 1 0137 underscore Xul " X\_ " X` 41 2 0140 quoteleft Xa 115 0 0141 a Xb 111 2 0142 b Xc 89 0 0143 c Xd 122 2 0144 d Xe 89 0 0145 e Xf 67 3 0146 f Xg 107 3 0147 g Xh 122 2 0150 h Xi 67 2 0151 i Xj 63 3 0152 j Xk 111 2 0153 k Xl 67 2 0154 l Xm 178 0 0155 m Xn 122 0 0156 n Xo 100 0 0157 o Xp 115 1 0160 p Xq 111 1 0161 q Xr 89 0 0162 r Xs 89 0 0163 s Xt 70 2 0164 t Xu 122 0 0165 u Xv 104 0 0166 v Xw 156 0 0167 w Xx 100 0 0170 x Xy 100 1 0171 y Xz 93 0 0172 z X{ 67 3 0173 braceleft X| 121 2 0174 bar Xor " X} 67 3 0175 braceright Xa~ 121 0 0176 asciitilde X!! 67 3 0241 exclamdown XI! " Xct 111 3 0242 cent Xps 111 2 0243 sterling Xpo " Xyi 111 2 0245 yen Xyn " X$J " Xsc 100 3 0247 section Xum 67 2 0310 dieresis X.. " Xd< 85 0 0253 guillemotleft X- 67 0 055 hyphen Xhy " Xmc 67 2 0305 macron Xma " Xaa 67 2 0302 acute X\' " Xpp 130 2 0266 paragraph Xcd 67 1 0313 cedilla Xd> 85 0 0273 guillemotright X14 167 2 0201 onequarter X12 167 2 0202 onehalf X34 167 2 0203 threequarters X?? 89 3 0277 questiondown XI? " XAE 174 2 0341 AE XO/ 156 3 0351 Oslash Xss 111 3 0373 germandbls Xae 144 0 0361 ae Xo/ 100 3 0371 oslash Xoe 156 0 0372 oe XPl 67 2 0370 lslash Xui 67 0 0365 dotlessi XOE 196 2 0352 OE XPL 133 2 0350 Lslash Xem 200 0 0320 emdash Xhc 67 2 0317 caron Xog 67 1 0316 ogonek X'' 67 2 0315 hungarumlaut Xri 67 2 0312 ring Xdt 67 2 0307 dotaccent Xbe 67 2 0306 breve X~ 67 2 0304 tilde X^ 67 2 0303 circumflex Xga 67 2 0301 grave X\` " Xpm 200 3 0275 perthousand Xrq 78 2 0272 quotedblright Xcq " Xbq 78 1 0271 quotedblbase Xbu 121 0 0267 bullet Xdd 100 3 0263 daggerdbl Xdg 100 3 0262 dagger Xen 100 0 0261 endash Xfl 122 3 0257 fl Xfi 122 3 0256 fi Xr> 67 0 0255 guilsinglright Xl< 67 0 0254 guilsinglleft Xlq 78 2 0252 quotedblleft Xoq " Xn' 56 2 0251 quotesingle X$D 111 3 0246 florin X13 167 0 0210 fudgedproc! X23 167 0 0211 fudgedproc! X18 167 0 0204 fudgedproc! X38 167 0 0205 fudgedproc! X58 167 0 0206 fudgedproc! X78 167 0 0207 fudgedproc! END_OF_FILE if test 4605 -ne `wc -c <'xtroff/devpsc/NI'`; then echo shar: \"'xtroff/devpsc/NI'\" unpacked with wrong size! fi # end of 'xtroff/devpsc/NI' fi if test -f 'xtroff/devpsc/S' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/devpsc/S'\" else echo shar: Extracting \"'xtroff/devpsc/S'\" \(5257 characters\) sed "s/^X//" >'xtroff/devpsc/S' <<'END_OF_FILE' X# STARTFONT 2.1 X# X# Copyright 1984, 1987 Adobe Systems, Inc. X# Portions Copyright 1988 Digital Equipment Corporation X# X# Permission to use, copy, modify, and distribute this software and X# its documentation for any purpose and without fee is hereby granted, X# provided that the above copyright notices appear in all copies and X# that both those copyright notices and this permission notice appear X# in supporting documentation, and that the names of Adobe Systems and X# Digital Equipment Corporation not be used in advertising or X# publicity pertaining to distribution of the software without X# specific, written prior permission. Adobe Systems and Digital X# Equipment Corporation make no representations about the suitability X# of this software for any purpose. It is provided "as is" without X# express or implied warranty. X# X# ADOBE SYSTEMS AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL X# WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED X# WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ADOBE X# SYSTEMS AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, X# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER X# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF X# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN X# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. X# X# X# FONT -Adobe-Symbol-Medium-R-Normal--24-240-75-75-P-142-ADOBE-FONTSPECIFIC X# devpsc.S.24.75 Xname S Xspecial Xligatures 0 Xspacewidth 50 Xcharset X\| 33 0 000 1/6 em space X\^ 17 0 000 1/12 em space X\& 00 0 000 no space X! 67 2 041 exclam Xfa 143 2 042 universal X# 100 2 043 numbersign Xte 110 2 044 existential X% 167 2 045 percent X& 156 2 046 ampersand Xcm 88 0 047 suchthat X( 67 3 050 parenleft X) 67 3 051 parenright X** 100 2 052 asteriskmath X+ 110 0 053 plus Xpl " X, 50 1 054 comma X\- 110 0 055 minus Xmi " X. 50 0 056 period X/ 56 2 057 slash Xsl " X0 100 2 060 zero X1 100 2 061 one X2 100 2 062 two X3 100 2 063 three X4 100 2 064 four X5 100 2 065 five X6 100 2 066 six X7 100 2 067 seven X8 100 2 070 eight X9 100 2 071 nine X: 56 0 072 colon X; 56 1 073 semicolon X< 110 0 074 less X= 110 0 075 equal Xeq " X> 110 0 076 greater X? 89 2 077 question X=~ 110 0 0100 congruent X*A 144 2 0101 Alpha X*B 133 2 0102 Beta X*X 144 2 0103 Chi X*D 122 2 0104 Delta X*E 122 2 0105 Epsilon X*F 153 2 0106 Phi X*G 121 2 0107 Gamma X*Y 144 2 0110 Eta X*I 67 2 0111 Iota X*K 144 2 0113 Kappa X*L 137 2 0114 Lambda X*M 178 2 0115 Mu X*N 144 2 0116 Nu X*O 144 2 0117 Omicron X*P 154 2 0120 Pi X*H 148 2 0121 Theta X*R 111 2 0122 Rho X*S 118 2 0123 Sigma X*T 122 2 0124 Tau X*U 138 2 0125 Upsilon Xts 88 1 0126 sigma1 X*W 154 2 0127 Omega X*C 129 2 0130 Xi X*Q 159 2 0131 Psi X*Z 122 2 0132 Zeta X[ 67 3 0133 bracketleft Xtf 173 0 0134 therefore X] 67 3 0135 bracketright Xbt 132 2 0136 perpendicular X_ 100 1 0137 underscore Xul " X\_ " Xrn 100 2 0140 radicalex X*a 126 0 0141 alpha X*b 110 3 0142 beta X*x 110 1 0143 chi X*d 99 2 0144 delta X*e 88 0 0145 epsilon X*f 104 3 0146 phi X*g 82 1 0147 gamma X*y 121 1 0150 eta X*i 66 0 0151 iota X*k 110 0 0153 kappa X*l 110 2 0154 lambda X*m 115 1 0155 mu X*n 104 0 0156 nu X*o 110 0 0157 omicron X*p 110 0 0160 pi X*h 104 2 0161 theta X*r 110 1 0162 rho X*s 121 0 0163 sigma X*t 88 0 0164 tau X*u 115 0 0165 upsilon X*w 137 0 0167 omega X*c 99 3 0170 xi X*q 137 1 0171 psi X*z 99 3 0172 zeta X{ 96 3 0173 braceleft X| 40 3 0174 bar Xor " X} 96 3 0175 braceright Xap 110 0 0176 similar Xfm 49 2 0242 minute Xmt " X<= 110 2 0243 lessequal Xif 143 0 0245 infinity X$D 100 3 0246 florin XCc 151 0 0247 club XCd 151 0 0250 diamond Xbs 151 0 0251 heart XCh " XCs 151 0 0252 spade X<> 208 0 0253 arrowboth X<- 197 0 0254 arrowleft Xua 121 3 0255 arrowup X-> 197 0 0256 arrowright Xda 121 3 0257 arrowdown Xde 80 2 0260 degree X+- 110 2 0261 plusminus Xsd 82 2 0262 second X>= 110 2 0263 greaterequal Xmu 110 0 0264 multiply Xpt 143 0 0265 proportional Xpd 99 2 0266 partialdiff Xbu 92 0 0267 bullet Xdi 110 0 0270 divide X!= 110 0 0271 notequal X== 110 0 0272 equivalence X~= 110 0 0273 approxequal Xcr 132 2 0277 carriagereturn Xal 165 2 0300 aleph Xax 154 2 0304 circlemultiply Xa+ 154 2 0305 circleplus Xes 165 2 0306 emptyset Xca 154 0 0307 intersection Xcu 154 0 0310 union Xsp 143 0 0311 propersuperset Xip 143 1 0312 reflexsuperset X!s 143 3 0313 notsubset Xsb 143 0 0314 propersubset Xib 143 1 0315 reflexsubset Xmo 143 0 0316 element X!m 143 3 0317 notelement Xag 154 2 0320 angle Xgr 143 2 0321 gradient Xrg 158 2 0322 registerserif Xco 158 2 0323 copyrightserif Xtm 178 2 0324 trademarkserif Xsr 110 2 0326 radical Xm. 50 0 0327 dotmath Xno 143 0 0330 logicalnot Xan 121 0 0331 logicaland Xla " Xlo 121 0 0332 logicalor Xio 208 0 0333 arrowdblboth X<: 197 0 0334 arrowdblleft Xlh " Xu= 121 2 0335 arrowdblup X:> 197 0 0336 arrowdblright Xim " Xrh " Xd= 121 2 0337 arrowdbldown Xdm 99 2 0340 lozenge Xl< 66 3 0341 angleleft XL< " XAL 158 2 0360 apple Xr> 66 3 0361 angleright XR> " Xis 55 3 0362 integral Xbx 144 2 0205 box Xsq 144 2 0204 square Xci 158 2 0206 circle Xbr 40 3 0207 boxrule Xru 100 0 0211 rule Xrc 77 3 0224 rightceiling Xbv 77 3 0210 boldvertical Xrf 77 3 0222 rightfloor Xrt 99 3 0215 righttopcurly Xrk 99 3 0220 rightmidcurly Xrb 99 3 0216 rightbotcurly Xlc 77 3 0223 leftceiling Xlf 77 3 0221 leftfloor Xlt 99 3 0213 lefttopcurly Xlk 99 3 0217 leftmidcurly Xlb 99 3 0214 leftbotcurly END_OF_FILE if test 5257 -ne `wc -c <'xtroff/devpsc/S'`; then echo shar: \"'xtroff/devpsc/S'\" unpacked with wrong size! fi # end of 'xtroff/devpsc/S' fi if test -f 'xtroff/fontstuff/ch2vft.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/fontstuff/ch2vft.c'\" else echo shar: Extracting \"'xtroff/fontstuff/ch2vft.c'\" \(6303 characters\) sed "s/^X//" >'xtroff/fontstuff/ch2vft.c' <<'END_OF_FILE' X/* ch2vft.c 1.4 84/04/07 X * X * Font translation to vfonts (RST format) from character format. X * X * Use: ch2vft [ -i -s ] charfile > vfontfile X * X * Takes input from charfile (which must be in the format written X * by xxx2ch), converts to rst format and writes to stdout. If charfile X * is missing, stdin is read. The -i flag tells ch2rst to ignore the X * character codes at the start of each glyph definition, and pack the X * glyphs in consecutive code positions starting with 0. The -s flag X * forces ch2vft to include the whole bit-map that defines the glyph. X * Normally, it is trimmed of white space. This is usefull for making X * stipple patterns of fixed size. X */ X X#include <stdio.h> X#include <ctype.h> X#include <vfont.h> X X X#define RES 200 /* for vfont, resolution is 200 */ X#define MAXLINE 200 X#define GLYPHSPACE (MAXLINE * MAXLINE) X#define MAGICNO 0436 X#define DIRSIZ 256 /* vfonts MUST have 256 entries */ X#define DIMLIMIT 128 X X Xchar * rdchar(); Xchar * malloc(); X Xstruct dispatch g[DIRSIZ]; /* directory of glyph definitions */ Xstruct header head; /* font file header */ X Xint code, codeindex; Xint width, length, maxv, minv, maxh, minh, refv, refh; Xint fileaddr; X Xint ignorecode = 0; Xint stipple = 0; XFILE * filep; Xchar ibuff[MAXLINE]; Xchar ebuff[MAXLINE]; Xchar * glyphs[DIRSIZ]; Xchar charbits[GLYPHSPACE]; /* place to store bits for a glyph */ X X Xmain(argc,argv) Xint argc; Xchar **argv; X{ X register int i; X register int j; X register int k; X register char *chp; X register char *bitp; X float par; X X head.magic = MAGICNO; X head.maxx = head.maxy = head.xtend = 0; X while (argc > 1 && argv[1][0] == '-') { X switch(argv[1][1]) { X case 'i': X ignorecode = 1; X break; X X case 's': X stipple = 1; X break; X default: X error("%s, unknown option flag", argv[1]); X } X argc--; argv++; X } X X if (argc == 2) { X if ((filep = fopen (argv[1], "r")) == NULL) X error("can't open file \"%s\"", argv[1]); X } else filep = stdin; X X codeindex = 0; X for (i = 0; i < DIRSIZ; glyphs[i++] = (char *) 0); X X fgets(ibuff, MAXLINE, filep); X if (strcmp(ibuff, "fontheader\n")) X error("not a character font file"); X X while (fgets(ibuff, MAXLINE, filep) != NULL) { X if (index(ibuff, '\n') == 0) X error("input line too long"); X X if (ibuff[0] != ':') { X sscanf (ibuff, "%s %f", ebuff, &par); X if (strcmp(ebuff, "size") == 0); X else if (strcmp(ebuff, "version") == 0) { X if ((int) (par + 0.5)) X error("wrong version (%d) for Font file.", (int)(par+0.5)); X } else if (strcmp(ebuff, "mag") == 0); X else if (strcmp(ebuff, "desiz") == 0); /*des_size = par/FIX + 0.5*/ X else if (strcmp(ebuff, "linesp") == 0); X else if (strcmp(ebuff, "wordsp") == 0); X else if (strcmp(ebuff, "rot") == 0); X else if (strcmp(ebuff, "cadv") == 0); X else if (strcmp(ebuff, "ladv") == 0); X else if (strcmp(ebuff, "id") == 0); X else if (strcmp(ebuff, "res") == 0) { X if (((int) (par + 0.5)) != RES) X fprintf(stderr, "ch2vft warning: wrong resolution (%d).\n", X (int) (par + 0.5) ); X } else X error("unknown input descriptor, \"%s\"", ebuff); X } else { X if (sscanf (ibuff, ":%d, width = %f", &code, &par) != 2) X error("bad glyph header, %s", ibuff); X if (ignorecode) i = codeindex++; else i = code; X if (i < 0 || i >= DIRSIZ) error("code (%d) out of range", i); X g[i].width = par + 0.5; X X chp = &charbits[0]; X if (fgets(chp, MAXLINE, filep) == NULL) X error("unexpected end of input"); X width = strlen(chp) - 1; X minh = width; X maxh = 0; X refv = minv = -1; X X for (length = 0; *chp != '\n'; length++) { X if ((length + 1) * width > GLYPHSPACE) X error ("out of glyph space"); X for (j = 0; j < width; j++, chp++) { X switch (*chp) { X case '.': X break; X case 'x': X refh = j; X refv = length; X *chp = '.'; X break; X case 'X': X refh = j; X refv = length; X case '@': X case '*': X maxv = length; X if (minv < 0) minv = length; X if (j < minh) minh = j; X if (j > maxh) maxh = j; X break; X default: X error("illegal character '%c' in map.", *chp); X } /* switch */ X } /* for j */ X if (fgets(chp, MAXLINE, filep) == NULL) X error("unexpected end of input"); X } /* for length */ X X if (stipple) { /* force whole box if making stipples */ X minv = 0; X minh = 0; X maxv = length - 1; X maxh = width - 1; X } X X if (refv < 0) error("no reference point in glyph %d.", code); X if (minv < 0) { X minv = maxv = refv; X minh = maxh = refh; X } X g[i].up = bound(refv - minv); X g[i].down = bound(maxv + 1 - refv); X g[i].right = bound(maxh + 1 - refh); X g[i].left = bound(refh - minh); X g[i].nbytes = (maxv + 1 - minv) * ((maxh + 8 - minh) >> 3); X X /* convert from characters to bits */ X bitp = (glyphs[i] = malloc(g[i].nbytes)) - 1; X for (k = minv; k <= maxv; k++) { X register int bitwidth; X X chp = &charbits[0] + width * k + minh; X bitwidth = 0; X for (j = minh; j <= maxh; j++, chp++) { X if (--bitwidth < 0) { X *++bitp = '\0'; X bitwidth = 7; X } X if (*chp != '.') *bitp |= 1 << bitwidth; X } X } /* for */ X } /* else */ X } /* while */ X X fileaddr = 0; X for (i = 0; i < DIRSIZ; i++) { X if (glyphs[i] == (char *) 0) { X g[i].nbytes = 0; X } else { X g[i].addr = fileaddr; X fileaddr += g[i].nbytes; X if (g[i].up > head.maxy) head.maxy = g[i].up; X if (g[i].down > head.xtend) head.xtend = g[i].down; X if (((int) g[i].left + g[i].right) > head.maxx) X head.maxx = g[i].left + (int) g[i].right; X } X } X head.size = fileaddr; X X vwrite((char *) &head, sizeof(head)); X vwrite((char *) &(g[0]), sizeof(g)); X for (i = 0; i < DIRSIZ; i++) X if (glyphs[i] != (char *) 0) X vwrite(glyphs[i], g[i].nbytes); X} X X Xvwrite(buf,usize) Xchar *buf; Xint usize; X{ X int tsize = 0; X X while (usize) { X buf += tsize; X tsize = usize > BUFSIZ ? BUFSIZ : usize; X if ((tsize = write(1, buf, tsize)) < 0) { X perror("ch2vft: write failed"); X exit(-1); X } X usize -= tsize; X } X} X X X/*VARARGS1*/ Xerror(string, a1, a2, a3, a4) Xchar *string; X{ X fprintf(stderr, "ch2vft: "); X fprintf(stderr, string, a1, a2, a3, a4); X fprintf(stderr, "\n"); X exit(8); X}; X Xbound(i) X{ X if(i < DIMLIMIT && i >= -DIMLIMIT) return i; X error ("dimension out of range"); X} END_OF_FILE if test 6303 -ne `wc -c <'xtroff/fontstuff/ch2vft.c'`; then echo shar: \"'xtroff/fontstuff/ch2vft.c'\" unpacked with wrong size! fi # end of 'xtroff/fontstuff/ch2vft.c' fi if test -f 'xtroff/fontstuff/rst2ch.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/fontstuff/rst2ch.c'\" else echo shar: Extracting \"'xtroff/fontstuff/rst2ch.c'\" \(4968 characters\) sed "s/^X//" >'xtroff/fontstuff/rst2ch.c' <<'END_OF_FILE' X/* Font translation for Imagen-style fonts (RST format) to character format. X * X * Use: rst2ch fontfile [ character_list ] X * X * Reads "fontfile" from current directory (or if not found, X * from RSTFONTDIR defined below) and converts it to a character font format X * editable by real people, and convertable BACK to rst format by the X * ch2rst program. Output goes to stdout. X */ X X#include <stdio.h> X#include <ctype.h> X#include "rst.h" X X#ifndef RSTFONTDIR X#define RSTFONTDIR "/usr/src/local/imagen/fonts/raster" X#endif X Xchar * rdchar(); Xchar * malloc(); X Xchar defascii[DIRSIZ]; /* list of ascii characters - in order */ Xchar *charswanted = defascii;/* list of characters to print info for */ Xglyph_dir g[DIRSIZ]; /* directory of glyph definitions */ Xpreamble p; /* set of variables for preamble */ Xdouble fixtowdth; /* "fix" and magnification conversion factor */ X Xchar *fontdir = RSTFONTDIR; /* place to look for fonts */ Xchar IName[100]; /* input file name put here */ XFILE * FID; /* input file number */ X Xchar charbits[10000]; /* place to store bits for a glyph */ Xint gbase; /* base address of glyphs in RST file */ X /* variables used to print character */ Xint H, W, WB, base, lbound, rbound; X X Xmain(argc,argv) Xint argc; Xchar **argv; X{ X register int i; X register int j; X register int k; X register int l; X X X if (argc < 2) X error("usage: %s filename <charlist>", argv[0]); X X for (i=0; i<DIRSIZ; i++) X defascii[i] = i; X if (argc >= 3) X charswanted = argv[2]; X X sprintf(IName, "%s/%s", fontdir, argv[1]); X if ((FID = fopen(argv[1], "r")) == NULL) X if ((FID = fopen(IName, "r")) == NULL) X error("can't find %s", argv[1]); X X for (i = 0; i < FMARK; i++) filemark[i] = getc(FID); X if (strncmp(filemark, "Rast", 4)) X error("bad File Mark in Font file."); X X p.p_size = rd2(); X p.p_version = rd1(); X if (p.p_version) X error("wrong version (%d) of Font file.", p.p_version); X p.p_glyph = rd3(); X p.p_first = rd2(); X if ((p.p_last = rd2()) >= DIRSIZ) X error("too many glyphs (%d) in font.", p.p_last); X p.p_mag = rd4(); X X if ((fixtowdth = FIXPIX * p.p_mag / 1000.0) == 0.0) X fixtowdth = FIXPIX; X X p.p_desiz = rd4(); X p.p_linesp = rd4(); X p.p_wordsp = rd4(); X p.p_rot = rd2(); X p.p_cadv = rd1(); X p.p_ladv = rd1(); X p.p_id = rd4(); X p.p_res = rd2(); X/* if (p.p_res != RES) X error("wrong resolution (%d) in Font file.", p.p_res); X */ X i = p.p_glyph - 44; X while (i--) if (getc(FID) == EOF) X error("bad preamble in Font file."); X X for (i = p.p_first; i <= p.p_last; i++) { X g[i].g_height = rd2(); X g[i].g_width = rd2(); X g[i].g_up = rd2(); X g[i].g_left = rd2(); X g[i].g_pwidth = rd4(); X g[i].g_bitp = rd3(); X } X X printf("fontheader\nsize %d\nversion %d\n", p.p_size, p.p_version); X printf("mag %d\ndesiz %.2f\n", p.p_mag, p.p_desiz * FIX); X printf("linesp %.2f\n", p.p_linesp * fixtowdth); X printf("wordsp %.2f\n", p.p_wordsp * fixtowdth); X printf("rot %d\ncadv %d\nladv %d\n", p.p_rot, p.p_cadv, p.p_ladv); X printf("id %d\nres %d\n", p.p_id, p.p_res); X X X for (l = p.p_first; l<= p.p_last; l++) { X j = charswanted[l]; X if (l>0 && j==0) break; X if ((gbase = g[j].g_bitp) != 0) { X printf(":%d, width = %.2f\n", j, g[j].g_pwidth * fixtowdth); X H = g[j].g_height; X W = g[j].g_width; X if (H <= 0 || W <= 0) { X g[j].g_up = 0; X g[j].g_left = 0; X } X lseek(fileno(FID), (long) gbase, 0); X read(fileno(FID), charbits, (WB = (W+7)/8) * H); X base = g[j].g_up; X if ((lbound = g[j].g_left) > 0) lbound = 0; X if ((rbound = g[j].g_left + 1) < W) rbound = W; X for (k = g[j].g_up; k < 0; k++) { X for (i = lbound; i < rbound; i++) X printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.'); X putchar ('\n'); X } X for (k = 0; k < H; k++) { X for (i = g[j].g_left; i < 0; i++) X printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.'); X for (i = 0; i < W; i++) X printf("%c", k==g[j].g_up && i==g[j].g_left ? X (fbit(k,i) ? 'X':'x') : fbit(k,i) ? '@':'.'); X while (i < rbound) { X printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.'); X i++; X } X putchar ('\n'); X } X while (k <= g[j].g_up) { X for (i = lbound; i < rbound; i++) X printf("%c", k==g[j].g_up && i==g[j].g_left ? 'x':'.'); X putchar ('\n'); X k++; X } X putchar ('\n'); X } X } X} X X/*VARARGS1*/ Xerror(string, a1, a2, a3, a4) Xchar *string; X{ X fprintf(stderr, "rst2ch: "); X fprintf(stderr, string, a1, a2, a3, a4); X fprintf(stderr, "\n"); X exit(8); X}; X X Xfbit(row, col) Xint row, col; X{ X int thisbyte, thisbit, ret; X X if (row<0 || row>=H || col>=W) return(0); X thisbyte = charbits[row*WB + (col>>3)] & 0xff; X thisbit = 0x80 >> (col&7); X ret = thisbyte & thisbit; X return (ret != 0); X} X Xrd1() X{ X int i; X X if((i = getc(FID)) == EOF) error("file read error"); X return i; X} X Xrd2() X{ X register int i = rd1() << 8; X X return i + rd1(); X} X Xrd3() X{ X register int i = rd2() << 8; X X return i + rd1(); X} X Xrd4() X{ X register int i = rd2() << 16; X X return i + rd2(); X} END_OF_FILE if test 4968 -ne `wc -c <'xtroff/fontstuff/rst2ch.c'`; then echo shar: \"'xtroff/fontstuff/rst2ch.c'\" unpacked with wrong size! fi # end of 'xtroff/fontstuff/rst2ch.c' fi if test -f 'xtroff/suntroff.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xtroff/suntroff.h'\" else echo shar: Extracting \"'xtroff/suntroff.h'\" \(4834 characters\) sed "s/^X//" >'xtroff/suntroff.h' <<'END_OF_FILE' X/* X * SunTroff - A program to display the output of Device Independent X * Troff as a window on a Sun Workstation. X * X * Suntroff.h - A number of defines and structures that are needed X * by the rest of the code. X * X * Authors - The original version of this program was written by X * Richard L. Hyde (Purdue) X * David Slattengren (Berkeley) X * It was nearly all rewritten, cleaned up and a more elegant X * user interface installed by X * Malcolm Slaney (Schlumberger Palo Alto Research) X * X * Legalese - This command was developed as an independent project X * to satisfy a need of the author. This program may contain X * bugs and the user is cautioned to independently verify that X * the program is suitable for the user's intended purpose. X * The program is made available on an ``as is'' basis with X * all faults and without any implied or expressed warranties X * or support from either the author, Malcolm Slaney, or X * Schlumberger Palo Alto Research Laboratory. X * X * I am putting this program in the Unix domain. You are X * free to use it as you wish. In return I ask two things. X * First, that you do not remove the names of the authors X * from this work. Secondly, if you make changes or X * improvements to this program that you pass these back to X * the author so that everybody can benefit from the X * improvements. X */ X X#include <ctype.h> X#include <stdio.h> X#ifndef SUNTOOLS X#include <X11/Xlib.h> /* Needed for definition of Font */ X#include <X11/Xos.h> /* To try and make things more portable */ X#else /* SUNTOOLS */ X#include <sys/types.h> /* Xos.h includes it for X */ X#endif /* SUNTOOLS */ X X#include "dev.h" X X /* TYPESETTER DEFINES */ X /* The first four defines are probably X * the only ones that need to be X * customized for a site. X */ X X /* Home of all the troff information */ X /* Hint: the standard AT&T location is X * /usr/dwb/lib/font X */ X#ifndef FONTDIR X#define FONTDIR "/usr/lib/font" X#endif X /* Home of all the font bits */ X#ifndef BITDIR X#define BITDIR "/usr/local/lib/suntroff" X#endif X X /* Note the SunTroff program will X * append to the end of this string X * the printer name. X */ X#define LPRCOMMAND "/usr/ucb/lpr -n -P" X X#define FULLPAGE 0 /* Start up the tool with a width X * that is as large as a page. */ X X#define NFONTS 60 /* Number of Allowed Fonts */ X X#define MAXNAME 20 /* Length of maximum typesetter name */ X X#define MAXSTATE 10 /* Number of states to remember */ X X /* Needs to be no larger than X * than the size of the X * intname character string X * in the dev.h/struct font X * structure. X */ X#define MaxFontName 10 X X#ifndef DEFAULT_TYPESETTER X#ifdef SUNTOOLS X#define DEFAULT_TYPESETTER "sun" X#else /* ! SUNTOOLS */ X#define DEFAULT_TYPESETTER "psc" X#endif /* SUNTOOLS */ X#endif DEFAULT_TYPESETTER X X#define WARNING 0 /* Print Message and Return */ X#define FATAL 1 /* Print Message and Leave */ X X#define PAGE_WIDTH 8.5 X#define PAGE_HEIGHT 11 X#define PAGE_PIXEL_WIDTH (int)(SUNRES*PAGE_WIDTH) X#define PAGE_PIXEL_HEIGHT (int)(SUNRES*PAGE_HEIGHT) X X/* X * Fast comparison of strings - will often save us a procedure call at the X * cost of a few extra instructions. Macro has SIDE-EFFECTS X */ X#define STREQ(a, b) ((*(a) == *(b)) && (strcmp(a, b) == 0)) X Xstruct FontBitStruct { X char Name[MaxFontName]; X int Size; X#ifdef SUNTOOLS X struct pixfont *Bits; X#else SUNTOOLS X XFontStruct *Bits; X#endif X char *FileName; X struct FontBitStruct *NextFont; X struct FontBitStruct *NextSize; X}; X Xstruct Typesetter { X char Name[MAXNAME]; /* Name of this typesetter */ X X struct dev Device; /* Ditroff Typesetter description */ X X short *PointSizeTable; /* Map Pointsize number to real # */ X X short *SpecialCharacterNumber;/* Map special character number into X an index for Name Array */ X char *SpecialCharacterName; /* Names of each special character X */ X char **WidthTable; /* Width of each character X (indexed by font and character) */ X char **CodeTable; /* Typesetter code for each char X (indexed by font and character) */ X char **AsciiTable; /* Mapping between ascii (or special X character number) and index into X width and code tables above. */ X struct Font *FontInformation[NFONTS]; X X struct FontBitStruct FontBitHead; /* All the bits for all the fonts X that are known for this X typesetter. */ X struct Typesetter *NextTypesetter; X}; X Xextern int size, font, linmod, linethickness, HorizontalPosition; Xextern int VerticalPosition, DeviceResolution, LineNumber; Xextern float ditsiz; X/*extern int SUNRES /* Dots per inch on Sun Screen */ X Xextern char DeviceName[]; X Xextern struct FontBitStruct *CurrentFont, *VirtualLoadFont(); X Xextern struct Typesetter *UserTypesetter, *OutputTypesetter, *LoadDevice(); END_OF_FILE if test 4834 -ne `wc -c <'xtroff/suntroff.h'`; then echo shar: \"'xtroff/suntroff.h'\" unpacked with wrong size! fi # end of 'xtroff/suntroff.h' fi echo shar: End of archive 7 \(of 18\). cp /dev/null ark7isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 18 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0