From 4a3e3f1b9eef457f3f216d2b2a4ccf0a32eb9599 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 6 Jul 2016 18:58:56 +0200 Subject: lib, irmd, ipcpd: Provide the feature to write to logs Writing output to log files is now enabled by default. Logs are written to /var/log/ouroboros, which is created on install. There is a log file for the irmd and one per IPCP. To still get (colored) output on stdout, provide the --stdout switch when starting the irmd. Fixes #17 --- src/ipcpd/ipcp.c | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) (limited to 'src/ipcpd/ipcp.c') 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 #include -#include -#include -#include "ipcp.h" #define OUROBOROS_PREFIX "ipcpd/ipcp" #include +#include +#include +#include +#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; } -- cgit v1.2.3