diff options
author | dimitri staessens <[email protected]> | 2016-07-06 19:14:42 +0200 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2016-07-06 19:14:42 +0200 |
commit | 4fb0d2bfb7486936ef05721667f03eccf664d56e (patch) | |
tree | c3753f440085a2126e399cb8667d99eb91a8ad6a /src/ipcpd/ipcp.c | |
parent | 90c3c96b5c9b1e4db6bb6d1894a21aec54a965b1 (diff) | |
parent | bb85e730783ae34808e42c3107759f43106a9b1d (diff) | |
download | ouroboros-4fb0d2bfb7486936ef05721667f03eccf664d56e.tar.gz ouroboros-4fb0d2bfb7486936ef05721667f03eccf664d56e.zip |
Merged in sandervrijders/ouroboros/be (pull request #161)
lib, irmd, ipcpd: Provide the feature to write to logs
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; } |