- stderr wird nun in eine Datei umgelenkt (ngircd.err). Wenn der Server
authorAlexander Barton <alex@barton.de>
Wed, 6 Mar 2002 15:36:04 +0000 (15:36 +0000)
committerAlexander Barton <alex@barton.de>
Wed, 6 Mar 2002 15:36:04 +0000 (15:36 +0000)
  nicht im Debug-Modus laeuft, so wird diese bei Programmende geloescht.

src/ngircd/log.c
src/ngircd/ngircd.c

index cc647a0c51c0dfeeb2650a88713244deef2bec8d..540ef2fa0ef31b294b31d82ee294d87973030e5b 100644 (file)
@@ -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) :-)
  *
 
 #include <imp.h>
 #include <assert.h>
+#include <errno.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
 
 #ifdef USE_SYSLOG
 #include <syslog.h>
@@ -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 */
index 25e9d41435a12467673f0e96b642f8f44c5096c7..25d7a3411cd65211986b140b4a1b1503144c175e 100644 (file)
@@ -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 */