Andrew Black wrote:
Greetings all.
Attached is a patch that cleans up some of the internal logic of the
exec utility. The main purpose is to remove the dependency on the diff
utility and make the error handling more consistent.
This is in: http://svn.apache.org/viewvc?rev=426676&view=rev
Btw., we'll need to clean up the failures that we get with EDG eccp
(below). They happen because with that compiler we use a super-anal
mode where only the names required to be declared by the standard
are declared in the standard headers. I think the only way to deal
with this will be to compile the utility in a less strict mode,
will mean changing the command line options and also removing the
-I from our command line. And when we do that, we might as well
compile the whole thing as C (and make the changes to the build
infrastructure to allow that in general).
Martin
eccp -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include
-I/build/sebor/eccp-3.8-11s/include
-I/build/sebor/dev/stdlib/include/loc -A -x
--template_directory=/build/sebor/eccp-3.8-11s/lib -g
--display_error_number --remarks --diag_suppress
193,236,340,401,261,479,487,678,679,815
/build/sebor/dev/stdlib/src/util/exec.cpp
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 247: error #20: identifier
"snprintf" is undefined
snprintf (def, sizeof def, "SIG#%d", signo);
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 265: error #20: identifier
"SIGALRM" is undefined
if (SIGALRM == signo)
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 295: error #20: identifier
"SIGHUP" is undefined
SIGHUP, SIGINT, SIGTERM, SIGKILL, SIGKILL
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 295: error #20: identifier
"SIGKILL" is undefined
SIGHUP, SIGINT, SIGTERM, SIGKILL, SIGKILL
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 300: error #70: incomplete
type is not allowed
struct sigaction act;
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 323: error #70: incomplete
type is not allowed
sigaction (SIGALRM, &act, 0);
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 323: error #20: identifier
"SIGALRM" is undefined
sigaction (SIGALRM, &act, 0);
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 323: error #18: expected a
")"
sigaction (SIGALRM, &act, 0);
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 343: error #20: identifier
"EINTR" is undefined
if (EINTR == errno && alarm_timeout) {
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 355: error #20: identifier
"kill" is undefined
(void)kill (child_pid, signals [siginx]);
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 380: error #20: identifier
"EINVAL" is undefined
else if (EINVAL == errno) {
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 387: error #20: identifier
"ECHILD" is undefined
else if (ECHILD == errno) {
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 457: error #20: identifier
"ENOENT" is undefined
if (ENOENT != errno)
^
"/build/sebor/dev/stdlib/src/util/exec.cpp", line 566: error #20: identifier
"fdopen" is undefined
error_file = fdopen (error_cache,"a");
^
14 errors detected in the compilation of
"/build/sebor/dev/stdlib/src/util/exec.cpp".