X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Futil.cc;h=a3ec0034ac35e9105d1a8a1a6086303c3e52f9ea;hb=8b73f6f02517e717842d122d82e1eb08cda95e19;hp=39ea0f6cc7a85a9326e74a9588ee801dad4ac10e;hpb=19bfac5195a1917f4a0bbcf910e90d5b800c5146;p=chaz%2Fopenbox diff --git a/otk/util.cc b/otk/util.cc index 39ea0f6c..a3ec0034 100644 --- a/otk/util.cc +++ b/otk/util.cc @@ -23,6 +23,9 @@ extern "C" { # include #endif // HAVE_PROCESS_H __EMX__ +#include "gettext.h" +#define _(str) gettext(str) + #include } @@ -39,7 +42,6 @@ string expandTilde(const string& s) { const char* const home = getenv("HOME"); if (home == NULL) return s; -printf("tilde: getenv(DISPLAY)=%s\n", getenv("DISPLAY")); return string(home + s.substr(s.find('/'))); } @@ -49,9 +51,8 @@ void bexec(const string& command, const string& displaystring) { #ifndef __EMX__ if (! fork()) { setsid(); - int ret = putenv(const_cast(displaystring.c_str())); - assert(ret != -1); - ret = execl("/bin/sh", "/bin/sh", "-c", command.c_str(), NULL); + putenv(displaystring); + int ret = execl("/bin/sh", "/bin/sh", "-c", command.c_str(), NULL); exit(ret); } #else // __EMX__ @@ -102,6 +103,19 @@ string itostring(long i) { return tmp; } +void putenv(const std::string &data) +{ + char *c = new char[data.size() + 1]; + std::string::size_type i, max; + for (i = 0, max = data.size(); i < max; ++i) + c[i] = data[i]; + c[i] = 0; + if (::putenv(c)) { + printf(_("warning: couldn't set environment variable\n")); + perror("putenv()"); + } +} + string basename (const string& path) { string::size_type slash = path.rfind('/'); if (slash == string::npos)