* libc/include/string.h: Don't include <sys/types.h>,
as it causes really bad namespace pollution. Don't declare
swab(), it is properly declared in unistd.h.
* exceptions.cc (unused_sig_wrapper): Remove _raise.
* sigproc.h (class sigframe): Default frames to skip to zero or suffer from
exuberant optimization.
* fhandler_tty.cc (fhandler_tty::write): Set appropriate errno when WriteFile
to pipe fails.
* libc/posix/scandir.c (DIRSIZ, scandir): use struct dirent.d_namlen
only if _DIRENT_HAVE_D_NAMLEN is defined.
(alphasort): aligned prototype with
libc/sys/cygwin/sys/dirent.h and simplified function body.
* libc/posix/telldir.c (telldir): changed "telldir" prototype to
long telldir (DIR *) as mentioned in annex B of POSIX.1
* libc/machine/i386/i386mach.h: added SOTYPE_FUNCTION to set type
of global entry points if _I386MACH_NEED_SOTYPE_FUNCTION is defined;
Added __CLI and __STI macros (controlled via
_I386MACH_ALLOW_HW_INTERRUPTS macro).
* libc/machine/i386/f_atan2.S libc/machine/i386/f_atan2f.S
libc/machine/i386/f_frexp.S libc/machine/i386/f_frexpf.S
libc/machine/i386/f_ldexp.S libc/machine/i386/f_ldexpf.S
libc/machine/i386/f_log.S libc/machine/i386/f_log10.S
libc/machine/i386/f_log10f.S libc/machine/i386/f_logf.S
libc/machine/i386/f_tan.S libc/machine/i386/f_tanf.S
libc/machine/i386/memchr.S libc/machine/i386/memcmp.S
libc/machine/i386/memcpy.S libc/machine/i386/memmove.S
libc/machine/i386/memset.S libc/machine/i386/setjmp.S
libc/machine/i386/strchr.S libc/machine/i386/strlen.S:
(that's libc/machine/i386/*.S) added SOTYPE_FUNCTION(symbol)
for all global entry points.
* libc/machine/i386/setjmp.S: removed code replicated in
libc/machine/i386/i386mach.h and included i386mach.h instead;
Use __CLI and __STI instead of cli and sti.
* libc/stdlib/mprec.c (ulp, b2d, d2b): changed a few expressions
like x << y-z to the equivalent x << (y-z).
(d2b): changed if statements with assignment to perform the
assignment prior to the if check.
* libc/reent/reent.c: included stdlib.h for "_free_r" prototype.
* libc/unix/getpass.c (getpass): moved "echo" assignment out of if.
* libc/unix/ttyname.c: included string.h for "strcpy" prototype.
* libc/unix/getcwd.c (ISDOT): added parentheses to clarify && and ||
precedence.
* libc/include/sys/unistd.h: added "vfork" prototype (for popen.c).
Added "_execve" prototype (for execl.c, execle.c, execv.c, and
execve.c).
* libc/posix/popen.c (popen): added parentheses to clarify && and ||
precedence.
* libm/math/e_cosh.c (__ieee754_cosh): changed parentheses to
clarify && and || precendence (and to remove pascalism).
* libm/math/e_sinh.c (__ieee754_sinh): Ditto.
* libm/math/s_infconst.c: added another pair of braces to all
initializers for __infinity (need three: for __infinity[1] array,
for union __dmath, and for i[2]).
* pinfo.cc (pinfo::release): Move here from pinfo.h.
* sigproc.cc (proc_terminate): Remove bogus 'pinfo child' which caused strange
destruction of random regions of memory when destructor was invoked.
(_dll_crt0): To here.
(cygwin_dll_init): And here.
* external.cc (fillout_pinfo): Use more foolproof method for scanning for pids.
* pinfo.cc (set_myself): Eliminate myself_identity.init.
* sigproc.cc (wait_sig): Do it here instead to reduce the amount of time where
there could potentially be two processes with the same pid.
* spawn.cc (spawn_guts): Eliminate duplicate initialization.
* include/sys/cygwin.h: Mark unused PID_* elements.
exception handling on threads not created by cygwin.
* sigproc.cc (proc_terminate): Don't release pinfo structs since we are
exiting.
* include/sys/cygwin.h: Add CW_INIT_EXCEPTIONS.
* libc/stdlib/mprec.c (ulp, b2d, d2b): changed a few expressions
like x << y-z to the equivalent x << (y-z).
(d2b): changed if statements with assignment to perform the
assignment prior to the if check.
* libc/reent/reent.c: included stdlib.h for "_free_r" prototype.
* libc/unix/getpass.c (getpass): moved "echo" assignment out of if.
* libc/unix/ttyname.c: included string.h for "strcpy" prototype.
* libc/unix/getcwd.c (ISDOT): added parentheses to clarify && and ||
precedence.
* libc/include/sys/unistd.h: added "vfork" prototype (for popen.c).
Added "_execve" prototype (for execl.c, execle.c, execv.c, and
execve.c).
* libc/posix/popen.c (popen): added parentheses to clarify && and ||
precedence.
* libm/math/e_cosh.c (__ieee754_cosh): changed parentheses to
clarify && and || precendence (and to remove pascalism).
* libm/math/e_sinh.c (__ieee754_sinh): Ditto.
* libm/math/s_infconst.c: added another pair of braces to all
initializers for __infinity (need three: for __infinity[1] array,
for union __dmath, and for i[2]).
* libc/stdlib/abort.c: changed description: uses "raise" instead of
"getpid" and "kill"; added: uses "write" and "_exit".
Also included unistd.h for "_exit" prototype.
* libc/stdlib/system.c: included unistd.h for "execve" prototype,
reent.h for "_fork_r" and "_wait_r" prototypes.
(do_system): changed extern char *environ[] to POSIX-friendly
extern char **environ.
* libc/stdlib/wctomb_r.c: included string.h for "strlen" and "strcmp"
prototypes.
* libc/stdlib/remove.c: included reent.h for "_unlink_r" prototype.
* libc/reent/execr.c: included sys/wait.h for "wait" prototype.
* libc/reent/fstatr.c: included sys/stat.h for "fstat" prototype.
* libc/reent/openr.c: included fcntl.h for "open" prototype.
* libc/reent/signalr.c: included signal.h for "kill" prototype,
unistd.h for "getpid" prototype.
* libc/reent/statr.c: included sys/stat.h for "stat" prototype.
* libc/reent/timer.c: included sys/time.h for "gettimeofday" prototype.
* libc/unix/getut.c (utmpname): removed local, incorrect "strdup"
prototype. Also included stdlib.h for "abort", string.h for
"strdup" and "strncmp" prototypes.
* libc/unix/getlogin.c: included string.h for "strncmp", "memset", and
"strncpy", unistd.h for "read" and "close" prototypes.
* libc/posix/execvp.c: included string.h for "strchr", "strlen", and
"strcat" prototypes.
(regopt): Use correct path to find LOCAL_MACHINE registry options.
* fhandler.cc (fhandler_base::open): Set binary mode only when binmode ==
O_BINARY.
* pipe.cc (pipe): Pipe handling should rely on binmode not _fmode now that the
two are different.
* libc/stdio/stdio.c (__swrite): declare "oldmode" only if it's
used later (ifdef __SCLE)
* libc/stdio/vfscanf.c (__svfscanf): declare "state" only if it's
used later (ifdef MB_CAPABLE)
* libc/string/memset.c (memset): removed unused variables "count"
and "unaligned_addr"
* libc/locale/locale.c (_setlocale_r): declare "lc_ctype" and
"last_lc_ctype" only of they're used later (ifdef MB_CAPABLE)
* libc/unix/getpwent.c (getpwnam): removed unused variables "uid"
and "gid"
* libc/stdlib/envlock.c: changed documented "__env_lock" and
"__env_unlock" prototype from "void *" or "char *" to
"struct _reent *" to match real function. Also added include
of envlock.h.
* libc/stdlib/mlock.c: changed documented "__malloc_lock" and
"__malloc_unlock" prototype from "void *" or "char *" to
"struct _reent *" to match real function.
* libc/stdlib/envlock.h: added "__env_lock" and "__env_unlock"
prototypes (for getenv_r.c and setenv_r.c).
the process. Use new second argument to set_myself.
(cygwin_dll_init): Initialize exception list and constructor stuff here.
(_dll_crt0): And here. Also, deal with inherited pinfo shared memory region
from parent.
* pinfo.cc (set_myself): Accept a second argument signifying the a shared
memory region, passed from an execing parent.
(pinfo_init): Ditto.
* pinfo.h: Ditto.
* shared.h (child_info): Add a handle field to pass to child.
* spawn.cc (spawn_guts): Create a shared handle to pass to an execed child.
* winsup.h: Remove extraneous declaration.
required.
* errno.cc: Use DWORD to hold Windows errors.
(geterrno_from_win_error): New function.
(seterrno_from_win_error): Use geterrno_from_win_error to convert supplied
windows error (suggested by Corinna Vinschen).
* path.cc (symlink_info): Add error element.
* path.cc (path_conv::check): Remove errno setting. Use new symlink_info errno
element to set path_conv error, where appropriate.
(symlink_info::check): Set error element rather than attempting to manipulate
errno. Add more checks for trailing / and /.. even though they are currently
useless. Avoid setting EINVAL.
* path.cc (normalize_posix_path): Correct check for trailing /.