|
|
1.1 root 1: -- mpp.py - test out PEPY
2:
3: -- $Header: /f/osi/pepy/RCS/mpp.py,v 7.0 89/11/23 22:11:43 mrose Rel $
4: --
5: --
6: -- $Log: mpp.py,v $
7: -- Revision 7.0 89/11/23 22:11:43 mrose
8: -- Release 6.0
9: --
10:
11: --
12: -- NOTICE
13: --
14: -- Acquisition, use, and distribution of this module and related
15: -- materials are subject to the restrictions of a license agreement.
16: -- Consult the Preface in the User's Manual for the full terms of
17: -- this agreement.
18: --
19: --
20:
21:
22: MPP DEFINITIONS ::=
23:
24: %{
25: #ifndef lint
26: static char *rcsid = "$Header: /f/osi/pepy/RCS/mpp.py,v 7.0 89/11/23 22:11:43 mrose Rel $";
27: #endif
28:
29: #include <stdio.h>
30:
31:
32: #define ps_advise(ps, f) \
33: advise (NULLCP, "%s: %s", (f), ps_error ((ps) -> ps_errno))
34:
35: /* DATA */
36:
37: static char *myname = "mpp";
38:
39: static enum { ps2mpp, pl2mpp } mode = ps2mpp;
40:
41: static enum format { p1, p2, sfd, ean, eanp2 } topfmt = ean;
42:
43:
44: void adios ();
45:
46: /* MAIN */
47:
48: /* ARGSUSED */
49:
50: main (argc, argv, envp)
51: int argc;
52: char **argv,
53: **envp;
54: {
55: register int status = 0;
56: register char *cp;
57: register FILE *fp;
58:
59: if (myname = rindex (argv[0], '/'))
60: myname++;
61: if (myname == NULL || *myname == NULL)
62: myname = argv[0];
63:
64: for (argc--, argv++; cp = *argv; argc--, argv++)
65: if (*cp == '-') {
66: if (strcmp (cp + 1, "ps") == 0) {
67: mode = ps2mpp;
68: continue;
69: }
70: if (strcmp (cp + 1, "pl") == 0) {
71: mode = pl2mpp;
72: continue;
73: }
74: if (strcmp (cp + 1, "p1") == 0) {
75: topfmt = p1;
76: continue;
77: }
78: if (strcmp (cp + 1, "p2") == 0) {
79: topfmt = p2;
80: continue;
81: }
82: if (strcmp (cp + 1, "sfd") == 0) {
83: topfmt = sfd;
84: continue;
85: }
86: if (strcmp (cp + 1, "ean") == 0) {
87: topfmt = ean;
88: continue;
89: }
90: adios (NULLCP, "usage: %s [ -ps | -pl ] [-p1 | -p2 | -sfd | -ean ] [ files... ]",
91: myname);
92: }
93: else
94: break;
95:
96: if (argc == 0)
97: status = process ("(stdin)", stdin);
98: else
99: while (cp = *argv++) {
100: if ((fp = fopen (cp, "r")) == NULL) {
101: advise (cp, "unable to read");
102: status++;
103: continue;
104: }
105: status += process (cp, fp);
106: (void) fclose (fp);
107: }
108:
109: exit (status); /* NOTREACHED */
110: }
111:
112: /* */
113:
114: static int process (file, fp)
115: register char *file;
116: register FILE *fp;
117: {
118: enum format curfmt = topfmt;
119: register PE pe;
120: register PS ps;
121:
122: if ((ps = ps_alloc (std_open)) == NULLPS) {
123: ps_advise (ps, "ps_alloc");
124: return 1;
125: }
126: if (std_setup (ps, fp) == NOTOK) {
127: advise (NULLCP, "%s: std_setup loses", file);
128: return 1;
129: }
130:
131: for (;;) {
132: switch (mode) {
133: case ps2mpp:
134: if ((pe = ps2pe (ps)) == NULLPE)
135: if (ps -> ps_errno) {
136: ps_advise (ps, "ps2pe");
137: you_lose: ;
138: ps_free (ps);
139: return 1;
140: }
141: else {
142: done: ;
143: ps_free (ps);
144: return 0;
145: }
146: break;
147:
148: case pl2mpp:
149: if ((pe = pl2pe (ps)) == NULLPE)
150: if (ps -> ps_errno) {
151: ps_advise (ps, "pl2pe");
152: goto you_lose;
153: }
154: else
155: goto done;
156: break;
157: }
158:
159: switch (curfmt) {
160: case p1:
161: default:
162: (void) print_P1_MPDU (pe, 1, NULLIP, NULLVP, NULLCP);
163: break;
164:
165: case p2:
166: (void) print_P2_UAPDU (pe, 1, NULLIP, NULLVP, NULLCP);
167: break;
168:
169: case sfd:
170: (void) print_SFD_Document (pe, 1, NULLIP, NULLVP, NULLCP);
171: break;
172:
173: case ean:
174: (void) print_EAN_MPDU (pe, 1, NULLIP, NULLVP, NULLCP);
175: curfmt = eanp2;
176: break;
177:
178: case eanp2:
179: (void) print_EAN_UAPDU (pe, 1, NULLIP, NULLVP, NULLCP);
180: curfmt = ean;
181: break;
182: }
183:
184: pe_free (pe);
185: }
186: }
187:
188: /* */
189:
190: %}
191:
192: BEGIN
193:
194: END
195:
196: %{
197:
198: /* ERRORS */
199:
200: #include <varargs.h>
201:
202:
203: #ifndef lint
204: void _advise ();
205:
206:
207: void adios (va_alist)
208: va_dcl
209: {
210: va_list ap;
211:
212: va_start (ap);
213:
214: _advise (ap);
215:
216: va_end (ap);
217:
218: _exit (1);
219: }
220: #else
221: /* VARARGS */
222:
223: void adios (what, fmt)
224: char *what,
225: *fmt;
226: {
227: adios (what, fmt);
228: }
229: #endif
230:
231:
232: #ifndef lint
233: static void advise (va_alist)
234: va_dcl
235: {
236: va_list ap;
237:
238: va_start (ap);
239:
240: _advise (ap);
241:
242: va_end (ap);
243: }
244:
245:
246: static void _advise (ap)
247: va_list ap;
248: {
249: char buffer[BUFSIZ];
250:
251: asprintf (buffer, ap);
252:
253: (void) fflush (stdout);
254:
255: fprintf (stderr, "%s: ", myname);
256: (void) fputs (buffer, stderr);
257: (void) fputc ('\n', stderr);
258:
259: (void) fflush (stderr);
260: }
261: #else
262: /* VARARGS */
263:
264: static void advise (what, fmt)
265: char *what,
266: *fmt;
267: {
268: advise (what, fmt);
269: }
270: #endif
271:
272: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.