# include <ctype.h> # include "sendmail.h" SCCSID(@(#)trace.c 4.1 7/25/83); /* ** TtSETUP -- set up for trace package. ** ** Parameters: ** vect -- pointer to trace vector. ** size -- number of flags in trace vector. ** defflags -- flags to set if no value given. ** ** Returns: ** none ** ** Side Effects: ** environment is set up. */ u_char *tTvect; int tTsize; static char *DefFlags; tTsetup(vect, size, defflags) u_char *vect; int size; char *defflags; { tTvect = vect; tTsize = size; DefFlags = defflags; } /* ** TtFLAG -- process an external trace flag description. ** ** Parameters: ** s -- the trace flag. ** ** Returns: ** none. ** ** Side Effects: ** sets/clears trace flags. */ tTflag(s) register char *s; { int first, last; register int i; if (*s == '\0') s = DefFlags; for (;;) { /* find first flag to set */ i = 0; while (isdigit(*s)) i = i * 10 + (*s++ - '0'); first = i; /* find last flag to set */ if (*s == '-') { i = 0; while (isdigit(*++s)) i = i * 10 + (*s - '0'); } last = i; /* find the level to set it to */ i = 1; if (*s == '.') { i = 0; while (isdigit(*++s)) i = i * 10 + (*s - '0'); } /* clean up args */ if (first >= tTsize) first = tTsize - 1; if (last >= tTsize) last = tTsize - 1; /* set the flags */ while (first <= last) tTvect[first++] = i; /* more arguments? */ if (*s++ == '\0') return; } }