zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #16130
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
Cezar Andrei has proposed merging lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module.
Requested reviews:
Sorin Marian Nasoi (sorin.marian.nasoi)
Paul J. Lucas (paul-lucas)
Chris Hillery (ceejatec)
Related bugs:
Bug #1086323 in Zorba: "Process module: exit code reporting is broken"
https://bugs.launchpad.net/zorba/+bug/1086323
For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/bug1086323-processExitCode/+merge/138266
Fix for bug 1086323.
--
https://code.launchpad.net/~zorba-coders/zorba/bug1086323-processExitCode/+merge/138266
Your team Zorba Coders is subscribed to branch lp:zorba/process-module.
=== modified file 'src/com/zorba-xquery/www/modules/process.xq'
--- src/com/zorba-xquery/www/modules/process.xq 2012-09-27 16:53:40 +0000
+++ src/com/zorba-xquery/www/modules/process.xq 2012-12-05 17:32:30 +0000
@@ -56,6 +56,11 @@
: @return the result of the execution as an element as
: shown in the documentation of this module. The exit-code
: element returns the exit code of the child process.
+ : For POSIX compliant platforms: returns the process exit code. If process is
+ : terminated: (-1000) - termination signal code. If process is stoped:
+ : (-2000) - stop signal code or -1999 othewise.
+ : For Windows platforms: returns the return value of the process or the exit
+ : or terminate process specified value.
:
: @error process:PROC01 if an error occurred while communicating
: with the executed process.
@@ -75,6 +80,11 @@
: @return the result of the execution as an element as
: shown in the documentation of this module. The exit-code
: element returns the exit code of the child process.
+ : For POSIX compliant platforms: returns the process exit code. If process is
+ : terminated: (-1000) - termination signal code. If process is stoped:
+ : (-2000) - stop signal code or -1999 othewise.
+ : For Windows platforms: returns the return value of the process or the exit
+ : or terminate process specified value.
:
: @error process:PROC01 if an error occurred while communicating
: with the executed process.
=== modified file 'src/com/zorba-xquery/www/modules/process.xq.src/process.cpp'
--- src/com/zorba-xquery/www/modules/process.xq.src/process.cpp 2012-07-21 01:09:37 +0000
+++ src/com/zorba-xquery/www/modules/process.xq.src/process.cpp 2012-12-05 17:32:30 +0000
@@ -257,7 +257,7 @@
};
//start child process
- BOOL ok=create_child_process(lStdOut,lStdErr,aCommand,lChildProcessInfo);
+ BOOL ok = create_child_process(lStdOut,lStdErr,aCommand,lChildProcessInfo);
if(ok==TRUE)
{
@@ -413,8 +413,8 @@
std::ostringstream lStderr;
#ifdef WIN32
- std::string lCommandLineString=lTmp.str();
- int code = run_process(lCommandLineString,lStdout,lStderr);
+ std::string lCommandLineString = lTmp.str();
+ int code = run_process(lCommandLineString, lStdout, lStderr);
if (code != 0)
{
@@ -424,6 +424,7 @@
"http://www.zorba-xquery.com/modules/process", "PROC01");
throw USER_EXCEPTION(lQName, lErrorMsg.str().c_str());
}
+ exit_code = code;
#else //not WIN32
@@ -470,36 +471,39 @@
int stat = 0;
- waitpid(pid, &stat, 0);
- /*pid_t w;
- do
- {
- w = waitpid(pid, &stat, WUNTRACED | WCONTINUED);
- if (w == -1)
- {
- perror("waitpid");
- exit(EXIT_FAILURE);
- }
+ pid_t w = waitpid(pid, &stat, 0);
+
+ if (w == -1)
+ {
+ std::stringstream lErrorMsg;
+ lErrorMsg << "Failed to wait for child process ";
+ Item lQName = ProcessModule::getItemFactory()->createQName(
+ "http://www.zorba-xquery.com/modules/process", "PROC01");
+ throw USER_EXCEPTION(lQName, lErrorMsg.str().c_str());
+ }
- if (WIFEXITED(stat))
- {
- printf("exited, status=%d\n", WEXITSTATUS(stat));
- }
- else if (WIFSIGNALED(stat))
- {
- printf("killed by signal %d\n", WTERMSIG(stat));
- }
- else if (WIFSTOPPED(stat))
- {
- printf("stopped by signal %d\n", WSTOPSIG(stat));
- }
- else if (WIFCONTINUED(stat))
- {
- printf("continued\n");
- }
- } while (!WIFEXITED(stat) && !WIFSIGNALED(stat));
- */
- exit_code = WEXITSTATUS(stat);
+ if (WIFEXITED(stat))
+ {
+ //std::cout << " WEXITSTATUS : " << WEXITSTATUS(stat) << std::endl; std::cout.flush();
+ exit_code = WEXITSTATUS(stat);
+ }
+ else if (WIFSIGNALED(stat))
+ {
+ //std::cout << " WTERMSIG : " << WTERMSIG(stat) << std::endl; std::cout.flush();
+ exit_code = 128 + WTERMSIG(stat);
+ }
+ else if (WIFSTOPPED(stat))
+ {
+ //std::cout << " STOPSIG : " << WSTOPSIG(stat) << std::endl; std::cout.flush();
+ exit_code = 128 + WSTOPSIG(stat);
+ }
+ else
+ {
+ //std::cout << " else : " << std::endl; std::cout.flush();
+ exit_code = 255;
+ }
+
+ //std::cout << " exit_code : " << exit_code << std::endl; std::cout.flush();
}
#endif // WIN32
Follow ups
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: noreply, 2012-12-06
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-06
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-06
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Paul J. Lucas, 2012-12-06
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Paul J. Lucas, 2012-12-06
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Paul J. Lucas, 2012-12-06
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Paul J. Lucas, 2012-12-06
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Chris Hillery, 2012-12-06
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Cezar Andrei, 2012-12-05
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Sorin Marian Nasoi, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-05
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-05
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Chris Hillery, 2012-12-05
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Chris Hillery, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Chris Hillery, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-05
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Zorba Build Bot, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Cezar Andrei, 2012-12-05
-
[Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Cezar Andrei, 2012-12-05
-
Re: [Merge] lp:~zorba-coders/zorba/bug1086323-processExitCode into lp:zorba/process-module
From: Cezar Andrei, 2012-12-05