]> Dogcows Code - chaz/openbox/blobdiff - util/epist/screen.cc
window resistance complete
[chaz/openbox] / util / epist / screen.cc
index 80a579cc2d0e0c5fdeacb9249a8f513af8260691..1dc32f0231b566c1b8413973ceeff493a78e9275 100644 (file)
@@ -65,7 +65,7 @@ screen::screen(epist *epist, int number)
   _managed = false;
   while (! (_epist->doShutdown() || _managed || count <= 0)) {
     if (! (_managed = findSupportingWM()))
-      usleep(1000);
+      sleep(1);
     --count;
   }
   if (_managed)
@@ -455,21 +455,13 @@ void screen::updateActiveWindow() {
 void screen::execCommand(const string &cmd) const {
   pid_t pid;
   if ((pid = fork()) == 0) {
-    extern char **environ;
-
-    char *const argv[] = {
-      "sh",
-      "-c",
-      const_cast<char *>(cmd.c_str()),
-      0
-    };
     // make the command run on the correct screen
     if (putenv(const_cast<char*>(_info->displayString().c_str()))) {
       cout << "warning: couldn't set environment variable 'DISPLAY'\n";
       perror("putenv()");
     }
-    execve("/bin/sh", argv, environ);
-    exit(127);
+    execl("/bin/sh", "sh", "-c", cmd.c_str(), NULL);
+    exit(-1);
   } else if (pid == -1) {
     cout << _epist->getApplicationName() <<
       ": Could not fork a process for executing a command\n";
@@ -523,6 +515,7 @@ void screen::cycleWindow(const bool forward, const bool allscreens,
 
     // found a good window!
     t->focus();
+    return;
   }
 }
 
This page took 0.020106 seconds and 4 git commands to generate.