X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcross_linux.cc;h=262ba59ce4cd5c9650234fef4c575edd97ebdc46;hb=3a495e7550759396b79410fa08899829d6636438;hp=2d43d38019c7d2697af5fb498b3894be60d7724d;hpb=66f66acc99d6de49a038735a2d3236c7a8ceedd3;p=dcpomatic.git diff --git a/src/lib/cross_linux.cc b/src/lib/cross_linux.cc index 2d43d3801..262ba59ce 100644 --- a/src/lib/cross_linux.cc +++ b/src/lib/cross_linux.cc @@ -268,29 +268,6 @@ home_directory () return getenv("HOME"); } -string -command_and_read (string cmd) -{ - 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; -} - /** @return true if this process is a 32-bit one running on a 64-bit-capable OS */ bool running_32_on_64 () @@ -396,16 +373,23 @@ unprivileged () } } + +bool PrivilegeEscalator::test = false; + PrivilegeEscalator::~PrivilegeEscalator () { - unprivileged (); + if (!test) { + unprivileged (); + } } PrivilegeEscalator::PrivilegeEscalator () { - int const r = seteuid(0); - if (r < 0) { - throw PrivilegeError (String::compose("seteuid() call failed with %1", errno)); + if (!test) { + int const r = seteuid(0); + if (r < 0) { + throw PrivilegeError (String::compose("seteuid() call failed with %1", errno)); + } } }