/* * Copyright (c) 1988 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that this notice is preserved and that due credit is given * to the University of California at Berkeley. The name of the University * may not be used to endorse or promote products derived from this * software without specific prior written permission. This software * is provided ``as is'' without express or implied warranty. * * Sendmail * Copyright (c) 1983 Eric P. Allman * Berkeley, California */ #if !defined(lint) && !defined(NOSCCS) static char sccsid[] = "@(#)trace.c 5.4 (Berkeley) 3/13/88"; #endif /* not lint */ # include "sendmail.h" /* ** 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; } }