Fix mbuf handling for unsupported operations
[unix-history] / usr / src / usr.bin / plot / plottoa.c
CommitLineData
0d4fad24
RC
1#ifndef lint
2static char sccsid[] = "@(#)plottoa.c 4.1 (Berkeley) %G%";
3#endif
4
5/*
6 * Convert the standard plot input into a readable form for debugging.
7 */
8
9#include <stdio.h>
10
11float deltx;
12float delty;
13
14main(argc, argv)
15char **argv;
16{
17 int std=1;
18 FILE *fin;
19
20 while(argc-- > 1) {
21 if(*argv[1] == '-')
22 switch(argv[1][1]) {
23 case 'l':
24 deltx = atoi(&argv[1][2]) - 1;
25 break;
26 case 'w':
27 delty = atoi(&argv[1][2]) - 1;
28 break;
29 }
30 else {
31 std = 0;
32 if ((fin = fopen(argv[1], "r")) == NULL) {
33 fprintf(stderr, "can't open %s\n", argv[1]);
34 exit(1);
35 }
36 fplt(fin);
37 fclose(fin);
38 }
39 argv++;
40 }
41 if (std)
42 fplt( stdin );
43 exit(0);
44}
45
46
47fplt(fin)
48FILE *fin;
49{
50 int c;
51 char s[256];
52 int xi,yi,x0,y0,x1,y1,r,dx,n,i;
53 int pat[256];
54
55 openpl();
56 while((c = getc(fin)) != EOF){
57 switch(c){
58 case 'm':
59 xi = getsi(fin);
60 yi = getsi(fin);
61 move(xi,yi);
62 break;
63 case 'l':
64 x0 = getsi(fin);
65 y0 = getsi(fin);
66 x1 = getsi(fin);
67 y1 = getsi(fin);
68 line(x0,y0,x1,y1);
69 break;
70 case 't':
71 gets(s,fin);
72 label(s);
73 break;
74 case 'e':
75 erase();
76 break;
77 case 'p':
78 xi = getsi(fin);
79 yi = getsi(fin);
80 point(xi,yi);
81 break;
82 case 'n':
83 xi = getsi(fin);
84 yi = getsi(fin);
85 cont(xi,yi);
86 break;
87 case 's':
88 x0 = getsi(fin);
89 y0 = getsi(fin);
90 x1 = getsi(fin);
91 y1 = getsi(fin);
92 space(x0,y0,x1,y1);
93 break;
94 case 'a':
95 xi = getsi(fin);
96 yi = getsi(fin);
97 x0 = getsi(fin);
98 y0 = getsi(fin);
99 x1 = getsi(fin);
100 y1 = getsi(fin);
101 arc(xi,yi,x0,y0,x1,y1);
102 break;
103 case 'c':
104 xi = getsi(fin);
105 yi = getsi(fin);
106 r = getsi(fin);
107 circle(xi,yi,r);
108 break;
109 case 'f':
110 gets(s,fin);
111 linemod(s);
112 break;
113 case 'd':
114 xi = getsi(fin);
115 yi = getsi(fin);
116 dx = getsi(fin);
117 n = getsi(fin);
118 for(i=0; i<n; i++)pat[i] = getsi(fin);
119 dot(xi,yi,dx,n,pat);
120 break;
121 }
122 }
123 closepl();
124}
125
126/* get an integer stored in 2 ascii bytes. */
127getsi(fin)
128FILE *fin;
129{
130 short a, b;
131 if((b = getc(fin)) == EOF)
132 return(EOF);
133 if((a = getc(fin)) == EOF)
134 return(EOF);
135 a = a<<8;
136 return(a|b);
137}
138
139gets(s,fin)
140char *s;
141FILE *fin;
142{
143 for( ; *s = getc(fin); s++)
144 if(*s == '\n')
145 break;
146 *s = '\0';
147 return;
148}
149
150/* Print out the arguments to plot routines. */
151
152space(x0,y0,x1,y1)
153int x0,y0,x1,y1;
154{
155 printf( "s %d %d %d %d\n", x0, y0, x1, y1 );
156}
157
158openpl()
159{
160}
161
162closepl()
163{
164}
165
166erase()
167{
168 printf( "e\n" );
169}
170
171move(xi,yi)
172int xi,yi;
173{
174 printf( "m %d %d\n", xi, yi );
175}
176
177cont(xi,yi)
178int xi,yi;
179{
180 printf( "n %d %d\n", xi, yi );
181}
182
183line(x0,y0,x1,y1)
184int x0,y0,x1,y1;
185{
186 printf( "l %d %d %d %d\n", x0, y0, x1, y1 );
187}
188
189point(xi,yi)
190int xi,yi;
191{
192 printf( "p %d %d\n", xi, yi );
193}
194
195label(s)
196char *s;
197{
198 printf( "t%s\n\n", s );
199}
200
201
202arc(xcent,ycent,xbeg,ybeg,xend,yend)
203int xcent,ycent,xbeg,ybeg,xend,yend;
204{
205 printf( "a %d %d %d %d %d %d\n", xcent, ycent, xbeg, ybeg, xend, yend );
206}
207
208circle (xc,yc,r)
209int xc,yc,r;
210{
211 printf( "c %d %d %d\n", xc, yc, r );
212}
213
214linemod( line )
215char *line;
216{
217 printf( "f%s\n\n", line );
218}
219
220/* don't know what this should do */
221dot(xi,yi,dx,n,pat)
222int xi,yi,dx,n;
223char *pat;
224{
225 printf("d %d %d %d %d %s\n\n", xi, yi, dx, n, pat);
226}