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