X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcross_linux.cc;h=ee49d50bc8ef8972da9f13d25b7f90680fc49396;hb=ccacce39c39d16977ab6c1592fcb6e941b05ddff;hp=326e590b8b8ce7e2d3840024f06dad240f836d5f;hpb=f3e52bd763513190de60e7f6b68c50b34ab80fee;p=dcpomatic.git diff --git a/src/lib/cross_linux.cc b/src/lib/cross_linux.cc index 326e590b8..ee49d50bc 100644 --- a/src/lib/cross_linux.cc +++ b/src/lib/cross_linux.cc @@ -52,13 +52,10 @@ DCPOMATIC_ENABLE_WARNINGS 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; @@ -371,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) { @@ -382,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; } @@ -447,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; +} +