|
|
1.1 root 1: /* pe2text.c - write a PE thru a debug filter */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/psap/RCS/pe2text.c,v 7.0 89/11/23 22:12:58 mrose Rel $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/psap/RCS/pe2text.c,v 7.0 89/11/23 22:12:58 mrose Rel $
9: *
10: *
11: * $Log: pe2text.c,v $
12: * Revision 7.0 89/11/23 22:12:58 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: /* LINTLIBRARY */
29:
30: #include <stdio.h>
31: #include "psap.h"
32: #include "logger.h"
33:
34: /* */
35:
36: /* logfile-backed abstract for PStreams */
37:
38: /* ARGSUSED */
39:
40: static int ll_pswrite (ps, data, n, in_line)
41: PS ps;
42: PElementData data;
43: PElementLen n;
44: int in_line;
45: {
46: register LLog *lp = (LLog *) ps -> ps_addr;
47:
48: if (lp -> ll_stat & LLOGTTY) {
49: (void) fflush (stdout);
50:
51: (void) fwrite ((char*) data, sizeof *data, (int) n, stderr);
52: }
53:
54: if (lp -> ll_fd == NOTOK) {
55: if (lp -> ll_stat & (LLOGERR | LLOGTTY))
56: return OK;
57: if (ll_open (lp) == NOTOK)
58: return NOTOK;
59: }
60: else
61: if (ll_check (lp) == NOTOK)
62: return NOTOK;
63:
64: return write (lp -> ll_fd, (char *) data, (int) n);
65: }
66:
67: /* */
68:
69: static int ll_psopen (ps)
70: register PS ps;
71: {
72: ps -> ps_writeP = ll_pswrite;
73:
74: return OK;
75: }
76:
77: #define ll_psetup(ps, lp) ((ps) -> ps_addr = (caddr_t) (lp), OK)
78:
79: /* */
80:
81: void pe2text (lp, pe, rw, cc)
82: register LLog *lp;
83: register PE pe;
84: int rw,
85: cc;
86: {
87: register char *bp;
88: char buffer[BUFSIZ];
89: register PS ps;
90:
91: bp = buffer;
92: (void) sprintf (bp, "%s PE", rw ? "read" : "wrote");
93: bp += strlen (bp);
94: if (pe -> pe_context != PE_DFLT_CTX) {
95: (void) sprintf (bp, ", context %d", pe -> pe_context);
96: bp += strlen (bp);
97: }
98: if (cc != NOTOK) {
99: (void) sprintf (bp, ", length %d", cc);
100: bp += strlen (bp);
101: }
102: LLOG (lp, LLOG_ALL, ("%s", buffer));
103:
104: if ((ps = ps_alloc (ll_psopen)) != NULLPS) {
105: if (ll_psetup (ps, lp) != NOTOK)
106: (void) pe2pl (ps, pe);
107:
108: ps_free (ps);
109: }
110:
111: (void) ll_printf (lp, "-------\n");
112:
113: (void) ll_sync (lp);
114: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.