git/compat
Ramsay Jones b5d18b8e6f Fix the exit code of MSVC build scripts on cygwin
During an MSVC build on cygwin, the make program did not notice
when the compiler or linker exited with an error. This was caused
by the scripts exiting with the value returned by system() directly.

On POSIX-like systems, such as cygwin, the return value of system()
has the exit code of the executed command encoded in the first byte
(ie the value is shifted up by 8 bits). This allows the bottom
7 bits to contain the signal number of a terminated process, while
the eighth bit indicates whether a core-dump was produced. (A value
of -1 indicates that the command failed to execute.)

The make program, however, expects the exit code to be encoded in the
bottom byte. Futhermore, it apparently masks off and ignores anything
in the upper bytes.

However, these scripts are (naturally) intended to be used on the
windows platform, where we can not assume POSIX-like semantics from
a perl implementation (eg ActiveState). So, in general, we can not
assume that shifting the return value right by eight will get us
the exit code.

In order to improve portability, we assume that a zero return from
system() indicates success, whereas anything else indicates failure.
Since we don't need to know the exact exit code from the compiler
or linker, we simply exit with 0 (success) or 1 (failure).

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-10-08 22:53:12 -07:00
..
fnmatch Fix more typos/spelling in comments 2009-04-22 19:03:39 -07:00
nedmalloc Fix typo in nedmalloc warning fix 2009-06-11 14:18:52 -07:00
regex Change regerror() declaration from K&R style to ANSI C (C89) 2009-09-18 20:00:42 -07:00
vcbuild Fix the exit code of MSVC build scripts on cygwin 2009-10-08 22:53:12 -07:00
basename.c compat: add a basename() compatibility function 2009-05-31 17:57:59 -07:00
bswap.h make sure byte swapping is optimal for git 2009-08-18 14:16:37 -07:00
cygwin.c Fix more typos/spelling in comments 2009-04-22 19:03:39 -07:00
cygwin.h cygwin: Use native Win32 API for stat 2008-09-30 14:30:06 -07:00
fopen.c compat/fopen.c: avoid clobbering the system defined fopen macro 2008-05-08 17:43:01 -07:00
hstrerror.c Add a local implementation of hstrerror for the system which do not have it 2007-06-15 22:48:34 -07:00
inet_ntop.c Remove a couple of duplicated include 2007-11-05 20:50:38 -08:00
inet_pton.c Remove a couple of duplicated include 2007-11-05 20:50:38 -08:00
memmem.c optimize compat/ memmem() 2009-03-02 18:28:06 -08:00
mingw.c Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00
mingw.h Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00
mkdtemp.c Define compat version of mkdtemp for systems lacking it 2007-10-20 22:52:21 -04:00
mkstemps.c compat: add a mkstemps() compatibility function 2009-05-31 17:56:44 -07:00
mmap.c War on whitespace 2007-06-07 00:04:01 -07:00
msvc.c Add platform files for porting to MSVC 2009-09-18 20:00:42 -07:00
msvc.h Define strncasecmp and ftruncate for MSVC 2009-09-18 20:00:42 -07:00
pread.c Replacing the system call pread() with lseek()/xread()/lseek() sequence. 2007-01-09 16:40:40 -08:00
qsort.c compat: Add simplified merge sort implementation from glibc 2008-02-06 22:35:28 -08:00
setenv.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
snprintf.c Test for WIN32 instead of __MINGW32_ 2009-09-18 20:00:42 -07:00
strcasestr.c Clean up compatibility definitions. 2005-12-05 15:50:29 -08:00
strlcpy.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
strtoumax.c Add a compat/strtoumax.c for Solaris 8. 2007-02-19 18:20:30 -08:00
unsetenv.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
win32.h Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00
win32mmap.c MinGW: implement mmap 2009-03-18 19:23:04 -07:00
winansi.c Make usage of windows.h lean and mean 2009-09-18 20:00:42 -07:00