commit fe2bc90e45fec65ece7e31e442177284f29f6d3b from: Alexander Barton date: Wed Mar 06 15:36:04 2002 UTC - stderr wird nun in eine Datei umgelenkt (ngircd.err). Wenn der Server nicht im Debug-Modus laeuft, so wird diese bei Programmende geloescht. commit - 10aa35cc91239863755a92626ec51beeaf092ddc commit + fe2bc90e45fec65ece7e31e442177284f29f6d3b blob - cc647a0c51c0dfeeb2650a88713244deef2bec8d blob + 540ef2fa0ef31b294b31d82ee294d87973030e5b --- src/ngircd/log.c +++ 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 */ blob - 25e9d41435a12467673f0e96b642f8f44c5096c7 blob + 25d7a3411cd65211986b140b4a1b1503144c175e --- src/ngircd/ngircd.c +++ 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 */