From 80fc5849233c63b60c91e3fc1bf106b810e45c36 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 7 Aug 2014 06:35:54 -0700 Subject: Fix for GitHub issue #97 --- node/Utils.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'node/Utils.cpp') diff --git a/node/Utils.cpp b/node/Utils.cpp index b1912198..e1dbedaa 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #endif @@ -50,6 +51,28 @@ namespace ZeroTier { const char Utils::HEXCHARS[16] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' }; +bool Utils::redirectUnixOutputs(const char *stdoutPath,const char *stderrPath) + throw() +{ + int fdout = ::open(stdoutPath,O_WRONLY|O_CREAT); + if (fdout > 0) { + int fderr; + if (stderrPath) { + fderr = ::open(stderrPath,O_WRONLY|O_CREAT); + if (fderr <= 0) { + ::close(fdout); + return false; + } + } else fderr = fdout; + ::close(STDOUT_FILENO); + ::close(STDERR_FILENO); + ::dup2(fdout,STDOUT_FILENO); + ::dup2(fderr,STDERR_FILENO); + return true; + } + return false; +} + std::map Utils::listDirectory(const char *path) { std::map r; -- cgit v1.2.3