OSDN Git Service

Bump ChangeLog
[pf3gnuchains/pf3gnuchains4x.git] / winsup / cygwin / ChangeLog-2011
diff --git a/winsup/cygwin/ChangeLog-2011 b/winsup/cygwin/ChangeLog-2011
new file mode 100644 (file)
index 0000000..a8b9a3a
--- /dev/null
@@ -0,0 +1,5318 @@
+2011-12-30  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (getpt): Export.
+       * posix.sgml (std-gnu): Add getpt.
+       * tty.cc (getpt): New function.
+       * include/cygwin/stdlib.h [!__STRICT_ANSI__] (getpt): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-12-30  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * thread.cc: Mark pthread_rwlock_timedrdlock and
+       pthread_rwlock_timedwrlock as not yet implemented in the list of
+       cancellation points.
+
+2011-12-24  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_dsp.cc (fhandler_dev_dsp::fhandler_dev_dsp): Set up device.
+
+       * syscalls.cc (open): Very minor formatting tweak.
+
+2011-12-24  Corinna Vinschen  <vinschen@redhat.com>
+
+       * path.cc (struct symlink_info): Add bool argument to declaration of
+       check_reparse_point.
+       (symlink_info::check_reparse_point): Add bool argument to indicate
+       remote drive.  Handle STATUS_PENDING.  Don't evaluate junctions on
+       remote drives.  Fix comments.
+       (symlink_info::check): Drop check for is_remote_drive and associated
+       comment here.  Add fs.is_remote_drive as second parameter to
+       check_reparse_point call.
+
+2011-12-23  Corinna Vinschen  <vinschen@redhat.com>
+
+       * pinfo.cc (pinfo_basic::pinfo_basic): Fix formatting.  Set uid and gid
+       to default values to accommodate early initialization of shared user
+       info.  Add comment.
+
+2011-12-22  Corinna Vinschen  <vinschen@redhat.com>
+
+       * spawn.cc (child_info_spawn::worker): Add CREATE_BREAKAWAY_FROM_JOB
+       to c_flags only if current process is member of a job and breakaway
+       is allowed.
+
+2011-12-22  Corinna Vinschen  <vinschen@redhat.com>
+
+       * external.cc (cygwin_internal): Implement CW_ALLOC_DRIVE_MAP,
+       CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP.
+       * fhandler_process.cc: Include mount.h.
+       (get_volume_path_names_for_volume_name): Move to mount.cc.
+       (struct dos_drive_mappings): Ditto.
+       * mount.cc (get_volume_path_names_for_volume_name): Move here.
+       (dos_drive_mappings::dos_drive_mappings): Ditto.
+       (dos_drive_mappings::fixup_if_match): Ditto.
+       (dos_drive_mappings::~dos_drive_mappings): Ditto.
+       * mount.h (class dos_drive_mappings): Declare her.
+       * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_ALLOC_DRIVE_MAP,
+       CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP.
+       * include/cygwin/version.h: Bump API minor number.
+
+2011-12-22  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler_process.cc: Drop unneeded includes.
+
+2011-12-22  Corinna Vinschen  <vinschen@redhat.com>
+
+       Throughout use wincap.allocation_granularity instead of getpagesize.
+       Throughout use wincap.page_size instead of getsystempagesize.
+       Throughout use "status" as variable name to hold NTSTATUS values.
+       * fhandler_mem.cc: Check for NT_SUCCESS rather than for STATUS_SUCCESS.
+       Fix debug_printf output.  Rectify long statements.  Fix comment
+       formatting.
+       * fhandler_proc.cc: Ditto.
+       (format_proc_swaps): Drop useless test for ERROR_PROC_NOT_FOUND.
+       * fhandler_process.cc: Ditto as in fhandler_mem.cc.
+       (get_process_state): Rearrange allocation loop.  Use malloc/realloc.
+       (get_mem_values): Fix potential NULL pointer usage.  Drop unused
+       variable.
+       * pinfo.cc (winpids::enum_processes): Handle low memory gracefully.
+       * sec_auth.cc (get_priv_list): Drop local variable ret.
+       * shared.cc (memory_init): Drop outdated call to getpagesize.
+       * syscalls.cc (getsystempagesize): Remove.
+       * sysconf.cc: Check for NT_SUCCESS rather than for STATUS_SUCCESS.
+       (sysinfo): Constify sizeof_stodi.  Drop useless test for
+       ERROR_PROC_NOT_FOUND.
+       * thread.cc (pthread_getattr_np): Cast pointers to uintptr_t rather
+       than to int for pointer arithmetic.
+       * winsup.h (getsystempagesize): Drop declaration.
+
+2011-12-21  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Use correct
+       value in switch statement.
+
+2011-12-21  Corinna Vinschen  <vinschen@redhat.com>
+
+       * dcrt0.cc (_dll_crt0): Rephrase comments.  Set $ebp to NULL, as in
+       the pthread stack setup.
+       * wow64.cc (wow64_revert_to_original_stack): Rephrase some comments.
+       Return _tlsbase-16 rather than _main_tls-4 so as not to waste stack.
+
+2011-12-19  Corinna Vinschen  <vinschen@redhat.com>
+
+       * syscalls.cc (rename): Fix typo in comment.  Fix condition to handle
+       the case oldpath is no .lnk symlink and newpath points to an existing
+       .lnk symlink or .exe file and no explicit .lnk suffix has been given
+       in oldpath.  Add a comment to explain.
+
+2011-12-19  Corinna Vinschen  <vinschen@redhat.com>
+
+       * dcrt0.cc (dll_crt0_0): Check for wincap.wow64_has_secondary_stack
+       rather than for wincap.is_wow64.  Accommodate name change from
+       wow64_has_64bit_parent to wow64_needs_stack_adjustment.  Align comment.
+       (_dll_crt0): Ditto.
+       * wincap.h (wincaps::wow64_has_secondary_stack): New element.
+       * wincap.cc: Implement above element throughout.
+       (wincapc::init): Set wow64_has_secondary_stack to false on non-64 bit
+       systems.
+       * wow64.cc (wow64_needs_stack_adjustment): Rename (hopefully the last
+       time) from wow64_has_64bit_parent.
+       (wow64_eval_expected_main_stack): Fix comment to reflect real life.
+       (wow64_test_for_64bit_parent): Fix comment.
+       * wow64.h (wow64_needs_stack_adjustment): Accommodate new name.
+
+2011-12-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base::close): Move setting isclosed() from here
+       to closed().
+       (fhandler_base_overlapped::close): Correct comment.
+       (fhandler_base_overlapped::destroy_overlapped): Signal overlapped event
+       before closing it to potentially wake up a waiting thread.
+       (fhandler_base_overlapped::wait_overlapped): Expand setting of err when
+       closed to encompass non-signal event.  Test for a cancel event before
+       making nonblocking decisions.
+       * syscalls.cc (close): Set closed flag here so that any concurrently
+       executing functions will be notified ASAP.
+
+2011-12-17  Corinna Vinschen  <vinschen@redhat.com>
+
+       * dcrt0.cc (_dll_crt0): Fix formatting.
+
+2011-12-17  Corinna Vinschen  <vinschen@redhat.com>
+
+       * wow64.cc (wow64_revert_to_original_stack): Fix comment.
+       * wow64.h (wow64_respawn_process): Declare noreturn.
+
+2011-12-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (set_signal_mask): Remove useless debugging output.
+
+       * fhandler.cc (fhandler_base::write): Ditto.
+       (fhandler_base_overlapped::close): Cancel any ongoing I/O before
+       closing.
+       * syscalls.cc (write): Default to always reporting all writes in strace
+       output via syscall_printf.
+       * wait.cc (wait4): Fix debugging output.  Use standard syscall leaver
+       output.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Implement fhandler reference counting.
+       * cygheap.h (cygheap_fdmanip::release): Make virtual.
+       (cygheap_fdnew::~cygheap_fdnew): New destructor increments reference
+       count when fd has been allocated.
+       (cygheap_fdget::fh): New (old?) field.
+       (cygheap_fdget::cygheap_fdget): Increment reference count when we've
+       found an active fd.  Set fh appropriately.
+       (cygheap_fdget::~cygheap_fdget): Decrement reference count when
+       appropriate.  Delete fh if reference count goes to zero.
+       (cygheap_fdget::release): New function.  Do more bookkeping on release.
+       * dtable.cc (dtable::release): Change from void to boolean return.
+       Only delete the fhandler when its reference count is <= 0 (this should
+       be a fairly unusual case).  Return true if fhandler has been deleted.
+       (cygwin_attach_handle_to_fd): Increment reference count when fh is
+       assigned.
+       (dtable::init_std_file_from_handle): Ditto.
+       * dtable.h (dtable::release): Change return to boolean.
+       * fhandler.cc (fhandler_base::fhandler_base): Set new isclosed flag to
+       false.  Set _refcnt to zero.
+       (fhandler_base::close): Simplify paranoid debugging output.  Set new
+       isclosed() flag.
+       (fhandler_base_overlapped::wait_overlapped): Use isclosed() flag to
+       avoid querying the overlapped structure.
+       * fhandler.h (fhandler_base::_refcnt): New field.
+       (fhandler_base::refcnt): New function.
+       (fhandler_base::isclosed): Implement.
+       (fhandler_base::fhandler_base): Set isclosed to false.
+
+       * syscalls.cc: Remove space after function before parentheses for
+       several strace printfs.
+       (dup): Add standard strace "leaver" code.
+       (dup2): Ditto.
+       (dup3): Ditto.
+       (remove): Ditto.
+       (getpid): Ditto.
+       (getppid): Ditto.
+       (lseek64): Fix strace debugging to correctly use %R.
+
+       * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Avoid sending
+       signals to other processes if we're debugging since it can cause a
+       deadlock with the calling debugger.
+
+       * exceptions.cc (_cygtls::call_signal_handler): Add debugging-only
+       strace output.
+
+2011-12-16  Corinna Vinschen  <vinschen@redhat.com>
+
+       * dcrt0.cc (child_info_fork::alloc_stack): Correctly check if the
+       parent stack fits into the child stack.  Align comment.
+       * wow64.cc (wow64_eval_expected_main_stack): New function to fetch
+       expected addresses of main thread stack from PE/COFF image header
+       values.
+       (wow64_test_for_64bit_parent): Fix comment.  Check current stack
+       against real expected main thread stack addresses.
+       (wow64_revert_to_original_stack): Fix and add comments. Check memory
+       against real expected main thread stack addresses.  Use orignal stack
+       if reserved area is >= 256K.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * gendef (sigdelayed): Remember to pop all of the saved registers.
+       (sigreturn): Add "leave" label.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Fix
+       unresolved access of wores in successful situations.
+
+2011-12-16  Corinna Vinschen  <vinschen@redhat.com>
+
+       * Makefile.in (DLL_OFILES): Add wow64.o.
+       * dcrt0.cc (CYGWIN_GUARD): Drop execute permission for stack, it's
+       not used for stacks by the OS either.
+       (child_info_fork::alloc_stack_hard_way): Ditto.
+       (child_info_fork::alloc_stack): Don't alloc_stack_hard_way under WOW64
+       if forked from a 64 bit parent.  Set child's StackBase to parent's
+       StackBase.  Add comments to explain why.
+       (wow64_respawn): Move to wow64.cc.
+       (wow64_started_from_native64): Move to wow64.cc.
+       (respawn_wow64_process): Move to wow64.cc.
+       (dll_crt0_0): Drop wow64_test_stack_marker and move stack test into
+       wow64_test_for_64bit_parent function.  Don't return early if WOW64
+       process has been started from native 64 bit process.
+       (_dll_crt0): Implement moving stack for WOW64 processes started from
+       native 64 bit process.
+       * wow64.cc: New file.
+       (wow64_has_64bit_parent): Rename from wow64_respawn.
+       (wow64_test_for_64bit_parent): Rename from wow64_started_from_native64.
+       Change comment.
+       (wow64_revert_to_original_stack): New function.
+       (wow64_respawn_process): Rename from respawn_wow64_process for symmetry.
+       * wow64.h: New file.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (_cygtls::call_signal_handler): Fix debugging to not go
+       to console.
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Add temporary
+       kludge to work around problem of make closing an fhandle while it is
+       being read.
+       * gendef (sigdelayed): Don't call a function if sig has been cleared.
+
+       * sigproc.h (cygwait): Simplify slightly.
+
+2011-12-14  Corinna Vinschen  <vinschen@redhat.com>
+
+       * autoload.cc (GetSystemWow64DirectoryW): Define.
+       (GetVolumePathNamesForVolumeNameW): Define.
+       * fhandler_process.cc (get_volume_path_names_for_volume_name): New
+       static function to workaround missing GetVolumePathNamesForVolumeNameW
+       function in Windows 2000.
+       (dos_drive_mappings::dos_drive_mappings): Call
+       get_volume_path_names_for_volume_name instead of
+       GetVolumePathNamesForVolumeNameW.
+
+2011-12-13  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dcrt0.cc (init_windows_system_directory): Record
+       system_wow64_directory information.
+       * exceptions.cc (_cygtls::inside_kernel): Modernize comment.  Consider
+       executing a DLL from the Wow64 directory as being "in the kernel".
+       (_cygtls::call_signal_handler): For now, only deal with main_tls
+       signals if main_tls is known to be executing in the cygwin DLL.  To
+       more closely emulate linux, consider the operation to be restartable if
+       not executing in the main thread.
+       * globals.cc (windows_system_directory): Remove NO_COPY.
+       (windows_system_directory_length): Ditto.
+       (system_wow64_directory): New variable.
+       (system_wow64_directory_length): Ditto.
+
+       * select.cc (cygwin_select): Don't issue a EINTR on non-main threads
+       since that seems to be what Linux does.  Add missing break to signal
+       case/switch.
+       (select_stuff::wait): Don't issue a EINTR on non-main threads since
+       that seems to be what Linux does.  Remove now-unneeded accommodation
+       for WAIT_IO_COMPLETION.  Add a comment.
+       * sigproc.h (cygwait): Ditto.  Don't return if signal_received noticed
+       and it's not the main thread.
+
+       * signal.cc (sigprocmask): Add standard syscall debug stuff.
+       * thread.cc (pthread_sigmask): Ditto.
+
+2011-12-13  Corinna Vinschen  <vinschen@redhat.com>
+
+       * netdb.cc (open_system_file): Avoid MS-DOS path warning.
+
+2011-12-13  Corinna Vinschen  <vinschen@redhat.com>
+
+       * path.cc (conv_path_list): Fix a condition.
+       (cygwin_conv_path): Revert WIN_A conversion to current locale codeset.
+
+2011-12-13  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Call
+       file_get_fnoi instead of NtQueryInformationFile.
+       * path.cc (file_get_fnoi): New helper function to collect a
+       FILE_NETWORK_OPEN_INFORMATION block.
+       (symlink_info::check): Call file_get_fnoi rather than
+       NtQueryInformationFile to collect a FILE_NETWORK_OPEN_INFORMATION block.
+       * path.h (file_get_fnoi): Declare.
+
+2011-12-13  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * times.cc (hires_ns::resolution): Don't return less than 1.
+
+2011-12-12  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygthread.h (cygthread::name): Very minor formatting tweak.
+
+       * exceptions.cc (_cygtls::call_signal_handler): Add paranoid debugging
+       output.
+
+       * sigproc.h (cygwait): Call signal handler when signal is detected and
+       loop as appropriate.
+       * fhandler.h (fhandler_base_overlapped::wait_return): Remove
+       overlapped_signal.
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Remove
+       restartable signal accommodations in light of cygwait improvements.
+       (fhandler_base_overlapped::raw_read): Remove now-obsolete signal loop
+       behavior.
+       (fhandler_base_overlapped::raw_write): Ditto.
+       * fhandler_console.cc (fhandler_console::read): Ditto.
+       * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
+       (fhandler_serial::raw_write): Ditto.
+       * fhandler_tty.cc (fhandler_pty_slave::read): Ditto.
+
+       * ioctl.cc (ioctl): Add standard syscall introducer and leaver debug
+       output.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler_process.cc (dos_drive_mappings): Partially rewrite to
+       handle volumes mounted into juntion points correctly.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler_process.cc (dos_drive_mappings::dos_drive_mappings): Fully
+       resolve symbolic links returned by QueryDosDeviceW.  Explain why.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+
+       * mount.cc (fs_info::update): Set has_buggy_reopen for Netapps as well.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+           Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dcrt0.cc (wow64_respawn): New static variable.
+       (wow64_started_from_native64): New function to check if a WOW64
+       process got started from a native 64 bit process.
+       (respawn_wow64_process): New function to respawn process.
+       (dll_crt0_0): When started from a native parent, check if parent
+       is a 64 bit process.  If so, return early.
+       (_dll_crt0): Respawn WOW64 process here if required.
+       * init.cc (respawn_wow64_process): Remove.
+       (dll_entry): Rename wow64_test_stack_marker to test_stack_marker.
+       Drop WOW64 test here.
+
+2011-12-11  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pipe.cc (fhandler_pipe::create): Use debug_printf to print debugging
+       info since this isn't a "syscall".
+       (pipe_worker): New function created from _pipe().
+       (_pipe): Use pipe_worker to create a pipe.  Use standard syscall strace
+       reporting on exit.
+       (pipe): Ditto.
+       (pipe2): Ditto.
+
+2011-12-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (select_stuff::wait): Very minor formatting fix.
+       (peek_windows): Report on HWND handle used in queries.
+       * select.h: Update copyright.
+       * sigproc.h (cygwait): Eliminate multi-argument variety since more
+       general implementation may cause odd problems in select.  Also force to
+       always be inline.
+
+2011-12-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygwait): Delete duplicate va_start and add matching
+       va_end.
+
+2011-12-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygwait): Tweak test for cancellable event to make it a
+       little more clear.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (ctrl_c_handler): YA in a series or reversions.  Put
+       back _my_tls.remove along with a comment.
+       (sigpacket::process): Remove code which now causes a gdb deadlock.
+       * sigproc.cc (_cygtls::signal_exit): Signal debugger with signal number
+       earlier.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dllfixdbg: Work around annoying gdb warning about missing
+       .gnu_debuglink.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Rename cygWFMO to cygwait throughout and use the magic of polymorphism
+       to "wait for stuff".
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Use
+       simplified arg form of cygwait.
+       * fhandler_console.cc (fhandler_console::read): Ditto.
+       * fhandler_audio.cc (fhandler_dev_dsp::Audio_out::waitforspac): Ditto.
+       (fhandler_dev_dsp::Audio_in::waitfordata): Ditto.
+       * fhandler_fifo.cc (fhandler_fifo::wait): Ditto.
+       * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
+       (fhandler_serial::raw_write): Ditto.
+       * select.cc (cygwin_select): Ditto.
+       * sigproc.h (cygwait): Rename from cygWFMO.  Define two argument and
+       single argument forms of this function.
+
+       * fhandler_tty.cc (fhandler_pty_slave::open): Use method to query if
+       tty is open.
+       (fhandler_pty_slave::read): Send SIGHUP when master is detected as
+       closed.
+       (fhandler_pty_common::close): Close input_available_event in callers
+       since master may need to signal it first.
+       (fhandler_pty_master::close): Lie and set input_available_event when
+       closing, then close input_available_event.
+       (fhandler_pty_slave::close): Close input_available_event explicitly
+       here.
+       * tty.h (tty::is_master_closed): Declare new method.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (signal_exit): Revert reversion of 2011-12-04 change
+       since, otherwise, you see hangs when the signal pipe is closed.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Fifth time is the charm.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Make sure that 0 is returned when sel.wait
+       times out.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * include/sys/wait.h: Add in all c++ functions.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (select_stuff::wait): Temporarily disallow APCS.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * include/sys/wait.h: Ensure that C++ functions are only used when
+       using C++.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Make sure that poll is called when
+       appropriate.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll_dllcrt0): Don't try to initialize dll data if we're
+       dynamically loaded since fork() doesn't work in that scenario anyway.
+       (dll_dllcrt0_1): Don't accommodate dynamically loaded dlls.
+       * exceptions.cc (ctrl_c_handler): Don't lock the process; there's too
+       much risk of deadlock.
+       * sigproc.cc (_cygtls::remove_wq): Don't try to remove anything from
+       the waitq if there is obviously nothing there.
+       * strace.cc (strace::activate): Allow stracing dynamically loaded
+       cygwin1.dll.
+
+2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_termios.cc (tty_min::kill_pgrp): Don't send __SIGSETPGRP
+       to ourselves since presumably we are already initialized.
+
+2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Add common introducer and leaver debug
+       output.
+       (select_stuff::poll): Remove unneeded debugging.
+
+2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (ctrl_c_handler): Remove _my_tls.remove since it can
+       cause deadlocks during exec and will eventually be handled anyway.
+
+2011-12-07  Corinna Vinschen  <vinschen@redhat.com>
+
+       * spawn.cc (child_info_spawn::worker): Add CREATE_BREAKAWAY_FROM_JOB
+       to all spawned processes.  Explain why.
+
+2011-12-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_fifo.cc (fhandler_fifo::wait): Fix stupid typo and actually
+       wait for the handle.
+
+2011-12-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (close_my_readsig): New function.
+       (_cygtls::signal_exit): Close my_readsig via close_my_readsig(),
+       avoiding communication with the signal pipe.
+       (wait_sig): Close my_readsig via close_my_readsig().
+
+2011-12-05  Corinna Vinschen  <vinschen@redhat.com>
+
+       * mmap.cc (mlock): Replace LOCK_VM_IN_WSL with correct MAP_PROCESS.
+       (munlock): Ditto.
+       * ntdll.h: Rearrange to have all preprocessor definitions at the start
+       of the file.  Add comments to each definition block.
+       (MAP_PROCESS): Rename from LOCK_VM_IN_WSL.
+       (MAP_SYSTEM): Rename from LOCK_VM_IN_RAM.
+
+2011-12-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygWFMO): Don't assume that cancellable event is always
+       available.
+       * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::waitforspace): Use
+       cygWFMO instead of WaitForMultipleObjects.
+       (fhandler_dev_dsp::Audio_in::waitfordata): Ditto.
+       * fhandler_fifo.cc (fhandler_fifo::wait): Ditto.
+       * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
+       (fhandler_serial::raw_write): Ditto.
+       * fhandler_tty.cc (fhandler_pty_slave::read): Ditto.
+       * select.cc (cygwin_select): Ditto for degenerate case.
+
+2011-12-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygWFMO): Move inside "INSIDE_CYGWIN" #ifdef.
+
+2011-12-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (exception::handle): Drop abbreviation for "exception"
+       since I never remember what it stands for.
+       (sig_handle_tty_stop): Remove obsolete call to reset_signal_arrived.
+       (_cygtls::call_signal_handler): Rework to grab signal information from
+       _main_tls if none is set for _my_tls.  Try harder to keep thread
+       locked.
+       (reset_signal_arrived): Delete.
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Use new
+       cygWFMO call to wait for an event + standard cygwin stuff.  Modify
+       debug output to acccomodate new function.
+       * fhandler_console.cc (fhandler_console::read): Replace
+       WaitForMultipleObjects with cygWFMO.
+       * fhandler_socket.cc (get_inet_addr): Add comment.
+       * gendef (_sigdelayed): Remove call to reset_signal_arrived.
+       * sigproc.cc (_cygtls::signal_exit): Don't close my_readsig here unless
+       we're in the signal thread.
+       (create_signal_arrived): Create signal_arrived as auto-reset so that only
+       one thread is woken when a signal arrives.
+       * sigproc.h (cygWFMO): New function.
+       (reset_signal_arrived): Delete declaration.
+
+2011-12-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * mmap.cc (mlock): Add standard syscall return value debugging output.
+       (munlock): Ditto.
+       (posix_madvise): Ditto.
+
+       * signal.cc: Remove obsolete sigcatchers stuff throughout.
+       (sigaction_worker): Add function name parameter and use it to show
+       standard syscall return value debugging output.  Also add fault
+       protection.
+       (sigaction): Accommodate extra argument to sigaction_worker.
+       (siginterrupt): Ditto.
+       * syscalls.cc (read): Remove obsolete sigcatchers stuff.
+       (readv): Ditto.
+
+2011-12-03  Corinna Vinschen  <vinschen@redhat.com>
+
+       * mmap.cc (mlock): Drop requesting SE_LOCK_MEMORY_PRIVILEGE.  Drop
+       outdated comment.  Call NtLockVirtualMemory with LOCK_VM_IN_WSL flag.
+       (munlock): Drop requesting SE_LOCK_MEMORY_PRIVILEGE.  Call
+       NtUnlockVirtualMemory with LOCK_VM_IN_WSL flag.
+
+2011-12-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Throughout, remove extra space after function name from debugging
+       output.
+       Throughout, change syscalls to report on return values using new %R
+       format option.
+       * smallprint.cc (__small_vsprintf): Add parsing for %R to report on
+       return values and possible errno from syscalls.
+
+       * errno.cc (errmap): Add PRIVILEGE_NOT_HELD.
+
+       * fhandler_tty.cc (fhandler_pty_master::setup): When creating a thread
+       use shorter name to reduce debuggging output.
+       * select.cc (start_thread_pipe): Ditto.
+       (start_thread_serial): Ditto.
+       (start_thread_socket): Ditto.
+       (start_thread_mailslot): Ditto.
+       * sigproc.cc (talktome): Ditto.
+
+2011-12-03  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler.cc (fhandler_base::open): Fix comment a bit more.
+
+2011-12-03  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler.cc (fhandler_base::open): Fix typos in comment.
+
+2011-12-02  Corinna Vinschen  <vinschen@redhat.com>
+
+       * path.cc (conv_path_list): Take cygwin_conv_path_t as third parameter.
+       Allow all types of CCP conversions.  Accommodate throughout.
+       (cygwin_conv_path): Use current ANSI or OEM codepage for WIN_A
+       conversions, depending on current file API codepage setting.
+       (cygwin_conv_path_list): Allow all CCP conversion types.
+       * include/sys/cygwin.h (CCP_CONVTYPE_MASK): Add to cygwin_conv_path_t
+       enum for convenience.
+
+2011-11-29  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (get_proc_lock): Remove extra NULL check.  Return false on
+       failure.
+
+2011-11-29  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sync.cc: Fix comment.
+
+2011-11-29  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll_list::reserve_space): Use %p rather than %lx to show
+       reserved space.
+
+2011-11-29  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (remove_proc): Don't terminate the currently executing
+       thread.
+
+2011-11-28  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygheap.cc (cygheap_fixup_in_child): Accommodate new HEAP_3*
+       classifications for cleanup-after-fork.
+       * cygheap_malloc.h (cygheap_types): Add HEAP_2_MAX, HEAP_3_FHANDLER.
+       * fhandler.h: Throughout, change clone to take a cmalloc id.
+       (fhandler_base::delete): Inline.
+       (fhandler_base_overlapped): Mark flush_async_io as a friend.
+       (fhandler_base_overlapped::asio_done): Declare new static member.
+       (fhandler_base_overlapped::asio_close_counter): Ditto.
+       (fhandler_base_overlapped::check_later): Declare new function.
+       (fhandler_base_overlapped::flush_all_async_io): Ditto.
+       * fhandler.cc (fhandler_base_overlapped::asio_done): Declare.
+       (fhandler_base_overlapped::asio_close_counter): Ditto.
+       (flush_async_io): Declare new thread function.
+       (fhandler_base_overlapped::flush_all_async_io): Declare new function.
+       (fhandler_base_overlapped::check_later): Ditto.
+       (fhandler_base_overlapped::close): Call check_later to close
+       nonblocking fd asynchronously.  Assume that this completed
+       successfully.
+       * select.cc (pipe_data_available): Don't consider data to be
+       "available" if fd still has unflushed I/O.
+       * syscalls.cc (close_all_files): Call
+       fhandler_base_overlapped::flush_all_async_io to make sure that all
+       nonblocking pipe I/O has completed.
+
+2011-11-28  Corinna Vinschen  <vinschen@redhat.com>
+
+       * external.cc (fillout_pinfo): Store program name as POSIX path in
+       ep.progname_long.
+
+2011-11-28  Corinna Vinschen  <vinschen@redhat.com>
+
+       * pinfo.cc (pinfo::exit): Call TerminateProcess to avoid potential
+       busy loop in ntdll.dll when calling ExitProcess. Only call ExitProcess
+       as a fallback.
+
+2011-11-27  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * init.cc (dll_entry): Revert previous change since it caused
+       inexplicable fork problems.
+
+2011-11-26  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * init.cc (dll_entry): Don't bother calling through thread removal
+       cleanup if we are exiting.
+
+2011-11-26  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (stackdump): Make global.
+       (signal_exit): Move to sigproc.cc.
+       * sigproc.cc (signal_exit): Move here.  Declare stackdump extern.  Set
+       my_sendsig to indicate that signals are no longer available.
+       (my_readsig): Make Static again.
+       (sig_send): Interpret ERROR_BROKEN_PIPE as ESRCH.  Remove special-case
+       EACCESS errno setting, just setting errno generally, even for "its_me"
+       case.
+
+2011-11-25  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (sigpacket::process): Move signal_exit processing
+       into...
+       (_cygtls::signal_exit): ...here.  Close my_readsig and comment on why.
+       * pinfo.cc (pinfo::exit): Move sigproc_terminate earlier.  Set exiting
+       flag in lock_process.
+       * sigproc.cc (my_readsig): Make global.
+       * sync.cc (muto::exiting_thread): Delete.
+       (muto::acquire): Delete #if 0'ed code.
+       * sync.h (muto::exiting_thread): Delete.
+       (set_exiting_thread): Ditto.
+       (lock_process::lock_process): Don't worry about setting the exiting
+       thread since it had no meaning.
+
+2011-11-24  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygthread.cc (cygthread::name): Default name to "main" if we are early
+       in the process of setting up the DLL and no name is known.
+       * dcrt0.cc (initial_env): Remove CYGWIN_SLEEP stuff.
+       (get_cygwin_startup_info): Activate strace here as appropriate.
+       (dll_crt0_0): Move get_cygwin_startup_info as early as possible to
+       avoid missing strace output.
+       * fork.cc (frok::child): Move debugging statement to point where ppid
+       will be set.
+       * pinfo.cc (pinfo::thisproc): Remove obsolete call to strace.hello.
+       Tweak debug output slightly.
+       * select.cc (select_stuff::wait): Allow APCS to be triggered while
+       waiting since we use them now.  Report when that happens.
+       * sigproc.cc (child_info::child_info): Use strace.active() rather than
+       strace.attached().
+       * spawn.cc (child_info_spawn::worker): Only write strace child pid
+       when we know it's a cygwin process.  Accommodate change to write_child
+       argument list.
+       * strace.cc (strace::hello): Delete.  Move functionality...
+       (strace::activate): ...to here.
+       (mypid): Just use raw GetCurrentProcessId () if myself isn't set.
+       (strace::write_childpid): Don't wait for subproc_ready.  Remove arg
+       which was required for it.
+       * include/sys/strace.h (strace::hello): Delete.
+       (strace::write_childpid): Delete first argument.
+
+2011-11-23  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * child_info.h (CURR_CHILD_INFO_MAGIC): Reset for previous changes.
+
+       * dcrt0.cc (get_cygwin_startup_info): Signal readiness when stracing
+       since strace::write_child relies on it.  Use strace.activate to notify
+       strace process, passing in arg indicating whether we're forked.
+       * sigproc.cc (wait_sig): Accommodate new strace::activate argument.
+       * spawn.cc (child_info_spawn::worker): Oops.  Previous suspended test
+       was actually correct.  Revert and document.
+       * strace.cc (strace::activate): Send additional flag indicating whether
+       this is an attempt to activate a forked process.
+       (strace::hello): Report on windows pid.
+       * include/sys/strace.h (strace::strace): Make a dummy.
+       (strace::activate): Modify declaration to accept an argument.
+       (strace::write_childpid): Set regparm.
+
+2011-11-23  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pipe.cc (fhandler_pipe::create): Avoid derefencing a NULL pointer.
+
+       * child_info.h (child_info): Reorganize some elements so that the ones
+       which are initialized in a constructor are all together.
+       * sigproc.cc (child_info::child_info): Initialize values via the
+       constructor rather than as C statements and make sure that flags is set
+       to zero initially.
+
+       * spawn.cc (child_info_spawn::worker): Use iscygwin() test for
+       determining when to send strace info since it is more foolproof than
+       checking the suspend state.
+
+2011-11-23  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (fhandler_pipe::create): Rename from the misnamed
+       "create_selectable".  Change return to DWORD.
+       (fhandler_pty_common::pipesize): New constant.
+       * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Reflect
+       create_selectable name change.
+       * miscfuncs.cc (CreatePipeOverlapped): Ditto.
+       * pipe.cc (fhandler_pipe::create): Ditto.
+       (fhandler_pipe::create): Rename from the misnamed "create_selectable".
+       Return DWORD.  Only set pipe size to default when it is passed in as
+       zero.
+       * fhandler_tty.cc (fhandler_pty_master::setup): Ditto.  Use
+       fhandler_pty_common::pipesize rather than a raw constant.
+       * tty.cc (tty::not_allocated): Ditto.
+
+       * sigproc.cc (sigproc_init): Use fhandler_pipe::create to create the
+       signal pipe to get a more appropriate message based pipe.
+
+2011-11-21  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (remove_proc): Don't do busy loop when exiting since it
+       doesn't matter.
+
+2011-11-21  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (remove_proc): Don't do busy loop when execing since
+       thread could have been terminated prior to setting flag.
+
+       * signal.cc (sigwaitinfo): Zero event before closing to signal other
+       threads that it is no longer available.
+
+2011-11-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * shared.cc (get_shared_parent_dir): Use global shared_parent_dir
+       instead of local dir variable and create handle not inheritable to
+       avoid accumulating stray handles in child processes.
+       (get_session_parent_dir): Ditto with session_parent_dir variable.
+
+2011-11-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * shared.cc (shared_info::create): Open global shared data section
+       non-inheritable to avoid accumulating stray handles in child processes.
+
+2011-11-15  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * child_info.h (CURR_CHILD_INFO_MAGIC): Reset.
+       (cygheap_exec_info::nchildren): Move from child_info_spawn.
+       (cygheap_exec_info::cchildren): Ditto.
+       (cygheap_exec_info::record_children): Declare new function.
+       (cygheap_exec_info::reattach_children): Ditto.
+       (cygheap_exec_info::alloc): Ditto.
+       (child_info_spawn::nchildren): Move to cygheap_exec_info.
+       (child_info_spawn::cchildren): Ditto.
+       * sigproc.cc (cygheap_exec_info::alloc): Define new function.
+       (child_info_spawn::cleanup): Accommodate move of children info to
+       cygheap_exec_info.
+       (cygheap_exec_info::record_children): Define new function.
+       (cygheap_exec_info::reattach_children): Ditto.
+       (child_info_spawn::record_children): Use
+       cygheap_exec_info function to accomplish this task.
+       (child_info_spawn::reattach_children): Ditto.
+       * spawn.cc (child_info_spawn::worker): Allocate moreinfo using
+       cygheap_exec_info::alloc.
+
+       * dcrt0.cc (child_info_fork::alloc_stack_hard_way): Use abort for the
+       error to avoid a retry.
+
+2011-11-14  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pinfo.cc (_pinfo::dup_proc_pipe): Fatalize a warning when debugging.
+
+2011-11-13  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Remove erroneously checked-in debugging statements.
+       * cygheap.cc (cygheap_fixup_in_child): Here.
+       * debug.cc (delete_handle): Here.
+       * sigproc.cc (child_info_spawn::cleanup): Here.
+       * spawn.cc (child_info_spawn::worker): Here.
+
+2011-11-13  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Throughout, change "sig %d" in strace output to "signal %d" for
+       consistency.
+       * assert.cc (__assert_func): Output assertion string to strace too.
+       * fork.cc (frok::parent): Report ASAP on forked pid in debugging output.
+       * pinfo.cc (pinfo::_pinfo_release): Define new function.
+       (pinfo::init): Use _pinfo_release() rather than release() to release
+       shared memory stuff.
+       (pinfo::wait): Shorten name of process waiting thread for more concise
+       debugging.
+       (pinfo::release): Use pinfo_release to release shared memory part of
+       struct.
+       * pinfo.h (pinfo::__pinfo_release): Declare.
+
+2011-11-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Throughout use "have_execed" macro rather than "hExeced" global handle.
+       Throughout rename _PROC_* to _CH_*.
+       * child_info.h: Include "pinfo.h".
+       (child_info_types): Rename _PROC_* -> _CH_* to avoid confusion with
+       similarly named constants.
+       (_PROC_*): Delete unneeded aliases.
+       (PROC_*): Ditto.
+       (CURR_CHILD_INFO_MAGIC): Ditto.
+       (cchildren): Define using "pinfo_minimal".
+       (child_info::set_saw_ctrl_c): Move to
+       (child_info_spawn::set_saw_ctrl_c): Here.
+       (child_info_spawn::lock): New field.
+       (child_info_spawn::hExeced): Ditto.
+       (child_info_spawn::ev): Ditto.
+       (child_info_spawn::~child_info_spawn): Move to sigproc.cc.
+       (child_info_spawn::child_info_spawn): Ditto.
+       (child_info_spawn::cleanup): Declare new function.
+       (child_info_spawn::set_saw_ctrl_c): Move to this class.  Set flag only
+       when execed and return true when we have set the flag.
+       (child_info_spawn::child_info_spawn::signal_myself_exited): New function.
+       (child_info_spawn::wait_for_myself): Ditto.
+       (child_info_spawn::has_execed_cygwin): Ditto.
+       (child_info_spawn::has_execed): Ditto.  Replaces "hExeced" test.
+       (child_info_spawn::operator HANDLE&): New operator.
+       (child_info_spawn::worker): Define old "spawn_guts" as class member.
+       (ch_spawn): Declare.
+       (have_execed): Define.
+       (have_execed_cygwin): Ditto.
+       * cygheap.h: Update comment.
+       * dcrt0.cc (get_cygwin_startup_info): Use _CH_* enums.
+       (child_info_spawn::handle_spawn): Ditto.
+       (dll_crt0_0): Ditto.
+       (multiple_cygwin_problem): Ditto.
+       * exceptions.cc (chExeced): Delete obsolete declaration.
+       (ctrl_c_handler): Reference set_saw_ctrl_c via new ch_spawn global.
+       * globals.cc (hExeced): Delete.
+       * pinfo.cc (pinfo::thisproc): Refer to cygheap as ::cygheap for
+       consistency in handle naming when -DDEBUGGING.
+       (pinfo::init): Accommodate case where myself.h is known but h0 is
+       passed in.
+       (pinfo::pinfo): New constructor for setting up a pinfo passed in by
+       previous exec'or.
+       (pinfo::proc_waiter): Don't handle subprocess if we're in the process
+       of exiting due to an exec of a cygwin process.  Don't close
+       rd_proc_pipe here.  Close it when we actually are finished with the
+       process.  Use new ch_spawn.signal_myself_exited function to let exec
+       stub know that subprocess has exited.
+       (pinfo::wait): Clarify debugging output.
+       (pinfo::release): Use "close_h" to close all handles to avoid races.
+       (winpids::add): Assume that elements of the array do not need to be
+       zeroed and are properly initialized or suffer problems on
+       pinfo::release.  Don't close hProcess since release does that now.
+       * pinfo.h: Update comment.
+       (pinfo_minimal): Move some elements from pinfo here so that
+       child_info_spawn can use them.
+       (pinfo): Inherit from pinfo_minimal.
+       (pinfo::pinfo): Modify to accommodate new pinfo_minimal.
+       (pinfo::allow_remove): New function.
+       * sigproc.cc (proc_subproc): Use boolean values for true/false.
+       Implement PROC_EXEC_CLEANUP.
+       (proc_terminate): Set ppid = 1 since the procs list will only be
+       iterated when the process has not execed.  Don't do any cleanup here
+       since it is now handled in pinfo::release.
+       (sigproc_init): Initialize sync_proc_subproc earlier.
+       (child_info::child_info): Assume that all important fields are properly
+       initialized and avoid memset().
+       (child_info_spawn::child_info_spawn): Specifically test for execing and
+       then set up appropriate fields in the struct.
+       (child_info_spawn::cleanup): Define new function.
+       (child_info_spawn::record_children): Specifically test for being execed
+       here.  Fill in pinfo_minimal part of children array.
+       (child_info_spawn::reattach_children): Use constructor to duplicate
+       information for previous exec'or.  Add more debugging output.
+       (remove_proc): Force deletion of thread when exiting due to exec.  Rely
+       on pinfo::cleanup in release.
+       * sigproc.h (PROC_EXEC_CLEANUP): New enum.
+       (PROC_DETACHED_CHILD): Delete.
+       * spawn.cc (chExeced): Delete.
+       (child_info_spawn::worker): Rename from spawn_guts.  Use elements of
+       child_info_spawn throughout rather than ch.whatever.  Use ::cygheap to
+       refer to global rather than element of child_info.  Use
+       wait_for_myself() rather than waitpid().  Call
+       child_info_spawn::cleanup on function return.
+       (spawnve): Reflect movement of spawn_guts functionality into
+       child_info_spawn::worker.
+       * syscalls.cc (popen): Ditto.
+       * winsup.h (spawn_guts): Delete declaration.
+
+2011-11-08  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix.sgml (std-gnu): Add ptsname_r.
+
+2011-11-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (__ptsname): New macro.
+       * dtable.cc (decode_tty): Use __ptsname to generate the slave pty name.
+       * fhandler_tty.cc (fhandler_pty_master::ptsname_r): Ditto.
+       * bsdlib.cc: Add needed includes for openpty() changes.
+       (openpty): Use __ptsname to generate the slave pty name.  Close slave
+       fd when aslave == NULL.
+
+2011-11-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * include/cygwin/stdlib.h: Update copyright.
+
+2011-11-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygwin.din (ptsname_r): Export.
+       * fhandler.cc (fhandler_base::ptsname_r): Define.
+       * fhandler.h (fhandler_base::ptsname): Delete.
+       (fhandler_base::ptsname_r): Declare.
+       (fhandler_pty_master::ptsname_r): Declare.
+       * fhandler_tty.cc (fhandler_pty_master::ptsname): Delete.
+       (fhandler_pty_master::ptsname_r): New reentrant function derived from
+       previous ptsname.
+       * syscalls.cc (ptsname_r): Implement new function with functionality
+       similar to Linux.
+       (ptsname): Use ptsname_r () to fill out buf.
+       * include/cygwin/stdlib.h (ptsname_r): Declare.
+       * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 255 to
+       reflect export of ptsname_r.
+
+       * pinfo.cc (pinfo::wait): Return bool rather than int.
+       * pinfo.h (info::wait): Ditto.
+       (pinfo::reattach): Define !defined(_SIGPROC_H) case for consistency.
+       * sigproc.cc (child_info_spawn::reattach_children): Use correct
+       dwProcessId rather than pid when duplicating handle.
+
+2011-11-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (CHUNK_SIZE): Drop NO_COPY.
+
+2011-11-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (check_dir_not_empty): Check surplus directory entries
+       by calling NtQueryAttributesFile.  Make STATUS_DIRECTORY_NOT_EMPTY
+       return value dependent on its status code.  Add long comment to explain.
+       (unlink_nt): Add comment to explain flaw in checking the sharing mode.
+       Set status to STATUS_SUCCESS instead of 0.  Add a retry loop to setting
+       the delete disposition and trying to move a directory to bin to
+       workaround rare cases of lingering, already deleted subdirectory
+       entries.  Add long comment to explain.
+       (rename): Set status to STATUS_SUCCESS instead of 0.
+
+2011-11-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pinfo.cc (status_exit): Recognize STATUS_ILLEGAL_INSTRUCTION.
+       (child_info::proc_retry): Ditto.
+
+2011-11-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pinfo.cc (status_exit): Return complete error code.  Handle
+       STATUS_ACCESS_VIOLATION correctly.
+       (pinfo::set_exit_code): Set self->exitcode directly from status_exit.
+
+2011-11-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pinfo.h (pinfo::reattach): Only set destroy to false when
+       proc_subproc succeeds.  Return true for success.
+       * sigproc.cc (child_info_spawn::reattach_children): Try harder to clean
+       up on error by detecting reattach failures too.
+
+2011-11-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (child_info_spawn::reattach_children): Clean up handle
+       when can't open parent process or suffer handle leak.
+
+2011-11-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (child_info::sync): Report on exit code in strace output.
+       (child_info::proc_retry): Don't consider STATUS_ACCESS_VIOLATION as a
+       restartable event.
+
+2011-11-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (child_info_spawn::reattach_children): Avoid issuing an
+       error when we can't duplicate from "parent" since it is probably ok if
+       children of the previous owner of the pid disappear.
+
+2011-11-03  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (off_current): Define local in fhandler_base::raw_write.
+       Drop erroneous NO_COPY, add _RDATA to make R/O.
+       (off_append): Ditto.
+       * globals.cc (_RDATA): Move definition from here...
+       * winsup.h: ...to here.
+
+2011-10-30  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (fhandler_pipe::create_selectable): Remove optional
+       argument, take an options argument for CreateNamedPipe/CreateFile.
+       Change handle arguments to expect pointers.
+       (fhandler_fifo::fifo_state): Delete.
+       (fhandler_fifo::dummy_client): Ditto.
+       (fhandler_fifo::open_nonserver): Ditto.
+       (fhandler_fifo::wait_state): Ditto.
+       (fhandler_fifo::raw_write): Ditto.
+       (fhandler_fifo::read_ready): New field.
+       (fhandler_fifo::write_ready): Ditto.
+       (fhandler_fifo::wait): Modify argument.
+       (fhandler_fifo::fifo_name): Add a new argument.
+       (fhandler_fifo::fixup_after_fork): New function.
+       * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Remove
+       initialization of expunged elements.  Initialize new handles to NULL.
+       (fhandler_fifo::open_nonserver): Delete.
+       (fnevent): New macro for creating a named event.
+       (fnpipe): New macro for creating a unique named pipe name.
+       (create_pipe): New macro for simplification of named pipe creation.
+       (fhandler_fifo::fifo_name): Use new argument when creating a shared
+       name.
+       (fhandler_fifo::open): Rewrite.  Use events to synchronize.
+       (fhandler_fifo::wait): Rewrite to wait for new fifo events which are
+       supplied as a parameter.
+       (fhandler_fifo::raw_read): Rewrite to use handle mechanism to detect
+       client-side disconnect.
+       (fhandler_fifo::raw_write): Delete.
+       (fhandler_fifo::close): Remove accommodations for expunged fields.
+       Close event handles.
+       (fhandler_fifo::dup): Remove accommodations for expunged fields.
+       Duplicate event handles.
+       (fhandler_fifo::fixup_after_fork): New function.  Perform fixups on
+       event handles.
+       (fhandler_fifo::set_close_on_exec): Remove accommodations for expunged
+       fields.  Set inheritance for new handle fields.
+       * miscfuncs.cc (CreatePipeOverlapped): Accommodate changes in
+       fhandler_pipe::create_selectable.
+       * tty.cc (tty::not_allocated): Ditto.
+       * pipe.cc (fhandler_pipe::create): Ditto.
+       (fhandler_pipe::create_selectable): Accept an extra open_mode argument.
+       Pass arguments by reference and allow opening one end of the pipe at a
+       time.
+
+       * sys/strace.h (debug_only_printf): Define new macro which calls
+       debug_printf only when DEBUGGING is defined.
+
+2011-10-28  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (sigpacket::process): Avoid a potential deadlock when
+       exiting due to a signal.
+
+2011-10-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.din (getgrouplist): Export.
+       * grp.cc (get_groups): New static function to run the core functionality
+       of initgroups and getgrouplist.
+       (initgroups32): Call get_groups and just create supplementary group
+       list in cygheap.  Rename name of first argument to "user".  Add an
+       assertion to test for a NULL user name.
+       (initgroups): Rename name of first argument to "user".
+       (getgrouplist): New function.
+       * posix.sgml (std-bsd): Add getgrouplist.
+       * include/cygwin/grp.h (getgrouplist): Declare.
+       * include/cygwin/version.h: Bump API minor number.
+
+2011-10-25  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * child_info.h (cchildren): New struct.
+       (child_info_spawn::nchildren): Rename from nprocs.
+       (child_info_spawn::children): Change type to cchildren for more
+       bookkeeping possibilities.
+       (child_info_spawn::child_info_spawn): Clear nchildren.
+       (child_info_spawn::record_children): Declare new function.
+       (child_info_spawn::reattach_children): Ditto.
+       * dcrt0.cc (child_info_spawn::handle_spawn): Call reattach_children to
+       gather list of processes we are potentially waiting for.
+       * pinfo.h (pinfo::pinfo): Make sure that rd_proc_pipe is always cleared.
+       (pinfo::reattach): New function.
+       * sigproc.cc: Move pinfo.h earlier so that it can be used in sigproc.h.
+       (get_proc_lock): Don't bother with a lock during DLL initialization.
+       (proc_subproc): Handle PROC_REATTACH_CHILD.
+       (proc_terminate): Orphan children only when we are not an execed
+       process or when the pid is about to be occupied by a non-cygwin
+       process.
+       (child_info_spawn::record_children): Define new function.
+       (child_info_spawn::reattach_children): Ditto.
+       * sigproc.h (procstuff): Define PROC_REATTACH_CHILD and renumber other
+       elements.
+       * spawn.cc (spawn_guts): Record any to-be-waited-for subprocesses if
+       about to exec a cygwin process.
+
+       * sigproc.cc (sig_send): Fix harmless transposition of fifth and six
+       arguments to DuplicateHandle().
+       (child_info::child_info): Ditto.
+
+       * globals.cc (hExeced): Make NO_COPY.
+
+2011-10-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * hookapi.cc (hook_or_detect_cygwin): Take additional handle
+       to a file mapping as parameter.  If this handle is not NULL,
+       create another file mapping for the IAT.
+       * spawn.cc (av::fixup): Only map the first 64K of an image and
+       keep the mapping handle to use as argument to hook_or_detect_cygwin.
+       * winsup.h (hook_or_detect_cygwin): Add mapping handle as default
+       parameter in declaration.
+
+2011-10-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (unlink_nt): Fix a bug which overwrites the NT status
+       value in case setting the delete disposition returns with
+       STATUS_DIRECTORY_NOT_EMPTY.
+
+2011-10-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * shared.cc (open_shared): Fix memory reservation of essential shared
+       memory regions.  Drop delta computations since delta is always 0 in
+       non-relocated case.  Add a comment.
+
+2011-10-23  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_tty.cc (fhandler_pty_slave::read): Use consistent way for
+       testing ReadFile return.
+       * pipe.cc (fhandler_pipe::create_selectable): Open the write side of
+       the pipe in message-mode to force writing as "chunks".  Explain why.
+
+2011-10-23  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * path.cc (path_conv::get_nt_native_path): Avoid dereferencing path
+       when it is NULL.
+
+2011-10-21  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dtable.cc (dtable::delete_archetype): Improve debugging output.
+       (dtable::init_std_file_from_handle): Close console handle early, before
+       initialization.  Build up openflags for passing to open_setup, just to
+       be safe.
+       (last_tty_dev): New variable.
+       (fh_last_tty_dev): New macro.
+       (fh_alloc): Try again to keep track of previously opened tty, this time
+       by just saving the device and using that to potentially open an
+       archetype.  Avoid setting the "/dev/tty" name if the creation of the
+       fhandler failed.
+       (build_fh_pc): Remove unused second argument.  Reorganize how and where
+       the name is set.  Set last_tty_dev as appropriate.  Avoid a NULL
+       dereference in a debug printf.
+       * dtable.h (build_fh_pc): Reflect removal of second parameter.
+       * fhandler.cc (fhandler_base::reset): Use new '<<' operator to copy pc
+       since it preserves any potentially previously set name.
+       (fhandler_base::set_name): Ditto.
+       * fhandler.h (fhandler_*::clone): Throughout use ccalloc to allocate
+       new fhandler, primarily to make sure that pc field is properly zeroed.
+       (fhandler_termios::last): Eliminate.
+       (fhandler_termios): Remove setting of last.
+       (fhandler_base::~fhandler_termios): Ditto.
+       * fhandler_console.cc (fhandler_console::open): Don't make decisions
+       about opening close-on-exec handles here since it makes no sense for
+       archetypes.
+       (fhandler_console::init): Assume that input handle has already been
+       opened.
+       * fhandler_termios.cc (fhandler_termios::last): Delete.
+       * path.h (path_conv::eq_worker): New function.  Move bulk of operator =
+       here.
+       (operator <<): New function.
+       (operator =): Use eq_worker to perform old functionality.
+
+       * child_info.h (NPROCS): Move here from sigproc.cc.
+       (child_info::nprocs): New field.  Not used yet.
+       (child_info::children):: Ditto.
+
+2011-10-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::rmdir): Check invalid
+       success only on Samba shares.
+       * mount.cc (fs_info::update): Drop has_buggy_basic_info flag for
+       NcFsd.
+       * syscalls.cc (unlink_nt): Fix typo in comment.
+
+2011-10-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * globals.cc (ro_u_ncfsd): New R/O unicode string.
+       * mount.cc (fs_info::update): Check for "NcFsd" FS.  Set flags and
+       change comments accordingly.
+       (fs_names): Add entry for NcFsd FS.
+       * mount.h (enum fs_info_type): Add ncfsd.
+       (class fs_info): Add ncfsd flag and accessor methods.
+       * path.h (class path_conv): Add fs_is_ncfsd method.
+       * syscalls.cc (unlink_nt): Experimentally try delete-on-close on NcFsd
+       in STATUS_CANNOT_DELETE case.
+
+2011-10-20  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (fhandler*::copyto): Free path_conv strings first.
+       * path.h (cfree_and_null): Rename and expand from cfree_maybe.
+       (path_conv &operator =): Call free_strings rather than freeing strings
+       directly.
+
+2011-10-20  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Throughout change TTY_* to PTY_*, tty_* to pty_*, and ttym_* to ptmx_*.
+       * devices.cc: Regenerate.
+       * dtable.cc: (fh_alloc): Preserve /dev/tty name when that's what we
+       opened.
+       (build_fh_pc): Preserve any existing name.
+       * fhandler.cc (fhandler_base::open_with_arch): Ditto.
+       * fhandler_tty.cc (fhandler_pty_master::fhandler_pty_master): Force the
+       name to /dev/ptmx while preserving other pty master device information.
+       * path.h (cfree_maybe): New macro.
+       (path_conv::operator =): Free any allocated strings in target.
+       (path_conv::free_strings): Delete unused function.
+
+       * sigproc.cc (proc_terminate): Remove previous accommodation for execed
+       processes since it didn't have the desired effect.  Change comment to a
+       FIXME.
+
+       * spawn.cc (chExeced): Mark NO_COPY.
+       (exe_suffixes): Ditto.
+
+2011-10-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (try_to_bin): Improve debug output.
+       (check_dir_not_empty): Take additional path_conv argument.  Improve
+       debug output.  Change syscall_printf to debug_printf.
+       (unlink_nt): Improve debug output.  Change syscall_printf to
+       debug_printf.
+       (unlink): Change syscall_printf to debug_printf.
+
+       * cygthread.h: Fix copyright dates.
+
+2011-10-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc: Extend two comments.  Mention the name RtlpCurDirRef
+       for reference.
+
+2011-10-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dcrt0.cc (dll_crt0_1): Copy argv before passing to main().
+
+2011-10-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (proc_terminate): Avoid setting ppid to 1 if we're execing.
+
+2011-10-15  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygerrno.h (__set_errno): Modify debugging output to make searching
+       strace logs easier.
+
+       Throughout, change /dev/tty* to /dev/pty*.
+       Throughout, add flags argument to fhandler_*::dup methods.
+       * devices.in: Rename (temporarily?) /dev/ttyN to /dev/ptyN.  Add
+       /dev/ptymN devices for pty masters.
+       * devices.cc: Regenerate.
+       * devices.h (MAX_CONSOLES): Set to max number supported by devices.in.
+       (fh_devices::FH_PTMX): Rename from FH_PTYM.
+       (device::operator int): Return by reference.
+       * dtable.cc (fh_alloc): Take pc as an argument rather than just the
+       device.  This makes debugging easier since more information is
+       available.  Actually implement handling for already-allocated pty
+       master devices.  Make different decisions when generating fhandler for
+       not-opened devices.  Add kludge to deal with opening /dev/tty.
+       (cnew_no_ctor): New macro.
+       (build_fh_pc): Make debugging output more verbose.  Use new clone()
+       fhandler interface to duplicate archetypes.  Reset last term opened.
+       (dtable::dup_worker): Use Use new clone() fhandler interface to
+       duplicate archetypes.  Pass flags to child dup handler.
+       (dtable::dup3): Set O_NOCTTY flag if newfd is not stdin/stdout/stderr.
+       * fhandler.cc (fhandler_base::reset): Rename from operator =() and
+       reduce functionality and sense of copy direction.
+       (fhandler_base::open_with_arch): Use published interface to query
+       io_handle().  Use new copyto() fhandler method to copy from/to found
+       archetype.
+       * fhandler.h: Throughout, delete size(), add copyout, clone, and
+       fhandler_* (void *) methods.
+       (fhandler_base::reset): Rename from operator =().
+       (fhandler_termios::is_dev_tty): Delete.
+       (fhandler_termios): change "protected" region to "private".
+       (fhandler_termios::is_dev_tty): Delete.
+       (fhandler_termios): Rearrange protected/public.
+       (fhandler_termios::fhandler_termios): Remember last fhandler_termios
+       "opened".
+       (fhandler_termios::~fhandler_termios): Forget last fhandler_termios
+       opened.
+       (ioctl): Rename from ioctl_termios.  Take a void * argument.  Reflect
+       argument change in pinfo::set_ctty.
+       (fhandler_console::dup): Declare new function.  Set ctty here if
+       appropriate.
+       (fhandler_pty_master::from_master): Privatize.
+       (fhandler_pty_master::to_master): Ditto.
+       (fhandler_pty_master::dwProcessId): Ditto.
+       (fhandler_pty_master::fhandler_pty_master): Add an `int' argument.
+       (fhandler_pty_master::open_setup): Declare new function.
+       (fhandler_pty_master::~fhandler_pty_master): Declare new method.
+       (fhandler_nodevice): Remove commented out function declaration.
+       * fhandler_console.cc: Use get_ttyp() instead of tc() throughout.
+       (fhandler_console::dup): Define new function to set controlling ctty on
+       dup, as appropriate.
+       (fhandler_console::ioctl): Reflect ioctl_termios name change.
+       (fhandler_console::setup): Rename from get_tty_stuff.
+       (fhandler_console::open_setup): Reflect argument change in
+       pinfo::set_ctty.
+       (fhandler_console::fhandler_console): Set _tc here.
+       * fhandler_termios.cc (handler_termios::ioctl): Rename.  Take a void *
+       arg like other ioctl functions.
+       * fhandler_tty.cc (fhandler_pty_slave::dup): Call myself->set_ctty to
+       potentially reset the controlling terminal.
+       (fhandler_pty_slave::ioctl): Reflect name/arg change for ioctl_termios.
+       (fhandler_pty_slave::fhandler_pty_slave): Take a "unit" argument.  Call
+       setup() here so that we will know the unit number of this fhandler as
+       soon as possible.  Set the unit as appropriate.
+       (handler_pty_master::open): Move most stuff to constructor and
+       open_setup.
+       (handler_pty_slave::open_setup): Reflect argument change in
+       pinfo::set_ctty.
+       (handler_pty_master::open_setup): Define new function.
+       (fhandler_pty_master::cleanup): Clear handles as a flag that the
+       destructor does not have to do "close" operations.
+       (fhandler_pty_master::close): Ditto.
+       (fhandler_pty_master::~fhandler_pty_master): Define new method.
+       (fhandler_pty_master::ioctl): Reflect name/arg change for
+       ioctl_termios.
+       (fhandler_pty_master::setup): Allocate tty here.  Rely on handles being
+       returned from allocated test rather than opening them here.  Avoid
+       setting _need_nl here since it is already zeroed in the constructor.
+       Set up device information with DEV_TTYM_MAJOR.
+       * path.h (path_conv &operator =): Take a const argument.
+       (path_conv::dup): Ditto.
+       (pathconv_arg::PC_OPEN): New enum.
+       (pathconv_arg::PC_CTTY): Ditto.
+       (path_types::PATH_CTTY): Ditto.
+       (path_types::PATH_OPEN): Ditto.
+       (path_conv::isopen): New method.
+       (path_conv::isctty_capable): Ditto.
+       * path.cc (path_conv::check): Set PATH_OPEN and PATH_CTTY as
+       appropriate.
+       * pipe.cc (fhandler_pipe::open): Use copyto to copy pipe handle.
+       * syscall.cc (open): Reinstate fd > 2 check to disallow resetting ctty
+       on non-std* handles.
+       * tty.cc (tty_list::allocate): Pass out handles for allocated tty.  use
+       `not_allocated' to find unallocated ttys.  Avoid keeping the lock since
+       the allocation of the tty should be sufficient to prevent multiple
+       access.
+       (tty::not_allocated): Clarify comment.  Rename.  Return handles when an
+       unused tty is found.  Simply test for existing tty.
+       (tty::exists): Rewrite to use `not_allocated'.
+       * tty.h (NTTYS): Reset down to actual number supported by devices.in.
+       (tty::not_allocated): Declare new function.
+       (tty_list::allocate): Pass out read/write tty handles.  Zero them when
+       not found.
+       * fhandler_proc.cc: Reflect name change from FH_PTYM -> FH_PTMX.
+       * pinfo.h (pinfo::set_ctty): Reduce/reorder arguments passed in.
+       * pinfo.cc (pinfo::set_ctty): Ditto.  Just use tc() built into the
+       passed-in fhandler_termios pointer.  Return true if ctty is assigned.
+       * syscalls.cc (open): Call build_fh_pc with PC_OPEN flag.  Set PC_CTTY
+       if appropriate.
+       (stat_worker): Remove is_dev_tty () stuff.
+
+2011-10-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (dos_drive_mappings::fixup_if_match): Convert
+       native NT network paths into DOS UNC paths.
+
+2011-10-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * sec_auth.cc (get_token_group_sidlist): Add CONSOLE LOGON SID on
+       systems supporting it.  Never add SERVICE SID but keep code in for
+       future reference.  Explain why.
+       (get_priv_list): Add cygpsid pointer parameter.  Point it to the
+       mandatory integrity SID which matches account and privileges.
+       (create_token): Fetch mandatory integrity SID from call to
+       get_priv_list.
+       (lsaauth): Call get_priv_list with additional NULL pointer.  Change
+       comment accordingly.
+       * sec_helper.cc (well_known_console_logon_sid): New static SID.
+       (cygpriv): Change to structure containing extra flag to store info
+       about required integrity level.
+       (privilege_luid): Accommodate changes to cygpriv.  Return integrity
+       level in new high_integrity parameter.
+       (privilege_name): Accommodate changes to cygpriv.
+       (set_privilege): Drop trailing \n from debug output.
+       (set_cygwin_privileges): Don't set SE_CREATE_GLOBAL_PRIVILEGE anymore
+       since it's just not needed, but keep code in for future reference.
+       Change comment accordingly.
+       * security.h (well_known_console_logon_sid): Declare.
+       (privilege_luid): Align declaration to above change.
+       * wincap.h (wincaps::has_console_logon_sid): New element.
+       * wincap.cc: Implement above element throughout.
+
+2011-10-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (find_fast_cwd_pointer): Allow 'push crit-sect-addr' instead
+       of 'mov edi, crit-sect-addr; push edi' and set rcall accordingly.
+
+2011-10-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (copy_cwd_str): Move up in file to be accessible from
+       class fcwd_access_t.
+       (class fcwd_access_t): New class to consolidate and hide the details
+       of the various FAST_CWD implementations.  Add implementation for
+       Windows 8 Developer Preview.
+       (fast_cwd_version): Make static private member of fcwd_access_t.
+       (fast_cwd_ptr): Change base type to fcwd_access_t.
+       (find_fast_cwd_pointer): Return fcwd_access_t**.
+       (find_fast_cwd): Ditto.  Rip out all FAST_CWD implementations and use
+       fcwd_access_t methods instead.
+       (cwdstuff::override_win32_cwd): Ditto.
+
+2011-10-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::cursor_set): Disable forcing
+       y to the current winBottom position.  Explain why.
+
+2011-10-11  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygwin.din: Remove some _tc* exports.  Add tcgetsid().
+       * dtable.cc (fh_alloc): Revert ill-advised setting of major/minor.  Use
+       new is_dev_tty to remember that this device was opened as /dev/tty.
+       * fhandler.cc (fhandler_base::fstat): Remove leftover debugging
+       statement.
+       (fhandler_base::tcgetsid): New function.
+       * fhandler.h ((fhandler_base::tcgetsid): Declare new function.
+       (fhandler_base::is_dev_tty): Ditto.
+       (fhandler_termios): Rearrange protected/public.
+       (fhandler_termios::fhandler_termios): Remember last fhandler_termios
+       "opened".
+       (fhandler_termios::~fhandler_termios): Forget last fhandler_termios
+       opened.
+       (fhandler_termios::opened_as_dev_tty): Declare new field.
+       (fhandler_termios::is_dev_tty): Declare new function.
+       (fhandler_termios::tcgetsid): Ditto.
+       (fhandler_pty_common::use_archetype): Move here from subclass.
+       (fhandler_pty_slave::use_archetype): Move up.
+       (fhandler_pty_master::use_archetype): Ditto.
+       * fhandler_console.cc (fhandler_console::ioctl): Rename second argument
+       from `buf' to `arg' for consistency.  Call ioctl_termios for common
+       fhandler_termios ioctl handling.
+       * fhandler_tty.cc (fhandler_pty_slave::ioctl): Call ioctl_termios for
+       common fhandler_termios ioctl handling.
+       (fhandler_pty_master::ioctl): Ditto.
+       * fhandler_termios.cc (fhandler_termios::tcgetsid): Implement new
+       function.
+       (fhandler_termios::ioctl_termios): Ditto.  Implements TIOCSCTTY
+       handling.
+       * syscalls.cc (stat_worker): Set /dev/tty device info when appropriate.
+       * termios.cc (tcgetpgrp): Avoid extraneous "isatty" check.
+       (tcgetsid): Implement new function.
+       * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 253.
+       * include/sys/termios.h (TIOCSCTTY): Define.
+
+2011-10-11  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dtable.cc (fh_alloc): Don't parse /dev/tty if ctty is < 0.  Reset
+       major/minor from the specific tty to those for /dev/tty.
+
+2011-10-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * syscalls.cc (open): Add temporary kludge to avoid assigning the
+       controlling tty on open unless the open is for stdin/stdout/stderr.
+       * tty.cc (tty_list::connect): Set ENXIO when can't find a tty.
+
+2011-10-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (fhandler_process::closedir): Declare.
+       * fhandler_process.cc (fhandler_process::closedir): New function to
+       avoid a SEGV in fhandler_proc::closedir.
+
+2011-10-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_tty.cc (fhandler_pty_slave::open): Clarify debugging output.
+       (fhandler_pty_slave::open): Change ENOENT to ENXIO when can't open a
+       tty.
+
+2011-10-07  Corinna Vinschen  <corinna@vinschen.de>
+           Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (fhandler_console::tc_getpgid): New function.
+       * spawn.cc (spawn_guts): Add logic to put pure-windows processes "in
+       the background" when they are started that way.
+
+2011-10-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/sys/cygwin.h (cygwin_getinfo_types): Define values
+       additionally as preprocessor symbols.
+
+2011-10-06  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Send __SIGSETPGRP
+       pseudo signal to process group instead of just calling
+       init_console_handler.
+       * sigproc.cc (wait_sig): Call init_console_handler here on __SIGSETPGRP
+       signal.
+       * sigproc.h (__SIGSETPGRP): Define.
+
+2011-10-06  Christian Franke  <franke@computer.org>
+
+       * include/cygwin/wait.h: Use new __wait_status_to_int()
+       macro to access status value in W*() status checks.
+       Fix status description.
+       * include/sys/wait.h: Allow `int' and `union wait' as
+       wait status parameter.  Change __wait_status_to_int()
+       macro and wait () prototypes accordingly.  Add inline
+       functions for C++.  Remove extra `;'.
+
+2011-10-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * external.cc (create_winenv): Rename from sync_winenv.  Take
+       environment pointer as parameter and return pointer to corresponding
+       win32 environment block if != NULL.  Otherwise just sync as before.
+       (cygwin_internal): Add CW_CVT_ENV_TO_WINENV case.
+       * include/cygwin/version.h: Bump API minor number.
+       * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_CVT_ENV_TO_WINENV.
+
+2011-10-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (socketpair): Bind first socket to loopback only as well.
+
+2011-09-21  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * tty.cc (grantpt): Check for valid fd.
+       (unlockpt): Ditto.
+
+2011-09-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (cygwin_getsockopt): Drop erroneous double conversion of error
+       code returned by SOL_SOCKET/SO_ERROR.  Fix error handling.
+
+2011-09-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * lc_msg.h: Regenerate.
+
+2011-09-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dlfcn.cc (gfpod_helper): Helper function to search DLL using
+       a given DLL name.  Change default search path to allow /usr/bin.
+       (get_full_path_of_dll): Find DLLs even if the caller used a ".so"
+       suffix or a "lib" prefix for the DLL.
+
+2011-08-31  Corinna Vinschen  <corinna@vinschen.de>
+
+       * flock.cc (inode_t::unlock_and_remove_if_unused): Rename from
+       unlock_and_remove.
+
+2011-08-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * flock.cc (LOCK_OBJ_NAME_LEN): Change to accommodate extra lf_ver
+       field.
+       (class lockf_t): Add lf_ver field.
+       (lockf_t::lockf_t): Initialize lf_ver to 0.
+       (class inode_t): Change i_wait to i_cnt.  Change comment to explain
+       change in usage.
+       (inode_t:use): Rename from wait.  Make private.
+       (inode_t::unuse): Rename from unwait.  Make private.
+       (inode_t::inuse): Rename from waiting.  Make private.
+       (inode_t::notused): New public method to set use count to 0.
+       (inode_t::unlock_and_remove): New method to unlock node and to delete
+       it if it's unused in current process.
+       (fhandler_base::del_my_locks): Drop global list lock.  Drop variable
+       no_locks_left.  Simpify unlocking and removing node by just calling
+       unlock_and_remove.
+       (fixup_lockf_after_exec): Call notused method for each node.
+       (inode_t::get): Call use method.  Lock node only if outside of list
+       lock.
+       (inode_t::get_all_locks_list): Accommodate additional lf_ver field
+       when creating lockf_t structure from object name.
+       (lockf_t::create_lock_obj_attr): Accommodate additional lf_ver field
+       when creating object name from lockf_t structure.  Handle
+       STATUS_OBJECT_NAME_COLLISION gracefully in F_POSIX case as well.
+       Change comment accordingly.  Increment lf_ver field rather than high
+       byte of lf_wid field.  Simplify comment.
+       (fhandler_disk_file::lock): Always call unlock_and_remove rather than
+       just UNLOCK on node.
+       (lf_setlock): Move ret definition where it's used.  Drop unneeded
+       tests for obj being not NULL.  Only check for deadlock condition if the
+       lock we're trying to establish is a POSIX lock.  Revamp object
+       collecting and wait code to cover all cases.  Don't return with EDEADLK
+       if blocking process can't be opened for synchronization in F_POSIX case,
+       rather just wait like in F_FLOCK case.  Change system_printf to
+       debug_printf in that case.  Only run WaitForMultipleObjects with high
+       priority.  Close obj and process handles prior to locking node.
+
+2011-08-27  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): Fix typo in comment.
+       (fhandler_base::close): Move call to del_my_locks from here...
+       * fhandler_disk_file.cc (fhandler_disk_file::open): ...to here.
+       * flock.cc (struct lockfattr_t): New type.
+       (lockf_t::close_lock_obj): New method, use throughout.
+       (lockf_t::create_lock_obj_attr): New method.
+       (lockf_t::create_lock_obj): Use create_lock_obj_attr method.  Handle
+       STATUS_OBJECT_NAME_COLLISION in F_FLOCK case gracefully.  Add lengthy
+       comments to explain why and how.
+       (lockf_t::open_lock_obj): Use create_lock_obj_attr method.
+       (lockf_t::del_lock_obj): Call NtSetEvent rather than SetEvent for
+       symmetry.
+       (fhandler_disk_file::lock): Define n only where it's used.  Call
+       need_fork_fixup only if call was successful.  Handle EINTR and
+       ECANCELED return values from lf_setlock.
+       (lf_setlock): Drop WAIT_UNLOCKED and WAIT_PROC_EXITED.  Don't wait
+       for event object handle count to become <= 1 in F_LOCK case.
+       Simplify WFMO return value handling.  Don't handle signal and cancel
+       events here; just return with appropriate error code instead.
+       (lf_getblock): Ignore locks for which the handle can't be opened.
+       Use IsEventSignalled.
+       * ntdll.h (STATUS_INVALID_INFO_CLASS): Undef if defined elsewhere to
+       make sure the definition is casted to NTSTATUS.
+       (STATUS_INVALID_HANDLE): Define and ditto.
+       (STATUS_OBJECT_NAME_COLLISION): Define.
+       (NtSetEvent): Declare.
+
+2011-08-25  Rafal Zwierz  <rzwierz@googlemail.com>
+
+       * cygthread.cc (cygthread::simplestub): Notify that the thread has
+       detached also in freerange thread case.
+
+2011-08-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): Never open files with
+       FILE_OVERWITE/FILE_OVERWRITE_IF.  Set file size to 0 explicitely if
+       regular, existing file has been opened for writing with O_TRUNC flag
+       set.  Explain why.
+
+2011-08-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * thread.cc (pthread::pthread): Drop setting parent_tls.  Call
+       sigprocmask to copy parent thread signal mask into new parent_sigmask
+       member.
+       (pthread::thread_init_wrapper): Copy _my_tls.sigmask from new
+       parent_sigmask member.
+       * thread.h (class pthread): Drop parent_tls.  Add parent_sigmask.
+
+2011-08-24  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * thread.cc (pthread::exit): Create dummy tls structure to hold
+       _main_tls contents if we've asked _main_tls to exit.
+
+2011-08-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * poll.cc (poll): Don't return prematurely if invalid fds have been
+       encountered.  Enforce timeout set to 0 in case of invalid fds.  Take
+       number of invalid fds into account when returning.
+
+2011-08-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (fhandler_socket::send_internal): Fix setting
+       nosignal flag.  Convert ECONNABORTED on connection-oriented socket
+       to EPIPE, too.
+
+2011-08-21  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dtable.cc (conv_start_chars): Remove unneeded section attribute.
+
+2011-08-20  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * include/paths.h (_PATH_MAILDIR): Define.
+       (_PATH_SHELLS): Define.
+
+2011-08-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (format_process_maps): Define page protection
+       shortcuts RO, X, and WC.  Use in creating access flag string.  Don't
+       set type flag to 's' for copy-on-write pages, as on Linux.
+
+2011-08-19  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * devices.h (fh_devices): Define DEV_MISC_MAJOR, DEV_MEM_MAJOR,
+       DEV_SOUND_MAJOR.  Use throughout.
+       * fhandler_proc.cc (proc_tab): Add /proc/devices and /proc/misc
+       virtual files.
+       (format_proc_devices): New function.
+       (format_proc_misc): New function.
+
+2011-08-19  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dtable.cc: Mark some const variables as static.
+       * environ.cc (conv_start_chars): Move to shared cygwin region and
+       initialize at compile time.
+       (match_first_char): New generic function for querying conv_start_chars.
+       (posify_maybe): Rename from posify.
+       (environ_init): Remove conv_envvars initialization.  Don't check
+       conv_start_chars, just allow posify_maybe to make the decision.
+       * fhandler_console.cc (__vt100_conv): Fix formatting.  Mark as const.
+
+2011-08-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::read): Recognize backspace key
+       using the device independent key code, rather than the device dependent
+       scan code.
+
+2011-08-18  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dcrt0.cc (dll_crt0_0): Remove unneeded __stdcall decoration.
+       * init.cc: Reflect change to dll_crt0_0 in declaration.
+
+2011-08-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (dtable::get_debugger_info): Add missing braces.
+       (dtable::stdio_init): Fix incorrect negation of not_open(2) condition.
+
+2011-08-16  Pierre Humblet <Pierre.Humblet@ieee.org>
+
+       * net.cc (gethostby_helper): Remove DEBUGGING code from and
+       streamline the second pass.
+
+2011-08-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dlfcn.cc (dlopen): Reimplement RTLD_NODELETE for Windows 2000 using
+       internal datastructures.  Explain the code.
+       * ntdll.h (struct _LDR_DATA_TABLE_ENTRY): Define.
+       (struct _PEB_LDR_DATA): Define.
+       (struct _PEB): Change PVOID LoaderData to PPEB_LDR_DATA Ldr.
+
+       * fhandler_process.cc (format_process_maps): Call NtQueryVirtualMemory
+       with valid return length pointer.  Explain why.
+
+2011-08-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-08-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (GetModuleHandleExW): Define.
+       * dlfcn.cc: Throughout mark exported symbols as extern "C".
+       (dlopen): Unignore flags argument.  Define ret to NULL.  Fix typo in
+       comment.  Support Glibc flags RTLD_NOLOAD and RTLD_NODELETE.
+       * include/dlfcn.h:  Clean up comments.
+       (RTLD_NODELETE): Define.
+       (RTLD_NOLOAD): Define.
+       (RTLD_DEEPBIND): Define.
+
+2011-08-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * pipe.cc (pipe): Just call _pipe with O_BINARY mode.  Move code to
+       generate normalized pathnames from here...
+       (_pipe): ...to here.
+
+2011-08-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * miscfuncs.cc (CreatePipeOverlapped): New function.
+       (ReadPipeOverlapped): Ditto.
+       (WritePipeOverlapped): Ditto.
+       * miscfuncs.h: Declare new functions.
+       * pinfo.cc (commune_process): Call WritePipeOverlapped instead of
+       WriteFile.  Set timeout to 1 sec.
+       (_pinfo::commune_request): Call ReadPipeOverlapped instead of ReadFile.
+       Set timeout to 0.5 secs.
+       * sigproc.cc (sig_send): Create pipe using CreatePipeOverlapped.
+
+2011-08-12  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * miscfuncs.cc (create_pipe): Delete obsolete function.
+       * miscfuncs.h (create_pipe): Delete define.
+
+       * pipe.c (fhandler_pipe::create_selectable): Delete obsolete comment.
+
+2011-08-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_proc.cc (fhandler_proc::closedir): Don't free, but delete
+       instead.
+
+2011-08-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (fhandler_proc::opendir): Declare.
+       (fhandler_proc::closedir): Declare.
+       * fhandler_proc.cc (fhandler_proc::opendir): New method.  Fetch list
+       of active processes here once to avoid potential duplicates and store
+       in dir->__handle.
+       (fhandler_proc::closedir): New method.  Free dir->__handle.
+       (fhandler_proc::readdir): Convert pinfo into a reference to the winpids
+       entry in dir->__handle.
+
+2011-08-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_proc.cc (fhandler_proc::get_proc_fhandler): Don't allow to
+       access process info by using the Windows PID.
+       * fhandler_process.cc (fhandler_process::fstat): Ditto.
+       (fhandler_process::fill_filebuf): Ditto.
+
+2011-08-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * (winpids::add): Make sure to store always a Windows PID in
+       pidlist, even if pid is a Cygwin PID.
+       (winpids::enum_processes): Fetch Cygwin processes from listing of
+       shared cygwin object dir in the native NT namespace.  Only if winpid
+       is true, fetch Windows processes using an additional call to
+       NtQuerySystemInformation.
+
+2011-08-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (format_process_status): Always print process name
+       even for zombies.
+       (get_mem_values): Fix loop fetching working set list to avoid out of
+       memory conditions.  Return all mem values set to 0 for zombies.
+       * ntdll.h (STATUS_PROCESS_IS_TERMINATING): Define.
+
+2011-08-09  Corinna Vinschen  <corinna@vinschen.de>
+
+       * heap.cc (eval_initial_heap_size): New function fetching the heap
+       size from the LoaderFlags field in the PE/COFF header.
+       (heap_init): Call eval_initial_heap_size rather than
+       cygwin_shared->heap_chunk_size to fetch the initial heap size.
+       * shared.cc (shared_info::heap_chunk_size): Remove.
+       * shared_info.h (class shared_info): Drop heap_chunk member.
+       (CURR_SHARED_MAGIC): Update.
+
+2011-08-09  Corinna Vinschen  <corinna@vinschen.de>
+
+       * ntdll.h (STATUS_NOT_FOUND): Define.
+       * ntea.cc (read_ea): Return correct ENOTSUP rather than EOPNOTSUPP.
+       Handle STATUS_INVALID_DEVICE_REQUEST and STATUS_NOT_FOUND.  Explain
+       why.  Convert conditional to switch statement.
+       (write_ea): Return correct ENOTSUP rather than EOPNOTSUPP.  Handle
+       STATUS_INVALID_DEVICE_REQUEST.  Convert conditional to switch statement.
+
+2011-08-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * resource.cc (getrlimit): Just return RLIM_INFINITY in a request for
+       RLIMIT_AS.
+
+2011-08-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (format_process_maps): Actually print info about
+       the application heap of the printed process, not of the current process.
+
+2011-08-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (socketpair): Release sb0 if there's no space left for sb1.
+
+2011-08-03  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (clock_nanosleep): Export.
+       * posix.sgml (std-notimpl): Move clock_nanosleep from here...
+       (std-susv4): ... to here.
+       (std-notes): Note limitations of clock_nanosleep.
+       * signal.cc (clock_nanosleep): Renamed from nanosleep, adding clock_id
+       and flags arguments and changing return values throughout.
+       Improve checks for illegal rqtp values.  Add support for
+       CLOCK_MONOTONIC and TIMER_ABSTIME.
+       (nanosleep): Rewrite in terms of clock_nanosleep.
+       (sleep): Ditto.
+       (usleep): Ditto.
+       * thread.cc: Mark clock_nanosleep in list of cancellation points.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-08-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc: Use fabort in favor of api_fatal and fork_info->abort
+       where appropriate throughout.
+       (fabort): Define.
+       (dll_list::topsort): Don't print sorting information.  Fix formatting.
+       (dll_list::topsort_visit): Fix formatting.
+       (dll_list::load_after_fork_impl): Perform comment fixups.
+       * sigproc.cc (child_info_fork::abort): (for now?) Always print cause of
+       fork failure.
+       * include/sys/strace.h (strace_vprintf): Remove _STRACE_NOTALL when
+       printing.  We really do want to see this.
+
+2011-08-03  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygtls.h (struct _local_storage): Add cw_timer member.
+       * cygtls.cc (_cygtls::init_thread): Initialize locals.cw_timer.
+       (_cygtls::fixup_after_fork): Ditto.
+       * tlsoffsets.h: Regenerate.
+       * ntdll.h (enum _TIMER_INFORMATION_CLASS): Define.
+       (struct _TIMER_BASIC_INFORMATION): Define.
+       (NtQueryTimer): Declare function.
+       * thread.h (cancelable_wait): Change timeout argument to
+       PLARGE_INTEGER and provide NULL default.
+       (fast_mutex::lock): Adjust accordingly.
+       (pthread_cond::wait): Change timeout argument to PLARGE_INTEGER
+       and default to NULL.
+       * thread.cc (cancelable_wait): Change timeout argument to
+       PLARGE_INTEGER.  Initialize _cygtls.locals.cw_timer if needed.
+       Use NT waitable timers for handling timeout.  Return remaining time
+       to timeout argument if timeout was relative.
+       (pthread_cond::wait): Change timeout argument to PLARGE_INTEGER.
+       Adjust to change in cancelable_wait.
+       (pthread_mutex::lock): Adjust to change in cancelable_wait.
+       (pthread_spinlock::lock): Ditto.
+       (pthread::join): Ditto.
+       (__pthread_cond_dowait): Change waitlength argument to PLARGE_INTEGER.
+       Adjust to changes in cancelable_wait and pthread_cond::wait.
+       (pthread_cond_timedwait): Adjust to change in __pthread_cond_dowait.
+       (pthread_cond_wait): Ditto.
+       (semaphore::_timedwait): Adjust to change in cancelable_wait.
+       (semaphore::_wait): Ditto.
+       * exceptions.cc (handle_sigsuspend): Ditto.
+       * signal.cc (nanosleep): Ditto.
+       * wait.cc (wait4): Ditto. Fix copyright dates.
+       * times.cc (FACTOR, NSPERSEC): Move from here...
+       * hires.h (FACTOR, NSPERSEC): ...to here.
+
+2011-08-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (faccessat): Fix parens in flag expression when calling
+       build_fh_name.
+
+       * fhandler_disk_file.cc (fhandler_disk_file::mkdir): Fix typo in
+       comment.
+       * fhandler_socket.cc (fhandler_socket::bind): Ditto.
+       * path.cc (symlink_worker): Ditto.
+
+2011-07-31  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll_list::load_after_fork_impl): Add a hint to an error
+       message.
+
+2011-07-31  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (pending_signals::pending): Define new function.
+       (sig_dispatch_pending): Avoid calling sig_send if there are no pending
+       signals.
+
+2011-07-31  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (class fhandler_dev_mem): Remove dup method declaration.
+       * fhandler_clipboard.cc (fhandler_dev_clipboard::dup): Accommodate the
+       fact that the entire fhandler gets copied over to the child in
+       operator =.
+       * fhandler_floppy.cc (fhandler_dev_floppy::dup): Ditto.
+       * fhandler_raw.cc (fhandler_dev_raw::dup): Ditto.
+       * fhandler_serial.cc (fhandler_serial::dup): Ditto.
+       * fhandler_socket.cc (fhandler_socket::dup): Ditto.
+       * fhandler_virtual.cc (fhandler_virtual::dup): Ditto.
+       * fhandler_mem.cc (fhandler_dev_mem::dup): Ditto.  Remove entirely.
+
+2011-07-30  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygthread.cc (cygthread::async_create): Define new function.
+       * cygthread.h (cygthread::create): Use correct regparm.
+       (cygthread::standalone): Delete from class and from all constructors.
+       (cygthread::cygthread): Use three only arguments for detached threads,
+       (cygthread::async_create): Declare.
+       and start the thread via QueueUserAPC/async_create.
+       * dcrt0.cc (dll_crt0_0): Remove handling for
+       wincap.has_buggy_thread_startup.
+       (dll_crt0_1): Ditto.
+       * wincap.cc: Ditto throughout.
+       * wincap.h: Ditto.
+
+2011-07-30  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (fhandler_base_overlapped::size): Declare/define size()
+       function for consistency.
+       (fhandler_termios::size): Ditto.
+       (fhandler_pty_common::size): Ditto.
+
+2011-07-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_registry.cc (fhandler_registry::dup): Duplicate value_name.
+
+2011-07-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       Throughout change "WinSock" to "Winsock" in comments.
+       * fhandler_socket.cc (fhandler_socket::sendmsg): Add missing call to
+       get_inet_addr to convert AF_LOCAL to AF_INET sockets.
+       * net.cc (cygwin_socket): Workaround UDP Winsock problem.  Add comment
+       to explain why.
+       * select.cc: Include winsock2.h rather than winsock.h.
+
+2011-07-26  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (__DIR_mounts::eval_ino): Create path_conv
+       with PC_KEEP_HANDLE flag.
+       * path.h (path_conv::operator =): Duplicate UNICODE path as well.
+       * security.cc (check_file_access): Use path_conv handle if available.
+       * syscalls.cc (access): Create fhandler with PC_KEEP_HANDLE flag set.
+       (euidaccess): Ditto.
+       (faccessat): Ditto.
+
+2011-07-26  Corinna Vinschen  <corinna@vinschen.de>
+
+       * ntdll.h: Fix typo in comment.
+       * path.cc: Ditto.
+
+2011-07-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::ioctl): Fetch console events
+       using PeekConsoleInput and return only key down events in buf.
+       * fhandler_tty.cc (fhandler_pty_slave::ioctl): Always return EINVAL
+       if PeekNamedPipe fails.
+       (fhandler_pty_master::ioctl): Ditto.
+
+2011-07-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_tty.cc (fhandler_pty_slave::ioctl): Drop FIONBIO case.
+       Handle FIONREAD.
+       (fhandler_pty_master::ioctl): Ditto.  Call fhandler_base::ioctl to
+       decode default condition.
+       * fhandler_console.cc (fhandler_console::ioctl): Handle FIONREAD.
+
+2011-07-21  Christopher Faylor  <me.cygwin2011@cgf.cx>
+           Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc: Add #include for asm/socket.h for dealing with FIONREAD.
+       (fhandler_base::ioctl): Special-case errno for FIONREAD.
+       * fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Rename parameter for
+       consistency.  Call fhandler_base::ioctl to decode default condition.
+       * fhandler_serial.cc (fhandler_serial::ioctl): Ditto.
+       * fhandler_tty.cc (fhandler_pty_slave::ioctl): Call
+       fhandler_base::ioctl to decode default condition.
+       * fhandler_windows.cc (fhandler_windows::ioctl): Ditto.
+
+2011-07-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * heap.cc (eval_start_address): Simplify test for large address
+       awareness of executable, which works for 32 and 64 bit systems.
+       Change comment accordingly.
+
+2011-07-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * heap.cc (eval_start_address): New static function to evaluate the
+       best start address for the application heap.
+       (heap_init): Call eval_start_address to fetch the start value for
+       start_address.  Move preceeding comment to eval_start_address.
+
+2011-07-21  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (pthread_condattr_getclock): Export.
+       (pthread_condattr_setclock): Export.
+       * posix.sgml (std-notimpl): Move pthread_condattr_getclock and
+       pthread_condattr_setclock from here...
+       (std-susv4): ... to here.
+       * sysconf.cc (sca): Set _SC_CLOCK_SELECTION to _POSIX_CLOCK_SELECTION.
+       * thread.cc: (pthread_condattr::pthread_condattr): Initialize clock_id.
+       (pthread_cond::pthread_cond): Initialize clock_id.
+       (pthread_cond_timedwait): Use clock_gettime() instead of gettimeofday()
+       in order to support all allowed clocks.
+       (pthread_condattr_getclock): New function.
+       (pthread_condattr_setclock): New function.
+       * thread.h (class pthread_condattr): Add clock_id member.
+       (class pthread_cond): Ditto.
+       * include/pthread.h: Remove obsolete comment.
+       (pthread_condattr_getclock): Declare.
+       (pthread_condattr_setclock): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-07-18  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * sysconf.cc (sca): Return -1 for _SC_THREAD_ROBUST_PRIO_INHERIT,
+       _SC_THREAD_ROBUST_PRIO_PROTECT, and _SC_XOPEN_UUCP.
+       (SC_MAX): Redefine accordingly.
+       (csa): Return strings for _CS_POSIX_V7_THREADS_CFLAGS,
+       _CS_POSIX_V7_THREADS_LDFLAGS, and _CS_V7_ENV.
+       (CS_MAX): Redefine accordingly.
+       * include/limits.h (LONG_BIT): Define.
+       (WORD_BIT): Define.
+
+2011-07-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * heap.cc (heap_init): Change type of largest_found to PVOID.  Start
+       querying memory at 0x20000000.  Use largest_found pointer when trying
+       to allocate largest free memory area found.
+
+2011-07-14  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::input_tcsetattr): Revert to
+       setting ENABLE_PROCESSED_INPUT depending on ISIG and IGNBRK.
+       (fhandler_console::tcgetattr): Set ISIG depending on
+       ENABLE_PROCESSED_INPUT as well.
+
+2011-07-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_serial.cc (fhandler_serial::raw_read): Handle non-blocking
+       case more thoroughly.
+
+2011-07-13  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * setup_handler (setup_handler): Change break to goto out, missed in
+       2011-07-06 changes.
+
+2011-07-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_tty.cc (fhandler_pty_slave::ioctl): Remove erroneous support
+       for TIOCLINUX for pty.  Get rid of unneeded EINVAL handling in wake of
+       tty removal.  Remove now-unneeded variable.
+
+2011-07-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/netdb.h (gethostbyname2): Declare.
+
+2011-07-09  Eric Blake  <eblake@redhat.com>
+
+       * signal.cc (handle_sigprocmask): Return error rather than setting
+       errno, for pthread_sigmask.
+       (sigprocmask): Adjust caller.
+
+2011-07-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * miscfuncs.cc (yield): Drop thread priority only once.
+
+2011-07-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (_cygtls::interrupt_now): Back out previous change
+       since it could theoretically cause a non-CTRL-C-able program if a
+       program has suffered memory corruption.
+       (setup_handler): Ditto.
+
+2011-07-06  Corinna Vinschen  <corinna@vinschen.de>
+
+       * sched.c (sched_yield): Just call SwitchToThread because yield now
+       potentially switches CPU.
+
+2011-07-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (_cygtls::interrupt_now): Don't check for spinning
+       here.
+       (setup_handler): Check for spinning here, assuming that it is
+       transitory and should not affect the retry loop.
+
+2011-07-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (CALL_HANDLER_RETRY_INNER): Rename to reflect different
+       functionality.
+       (CALL_HANDLER_RETRY_OUTER): New define.
+       (setup_handler): Add outer loop to signal handler to try harder to
+       deliver the signal.
+       * miscfuncs.cc (yield): Drop priority and use SleepEx() to force thread
+       rescheduling rather than relying on SwitchToThread().
+
+2011-07-06  Corinna Vinschen  <corinna@vinschen.de>
+
+       * sigproc.cc (wait_sig): Fix debug output.
+
+2011-07-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::input_tcsetattr): Make
+       ENABLE_PROCESSED_INPUT flag only depending on value of IGNBRK.
+       (fhandler_console::tcgetattr): Don't set ISIG depending on
+       ENABLE_PROCESSED_INPUT, set IGNBRK instead.
+
+2011-07-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * security.cc (get_file_sd): Fix comment.
+
+2011-07-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): Never create files with WRITE_DAC
+       access.  Explain why.
+       * fhandler_disk_file.cc (fhandler_base::fstat_helper): Improve debug
+       output.
+
+2011-07-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): Don't open file with WRITE_DAC
+       access on remote filesystem.  Explain why.
+       * fhandler_disk_file.cc (fhandler_disk_file::mkdir): Ditto for
+       directories.
+       * fhandler_socket.cc (fhandler_socket::bind): Ditto for sockets.
+       * path.cc (symlink_worker): Ditto for symlinks.
+
+2011-07-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * environ.cc (tty_is_gone): Wrap warning at 80 characters.
+
+2011-07-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       Throughout, open console handles with sharing for reading and writing.
+       * dcrt0.cc (insert_file): Open file with full sharing allowed.
+       * hookapi.cc (find_first_notloaded_dll): Ditto.
+       * spawn.cc (av::fixup): Ditto.
+
+2011-07-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (dtable::init_std_file_from_handle): Change test for console
+       device in call to fh->init to avoid conhost crash on W7.
+
+2011-07-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * environ.cc (environ_init): Reinstantiate on-the-fly CYGWIN variable
+       test and call to parse_options if found.
+
+2011-07-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base::open_with_arch): Call close_on_exec last
+       to avoid setting close_on_exec for archetype.
+       * fhandler_tty.cc (fhandler_pty_master::setup): Protect {from,to}_pty
+       handles.  Use consistent naming in debug output.  Use inheritable
+       handles and...
+       (fhandler_pty_master::fixup_after_fork): ...avoid duplicating handles
+       here.
+       (fhandler_pty_slave::open): Don't set close_on_exec flag here.
+
+2011-07-01  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dtable.cc (cnew): Fix whitespace.
+
+2011-07-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/sys/param.h (NGROUPS): Redefine as NGROUPS_MAX.
+       (MAXHOSTNAMELEN): Redefine with same value as MAX_HOSTNAME_LEN.  Change
+       comment.
+       (MAXPATHLEN): Improve comment.
+       (MAXSYMLINKS): Define and add comment.
+
+2011-07-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): Move NFS-specific code into the
+       code block handling FH_FS stuff.
+
+2011-06-30  Ryan Johnson  <ryan.johnson@cs.utoronto.ca>
+
+       * dtable.cc (fh_oom): Remove.
+       (fh_calloc): Remove.
+       (cnew): Redefine to handle NULL returns from cmalloc.
+       (build_fh_name): Accommodate new definition of cnew.  Remove unneeded
+       test for fh_oom.
+       (fh_alloc): Ditto.
+
+2011-06-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::read): Add comment.
+       (fhandler_console::input_tcsetattr): Don't set ENABLE_PROCESSED_INPUT
+       if IGNBRK flag is set.
+
+2011-06-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (fh_oom): New static fhandler storage.
+       (fh_calloc): New static function.  Add a comment to explain why this
+       is needed.
+       (cnew): Call fh_calloc as placement argument.
+       (build_fh_name): Check return code from cnew against address of
+       fh_oom to test for out of memory condition.
+       (fh_alloc): Ditto.
+       (build_fh_pc): Avoid a crash due to useing a NULL fhandler.
+       * pipe.cc (fhandler_pipe::create): Check if build_fh_dev returned a
+       valid pointer before using it.
+
+2011-06-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (heap_info::fill_if_match): Rename info to
+       note that this heap is a Windows heap.
+       (format_process_maps): Print info about application heap.
+
+2011-06-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::read): Don't generate ^@ on
+       Ctrl+Alt+Space.
+
+2011-06-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_tty.cc (fhandler_pty_master::setup): Create pty pipes
+       non-inheritable.
+
+2011-06-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_tty.cc (fhandler_pty_master::setup): Fix crash in debug
+       output.
+
+2011-06-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (normalize_win32_path): Skip all slashes after recognizing
+       a ".." path component.  Add comment.
+
+2011-06-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): Drop local create_options variable.
+       Use options member instead.
+       * fhandler.h (class fhandler_base): Change type of access member to
+       ACCESS_MASK.  Change get_access and set_access methods accordingly.
+       Add options member.  Add get_options and set_options methods.
+       (class fhandler_disk_file): Add prw_handle.
+       (fhandler_disk_file::prw_open): Declare.
+       (fhandler_disk_file::close): Declare.
+       (fhandler_disk_file::dup): Declare.
+       (fhandler_disk_file::fixup_after_fork): Declare.
+       * fhandler_disk_file.cc (fhandler_disk_file::fhandler_disk_file):
+       Initialize prw_handle to NULL.
+       (fhandler_disk_file::close): Close prw_handle.
+       (fhandler_disk_file::dup): New method.
+       (fhandler_disk_file::fixup_after_fork): Set prw_handle to NULL since
+       prw_handle is not inherited.
+       (fhandler_disk_file::prw_open): New method.  Add long comment to
+       explain current behaviour.
+       (fhandler_disk_file::pread): Revert previous change.  Change to use
+       prw_handle if possible.
+       (fhandler_disk_file::pwrite): Change to use prw_handle if possible.
+
+2011-06-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dcrt0.cc (dll_crt0_1): Call strace.dll_info after call to pinfo_init.
+       * strace.cc (strace::hello): Drop printing DLL information here since
+       application info is not always available at this point.
+       (strace::dll_info): New method to print DLL info.
+       * include/sys/strace.h (strace::dll_info): Declare.
+
+2011-06-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (handle_to_fn): Accommodate name change of pty named pipes,
+       otherwise ptys are not recognized.
+
+2011-06-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_console.cc (fhandler_console::set_unit): Set
+       pc.file_attributes() to reflect existence.
+       * fhandler.h (fhandler_pty_common::fhandler_pty_common): Ditto.
+       * pinfo.cc (_pinfo::set_ctty): Output device numbers in hex.
+
+2011-06-15  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * errno.cc (EIO): Lowercase "o" representative string.
+
+2011-06-14  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygheap.h (init_cygheap::ctty_on_hold): Remove conditionalized
+       variable.
+       * dcrt0.cc (do_exit): Remove code which handled CYGWIN=tty style ttys.
+       * devices.in: Remove "/dev/ttym".
+       * dtable.cc: Rename tty to pty where appropriate throughout.
+       (dtable::stdio_init): Use new t->is_console rather than using
+       now-deleted hwnd element in tty structure.
+       (dtable::init_std_file_from_handle): Remove code which handled
+       CYGWIN=tty style ttys.
+       (fh_alloc): Ditto.
+       * fhandler.h: Rename tty to pty where appropriate.
+       (fhandler_pty_common): Delete output_done_event, ioctl_request_event,
+       ioctl_done_event.
+       (fhandler_pty_master::setup): Delete argument.
+       (fhandler_tty_master): Delete.
+       (fhandler_union): Delete __tty_master.
+       * fhandler_console.cc (use_tty): Delete.
+       (fhandler_console::get_tty_stuff): Set is_console to true rather than
+       calling sethwnd.
+       (fhandler_console::send_winch_maybe): Remove CYGWIN=tty considerations.
+       (fhandler_console::input_tcsetattr): Ditto.
+       * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Use new
+       t->is_console rather than using now-deleted hwnd element in tty
+       structure.
+       * fhandler_tty.cc: Rename tty to pty where appropriate throughout.
+       (tty_master): Delete.
+       (process_input): Ditto.
+       (process_output): Ditto.
+       (process_ioctl): Ditto.
+       (fhandler_tty_master::*): Ditto.
+       (fhandler_pty_master::process_slave_output): Remove CYGWIN=tty
+       considerations.
+       (fhandler_pty_slave::open): Ditto for *_done_event.
+       (fhandler_pty_slave::write): Ditto.
+       (fhandler_pty_slave::ioctl): Ditto.
+       (fhandler_pty_slave::fch_open_handles): Ditto.
+       (fhandler_pty_slave::fch_set_sd): Ditto.
+       (fhandler_pty_slave::fch_close_handles): Ditto.
+       (fhandler_pty_common::close): Ditto.
+       (fhandler_pty_master::setup): Ditto.  Remove now-unneeded ispty
+       parameter.
+       (fhandler_pty_master::open): Reflect argument removal for
+       tty::allocate.
+       * select.cc: Rename tty to pty where appropriate throughout.
+       * sigproc.cc (proc_subproc): Remove CYGWIN=tty considerations.
+       * tty.cc (ttyslot): Accommodate CYGWIN=tty removal.
+       (tty_list::init_session): Ditto.
+       (tty_list::attach): Ditto.
+       (tty::create_master): Delete.
+       (tty_list::terminate): Ditto.
+       (tty_list::allocate): Delete "with_console" parameter.  Remove
+       CYGWIN=tty considerations.
+       (tty::init): Set is_console = false.  Use 'false' for was_opened since
+       it is a boolean.
+       * tty.h (*_{DONE,REQUEST}_EVENT): Delete.
+       (tty_min::is_console): Declare new field which replaces hwnd.
+       (tty_min::gethwnd): Delete.
+       (tty_min::sethwnd): Ditto.
+       (tty_list::allocate): Delete parameter.
+       (tty_list::terminate): Delete declaration.
+       * include/sys/cygwin.h (PID_USETTY): Redefine to PID_UNUSED1 and change
+       comment to reflect its availability.
+
+2011-06-13  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_tty_slave.cc (fhandler_tty_slave::fhandler_tty_slave):
+       Revert previous change since unit 0 is perfectly valid.
+
+2011-06-12  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Rename FH_BAD to FH_NADA throughout.
+       * devices.h (FH_ERROR): New value.
+       (iscons_dev): Extend to detect all the console device types.
+       * devices.in: Set aside storage for FH_ERROR.
+       * dtable.cc (dtable::init_std_file_from_handle): Use iscons_dev to
+       detect when device is a console.
+       (fh_alloc): Pass device to console constructor.
+       (build_fh_pc): Short circuit when we detect that the constructor saw an
+       error.
+       * fhandler.h (fhandler_console::fhandler_console): Accept fh_devices
+       parameter.
+       (get_tty_stuff): Change to void.
+       * fhandler_console (fhandler_console::set_unit): Set device to FH_ERROR
+       on attempt to access anything other than the current console.
+       (fhandler_console::get_tty_stuff): Change to void return.
+       (fhandler_console::open): Return EPERM on FH_ERROR device type.
+       (fhandler_console::fhandler_console): Set the device type appropriately
+       before calling get_tty_stuff and rely on that function to reset it if
+       necessary.
+
+2011-06-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * environ.cc (create_upcaseenv): Delete.
+       (ucenv): Don't honor create_upcaseenv.
+       (environ_init): Remove early retrieval of CYGWIN environment variable.
+       Change comment to reflect new behavior.
+
+2011-06-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * child_info.h (CURR_CHILD_INFO_MAGIC): Reset.
+       (child_info::old_title): Delete.
+       (child_info::~child_info_spawn): Remove recording of old_title.
+       * dcrt0.cc (title_buf): Delete.
+       (child_info_spawn::handle_spawn): Remove recording of old_title.
+       (dll_crt0_1): Get rid of all title handling.
+       (do_exit): Ditto.
+       * environ.cc (known): Delete strip_title and title.
+       * fhandler_console.cc (fhandler_console::write): Remove recording of
+       old_title.
+       * globals.cc (exit_states): Remove ES_TITLE.
+       (display_title): Delete.
+       (strip_title_path): Delete.
+       (old_title): Delete.
+       * spawn.cc (spawn_guts): Remove old_title accommodation.
+
+2011-06-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * environ.cc (envcache): Delete.
+       (known): Remove envcache.
+       (getwinenv): Don't honor envcache setting.
+
+2011-06-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * environ.c: Move code earlier to allow:
+       (_addenv): Call parse_options() when CYGWIN environment variable is
+       being changed.
+       (parse_options): Change parameter to 'const'.
+
+2011-06-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * environ.cc (tty_is_gone): Add missing space to message.
+
+2011-06-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * environ.cc (settings::set_process_state): Delete.
+       (tty_is_gone): New function.
+       (known): Change "tty" to call tty_is_gone().  Remove unneeded '&' from
+       beginning of function address.
+       (parse_options): Remove set_process_state handling.
+       * shared_info.h (CURR_USER_MAGIC): Reset.
+       (user_info::warned_notty): New member.
+
+2011-06-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_console.cc (fhandler_console::open_shared_console):
+       Semi-revert to using fixed location for console stuff.
+       * shared.cc (offsets): Ditto.  Comment.
+       * shared_info (shared_locations): Re-add SH_SHARED_CONSOLE.
+
+2011-06-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::pread): Reset windows file
+       position pointer back to previous location after successful read.
+
+2011-06-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_console.cc (fhandler_console::open_shared_console): Don't
+       zero handle to open_shared since it is supposed to be an input.
+       (enum_windows): Set handle input to open_shared to NULL since it does
+       not represent any previously opened shared region.
+       * shared.cc (open_shared): Tweak debugging output.
+
+2011-06-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * ntdll.h (FILE_PIPE_*): Define constants.
+       * select.cc (pipe_data_available): Detect closing state.
+
+2011-06-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pinfo.cc (_pinfo::set_ctty): Don't reset myself->{pgid,sid} if
+       terminal has no pgid or sid settings.
+
+2011-06-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Only raise
+       SIGPIPE when writing.
+
+       * fhandler.h: Include "tty.h".
+       (fhandler_termios::_tc): Rename from tc.
+       (fhandler_termios::tc): New method.
+       (fhandler_termios::tcinit): Remove an argument.
+       (fhandler_termios::get_ttyp): Use method to retrieve value.
+       (fhandler_console::console_state): Move here.
+       (fhandler_console::dev_state): Delete.
+       (fhandler_console::shared_console_info): Define.
+       (fhandler_console::open_shared_console): Move this function under
+       fhandler_console umbrella.
+       (fhandler_console::tc): Define.  Return static value.
+       (fhandler_console::focus_aware): Accommodate deletion of dev_state.
+       (fhandler_console): Add tty_list::get_cttyp as a friend.
+       * fhandler_console.cc (dev_state): Redefine as a pointer within
+       shared_console_info and change dev-> to dev. throughout.
+       (fhandler_console::shared_console_info): Move into fhandler_console.
+       (fhandler_console::open_shared_console): Move into fhandler_console
+       change argument to simple bool.
+       (enum_windows): Accommodate changes to console_state and
+       open_shared_console.
+       (console_unit::console_unit): Ditto.
+       (fhandler_console::get_tty_stuff): Accommodate change to dev_state.
+       (tty_list::get_cttyp): Accommodate change to
+       handler_console::shared_console_info.
+       (fhandler_console::read): Accommodate change from tc to tc ().
+       (fhandler_console::set_input_state): Ditto.
+       (fhandler_console::open): Accommodate tcinit argument change and change
+       from tc to tc().
+       (fhandler_console::input_tcsetattr): Accomodate change from tc to tc().
+       (fhandler_console::input_tcsetattr): Ditto.
+       (fhandler_console::write_normal): Ditto.
+       (fhandler_console::init): Ditto.
+       (fhandler_console::igncr_enabled): Ditto.
+       * fhandler_termios.cc (fhandler_termios::tcinit): Remove first argument.
+       Expect tc() to have been set up first.  Use tc() rather than tc.
+       (fhandler_termios::tcsetpgrp): Accomodate change from tc to tc().
+       (fhandler_termios::tcgetpgrp): Ditto.
+       (fhandler_termios::bg_check): Ditto.
+       (fhandler_termios::line_edit: Ditto.
+       (fhandler_tty_master::set_winsize): Ditto.
+       (fhandler_tty_slave::open): Ditto.
+       (fhandler_tty_slave::init): Ditto.
+       (fhandler_pty_master::write): Ditto.
+       (fhandler_pty_master::setup): Ditto.  Accommodate change in arguments
+       to tcinit.
+       (fhandler_tty_slave::fch_open_handles): Set _tc directly.
+       (tty_min::is_orphaned_process_group): Don't assume that parent pid
+       exists.
+       * pinfo.cc (_pinfo::set_ctty): Reset myself->{pgid,sid} here if we were
+       started by a non-Cygwin process but the tty exists.
+       * shared_info.h (console_state): Delete from here.
+       * tty.h: Make multiple inclusion safe.
+
+2011-05-31  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (ctrl_c_handler): Simplify test for no parent tty.
+       * fhandler_console.cc (fhandler_console::get_tty_stuff): Return NULL if
+       ctty is not tty/console.  Improve test for slave tty/pty device.
+
+2011-05-31  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * external.cc (fillout_pinfo): Don't truncate ctty if it's < 0.
+
+       * select.cc (pipe_data_available): Avoid printing debug info by default
+       or suffer very large strace files.
+
+2011-05-31  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (pipe_data_available): New function - uses
+       NtQueryInformationFile to return information about pipes.
+       (peek_pipe): Rewrite to use pipe_data_available for both read and write
+       tests.
+
+2011-05-30  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dtable.cc (dtable::select_write): Add missing argument to
+       debug_printf.
+
+       * fhandler.cc (fhandler_base_overlapped::setup_overlapped): Explicitly
+       set io_pending to false.
+       (fhandler_base_overlapped::has_ongoing_io): Call GetOverlappedResult
+       to force completion of I/O.
+       (fhandler_base_overlapped::wait_overlapped): Rewrite to correctly deal
+       with nonblocking reads and to make more race proof.
+       (fhandler_base_overlapped::raw_write): Deal with new enum values.
+       (fhandler_base_overlapped::raw_read): Ditto.  Don't deal with ongoing
+       I/O here since it makes no sense in the read context.
+       * fhandler.h (enum wait_return): Add overlapped_unknown,
+       overlapped_nonblocking_no_data.
+       * pipe.cc (pipe): Add debugging output.
+
+2011-05-30  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll_list::append): Eliminate increment of unused tot
+       variable.
+       * dll_init.h (dll_list::tot): Delete.
+       (dll_list::populate_all_deps): Delete undefined function.
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Move EPIPE
+       handling under error condition.
+
+2011-05-30  Ryan Johnson  <ryan.johnson@cs.utoronto.ca>
+
+       * dll_init.cc (reserve_upto): Remove.
+       (release_upto): Ditto.
+       (dll_list::reserve_space): New function to reserve space needed by
+       DLL_LOAD dlls early in the fork process.
+       (dll_list::load_after_fork): Rewrite to use recursion to
+       track reservations it makes while trying to make dlls land where they
+       belong.
+       (dll_list::load_after_fork_impl): New function used by load_after_fork.
+       (dll_list::alloc): Initialize image base field.
+       * dll_init.h (dll_list::prefered_base): New field.
+       (dll_list::reserve_space): Declare new function.
+       (dll_list::load_after_fork): Declare new function.
+       * fork.cc (frok::child): call dll_list::reserve_space early, so we can
+       retry if it fails.
+
+2011-05-30  Tor Perkins  <cygwin@noid.net>
+
+       * fhandler_termios.cc (fhandler_termios::bg_check): Do not return EIO
+       when a process group has no leader as this is allowed and does not
+       imply an orphaned process group.  Add a test for orphaned process
+       groups.
+       (tty_min::is_orphaned_process_group): Define new function.
+       * tty.h (tty_min::is_orphaned_process_group): Define new function.
+
+2011-05-30  Ryan Johnson  <ryan.johnson@cs.utoronto.ca>
+
+       * dll_init.cc (dll_list::find_by_modname): New function to search the
+       dll list for a module name only (no path).
+       (dll_list::alloc): Initialize newly-added members of struct dll.
+       (dll_list::append): New function to factor out the append operation
+       (used by dll_list::topsort).
+       (dll_list::populate_deps): New function to identify dll dependencies.
+       (dll_list::topsort): New function to sort the dll list topologically by
+       dependencies.
+       (dll_list::topsort_visit): New helper function for the above.
+       * dll_init.h (dll::ndeps): New class member.
+       (dll::deps): Ditto.
+       (dll::modname): Ditto.
+       (dll_list::find_by_modname): New function related to topsort.
+       (dll_list::populate_all_deps): Ditto.
+       (dll_list::populate_deps): Ditto.
+       (dll_list::topsort): Ditto.
+       (dll_list::topsort_visit): Ditto.
+       (dll_list::append): Ditto.
+       (pefile): New struct allowing simple introspection of dll images.
+       * fork.cc (fork): Topologically sort the dll list before forking
+
+2011-05-30  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * child_info.h (CURR_CHILD_INFO_MAGIC): Refresh.
+       (child_info::refresh_cygheap): New function.
+       * spawn.cc (spawn_guts): Call refresh_cygheap before creating a new
+       process to ensure that cygheap_max is up-to-date.
+       * fork.cc (frok::parent): Ditto.
+
+2011-05-30  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygheap.cc (cygheap_dummy): Rename from cygheap_at_start.
+       (cygheap): Accommodate name change to cygheap_dummy.
+       (cygheap_init): Ditto.
+       (cygheap_fixup_in_child): Simplify slightly.
+       * fork.cc (fork): Add an advisory comment.
+
+2011-05-29  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_overlapped::wait_overlapped): Make sure that
+       I/O is cancelled on signal.
+
+2011-05-28  Ryan Johnson  <ryan.johnson@cs.utoronto.ca>
+
+       * dll_init.cc (dll_list::alloc): Initialize dll::image_size.
+       (reserve_at): Don't reserve space needed by the target dll if the
+       latter overlaps the free region to be blocked.
+       (dll_list::load_after_fork): Use new version of reserve_at.
+       * dll_init.h (dll::image_size): New member.
+       (pefile): New struct.
+
+2011-05-28  Christopher Faylor  <me.cygwin2011@cgf.cx>
+           Ryan Johnson  <ryan.johnson@cs.utoronto.ca>
+
+       * dll_init.c (dll_list::load_after_fork): Don't clear in_forkee here.
+       * fork.cc (frok::errmsg): Rename from 'error'.
+       (frok::error): New function.  Handle conditional printing of error
+       messages.
+       (frok::parent): Record hchild handle for use by error function.  Use
+       throughout.  Use error function rather than setting error pointer
+       directly.
+       (fork): Clear is_forkee here.  Accommodate rename of 'error' to
+       'errmsg'.
+       * sigproc.cc (child_info::proc_retry): Detect EXITCODE_FORK_FAILED.
+
+2011-05-28  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (handler_base_overlapped::wait_overlapped): Rework to
+       attempt to properly set errno and bytes read for non-blocking case.
+       Change to just rely on res to indicate error conditions.
+
+2011-05-28  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Don't set
+       io_pending unless ReadFile has returned an error.  (this is a partial fix,
+       accidentally checked in)
+
+2011-05-28  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * autoload.cc: Call _api_fatal in asm.
+       * child_info.h: Redefine CURR_CHILD_INFO_MAGIC.
+       (child_info_fork::abort): Rename from handle_failure.  Change
+       arguments.
+       * cygtls.h (_local_storage::ttybuf): New field.
+       * dcrt0.cc (vapi_fatal): Split api_fatal.  Add "in forked process" to
+       message when appropriate.
+       (api_fatal): Use vapi_fatal.
+       * devices.h: Make multiple inclusion safe.
+       (fh_devices): Add FH_CONS* stuff.  Reorder slightly.
+       (device): Eliminate anonymous union.  Add more ways to access
+       minor/major.
+       (device::setunit): Accommodate no-longer-anonymous union.
+       (device::is_fs): Ditto.
+       (device::is_fs_special): Ditto.
+       (device::major): New function.
+       (device::minor): Ditto.
+       (device::is_device): New function.
+       (device::not_device): Ditto.
+       (device::operator int): New operator.
+       (device::operator fh_devices): Ditto.
+       (device::operator bool): Ditto.
+       (device::operator DWORD): Ditto.
+       (device::operator =): Ditto.
+       (isproc_dev): New function.
+       (isprocsys_dev): Ditto.
+       (iscons_dev): Ditto.
+       (istty_slave_dev): Ditto.
+       * devices.in: Add new "/dev/cons*" strings.  Accommodate
+       no-longer-anonymous union throughout.
+       (BRACK): Use more precise method for initialization.
+       * devices.cc: Regenerate.
+       * dtable.cc (dtable::stdio_init): Use get_cttyp instead of get_tty.
+       (dtable::find_archetype): Use new DWORD operator in device to test
+       archetypes.
+       (dtable::init_std_file_from_handle): Use different method to initialize
+       'dev'.  Adapt to different ctty handling and accommodate /dev/cons*.
+       (fh_alloc): Accommodate no-longer-anonymous union.  Adapt to new
+       /dev/cons*.
+       (build_fh_pc): Make debugging output more useful.
+       * exceptions.cc (ctrl_c_handler): Use get_cttyp instead of get_tty.
+       * external.cc (fillout_pinfo): Accommodate new cons* stuff.
+       * fhandler.cc (fhandler_base::read): Eliminate is_slow() test.
+       * fhandler.h (fhandler_base::*): Adapt to changes in device.h.
+       (fhandler_*::is_slow): Delete.
+       ( fhandler_proc::get_proc_fhandler): Return fh_devices type.
+       * fhandler_console.cc (open_shared_console): New function.
+       (console_unit): New class.
+       (console_unit::console_unit): New constructor.
+       (enum_windows): New function.  Declare as friend to console_unit.
+       (fhandler_console::set_unit): New function.
+       (fhandler_console::get_tty_stuff): Call set_unit to set the unit number
+       and determine if initialization is needed.  Eliminate flags parameter.
+       (tty_list::get_cttyp): Rename (sorta) from get_tty.  Return pointer to
+       correct tty_min.
+       (fhandler_console::open): Adapt to elimination of argument to
+       get_tty_stuff.
+       (fhandler_console::output_tcsetattr): Properly detect error condition.
+       (fhandler_console::fixup_after_fork_exec): Adapt to get_tty_stuff()
+       setting tc automatically.
+       * fhandler_proc.cc: Use FH_BAD rather than 0 throughout where using
+       fh_devices enum.
+       (fhandler_proc::get_proc_fhandler): Return fh_devices.  Adapt to
+       devices.h changes.
+       * fhandler_process.cc: Adapt to devices.h changes.  Use FH_BAD rather
+       than 0 throughout where using fh_devices enum.
+       * fhandler_procnet.cc: Ditto.
+       * fhandler_procsys.cc: Ditto.
+       * fhandler_procsysvipc.cc: Ditto.
+       * fhandler_tape.cc (fhandler_dev_tape::fhandler_dev_tape): Ditto.
+       * fhandler_termios.cc (handler_termios::bg_check): Use tc->ttyname()
+       rather than assuming that we can construct a tty.
+       * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Just
+       return get_minor() of dev.
+       (fhandler_pty_master::process_slave_output): Add slightly more
+       debugging info.
+       (fhandler_tty_slave::fhandler_tty_slave): Change name from ntty to
+       unit.
+       (fhandler_pty_master::open): Ditto.
+       (fhandler_tty_slave::ioctl): Adapt to change which causes ctty to
+       represent a complete device.
+       (fhandler_tty_master::init_console): Add debugging for failure path.
+       (fhandler_pty_master::setup): Use get_unit() to retrieve unit number
+       rather than relying on raw ntty.
+       (fhandler_pty_master::setup): Ditto.
+       * fhandler_virtual.h (virt_tab_t): Redefine fhandler as fh_devices.
+       * fork.cc: Remove obsolete vfork stuff.
+       (frok::child): Don't assume that a ctty == 0 is valid.
+       * mount.cc (mount_info::conv_to_win32_path): Adapt to device struct
+       changes.
+       (mount_info::conv_to_win32_path): Ditto.
+       * path.cc (path_conv::check): Retrive major/minor numbers via a method
+       rather than accessing them directly from device.  Rely on dev operators
+       to set/retrieve device information as required by device struct change.
+       * path.h (isproc_dev): Move to devices.h.
+       (isprocsys_dev): Ditto.
+       (isvirtual_dev): Ditto.
+       (path_conv:{isdevice,isfifo,isspecial,iscygdrive,issocket,get_devn,get_unitn}):
+       Use device methods to access/manipulate devices.
+       * pinfo.cc (pinfo::exit): Don't assume that ctty == 0 is valid.  Use
+       iscons_dev to determine if a device is a console.
+       (_pinfo::_ctty): Use device::parse to generate tty/cons name.
+       (_pinfo::set_ctty): Don't assume that ctty == 0 is valid.  Remove
+       redundant info from debugging.
+       * shared.cc (offsets): Remove console offset.
+       * shared_info.h (shared_locations): Ditto.
+       * syscalls.cc (umask): Use device methods to manipulate device
+       information.
+       (ctermid): Use device::parse to generate term device name.
+       * tlsoffsets.h: Regenerate.
+       * tty.cc (ttyslot): Return minor number of ctty since ctty now
+       represents a full device.
+       (tty::create_master): Set ctty to a complete device.
+       (tty_list::attach): Rework to detect new /dev/cons* stuff.
+       (tty_list::terminate): Adapt to changes to ctty.
+       (tty_list::init): Adapt to change to setntty - pass in device major
+       number.
+       (tty::exists): Use get_unit() to retrive tty unit number.
+       (tty::open_mutex): Ditto.
+       (tty::open_inuse): Ditto.
+       (tty::create_inuse): Ditto.
+       (tty::get_event): Ditto.
+       (tty_min::ttyname): Define new function.
+       * tty.h (tty_min::ntty): Redefine as fh_devices.
+       (tty::exists): Use get_unit() to retrive tty unit number.
+       (tty::open_mutex): Ditto.
+       (tty::open_inuse): Ditto.
+       (tty::create_inuse): Ditto.
+       (tty::get_event): Ditto.
+       (tty_min::ttyname): Declare new function.
+       (tty::getntty): Declare as const.
+       (tty_list::operator []): Assure that only minor part of argument is
+       used.
+
+       * dll_init.cc (dll_list::alloc): Detect mismatch of data segments early
+       issuing an explicit error message if necessary.
+       * heap.cc (heap_init): Adapt to changes from fork->handle_failure to
+       fork->abort.
+       * pinfo.h (EXITCODE_FORK_FAILED): New enum.  (from Ryan Johnson)
+       * sigproc.cc (child_info_fork::abort): Rename from handle_failure.
+       Change arguments to allow passing in a printf-like message.
+       * winsup.h (api_fatal): Delete macro definition.
+       (api_fatal): Redefine from __api_fatal.
+       (vapi_fatal): Declare new function.
+       * include/sys/strace.h (strace_vprintf): Define new macro.
+
+       * ntdll.h (_SYSTEM_INFORMATION_CLASS): Add SystemHandleInformation.
+
+2011-05-27  Corinna Vinschen  <corinna@vinschen.de>
+
+       * shared.cc (offsets): Reorder so that console_state is lowest in
+       memory.  Explain why.
+       (open_shared): Accommodate reordering of offsets array.
+       * shared_info.h (shared_locations): Reorder SH_SHARED_CONSOLE after
+       SH_MYSELF.
+
+2011-05-26  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.h (MAX_MOUNTS): Raise to 64.
+
+2011-05-25  Eric Blake  <eblake@redhat.com>
+
+       * cygtls.h (strerror_r_buf): New buffer.
+       * errno.cc (strerror): Move guts...
+       (_strerror_r): ...to new function demanded by newlib.
+       (strerror_r): Don't clobber strerror buffer.
+       (_user_strerror): Drop unused declaration.
+       * tlsoffsets.h: Regenerate.
+
+2011-05-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * init.cc (dll_entry): Reinstantiate wow64_test_stack_marker and
+       previous stack tests.
+
+2011-05-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix.sgml (std-notes): Add missing <para>.
+
+2011-05-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mount.cc (mount_info::conv_to_win32_path): Remove unused code.
+       * mount.h (class mount_info): Remove sys_mount_table_counter member.
+       * shared_info.h (class shared_info): Ditto.
+       (CURR_SHARED_MAGIC): Update.
+
+2011-05-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * pinfo.h (struct _pinfo): Reduce size of progname array slightly.
+       Explain why.
+
+2011-05-23  Eric Blake  <eblake@redhat.com>
+
+       * errno.cc (strerror): Print unknown errno as int.
+       (__xpg_strerror_r): Likewise, and don't clobber strerror buffer.
+       * cygtls.h (strerror_buf): Resize to allow '-'.
+
+2011-05-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (thread_info::fill_if_match): Reformat.
+       (format_process_maps): Ditto.  Fetch pointer to procinfo structure
+       from mapped process.  Print info about global shared Cygwin regions.
+
+2011-05-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (struct dos_drive_mappings): Use malloc/free
+       rather than cmalloc/cfree.  Check return value from malloc before
+       using it.
+       (struct heap_info): Ditto.
+       (struct thread_info): Ditto.  Rename from stack_info.  Rename members
+       and local variables accordingly.
+       (thread_info::thread_info): Store stack and TEB addresses.
+       (thread_info::fill_if_match): Print "teb" if a TEB address has been
+       found.  Special case for WOW64, explain why.
+       (format_process_maps): Fetch PEB address.  Print MEM_RESERVE regions
+       with equal signs to distinguish them from PAGE_NOACCESS regions.  Fix
+       printing of 'p' and 's' to differ between MEM_PRIVATE and MEM_MAPPED
+       pages, as on Linux.  Print 'g' instead of 'p for PAGE_GUARD pages.
+       Print PEB and SharedUserData area if recognized.
+
+2011-05-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * miscfuncs.cc (CygwinCreateThread): Fix condition for adding the
+       guardsize to the stacksize.  Fix accompanying comment.
+
+2011-05-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * miscfuncs.cc (CygwinCreateThread): Add accidentally missing comment.
+
+2011-05-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (struct heap_info): Change type of base and end
+       members to char *.  Print "shared" rather than "share".
+       (struct stack_info): New class to fetch process stack information.
+       (format_process_maps): Initialize and check for stack information.
+
+2011-05-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * miscfuncs.cc (thread_wrapper): Remove statements added for debugging
+       purposes.
+
+2011-05-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * child_info.h (CURR_CHILD_INFO_MAGIC): Update.
+       (class child_info_fork): Remove stacksize, add stackaddr and guardsize
+       members.
+       * dcrt0.cc (child_info_fork::alloc_stack_hard_way): Partial rewrite
+       to regenerate the stack exactly as in the parent.
+       (child_info_fork::alloc_stack): Set stackaddr to 0, rather than
+       stacksize.
+       (dll_crt0_1): Check for stackaddr before changing the stack addresses
+       in the TEB.
+       * fork.cc (frok::child): Check for stackaddr here.
+       (frok::parent): Set ch.stackaddr and ch.guardsize if not called from
+       the main thread.
+       * init.cc (dll_entry): Replace pointer to NT_TIB with pointer to TEB.
+       Fix incorrectly changed address test before removing _my_tls.
+       Set StackLimit to NULL on Windows 2000.  Explain why.
+       * miscfuncs.cc (struct thread_wrapper_arg): Store stackbase rather
+       than stacksize, store commitaddr, remove guardsize.  Store all pointers
+       as char * for easier address arithmetic.
+       (thread_wrapper): Rewrite to remove OS stack before calling thread
+       function.  Add lots of comments to explain what we do.
+       (CygwinCreateThread): Reserve our own stack in case we got no
+       application stack.  Add comments.
+       * ntdll.h (struct _TEB): Extend defintion up to DeallocationStack
+       member.
+       * thread.cc (pthread_attr::pthread_attr): Use "(size_t) -1"
+       rather then 0xffffffff.
+       * wincap.h (wincaps::has_stack_size_param_is_a_reservation): New
+       element.
+       * wincap.cc: Implement above element throughout.
+
+2011-05-19  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * thread.cc: Mark psiginfo and psignal as available in list of
+       optional cancellation points.
+
+2011-05-19  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (__fpurge): Export.
+       * posix.sgml (std-solaris): Add __fpurge.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-05-18  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * posix.sgml (std-susv4): Remove chroot, futimes, hstrerror.
+       (std-deprec): Add chroot.
+       (std-bsd): Add futimes, hstrerror.
+       (std-notimpl): Add clock_nanosleep, nexttoward, nexttowardf.
+       Remove initstate, which is implemented and listed in std-susv4.
+
+2011-05-17  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (error): Export.
+       (error_at_line): Export.
+       (error_message_count): Export.
+       (error_one_per_line): Export.
+       (error_print_progname): Export.
+       * errno.cc (error_message_count): Define.
+       (error_one_per_line): Define.
+       (error_print_progname): Define.
+       (_verror): New static function.
+       (error): New function.
+       (error_at_line): New function.
+       * posix.sgml (std-gnu): Add error, error_at_line.
+       * include/error.h: New header.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-05-17  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (clock_getcpuclockid): Export.
+       (pthread_getcpuclockid): Export.
+       * hires.h (PID_TO_CLOCKID): New macro.
+       (CLOCKID_TO_PID): New macro.
+       (CLOCKID_IS_PROCESS): New macro.
+       (THREADID_TO_CLOCKID): New macro.
+       (CLOCKID_TO_THREADID): New macro.
+       (CLOCKID_IS_THREAD): New macro.
+       * ntdll.h (enum _THREAD_INFORMATION_CLASS): Add ThreadTimes.
+       * posix.sgml (std-notimpl): Add clock_getcpuclockid and
+       pthread_getcpuclockid from here...
+       (std-susv4): ... to here.
+       (std-notes): Remove limitations of clock_getres and clock_gettime.
+       Note limitation of timer_create to CLOCK_REALTIME.
+       * sysconf.cc (sca): Set _SC_CPUTIME to _POSIX_CPUTIME, and
+       _SC_THREAD_CPUTIME to _POSIX_THREAD_CPUTIME.
+       * thread.cc (pthread_getcpuclockid): New function.
+       * timer.cc (timer_create): Set errno to ENOTSUP for CPU-time clocks.
+       * times.cc (clock_gettime): Handle CLOCK_PROCESS_CPUTIME_ID and
+       CLOCK_THREAD_CPUTIME_ID.
+       (clock_getres): Ditto.
+       (clock_settime): Set errno to EPERM for CPU-time clocks.
+       (clock_getcpuclockid): New function.
+       * include/pthread.h (pthread_getcpuclockid): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-05-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * miscfuncs.cc (thread_wrapper): Remove unused _cygtls record.
+       * mmap.cc (is_mmapped_region): Avoid crash if no mmaps exist.
+
+2011-05-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * globals.cc (__getlogin_username): Remove.
+       * uinfo.cc (getlogin_r): Fetch username from cygheap.
+       (getlogin): Add static buffer username and fetch username from
+       getlogin_r.
+
+2011-05-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygtls.h (struct _local_storage): Remove unused members rarg and
+       _localtime_buf.  Remove username in favor of a global buffer.  Reorder
+       slightly to keep the net.cc stuff together.
+       * globals.cc (__getlogin_username): New global char buffer.
+       * tlsoffsets.h: Regenerate.
+       * uinfo.cc (getlogin): Copy username into __getlogin_username.
+
+2011-05-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * heap.cc (heap_init): Rewrite initial heap allocation to use addresses
+       beyond 0x20000000.  Explain why and how.
+       * shared.cc (shared_info::heap_slop_size): Remove.
+       * shared_info.h (class shared_info): Remove heap_slop_inited and
+       heap_slop members.  Remove heap_slop_size declaration.
+       (CURR_SHARED_MAGIC): Update.
+       * wincap.cc: Throughout, drop heapslop.
+       * wincap.h (struct wincaps): Drop heapslop.
+
+2011-05-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dcrt0.cc (child_info_fork::alloc_stack_hard_way): Check if the
+       requested stack is application-provided within the user heap or an
+       mmapped region.  If so, just use it.  Add comment to explain why.
+       * miscfuncs.cc (thread_wrapper): If an application-provided stack
+       has been given, implement cygtls area at the stackbase.  Fix comment.
+       * mmap.cc (is_mmapped_region): New function.
+       * winsup.h (is_mmapped_region): Declare.
+
+2011-05-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * miscfuncs.cc (thread_wrapper): Add comments to assembler code.
+
+2011-05-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.din (pthread_attr_getguardsize): Export.
+       (pthread_attr_setguardsize): Export.
+       (pthread_attr_setstack): Export.
+       (pthread_attr_setstackaddr): Export.
+       * init.cc (dll_entry): Remove wow64_test_stack_marker.  Check for
+       unusual stack address by testing stack addresses from current TEB.
+       Check validity of _my_tls by testing if it's within the stack as
+       given in current TEB.
+       * miscfuncs.cc (struct thread_wrapper_arg): New structure used to
+       push all required information to thread_wrapper function.
+       (thread_wrapper): Wrapper function for actual thread function.
+       If an application stack has been given, change %ebp and %esp so that
+       the thread function runs on that stack.  If the thread has been created
+       by CygwinCreateThread, set up the POSIX guard pages if necessary.
+       (CygwinCreateThread): New function.
+       * miscfuncs.h (CygwinCreateThread): Declare.
+       * ntdll.h (struct _TEB): Define all members up to Peb.
+       * posix.sgml (std-susv4): Move pthread_attr_getguardsize,
+       pthread_attr_setguardsize and pthread_attr_setstack here.
+       (std-deprec): Add pthread_attr_setstackaddr.
+       * sysconf.cc (sca): Set _SC_THREAD_ATTR_STACKADDR to
+       _POSIX_THREAD_ATTR_STACKADDR.
+       * thread.cc (pthread::precreate): Copy pthread_attr stackaddr and
+       guardsize members.
+       (pthread::create): Call CygwinCreateThread.
+       (pthread_attr::pthread_attr): Initialize guardsize.
+       (pthread_attr_setstack): New function.
+       (pthread_attr_setstackaddr): New function.
+       (pthread_attr_setguardsize): New function.
+       (pthread_attr_getguardsize): New function.
+       (pthread_getattr_np): Copy attr.guardsize.
+       * thread.h (pthread_attr): Add member guardsize.
+       * include/pthread.h (pthread_attr_getguardsize): Declare.
+       (pthread_attr_setguardsize): Declare.
+       * include/cygwin/version.h: Bump API minor number.
+
+2011-05-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_process.cc (struct heap_info::heap): Convert base to
+       uintptr_t.  Add heap_id, end, flags members.
+       (heap_info::heap_vm_chunks): Rename from heaps.
+       (heap_info::heap_info): Rearrange using RtlQueryProcessDebugInformation
+       to get information of heap virtual memory blocks.  Store heap id and
+       flags, as well as end address of each block.
+       (heap_info::fill_if_match): Check incoming base address against full
+       address range of heap chunks.  Convert flag values in extra heap
+       information.
+       (format_process_maps): Change order so that heap check is done before
+       MEM_MAPPED check since there are shareable heaps.
+       * ntdll.h (PDI_HEAP_BLOCKS): Define.
+       (HEAP_FLAG_NOSERIALIZE): Define.
+       (HEAP_FLAG_GROWABLE): Define.
+       (HEAP_FLAG_EXCEPTIONS): Define.
+       (HEAP_FLAG_NONDEFAULT): Define.
+       (HEAP_FLAG_SHAREABLE): Define.
+       (HEAP_FLAG_EXECUTABLE): Define.
+       (HEAP_FLAG_DEBUGGED): Define.
+       (struct _DEBUG_HEAP_ARRAY): Define.
+       (struct _DEBUG_HEAP_BLOCK): Define.
+
+2011-05-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       Based on newlib patch to strptime by Peter Rosin <peda@lysator.liu.se>:
+       * libc/time/strptime.c (is_leap_year): New static function.
+       (first_day): Ditto.
+       (__strptime): Fill in tm_yday when all of tm_year, tm_mon and tm_mday
+       are updated. Fill in tm_mon, tm_mday and tm_wday when both of tm_year
+       and tm_yday are updated.
+
+2011-05-12  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * fhandler_proc.cc (format_proc_meminfo): Rewrite to use sysinfo().
+       Support RAM and swap space larger than 4GB.
+       Remove output elements not found with modern Linux kernels.
+       (format_proc_swaps): Support paging files larger than 4GB.
+
+2011-05-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc: Remove useless comment.
+
+2011-05-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (EnumProcessModules): Remove.
+       * dlfcn.cc (dlopen): Make sure errno is set if an error occurs.
+       (dlsym): Rewrite using RtlQueryProcessDebugInformation instead of
+       EnumProcessModules.
+       * ntdll.h (struct _DEBUG_MODULE_ARRAY): Define.
+       (RtlCreateQueryDebugBuffer): Declare.
+       (RtlDestroyQueryDebugBuffer): Declare.
+       (RtlQueryProcessDebugInformation): Declare.
+
+2011-05-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (GetModuleFileNameExW): Remove.
+       * autoload.cc (GetModuleInformation): Remove.
+
+2011-05-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (QueryWorkingSet): Remove.
+
+2011-05-11  Ryan Johnson  <ryan.johnson@cs.utoronto.ca>
+
+       * fhandler_process.cc (format_process_maps): Rework to report
+       all mapped address space in a process (committed or reserved),
+       identifying the nature of the mapping (mapped file/image, heap,
+       shared memory) when possible.
+       (dos_drive_mappings): New helper classes.
+       (heap_info): Ditto.
+       * ntdll.h (struct _MEMORY_SECTION_NAME): Define.
+
+2011-05-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (GetProcessMemoryInfo): Remove.
+       * resource.cc (fill_rusage): Call NtQueryInformationProcess rather than
+       GetProcessMemoryInfo to drop a psapi dependency.
+
+2011-05-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (get_inet_addr): Rearrange for better readability.
+       Make waiting loop interruptible and cancelable.  Check for SYSTEM DOS
+       flag before reading the file.  Change return value to return 0 on
+       success, SOCKET_ERROR on failure.
+       (fhandler_socket::bind): Only set R/O DOS flag on filesystems not
+       supporting ACLs.
+       (fhandler_socket::connect): Accommodate changed return values from
+       get_inet_addr.  Use SOCKET_ERROR instead of -1.
+       (fhandler_socket::sendto): Accommodate changed return values from
+       get_inet_addr.
+       * syslog.cc (connect_syslogd): Ditto.
+
+2011-05-10  Christian Franke  <franke@computer.org>
+
+       * security.cc (check_registry_access): Handle missing
+       security descriptor of HKEY_PERFORMANCE_DATA.
+
+2011-05-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * lc_msg.h: Regenerate.
+
+2011-05-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_proc.cc (format_proc_uptime): Don't call GetSystemInfo.
+       Fetch CPU count from wincap.
+       (format_proc_stat): Ditto.
+       * globals.cc (system_info): Move to wincap.
+       * heap.cc (heap_init): Fetch page size from wincap.
+       * syscalls.cc (getpagesize): Fetch allocation granularity from wincap.
+       (getsystempagesize): Fetch page size from wincap.
+       * wincap.cc (wincap_2003): Default is_server to false.
+       (wincapc::init): Call GetSystemInfo here.  Always set is_server value.
+       * wincap.h (class wincapc): Add system_info as private member.
+       (wincapc::cpu_count): New public method.
+       (wincapc::page_size): Ditto.
+       (wincapc::allocation_granularity): Ditto.
+
+2011-05-10  Corinna Vinschen  <corinna@vinschen.de>
+
+       * environ.cc (set_chunksize): Remove.
+       (parse_thing): Remove forkchunk entry.
+       * fork.cc (child_copy): Drop handling external chunksize setting.
+       * wincap.cc: Througout, drop chunksize.
+       (wincapc::set_chunksize): Remove.
+       * wincap.h (struct wincaps): Drop chunksize and declaration of
+       set_chunksize.
+
+2011-05-08  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * times.cc (settimeofday): Add EFAULT handler.
+       Set errno to EINVAL if tv.tv_nsec is invalid, and to EPERM if
+       SetSystemTime fails.  Return -1 in case of failure, all for
+       compatibility with BSD and Linux.
+       (clock_settime): New function.
+       * cygwin.din (clock_settime): Export.
+       * posix.sgml (std-susv4): Add clock_settime.
+       Move clock_setres from here...
+       (std-deprec): ... to here.
+       (std-notes): Correct limitation of clock_setres to only CLOCK_REALTIME.
+       Add limitation of clock_settime to only CLOCK_REALTIME.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-05-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * registry.cc (get_registry_hive_path): Change system_printf to
+       debug_printf.
+       (load_registry_hive): Ditto.
+
+2011-05-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (fhandler_base::close_with_arch): Make non-virtual.
+       (fhandler_base::open_fs): Move closer to it's close counterpart.
+
+2011-05-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base::dup): Avoid duping a handle when an
+       fhandler has an archetype.
+       * fhandler_console.cc (fhandler_console::invisible_console): Move to
+       the top.
+       (fhandler_console::set_close_on_exec): Don't set close-on-exec on
+       handle since it's an archetype and you don't know how many things could
+       be using it.
+
+2011-05-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (fhandler_dev_dsp): Cosmetic change.
+
+       * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Put back
+       Sleep(10) for tty_master case.
+
+       * sigproc.cc (stopped_or_terminated): Don't consider a pid which has
+       been reaped to be terminated.
+
+2011-05-06  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * sysconf.cc (sysinfo): New function.
+       * cygwin.din (sysinfo): Export.
+       * posix.sgml (std-gnu): Add sysinfo.
+       * include/sys/sysinfo.h (struct sysinfo): Define.
+       (sysinfo): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-05-06  Corinna Vinschen  <corinna@vinschen.de>
+
+       * libc/minires-os-if.c (get_dns_info): Drop printing uninitialized
+       value of dwRetVal in debug output.
+
+2011-05-06  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (fhandler_socket::read): Declare.
+       (fhandler_socket::write): Declare.
+       * fhandler_procsys.cc (fhandler_procsys::read): Add FIXME comment.
+       (fhandler_procsys::write): Ditto.
+       * fhandler_socket.cc (fhandler_socket::read): New method.
+       (fhandler_socket::write): New method.
+       * syscalls.cc: Rearrange order of read/write functions.
+       (read): Call fhandler read method directly instead of just readv.
+       (readv): Remove EINTR loop.  This is done in all affected fhandler's
+       now.
+       (write): Call fhandler write method directly instead of just writev.
+       Fix debug output.
+
+2011-05-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygheap.cc (cygheap::close_ctty): Close ctty via close_with_arch().
+       * debug.cc (close_handle): Call debugger on failure.
+       * devices.in (device::tty_to_real_device): Delete.
+       * devices.h (device::tty_to_real_device): Ditto.
+       * devices.cc: Regenerate.
+       * dtable.cc: Delete old ifdef'ed vfork code.
+       (dtable::release): Don't handle archetype here.
+       (dtable::init_std_file_from_handle): Consolidate console tests.
+       Generate major/minor for tty ASAP.  Fix incorrect setting of DEV_TTYS*
+       for serial.
+       (fh_alloc): New function derived from build_fh_pc.  Pass current tty
+       when building tty.
+       (build_pc_pc): Use fh_alloc to create.  Set name from fh->dev if
+       appropriate.  Generate an archetype or point to one here.
+       (dtable::dup_worker): Deal with archetypes.  Rely on = operator copying
+       whole class rather than just fhandler_base.
+       (dtable::fixup_after_exec): Call close_with_arch to handle closing of
+       fhandlers with archetypes.
+       * fhandler.cc (fhandler_base::operator =): Call memcpy with fhandler's
+       size() rather than sizeof fhandler_base.
+       (fhandler_base::open_with_arch): New function.  Handles opening of
+       fhandler's with archetypes, dealing with usecounts, etc.
+       (fhandler_base::close_with_arch): Ditto for close.
+       * fhandler.h: Many changes for archetypes.
+       (fhandler_base::set_name): Set both normalized path and regular path.
+       (fhandler_base::open_with_arch): New function.
+       (fhandler_base::open_setup): Ditto.
+       (fhandler_base::use_archetype): Ditto.
+       (fhandler_base::_archetype_usecount): Ditto.
+       (fhandler_*::size): Ditto.
+       (fhandler_dev_tape::open): Remove virtual decoration.
+       (fhandler_console::use_archetype): New function.  Return true.
+       (fhandler_console::open_setup): New function.
+       (fhandler_console::dup): Delete.
+       (fhandler_tty_slave::fhandler_tty_slave): Redeclare to take an
+       argument.
+       (fhandler_tty_slave::use_archetype): New function.  Return true.
+       (fhandler_tty_slave::cleanup): New function.
+       (fhandler_pty_master::use_archetype): New function.  Return true.
+       (fhandler_pty_master::cleanup): New function.
+       (fhandler_pty_master::is_tty_master): New function.  Return false.
+       (fhandler_tty_master::is_tty_master): New function.  Return true.
+       (fhandler_dev_dsp::fhandler_dev_dsp): New function.  Return true.
+       (report_tty_counts): Only report on archetype's usecount if there is
+       one.
+       * fhandler_console.cc (fhandler_console::get_tty_stuff): Remove
+       handling of setsid, set_ctty, set_flags, and manage_console_count.
+       (fhandler_console::open_setup): New function.  Implement functionality
+       removed from get_tty_stuff.
+       (fhandler_console::dup): Delete.
+       (fhandler_console::output_tcsetattr): Set errno on error.
+       (fhandler_console::fhandler_console): Set device early.
+       (fhandler_console::init): Use open_with_arch to open console handles.
+       (fhandler_console::fixup_after_fork_exec): Nuke most of the stuff for
+       dealing with console handles.
+       * fhandler_dsp.cc (fhandler_dev_dsp::open): Remove archetype handling.
+       (fhandler_dev_dsp::write): Ditto.
+       (fhandler_dev_dsp::read): Ditto.
+       (fhandler_dev_dsp::close): Ditto.
+       (fhandler_dev_dsp::dup): Ditto.
+       (fhandler_dev_dsp::ioctl): Ditto.
+       (fhandler_dev_dsp::fixup_after_fork): Ditto.
+       (fhandler_dev_dsp::fixup_after_exec): Ditto.
+       * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Add a
+       little more debugging.
+       (fhandler_tty_common::__release_output_mutex): Ditto.
+       (fhandler_pty_master::process_slave_output): Ditto.  Don't do signal
+       handling or pthread_cancel handling in the tty master thread.
+       (process_output): Minor reorg.
+       (fhandler_tty_slave::fhandler_tty_slave): Set device based on new ntty
+       argument.
+       (fhandler_tty_slave::open): Remove archetype handling.  Move some
+       processing into open_setup().
+       (fhandler_tty_slave::open_setup): New function.
+       (fhandler_tty_slave::cleanup): New function.
+       (fhandler_tty_slave::close): Remove archetype handling.  Move some
+       processing into cleanup().
+       (fhandler_tty_slave::init): Rename argument from f to h.  Open device
+       using open_with_arch().  Remove archetype handling.
+       (fhandler_pty_master::dup): Ditto.
+       (fhandler_pty_master::open): Ditto.
+       (fhandler_pty_master::close): Ditto.  Move some handling to cleanup().
+       (fhandler_pty_master::cleanup): New function.
+       (fhandler_tty_master::init_console): Give unique name to captive
+       console fhandler.
+       * pinfo.cc (_pinfo::set_ctty): Rename argument from arch to fh.
+       Eliminate archetype assumption.
+       * syscalls.cc (close_all_files): Use close_with_arch for closing.
+       (open): Use open_with_arch() rather than open().
+       (close): Use close_with_arch() rather than close().
+
+2011-05-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * pinfo.h (class push_process_state): New class to push a process state
+       flag temporarily into myself->process_state.
+       * fhandler_console.cc (fhandler_console::read): Add push_process_state
+       handler.
+       (fhandler_console::write): Call bg_check from here.  Add
+       push_process_state handler.
+       * fhandler_tty.cc (fhandler_tty_slave::write): Ditto.
+       (fhandler_tty_slave::read): Ditto.
+       (fhandler_pty_master::write): Ditto.
+       (fhandler_pty_master::read): Ditto.
+       * syscalls.cc (readv): Remove bg_check call and setting process state.
+       (writev): Ditto.
+
+2011-05-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (readv): Add myfault handler.  Don't check repeatedly
+       open state of file handler.  Streamline loop.
+       (writev): Add myfault handler.
+
+2011-05-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::raw_read): Rename from
+       read_overlapped.
+       (fhandler_base_overlapped::raw_e): Rename from write_overlapped.
+       * fhandler.h (fhandler_*::raw_read): Add reparm decoration.
+       (fhandler_*::raw_write): Ditto.
+       (fhandler_base_overlapped::raw_read): Rename from read_overlapped.
+       (fhandler_base_overlapped::raw_write): Rename from write_overlapped.
+       (fhandler_pipe::raw_read): Delete.
+       (fhandler_pipe::raw_write): Ditto.
+       (fhandler_mailslot::raw_read): Ditto.
+       * fhandler_fifo.cc (fhandler_fifo::raw_read): Reflect read_overlapped
+       -> raw_read rename.
+       (fhandler_fifo::raw_write): Ditto.
+       * fhandler_mailslot.cc (fhandler_mailslot::raw_read): Delete.
+       (fhandler_mailslot::raw_write): Reflect read_overlapped -> raw_read
+       rename.
+       * pipe.cc (fhandler_pipe::raw_read): Delete.
+       (fhandler_pipe::raw_write): Ditto.
+
+2011-05-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fork.cc (fork): Clear PID_REAPED.
+       * pinfo.cc (pinfo_init): Ditto.
+       (pinfo::init): Check for PID_REAPED.
+       * sigproc.cc (stopped_or_terminated): Ditto.
+
+2011-05-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pinfo.cc (_pinfo::exists): Check for PID_REAPED.
+
+2011-05-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::pread): Correctly return
+       with errno set to EBADF if file open mode is incorrect.
+       (fhandler_disk_file::pwrite): Ditto.
+
+2011-05-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (is_at_eof): Drop static storage class.  Drop err
+       parameter since we don't change the Win32 error here anymore.
+       (fhandler_base::raw_read): Accommodate change to is_at_eof.
+
+       * fhandler_disk_file.cc (fhandler_disk_file::pread): In binary mode use
+       direct call to NtReadFile, rather than lseek/read.
+       (fhandler_disk_file::pwrite): In binary mode use direct call to
+       NtWriteFile, rather than lseek/write.
+
+2011-05-05  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dcrt0.cc (dll_crt0_1): Reset locale to "C" even when dynamically
+       loaded.
+
+2011-05-05  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * posix.sgml (std-notimpl): Remove bsd_signal, setcontext, and
+       swapcontext, marked obsolete in SUSv3 and not present in SUSv4.
+
+2011-05-05  Christian Franke  <franke@computer.org>
+
+       * fhandler_registry.cc (fhandler_registry::exists): Fix regression
+       in EACCES handling.
+       (fhandler_registry::open): Fix "%val" case.
+
+2011-05-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * signal.cc (_pinfo::kill): Return success on kill(0) only if pid
+       exists or is in PID_EXITED state.  Report pid 0 when pid does not exist
+       rather than pid -1.  Make debug output reflect actual function call.
+       * sigproc.cc (stopped_or_terminated): Set process state to reaped when
+       we've finished waiting for it.
+       * include/sys/cygwin.h (PID_REAPED): New enum.
+
+2011-05-04  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (psiginfo): Export.
+       (psignal): Export.
+       (sys_siglist): Export.
+       * posix.sgml (std-notimpl): Move psiginfo and psignal from here...
+       (std-susv4): ... to here.
+       (std-deprec): Add sys_siglist.
+       * strsig.cc (sys_siglist): New array.
+       (psiginfo): New function.
+       * include/cygwin/signal.h (sys_siglist): Declare.
+       (psiginfo): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-05-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_list::detach (dll_list::detach): Avoid doing anything with detach
+       during a failing fork.
+
+2011-05-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll_global_dtors): Avoid calling destructors during
+       failing fork().
+
+2011-05-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (class fhandler_base): Remove uninterruptible_io status
+       flag.
+       (fhandler_base::ready_for_read): Remove declaration.
+       (fhandler_socket::ready_for_read): Ditto.
+       (fhandler_pipe::ready_for_read): Ditto.
+       (fhandler_tty_master::is_slow): Remove.
+       * fhandler_console.cc (fhandler_console::open): Drop setting
+       uninterruptible_io.
+       * fhandler_serial.cc (fhandler_serial::open): Ditto.
+       * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Ditto.
+       (fhandler_tty_master::init_console): Ditto.
+       * pipe.cc (fhandler_pipe::fhandler_pipe): Ditto.
+       (fhandler_pipe::open): Ditto.
+       (_pipe): Ditto.
+       * select.cc (fhandler_pipe::ready_for_read): Remove.
+       (fhandler_base::ready_for_read): Remove.
+       * syscalls.cc (readv): Drop unneeded wait variable.  Remove entire test
+       which might lead to calling ready_for_read.  Remove now unused label
+       out.
+
+2011-05-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (class fhandler_mailslot): Move down in file and change
+       parent class to fhandler_base_overlapped.  Remove declaration of
+       method write.  Add declaraiotns for raw_read and raw_write.
+       * fhandler_mailslot.cc (fhandler_mailslot::fhandler_mailslot): Call
+       fhandler_base_overlapped constructor.
+       (fhandler_mailslot::fstat): Call fhandler_base_overlapped::fstat.
+       (fhandler_mailslot::open): Drop FILE_SYNCHRONOUS_IO_NONALERT flag from
+       call to NtOpenFile.
+       (fhandler_mailslot::raw_read): New method.
+       (fhandler_mailslot::raw_write): Ditto.  Take over length algorithm from
+       former write method.
+       (fhandler_mailslot::write): Remove.
+       (fhandler_mailslot::ioctl): Call fhandler_base_overlapped::ioctl.
+
+2011-05-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (fhandler_dev_tape::_lock): Add bool parameter.
+       * fhandler_tape.cc (lock): Call _lock with false argument.
+       (_lock): Take bool cancelable parameter.  Handle O_NONBLOCK.
+       Make cancelable if cancelabe parameter is true.
+       (fhandler_dev_tape::raw_read): Call _lock with true argument.
+       (fhandler_dev_tape::raw_write): Ditto.
+
+2011-05-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_dsp.cc (fhandler_dev_dsp::Audio): Add fh member.
+       (fhandler_dev_dsp::Audio_out::Audio_out): Take pointer to encapsulating
+       fhandler_dev_dsp as parameter.
+       (fhandler_dev_dsp::Audio_in::Audio_in): Ditto.
+       (fhandler_dev_dsp::Audio::Audio): Take pointer to encapsulating
+       fhandler_dev_dsp as parameter and store in fh.
+       (fhandler_dev_dsp::Audio_out::write): Change return type to int and
+       return number of bytes written.  Return -1 if waitforspace returns false
+       and no bytes have been written so far.
+       (fhandler_dev_dsp::Audio_out::waitforspace): Change return type to bool.
+       Handle O_NONBLOCK.  Make waiting loop interruptible and cancelable.
+       Return false in any of these cases, otherwise true.
+       (fhandler_dev_dsp::Audio_in::read): Set returned nBytes to -1 if
+       waitfordata returns false and nothing has been read so far.
+       (fhandler_dev_dsp::Audio_in::waitfordata): Change return type to bool.
+       Handle O_NONBLOCK.  Make waiting loop interruptible and cancelable.
+       Return false in any of these cases, otherwise true.
+       (fhandler_dev_dsp::write): Call Audio_out constructor with this as
+       parameter.
+       (fhandler_dev_dsp::read): Call Audio_in constructor with this as
+       parameter.
+
+2011-05-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * thread.h (pthread::static_cancel_self): Mark as noreturn.
+       (pthread::cancel_self): Ditto.
+       * thread.cc (pthread::cancel_self): Explicitly use pthread::exit to
+       avoid a "function returns" error.
+
+2011-05-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pinfo.h (pinfo::pinfo): Set procinfo to NULL to avoid potential
+       cleanup of uninitialized garbage.  (Suggested by Ryan Johnson)
+
+2011-05-03  Corinna Vinschen  <corinna@vinschen.de>
+
+       * select.cc (cygwin_select): Make degenerate case cancelable.
+       (select_stuff::destroy): New inline method to delete memory taken
+       by select_stuff.
+       (select_stuff::~select_stuff): Call destroy.
+       (select_stuff::wait): Add case to allow canceling select.
+       * select.h (select_stuff::destroy): Declare.
+       * thread.cc: Mark poll, pselect and poll as cancelable.
+
+2011-05-03  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Make
+       cancelable.  Remove test for main thread, always add signal_arrived
+       to waited objects.
+
+2011-05-03  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_tty.cc (fhandler_tty_slave::read): Set WFMO timeout to 0 for
+       nonblocking case.  Drop useless waiter variable.  Rewrite wait for
+       input_available_event to use a switch statement.  Handle timeout and
+       failure more gracefully.  Make restartable and cancelable.  Rewrite
+       wait for input_mutex to use WFMO and a switch statement.  Handle
+       timeout and failure more gracefully.  Make restartable and cancelable.
+
+2011-05-02  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * signal.cc (_pinfo::kill): Avoid referencing 'pid' after ESRCH.
+
+2011-05-02  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (pthread_attr_getstack): Export.
+       (pthread_attr_getstackaddr): Export.
+       (pthread_getattr_np): Export.
+       * ntdll.h (enum _THREAD_INFORMATION_CLASS): Add ThreadBasicInformation.
+       (struct _THREAD_BASIC_INFORMATION): Define.
+       (NtQueryInformationThread): Declare.
+       * posix.sgml (std-susv4): Add pthread_attr_getstack.
+       (std-gnu): Add pthread_getattr_np.
+       (std-deprec): Add pthread_attr_getstackaddr.
+       (std-notimpl): Remove pthread_attr_[gs]etstackaddr, as they were
+       removed from SUSv4.
+       * thread.cc (pthread_attr::pthread_attr): Initialize stackaddr.
+       (pthread_attr_getstack): New function.
+       (pthread_attr_getstackaddr): New function.
+       (pthread_attr_setstacksize): Return EINVAL if passed size less than
+       PTHREAD_STACK_MIN, as required by POSIX.
+       (pthread_getattr_np): New function.
+       * thread.h (class pthread_attr): Add stackaddr member.
+       * include/pthread.h (pthread_attr_getstack): Declare.
+       (pthread_attr_getstackaddr): Declare unconditionally.
+       (pthread_attr_setstack): Declare inside false conditional for reference.
+       (pthread_getattr_np): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-05-02  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * Makefile.in: Allow CFLAGS to be overridden from the environment.
+
+2011-05-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * thread.cc (cancelable_wait): Remove test for main thread.
+       * fhandler_fifo.cc (fhandler_fifo::open_nonserver): Ditto.
+
+2011-05-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_tty.cc (andler_pty_master::process_slave_output): Make
+       interruptible and cancelable.  Fix nonblocking case.
+
+2011-05-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::read): Make restartable and
+       cancelable.
+
+2011-05-02  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * strace.cc (strace::vprntf): Avoid closing unopened handle.
+
+2011-05-02  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * sysconf.cc (sca): Set _SC_SPIN_LOCKS to _POSIX_SPIN_LOCKS.
+
+2011-05-02  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll_list::alloc): Reset 'p' in forked process.
+
+       * select.cc (select_stuff::wait): Move cleanup() closer to WFMO to
+       minimize unavoidable (?) race.
+
+2011-05-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_serial.cc (fhandler_serial::raw_read): Add restartability
+       after a signal.  Add cancelability.
+       (fhandler_serial::raw_write): Wait for write to succeed if O_NONBLOCK
+       is not set.  Add signal handling and cancelability.
+
+2011-05-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_windows.cc (fhandler_windows::read): Use
+       pthread::get_cancel_event to fetch thread's cancel event.
+       * flock.cc (lf_setlock): Ditto.
+       * posix_ipc.cc (ipc_cond_timedwait): Ditto.
+       * thread.cc (pthread::get_cancel_event): New static method.
+       * thread.h (pthread::get_cancel_event): Declare.
+
+2011-05-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * libc/minires-os-if.c (get_dns_info): Remove unnecessary test for
+       existence of DnsQuery_A.
+
+2011-05-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       Throughout, use user32 UNICODE functions rather than ANSI functions.
+       * autoload.cc: Convert all definitions for ANSI user32 functions to
+       definitions for the corresponding UNICODE function.
+       (SendMessageA): Remove.
+       (SendNotifyMessageW): Define.
+       * fhandler.h (fhandler_windows::is_slow): Remove.
+       * fhandler_windows.cc (fhandler_windows::write): Use SendNotifyMessageW
+       call rather than SendMessage to make function always return immediately.
+       (fhandler_windows::read): Make function interruptible and a cancellation
+       point.  Handle O_NONBLOCK.
+       * select.cc (peek_serial): Don't wait for signal_arrived here.
+       * window.cc (wininfo::winthread): Call CreateWindowExW directly rather
+       than CreateWindow wrapper.
+
+2011-05-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (fdsock): Drop setting uninterruptible_io to true.
+
+2011-05-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (fhandler_socket::is_slow): Remove.
+
+2011-04-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fcntl.cc (fcntl64): Call pthread_testcancel.
+       * fhandler_socket.cc (fhandler_socket::connect): Ditto.
+       (fhandler_socket::accept4): Ditto.
+       (fhandler_socket::recvfrom): Ditto.
+       (fhandler_socket::recvmsg): Ditto.
+       (fhandler_socket::sendto): Ditto.
+       (fhandler_socket::sendmsg): Ditto.
+       * flock.cc (lf_setlock): Allow to cancel thread running blocking
+       file lock.  Try to make code more readable.
+       (lockf): Call pthread_testcancel.
+       * mmap.cc (msync): Ditto.
+       * posix_ipc.cc (ipc_cond_timedwait): Call pthread::static_cancel_self
+       rather than pthread_testcancel.
+       * select.cc (cygwin_select): Call pthread_testcancel.
+       * syscalls.cc (pread): Ditto.
+       (pwrite): Ditto.
+       (readv): Ditto.
+       (writev): Ditto.
+       (open): Ditto.
+       (close): Ditto.
+       (fsync): Ditto.
+       * termios.cc (tcdrain): Ditto.
+       * thread.cc: Align list of cancellation points with above changes.
+       Mark not-implemented functions, too.
+       (cancelable_wait): Don't set unused object indices to WAIT_FAILED
+       since that could result in wrong behaviour.  Set them to the invalid
+       value WAIT_TIMEOUT + 1 instead.
+
+2011-04-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * thread.h (class pthread): Add bool member canceled.
+       * thread.cc (pthread::pthread): Initialize canceled to false.
+       (pthread::cancel): Set canceled before setting cancel_event.
+       (pthread::testcancel): Check for canceled.  Only wait for cancel_event
+       if canceled is true.  Explain why.
+       (pthread::_fixup_after_fork): Set canceled to false.
+
+2011-04-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * errno.cc (errmap): Sort.  Map ERROR_EXE_MACHINE_TYPE_MISMATCH to
+       ENOEXEC.
+
+2011-04-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * thread.cc: Update comment listing cancellation points per POSIX.
+
+2011-04-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc: Add comment.
+       (EqualSid): Remove.
+       (CopySid): Remove.
+       (AddAccessAllowedAce): Remove.
+       (AddAccessDeniedAce): Remove.
+       (MakeSelfRelativeSD): Remove.
+       * flock.cc: Replace above functions throughout with their ntdll.dll
+       equivalent.
+       * sec_acl.cc: Ditto.
+       * sec_auth.cc: Ditto.
+       * sec_helper.cc: Ditto.
+       * security.cc: Ditto.
+       * security.h: Ditto.
+       (RtlEqualSid): Declare.  Explain why.
+       (RtlCopySid): Ditto.
+
+2011-04-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc (AccessCheck): Remove.
+       (PrivilegeCheck): Remove.
+       (OpenThreadToken): Remove.
+       * fhandler_tty.cc: Replace above functions throughout with their
+       ntdll.dll equivalent.
+       * security.cc: Ditto.
+
+2011-04-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * ntdll.h (IsEventSignalled): New inline function.
+       * cygthread.cc (cygthread::terminate_thread): Use IsEventSignalled in
+       place of WaitForSingleObject on event with 0 timeout.
+       * fhandler.cc (fhandler_base_overlapped::has_ongoing_io): Ditto.
+       * fhandler_fifo.cc (fhandler_fifo::open_nonserver): Ditto.
+       (fhandler_fifo::wait): Ditto.
+       * fhandler_termios.cc (fhandler_termios::bg_check): Ditto.
+       * select.cc (verify_tty_slave): Ditto.
+       * thread.cc (pthread::testcancel): Ditto.
+
+2011-04-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc (GetTokenInformation): Remove.
+       (SetTokenInformation): Remove.
+       * grp.cc: Replace above functions throughout with their ntdll.dll
+       equivalent.
+       * sec_auth.cc: Ditto.
+       * syscalls.cc: Ditto.
+       * uinfo.cc: Ditto.
+
+2011-04-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix_ipc.cc (ipc_cond_timedwait): Only wait for pthread's
+       cancel_event if thread's cancelability isn't disabled.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc (SetSecurityDescriptorDacl): Remove.
+       (SetSecurityDescriptorGroup): Remove.
+       (SetSecurityDescriptorOwner): Remove.
+       * pinfo.cc: Replace above functions throughout with their ntdll.dll
+       equivalent.
+       * sec_acl.cc: Ditto.
+       * sec_helper.cc: Ditto.
+       * security.cc: Ditto.
+
+       * sec_helper.cc (__sec_user): Remove old comment.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix_ipc.cc (ipc_cond_timedwait): Also wait for pthread's
+       cancel_event, if any.  Call pthread_testcancel if cancel_event has been
+       signalled.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix_ipc.cc (ipc_cond_timedwait): Remove pthread_testcancel calls.
+       (_mq_send): Add pthread_testcancel call at start of function.
+       (_mq_receive): Ditto.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygerrno.h (geterrno_from_nt_status): Declare.
+       * errno.cc (geterrno_from_nt_status): Define.
+       * flock.cc: Fix copyright dates.
+       * ntdll.h (enum _TIMER_TYPE): Define.
+       (PTIMER_APC_ROUTINE): Define.
+       (NtCancelTimer): Declare.
+       (NtCreateTimer): Declare.
+       (NtSetTimer): Declare.
+       * posix_ipc.cc (ipc_cond_timedwait): Rewrite to make interruptible and
+       restartable.  Call pthread_testcancel in case of timeout to enable
+       pthread_cancel on waiting thread.  Replace WFMO timeout with waiting
+       for a waitable timer.  Explain why.  Replace single call to WFMO with
+       two calls, one for the event, one for the mutex.  Don't lock mutex in
+       case of error.
+       (ipc_cond_signal): Make void function.
+       (ipc_cond_close): Ditto.
+       (_mq_send): Immediately return -1 in case of error from
+       ipc_cond_timedwait.
+       (_mq_receive): Ditto.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc (GetSecurityDescriptorDacl): Remove.
+       (GetSecurityDescriptorGroup): Remove.
+       (GetSecurityDescriptorOwner): Remove.
+       * sec_acl.cc: Replace above functions throughout with their ntdll.dll
+       equivalent.  Remove redundant debug output.
+       * sec_auth.cc: Ditto.
+       * security.cc: Ditto.
+       * uinfo.cc: Ditto.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc (InitializeAcl): Remove.
+       (AddAce): Remove.
+       (FindFirstFreeAce): Remove.
+       (GetAce): Remove.
+       (InitializeSecurityDescriptor): Remove.
+       (OpenProcessToken): Remove.
+       * dcrt0.cc: Replace above functions throughout with their ntdll.dll
+       equivalent.
+       * fhandler_tty.cc: Ditto.
+       * flock.cc: Ditto.
+       * pinfo.cc: Ditto.  Drop unnecessary error handling.
+       * sec_acl.cc: Ditto.
+       * sec_auth.cc: Ditto.
+       * sec_helper.cc: Ditto.
+       * security.cc: Ditto.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc (InitializeSid): Remove.
+       (EqualPrefixSid): Remove.
+       (GetLengthSid): Remove.
+       (GetSidSubAuthority): Remove.
+       (GetSidSubAuthorityCount): Remove.
+       (GetSidIdentifierAuthority): Remove.
+       * fhandler_disk_file.cc: Replace above functions throughout with their
+       ntdll.dll equivalent.
+       * sec_auth.cc: Ditto.
+       * sec_helper.cc: Ditto.
+       * security.cc: Ditto.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * advapi32.cc (AllocateLocallyUniqueId): Remove.
+       * fhandler_disk_file.cc (fhandler_base::open_fs): Replace call to
+       AllocateLocallyUniqueId with call to NtAllocateLocallyUniqueId;
+       * posix_ipc.cc (mq_open): Ditto.  Drop error handling for that call.
+       (sem_open): Ditto.
+
+2011-04-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (GetSecurityInfo): Remove.
+       * ntdll.h (RtlConvertToAutoInheritSecurityObject): Declare.
+       (RtlDeleteSecurityObject): Declare.
+       (RtlGetControlSecurityDescriptor): Declare.
+       (RtlLengthSecurityDescriptor): Declare.
+       * security.cc (file_mapping): New global variable.
+       (get_file_sd): Rewrite.  Clean up code.  Get rid of GetSecurityInfo
+       call.
+       (alloc_sd): Call RtlSetControlSecurityDescriptor to set
+       SE_DACL_PROTECTED flag.
+       (check_file_access): Remove mapping.  Use file_mapping instead.
+       (check_registry_access): Rename mapping to reg_mapping.
+       * wincap.cc: Througout, drop use_get_sec_info_on_dirs,
+       * wincap.h (struct wincaps): Drop use_get_sec_info_on_dirs.
+
+2011-04-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/fenv.h: Add missing _FENV_H_ define.
+
+2011-04-23  Corinna Vinschen  <corinna@vinschen.de>
+
+       * registry.cc (reg_key::get_dword): Rename from get_int, use DWORD
+       rather than int type.  Avoid compiler warning.
+       (reg_key::set_dword): Rename from set_int, use DWORD rather than int
+       type.  Change return type to NTSTATUS.
+       (reg_key::get_string): Change return type to NTSTATUS.
+       (reg_key::set_string): Ditto.
+       * registry.h: Accommodate above changes.
+       * environ.cc (regopt): Test return value of reg_key::get_string as
+       NTSTATUS.
+       * sched.cc (sched_rr_get_interval): Change local int vars to DWORD.
+       Call reg_key::get_dword instead of reg_key::get_int.
+       * shared.cc (init_installation_root): Test return value of
+       reg_key::get_string as NTSTATUS.
+       (shared_info::heap_slop_size): Call reg_key::get_dword rather than
+       reg_key::get_int.
+       (shared_info::heap_chunk_size): Ditto.
+       * shared_info.h (CURR_SHARED_MAGIC): Update.
+       (class shared_info): Change heap_chunk and heap_slop to DWORD  values.
+
+2011-04-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygtls.cc (_cygtls::init_thread): Drop setting locals.process_logmask.
+       * cygtls.cc (_cygtls::remove): Always free mallocated TLS storage on
+       thread exit.  Drop freeing locals.process_ident.
+       * cygtls.h (struct _local_storage): Remove syslog-related members.
+       * syslog.cc (syslog_globals): New static storage for global syslog
+       settings.  Use throughout instead of _my_tls.locals.
+       (openlog): Set new syslog_globals.process_ident value more carefully.
+       * tlsoffsets.h: Regenerate.
+
+2011-04-21  Thomas Stalder <cygwinml@gmail.com>
+
+       * include/sys/poll.h: Include signal.h to get definition of sigset_t.
+
+2011-04-20  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygheap.cc (init_cygheap::close_ctty): Avoid closing console-cttys
+       since they don't use archetypes and this will just result in double
+       frees.
+       * dll_init.cc (dll_list::protect): Define.
+       (dll_list::alloc): Guard list access.
+       (dll_list::detach): Ditto.
+       * dll_init.h (dll_list::protect): Declare new muto.
+       (dll_list::guard): Define/declare function to guard list access.
+       * fhandler_termios.cc (fhandler_termios::sigflush): Avoid SEGV in
+       pathological condition of get_ttyp() == NULL.
+
+2011-04-20  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (serial_cleanup): Make sure that device_specific_pipe is
+       always deleted regardless of whether it has a unique thread associated
+       with it
+       (socket_cleanup): Ditto.
+       (mailslot_cleanup): Ditto.
+
+2011-04-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * devices.h: Renumber internal devices so that FH_PROCESS is part of
+       the /proc family of virtual devices.
+       (FH_PROC_MAX_MINOR): Define.
+       * path.h (isproc_dev): Use FH_PROC_MAX_MINOR rather than FH_PROC.
+
+2011-04-19  Peter Rosin  <peda@lysator.liu.se>
+
+       * select.cc (pipe_cleanup): Make sure that device_specific_pipe is
+       always deleted regardless of whether it has a unique thread associated
+       with it.
+
+2011-04-19  Jon TURNEY  <jon.turney@dronecode.org.uk>
+
+       * thread.cc (semaphore::init): We cannot reliably infer anything from
+       the existing contents of sem, so merely warn rather than return EBUSY
+       if it looks like we are reinitialising a semaphore.
+
+2011-04-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (GetConsoleWindow): Drop.
+       (GetSystemWindowsDirectoryW): Drop.
+       * fhandler_console.cc (beep): Call GetSystemWindowsDirectoryW instead of
+       GetWindowsDirectoryW.
+       * uinfo.cc (cygheap_user::env_systemroot): Call
+       GetSystemWindowsDirectoryW and convert to multibyte on the fly.
+       * winlean.h (GetWindowsDirectoryW): Redefine to something invalid.
+       Explain why.
+
+2011-04-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * Makefile.in (DLL_IMPORTS): Drop advapi32.dll.
+       * autoload.cc: Enable autoloading advapi32 functions.
+       * environ.cc (regopt): Use wide char arguments in reg_key functions.
+       * fhandler_console.cc (beep): Ditto.  Use WCHAR throughout.
+       * registry.cc (reg_key): Rewrite reg_key class to use native NT registry
+       functions.  Use WCHAR string parameters throughout.  Use PCWSTR rather
+       than const WCHAR.  Drop multibyte char functionality.  Drop unused
+       methods.
+       (get_registry_hive_path): Use RtlQueryRegistryValues to fetch path from
+       registry.
+       (load_registry_hive): Drop useless check for user hive being available.
+       Load hive using NtLoadKey.
+       * registry.h: Accommodate above changes.
+       * sched.cc (sched_rr_get_interval): Use wide char arguments in reg_key
+       functions.
+       * shared.cc (init_installation_root): Ditto.
+       (shared_info::init_obcaseinsensitive): Use RtlQueryRegistryValues to
+       fetch obcaseinsensitive value.
+       (shared_info::heap_slop_size): Use wide char arguments in reg_key
+       functions.
+       (shared_info::heap_chunk_size): Ditto.
+       * syscalls.cc (gethostid): Ditto.
+       * winsup.h (__WIDE): Define.
+       (_WIDE): Define.
+       * libc/minires-os-if.c (get_registry_dns_items): Don't fetch values
+       from registry.  Just extract them from given UNICODE_STRING parameter.
+       (get_registry_dns): Fetch all registry values at once using
+       RtlQueryRegistryValues.
+
+2011-04-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (get_ipv4fromreg_ipcnt): Rearrange to fetch all registry
+       values at once using RtlQueryRegistryValues.
+       (get_ipv4fromreg): Ditto.
+
+2011-04-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_registry.cc (fhandler_registry::fstat): Use RegQueryInfoKeyW.
+
+2011-04-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_proc.cc (read_value): Remove definition.
+       (print): Simplify.
+       (format_proc_cpuinfo): Drop useless call to GetSystemInfo.  Rearrange
+       to use Rtl registry functions.  Rename dwOldThreadAffinityMask to
+       orig_affinity_mask.
+
+2011-04-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * localtime.cc (tzload): Don't change global timezone information
+       when called from gmtime or gmtime_r.
+       (tzparse): Ditto.
+
+2011-04-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygtls.cc (_cygtls::remove): Always close sockevt handle.
+
+2011-04-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.din (ppoll): Export.
+       * poll.cc (ppoll): Implement.
+       * posix.sgml (std-gnu): Add ppoll.
+       * include/cygwin/version.h: Bump API minor number.
+       * include/sys/poll.h (ppoll): Declare.
+
+2011-04-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (fhandler_socket::evaluate_events): Handle the
+       FD_CLOSE event specially when called from accept.  Explain why.
+       (fhandler_socket::shutdown): Fake success on not-connected socket and
+       trigger socket event if the read side of a socket is affected.  Explain
+       why.
+       * poll.cc (poll): Check for saw_shutdown_read on sockets to generate
+       POLLHUP as well.
+
+2011-04-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * Fix various copyrights.
+
+2011-04-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * signal.cc (_pinfo::kill): Set this_process_state when process
+       exists.
+
+2011-04-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * signal.cc (_pinfo::kill): Return 0 when attempting to test for
+       existence of an existed process which has not yet been reaped.
+
+2011-04-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygheap.h (init_cygheap::ctty): Use base class so that console can
+       join in the fun.
+       * dtable.cc (dtable::stdio_init): Remove special-case call to
+       set_console_ctty ().
+       * exceptions.cc (sigpacket::process): Conditionally flush terminal
+       input on certain signals.
+       * fhandler.h (fhandler_console::get_tty_stuff): Make non-static.
+       (fhandler_termios::get_ttyp): Move here.
+       (fhandler_termios::sigflush): Declare.
+       (fhandler_tty_common::get_ttyp): Delete.
+       * fhandler_console.cc (fhandler_console::get_tty_stuff): Pass this as
+       "arch" argument.
+       (set_console_ctty): Delete.
+       (tty_list::get_tty): Just return pointer to shared console region,
+       delaying get_tty_stuff until open().
+       (fhandler_console::init): Treat NULL handle as signifying that console
+       should be opened with O_NOCTTY flag.  Rename handle argument to the
+       more common 'h'.
+       * fhandler_termios.cc (fhandler_termios::sigflush): Define.
+       * fhandler_tty.cc (handler_tty_master::init_console): Pass NULL as
+       first argument to fhandler_console::init.
+       * pinfo.cc (_pinfo::set_ctty): Change third parameter to
+       fhandler_termios *.  Add extra debugging.
+       * pinfo.h (_pinfo::set_ctty): Change third parameter to
+       fhandler_termios *.
+
+       * exceptions.cc (handle_sigsuspend): Don't special-case non-main threads.
+
+2011-04-15  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * thread.cc (pthread_setschedprio): New function.
+       * include/pthread.h (pthread_setschedprio): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+       * cygwin.din (pthread_setschedprio): Export.
+       * posix.sgml (std-notimpl) Move pthread_setschedprio from here...
+       (std-susv4) ...to here.
+
+2011-04-10  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * fhandler_proc.cc (proc_tab): Add /proc/swaps virtual file.
+       (format_proc_swaps): New function.
+
+2011-04-06  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * Makefile.in: Move srcdir definition before others which uses it.
+
+2011-04-06  Jon TURNEY  <jon.turney@dronecode.org.uk>
+
+       * dll_init.cc (reserve_at, release_at): New functions.
+       (load_after_fork): If the DLL was loaded higher than the required
+       address, assume that it loaded at it's base address and also reserve
+       memory there to force it to be relocated.
+
+2011-04-04  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * include/cygwin/types.h: Move #include <sys/sysmacros.h> to
+       end of header so that it gets the dev_t typedef.
+       * include/sys/sysmacros.h (gnu_dev_major, gnu_dev_minor,
+       gnu_dev_makedev): Prototype and define as inline functions.
+       (major, minor, makedev): Redefine in terms of gnu_dev_*.
+
+2011-04-04  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * include/cygwin/types.h: Move multiple inclusion guards to
+       beginning and end of header.
+
+2011-04-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * Makefile.in: Move Makefile.common include earlier to fix problems
+       with relative ${srcdir} path which confuses make.
+
+2011-04-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       Drop NT4 support.
+       * autoload.cc (DnsQuery_A): Fatal if not available.
+       (DnsRecordListFree): Ditto.
+       (DsGetDcNameW): Ditto.
+       (NetGetAnyDCName): Remove.
+       (NetGetDCName): Remove.
+       (EnumProcessModules): Fatal if not available.
+       (GetModuleFileNameExW): Ditto.
+       (GetModuleInformation): Ditto.
+       (GetProcessMemoryInfo): Ditto.
+       (QueryWorkingSet): Ditto.
+       (LsaRegisterLogonProcess): Ditto.
+       * fenv.cc (_feinitialise): Drop supports_sse condition.
+       * fhandler_disk_file.cc (path_conv::isgood_inode): Fix comment.
+       (fhandler_base::fstat_by_name): Drop has_fileid_dirinfo condition.
+       (fhandler_disk_file::opendir): Ditto.
+       * fhandler_netdrive.cc (fhandler_netdrive::readdir): Fix comment.
+       * fhandler_proc.cc (format_proc_partitions): Drop NT4-only code.
+       * fhandler_process.cc (get_process_state): Ditto.
+       * kernel32.cc (GetWindowsDirectoryW): Remove.
+       (GetWindowsDirectoryA): Remove.
+       * miscfuncs.cc (nice_to_winprio): Drop NT4-only code.
+       * mount.cc (fs_info::update): Fix comments.
+       * net.cc (get_2k_ifs): Drop NT4-only code.
+       * sec_auth.cc (get_logon_server): Ditto.
+       (lsaauth): Drop NT4-specific error handling.
+       * security.cc (alloc_sd): Set SE_DACL_PROTECTED unconditionally.
+       * select.cc (select_stuff::wait): Always use MWMO_INPUTAVAILABLE.
+       (peek_windows): Drop NT4-only condition in call to PeekMessage.
+       * syscalls.cc (gethostid): Remove NT4-only workaround.
+       * wincap.cc: Througout, drop has_dacl_protect,
+       has_broken_if_oper_status, has_process_io_counters,
+       has_terminal_services, has_extended_priority_class, has_guid_volumes,
+       has_fileid_dirinfo, has_mwmo_inputavailable and supports_sse from
+       wincaps.
+       (wincap_nt4sp4): Remove.
+       (wincap_minimal): Set to wincap_2000.
+       (wincapc::init): Rely on availability of OSVERSIONINFOEX structure.
+       Treat error from GetVersionEx as fatal.  Treat NT4 as fatal.
+       * wincap.h (struct wincaps): Drop has_dacl_protect,
+       has_broken_if_oper_status, has_process_io_counters,
+       has_terminal_services, has_extended_priority_class, has_guid_volumes,
+       has_fileid_dirinfo, has_mwmo_inputavailable and supports_sse flags
+       and methods.
+       * winlean.h (GetWindowsDirectoryW) Define as GetSystemWindowsDirectoryW.
+       (GetWindowsDirectoryA): Define as GetSystemWindowsDirectoryA.
+
+2011-04-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (dtable::init_std_file_from_handle): Fix a comment to
+       reflect the current state.
+
+2011-04-04  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * Makefile.in (fhandler_proc_CFLAGS): Define USERNAME, HOSTNAME,
+       and GCC_VERSION.
+       * fhandler_proc.cc (format_proc_version):  Add build machine and GCC
+       version information as on Linux.
+
+2011-04-04  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+           Corinna Vinschen  <corinna@vinschen.de>
+
+       * devices.h (fh_devices): Define FH_PROC_MIN_MINOR.
+       Reorder major-0 devices so that all /proc directories fall
+       between FH_PROC and FH_PROC_MIN_MINOR.
+       * path.h (isproc_dev): Redefine accordingly.
+
+2011-04-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygserver_setpwd.h (setlsapwd): Add username parameter to declaration.
+       * external.cc (cygwin_internal): In the CW_SET_PRIV_KEY case, fetch
+       additional username parameter.
+       * setlsapwd.cc (setlsapwd): Add username parameter.  Allow admin to
+       set the hidden password for other users.
+
+2011-04-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * sec_auth.cc (get_user_groups): Mark well-known groups as well-known.
+       (get_user_local_groups): Ditto.
+       (verify_token): Drop useless label.
+       * sec_helper.cc (cygsid::get_sid): Check for well-known SID if
+       well_known isn't set.
+       * security.h (well_known_sid_type): New inline function.
+
+2011-04-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (FindFirstVolumeA): Remove.
+       (FindNextVolumeA): Remove.
+       (FindVolumeClose): Remove.
+       (GetVolumeNameForVolumeMountPointA): Remove.
+       * ntdll.h (NtFlushBuffersFile): Declare.
+       * syscalls.cc (sync_worker): Rewrite using native NT functions.
+       (sync): Ditto.
+
+2011-04-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_proc.cc (format_proc_partitions): Express length in WCHAR
+       size.
+
+2011-04-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (GetExtendedTcpTable): Remove.
+       (GetTcpTable): Remove.
+       (CharNextExA): Remove.
+       (FindWindowA): Remove.
+       (ShowWindowAsync): Remove.
+       * dcrt0.cc (disable_dep): Remove unused function.
+       (dll_crt0_0): Drop comment babbling about TS & DEP.
+       * fhandler_socket.cc (address_in_use): Remove unused function.
+       * wincap.cc: Throughout, drop ts_has_dep_problem from wincaps.
+       (wincapc::init): Drop code setting ts_has_dep_problem flag.
+       * wincap.h (struct wincaps): Drop ts_has_dep_problem flags and method.
+
+2011-04-01  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       Implement /proc/sysvipc/*
+       * devices.in (dev_procsysvipc_storage): Add.
+       * devices.cc: Regenerate.
+       * devices.h (fh_devices): Add FH_PROCSYSVIPC.
+       * dtable.cc (build_fh_pc): Add case FH_PROCSYSVIPC.
+       * fhandler.h (class fhandler_procsysvipc): Declare.
+       (fhandler_union): Add __procsysvipc.
+       * fhandler_proc.cc (proc_tab): Add sysvipc virt_directory.
+       * fhandler_procsysvipc.cc: New file.
+       * Makefile.in (DLL_OFILES): Add fhandler_procsysvipc.o.
+       * path.h (isproc_dev): Add FH_PROCSYSVIPC to conditional.
+
+2011-04-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * Makefile.in (DLL_OFILES): Add avapi32.o.
+       * advapi32.cc: New file.
+       * autoload.cc: Add block of remaining advapi32 functions used by
+       Cygwin.  Keep commented out.  Explain why.
+
+2011-04-01  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * fhandler_proc.cc (format_proc_loadavg): Add running/total
+       processes as fourth component of output.
+       * fhandler_process.cc (get_process_state): Make non-static.
+       Add FIXME about generating an 'O' flag.
+
+2011-04-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_random.cc (fhandler_dev_random::crypt_gen_random):
+       Use CryptAcquireContextW.
+       * ntdll.h (STATUS_PROCEDURE_NOT_FOUND): Define.
+       * sec_auth.cc (open_local_policy): Rename NTSTATUS variable ret to
+       status.  Drop usage of LsaNtStatusToWinError.
+       (verify_token): Call NtQuerySecurityObject instead of
+       GetKernelObjectSecurity.
+       (create_token): Rename NTSTATUS variable ret to status.  Rename ret2 to
+       sub_status.  Drop usage of LsaNtStatusToWinError.  In case LsaLogonUser
+       fails, report the sub_status as well.
+
+2011-04-01  Corinna Vinschen  <corinna@vinschen.de>
+
+       * libc/strptime.c: Remove misleading comment.
+
+2011-03-31  Corinna Vinschen  <corinna@vinschen.de>
+
+       * ntdll.h: Allow usage from plain C code.
+       (FSCTL_PIPE_IMPERSONATE): Define.
+       (enum _THREAD_INFORMATION_CLASS): Define.
+       (RTL_QUERY_REGISTRY_xxx): Define.
+       (RTL_REGISTRY_xxx): Define.
+       (PRTL_QUERY_REGISTRY_ROUTINE): Define.
+       (struct _RTL_QUERY_REGISTRY_TABLE): Define.
+       (enum _KEY_VALUE_INFORMATION_CLASS): Define.
+       (struct _KEY_VALUE_PARTIAL_INFORMATION): Define.
+       (NtAccessCheck): Declare.
+       (NtAllocateLocallyUniqueId): Declare.
+       (NtCreateKey): Declare.
+       (NtDuplicateToken): Declare.
+       (NtLoadKey): Declare.
+       (NtOpenKey): Declare.
+       (NtOpenProcessToken): Declare.
+       (NtOpenThreadToken): Declare.
+       (NtPrivilegeCheck): Declare.
+       (NtQueryInformationToken): Declare.
+       (NtQueryValueKey): Declare.
+       (NtSetInformationThread): Declare.
+       (NtSetInformationToken): Declare.
+       (NtSetValueKey): Declare.
+       (RtlAbsoluteToSelfRelativeSD): Declare.
+       (RtlAddAccessAllowedAce): Declare.
+       (RtlAddAccessDeniedAce): Declare.
+       (RtlAddAce): Declare.
+       (RtlCheckRegistryKey): Declare.
+       (RtlCopySid): Declare.
+       (RtlCreateAcl): Declare.
+       (RtlCreateRegistryKey): Declare.
+       (RtlCreateSecurityDescriptor): Declare.
+       (RtlEqualPrefixSid): Declare.
+       (RtlEqualSid): Declare.
+       (RtlFirstFreeAce): Declare.
+       (RtlGetAce): Declare.
+       (RtlGetDaclSecurityDescriptor): Declare.
+       (RtlGetGroupSecurityDescriptor): Declare.
+       (RtlGetOwnerSecurityDescriptor): Declare.
+       (RtlIdentifierAuthoritySid): Declare.
+       (RtlInitializeSid): Declare.
+       (RtlLengthSid): Declare.
+       (RtlQueryRegistryValues): Declare.
+       (RtlSetControlSecurityDescriptor): Declare.
+       (RtlSetDaclSecurityDescriptor): Declare.
+       (RtlSetGroupSecurityDescriptor): Declare.
+       (RtlSetOwnerSecurityDescriptor): Declare.
+       (RtlSubAuthorityCountSid): Declare.
+       (RtlSubAuthoritySid): Declare.
+       (RtlWriteRegistryValue): Declare.
+
+2011-03-31  Corinna Vinschen  <corinna@vinschen.de>
+
+       * uinfo.cc (cygheap_user::init): Don't call GetUserName.  Fetch username
+       from Windows environment instead.  Explain why.
+       (cygheap_user::env_domain): Use MAX_DOMAIN_NAME_LEN rather than DNLEN
+       to specify the size of the domain name buffer.
+
+2011-03-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * hires.h: Fix copyright.
+       * times.cc: Ditto.
+       (FACTOR): Add comment.
+       (NSPERSEC): Ditto.
+       (JITTER): New definition.  Comment.
+       (systime_ns): Avoid gratuitous copying of the value returned by
+       GetSystemTimeAsFileTime.
+       (corelocaltime, localtime, gmtime): Remove very old, unused code block.
+       (cygwin_tzset): Remove.
+       (hires_ms::timeGetTime_ns): Add missing semicolon in comment.
+       (hires_ms::nsecs): Redefine check for difference between internal
+       timer value and system time.
+
+2011-03-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * times.cc (hires_ms::resolution): Make sure resolution is never 0.
+       (clock_setres): Ditto.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygtls.h (struct _local_storage): Redefine process_ident as wchar_t
+       pointer.
+       * syslog.cc (CYGWIN_LOG_NAME): Convert to wide char constant.
+       (openlog): Convert incoming ident string to wide char.  Fix formatting.
+       (vsyslog): Print ident string as wide char string.  Convert message
+       string to wide char and call UNICODE Win32 Event functions to make sure
+       to use correct codeset.
+       * tlsoffset.h: Regenerate.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (get_inet_addr): Make externally available.
+       * autoload.cc (GetUdpTable): Define.
+       * syslog.cc (connect_syslogd): Use get_inet_addr rather than _stat64
+       to check for local socket file.  Create socket with type returned by
+       get_inet_addr.  If connect on UDP socket works, test if there's
+       really a listening peer, otherwise fall back to Windows event log.
+       (try_connect_syslogd): Use syslogd_inited flag to check if syslogd
+       is available.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * uinfo.cc (cygheap_user::env_domain): Use LookupAccountSidW and
+       convert user and domain to multibyte strings to make sure to use
+       correct codeset.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (UuidCreate): Remove.
+       (UuidCreateSequential): Remove.
+       * passwd.cc (internal_getpwsid): Avoid a strict-aliasing compiler
+       error with gcc 4.5.1.
+       * fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Ditto.
+       * ntdll.h (NtAllocateUuids): Declare.
+       * syscalls.cc (gethostid): Use NtAllocateUuids function rather than
+       UuidCreateSequential/UuidCreate to get rid of rpcrt4 dependency.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.din (pthread_spin_destroy): Export.
+       (pthread_spin_init): Export.
+       (pthread_spin_lock): Export.
+       (pthread_spin_trylock): Export.
+       (pthread_spin_unlock): Export.
+       * posix.sgml (std-susv4): Add pthread_spin_destroy, pthread_spin_init,
+       pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock.
+       (std-notimpl): Remove pthread_spin_[...].
+       * pthread.cc (pthread_spin_init): New function.
+       * thread.cc (pthread_spinlock::is_good_object): New function.
+       (pthread_mutex::pthread_mutex): Rearrange initializers to accommodate
+       protected data in pthread_mutex.
+       (pthread_spinlock::pthread_spinlock): New constructor.
+       (pthread_spinlock::lock): New method.
+       (pthread_spinlock::unlock): New method.
+       (pthread_spinlock::init): New method.
+       (pthread_spin_lock): New function.
+       (pthread_spin_trylock): New function.
+       (pthread_spin_unlock): New function.
+       (pthread_spin_destroy): New function.
+       * thread.h (PTHREAD_SPINLOCK_MAGIC): Define.
+       (class pthread_mutex): Change access level of members shared with
+       derived classes to protected.
+       (pthread_mutex::set_shared): New protected method.
+       (class pthread_spinlock): New class, derived class of pthread_mutex.
+       * include/pthread.h (pthread_spin_destroy): Declare.
+       (pthread_spin_init): Declare.
+       (pthread_spin_lock): Declare.
+       (pthread_spin_trylock): Declare.
+       (pthread_spin_unlock): Declare.
+       * include/cygwin/types.h (pthread_spinlock_t): New typedef.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (SIO_BASE_HANDLE): Define.
+       (fdsock): If we got an LSP handle, try to create a copy of the base
+       handle instead.  Change comment to explain.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/cygwin/version.h: Bump CYGWIN_VERSION_DLL_MINOR to 10.
+
+2011-03-29  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (winmm): Remove time functions.  Don't treat
+       unloadable wave functions as fatal.
+       * hires.h (hires_ms::timeGetTime_ns): New private method.
+       (hires_ms::dmsecs): Call timeGetTime_ns here.
+       * ntdll.h (struct _KSYSTEM_TIME): Define.
+       (KUSER_SHARED_DATA): Redefine to allow access to InterruptTime.
+       (SharedUserData): Define here.
+       (NtQueryTimerResolution): Declare.
+       (NtSetTimerResolution): Declare.
+       * path.cc (SharedUserData): Move to ntdll.h.
+       * times.cc (hires_ms::timeGetTime_ns): New private method.
+       Use throughout instead of timeGetTime.  Document entire functionality
+       of timeGetTime in case we need it.
+       (hires_ms::resolution): Try a call to NtQueryTimerResolution
+       to fetch current period.  Fall back to heuristic if that fails.
+       Cast to DWORD in assignments to minperiod.
+       (clock_setres): Align period to possible values per a call to
+       NtQueryTimerResolution.  Explain why.  Replace calls to timeBeginPeriod
+       and timeEndPeriod with underlying call to NtSetTimerResolution.  Use
+       status code from NtSetTimerResolution to compute errno.
+       Convert period to ULONGLONG and store 100ns value to simplify code.
+
+2011-03-29  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+           Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/sys/xattr.h: New file.
+
+2011-03-28  Jon TURNEY  <jon.turney@dronecode.org.uk>
+
+       * thread.cc (semaphore::init, destroy, close): Standards conformance
+       fix.  On a failure, return -1 and set errno.
+       * thread.h (semaphore::terminate): Save errno since semaphore::close()
+       may now modify it.
+
+2011-03-27  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (strchrnul): Export.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+       * posix.sgml (std-gnu): Add strchrnul.
+
+2011-03-27  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll::init): Accommodate ill-behaved dlls who don't fill
+       out p.envptr.
+
+2011-03-25  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mmap.cc (mmap64): Add a cheat to let a certain autoconf test succeed
+       on 64 bit systems.  Explain why.
+
+2011-03-23  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * wincap.cc (wincap_2003): Set use_dont_resolve_hack to true.
+
+2011-03-23  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * autoload.cc (dll_load): Change error message to make it clear if a
+       newer DLL is being run.
+
+2011-03-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fenv.cc (_feinitialise): Don't use SSE instructions on systems not
+       supporting them.
+       * wincap.h (wincaps::supports_sse): New element.
+       * wincap.cc: Implement above element throughout.
+
+2011-03-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.sc: Raise default cygheap size to 2 Megs.
+
+2011-03-18  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.h (DEFAULT_PIPEBUFSIZE): Reset to 64K.
+
+2011-03-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mmap.cc (mmap_record::alloc_fh): Initialize name strings in fdev to
+       empty strings or suffer a SEGV.  Drop second parameter in call to
+       build_fh_dev.
+
+2011-03-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mmap.cc (class mmap_record): Pack 4 byte-aligned.  Convert member dev
+       to plain int.
+       (mmap_record::alloc_fh): Create temporary device from dev and use in
+       call to build_fh_dev.
+
+2011-03-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * mmap.cc (mmap_record::page_map): Define as variable array rather than
+       as pointer.
+       (mmap_record::alloc_page_map): Remove.
+       (mmap_record::free_page_map): Remove.
+       (mmap_record::init_page_map): New method.
+       (mmap_record::add_record): Take mmap_record parameter by reference
+       rather than by value.
+       (mmap_record::map_pages): Fix comment.
+       (mmap_list::add_record): Allocate space for mmap_record including the
+       page_map in a single ccalloc call.  Call init_page_map afterwards.
+       (mmap_list::del_record): Remove call to mmap_record::free_page_map.
+
+2011-03-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * crt0.c (mainCRTStartup): Move call to _feinitialise from here...
+       * dcrt0.cc (_dll_crt0): ...to here.
+
+2011-03-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * winver.rc: Fix copyright dates.
+
+2011-03-14  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Only use
+       file id as inode number if it masters the isgood_inode check.
+
+2011-03-13  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Remove
+       special treatment for ERROR_NO_SYSTEM_RESOURCES.  Cancel I/O and reset
+       the overlapped handle on error.
+       (fhandler_base_overlapped::write_overlapped): Limit writes to
+       max_atomic_write bytes in blocking case.  Incorporate code from
+       now-defunct write_overlapped_fallback.  Fix serious oversight where ptr
+       was not advanced as buffer was written.
+       (fhandler_base_overlapped::write_overlapped_fallback): Eliminate.
+       * fhandler.h (fhandler_base_overlapped::write_overlapped_fallback):
+       Ditto for declaration.
+       (DEFAULT_PIPEBUFSIZE): Lower size to slightly less than documented
+       worst-case atomic write size.
+       (fhandler_overlapped::wait_return): Remove unused element.
+
+2011-03-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Handle
+       overlapped_fallback error condition like other error conditions.  Set
+       res carefully and specifically for each condition rather than resorting
+       to a default.
+       (fhandler_base_overlapped::write_overlapped): Preserve errno in
+       overlapped_fallback condition.  Correct write_overlapped_fallback to
+       avoid inappropriate looping.
+       (fhandler_base_overlapped::write_overlapped_fallback): Add some more
+       comments.
+
+2011-03-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::write_overlapp): Oops!
+       Accommodate change in arguments to wait_overlapped.
+
+2011-03-09  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * errno.cc (errmap): Change mapping of NO_SYSTEM_RESOURCES to EFBIG.
+       * fhandler.cc (MAX_OVERLAPPED_WRITE_LEN): New constant.
+       (MIN_OVERLAPPED_WRITE_LEN): Ditto.
+       (fhandler_base_overlapped::close): Accommodate change in arguments to
+       wait_overlapped.
+       (fhandler_base_overlapped::setup_overlapped): Add __stdcall and regparm
+       modifiers.
+       (fhandler_base_overlapped::destroy_overlapped): Ditto.
+       (fhandler_base_overlapped::has_ongoing_io): Ditto.
+       (fhandler_base_overlapped::wait_overlapped): Modify to return an enum
+       returning various states.  Accept nonblocking parameter.
+       (fhandler_base_overlapped::read_overlapped): Add __stdcall and regparm
+       modifiers.  Rework to attempt to be smarter about reacting to states
+       returned by wait_overlapped.
+       (fhandler_base_overlapped::write_overlapped): Ditto.  Add fallback
+       option for when wait_overlapped detects that smaller chunks must be
+       written.
+       (fhandler_base_overlapped::write_overlapped_fallback): Ditto.
+       * fhandler.h (DEFAULT_PIPEBUFSIZE): Move definition here from pipe.cc.
+       (fhandler_base::has_ongoing_io): Define with __stdcall and regparm
+       modifiers.
+       (fhandler_base_overlapped::wait_return): New enum.
+       (fhandler_base_overlapped::max_atomic_write): New variable.
+       (fhandler_base_overlapped:: wait_overlapped): Accommodate changes
+       mentioned above to arguments and modifiers.
+       (fhandler_base_overlapped::setup_overlapped): Ditto for modifiers.
+       (fhandler_base_overlapped::read_overlapped): Ditto.
+       (fhandler_base_overlapped::write_overlapped): Ditto.
+       (fhandler_base_overlapped::destroy_overlapped): Ditto.
+       (fhandler_base_overlapped::has_ongoing_io): Ditto.
+       (fhandler_base_overlapped::fhandler_base_overlapped): Zero
+       max_atomic_write.
+       * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Set max_atomic_write
+       to the size of the DEFAULT_PIPEBUFSIZE.
+       (fhandler_fifo::wait): Accommodate change in arguments to
+       wait_overlapped.
+       * pipe.cc (fhandler_pipe::fhandler_pipe): Set max_atomic_write to the
+       size of the DEFAULT_PIPEBUFSIZE.
+       (fhandler_pipe::create_selectable): Allow minimum size of DEFAULT_PIPEBUFSIZE.
+       (DEFAULT_PIPEBUFSIZE): Delete here, move to fhandler.h.
+
+2011-03-08  Corinna Vinschen  <corinna@vinschen.de>
+
+       * security.cc: Fix copyright dates.
+
+2011-03-08  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::open): When creating a file on a
+       filesystem supporting ACLs, create the file with WRITE_DAC access.
+       Explain why.
+       * fhandler_disk_file.cc (fhandler_disk_file::mkdir): Ditto for
+       directories.
+       * fhandler_socket.cc (fhandler_socket::bind): Ditto for sockets.
+       * path.cc (symlink_worker): Ditto for symlinks.
+       * security.cc (get_file_sd): Always call GetSecurityInfo for directories
+       on XP and Server 2003.  Improve comment to explain why.
+       (set_file_attribute): Explicitely cast mode_t value to bool in call to
+       get_file_sd.
+       * wincap.h (wincaps::use_get_sec_info_on_dirs): New element.
+       * wincap.cc: Implement above element throughout.
+
+2011-03-04  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_procsys.cc (fhandler_procsys::exists): Rewrite.
+       (fhandler_procsys::fill_filebuf): Fill buffer with valid string even if
+       reading the symlink fails.
+
+2011-03-03  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix_ipc.cc (ipc_cond_timedwait): If ipc_mutex_unlock fails, return
+       actual error number.
+       (_mq_send): Break loop if ipc_cond_timedwait returns with error.
+       (_mq_receive): Ditto.
+
+2011-03-03  Corinna Vinschen  <corinna@vinschen.de>
+
+       * errno.cc (__xpg_strerror_r): Add accidentally missing condition.
+
+2011-03-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_procsys.cc (fhandler_procsys::open): Call worker exists
+       method, rather than wrapper.
+
+2011-03-01  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * autoload.cc (dll_load): Avoid in_forkee test since this apparently
+       fails even when not forked.
+
+2011-03-01  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * include/cygwin/version.h: Bump CYGWIN_VERSION_DLL_MINOR to 9.
+
+2011-02-28  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * autoload.cc (dll_load): Only perform DONT_RESOLVE_DLL_REFERENCES hack
+       on systems which need it.
+       * wincap.cc (use_dont_resolve_hack): Set as appropriate.
+       * wincap.h (use_dont_resolve_hack): Define.
+
+2011-02-28  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * autoload.cc (dll_load): Make inline.  Clarify logic.
+
+2011-02-27  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (dll_load): Only call LoadLibraryExW with
+       DONT_RESOLVE_DLL_REFERENCES if a normal LoadLibrary call failed with
+       ERROR_INVALID_ADDRESS.
+       (LsaRegisterLogonProcess): Align comment to previous change.
+
+2011-02-26  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * autoload.cc: Use LoadDLLfuncEx3 for all winmm functions.  Accommodate
+       changes to LoadDLLprime.
+       (LoadDLLprime): Take an extra argument indicating whether this dll
+       needs special handling on fork.  Place this information in the "handle"
+       location.
+       (LoadDLLfuncEx3): Eliminate "func" handling.  Pass new
+       no_resolve_on_fork argument to LoadDLLprime.
+       (dll_load): New function.
+       (std_dll_init): Accommodate changes to dll_info::handle.  Use dll_load
+       to load DLL in both cases where it is used.
+
+2011-02-26  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc: Make autoloaded ntdll function non-optional.  Ditto for
+       secur32 functions, except for LsaRegisterLogonProcess.  Change return
+       value to ERROR_PROC_NOT_FOUND.  Explain why.
+       * sec_auth.cc (lsaauth): Handle ERROR_PROC_NOT_FOUND from call to
+       LsaRegisterLogonProcess when generating the errno value.
+
+2011-02-22  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dcrt0.cc: Fix copyright dates.
+       * winsup.h: Ditto.
+       * syscalls.cc (_read): Move EXPORT_ALIAS to its rightful place.
+
+2011-02-21  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygwin.din: Mark __assert* and _abort as NOSIGFE.
+
+2011-02-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket (fhandler_socket::readv): Call recv_internal directly,
+       rather than recvmsg.
+       (fhandler_socket::writev): Call send_internal directly, rather than
+       sendmsg.
+       * net.cc (cygwin_recv): Call fhandler_socket::recvfrom directly, rather
+       than cygwin_recvfrom.
+       (cygwin_send): Call fhandler_socket::sendto directly, rather than
+       cygwin_sendto.
+
+2011-02-20  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::close): Finish any pending I/O
+       before closing.
+       (fhandler_base_overlapped::wait_overlapped): Defensively zero bytes
+       read.  Add more info to debugging output.
+
+2011-02-18  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * dcrt0.cc (dll_crt0_1): Add a CYGHEAP_DEBUG conditional for debugging
+       which allocates a lot of space at startup.
+
+2011-02-18  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.sc: Set alignment of .cygheap section to 64K.
+
+2011-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * spawn.cc (spawn_guts): Only set PID_NOTCYGWIN in _P_OVERLAY mode.
+       Drop flag if creating new process failed.
+
+2011-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * Throughout fix copyright dates.
+
+2011-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * devices.in: Throughout use slashes instead of backslashes in the
+       native path of devices not backed by native NT devices.
+       * devices.cc: Regenerate.
+       * globals.cc (ro_u_pmem): Use correct case.
+       (ro_u_globalroot): New R/O unicode string.
+       * path.cc (path_conv::check): Fix incorrect handling of /proc/sys
+       block devices if they are just visited due to a component check.
+       (symlink_info::posixify): Fix typo in comment.
+       (cygwin_conv_path): Use ro_u_globalroot instead of string constant.
+       (fast_cwd_version): New shared variable to store FAST_CWD version
+       used on the system.
+       (find_fast_cwd_pointer): Rename from find_fast_cwd_pointers.  Don't
+       set global fast_cwd_ptr pointer here.  Return pointer value instead.
+       (find_fast_cwd): New function to set fast_cwd_ptr and fast_cwd_version.
+       (cwdstuff::override_win32_cwd): Call find_fast_cwd from here.
+       Check for fast_cwd_version to differ between old and new FAST_CWD
+       structure.  Check old_cwd for NULL to avoid SEGV.  Don't set CWD if
+       we have neitehr a valid fast_cwd_ptr, nor a valid CWD handle in the
+       process parameter block.
+       (cwdstuff::set): Create Win32 path taking /proc/sys paths into account.
+       * spawn.cc (spawn_guts): Recode creating runpath.  Also take /proc/sys
+       paths into account.  Drop special CWD handling when starting non-Cygwin
+       processes.
+
+2011-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_procsys.cc (fhandler_procsys::opendir): Avoid SEGV if
+       opening object directory fails.
+       * fhandler_virtual.cc (fhandler_virtual::opendir): Don't leak memory.
+
+2011-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Don't
+       append slash if there is one already.
+
+2011-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       Revert change from 2010-08-31:
+       * path.cc (normalize_posix_path): Drop support for //./ and //?/
+       prefixes.
+       (path_conv::check): Ditto.
+
+2011-02-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Use POSIX
+       path to check for symlink.
+
+2011-02-14  Corinna Vinschen  <corinna@vinschen.de>
+
+       * config/i386/profile.h: Sync with Mingw.
+
+2011-02-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (struct _FAST_CWD): Redefine to new layout used since patch
+       for KB 2393802.  Adjust comments throughout.
+       (struct _FAST_CWD_OLD): Rename former definition.
+       (cwdstuff::override_win32_cwd): Check if the OS is using the old or the
+       new FAST_CWD structure layout and handle accordingly.
+
+2011-02-11  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * mkstatic: Make sure that we are not cd'ed to temporary directory on
+       exit to avoid bogus warnings on directory cleanup.
+       * speclib: Ditto.
+       * mkimport: Ditto.
+
+2011-02-11  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygwin.sc: Eliminate __cygheap_mid.
+       * cygheap.cc: Ditto.
+
+2011-02-11  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygheap.cc (_cygheap_mid): Drop unneeded section attribute.
+       (cygheap_init): Just zero cygheap structure.
+       * cygwin.sc: Keep 16 byte alignment but drop all other alignments
+       related to cygheap.  Eliminate unused __cygheap_end1.
+
+2011-02-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.sc: Raise default cygheap size to 1 Meg.  Set alignment to
+       standard 64K.
+
+2011-02-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/endian.h: Move definitions of __BIG_ENDIAN, __LITTLE_ENDIAN,
+       and __BYTE_ORDER into ...
+       * include/bits/endian.h: New file.
+       * include/arpa/nameser_compat.h: Include endian.h rather than defining
+       BYTE_ORDER here.
+       * include/asm/byteorder.h: Include bits/endian.h.  Drop definition of
+       __LITTLE_ENDIAN.
+       * include/netinet/ip.h: Include bits/endian.h.  Drop definitions of
+       BIG_ENDIAN, LITTLE_ENDIAN, and BYTE_ORDER.  Use underscored variants
+       of aforementioned constants.
+       * include/netinet/tcp.h: Ditto.
+       * include/sys/param.h: Drop disabled definitions of BIG_ENDIAN,
+       LITTLE_ENDIAN, and BYTE_ORDER.
+
+       * include/netinet/ip.h: Reformat.  Define setsockopt IP_TOS options
+       matching recent RFCs.  Tweak comments.
+
+2011-02-10  Eric Blake  <eblake@redhat.com>
+
+       * errno.cc (includes): Avoid compilation failure if <string.h>
+       settles on wrong strerror_r signature.
+
+       * errno.cc (__xpg_strerror_r): New function.
+       (strerror_r): Update to copy newlib's fixes.
+       (strerror): Set errno on failure.
+       (_sys_errlist): Cause EINVAL failure for reserved values.
+       * cygwin.din: Export new function.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Combine
+       this into minor 236.
+
+2011-02-09  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (pthread_yield): Export as alias to sched_yield.
+       * include/pthread.h (pthread_yield): Declare.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+       * posix.sgml (std-deprec): Add pthread_yield.
+
+2011-02-09  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * cygheap.cc: Add some __stdcall decoration where appropriate.
+       * lib/cygwin_crt0.c: __attribute -> __attribute__.
+
+2011-02-09  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * hookapi.cc (hook_or_detect_cygwin): Prevent i from being considered
+       uninitialized by gcc.
+
+2011-02-09  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * exception.h: Remove DEBUG_EXCEPTION left over debugging ifdef.
+
+2011-02-08  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * dll_init.cc: Fix typo in comment.
+
+2011-02-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * configure.in: Remove AC_ALLOCA test and test for __builtin_memset.
+       * configure: Regenerate.
+
+2011-02-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_console.cc (fhandler_console::write_normal): Remove
+       erroneous premature return after collecting truncated multibyte
+       sequence in trunc_buf.  Rather fall through to printing routine.
+       Fix return value to take trunc_buf content into account.  Improve
+       comments.
+
+2011-02-05  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * autoload.cc (wsock_init): Properly define WSAStartup function pointer
+       to avoid stack damage.
+
+2011-02-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * libc/bsdlib.cc: Include err.h.
+
+2011-02-02  Eric Blake  <eblake@redhat.com>
+
+       * include/err.h: Fix loss of semicolons in previous patch.
+
+2011-02-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/err.h (err): Add noreturn attribute.
+       (errx): Ditto.
+       (verr): Ditto.
+       (verrx): Ditto.
+
+2011-02-02  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (conv_path_list): Remove enclosing quotes and trailing
+       backslashes from Win32 environment path lists.
+
+2011-02-01  Christian Franke  <franke@computer.org>
+
+       * fhandler.cc (fhandler_base::fsync): Ignore ERROR_INVALID_FUNCTION
+       error from FlushFileBuffers().
+
+2011-01-31  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (utmp_data): Fix potential buffer overflow.
+
+2011-01-31  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (address_in_use): Improve comment readability.
+
+2011-01-30  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (address_in_use): Disable.  Add comment.
+       (fhandler_socket::bind): Change comment to explain setting the
+       SO_EXCLUSIVEADDRUSE socket option.  Remove code which checks for
+       address in use.
+       * net.cc (cygwin_setsockopt): Never set SO_REUSEADDR option.  Improve
+       comment to compensate for the deleted comment in fhandler_socket::bind.
+       * wincap.cc: Throughout, drop has_enhanced_socket_security from wincaps.
+       * wincap.h (struct wincaps): Drop has_enhanced_socket_security flags
+       and method.
+
+2011-01-28 Peter Foley <jpfoley2@verizon.net>
+
+       * configure.in: Define LIBSERVER regardless of cross_host.
+       * configure: Regenerate.
+
+2011-01-28  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_socket.cc (fhandler_socket::wait_for_events): Call
+       pthread_testcancel in case of timeout to enable pthread_cancel
+       on waiting thread.
+
+2011-01-27  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/features.h (__STDC_ISO_10646__): Move to newlib's
+       sys/features.h.
+
+2011-01-26  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_base::fstat_by_nfs_ea): Fix
+       computation of st_blocks.
+       (fhandler_base::fstat_helper): Fix formatting.
+
+2011-01-24  Corinna Vinschen  <corinna@vinschen.de>
+
+       * include/features.h (__STDC_ISO_10646__): Define.  Add comment.
+
+2011-01-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * syscalls.cc (rename): Fix permission problem with symlinks on NFS.
+       Rework how NtOpenFile gets called to make it more readable.  Change
+       comment.
+
+2011-01-20  Corinna Vinschen  <corinna@vinschen.de>
+
+       * exec.cc: Include pinfo.h.
+       * winf.h: Move definitions of _P_PATH_TYPE_EXEC and _P_MODE from here...
+       * pinfo.h: ...to here.
+       (_P_PATH_TYPE_EXEC): Redefine to be bigger than _P_SYSTEM.
+       (_P_MODE): Redefine so as not to mask out _P_SYSTEM.
+       * spawn.cc (spawnlp): Add _P_PATH_TYPE_EXEC flag in call to spawnve.
+       (spawnlpe): Ditto.
+       (spawnvp): Ditto.
+
+2011-01-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * spawn.cc (av::fixup): Reenable #! handling for all exec functions.
+       Return ENOEXEC in !p_type_exec case only for unrecognized files.
+       Fix comment formatting.
+
+2011-01-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * exec.cc (execlp): Add missing _P_PATH_TYPE_EXEC flag in call to
+       spawnve.
+
+2011-01-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * exec.cc: Rearrange functions in alphabetical order.
+       (_execve): Drop temporary define and drop export alias.
+       (execl): Call spawnve.
+       (execle): New function.
+       (execlp): New function.
+       (execv): Call spawnve.
+       (execve): Drop converting NULL envp to emtpy envp.
+       (execvp): Call spawnve.
+       (execvpe): Drop converting NULL envp to emtpy envp.  Call spawnve.
+       (fexecve): Call spawnve.
+       * spawn.cc (spawnve): Convert NULL envp to emtpy envp.  Remove outdated
+       comment.
+       (spawnlp): Call spawnve.
+       (spawnlpe): Ditto.
+       (spawnvp): Ditto.
+       (spawnvpe): Fix formatting.
+
+2011-01-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * exec.cc (strccpy): Move function from here...
+       * strfuncs.cc (strccpy): ...to here.
+       * string.h (strccpy): Declare.
+       * winsup.h (strccpy): Drop declaration.
+
+2011-01-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * errno.cc (errmap): Add error codes for invalid binaries.
+       * exec.cc (execvp): Call spawnve with _P_PATH_TYPE_EXEC flag
+       from here.
+       (execvpe): Ditto.
+       * spawn.cc (spawn_guts): Filter _P_PATH_TYPE_EXEC from mode and
+       store in p_type_exec.  Call av::fixup with addtional p_type_exec
+       argument.
+       (spawnve): Check for filtered mode.
+       (spawnvpe): Add _P_PATH_TYPE_EXEC flag when calling spawnve.
+       (av::fixup): Accept additional bool parameter p_type_exec.  Only check
+       for script if p_type_exec is true.
+       * winf.h (_P_PATH_TYPE_EXEC): Define.
+       (_P_MODE): Define.
+       (av::fixup): Declare with additional bool parameter.
+
+2011-01-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_proc.cc (format_proc_partitions): Fix compiler warning.
+
+2011-01-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (path_conv::check): Don't follow reparse point symlinks if
+       PC_SYM_NOFOLLOW_REP flag is set.
+       (cygwin_conv_path): Set PC_SYM_NOFOLLOW_REP flag when converting from
+       POSIX to Win32.
+       * path.h (enum pathconv_arg): Define PC_SYM_NOFOLLOW_REP flag.
+
+2011-01-17  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_proc.cc (proc_tab_cmp): Fix typo in comment.
+       (fhandler_proc::fill_filebuf): Handle return value of 0 from format
+       function as error.
+       (format_proc_stat): Set errno when returning 0 size.
+       (format_proc_partitions): Rewrite method to fetch partition info.
+
+2011-01-13  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler_disk_file.cc (fhandler_base::fstat_helper): Always set
+       st_size of directories to 0.  Explain why.
+
+2011-01-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * posix.sgml: Add madvise to BSD list.
+
+2011-01-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.din (madvise): Export posix_madvise as madvise.
+       * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR.
+       * include/sys/mman.h: Define madvise constants, keep Linux-specific
+       constants undefined.
+       (madvise): Declare.
+
+2011-01-12  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (struct part_t): New type.
+       (class fhandler_dev_floppy): Convert partitions to part_t pointer.
+       Add lock_partition method.
+       * fhandler_floppy.cc (fhandler_dev_floppy::lock_partition): New method
+       to implement ondemand partition locking.
+       (fhandler_dev_floppy::write_file): Call lock_partition from here if
+       writing failed due to a potential write restriction on a disk
+       partition.
+       (fhandler_dev_floppy::open): Don't lock partitions here.
+       (fhandler_dev_floppy::close): Keep track of partition handle reference
+       count.  Close handles and remove partitions pointer ony if count is 0.
+       (fhandler_dev_floppy::dup): Just copy partitions pointer and increment
+       reference count.
+
+2011-01-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.h (MAX_PARTITIONS): New definition.
+       (class fhandler_dev_floppy): Add partitions array member.  Add close
+       method.
+       * fhandler_floppy.cc (fhandler_dev_floppy::fhandler_dev_floppy): Zero
+       out partitions array.
+       (fhandler_dev_floppy::open): Fix "entire disk" condition for call to
+       DeviceIoControl (FSCTL_ALLOW_EXTENDED_DASD_IO).
+       When opening disks for writing, call DeviceIoControl (FSCTL_LOCK_VOLUME)
+       on all affected disk partitions starting with Vista.
+       (fhandler_dev_floppy::close): New method.
+       (fhandler_dev_floppy::dup): Duplicate handles in partitions, if any.
+       * wincap.h (wincaps::has_restricted_raw_disk_access): New element.
+       * wincap.cc: Implement above element throughout.
+
+2011-01-11  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * termios.cc (cfgetospeed, cfgetispeed): Constify argument per POSIX.
+       * include/sys/termios.h (cfgetospeed, cfgetispeed): Declare functions.
+       Move macros after declarations and make conditional on !__cplusplus.
+
+2011-01-11  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygtls.cc (_cygtls::init_thread): Call _REENT_INIT_PTR.  Drop setting
+       current locale and calling srand48.
+
+2011-01-02  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * ChangeLog-2010: Create from ChangeLog.
+       * ChangeLog: Start fresh.