trace.c
上传用户:xu_441
上传日期:2007-01-04
资源大小:1640k
文件大小:2k
源码类别:

Email客户端

开发平台:

Unix_Linux

  1. /*
  2.  * Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
  3.  * All rights reserved.
  4.  * Copyright (c) 1983, 1995-1997 Eric P. Allman.  All rights reserved.
  5.  * Copyright (c) 1988, 1993
  6.  * The Regents of the University of California.  All rights reserved.
  7.  *
  8.  * By using this file, you agree to the terms and conditions set
  9.  * forth in the LICENSE file which can be found at the top level of
  10.  * the sendmail distribution.
  11.  *
  12.  */
  13. #ifndef lint
  14. static char id[] = "@(#)$Id: trace.c,v 8.20 1999/08/02 21:44:36 ca Exp $";
  15. #endif /* ! lint */
  16. #include <sendmail.h>
  17. /*
  18. **  TtSETUP -- set up for trace package.
  19. **
  20. ** Parameters:
  21. ** vect -- pointer to trace vector.
  22. ** size -- number of flags in trace vector.
  23. ** defflags -- flags to set if no value given.
  24. **
  25. ** Returns:
  26. ** none
  27. **
  28. ** Side Effects:
  29. ** environment is set up.
  30. */
  31. static u_char *tTvect;
  32. static int tTsize;
  33. static char *DefFlags;
  34. void
  35. tTsetup(vect, size, defflags)
  36. u_char *vect;
  37. int size;
  38. char *defflags;
  39. {
  40. tTvect = vect;
  41. tTsize = size;
  42. DefFlags = defflags;
  43. }
  44. /*
  45. **  TtFLAG -- process an external trace flag description.
  46. **
  47. ** Parameters:
  48. ** s -- the trace flag.
  49. **
  50. ** Returns:
  51. ** none.
  52. **
  53. ** Side Effects:
  54. ** sets/clears trace flags.
  55. */
  56. void
  57. tTflag(s)
  58. register char *s;
  59. {
  60. unsigned int first, last;
  61. register unsigned int i;
  62. if (*s == '')
  63. s = DefFlags;
  64. for (;;)
  65. {
  66. /* find first flag to set */
  67. i = 0;
  68. while (isascii(*s) && isdigit(*s))
  69. i = i * 10 + (*s++ - '0');
  70. first = i;
  71. /* find last flag to set */
  72. if (*s == '-')
  73. {
  74. i = 0;
  75. while (isascii(*++s) && isdigit(*s))
  76. i = i * 10 + (*s - '0');
  77. }
  78. last = i;
  79. /* find the level to set it to */
  80. i = 1;
  81. if (*s == '.')
  82. {
  83. i = 0;
  84. while (isascii(*++s) && isdigit(*s))
  85. i = i * 10 + (*s - '0');
  86. }
  87. /* clean up args */
  88. if (first >= tTsize)
  89. first = tTsize - 1;
  90. if (last >= tTsize)
  91. last = tTsize - 1;
  92. /* set the flags */
  93. while (first <= last)
  94. tTvect[first++] = i;
  95. /* more arguments? */
  96. if (*s++ == '')
  97. return;
  98. }
  99. }