Move copy_unix_token() from locking/locking.c to lib/util.c.
[kai/samba.git] / source3 / include / debugparse.h
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 */