X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fmain.c;h=cce178a1ffe458d90de0efd9fcb64aabc4ce580a;hb=c26a4b9cbad862bce96e3dadcfaa85f7e2223de3;hp=6892907142cf9eaceeb64882c501567e212a3d94;hpb=6a6908d7031a79b5767d86a4da056f65a742ac9f;p=umurmur.git diff --git a/src/main.c b/src/main.c index 6892907..cce178a 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ -/* Copyright (C) 2009, Martin Johansson - Copyright (C) 2005-2009, Thorvald Natvig +/* Copyright (C) 2009-2010, Martin Johansson + Copyright (C) 2005-2010, Thorvald Natvig All rights reserved. @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -45,8 +46,9 @@ #include "log.h" #include "client.h" #include "conf.h" +#include "version.h" -#define UMURMUR_VERSION "0.1.0" +char system_string[64], version_string[64]; void lockfile(const char *pidfile) { @@ -57,7 +59,7 @@ void lockfile(const char *pidfile) if (lfp < 0) Log_fatal("Cannot open PID-file %s for writing", pidfile); - sprintf(str,"%d\n",getpid()); + sprintf(str,"%d\n", getpid()); write(lfp, str, strlen(str)); /* record pid to lockfile */ Log_info("PID-file: %s", pidfile); } @@ -119,11 +121,12 @@ void setscheduler() void printhelp() { - printf("uMurmur version %s. Mumble protocol %d\n", UMURMUR_VERSION, MESSAGE_STREAM_VERSION); + printf("uMurmur version %s. Mumble protocol %d.%d.%d\n", UMURMUR_VERSION, PROTVER_MAJOR, PROTVER_MINOR, PROTVER_PATCH); printf("Usage: umurmurd [-d] [-p ] [-c ] [-h]\n"); printf(" -d - Do not deamonize\n"); printf(" -p - Write PID to this file\n"); printf(" -c - Specify configuration file\n"); + printf(" -r - Run with realtime priority\n"); printf(" -h - Print this help\n"); exit(0); } @@ -131,11 +134,13 @@ void printhelp() int main(int argc, char **argv) { bool_t nodaemon = false; + bool_t realtime = false; char *conffile = NULL, *pidfile = NULL; int c; + struct utsname utsbuf; /* Arguments */ - while ((c = getopt(argc, argv, "dp:c:h")) != EOF) { + while ((c = getopt(argc, argv, "drp:c:h")) != EOF) { switch(c) { case 'c': conffile = optarg; @@ -149,6 +154,9 @@ int main(int argc, char **argv) case 'h': printhelp(); break; + case 'r': + realtime = true; + break; default: fprintf(stderr, "Unrecognized option\n"); printhelp(); @@ -176,13 +184,25 @@ int main(int argc, char **argv) signal(SIGTTIN, SIG_IGN); signal(SIGHUP, signal_handler); /* catch hangup signal */ signal(SIGTERM, signal_handler); /* catch kill signal */ - + + /* Build system string */ + if (uname(&utsbuf) == 0) { + snprintf(system_string, 64, "%s %s", utsbuf.sysname, utsbuf.machine); + snprintf(version_string, 64, "%s", utsbuf.release); + } + else { + snprintf(system_string, 64, "unknown unknown"); + snprintf(version_string, 64, "unknown"); + } + /* Initializing */ SSL_init(); Chan_init(); Client_init(); - setscheduler(); + if (realtime) + setscheduler(); + Server_run(); SSL_deinit();