|
|
1.1 root 1: /* psaptest.c - test out -lpsap */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/psap/RCS/psaptest.c,v 7.0 89/11/23 22:13:26 mrose Rel $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/psap/RCS/psaptest.c,v 7.0 89/11/23 22:13:26 mrose Rel $
9: *
10: *
11: * $Log: psaptest.c,v $
12: * Revision 7.0 89/11/23 22:13:26 mrose
13: * Release 6.0
14: *
15: */
16:
17: /*
18: * NOTICE
19: *
20: * Acquisition, use, and distribution of this module and related
21: * materials are subject to the restrictions of a license agreement.
22: * Consult the Preface in the User's Manual for the full terms of
23: * this agreement.
24: *
25: */
26:
27:
28: #include <stdio.h>
29: #include "psap.h"
30: #include "tailor.h"
31:
32: /* */
33:
34: static enum {
35: ps2pl, ps2ps, pl2pl, pl2ps
36: } mode;
37:
38: /* */
39:
40: /* ARGSUSED */
41:
42: main (argc, argv, envp)
43: int argc;
44: char **argv,
45: **envp;
46: {
47: char *cp;
48: register PE pe;
49: register PS ps;
50:
51: argc--, argv++;
52: if (argc != 1) {
53: usage: ;
54: fprintf (stderr, "usage: psaptest [ps2pl | ps2ps | pl2pl | pl2ps]\n");
55: exit (1);
56: }
57:
58: if (strcmp (*argv, "version") == 0) {
59: printf ("%s\n", psapversion);
60: exit (0);
61: }
62:
63: if ((cp = getenv ("PSAPTEST")) && *cp) {
64: psap_log -> ll_events = atoi (cp);
65: psap_log -> ll_stat |= LLOGTTY;
66: }
67:
68: if (strcmp (*argv, "binary") == 0) {
69: int i;
70: char buffer[BUFSIZ],
71: packet[BUFSIZ];
72:
73: while (fgets (buffer, sizeof buffer, stdin)) {
74: if (*buffer == ' ')
75: (void) strncpy (packet, buffer + 1, i = strlen (buffer) - 2);
76: else
77: i = implode ((u_char *) packet, buffer, strlen (buffer) - 1);
78: (void) fwrite (packet, sizeof *packet, i, stdout);
79: }
80:
81: exit (0);
82: }
83:
84: if (strcmp (*argv, "ps2pl") == 0)
85: mode = ps2pl;
86: else
87: if (strcmp (*argv, "ps2ps") == 0)
88: mode = ps2ps;
89: else
90: if (strcmp (*argv, "pl2pl") == 0)
91: mode = pl2pl;
92: else
93: if (strcmp (*argv, "pl2ps") == 0)
94: mode = pl2ps;
95: else
96: goto usage;
97:
98: for (;;) {
99: if ((ps = ps_alloc (std_open)) == NULLPS) {
100: fprintf (stderr, "ps_alloc(stdin): you lose\n");
101: exit (1);
102: }
103: if (std_setup (ps, stdin) == NOTOK)
104: ps_die (ps, "std_setup(stdin)");
105:
106: switch (mode) {
107: case ps2pl:
108: case ps2ps:
109: if ((pe = ps2pe (ps)) == NULLPE)
110: if (ps -> ps_errno)
111: ps_die (ps, "ps2pe");
112: else
113: exit (0);
114: break;
115:
116: case pl2ps:
117: case pl2pl:
118: if ((pe = pl2pe (ps)) == NULLPE)
119: if (ps -> ps_errno)
120: ps_die (ps, "pl2pe");
121: else
122: exit (0);
123: break;
124: }
125:
126: ps_free (ps);
127:
128: if ((ps = ps_alloc (std_open)) == NULLPS) {
129: fprintf (stderr, "ps_alloc(stdout): you lose\n");
130: exit (1);
131: }
132: if (std_setup (ps, stdout) == NOTOK)
133: ps_die (ps, "std_setup(stdout)");
134:
135: switch (mode) {
136: case ps2ps:
137: case pl2ps:
138: if (pe2ps (ps, pe) == NOTOK)
139: ps_die (ps, "pe2ps");
140: break;
141:
142: case pl2pl:
143: case ps2pl:
144: if (pe2pl (ps, pe) == NOTOK)
145: ps_die (ps, "pe2pl");
146: break;
147: }
148:
149: ps_free (ps);
150: }
151: }
152:
153: /* ERRORS */
154:
155: static ps_die (ps, s)
156: register PS ps;
157: register char *s;
158: {
159: fprintf (stderr, "%s: %s\n", s, ps_error (ps -> ps_errno));
160: exit (1);
161: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.