/** @param s Number of seconds to sleep for */
void
-dcpomatic_sleep (int s)
+dcpomatic_sleep_seconds (int s)
{
#ifdef DCPOMATIC_POSIX
sleep (s);
Waker::nudge ()
{
#ifdef DCPOMATIC_WINDOWS
+ boost::mutex::scoped_lock lm (_mutex);
SetThreadExecutionState (ES_SYSTEM_REQUIRED);
#endif
}
Waker::Waker ()
{
#ifdef DCPOMATIC_OSX
+ boost::mutex::scoped_lock lm (_mutex);
/* We should use this */
// IOPMAssertionCreateWithName (kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, CFSTR ("Encoding DCP"), &_assertion_id);
/* but it's not available on 10.5, so we use this */
Waker::~Waker ()
{
#ifdef DCPOMATIC_OSX
+ boost::mutex::scoped_lock lm (_mutex);
IOPMAssertionRelease (_assertion_id);
#endif
}
return getenv("HOME");
#endif
#ifdef DCPOMATIC_WINDOWS
- return getenv("HOMEDRIVE") / getenv("HOMEPATH");
+ 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 "";
+}
+
+/** @return true if this process is a 32-bit one running on a 64-bit-capable OS */
+bool
+running_32_on_64 ()
+{
+#ifdef DCPOMATIC_WINDOWS
+ BOOL p;
+ IsWow64Process (GetCurrentProcess(), &p);
+ return p;
+#endif
+ /* XXX: assuming nobody does this on Linux / OS X */
+ return false;
+}