1: /*
2: * Copyright (c) 1988 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that this notice is preserved and that due credit is given
7: * to the University of California at Berkeley. The name of the University
8: * may not be used to endorse or promote products derived from this
9: * software without specific prior written permission. This software
10: * is provided ``as is'' without express or implied warranty.
11: *
12: * Sendmail
13: * Copyright (c) 1983 Eric P. Allman
14: * Berkeley, California
15: */
16:
17: #if !defined(lint) && !defined(NOSCCS)
18: static char sccsid[] = "@(#)trace.c 5.4 (Berkeley) 3/13/88";
19: #endif /* not lint */
20:
21: # include "sendmail.h"
22:
23: /*
24: ** TtSETUP -- set up for trace package.
25: **
26: ** Parameters:
27: ** vect -- pointer to trace vector.
28: ** size -- number of flags in trace vector.
29: ** defflags -- flags to set if no value given.
30: **
31: ** Returns:
32: ** none
33: **
34: ** Side Effects:
35: ** environment is set up.
36: */
37:
38: u_char *tTvect;
39: int tTsize;
40: static char *DefFlags;
41:
42: tTsetup(vect, size, defflags)
43: u_char *vect;
44: int size;
45: char *defflags;
46: {
47: tTvect = vect;
48: tTsize = size;
49: DefFlags = defflags;
50: }
51: /*
52: ** TtFLAG -- process an external trace flag description.
53: **
54: ** Parameters:
55: ** s -- the trace flag.
56: **
57: ** Returns:
58: ** none.
59: **
60: ** Side Effects:
61: ** sets/clears trace flags.
62: */
63:
64: tTflag(s)
65: register char *s;
66: {
67: int first, last;
68: register int i;
69:
70: if (*s == '\0')
71: s = DefFlags;
72:
73: for (;;)
74: {
75: /* find first flag to set */
76: i = 0;
77: while (isdigit(*s))
78: i = i * 10 + (*s++ - '0');
79: first = i;
80:
81: /* find last flag to set */
82: if (*s == '-')
83: {
84: i = 0;
85: while (isdigit(*++s))
86: i = i * 10 + (*s - '0');
87: }
88: last = i;
89:
90: /* find the level to set it to */
91: i = 1;
92: if (*s == '.')
93: {
94: i = 0;
95: while (isdigit(*++s))
96: i = i * 10 + (*s - '0');
97: }
98:
99: /* clean up args */
100: if (first >= tTsize)
101: first = tTsize - 1;
102: if (last >= tTsize)
103: last = tTsize - 1;
104:
105: /* set the flags */
106: while (first <= last)
107: tTvect[first++] = i;
108:
109: /* more arguments? */
110: if (*s++ == '\0')
111: return;
112: }
113: }
Defined functions
Defined variables