X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Futil.cc;h=a2b784e7b5a01427ed1bc2b8d32ed48ad0f83207;hb=2c977ae7ffe1e287264989669d2cfd2eb499d4ee;hp=ebca51d51ef0f6fe38c4a4ee4fcbebdaa4c3fe62;hpb=06388d73b75d985ab10586bd116de7fac4ea2b8e;p=chaz%2Fopenbox diff --git a/otk/util.cc b/otk/util.cc index ebca51d5..a2b784e7 100644 --- a/otk/util.cc +++ b/otk/util.cc @@ -7,6 +7,10 @@ extern "C" { #include +#ifdef HAVE_STDIO_H +#include +#endif + #ifdef HAVE_STRING_H #include #endif @@ -23,6 +27,9 @@ extern "C" { # include #endif // HAVE_PROCESS_H __EMX__ +#include "gettext.h" +#define _(str) gettext(str) + #include } @@ -48,9 +55,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__ @@ -59,30 +65,6 @@ void bexec(const string& command, const string& displaystring) { } -string textPropertyToString(Display *display, XTextProperty& text_prop) { - string ret; - - if (text_prop.value && text_prop.nitems > 0) { - if (text_prop.encoding == XA_STRING) { - ret = (char *) text_prop.value; - } else { - text_prop.nitems = strlen((char *) text_prop.value); - - char **list; - int num; - if (XmbTextPropertyToTextList(display, &text_prop, - &list, &num) == Success && - num > 0 && *list) { - ret = *list; - XFreeStringList(list); - } - } - } - - return ret; -} - - string itostring(unsigned long i) { if (i == 0) return string("0"); @@ -101,6 +83,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)