/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2005 by Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2006 Alexander Barton (alex@barton.de).
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "portab.h"
-static char UNUSED id[] = "$Id: ngircd.c,v 1.108 2005/07/31 20:13:08 alex Exp $";
+static char UNUSED id[] = "$Id: ngircd.c,v 1.114 2006/12/07 17:57:20 fw Exp $";
/**
* @file
static void Show_Version PARAMS(( void ));
static void Show_Help PARAMS(( void ));
-static void Pidfile_Create PARAMS(( long ));
+static void Pidfile_Create PARAMS(( pid_t pid ));
static void Pidfile_Delete PARAMS(( void ));
static void Fill_Version PARAMS(( void ));
Log_Init( ! NGIRCd_NoDaemon );
Conf_Init( );
- if (!NGIRCd_Init( NGIRCd_NoDaemon )) {
- Log(LOG_WARNING, "Fatal: Initialization failed");
+ /* Initialize the "main program": chroot environment, user and
+ * group ID, ... */
+ if (!NGIRCd_Init(NGIRCd_NoDaemon)) {
+ Log(LOG_ALERT, "Fatal: Initialization failed");
exit(1);
}
/* Initialize modules, part II: these functions are eventually
* called with already dropped privileges ... */
- Lists_Init( );
Channel_Init( );
Client_Init( );
#ifdef ZEROCONF
#endif
Client_Exit( );
Channel_Exit( );
- Lists_Exit( );
Log_Exit( );
}
Pidfile_Delete( );
#endif
/* Signal-Handler einhaengen */
- sigaction( SIGINT, &saction, NULL );
- sigaction( SIGQUIT, &saction, NULL );
- sigaction( SIGTERM, &saction, NULL);
- sigaction( SIGHUP, &saction, NULL);
- sigaction( SIGCHLD, &saction, NULL);
+ sigaction(SIGINT, &saction, NULL);
+ sigaction(SIGQUIT, &saction, NULL);
+ sigaction(SIGTERM, &saction, NULL);
+ sigaction(SIGHUP, &saction, NULL);
+ sigaction(SIGCHLD, &saction, NULL);
/* einige Signale ignorieren */
saction.sa_handler = SIG_IGN;
- sigaction( SIGPIPE, &saction, NULL );
+ 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 );
+ 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 );
+ signal(SIGPIPE, SIG_IGN);
#endif
} /* Initialize_Signal_Handler */
Show_Version( void )
{
puts( NGIRCd_Version );
- puts( "Copyright (c)2001-2005 by Alexander Barton (<alex@barton.de>)." );
- puts( "Homepage: <http://arthur.ath.cx/~alex/ngircd/>\n" );
+ puts( "Copyright (c)2001-2006 Alexander Barton (<alex@barton.de>) and Contributors." );
+ puts( "Homepage: <http://ngircd.barton.de/>\n" );
puts( "This is free software; see the source for copying conditions. There is NO" );
puts( "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." );
} /* Show_Version */
* @param pid The process ID to be stored in this file.
*/
static void
-Pidfile_Create( long pid )
+Pidfile_Create(pid_t pid)
{
int pidfd;
char pidbuf[64];
return;
}
- len = snprintf( pidbuf, sizeof pidbuf, "%ld\n", pid );
- if (len < 0|| len < (int)sizeof pid) {
+ len = snprintf(pidbuf, sizeof pidbuf, "%ld\n", (long)pid);
+ if (len < 0 || len >= (int)sizeof pidbuf) {
Log( LOG_ERR, "Error converting pid");
return;
}
- if( write( pidfd, pidbuf, len) != len)
+ if (write(pidfd, pidbuf, (size_t)len) != (ssize_t)len)
Log( LOG_ERR, "Can't write PID file (%s): %s", Conf_PidFile, strerror( errno ));
if( close(pidfd) != 0 )
static bool
-NGIRCd_getNobodyID(unsigned int *uid, unsigned int *gid )
+NGIRCd_getNobodyID(uid_t *uid, gid_t *gid )
{
struct passwd *pwd;
struct passwd *pwd;
struct group *grp;
int real_errno;
- long pid;
+ pid_t pid;
if (initialized)
return true;
* connected to ther controlling terminal. Use "--nodaemon"
* to disable this "daemon mode" (useful for debugging). */
if ( ! NGIRCd_NoDaemon ) {
- pid = (long)fork( );
+ pid = fork( );
if( pid > 0 ) {
/* "Old" process: exit. */
exit( 0 );