1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-08-28 16:32:20 +00:00

main(): Code cleanup

This commit is contained in:
Alexander Barton 2012-01-03 19:25:31 +01:00
parent ab188c1486
commit 9069380ddf

View File

@ -74,12 +74,12 @@ static bool NGIRCd_Init PARAMS(( bool ));
* Here all starts: this function is called by the operating system loader, * Here all starts: this function is called by the operating system loader,
* it is the first portion of code executed of ngIRCd. * it is the first portion of code executed of ngIRCd.
* *
* @param argc The number of arguments passed to ngIRCd on the command line. * @param argc The number of arguments passed to ngIRCd on the command line.
* @param argv An array containing all the arguments passed to ngIRCd. * @param argv An array containing all the arguments passed to ngIRCd.
* @return Global exit code of ngIRCd, zero on success. * @return Global exit code of ngIRCd, zero on success.
*/ */
GLOBAL int GLOBAL int
main( int argc, const char *argv[] ) main(int argc, const char *argv[])
{ {
bool ok, configtest = false; bool ok, configtest = false;
bool NGIRCd_NoDaemon = false; bool NGIRCd_NoDaemon = false;
@ -92,7 +92,7 @@ main( int argc, const char *argv[] )
mtrace(); mtrace();
#endif #endif
umask( 0077 ); umask(0077);
NGIRCd_SignalQuit = NGIRCd_SignalRestart = false; NGIRCd_SignalQuit = NGIRCd_SignalRestart = false;
NGIRCd_Passive = false; NGIRCd_Passive = false;
@ -102,75 +102,62 @@ main( int argc, const char *argv[] )
#ifdef SNIFFER #ifdef SNIFFER
NGIRCd_Sniffer = false; NGIRCd_Sniffer = false;
#endif #endif
strlcpy( NGIRCd_ConfFile, SYSCONFDIR, sizeof( NGIRCd_ConfFile )); strlcpy(NGIRCd_ConfFile, SYSCONFDIR, sizeof(NGIRCd_ConfFile));
strlcat( NGIRCd_ConfFile, CONFIG_FILE, sizeof( NGIRCd_ConfFile )); strlcat(NGIRCd_ConfFile, CONFIG_FILE, sizeof(NGIRCd_ConfFile));
Fill_Version( ); Fill_Version();
/* parse conmmand line */ /* parse conmmand line */
for( i = 1; i < argc; i++ ) for (i = 1; i < argc; i++) {
{
ok = false; ok = false;
if(( argv[i][0] == '-' ) && ( argv[i][1] == '-' )) if (argv[i][0] == '-' && argv[i][1] == '-') {
{
/* long option */ /* long option */
if( strcmp( argv[i], "--config" ) == 0 ) if (strcmp(argv[i], "--config") == 0) {
{ if (i + 1 < argc) {
if( i + 1 < argc )
{
/* Ok, there's an parameter left */ /* Ok, there's an parameter left */
strlcpy( NGIRCd_ConfFile, argv[i + 1], sizeof( NGIRCd_ConfFile )); strlcpy(NGIRCd_ConfFile, argv[i+1],
sizeof(NGIRCd_ConfFile));
/* next parameter */ /* next parameter */
i++; ok = true; i++; ok = true;
} }
} }
if( strcmp( argv[i], "--configtest" ) == 0 ) if (strcmp(argv[i], "--configtest") == 0) {
{
configtest = true; configtest = true;
ok = true; ok = true;
} }
#ifdef DEBUG #ifdef DEBUG
if( strcmp( argv[i], "--debug" ) == 0 ) if (strcmp(argv[i], "--debug") == 0) {
{
NGIRCd_Debug = true; NGIRCd_Debug = true;
ok = true; ok = true;
} }
#endif #endif
if( strcmp( argv[i], "--help" ) == 0 ) if (strcmp(argv[i], "--help") == 0) {
{ Show_Version();
Show_Version( ); puts(""); Show_Help( ); puts( "" );
puts( "" ); Show_Help( ); puts( "" ); exit(1);
exit( 1 );
} }
if( strcmp( argv[i], "--nodaemon" ) == 0 ) if (strcmp(argv[i], "--nodaemon") == 0) {
{
NGIRCd_NoDaemon = true; NGIRCd_NoDaemon = true;
ok = true; ok = true;
} }
if( strcmp( argv[i], "--passive" ) == 0 ) if (strcmp(argv[i], "--passive") == 0) {
{
NGIRCd_Passive = true; NGIRCd_Passive = true;
ok = true; ok = true;
} }
#ifdef SNIFFER #ifdef SNIFFER
if( strcmp( argv[i], "--sniffer" ) == 0 ) if (strcmp(argv[i], "--sniffer") == 0) {
{
NGIRCd_Sniffer = true; NGIRCd_Sniffer = true;
ok = true; ok = true;
} }
#endif #endif
if( strcmp( argv[i], "--version" ) == 0 ) if (strcmp(argv[i], "--version") == 0) {
{ Show_Version();
Show_Version( ); exit(1);
exit( 1 );
} }
} }
else if(( argv[i][0] == '-' ) && ( argv[i][1] != '-' )) else if(argv[i][0] == '-' && argv[i][1] != '-') {
{
/* short option */ /* short option */
for( n = 1; n < strlen( argv[i] ); n++ ) for (n = 1; n < strlen(argv[i]); n++) {
{
ok = false; ok = false;
#ifdef DEBUG #ifdef DEBUG
if (argv[i][n] == 'd') { if (argv[i][n] == 'd') {
@ -179,14 +166,14 @@ main( int argc, const char *argv[] )
} }
#endif #endif
if (argv[i][n] == 'f') { if (argv[i][n] == 'f') {
if(( ! argv[i][n + 1] ) && ( i + 1 < argc )) if (!argv[i][n+1] && i+1 < argc) {
{
/* Ok, next character is a blank */ /* Ok, next character is a blank */
strlcpy( NGIRCd_ConfFile, argv[i + 1], sizeof( NGIRCd_ConfFile )); strlcpy(NGIRCd_ConfFile, argv[i+1],
sizeof(NGIRCd_ConfFile));
/* go to the following parameter */ /* go to the following parameter */
i++; i++;
n = strlen( argv[i] ); n = strlen(argv[i]);
ok = true; ok = true;
} }
} }
@ -221,46 +208,49 @@ main( int argc, const char *argv[] )
exit(1); exit(1);
} }
if (! ok) { if (!ok) {
printf( "%s: invalid option \"-%c\"!\n", PACKAGE_NAME, argv[i][n] ); printf("%s: invalid option \"-%c\"!\n",
printf( "Try \"%s --help\" for more information.\n", PACKAGE_NAME ); PACKAGE_NAME, argv[i][n]);
exit( 1 ); printf("Try \"%s --help\" for more information.\n",
PACKAGE_NAME);
exit(1);
} }
} }
} }
if( ! ok ) if (!ok) {
{ printf("%s: invalid option \"%s\"!\n",
printf( "%s: invalid option \"%s\"!\n", PACKAGE_NAME, argv[i] ); PACKAGE_NAME, argv[i]);
printf( "Try \"%s --help\" for more information.\n", PACKAGE_NAME ); printf("Try \"%s --help\" for more information.\n",
exit( 1 ); PACKAGE_NAME);
exit(1);
} }
} }
/* Debug level for "VERSION" command */ /* Debug level for "VERSION" command */
NGIRCd_DebugLevel[0] = '\0'; NGIRCd_DebugLevel[0] = '\0';
#ifdef DEBUG #ifdef DEBUG
if( NGIRCd_Debug ) strcpy( NGIRCd_DebugLevel, "1" ); if (NGIRCd_Debug)
strcpy(NGIRCd_DebugLevel, "1");
#endif #endif
#ifdef SNIFFER #ifdef SNIFFER
if( NGIRCd_Sniffer ) if (NGIRCd_Sniffer) {
{
NGIRCd_Debug = true; NGIRCd_Debug = true;
strcpy( NGIRCd_DebugLevel, "2" ); strcpy(NGIRCd_DebugLevel, "2");
} }
#endif #endif
if( configtest ) if (configtest) {
{ Show_Version(); puts("");
Show_Version( ); puts( "" ); exit(Conf_Test());
exit( Conf_Test( ));
} }
while( ! NGIRCd_SignalQuit ) while (!NGIRCd_SignalQuit) {
{
/* Initialize global variables */ /* Initialize global variables */
NGIRCd_Start = time( NULL ); NGIRCd_Start = time(NULL);
(void)strftime( NGIRCd_StartStr, 64, "%a %b %d %Y at %H:%M:%S (%Z)", localtime( &NGIRCd_Start )); (void)strftime(NGIRCd_StartStr, 64,
"%a %b %d %Y at %H:%M:%S (%Z)",
localtime(&NGIRCd_Start));
NGIRCd_SignalRestart = false; NGIRCd_SignalRestart = false;
NGIRCd_SignalQuit = false; NGIRCd_SignalQuit = false;
@ -268,8 +258,8 @@ main( int argc, const char *argv[] )
Random_Init(); Random_Init();
/* Initialize modules, part I */ /* Initialize modules, part I */
Log_Init( ! NGIRCd_NoDaemon ); Log_Init(!NGIRCd_NoDaemon);
Conf_Init( ); Conf_Init();
/* Initialize the "main program": chroot environment, user and /* Initialize the "main program": chroot environment, user and
* group ID, ... */ * group ID, ... */
@ -280,18 +270,22 @@ main( int argc, const char *argv[] )
/* Initialize modules, part II: these functions are eventually /* Initialize modules, part II: these functions are eventually
* called with already dropped privileges ... */ * called with already dropped privileges ... */
Channel_Init( ); Channel_Init();
Client_Init( ); Client_Init();
Conn_Init( ); Conn_Init();
Class_Init( ); Class_Init();
if (!io_library_init(CONNECTION_POOL)) { if (!io_library_init(CONNECTION_POOL)) {
Log(LOG_ALERT, "Fatal: Cannot initialize IO routines: %s", strerror(errno)); Log(LOG_ALERT,
"Fatal: Could not initialize IO routines: %s",
strerror(errno));
exit(1); exit(1);
} }
if (!Signals_Init()) { if (!Signals_Init()) {
Log(LOG_ALERT, "Fatal: Could not set up signal handlers: %s", strerror(errno)); Log(LOG_ALERT,
"Fatal: Could not set up signal handlers: %s",
strerror(errno));
exit(1); exit(1);
} }
@ -299,40 +293,45 @@ main( int argc, const char *argv[] )
* used by ngIRCd in PASS commands and the known "extended * used by ngIRCd in PASS commands and the known "extended
* flags" are described in doc/Protocol.txt. */ * flags" are described in doc/Protocol.txt. */
#ifdef IRCPLUS #ifdef IRCPLUS
snprintf( NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s:%s", PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION, IRCPLUSFLAGS ); snprintf(NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s:%s",
PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION,
IRCPLUSFLAGS);
#ifdef ZLIB #ifdef ZLIB
strcat( NGIRCd_ProtoID, "Z" ); strcat(NGIRCd_ProtoID, "Z");
#endif #endif
if( Conf_OperCanMode ) strcat( NGIRCd_ProtoID, "o" ); if (Conf_OperCanMode)
#else strcat(NGIRCd_ProtoID, "o");
snprintf( NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s", PROTOVER, PROTOIRC, PACKAGE_NAME, PACKAGE_VERSION ); #else /* IRCPLUS */
#endif snprintf(NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s",
strlcat( NGIRCd_ProtoID, " P", sizeof NGIRCd_ProtoID ); PROTOVER, PROTOIRC, PACKAGE_NAME, PACKAGE_VERSION);
#endif /* IRCPLUS */
strlcat(NGIRCd_ProtoID, " P", sizeof NGIRCd_ProtoID);
#ifdef ZLIB #ifdef ZLIB
strlcat( NGIRCd_ProtoID, "Z", sizeof NGIRCd_ProtoID ); strlcat(NGIRCd_ProtoID, "Z", sizeof NGIRCd_ProtoID);
#endif #endif
LogDebug("Protocol and server ID is \"%s\".", NGIRCd_ProtoID); LogDebug("Protocol and server ID is \"%s\".", NGIRCd_ProtoID);
Channel_InitPredefined( ); Channel_InitPredefined();
if( Conn_InitListeners( ) < 1 ) if (Conn_InitListeners() < 1) {
{ Log(LOG_ALERT,
Log( LOG_ALERT, "Server isn't listening on a single port!" ); "Server isn't listening on a single port!" );
Log( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME ); Log(LOG_ALERT,
Pidfile_Delete( ); "%s exiting due to fatal errors!", PACKAGE_NAME);
exit( 1 ); Pidfile_Delete();
exit(1);
} }
/* Main Run Loop */ /* Main Run Loop */
Conn_Handler( ); Conn_Handler();
Conn_Exit( ); Conn_Exit();
Client_Exit( ); Client_Exit();
Channel_Exit( ); Channel_Exit();
Class_Exit( ); Class_Exit();
Log_Exit( ); Log_Exit();
} }
Pidfile_Delete( ); Pidfile_Delete();
return 0; return 0;
} /* main */ } /* main */