• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/samba-3.5.8/source3/include/
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
46typedef 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 */
127