X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Ftincd.c;h=e71c32116b292e59867df2411aad7270cf890e29;hb=471308e1636e7a06e1d9ebc98e82b1c0c5150dde;hp=185a96a68f0af637f8cf1f5e4bb2a621f870d232;hpb=5db596c6844169f1eb5f804b72abe99d067aaa5a;p=tinc diff --git a/src/tincd.c b/src/tincd.c index 185a96a6..e71c3211 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -17,31 +17,18 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: tincd.c,v 1.10.4.72 2003/07/12 17:41:47 guus Exp $ + $Id: tincd.c,v 1.10.4.75 2003/07/22 12:58:34 guus Exp $ */ -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "system.h" /* Darwin (MacOS/X) needs the following definition... */ #ifndef _P1003_1B_VISIBLE #define _P1003_1B_VISIBLE #endif +#ifdef HAVE_SYS_MMAN_H #include - -#ifdef HAVE_SYS_IOCTL_H -# include #endif #include @@ -51,18 +38,14 @@ #include -#include -#include - #include "conf.h" +#include "logger.h" #include "net.h" #include "netutl.h" #include "process.h" #include "protocol.h" -#include "subnet.h" -#include "logger.h" - -#include "system.h" +#include "utils.h" +#include "xalloc.h" /* The name this program was run with. */ char *program_name = NULL; @@ -107,6 +90,7 @@ static struct option const long_options[] = { {"bypass-security", no_argument, &bypass_security, 1}, {"mlock", no_argument, &do_mlock, 1}, {"logfile", optional_argument, NULL, 'F'}, + {"pidfile", required_argument, NULL, 'P'}, {NULL, 0, NULL, 0} }; @@ -124,7 +108,8 @@ static void usage(int status) " -n, --net=NETNAME Connect to net NETNAME.\n" " -K, --generate-keys[=BITS] Generate public/private RSA keypair.\n" " -L, --mlock Lock tinc into main memory.\n" - " -F, --logfile[=FILENAME] Write log entries to a logfile.\n" + " --logfile[=FILENAME] Write log entries to a logfile.\n" + " --pidfile=FILENAME Write PID to FILENAME.\n" " --help Display this help and exit.\n" " --version Output version information and exit.\n\n")); printf(_("Report bugs to tinc@nl.linux.org.\n")); @@ -138,14 +123,13 @@ static void parse_options(int argc, char **argv, char **envp) int r; int option_index = 0; - while((r = getopt_long(argc, argv, "c:DLd::k::n:K::F::", long_options, &option_index)) != EOF) { + while((r = getopt_long(argc, argv, "c:DLd::k::n:K::", long_options, &option_index)) != EOF) { switch (r) { case 0: /* long option */ break; case 'c': /* config file */ - confbase = xmalloc(strlen(optarg) + 1); - strcpy(confbase, optarg); + confbase = xstrdup(optarg); break; case 'D': /* no detach */ @@ -219,6 +203,10 @@ static void parse_options(int argc, char **argv, char **envp) logfilename = xstrdup(optarg); break; + case 'P': /* write PID to a file */ + pidfilename = xstrdup(optarg); + break; + case '?': usage(1); @@ -325,30 +313,25 @@ static int keygen(int bits) */ static void make_names(void) { - if(netname) { - if(!pidfilename) - asprintf(&pidfilename, LOCALSTATEDIR "/run/tinc.%s.pid", netname); - if(!logfilename) - asprintf(&logfilename, LOCALSTATEDIR "/log/tinc.%s.log", netname); + if(netname) + asprintf(&identname, "tinc.%s", netname); + else + identname = xstrdup("tinc"); + + if(!pidfilename) + asprintf(&pidfilename, LOCALSTATEDIR "/run/%s.pid", identname); + + if(!logfilename) + asprintf(&logfilename, LOCALSTATEDIR "/log/%s.log", identname); + if(netname) { if(!confbase) asprintf(&confbase, "%s/tinc/%s", CONFDIR, netname); else logger(LOG_INFO, _("Both netname and configuration directory given, using the latter...")); - - if(!identname) - asprintf(&identname, "tinc.%s", netname); } else { - if(!pidfilename) - pidfilename = LOCALSTATEDIR "/run/tinc.pid"; - if(!logfilename) - logfilename = LOCALSTATEDIR "/log/tinc.log"; - if(!confbase) asprintf(&confbase, "%s/tinc", CONFDIR); - - if(!identname) - identname = "tinc"; } }