X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Flog.c;h=18fe1edac318de9fe0851b84a6c2d847839ca7aa;hp=74b77b4a62b65aed19daaa459bc2d59fd6e69dab;hb=20a2ffef88a426c0531eb6d08718e6ca19bdacc8;hpb=6b58ab84272c53b13cdd6d40fb2cf21c734897bc diff --git a/src/ngircd/log.c b/src/ngircd/log.c index 74b77b4a..18fe1eda 100644 --- a/src/ngircd/log.c +++ b/src/ngircd/log.c @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: log.c,v 1.24 2002/03/27 16:40:06 alex Exp $ + * $Id: log.c,v 1.25 2002/03/27 20:53:30 alex Exp $ * * log.c: Logging-Funktionen */ @@ -31,12 +31,17 @@ #endif #include "ngircd.h" +#include "client.h" #include "defines.h" +#include "irc-write.h" #include "exp.h" #include "log.h" +LOCAL VOID Wall_ServerNotice( CHAR *Msg ); + + GLOBAL VOID Log_Init( VOID ) { CHAR txt[127]; @@ -106,16 +111,26 @@ GLOBAL VOID Log_Exit( VOID ) } /* Log_Exit */ -GLOBAL VOID Log( CONST INT Level, CONST CHAR *Format, ... ) +GLOBAL VOID Log( INT Level, CONST CHAR *Format, ... ) { /* Eintrag in Logfile(s) schreiben */ CHAR msg[MAX_LOG_MSG_LEN]; + BOOLEAN snotice; va_list ap; time_t t; assert( Format != NULL ); + snotice = FALSE; + + if( Level & LOG_snotice ) + { + /* Notice an User mit "s" Mode */ + snotice = TRUE; + Level &= ~LOG_snotice; + } + #ifdef DEBUG if(( Level == LOG_DEBUG ) && ( ! NGIRCd_Debug )) return; #else @@ -135,13 +150,16 @@ GLOBAL VOID Log( CONST INT Level, CONST CHAR *Format, ... ) fprintf( stderr, "[%d] %s\n\n", Level, msg ); } - /* ... und ausgeben */ + /* Konsole */ if( NGIRCd_NoDaemon ) printf( "[%d] %s\n", Level, msg ); #ifdef USE_SYSLOG /* Syslog */ syslog( Level, msg ); #endif + + /* lokale User mit "s"-Mode */ + if( snotice ) Wall_ServerNotice( msg ); } /* Log */ @@ -192,4 +210,19 @@ GLOBAL VOID Log_Resolver( CONST INT Level, CONST CHAR *Format, ... ) } /* Log_Resolver */ +LOCAL VOID Wall_ServerNotice( CHAR *Msg ) +{ + CLIENT *c; + + assert( Msg != NULL ); + + c = Client_First( ); + while( c ) + { + if(( Client_Conn( c ) > NONE ) && ( Client_HasMode( c, 's' ))) IRC_WriteStrClient( c, "NOTICE :%s", Msg ); + c = Client_Next( c ); + } +} /* Wall_ServerNotice */ + + /* -eof- */