X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Futil.cc;h=03df393e40139d5a45052599b1801631ed412b87;hb=dca8c61a91cab29128a72f252b70f4bd9f7786ff;hp=91d6f13a5471f98b69c71744216a03f3c638c571;hpb=35fcb62ddd4861f857d93941407e3d87d444b2cc;p=chaz%2Fopenbox diff --git a/otk/util.cc b/otk/util.cc index 91d6f13a..03df393e 100644 --- a/otk/util.cc +++ b/otk/util.cc @@ -1,32 +1,29 @@ // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- -#ifdef HAVE_CONFIG_H -# include "../config.h" -#endif // HAVE_CONFIG_H +#include "config.h" extern "C" { #include -#ifdef HAVE_STRING_H -#include -#endif - -#ifdef HAVE_STDLIB_H -#include -#endif - #ifdef HAVE_UNISTD_H #include #endif // HAVE_UNISTD_H -#if defined(HAVE_PROCESS_H) && defined(__EMX__) -# include -#endif // HAVE_PROCESS_H __EMX__ +// this is not checked in configure anymore!! +//#if defined(HAVE_PROCESS_H) && defined(__EMX__) +//# include +//#endif // HAVE_PROCESS_H __EMX__ + +#include "../src/gettext.h" +#define _(str) gettext(str) -#include } #include +#include +#include +#include +#include #include "util.hh" @@ -45,41 +42,16 @@ string expandTilde(const string& s) { void bexec(const string& command, const string& displaystring) { -#ifndef __EMX__ +//#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__ - spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", command.c_str(), NULL); -#endif // !__EMX__ -} - - -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; +//#else // __EMX__ +// spawnlp(P_NOWAIT, "cmd.exe", "cmd.exe", "/c", command.c_str(), NULL); +//#endif // !__EMX__ } @@ -101,14 +73,25 @@ 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()"); + } } -#ifndef HAVE_BASENAME string basename (const string& path) { string::size_type slash = path.rfind('/'); if (slash == string::npos) return path; return path.substr(slash+1); } -#endif // HAVE_BASENAME + +}