diff options
author | dimitri staessens <[email protected]> | 2016-07-06 19:18:15 +0200 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2016-07-06 19:18:15 +0200 |
commit | dbed235ff41b9ae72b188e57888bacc984a43d75 (patch) | |
tree | 0966469900595c3f51acac2d9bb89429a826f1b0 /src/ipcpd/ipcp.c | |
parent | 03256707111ce2409de0857c65482512e42d9238 (diff) | |
parent | 4fb0d2bfb7486936ef05721667f03eccf664d56e (diff) | |
download | ouroboros-dbed235ff41b9ae72b188e57888bacc984a43d75.tar.gz ouroboros-dbed235ff41b9ae72b188e57888bacc984a43d75.zip |
Merge branch 'be' of bitbucket.org:ouroboros-rina/ouroboros into be-clean-exit
Diffstat (limited to 'src/ipcpd/ipcp.c')
-rw-r--r-- | src/ipcpd/ipcp.c | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c index 579203c2..28004a92 100644 --- a/src/ipcpd/ipcp.c +++ b/src/ipcpd/ipcp.c @@ -22,13 +22,15 @@ #include <ouroboros/config.h> #include <ouroboros/ipcp.h> -#include <sys/socket.h> -#include <stdlib.h> -#include "ipcp.h" #define OUROBOROS_PREFIX "ipcpd/ipcp" #include <ouroboros/logs.h> +#include <string.h> +#include <sys/socket.h> +#include <stdlib.h> +#include "ipcp.h" + struct ipcp * ipcp_instance_create() { struct ipcp * i = malloc(sizeof *i); @@ -45,15 +47,42 @@ struct ipcp * ipcp_instance_create() return i; } -int ipcp_arg_check(int argc, char * argv[]) +int ipcp_parse_arg(int argc, char * argv[]) { - if (argc != 2) + char * log_file; + size_t len = 0; + + if (!(argc == 3 || argc == 2)) return -1; /* argument 1: api of irmd */ if (atoi(argv[1]) == 0) return -1; + if (argv[2] == NULL) + return 0; + + len += strlen(INSTALL_PREFIX); + len += strlen(LOG_DIR); + len += strlen(argv[2]); + + log_file = malloc(len + 1); + if (log_file == NULL) { + LOG_ERR("Failed to malloc"); + return -1; + } + + strcpy(log_file, INSTALL_PREFIX); + strcat(log_file, LOG_DIR); + strcat(log_file, argv[2]); + log_file[len] = '\0'; + + if (set_logfile(log_file)) + LOG_ERR("Cannot open %s, falling back to stdout for logs.", + log_file); + + free(log_file); + return 0; } |