* 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.25 2002/02/19 20:30:47 alex Exp $
+ * $Id: ngircd.c,v 1.31 2002/03/10 17:50:48 alex Exp $
*
* ngircd.c: Hier beginnt alles ;-)
*
* $Log: ngircd.c,v $
+ * Revision 1.31 2002/03/10 17:50:48 alex
+ * - Handling von "--version" und "--help" nochmal geaendert ...
+ *
+ * Revision 1.30 2002/03/10 17:45:41 alex
+ * - bei "ngircd --version" werden nun die eincompilierten Pfade angezeigt.
+ *
+ * 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.
+ *
+ * Revision 1.27 2002/02/25 11:42:47 alex
+ * - wenn ein System sigaction() nicht kennt, so wird nun signal() verwendet.
+ *
+ * Revision 1.26 2002/02/23 19:06:47 alex
+ * - fuer SIGCHLD wird nun auch SA_NOCLDWAIT gesetzt, wenn vorhanden.
+ *
* Revision 1.25 2002/02/19 20:30:47 alex
* - SA_RESTART wird fuer Signale nur noch gesetzt, wenn es definiert ist.
*
printf( PACKAGE": Can't fork: %s!\nFatal error, exiting now ...", strerror( errno ));
exit( 1 );
}
+
+ /* Child-Prozess initialisieren */
setsid( );
chdir( "/" );
}
/* Module initialisieren */
Log_Init( );
Conf_Init( );
- Parse_Init( );
- IRC_Init( );
Channel_Init( );
Client_Init( );
Conn_Init( );
Conn_Exit( );
Client_Exit( );
Channel_Exit( );
- IRC_Exit( );
- Parse_Exit( );
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 */
/* Signal-Handler initialisieren: einige Signale
* werden ignoriert, andere speziell behandelt. */
+#ifdef HAVE_SIGACTION
+ /* sigaction() ist vorhanden */
+
struct sigaction saction;
/* Signal-Struktur initialisieren */
memset( &saction, 0, sizeof( saction ));
saction.sa_handler = Signal_Handler;
#ifdef SA_RESTART
- saction.sa_flags = SA_RESTART;
+ saction.sa_flags |= SA_RESTART;
+#endif
+#ifdef SA_NOCLDWAIT
+ saction.sa_flags |= SA_NOCLDWAIT;
#endif
/* Signal-Handler einhaengen */
/* einige Signale ignorieren */
saction.sa_handler = SIG_IGN;
sigaction( SIGPIPE, &saction, NULL );
+#else
+ /* kein sigaction() vorhanden */
+
+ /* Signal-Handler einhaengen */
+ signal( SIGINT, Signal_Handler );
+ signal( SIGQUIT, Signal_Handler );
+ signal( SIGTERM, Signal_Handler );
+ signal( SIGHUP, Signal_Handler );
+ signal( SIGCHLD, Signal_Handler );
+
+ /* einige Signale ignorieren */
+ signal( SIGPIPE, SIG_IGN );
+#endif
} /* Initialize_Signal_Handler */
LOCAL VOID Show_Help( VOID )
{
+ puts( "Compile-time defaults:\n" );
+ puts( " - configuration: "CONFIG_FILE );
+ puts( " - MOTD file: "MOTD_FILE );
+ puts( " - server error log: "ERROR_FILE"\n" );
+ puts( "Run-time options:\n" );
#ifdef DEBUG
puts( " -d, --debug log extra debug messages" );
#endif