root/source3/include/debugparse.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 #ifndef DEBUGPARSE_H
   2 #define DEBUGPARSE_H
   3 /* ========================================================================== **
   4  *                                debugparse.c
   5  *
   6  * Copyright (C) 1998 by Christopher R. Hertel
   7  *
   8  * Email: crh@ubiqx.mn.org
   9  *
  10  * -------------------------------------------------------------------------- **
  11  * This module is a very simple parser for Samba debug log files.
  12  * -------------------------------------------------------------------------- **
  13  *
  14  *  This library is free software; you can redistribute it and/or
  15  *  modify it under the terms of the GNU Lesser General Public
  16  *  License as published by the Free Software Foundation; either
  17  *  version 3 of the License, or (at your option) any later version.
  18  *
  19  *  This library is distributed in the hope that it will be useful,
  20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  22  *  Library General Public License for more details.
  23  *
  24  *  You should have received a copy of the GNU Lesser General Public
  25  *  License along with this library; if not, see <http://www.gnu.org/licenses/>.
  26  *
  27  * -------------------------------------------------------------------------- **
  28  * The important function in this module is dbg_char2token().  The rest is
  29  * basically fluff.  (Potentially useful fluff, but still fluff.)
  30  * ========================================================================== **
  31  */
  32 
  33 #include "includes.h"
  34 
  35 /* This module compiles quite nicely outside of the Samba environment.
  36  * You'll need the following headers:
  37 #include <ctype.h>
  38 #include <stdio.h>
  39 #include <string.h>
  40  */
  41 
  42 /* -------------------------------------------------------------------------- **
  43  * These are the tokens returned by dbg_char2token().
  44  */
  45 
  46 typedef enum
  47   {
  48   dbg_null = 0,
  49   dbg_ignore,
  50   dbg_header,
  51   dbg_timestamp,
  52   dbg_level,
  53   dbg_sourcefile,
  54   dbg_function,
  55   dbg_lineno,
  56   dbg_message,
  57   dbg_eof
  58   } dbg_Token;
  59 
  60 /* -------------------------------------------------------------------------- **
  61  * Function prototypes...
  62  */
  63 
  64  const char *dbg_token2string( dbg_Token tok );
  65   /* ------------------------------------------------------------------------ **
  66    * Given a token, return a string describing the token.
  67    *
  68    *  Input:  tok - One of the set of dbg_Tokens defined in debugparse.h.
  69    *
  70    *  Output: A string identifying the token.  This is useful for debugging,
  71    *          etc.
  72    *
  73    *  Note:   If the token is not known, this function will return the
  74    *          string "<unknown>".
  75    *
  76    * ------------------------------------------------------------------------ **
  77    */
  78 
  79  dbg_Token dbg_char2token( dbg_Token *state, int c );
  80   /* ------------------------------------------------------------------------ **
  81    * Parse input one character at a time.
  82    *
  83    *  Input:  state - A pointer to a token variable.  This is used to
  84    *                  maintain the parser state between calls.  For
  85    *                  each input stream, you should set up a separate
  86    *                  state variable and initialize it to dbg_null.
  87    *                  Pass a pointer to it into this function with each
  88    *                  character in the input stream.  See dbg_test()
  89    *                  for an example.
  90    *          c     - The "current" character in the input stream.
  91    *
  92    *  Output: A token.
  93    *          The token value will change when delimiters are found,
  94    *          which indicate a transition between syntactical objects.
  95    *          Possible return values are:
  96    *
  97    *          dbg_null        - The input character was an end-of-line.
  98    *                            This resets the parser to its initial state
  99    *                            in preparation for parsing the next line.
 100    *          dbg_eof         - Same as dbg_null, except that the character
 101    *                            was an end-of-file.
 102    *          dbg_ignore      - Returned for whitespace and delimiters.
 103    *                            These lexical tokens are only of interest
 104    *                            to the parser.
 105    *          dbg_header      - Indicates the start of a header line.  The
 106    *                            input character was '[' and was the first on
 107    *                            the line.
 108    *          dbg_timestamp   - Indicates that the input character was part
 109    *                            of a header timestamp.
 110    *          dbg_level       - Indicates that the input character was part
 111    *                            of the debug-level value in the header.
 112    *          dbg_sourcefile  - Indicates that the input character was part
 113    *                            of the sourcefile name in the header.
 114    *          dbg_function    - Indicates that the input character was part
 115    *                            of the function name in the header.
 116    *          dbg_lineno      - Indicates that the input character was part
 117    *                            of the DEBUG call line number in the header.
 118    *          dbg_message     - Indicates that the input character was part
 119    *                            of the DEBUG message text.
 120    *
 121    * ------------------------------------------------------------------------ **
 122    */
 123 
 124 
 125 /* -------------------------------------------------------------------------- */
 126 #endif /* DEBUGPARSE_H */

/* [<][>][^][v][top][bottom][index][help] */