Mercurial > noffle
view src/log.c @ 243:6eb6c912a0e4 noffle
[svn] * src/group.c: Make comparison against NULL explicit in an if containing
an assignment, as I'm sad enough to think it is safer if it is obvious
that the assignment is meant to be there.
author | bears |
---|---|
date | Fri, 15 Mar 2002 10:49:56 +0000 |
parents | fed1334d766b |
children | 755e03bc7dcf |
line wrap: on
line source
/* log.c $Id: log.c 300 2001-08-05 08:24:22Z bears $ */ #if HAVE_CONFIG_H #include <config.h> #endif #include <syslog.h> #include <stdarg.h> #include "common.h" #include "log.h" #include "portable.h" #define MAXLENGTH 240 #define DEFAULT_DBG_MASK LOG_DBG_NONE struct { Bool interactive; unsigned debugMask; } log = { FALSE, DEFAULT_DBG_MASK }; void Log_init( const char *name, Bool interactive, int facility ) { int option = LOG_PID | LOG_CONS; log.interactive = interactive; openlog( name, option, facility ); } #define DO_LOG( LEVEL ) \ va_list ap; \ Str t; \ \ va_start( ap, fmt ); \ vsnprintf( t, MAXCHAR, fmt, ap ); \ if ( MAXLENGTH < MAXCHAR ) \ t[ MAXLENGTH ] = '\0'; \ syslog( LEVEL, "%s", t ); \ if ( log.interactive ) \ fprintf( stderr, "%s\n", t ); \ va_end( ap ); void Log_inf( const char *fmt, ... ) { DO_LOG( LOG_INFO ); } void Log_err( const char *fmt, ... ) { DO_LOG( LOG_ERR ); } /* Ensure the condition "cond" is true; otherwise log an error and return 1 */ int Log_check(int cond, const char *fmt, ... ) { if (!cond) { DO_LOG( LOG_ERR ); return 1; } return 0; } void Log_ntc( const char *fmt, ... ) { DO_LOG( LOG_NOTICE ); } void Log_dbg( unsigned subsystem, const char *fmt, ... ) { if ( ( subsystem & log.debugMask ) != 0 ) { DO_LOG( LOG_DEBUG ); } } void Log_setDbgMask( unsigned mask ) { /* A non-zero mask always include Noffle logs */ if ( mask != 0 ) mask |= LOG_DBG_NOFFLE; log.debugMask = mask; }