Mail Archives: cygwin/2004/07/09/05:21:59
> -----wrong-nil(!)-exit-status-----
> % nerr-cl.exe; echo $?
> 0
>
> $? cannot distinguish exit(0) from exit(-2) ... this is
> logical anarchy!
:) Ah, but those aren't just two different values passed to exit, they are
:) in fact two entirely different versions of the exit function: gcc links in
:) the version from newlib, whereas msvc links in the version from msvcrt.
What I meant was calling same msvcrt exit() with status = {0,-2} (in
nerr-cl.exe).
:) So the problem really is that the Windoze version of the exit function
:) isn't POSIX compliant. Still, we already knew that windoze != unix.
:) That's why cygwin exists, after all!
Right. Still, Cygwin could do better. See below.
:) Name one platform that *can* reliably test the exit status of binaries
:) that were written for a different platform? It's an achievement that it
:) can even run them.
Cygwin? When exit status is positive.
If one wrote:
% cat perr.c
int main()
{
exit (2);
}
she would get:
-----unsigned-8b-exit-status-----
% perr-cl.exe; echo $?
2
Isn't anybody finding weird that "positive exit status works fine from gcc and
cl" i.e. $? can always (gcc or cl) distinguish exit(0) from exit(2)? What I
meant with "reliably".
Isn't the same int exit status being set from mscvrt to 0xfffffffe (nerr-cl.exe)
and 0x00000002 (perr-cl.exe)?
Where does $? = 2 come from?
> ksh :) yields the same Cygwin bug.
:) Don't blame me!
Never meant to. Cheers, daniel.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -