X-Git-Url: http://git.itanic.dy.fi/?p=log-plotter;a=blobdiff_plain;f=main.c;h=9ac44f9ea9487bdd7bc4887aa23468b23c08faf4;hp=065d9dc2b1f20a19ecaf5a07e95409866a16382a;hb=9636425fa0a941f6f92e906b0e578b9869b3d043;hpb=c09aecf6425bcb67d0deb8748ef86379211980b8 diff --git a/main.c b/main.c index 065d9dc..9ac44f9 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,9 @@ #include #include +#include #include +#include +#include #include "options.h" #include "baud.h" @@ -10,7 +13,7 @@ int main(int argc, char *argv[]) { struct epoll_event ev; struct plotter_options options; - int fd, baud, ret; + int fd, baud, ret, out_fd = STDOUT_FILENO; int epoll_fd; char buf[256]; @@ -26,8 +29,22 @@ int main(int argc, char *argv[]) if (baud != options.baud_rate) { pr_err("Failed to set baudrate to %d, only got %d\n", options.baud_rate, baud); - close(fd); - return 1; + ret = 1; + goto out; + } + + if (options.output_path) { + pr_debug("Opening %s for writing the log file\n", + options.output_path); + + out_fd = open(options.output_path, + O_CREAT | O_APPEND | O_WRONLY, 0664); + if (out_fd < 0) { + pr_err("Failed to open file %s for writing: %m\n", + options.output_path); + ret = 1; + goto out; + } } epoll_fd = epoll_create(1); @@ -67,6 +84,7 @@ int main(int argc, char *argv[]) } } +out: close(fd); - return 0; + return ret; }