From fe2bc90e45fec65ece7e31e442177284f29f6d3b Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Wed, 6 Mar 2002 15:36:04 +0000 Subject: [PATCH] - stderr wird nun in eine Datei umgelenkt (ngircd.err). Wenn der Server nicht im Debug-Modus laeuft, so wird diese bei Programmende geloescht. --- src/ngircd/log.c | 28 +++++++++++++++++++++++++--- src/ngircd/ngircd.c | 14 +++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/ngircd/log.c b/src/ngircd/log.c index cc647a0c..540ef2fa 100644 --- a/src/ngircd/log.c +++ b/src/ngircd/log.c @@ -9,11 +9,15 @@ * 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.19 2002/03/03 17:17:01 alex Exp $ + * $Id: log.c,v 1.20 2002/03/06 15:36:04 alex Exp $ * * log.c: Logging-Funktionen * * $Log: log.c,v $ + * Revision 1.20 2002/03/06 15:36:04 alex + * - stderr wird nun in eine Datei umgelenkt (ngircd.err). Wenn der Server + * nicht im Debug-Modus laeuft, so wird diese bei Programmende geloescht. + * * Revision 1.19 2002/03/03 17:17:01 alex * - strncpy() und vsnprintf() kopieren nun etwas "optimierter" (1 Byte weniger) :-) * @@ -83,9 +87,12 @@ #include #include +#include #include #include #include +#include +#include #ifdef USE_SYSLOG #include @@ -109,7 +116,7 @@ GLOBAL VOID Log_Init( VOID ) /* Hello World! */ Log( LOG_NOTICE, "%s started.", NGIRCd_Version( )); - + /* Informationen uebern den "Operation Mode" */ strcpy( txt, "" ); #ifdef DEBUG @@ -137,6 +144,14 @@ GLOBAL VOID Log_Init( VOID ) } #endif if( txt[0] ) Log( LOG_INFO, "Activating: %s.", txt ); + + /* stderr in Datei umlenken */ + fflush( stderr ); + if( ! freopen( ERROR_FILE, "a+", stderr )) Log( LOG_ERR, "Can't reopen stderr (\""ERROR_FILE"\"): %s", strerror( errno )); + + fprintf( stderr, "\n--- %s ---\n\n", NGIRCd_StartStr ); + fprintf( stderr, "%s started.\npid=%d, ppid=%d, uid=%d, gid=%d [euid=%d, egid=%d].\nActivating: %s\n\n", NGIRCd_Version( ), getpid( ), getppid( ), getuid( ), getgid( ), geteuid( ), getegid( ), txt[0] ? txt : "-" ); + fflush( stderr ); } /* Log_Init */ @@ -144,7 +159,9 @@ GLOBAL VOID Log_Exit( VOID ) { /* Good Bye! */ Log( LOG_NOTICE, PACKAGE" done."); - + fprintf( stderr, PACKAGE" done (pid=%d).\n", getpid( )); + fflush( stderr ); + #ifdef USE_SYSLOG /* syslog abmelden */ closelog( ); @@ -172,9 +189,14 @@ GLOBAL VOID Log( CONST INT Level, CONST CHAR *Format, ... ) vsnprintf( msg, MAX_LOG_MSG_LEN, Format, ap ); va_end( ap ); + /* In Error-File schreiben */ + if( Level <= LOG_ERR ) fprintf( stderr, "[%d] %s\n", Level, msg ); + /* ... und ausgeben */ if( NGIRCd_NoDaemon ) printf( "[%d] %s\n", Level, msg ); + #ifdef USE_SYSLOG + /* Syslog */ syslog( Level, msg ); #endif } /* Log */ diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index 25e9d414..25d7a341 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -9,11 +9,15 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: ngircd.c,v 1.28 2002/02/27 23:24:29 alex Exp $ + * $Id: ngircd.c,v 1.29 2002/03/06 15:36:04 alex Exp $ * * ngircd.c: Hier beginnt alles ;-) * * $Log: ngircd.c,v $ + * Revision 1.29 2002/03/06 15:36:04 alex + * - stderr wird nun in eine Datei umgelenkt (ngircd.err). Wenn der Server + * nicht im Debug-Modus laeuft, so wird diese bei Programmende geloescht. + * * Revision 1.28 2002/02/27 23:24:29 alex * - ueberfluessige Init- und Exit-Funktionen entfernt. * @@ -286,6 +290,8 @@ GLOBAL INT main( INT argc, CONST CHAR *argv[] ) printf( PACKAGE": Can't fork: %s!\nFatal error, exiting now ...", strerror( errno )); exit( 1 ); } + + /* Child-Prozess initialisieren */ setsid( ); chdir( "/" ); } @@ -323,6 +329,12 @@ GLOBAL INT main( INT argc, CONST CHAR *argv[] ) Conf_Exit( ); Log_Exit( ); } + +#ifndef DEBUG + /* aufraeumen */ + if( unlink( ERROR_FILE ) != 0 ) Log( LOG_ERR, "Can't delete \""ERROR_FILE"\": %s", strerror( errno )); +#endif + return 0; } /* main */ -- 2.39.2