X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcross_linux.cc;h=ee49d50bc8ef8972da9f13d25b7f90680fc49396;hb=07b21bb92a8d54c6c03de9aadc63ab93b65d9bc5;hp=a3dbdebf2a4b9fb5e3c10a1959d0d2b5985c19c0;hpb=8963f0007af1a312017b9627c18b82ec2a577591;p=dcpomatic.git diff --git a/src/lib/cross_linux.cc b/src/lib/cross_linux.cc index a3dbdebf2..ee49d50bc 100644 --- a/src/lib/cross_linux.cc +++ b/src/lib/cross_linux.cc @@ -26,11 +26,14 @@ #include "dcpomatic_log.h" #include "exceptions.h" #include "log.h" +#include "warnings.h" #include #include +DCPOMATIC_DISABLE_WARNINGS extern "C" { #include } +DCPOMATIC_ENABLE_WARNINGS #include #if BOOST_VERSION >= 106100 #include @@ -49,13 +52,10 @@ extern "C" { using std::cerr; using std::cout; -using std::function; using std::ifstream; using std::list; using std::make_pair; using std::pair; -using std::runtime_error; -using std::shared_ptr; using std::string; using std::vector; using std::wstring; @@ -368,7 +368,6 @@ bool Drive::unmount () { for (auto i: _mount_points) { - PrivilegeEscalator esc; int const r = umount(i.string().c_str()); LOG_DISK("Tried to unmount %1 and got %2 and %3", i.string(), r, errno); if (r == -1) { @@ -379,47 +378,15 @@ Drive::unmount () } -void -unprivileged () -{ - uid_t ruid, euid, suid; - if (getresuid(&ruid, &euid, &suid) == -1) { - cerr << "getresuid() failed.\n"; - } - if (seteuid(ruid) == -1) { - cerr << "seteuid() failed.\n"; - } -} - - -bool PrivilegeEscalator::test = false; - - -PrivilegeEscalator::~PrivilegeEscalator () -{ - if (!test) { - unprivileged (); - } -} - - -PrivilegeEscalator::PrivilegeEscalator () -{ - if (!test) { - int const r = seteuid(0); - if (r < 0) { - throw PrivilegeError (String::compose("seteuid() call failed with %1", errno)); - } - } -} - - boost::filesystem::path -config_path () +config_path (optional version) { boost::filesystem::path p; p /= g_get_user_config_dir (); p /= "dcpomatic2"; + if (version) { + p /= *version; + } return p; } @@ -444,3 +411,22 @@ fix_long_path (boost::filesystem::path path) return path; } + +bool +show_in_file_manager (boost::filesystem::path dir, boost::filesystem::path) +{ + int r = system ("which nautilus"); + if (WEXITSTATUS(r) == 0) { + r = system (String::compose("nautilus \"%1\"", dir.string()).c_str()); + return static_cast(WEXITSTATUS(r)); + } else { + int r = system ("which konqueror"); + if (WEXITSTATUS(r) == 0) { + r = system (String::compose("konqueror \"%1\"", dir.string()).c_str()); + return static_cast(WEXITSTATUS(r)); + } + } + + return true; +} +