home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / lan / soss.arj / SRC / DEBUG.C < prev    next >
C/C++ Source or Header  |  1991-02-22  |  4KB  |  106 lines

  1. /* Initialization routine for debugging macros */
  2. /*  Call dbg_init() prior to using DBGPRT* functions */
  3. /*  Uses NFSDEBUG and DEBUGFILE environment variables */
  4. /*   Rich Braun @ Kronos, Inc.  Waltham, MA */
  5. /*   31 Jan 91 */
  6.  
  7. #include <time.h>
  8. #include "debug.h"
  9.  
  10. struct _dbgflags __dbgflags__ = {0};
  11. FILE   *__dbgfp__;
  12.  
  13. void dbg_init ()
  14. {
  15. char *dbglist, *dbgfile, *getenv();
  16. int  setflag;
  17. time_t now;
  18.  
  19.     /* The code below looks at the NFSDEBUG environment
  20.      * variable for a list of selected debugging options
  21.      * separated by commas (or colons or semicolons).  Macros
  22.      * scattered through the rest of the code are then enabled
  23.      * to output debugging statements depending on the option
  24.      * flags.
  25.      */
  26.     __dbgfp__ = stderr;
  27.     if ((dbglist = getenv ("NFSDEBUG")) != (char *)NULL) {
  28.     (void) strtolower (dbglist);
  29.     while (*dbglist) {
  30.         if (dbglist[0] == '-') {
  31.         setflag = 0;
  32.         dbglist++;
  33.         } else
  34.             setflag = 1;
  35.         if (!strncmp (dbglist, "all", 3)) {
  36.             __dbgflags__.rpctrace = 1;
  37.             __dbgflags__.mountd   = 1;
  38.         __dbgflags__.nfserr   = 1;
  39.             __dbgflags__.nfsdebug = 1;
  40.             __dbgflags__.nfsdisp  = 1;
  41.             __dbgflags__.nfslookup= 1;
  42.             __dbgflags__.nfsread  = 1;
  43.             __dbgflags__.nfswrite = 1;
  44.         __dbgflags__.nfstime  = 1;
  45.         __dbgflags__.inode    = 1;
  46.         }
  47.         else if (!strncmp (dbglist, "rpctrace", 8))
  48.             __dbgflags__.rpctrace = setflag;
  49.         else if (!strncmp (dbglist, "mountd", 6))
  50.             __dbgflags__.mountd = setflag;
  51.         else if (!strncmp (dbglist, "nfserr", 6))
  52.             __dbgflags__.nfserr = setflag;
  53.         else if (!strncmp (dbglist, "nfsdebug", 8))
  54.             __dbgflags__.nfsdebug = setflag;
  55.         else if (!strncmp (dbglist, "nfsdisp", 7))
  56.             __dbgflags__.nfsdisp = setflag;
  57.         else if (!strncmp (dbglist, "nfslookup", 9))
  58.             __dbgflags__.nfslookup = setflag;
  59.         else if (!strncmp (dbglist, "nfsread", 7))
  60.             __dbgflags__.nfsread = setflag;
  61.         else if (!strncmp (dbglist, "nfswrite", 8))
  62.             __dbgflags__.nfswrite = setflag;
  63.         else if (!strncmp (dbglist, "nfstime", 7))
  64.             __dbgflags__.nfstime = setflag;
  65.         else if (!strncmp (dbglist, "inode", 5))
  66.             __dbgflags__.inode = setflag;
  67.         else
  68.           fprintf (stderr, "DBG-warning:  unable to parse NFSDEBUG='%s'\n",
  69.                dbglist);
  70.         dbglist += strcspn (dbglist, ",:;");
  71.         if (*dbglist) dbglist++;
  72.     }
  73.     if ((dbgfile = getenv ("DEBUGFILE")) != (char *)NULL) {
  74.         fprintf (stderr, "DBG-debugging output logged to %s\n", dbgfile);
  75.         if ((__dbgfp__ = fopen (dbgfile, "a")) == (FILE *) NULL) {
  76.         fprintf (stderr, "DBG: warning, can't open output file\n",
  77.              dbgfile);
  78.         }
  79.         prflags (stderr);
  80.     }
  81.     time (&now);
  82.     fprintf (__dbgfp__, "\n### Initiating debugging %s", 
  83.          ctime (&now));
  84.     prflags (__dbgfp__);
  85.     }
  86. }
  87.  
  88. /* Routine to print debugging flags */
  89.  
  90. static prflags (fp)
  91. FILE *fp;
  92. {
  93.     (void) fprintf (fp,"DBG-debugging options set: ");
  94.     if (__dbgflags__.rpctrace) (void) fprintf (fp, "rpctrace ");
  95.     if (__dbgflags__.mountd)   (void) fprintf (fp, "mountd ");
  96.     if (__dbgflags__.nfserr)   (void) fprintf (fp, "nfserr ");
  97.     if (__dbgflags__.nfsdebug) (void) fprintf (fp, "nfsdebug ");
  98.     if (__dbgflags__.nfsdisp)  (void) fprintf (fp, "nfsdisp ");
  99.     if (__dbgflags__.nfslookup)(void) fprintf (fp, "nfslookup ");
  100.     if (__dbgflags__.nfsread)  (void) fprintf (fp, "nfsread ");
  101.     if (__dbgflags__.nfswrite) (void) fprintf (fp, "nfswrite ");
  102.     if (__dbgflags__.nfstime)  (void) fprintf (fp, "nfstime ");
  103.     if (__dbgflags__.inode)    (void) fprintf (fp, "inode ");
  104.     (void) fprintf (fp, "\n");
  105. }
  106.