diff options
author | peter <peter@FreeBSD.org> | 1998-08-03 05:56:20 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1998-08-03 05:56:20 +0000 |
commit | 329949050501501c130d09efc3aee7c78c6d4f9c (patch) | |
tree | 0772be9f4640bcba9db4a0de9e79a39ad377d80b /contrib/sendmail/src/trace.c | |
download | FreeBSD-src-329949050501501c130d09efc3aee7c78c6d4f9c.zip FreeBSD-src-329949050501501c130d09efc3aee7c78c6d4f9c.tar.gz |
Import sendmail-8.9.1 (slightly trimmed) onto a fresh branch under
src/contrib as per various discussions. I will copy across our changes
and then point the Makefiles across once the dust has settled..
Diffstat (limited to 'contrib/sendmail/src/trace.c')
-rw-r--r-- | contrib/sendmail/src/trace.c | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/contrib/sendmail/src/trace.c b/contrib/sendmail/src/trace.c new file mode 100644 index 0000000..5ff9795 --- /dev/null +++ b/contrib/sendmail/src/trace.c @@ -0,0 +1,111 @@ +/* + * Copyright (c) 1998 Sendmail, Inc. All rights reserved. + * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * By using this file, you agree to the terms and conditions set + * forth in the LICENSE file which can be found at the top level of + * the sendmail distribution. + * + */ + +#ifndef lint +static char sccsid[] = "@(#)trace.c 8.12 (Berkeley) 5/19/98"; +#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; + +void +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. +*/ + +void +tTflag(s) + register char *s; +{ + unsigned int first, last; + register unsigned int i; + + if (*s == '\0') + s = DefFlags; + + for (;;) + { + /* find first flag to set */ + i = 0; + while (isascii(*s) && isdigit(*s)) + i = i * 10 + (*s++ - '0'); + first = i; + + /* find last flag to set */ + if (*s == '-') + { + i = 0; + while (isascii(*++s) && isdigit(*s)) + i = i * 10 + (*s - '0'); + } + last = i; + + /* find the level to set it to */ + i = 1; + if (*s == '.') + { + i = 0; + while (isascii(*++s) && 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; + } +} |