/* ========================================================================== **
* debug2html.c
*
* Copyright (C) 1998 by Christopher R. Hertel
*
* Email: crh@ubiqx.mn.org
*
* -------------------------------------------------------------------------- **
* Parse Samba debug logs (2.0 & greater) and output the results as HTML.
* -------------------------------------------------------------------------- **
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see
\n" ); return( dbg_message ); } break; default: if( dbg_message == mode ) { /* Switching out of message mode. */ (void)printf( "\n\n" ); return( dbg_null ); } } return( mode ); } /* modechange */ static void newblock( dbg_Token old, dbg_Token newtok ) /* ------------------------------------------------------------------------ ** * Handle the transition between tokens. * * Input: old - The previous token. * new - The current token. * * Output: none. * * Notes: This is called whenever there is a transition from one token * type to another. It first prints the markup tags that close * the previous token, and then the markup tags for the new * token. * * ------------------------------------------------------------------------ ** */ { switch( old ) { case dbg_timestamp: (void)printf( "," ); break; case dbg_level: (void)printf( "]\n " ); break; case dbg_sourcefile: (void)printf( ":" ); break; case dbg_lineno: (void)printf( ")" ); break; default: break; } switch( newtok ) { case dbg_timestamp: (void)printf( "[" ); break; case dbg_level: (void)printf( " " ); break; case dbg_lineno: (void)printf( "(" ); break; default: break; } } /* newblock */ static void charprint( dbg_Token tok, int c ) /* ------------------------------------------------------------------------ ** * Filter the input characters to determine what goes to output. * * Input: tok - The token value of the current character. * c - The current character. * * Output: none. * * ------------------------------------------------------------------------ ** */ { switch( tok ) { case dbg_ignore: case dbg_header: break; case dbg_null: case dbg_eof: (void)putchar( '\n' ); break; default: switch( c ) { case '<': (void)printf( "<" ); break; case '>': (void)printf( ">" ); break; case '&': (void)printf( "&" ); break; case '\"': (void)printf( """ ); break; default: (void)putchar( c ); break; } } } /* charprint */ int main( int argc, char *argv[] ) /* ------------------------------------------------------------------------ ** * This simple program scans and parses Samba debug logs, and produces HTML * output. * * Input: argc - Currently ignored. * argv - Currently ignored. * * Output: Always zero. * * Notes: The HTML output is sent to stdout. * * ------------------------------------------------------------------------ ** */ { int i; int len; char bufr[DBG_BSIZE]; dbg_Token old = dbg_null, newtok = dbg_null, state = dbg_null, mode = dbg_null; (void)printf( "\n" ); (void)printf( "\n\n" ); (void)printf( "