/*
- Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "cross.h"
#include "compose.hpp"
#include "log.h"
+#include "dcpomatic_log.h"
+#include "config.h"
#include "exceptions.h"
extern "C" {
#include <libavformat/avio.h>
#include <windows.h>
#undef DATADIR
#include <shlwapi.h>
+#include <shellapi.h>
+#include <fcntl.h>
#endif
#ifdef DCPOMATIC_OSX
#include <sys/sysctl.h>
#include "i18n.h"
-#define LOG_GENERAL(...) log->log (String::compose (__VA_ARGS__), LogEntry::TYPE_GENERAL);
-#define LOG_ERROR(...) log->log (String::compose (__VA_ARGS__), LogEntry::TYPE_ERROR);
-#define LOG_ERROR_NC(...) log->log (__VA_ARGS__, LogEntry::TYPE_ERROR);
-
using std::pair;
using std::list;
using std::ifstream;
}
void
-run_ffprobe (boost::filesystem::path content, boost::filesystem::path out, shared_ptr<Log> log)
+run_ffprobe (boost::filesystem::path content, boost::filesystem::path out)
{
#ifdef DCPOMATIC_WINDOWS
SECURITY_ATTRIBUTES security;
}
void
-start_batch_converter (boost::filesystem::path dcpomatic)
+start_tool (boost::filesystem::path dcpomatic, string executable,
+#ifdef DCPOMATIC_OSX
+ string app
+#else
+ string
+#endif
+ )
{
#if defined(DCPOMATIC_LINUX) || defined(DCPOMATIC_WINDOWS)
- boost::filesystem::path batch = dcpomatic.parent_path() / "dcpomatic2_batch";
+ boost::filesystem::path batch = dcpomatic.parent_path() / executable;
#endif
#ifdef DCPOMATIC_OSX
batch = batch.parent_path (); // Contents
batch = batch.parent_path (); // DCP-o-matic.app
batch = batch.parent_path (); // Applications
- batch /= "DCP-o-matic\\ 2\\ Batch\\ Converter.app";
+ batch /= app;
batch /= "Contents";
batch /= "MacOS";
- batch /= "dcpomatic2_batch";
+ batch /= executable;
#endif
#if defined(DCPOMATIC_LINUX) || defined(DCPOMATIC_OSX)
pid_t pid = fork ();
if (pid == 0) {
- std::cout << "start " << batch << " from " << dcpomatic << "\n";
int const r = system (batch.string().c_str());
exit (WEXITSTATUS (r));
}
#endif
}
+void
+start_batch_converter (boost::filesystem::path dcpomatic)
+{
+ start_tool (dcpomatic, "dcpomatic2_batch", "DCP-o-matic\\ 2\\ Batch\\ Converter.app");
+}
+
+void
+start_player (boost::filesystem::path dcpomatic)
+{
+ start_tool (dcpomatic, "dcpomatic2_player", "DCP-o-matic\\ 2\\ Player.app");
+}
+
uint64_t
thread_id ()
{
}
}
#endif
+
+boost::filesystem::path
+home_directory ()
+{
+#if defined(DCPOMATIC_LINUX) || defined(DCPOMATIC_OSX)
+ return getenv("HOME");
+#endif
+#ifdef DCPOMATIC_WINDOWS
+ return boost::filesystem::path(getenv("HOMEDRIVE")) / boost::filesystem::path(getenv("HOMEPATH"));
+#endif
+}
+
+string
+command_and_read (string cmd)
+{
+#ifdef DCPOMATIC_LINUX
+ FILE* pipe = popen (cmd.c_str(), "r");
+ if (!pipe) {
+ throw runtime_error ("popen failed");
+ }
+
+ string result;
+ char buffer[128];
+ try {
+ while (fgets(buffer, sizeof(buffer), pipe)) {
+ result += buffer;
+ }
+ } catch (...) {
+ pclose (pipe);
+ throw;
+ }
+
+ pclose (pipe);
+ return result;
+#endif
+
+ return "";
+}