# include <process.h>
#endif // HAVE_PROCESS_H __EMX__
+#include "gettext.h"
+#define _(str) gettext(str)
+
#include <assert.h>
}
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('/')));
}
#ifndef __EMX__
if (! fork()) {
setsid();
- int ret = putenv(const_cast<char *>(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__
}
-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");
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)