diff options
author | Sander Vrijders <[email protected]> | 2016-07-06 18:58:56 +0200 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2016-07-06 18:58:56 +0200 |
commit | 4a3e3f1b9eef457f3f216d2b2a4ccf0a32eb9599 (patch) | |
tree | 67fe25649a0258596bbbe122c19fe3a09ae2a203 /src/ipcpd/ipcp.c | |
parent | 6c799af1b4cf86a32979d98034c560fb976a9caf (diff) | |
download | ouroboros-4a3e3f1b9eef457f3f216d2b2a4ccf0a32eb9599.tar.gz ouroboros-4a3e3f1b9eef457f3f216d2b2a4ccf0a32eb9599.zip |
lib, irmd, ipcpd: Provide the feature to write to logs
Writing output to log files is now enabled by default. Logs are
written to <INSTALL_PREFIX>/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
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; } |