Writer on macOS runs as root, so trying to use the config_path() v2.15.63
authorCarl Hetherington <cth@carlh.net>
Mon, 27 Apr 2020 21:51:03 +0000 (23:51 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 27 Apr 2020 21:51:03 +0000 (23:51 +0200)
to log to will end up trying to write to root's home.  Instead,
log to stdout as the process control stuff redirects that into
/var/log anyway.

src/lib/wscript
src/tools/dcpomatic_disk_writer.cc

index 8020205273bc5b2825e99378f8e036755a108ddb..1eac718e3184978a6da4f74cc34b620e528cfedf 100644 (file)
@@ -165,6 +165,7 @@ sources = """
           transcode_job.cc
           types.cc
           signal_manager.cc
+          stdout_log.cc
           update_checker.cc
           upload_job.cc
           uploader.cc
index c38e35e3ee8cf95406ba0a2a3478763e3db6456f..e63a7a7a9d35bbb97a21644ef3037aba053370b8 100644 (file)
@@ -42,6 +42,7 @@ extern "C" {
 #endif
 
 #ifdef DCPOMATIC_OSX
+#include "lib/stdout_log.h"
 #undef nil
 extern "C" {
 #include <lwext4/file_dev.h>
@@ -504,11 +505,20 @@ try
 int
 main ()
 {
+#ifdef DCPOMATIC_OSX
+       /* On macOS this is running as root, so config_path() will be somewhere in root's
+        * home.  Instead, just write to stdout as the macOS process control stuff will
+        * redirect this to a file in /var/log
+        */
+       dcpomatic_log.reset(new StdoutLog(LogEntry::TYPE_DISK));
+       LOG_DISK_NC("dcpomatic_disk_writer started");
+#else
        /* XXX: this is a hack, but I expect we'll need logs and I'm not sure if there's
         * a better place to put them.
         */
        dcpomatic_log.reset(new FileLog(config_path() / "disk_writer.log", LogEntry::TYPE_DISK));
        LOG_DISK_NC("dcpomatic_disk_writer started");
+#endif
 
        try {
                nanomsg = new Nanomsg (false);