// -*- 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 <X11/Xatom.h>
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif // HAVE_UNISTD_H
-#if defined(HAVE_PROCESS_H) && defined(__EMX__)
-# include <process.h>
-#endif // HAVE_PROCESS_H __EMX__
+// this is not checked in configure anymore!!
+//#if defined(HAVE_PROCESS_H) && defined(__EMX__)
+//# include <process.h>
+//#endif // HAVE_PROCESS_H __EMX__
+
+#include "../src/gettext.h"
+#define _(str) gettext(str)
-#include <assert.h>
}
#include <algorithm>
+#include <cassert>
+#include <cstdio>
+#include <cstring>
+#include <cstdlib>
#include "util.hh"
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('/')));
}
void bexec(const string& command, const string& displaystring) {
-#ifndef __EMX__
+//#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__
- 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__
}
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)