logo       

[PATCH 6/11] icesm: wait for the end of the .icewm/shutdown script: msg#00019

window-managers.icewm.devel

Subject: [PATCH 6/11] icesm: wait for the end of the .icewm/shutdown script

a) this waits for the end of the .icewm/shutdown script
but this didn't solve my problem with nautilus
b) always return a pid from run/start functions

bert wesarg

---
diff -urp old/src/icesm.cc new/src/icesm.cc
--- old/src/icesm.cc 2006-09-10 18:12:11.000000000 +0200
+++ new/src/icesm.cc 2006-11-12 19:18:47.050732961 +0100
@@ -17,12 +17,14 @@ public:
catchSignal(SIGINT);
}

- void runScript(const char *scriptName) {
+ void runScript(const char *scriptName, bool wait = false) {
char *scriptFile = app->findConfigFile(scriptName, X_OK);
const char *args[] = { scriptFile, 0, 0 };

MSG(("Running session script: %s", scriptFile));
- app->runProgram(scriptFile, args);
+ int pid = app->runProgram(scriptFile, args);
+ if (wait)
+ app->waitProgram(pid);
delete[] scriptFile;
}

@@ -110,7 +112,7 @@ int main(int argc, char **argv) {

xapp.mainLoop();

- xapp.runScript("shutdown");
+ xapp.runScript("shutdown", true);
xapp.runIcewmtray(true);
xapp.runWM(true);
xapp.runIcewmbg(true);
diff -urp old/src/wmapp.cc new/src/wmapp.cc
--- old/src/wmapp.cc 2006-09-10 18:12:11.000000000 +0200
+++ new/src/wmapp.cc 2006-11-12 19:18:47.051733300 +0100
@@ -980,25 +980,26 @@ void YWMApp::restartClient(const char *p
manager->manageClients();
}

-void YWMApp::runOnce(const char *resource, const char *path, char *const
*args) {
+int YWMApp::runOnce(const char *resource, const char *path, char *const *args)
{
Window win(manager->findWindow(resource));

if (win) {
YFrameWindow * frame(manager->findFrame(win));
if (frame) frame->activateWindow(true);
else XMapRaised(xapp->display(), win);
+ return -1;
} else
- runProgram(path, args);
+ return runProgram(path, args);
}

-void YWMApp::runCommandOnce(const char *resource, const char *cmdline) {
+int YWMApp::runCommandOnce(const char *resource, const char *cmdline) {
/// TODO #warning calling /bin/sh is considered to be bloat
char const *const argv[] = { "/bin/sh", "-c", cmdline, NULL };

if (resource)
- runOnce(resource, argv[0], (char *const *) argv);
+ return runOnce(resource, argv[0], (char *const *) argv);
else
- runProgram(argv[0], (char *const *) argv);
+ return runProgram(argv[0], (char *const *) argv);
}

void YWMApp::actionPerformed(YAction *action, unsigned int /*modifiers*/) {
diff -urp old/src/wmapp.h new/src/wmapp.h
--- old/src/wmapp.h 2006-09-10 18:12:10.000000000 +0200
+++ new/src/wmapp.h 2006-11-12 19:18:47.051733300 +0100
@@ -36,8 +36,8 @@ public:
#endif

void restartClient(const char *path, char *const *args);
- void runOnce(const char *resource, const char *path, char *const *args);
- void runCommandOnce(const char *resource, const char *cmdline);
+ int runOnce(const char *resource, const char *path, char *const *args);
+ int runCommandOnce(const char *resource, const char *cmdline);

static YCursor sizeRightPointer;
static YCursor sizeTopRightPointer;
diff -urp old/src/yapp.cc new/src/yapp.cc
--- old/src/yapp.cc 2006-09-10 18:12:11.000000000 +0200
+++ new/src/yapp.cc 2006-11-12 19:18:47.052733639 +0100
@@ -454,10 +454,10 @@ int YApplication::waitProgram(int p) {
return status;
}

-void YApplication::runCommand(const char *cmdline) {
+int YApplication::runCommand(const char *cmdline) {
/// TODO #warning calling /bin/sh is considered to be bloat
char const * argv[] = { "/bin/sh", "-c", cmdline, NULL };
- runProgram(argv[0], argv);
+ return runProgram(argv[0], argv);
}

#ifndef NO_CONFIGURE
diff -urp old/src/yapp.h new/src/yapp.h
--- old/src/yapp.h 2006-09-10 18:12:11.000000000 +0200
+++ new/src/yapp.h 2006-11-12 19:18:47.052733639 +0100
@@ -29,7 +29,7 @@ public:

int runProgram(const char *path, const char *const *args);
int waitProgram(int p);
- void runCommand(const char *prog);
+ int runCommand(const char *prog);

static const char *getPrivConfDir();



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise