xref: /original-bsd/usr.sbin/sendmail/src/trace.c (revision 5b10f61c)
1 /*
2 **  Sendmail
3 **  Copyright (c) 1983  Eric P. Allman
4 **  Berkeley, California
5 **
6 **  Copyright (c) 1983 Regents of the University of California.
7 **  All rights reserved.  The Berkeley software License Agreement
8 **  specifies the terms and conditions for redistribution.
9 */
10 
11 #ifndef lint
12 static char	SccsId[] = "@(#)trace.c	5.2 (Berkeley) 06/07/85";
13 #endif not lint
14 
15 # include <ctype.h>
16 # include "sendmail.h"
17 
18 /*
19 **  TtSETUP -- set up for trace package.
20 **
21 **	Parameters:
22 **		vect -- pointer to trace vector.
23 **		size -- number of flags in trace vector.
24 **		defflags -- flags to set if no value given.
25 **
26 **	Returns:
27 **		none
28 **
29 **	Side Effects:
30 **		environment is set up.
31 */
32 
33 u_char		*tTvect;
34 int		tTsize;
35 static char	*DefFlags;
36 
37 tTsetup(vect, size, defflags)
38 	u_char *vect;
39 	int size;
40 	char *defflags;
41 {
42 	tTvect = vect;
43 	tTsize = size;
44 	DefFlags = defflags;
45 }
46 /*
47 **  TtFLAG -- process an external trace flag description.
48 **
49 **	Parameters:
50 **		s -- the trace flag.
51 **
52 **	Returns:
53 **		none.
54 **
55 **	Side Effects:
56 **		sets/clears trace flags.
57 */
58 
59 tTflag(s)
60 	register char *s;
61 {
62 	int first, last;
63 	register int i;
64 
65 	if (*s == '\0')
66 		s = DefFlags;
67 
68 	for (;;)
69 	{
70 		/* find first flag to set */
71 		i = 0;
72 		while (isdigit(*s))
73 			i = i * 10 + (*s++ - '0');
74 		first = i;
75 
76 		/* find last flag to set */
77 		if (*s == '-')
78 		{
79 			i = 0;
80 			while (isdigit(*++s))
81 				i = i * 10 + (*s - '0');
82 		}
83 		last = i;
84 
85 		/* find the level to set it to */
86 		i = 1;
87 		if (*s == '.')
88 		{
89 			i = 0;
90 			while (isdigit(*++s))
91 				i = i * 10 + (*s - '0');
92 		}
93 
94 		/* clean up args */
95 		if (first >= tTsize)
96 			first = tTsize - 1;
97 		if (last >= tTsize)
98 			last = tTsize - 1;
99 
100 		/* set the flags */
101 		while (first <= last)
102 			tTvect[first++] = i;
103 
104 		/* more arguments? */
105 		if (*s++ == '\0')
106 			return;
107 	}
108 }
109