X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fngircd.c;h=74a998800f364376a87efb290cd2d0dc030a2ab4;hp=ac69a7532b5eb7dc8dec95bf664df41366b79878;hb=162433398e320c45f3c8a523814518aa6b78372e;hpb=4a6d44dce2436103dafaad199597ada354d9b794 diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index ac69a753..74a99880 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -9,7 +9,6 @@ * Please read the file COPYING, README and AUTHORS for more information. */ - #include "portab.h" /** @@ -68,11 +67,13 @@ static bool NGIRCd_Init PARAMS(( bool )); /** * The main() function of ngIRCd. + * * Here all starts: this function is called by the operating system loader, * it is the first portion of code executed of ngIRCd. - * @param argc The number of arguments passed to ngIRCd on the command line. - * @param argv An array containing all the arguments passed to ngIRCd. - * @return Global exit code of ngIRCd, zero on success. + * + * @param argc The number of arguments passed to ngIRCd on the command line. + * @param argv An array containing all the arguments passed to ngIRCd. + * @return Global exit code of ngIRCd, zero on success. */ GLOBAL int main( int argc, const char *argv[] ) @@ -233,7 +234,7 @@ main( int argc, const char *argv[] ) } } - /* Debug-Level (for IRCs "VERSION" command) */ + /* Debug level for "VERSION" command */ NGIRCd_DebugLevel[0] = '\0'; #ifdef DEBUG if( NGIRCd_Debug ) strcpy( NGIRCd_DebugLevel, "1" ); @@ -288,11 +289,11 @@ main( int argc, const char *argv[] ) exit(1); } - /* - * create protocol and server identification. - * The syntax used by ngIRCd in PASS commands and the extended flags - * are described in doc/Protocol.txt - */ + srandom(getpid()); + + /* Create protocol and server identification. The syntax + * used by ngIRCd in PASS commands and the known "extended + * flags" are described in doc/Protocol.txt. */ #ifdef IRCPLUS snprintf( NGIRCd_ProtoID, sizeof NGIRCd_ProtoID, "%s%s %s|%s:%s", PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION, IRCPLUSFLAGS ); #ifdef ZLIB @@ -317,11 +318,10 @@ main( int argc, const char *argv[] ) Pidfile_Delete( ); exit( 1 ); } - - /* Hauptschleife */ + + /* Main Run Loop */ Conn_Handler( ); - /* Alles abmelden */ Conn_Exit( ); Client_Exit( ); Channel_Exit( ); @@ -334,10 +334,12 @@ main( int argc, const char *argv[] ) /** - * Generate ngIRCd "version string". - * This string is generated once and then stored in NGIRCd_Version for - * further usage, for example by the IRC command VERSION and the --version - * command line switch. + * Generate ngIRCd "version strings". + * + * The ngIRCd version information is generated once and then stored in the + * NGIRCd_Version and NGIRCd_VersionAddition string variables for further + * usage, for example by the IRC command "VERSION" and the --version command + * line switch. */ static void Fill_Version( void ) @@ -407,7 +409,7 @@ Fill_Version( void ) snprintf(NGIRCd_Version, sizeof NGIRCd_Version, "%s %s-%s", PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_VersionAddition); - } /* Fill_Version */ +} /* Fill_Version */ /** @@ -467,7 +469,8 @@ Pidfile_Delete( void ) /** * Create the file containing the process ID of ngIRCd ("PID file"). - * @param pid The process ID to be stored in this file. + * + * @param pid The process ID to be stored in this file. */ static void Pidfile_Create(pid_t pid) @@ -505,6 +508,8 @@ Pidfile_Create(pid_t pid) /** * Redirect stdin, stdout and stderr to apropriate file handles. + * + * @param fd The file handle stdin, stdout and stderr should be redirected to. */ static void Setup_FDStreams(int fd) @@ -520,6 +525,13 @@ Setup_FDStreams(int fd) } /* Setup_FDStreams */ +/** + * Get user and group ID of unprivileged "nobody" user. + * + * @param uid User ID + * @param gid Group ID + * @return true on success. + */ static bool NGIRCd_getNobodyID(uid_t *uid, gid_t *gid ) { @@ -544,14 +556,21 @@ NGIRCd_getNobodyID(uid_t *uid, gid_t *gid ) if ( !pwd->pw_uid || !pwd->pw_gid) return false; - *uid = pwd->pw_uid; + *uid = pwd->pw_uid; *gid = pwd->pw_gid; endpwent(); - return true; -} + return true; +} /* NGIRCd_getNobodyID */ +/** + * Initialize ngIRCd daemon. + * + * @param NGIRCd_NoDaemon Set to true if ngIRCd should run in the + * foreground and not as a daemon. + * @return true on success. + */ static bool NGIRCd_Init( bool NGIRCd_NoDaemon ) { @@ -702,7 +721,7 @@ NGIRCd_Init( bool NGIRCd_NoDaemon ) if (fd > 2) close(fd); return false; -} +} /* NGIRCd_Init */ /* -eof- */