Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site ubc-vision.UUCP Path: utzoo!utcsri!ubc-vision!majka From: majka@ubc-vision.UUCP (Marc Majka) Newsgroups: net.sources Subject: Super Plot (5 of 8) Message-ID: <122@ubc-vision.UUCP> Date: Sun, 27-Apr-86 18:50:37 EDT Article-I.D.: ubc-visi.122 Posted: Sun Apr 27 18:50:37 1986 Date-Received: Mon, 28-Apr-86 04:02:26 EDT Organization: UBC Computational Vision Lab, Vancouver, B.C., Canada Lines: 867 - - - CUT - - - CUT - - - CUT - - - CUT - - - CUT - - - CUT - - - CUT - - - #!/bin/sh # # shell archive - extract with /bin/sh # echo Plot archive part 5 of 8 echo echo extracting file pltx.c sed 's/^X//' > pltx.c <<'!FUNKY!STUFF!' X/*************************************************************/ X/* */ X/* Copyright (c) 1986 */ X/* Marc S. Majka - UBC Laboratory for Computational Vision */ X/* */ X/* Permission is hereby granted to copy all or any part of */ X/* this program for free distribution. The author's name */ X/* and this copyright notice must be included in any copy. */ X/* */ X/*************************************************************/ X X#include X Xmain (argc, argv) Xint argc; Xchar *argv[]; X{ X FILE *pfp, *fopen(); X X if (argc > 1) pfp = fopen(argv[1],"r"); X else pfp = stdin; X X if (pfp == NULL) { X fprintf(stderr,"pltx: can't open input plot file\n"); X exit(1); X } X if (argc > 2) plotopen(argv[2]); X else plotopen(""); X X plotdriver(); X plotclose(); X fclose(pfp); X exit(0); X} !FUNKY!STUFF! echo extracting file pltx.man sed 's/^X//' > pltx.man <<'!FUNKY!STUFF!' XPLTX(1) UNIX Programmer's Manual PLTX(1) X X XNAME X pltx - converts plot files to text files X XSYNOPSIS X pltx [plot-file [text-file]] X XDESCRIPTION X pltx reads a plot file and writes a text file. It is the X inverse of txpl(1-UBC). See the manual for fplot for a X description of plot files. X XAUTHOR X Marc Majka !FUNKY!STUFF! echo extracting file rplot.c sed 's/^X//' > rplot.c <<'!FUNKY!STUFF!' X/*************************************************************/ X/* */ X/* Copyright (c) 1986 */ X/* Marc S. Majka - UBC Laboratory for Computational Vision */ X/* */ X/* Permission is hereby granted to copy all or any part of */ X/* this program for free distribution. The author's name */ X/* and this copyright notice must be included in any copy. */ X/* */ X/*************************************************************/ X X#include X Xgetarg(desig,argc,argv) Xint argc; Xchar *desig, *argv[]; X{ X int argn; X char minus[2], lookfor[12]; X X strcpy(minus,"-"); X strcpy(lookfor,minus); X strcat(lookfor,desig); X X for (argn = 1; argn < argc; argn++) X if (!strcmp(argv[argn],lookfor)) return(argn); X X return (0); X} X X#define GETARG(X) getarg(X,argc,argv) X Xmain (argc, argv) Xint argc; Xchar *argv[]; X{ X FILE *plt, *fopen(); X int argn, nargs, nrows, ncols, sized; X char nullname[2]; X X if (GETARG("help")) { X printf("useage: rpl [[plotfile] rasterfile] [-r n] [-c n]\n"); X printf(" plotfile is the input plot file\n"); X printf(" rasterfile is the output raster file\n"); X printf(" -r nrows [default = 256]\n"); X printf(" -c ncols [default = 256]\n"); X exit(0); X } X X nargs = argc - 1; X sized = 0; X X nrows = GETARG("r"); X if (nrows) { X nrows = atoi(argv[++nrows]); X sized = 1; X nargs -= 2; X } X ncols = GETARG("c"); X if (ncols) { X ncols = atoi(argv[++ncols]); X sized = 1; X nargs -= 2; X } X else ncols = nrows; X X if (nargs == 0) { X plt = stdin; X plotopen(""); X } X else if (nargs == 1) { X plt = stdin; X plotopen(argv[1]); X } X else { X plt = fopen(argv[1],"r"); X plotopen(argv[2]); X } X X if (plt == NULL) { X printf("rpl: can't open plot file\n"); X exit(1); X } X X if (sized) frame(0,0,nrows-1,ncols-1,0); X plotdriver(plt); X plotclose(); X exit(0); X} !FUNKY!STUFF! echo extracting file rplot.man sed 's/^X//' > rplot.man <<'!FUNKY!STUFF!' XRPLOT(1) UNIX Programmer's Manual RPLOT(1) X XNAME X rplot - renders a plot file in a memory raster. X XSYNOPSIS X rplot [[plotfile] rasterfile] [-r n] [-c n] X XDESCRIPTION X rplot reads a plot file, and executes the plot commands, X using a file for output, rather than a device. If two X arguments are given, the first should be a plot file, and X the second will be used as the output file. If only one X argument is given, it is used as the output file, and X plot commands are read from standard input. If none are X given, output will be to standard output. See the manual X page for fplot(3) for a description of the plot file X format used by rplot. X X Any options to must be given after the input and output file X names. The options recognized are: X X -r the next parameter given is to be used as the number of X rows in the output raster. A frame command will override X this setting. X X -c sets the number of output columns, as above. If the -r X option is given without a -c option, the number of X columns will be the same as the number of rows. X XLIMITATIONS X Maximum image size is 512 x 512 x 32 bpp. Can be recompiled X if you need more. X XAUTHOR X Marc Majka !FUNKY!STUFF! echo extracting file txfns.c sed 's/^X//' > txfns.c <<'!FUNKY!STUFF!' X/*************************************************************/ X/* */ X/* Copyright (c) 1986 */ X/* Marc S. Majka - UBC Laboratory for Computational Vision */ X/* */ X/* Permission is hereby granted to copy all or any part of */ X/* this program for free distribution. The author's name */ X/* and this copyright notice must be included in any copy. */ X/* */ X/*************************************************************/ X X#include X Xstatic FILE *tfp; X Xplotopen(fname) Xchar *fname; X{ X FILE *fopen(); X X if (fname[0] == '\0') tfp = stdout; X else tfp = fopen(fname,"w"); X X if (tfp == NULL) { X fprintf(stderr,"plotopen: can't open output text file %s\n",fname); X exit(1); X } X} X Xplotclose() X{ X fclose(tfp); X} X Xmove(x1,y1) Xshort x1,y1; X{ X fprintf(tfp,"move %hd %hd\n",x1,y1); X} X Xcont(x1,y1) Xshort x1,y1; X{ X fprintf(tfp,"cont %hd %hd\n",x1,y1); X} X Xbspline(k,n,v) Xshort k, n, *v; X{ X short vn, indx, x, y; X X fprintf(tfp,"bspline %hd %hd\n",k,n); X indx = 0; X for (vn = 0; vn < n; vn++) { X x = v[indx++]; y = v[indx++]; X fprintf(tfp," %hd %hd\n",x,y); X } X} X Xpolygon(n,v) Xshort n, *v; X{ X short vn, indx, x, y; X X fprintf(tfp,"polygon %hd\n",n); X indx = 0; X for (vn = 0; vn < n; vn++) { X x = v[indx++]; y = v[indx++]; X fprintf(tfp," %hd %hd\n",x,y); X } X} X Xchain(n,v) Xshort n, *v; X{ X short vn, indx, x, y; X X fprintf(tfp,"chain %hd\n",n); X indx = 0; X for (vn = 0; vn < n; vn++) { X x = v[indx++]; y = v[indx++]; X fprintf(tfp," %hd %hd\n",x,y); X } X} X Xmoverel(x1,y1) Xshort x1,y1; X{ X fprintf(tfp,"moverel %hd %hd\n",x1,y1); X} X Xcontrel(x1,y1) Xshort x1,y1; X{ X fprintf(tfp,"contrel %hd %hd\n",x1,y1); X} X Xarea(x1,y1) Xshort x1,y1; X{ X fprintf(tfp,"area %hd %hd\n",x1,y1); X} X Xpoint(x1,y1) Xshort x1,y1; X{ X fprintf(tfp,"point %hd %hd\n",x1,y1); X} X Xline(x1,y1,x2,y2) Xshort x1,y1,x2,y2; X{ X fprintf(tfp,"line %hd %hd %hd %hd\n",x1,y1,x2,y2); X} X Xlabel(str) Xchar *str; X{ X fprintf(tfp,"label %s\n",str); X} X Xclabel(str) Xchar *str; X{ X fprintf(tfp,"clabel %s\n",str); X} X Xblabel(w,h,str) Xshort w,h; Xchar *str; X{ X fprintf(tfp,"blabel %hd %hd %s\n",w,h,str); X} X Xllabel(w,h,str) Xshort w,h; Xchar *str; X{ X fprintf(tfp,"llabel %hd %hd %s\n",w,h,str); X} X Xcomment(str) Xchar *str; X{ X fprintf(tfp,"comment %s\n",str); X} X Xfont(str) Xchar *str; X{ X fprintf(tfp,"font %s\n",str); X} X Xfspec(ws,hs,theta) Xdouble ws,hs,theta; X{ X fprintf(tfp,"fspec %lf %lf %lf\n",ws,hs,theta); X} X Xfillpat(pn,x1,y1,str) Xshort pn,x1,y1; Xchar *str; X{ X int i,j; X X fprintf(tfp,"fillpat %hd %hd %hd\n",pn,x1,y1); X pn = 0; X for (i = 0; i < x1; i++) { X fprintf(tfp,"\t"); X for (j = 0; j < y1; j++) fprintf(tfp,"%c",str[pn++]); X fprintf(tfp,"\n"); X } X} X Xsetpat(pn) Xshort pn; X{ X fprintf(tfp,"setpat %hd\n",pn); X} X Xpensize(pn) Xshort pn; X{ X fprintf(tfp,"pensize %hd\n",pn); X} X Xarc(x1,y1,x2,y2,x3,y3) Xshort x1,y1,x2,y2,x3,y3; X{ X fprintf(tfp,"arc %hd %hd %hd %hd %hd %hd\n",x1,y1,x2,y2,x3,y3); X} X Xcircle(x1,y1,r) Xshort x1,y1,r; X{ X fprintf(tfp,"circle %hd %hd %hd\n",x1,y1,r); X} X Xerase() X{ X fprintf(tfp,"erase\n"); X} X Xstartp() X{ X fprintf(tfp,"startp\n"); X} X Xendp() X{ X fprintf(tfp,"endp\n"); X} X Xlinemod(str) Xchar *str; X{ X fprintf(tfp,"linemod %s\n",str); X} X Xframe(x1,y1,x2,y2,hv) Xshort x1,y1,x2,y2,hv; X{ X fprintf(tfp,"frame %hd %hd %hd %hd %hd\n",x1,y1,x2,y2,hv); X} X Xbppin(b) Xshort b; X{ X fprintf(tfp,"bppin %hd\n",b); X} X Xbppout(b) Xshort b; X{ X fprintf(tfp,"bppout %hd\n",b); X} X Xspace(x1,y1,x2,y2,hv) Xshort x1,y1,x2,y2,hv; X{ X fprintf(tfp,"space %hd %hd %hd %hd %hd\n",x1,y1,x2,y2,hv); X} X Xgray(g) Xshort g; X{ X fprintf(tfp,"gray %hd\n",g); X} X Xcolour(red,green,blue) Xshort red,green,blue; X{ X fprintf(tfp,"colour %hd %hd %hd\n",red,green,blue); X} !FUNKY!STUFF! echo extracting file txpl.c sed 's/^X//' > txpl.c <<'!FUNKY!STUFF!' X/*************************************************************/ X/* */ X/* Copyright (c) 1986 */ X/* Marc S. Majka - UBC Laboratory for Computational Vision */ X/* */ X/* Permission is hereby granted to copy all or any part of */ X/* this program for free distribution. The author's name */ X/* and this copyright notice must be included in any copy. */ X/* */ X/*************************************************************/ X X#include X Xmain (argc, argv) Xint argc; Xchar *argv[]; X{ X char str[1024], comm[16], nl, c; X int i, patn; X short x1, y1, x2, y2, x3, y3, r, gray, red, green, blue, hv, pn, n, k; X FILE *tfp, *pfp, *fopen(); X double ws, hs, theta; X X if (argc > 1) tfp = fopen(argv[1],"r"); X else tfp = stdin; X X if (tfp == NULL) { X fprintf(stderr,"txpl: can't open input text file\n"); X exit(1); X } X X if (argc > 2) pfp = fopen(argv[2],"w"); X else pfp = stdout; X X if (pfp == NULL) { X fprintf(stderr,"txpl: can't open output plot file\n"); X exit(1); X } X X while (fscanf(tfp,"%s", comm) != EOF) { X if (0 == strcmp(comm,"move")) { X fscanf(tfp,"%hd%hd", X &x1,&y1); X fprintf(pfp,"m"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"cont")) { X fscanf(tfp,"%hd%hd", X &x1,&y1); X fprintf(pfp,"n"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"bspline")) { X fscanf(tfp,"%hd",&k); X fscanf(tfp,"%hd",&n); X fprintf(pfp,"k"); X fwrite(&k,2,1,pfp); X fwrite(&n,2,1,pfp); X for (i = 0; i < n; i++) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X } X fflush(pfp); X } X else if (0 == strcmp(comm,"bsphd")) { X fscanf(tfp,"%hd",&k); X fscanf(tfp,"%hd",&n); X fprintf(pfp,"k"); X fwrite(&k,2,1,pfp); X fwrite(&n,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"bsppt")) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"polygon")) { X fscanf(tfp,"%hd",&n); X fprintf(pfp,"o"); X fwrite(&n,2,1,pfp); X for (i = 0; i < n; i++) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X } X fflush(pfp); X } X else if (0 == strcmp(comm,"polyhd")) { X fscanf(tfp,"%hd",&n); X fprintf(pfp,"o"); X fwrite(&n,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"polypt")) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"chain")) { X fscanf(tfp,"%hd",&n); X fprintf(pfp,"L"); X fwrite(&n,2,1,pfp); X for (i = 0; i < n; i++) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X } X fflush(pfp); X } X else if (0 == strcmp(comm,"chainhd")) { X fscanf(tfp,"%hd",&n); X fprintf(pfp,"L"); X fwrite(&n,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"chainpt")) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"moverel")) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fprintf(pfp,"M"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"contrel")) { X fscanf(tfp,"%hd%hd", X &x1,&y1); X fprintf(pfp,"N"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"point")) { X fscanf(tfp,"%hd%hd", X &x1,&y1); X fprintf(pfp,"p"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"area")) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fprintf(pfp,"A"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"line")) { X fscanf(tfp,"%hd%hd%hd%hd", X &x1,&y1,&x2,&y2); X fprintf(pfp,"l"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fwrite(&x2,2,1,pfp); X fwrite(&y2,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"label")) { X fscanf(tfp,"%1s",&c); X i = 0; X X while (c != '\n') { X str[i++] = c; X fscanf(tfp,"%c",&c); X } X str[i] = '\0'; X fprintf(pfp,"t%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"clabel")) { X fscanf(tfp,"%1s",&c); X i = 0; X X while (c != '\n') { X str[i++] = c; X fscanf(tfp,"%c",&c); X } X str[i] = '\0'; X fprintf(pfp,"%%%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"blabel")) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fscanf(tfp,"%1s",&c); X i = 0; X X while (c != '\n') { X str[i++] = c; X fscanf(tfp,"%c",&c); X } X str[i] = '\0'; X fprintf(pfp,"U"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fprintf(pfp,"%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"llabel")) { X fscanf(tfp,"%hd%hd",&x1,&y1); X fscanf(tfp,"%1s",&c); X i = 0; X X while (c != '\n') { X str[i++] = c; X fscanf(tfp,"%c",&c); X } X str[i] = '\0'; X fprintf(pfp,"V"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fprintf(pfp,"%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"comment")) { X fscanf(tfp,"%1s",&c); X i = 0; X X while (c != '\n') { X str[i++] = c; X fscanf(tfp,"%c",&c); X } X str[i] = '\0'; X fprintf(pfp,";%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"font")) { X fscanf(tfp,"%s",str); X fprintf(pfp,"X%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"fspec")) { X fscanf(tfp,"%lf%lf%lf",&ws,&hs,&theta); X fprintf(pfp,"S"); X fwrite(&ws,4,1,pfp); X fwrite(&hs,4,1,pfp); X fwrite(&theta,4,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"fillpat")) { X fscanf(tfp,"%hd%hd%hd",&pn,&x1,&y1); X fscanf(tfp,"%1s",&c); X patn = x1 * y1; X i = 0; X X while (i < patn) { X if ((c != '\n') && (c != ' ') && (c != '\t')) X str[i++] = c; X fscanf(tfp,"%c",&c); X } X str[i] = '\0'; X fprintf(pfp,"P"); X fwrite(&pn,2,1,pfp); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fprintf(pfp,"%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"setpat")) { X fscanf(tfp,"%hd",&pn); X fprintf(pfp,"T"); X fwrite(&pn,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"pensize")) { X fscanf(tfp,"%hd",&pn); X fprintf(pfp,"d"); X fwrite(&pn,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"arc")) { X fscanf(tfp, X "%hd%hd%hd%hd%hd%hd", X &x1,&y1,&x2,&y2,&x3,&y3); X fprintf(pfp,"a"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fwrite(&x2,2,1,pfp); X fwrite(&y2,2,1,pfp); X fwrite(&x3,2,1,pfp); X fwrite(&y3,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"circle")) { X fscanf(tfp,"%hd%hd%hd", X &x1,&y1,&r); X fprintf(pfp,"c"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fwrite(&r,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"erase")) { X fprintf(pfp,"e"); X fflush(pfp); X } X else if (0 == strcmp(comm,"startp")) { X fprintf(pfp,"["); X fflush(pfp); X } X else if (0 == strcmp(comm,"endp")) { X fprintf(pfp,"]"); X fflush(pfp); X } X else if (0 == strcmp(comm,"linemod")) { X fscanf(tfp,"%s", X str); X fprintf(pfp,"f%s\n",str); X fflush(pfp); X } X else if (0 == strcmp(comm,"frame")) { X fscanf(tfp,"%hd%hd%hd%hd%hd", X &x1,&y1,&x2,&y2,&hv); X fprintf(pfp,"F"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fwrite(&x2,2,1,pfp); X fwrite(&y2,2,1,pfp); X fwrite(&hv,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"bpp")) { X fscanf(tfp,"%hd",&x1); X fprintf(stderr,"warning: bpp command is out of date.\n"); X fprintf(stderr," please change to bppin(b) or bppout(b)\n"); X fprintf(stderr," see the manual entry for fplot(3-UBC)\n"); X fprintf(stderr," assuming bppin %hd for bpp %hd\n",x1,x1); X fprintf(pfp,"B"); X fwrite(&x1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"bppin")) { X fscanf(tfp,"%hd",&x1); X fprintf(pfp,"B"); X fwrite(&x1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"bppout")) { X fscanf(tfp,"%hd",&x1); X fprintf(pfp,"b"); X fwrite(&x1,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"space")) { X fscanf(tfp,"%hd%hd%hd%hd%hd", X &x1,&y1,&x2,&y2,&hv); X fprintf(pfp,"s"); X fwrite(&x1,2,1,pfp); X fwrite(&y1,2,1,pfp); X fwrite(&x2,2,1,pfp); X fwrite(&y2,2,1,pfp); X fwrite(&hv,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"gray")) { X fscanf(tfp,"%hd",&gray); X fprintf(pfp,"g"); X fwrite(&gray,2,1,pfp); X fflush(pfp); X } X else if (0 == strcmp(comm,"colour")) { X fscanf(tfp,"%hd",&red); X fscanf(tfp,"%hd",&green); X fscanf(tfp,"%hd",&blue); X fprintf(pfp,"C"); X fwrite(&red,2,1,pfp); X fwrite(&green,2,1,pfp); X fwrite(&blue,2,1,pfp); X fflush(pfp); X } X else { X fprintf(stderr,"txpl: unknown command %s\n", comm); X while ('\n' != (c = getc(tfp))); X } X } X fclose(pfp); X exit(0); X} X !FUNKY!STUFF! echo extracting file txpl.man sed 's/^X//' > txpl.man <<'!FUNKY!STUFF!' XTXPL(1) UNIX Programmer's Manual TXPL(1) X XNAME X txpl - converts text files to plot files X XSYNOPSIS X txpl [text-file [plot-file]] X XDESCRIPTION X txpl reads a text file and writes a plot file. It is the X inverse of pltx(1). The input text file should have 1 X command per line, with commands and operands separated by at X least one space. See the manual page for fplot(3) for a X specification of plot files. X XAUTHOR X Marc Majka !FUNKY!STUFF! echo echo finished part 5 of 8