Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2013-01-02 22:34:06 +0400
committerChristopher Faylor <me@cgf.cx>2013-01-02 22:34:06 +0400
commitca77b848e7bb26b514659c875247516b9ebcff84 (patch)
treefa1df218dc69537ca4a30cb588bed6ab207f48ee /winsup
parent74f8546d6ecfd867fbd7eaed16dc2156af013402 (diff)
* cygtls.h (_cygtls::signal_exit): Delete from class.
* exception.h (cygwin_exception): New class. (cygwin_exception::dumpstack): Declare new function. (cygwin_exception::context): Ditto. (cygwin_exception::dump_exception): Ditto. * exceptions.cc (cygwin_exception::dump_exception): Move into cygwin_exception class. Accommodate new variable names. (cygwin_exception::dumpstack): Ditto stackdump -> dumpstack. (exception::handle): Move andreas processing earlier. Defer signal processing decisions to the signal thread where they belong. Pass exception information to sig_send via new siginfo_t si_cyg field. (ctrl_c_handler): Wait for SIGHUP signal to be processed since it could cause a process exit and we don't want races with thread exit lock. (signal_exit): Move back here from sigproc.cc. Modify arguments and remove from sigpacket class. Decide when to dump core based on signal type. (sigpacket::process): Handle exiting signals in context of threads rather than in the signal thread. Signal debugger on non-Windows signals. Remove setup_signal_exit call. * sigproc.cc (no_signals_available): Remove argument. (signal_exit_code): Delete. (close_my_readsig): Ditto. (_cygtls::signal_exit): Move to exceptions.cc. (sigproc_terminate): Don't attempt to terminate signal thread. (setup_signal_exit): Delete. (exit_thread): Use new si_cyg entry in siginfo_t. (sig_send): Just use empty initializer for si. Accommodate change in no_signals_available argument. (wait_sig): Remove attempt to "go asynchronous" on process exit. Delete __SIGEXIT handling. Don't ever exit. * sigproc.h: Remove __SIGEXIT from signal enum. Renumber. * include/cygwin/signal.h (siginfo_t): Add si_cyg entry.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog3099
-rw-r--r--winsup/cygwin/ChangeLog-20123065
-rw-r--r--winsup/cygwin/cygtls.h3
-rw-r--r--winsup/cygwin/exception.h19
-rw-r--r--winsup/cygwin/exceptions.cc212
-rw-r--r--winsup/cygwin/include/cygwin/signal.h11
-rw-r--r--winsup/cygwin/sigproc.cc128
-rw-r--r--winsup/cygwin/sigproc.h5
8 files changed, 3262 insertions, 3280 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 562c48c41..5c527fd7a 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3065 +1,34 @@
-2012-12-31 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * sigproc.cc (wait_sig): Remove spurious extern.
-
-2012-12-31 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (dtable::dup3): Fix bounds checking for valid newfd.
- * syscalls.cc (dup2): Ditto.
- * winsup.h (events_terminate): Delete obsolete function declaration.
-
-2012-12-28 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000019.
- * dcrt0.cc (do_exit): Just set exit_state to ES_EVENTS_TERMINATE and
- nuke call to events_terminate which just set a superfluous flag.
- * sigproc.cc (signal_exit_code): New variable.
- (setup_signal_exit): Define new function.
- (_cygtls::signal_exit): Remove accommodations for closing the signal
- pipe handle.
- (exit_thread): Just sleep if we're exiting.
- (wait_sig): If signal_exit_code is set, just handle bookkeeping signals
- and exit ReadFile loop if there is nothing more to process. Call
- signal_exit at end if signal_exit_code is non-zero.
- * sigproc.h (setup_signal_exit): Declare new function.
- * exceptions.cc (sigpacket::process): Use setup_signal_exit to control
- exiting due to a signal.
- (exception::handle): Ditto. Query exit_state rather than defunct
- exit_already to determine if we are exiting.
- * globals.cc (ES_SIGNAL_EXIT): New enum.
- * sync.h (lock_process::release): New function for explicitly unlocking
- muto.
- (lock_process::~lock_process): Use release method.
-
-2012-12-27 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fork.cc (child_info::prefork): Fix error message formatting.
-
-2012-12-22 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.h (select_stuff): Remove variable names from parameter
- declarations.
- (select_info): Ditto.
- (select_record::dump_select_record): Declare new debugging-only
- function.
- (select_info): Zero all fields.
- (select_pipe_info): Ditto.
- (select_socket_info): Ditto.
- (select_serial_info): Ditto.
- (select_mailslot_info): Ditto.
- * select.cc (select_record::dump_select_record): Define new
- debugging-only function.
- (select_stuff::test_and_set): Call dump_select_record when debugging.
-
- * thread.cc (pthread_mutex::unlock): Revert setting of tid to 0 since,
- in this context, it is a number, not a pointer.
- (pthread_spinlock::unlock): Ditto.
-
-2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * sigproc.cc (exit_thread): undef ExitThread or suffer recursion.
- Attempt to lock process prior to calling sig_send.
-
-2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- Revert the reversion and go with implementation described in
- cgf-000017, with some modifications.
- * init.cc (dll_entry): Revert previous change.
- * miscfuncs.cc: Include sigproc.h for exit_thread declaration.
- * winsup.h (ExitThread): Define as 'exit_thread' to ensure no
- accidental use.
- * sigproc.cc (exit_thread): New function.
- (wait_sig): Handle __SIGTHREADEXIT case. Don't just block rather than
- returning from this function.
- * sigproc.h (__SIGTHREADEXIT): New enum.
- (exit_thread): Declare.
- * sync.cc (muto::release): Accept a tls command-line argument.
- * sync.h (muto::release): Accept a tls command-line parameter. Default
- to &_my_tls.
-
- * cygerrno.h (__set_errno): Define as extern so that no function code
- is ever emitted.
- * cygserver_ipc.h (cygserver_ipc.h): Ditto.
- * miscfuncs.h (transform_chars): Ditto.
- * path.h (has_attribute): Ditto.
- * security.h (privilege_luid): Ditto.
- * winsup.h (flush_file_buffers): Ditto.
-
-2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000018.
- * init.cc (dll_entry): Grab process lock before exiting to ensure that
- thread doesn't exit before parent if parent is exiting.
- * _cygtls.cc (_cygtls::call2): Revert previous 2012-12-21 change.
- * miscfuncs.cc (thread_wrapper): Ditto.
- * thread.cc (pthread::exit): Ditto.
- * sigproc.cc (exit_thread): Ditto.
- (wait_sig): Ditto.
- * sync.cc (muto::release): Ditto.
- * sync.h (muto::release): Ditto.
- * sigproc.h (__SIGTHREADEXIT): Delete enum.
- (exit_thread): Delete declaration.
-
-2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000017.
- * _cygtls.cc (_cygtls::call2): Use new exit_thread function in place of
- ExitThread.
- * miscfuncs.cc (thread_wrapper): Ditto.
- * thread.cc (pthread::exit): Ditto.
- (pthread_mutex::unlock): Set tid to NULL rather than 0.
- (pthread_spinlock::unlock): Ditto.
- * pinfo.cc (commune_process): Actually call lock_process constructor.
- * sigproc.cc (exit_thread): New function.
- (wait_sig): Handle __SIGTHREADEXIT case. Don't just block rather than
- returning from this function.
- * sigproc.h (__SIGTHREADEXIT): New enum.
- (exit_thread): Declare.
- * sync.cc (muto::release): Accept a tls command-line argument.
- * sync.h (muto::release): Accept a tls command-line parameter. Default
- to &_my_tls.
-
-2012-12-20 Corinna Vinschen <corinna@vinschen.de>
-
- * dcrt0.cc (build_argv): Allow quoted filenames in @ expression.
-
-2012-12-19 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.h (select_stuff::select_stuff): Make default constructor
- always zero everything while constructor with int arg just zeroes next.
- * select.cc (select_stuff::test_and_set): Revert to using default
- constructor.
-
-2012-12-19 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.cc (select_stuff::wait): Add windows error number to error message.
-
-2012-12-18 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.cc (select_stuff::test_and_set): Remove workaround and use
- proper constructor.
-
-2012-12-18 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.cc (select_stuff::test_and_set): Work around problem of new()
- not returning zeroed memory.
-
-2012-12-14 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.cc (fhandler_base::write): Don't attempt to sparsify
- an already sparse file. Drop check for FILE_SUPPORTS_SPARSE_FILES
- flag. Explicitely set FILE_ATTRIBUTE_SPARSE_FILE attribute in
- cached attributes.
- (fhandler_base::lseek): Only set did_lseek if sparseness is supported.
- * fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Don't attempt
- to sparsify an already sparse file. Explicitely set
- FILE_ATTRIBUTE_SPARSE_FILE attribute in cached attributes.
- * mount.cc (oopt): Add "sparse" flag.
- (fillout_mntent): Ditto.
- * path.h (enum path_types): Add PATH_SPARSE.
- (path_conv::support_sparse): New method.
- (path_conv::fs_flags): Constify.
- (path_conv::fs_name_len): Ditto.
- include/sys/mount.h: Replace unused MOUNT_MIXED flag with MOUNT_SPARSE.
-
-2012-12-10 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * sigproc.h (sig_send): Accept tid as argument #3. Default to NULL.
- * sigproc.cc (sig_send): Ditto. Pass tid to other sig_send.
- (sigpending): Send current thread as arg #3.
-
-2012-12-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (sigpacket::process): Reorganize to avoid use of tls
- before initialization.
-
- * fhandler_fifo.cc (fhandler_fifo::arm): Avoid improper printing of
- integer as a string in debug output.
-
-2012-12-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * sigproc.h (sigpacket): Remove parameter names from declarations.
- (sigpacket::sigtls): Rename from 'tls'.
- * exceptions.cc (sigpacket::process): Define local tls variable and
- assign that to sigtls if appropriate. Clarify debugging output.
- * sigproc.cc (sig_send): Accommodate tls -> sigtls rename.
- (pending_signals::add): Ditto.
- (wait_sig): Ditto.
-
-2012-12-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygtls.h (_cygtls::get_signal_arrived): Add parameter to make
- lock/unlock conditional.
- * exceptions.cc (_cygtls::interrupt_setup): Don't get a lock when
- setting signal_arrived since we already have one.
- * gendef: Add some comments to make it easier to find functions.
-
-2012-12-06 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * include/cygwin/wait.h (WAIT_ANY): Define.
- (WAIT_MYPGRP): Define.
-
-2012-12-05 Corinna Vinschen <corinna@vinschen.de>
-
- * child_info.h (class child_info_spawn): Drop unused member lock.
- (CURR_CHILD_INFO_MAGIC): Update.
- * sigproc.cc (child_info_spawn::child_info_spawn): Drop setting lock.
-
-2012-12-04 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygtls.h (_cygtls::will_wait_for_signal): Rename from
- 'signal_waiting' to something more expressive. Reflect rename
- throughout.
- (_cygtls::get_signal_arrived): Rename from create_signal_arrived. Move
- lock here.
- (_cygtls::set_signal_arrived): Use get_signal_arrived.
- * exceptions.cc (_cygtls::interrupt_setup): Use get_signal_arrived.
- * tlsoffsets.h: Regenerate.
-
-2012-11-30 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * spawn.cc (child_info_spawn::worker): Make detection of '/c' case
- insensitive when looking for cmd.exe command line.
-
-2012-11-26 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * configure.ac: Rename from configure.in.
- * configure.in: Delete.
- * configure: Regenerate.
-
-2012-11-26 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_registry.cc: Drop Mingw.org considerations.
- * fhandler_serial.cc: Ditto.
- * fhandler_socket.cc: Ditto.
- * fhandler_tape.cc: Ditto.
- * fhandler_tty.cc: Ditto.
- * net.cc: Ditto.
- * ntdll.h: Ditto.
- * sched.cc: Ditto.
- * sec_helper.cc: Ditto.
-
-2012-11-23 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * configure.in: Remove unneeded ALLOC substitution.
- * configure: Regenerate.
- * aclocal.m4: Ditto.
-
-2012-11-23 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * configure.in: Add previously-missed AC_NO_EXECUTABLES.
- * configure: Regenerate.
- * aclocal.m4: Ditto.
-
-2012-11-23 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * Makefile.in: Use explicit path to mkdir.
-
-2012-11-22 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.cc (select): Don't return -1 when we've timed out after
- looping.
-
-2012-11-22 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * Makefile.in: Revamp for new configury.
- (datarootdir): Add variable setting.
- (winver_stamp): Accommodate changes to mkvers.sh setting.
- (libc.a): Fix race when libm.a might not have been built yet.
- * configure.in: Revamp for new configury.
- * aclocal.m4: Regenerate.
- * configure: Ditto.
- * autogen.sh: New script.
- * mkvers.sh: Find include directives via CFLAGS and friends rather than
- assuming that w32api lives nearby.
-
-2012-11-21 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * termios.cc (cfsetspeed): New function.
- * cygwin.din (cfsetspeed): Export.
- * posix.sgml (std-bsd): Add cfsetspeed.
- * include/sys/termios.h (cfsetspeed): Declare.
- * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
-
-2012-11-16 Corinna Vinschen <corinna@vinschen.de>
-
- * include/mntent.h: Only include paths.h when building for Cygwin.
- Add comment to explain why.
-
-2012-11-11 Corinna Vinschen <corinna@vinschen.de>
-
- * winbase.h: Semi-reinstantiate to workaround lack inline assembler
- implementation of InterlockedCompareExchange for i686 in Mingw64
- headers.
- * pinfo.cc (pinfo::init): Remove unused variable mapaddr.
-
-2012-11-08 Corinna Vinschen <corinna@vinschen.de>
-
- * sigproc.cc (proc_subproc): Delete unused variable child.
-
-2012-11-08 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_termios.cc (fhandler_termios::line_edit): Don't do special
- character handling when stopped by CTRL-S.
- * fhandler_tty.cc (bytes_available): Add arguments to debug_only_printf
- call.
- * sigproc.cc (proc_subproc): Simplify some if logic.
-
-2012-11-04 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * include/sys/termios.h (CBRK): Define as alias of CEOL.
- (CREPRINT): Define as alias of CRPRNT.
- (CDISCARD): Define as alias of CFLUSH.
- (TTYDEF_*): Define.
-
-2012-10-31 Corinna Vinschen <corinna@vinschen.de>
-
- * include/sys/param.h: Include stddef.h to define NULL.
-
-2012-10-31 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_disk_file.cc (fhandler_disk_file::rewinddir): Fix using
- wrong value in condition.
-
-2012-10-30 Corinna Vinschen <corinna@vinschen.de>
-
- * include/sys/cygwin.h: Add missing defines for CW_ALLOC_DRIVE_MAP,
- CW_MAP_DRIVE_MAP and CW_FREE_DRIVE_MAP.
-
-2012-10-27 Kai Tietz <ktietz@redhat.com>
-
- * dcrt0.cc (quoted): Renamed strechr to strchrnul.
- * environ.cc (environ_init): Likewise.
- * sec_acl.cc (aclfromtext32): Likewise.
- * sec_auth.cc (extract_nt_dom_user): Likewise.
- * uinfo.cc (pwdgrp::next_str): Likewise.
- * string.h (strechr): Likewise.
-
-2012-10-26 Kai Tietz <ktietz@redhat.com>
-
- * string.h (strechr): Replace assembler by
- C code.
- (ascii_strcasematch): Likewise.
- (ascii_strncasematch): Likwise.
-
-2012-10-26 Corinna Vinschen <corinna@vinschen.de>
-
- * dir.cc (closedir): Fix syscall_printf.
-
-2012-10-26 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/signal.h (sigset_t): Define here.
-
-2012-10-24 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * Makefile.in (DLL_IMPORTS): Use system import libraries for
- kernel32 and ntdll instead of from in-tree w32api.
- (cygwin0.dll): Remove rule dependency on DLL_IMPORTS, as they
- are no longer built in-tree.
-
-2012-10-23 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.h (List_insert): Cast first parameter in
- InterlockedCompareExchangePointer call to avoid compiler warnings.
- (List_remove): Ditto.
-
-2012-10-22 Corinna Vinschen <corinna@vinschen.de>
-
- * winbase.h: Remove.
-
-2012-10-22 Corinna Vinschen <corinna@vinschen.de>
-
- * child_info.h (CURR_CHILD_INFO_MAGIC): Update.
-
-2012-10-21 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 18.
-
-2012-10-16 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Remove lloffset.
- Use offset directly. Add shortcut for lseek(fd, 0, SEEK_CUR) case.
- (fhandler_dev_floppy::ioctl): Drop wrong RDSETBLK case.
- * fhandler_raw.cc (fhandler_dev_raw::ioctl): Revamp RDSETBLK code.
-
-2012-10-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_tty.cc (fhandler_pty_slave::write): Fix potential exit from
- loop with write mutex held. Delete redundant mutex release. Clear tty
- error once we've grabbed it.
-
-2012-10-15 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_raw.cc (fhandler_dev_raw::fhandler_dev_raw): Drop gratuitous
- initializing from previous patch.
-
-2012-10-15 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_floppy.cc (fhandler_dev_floppy::open): Fix comment.
-
-2012-10-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_tty.cc (fhandler_pty_slave::write): DWORD -> BOOL.
-
-2012-10-13 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (class fhandler_dev_raw): Add members devbufalloc and
- devbufalign.
- (class fhandler_dev_floppy): Remove member bytes_per_sector;
- * fhandler_floppy.cc (bytes_per_sector): Define as devbufalign.
- (fhandler_dev_floppy::open): Set devbufalign to a multiple of the
- sector size and handle devbuf allocation and alignment in !O_DIRECT
- case here. Change comment accordingly.
- Call FSCTL_ALLOW_EXTENDED_DASD_IO for partitions as well.
- (fhandler_dev_floppy::raw_write): Fix comment. Rewrite and fix
- writing behaviour when application uses read and lseek.
- (fhandler_dev_floppy::lseek): Use rounddown macro. Call
- SetFilePointerEx rather than the old SetFilePointer.
- (fhandler_dev_floppy::ioctl): Reformat switch. Call
- IOCTL_DISK_UPDATE_PROPERTIES rather than IOCTL_DISK_UPDATE_DRIVE_SIZE
- in BLKRRPART case. Support BLKIOMIN, BLKIOOPT, BLKPBSZGET and
- BLKALIGNOFF.
- * fhandler_raw.cc (fhandler_dev_raw::fhandler_dev_raw): Initialize
- all devbuf-related members.
- (fhandler_dev_raw::~fhandler_dev_raw): Delete devbufalloc rather than
- devbuf.
- (fhandler_dev_raw::open): Drop allocating devbuf.
- (fhandler_dev_raw::dup): Allocate devbufalloc and set devbuf to support
- new sector-aligned devbuf handling.
- (fhandler_dev_raw::fixup_after_exec): Ditto.
- * fhandler_tape.cc (fhandler_dev_tape::open): Ditto, set devbufalign
- to 1.
- * include/cygwin/fs.h (BLKIOMIN): Define.
- (BLKIOOPT): Define.
- (BLKALIGNOFF): Define.
- (BLKPBSZGET): Define.
-
-2012-10-12 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_raw.cc (fhandler_dev_raw::open): Allow O_EXCL flag, as on
- Linux.
-
-2012-10-11 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_termios.cc (fhandler_termios::line_edit): Don't manipulate
- output_mutex on CTRL-S/CTRL-Q to avoid a deadlock.
- * fhandler_tty.cc (fhandler_pty_slave::write): Loop when output_stopped
- is detected before acquiring output_mutex. Acquire output_mutex in the
- loop for each write.
- * tty.h: Remove some obsolete defines.
- (tty_min::output_stopped): Make 'bool'.
-
-2012-10-10 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/in.h (struct in_addr): Guard with s_addr to avoid
- potential collision with Win32 headers.
-
-2012-10-09 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * child_info.h (child_info_spawn::has_execed): Remove unneeded
- synchronization.
-
-2012-10-09 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc: Remove unneeded assert.h.
-
-2012-09-17 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (pinfo::init): Detect potential race where short block has
- been retrieved but PID_EXECED flag is not set.
-
-2012-09-13 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygthread.cc (cygthread::stub): Remove old, unnecessary, FIXMEd code.
- * spawn.cc (child_info_spawn::worker): Avoid calling close_all_files()
- twice.
-
-2012-09-02 Jin-woo Ye <jojelino@gmail.com>
- Corinna Vinschen <corinna@vinschen.de>
-
- * pseudo-reloc.cc (auto_protect_for): New function.
- (__write_memory): Call auto_protect_for to handle page protection.
- (do_pseudo_reloc): Call auto_protect_for to restore old page protection.
-
-2012-08-26 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (pinfo::init): Remove assertion.
-
-2012-08-23 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (_pinfo::exists): Don't consider a process with no state to
- exist.
-
-2012-08-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * net.cc (get_adapters_addresses): Drop FIXME part of comment.
-
-2012-08-17 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000016.
- * cygtls.h (_cygtls::push): Inline.
- (_cygtls::interrupt_now): Change signal number argument to siginfo_t
- argument.
- (_cygtls::interrupt_setup): Ditto.
- (_cygtls::set_siginfo): Delete declaration.
- (_cygtls::reset_signal_arrived): Don't reset signal_arrived signal.
- Just reset flag.
- * exceptions.cc (_cygtls::interrupt_now): Reflect argument changes.
- Pass si to interrupt_setup.
- (_cygtls::interrupt_setup): Reflect argument changes. Fill out tls
- infodata here using passed-in si. Use si.si_signo instead of sig.
- (sigpacket::setup_handler): Move this function into sigpacket class.
- Use si field from the class as appropriate.
- (sigpacket::process): Don't call tls->set_siginfo here since
- setup_handler could fail. Eliminate now-unneeded sig argument.
- * sigproc.h (sigpacket::setup_handler): Move setup_handler to this
- class.
-
-2012-08-17 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (sig_handle_tty_stop): Clear tls sig field.
- (sigpacket::process): When continuing, set tls->sig before arming
- signal_arrived.
-
-2012-08-17 Thomas Wolff <towo@towo.net>
-
- * fhandler_clipboard.cc (fhandler_dev_clipboard::read): Use
- read-ahead buffer for reading Windows clipboard if caller's
- buffer is too small for complete characters.
- * include/limits.h: Remove outdated TODO comment.
-
-2012-08-16 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygtls.cc (_cygtls::operator HANDLE): Reverse '?' test stupidity.
-
-2012-08-16 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygheap.cc (init_cygheap::find_tls): Don't consider unitialized
- threads.
- * cygtls.cc (_cygtls::operator HANDLE): Return NULL when tid is not
- set.
- * exceptions.cc (setup_handler): Don't try to suspend a thread if it
- has no handle.
-
-2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- Rename cancelable_wait -> cygwait throughout.
- * DevNotes: Add entry cgf-000015.
- * cygwait.h (cygwait): Don't allow an optional PLARGE_INTEGER
- argument.
-
-2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygtls.h (_cygtls::create_signal_arrived): New function.
- (_cygtls::set_signal_arrived): Lock creation of signal_arrived.
- * cygwait.cc (cancelable_wait): Ignore signal_arrived event if _my_tls
- 'sig' element does not exist.
- * exceptions.cc (_cygtls::interrupt_setup): Create signal_arrived if
- recipient thread has not created it.
-
-2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * gendef: Tighten up whitespace detection.
-
-2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * gendef: Delete unneeded read from <IN> which ate an arbitrary line
- from cygwin.din.
-
-2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (sigdelayed): Move declaration to sigproc.h.
- * sigproc.h (sigdelayed): Make symbol globally available.
- * gendef (sigdelayed): Specifically zero incyg and stacklock.
- * signal.cc (sigwaitinfo): Lock _my_tls and try harder to clean up
- signal information.
-
-2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (_pinfo::exists): Don't consider an execed process to exist.
-
-2012-08-14 Corinna Vinschen <corinna@vinschen.de>
-
- * gmon.c (_mcleanup): Fix scope bug when using gmon_out array.
-
-2012-08-14 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * errno.cc (errmap): Keep sorted.
-
-2012-08-14 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (semaphore::_fixup_after_fork): Fix Win32 error output in
- api_fatal call.
-
-2012-08-14 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * errno.cc (errmap): Keep sorted.
-
-2012-08-14 Corinna Vinschen <corinna@vinschen.de>
-
- * mount.cc (fs_names): Add missing ReFS entry. Change comment.
- * mount.h (enum fs_info_type): Add comment.
-
-2012-08-13 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * errno.cc (errmap): Map ERROR_SXS_CANT_GEN_ACTCTX to ELIBBAD.
-
-2012-08-09 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000014.
- * cygheap.cc (tls_sentry): Move here, rename from 'sentry' in cygtls.cc
- (tls_sentry::lock): Ditto.
- (nthreads): Move from cygtls.cc
- (THREADLIST_CHUNK): Ditto.
- (cygheap_init): Call init_tls_list().
- (init_cygheap::init_tls_list): Define new function.
- (init_cygheap::add_tls): Ditto.
- (init_cygheap::remove_tls): Ditto.
- (init_cygheap::find_tls): Ditto. Semi-resurrect from
- _cygtls::find_tls.
- * cygheap.h (init_cygheap::init_tls_list): Declare new function.
- (init_cygheap::add_tls): Ditto.
- (init_cygheap::remove_tls): Ditto.
- (init_cygheap::find_tls): Ditto.
- * cygtls.cc (sentry): Delete.
- (sentry::lock): Ditto.
- (nthreads): Ditto.
- (THREADLIST_CHUNK): Ditto.
- (_cygtls::init): Delete definition.
- (_cygtls::init_thread): Call cygheap->add_tls() to add thread to global
- list.
- (_cygtls::remove): cygheap->remove_tls() to remove thread from global
- list.
- * cygtls.h (_cygtls::init): Delete declaration.
- * dcrt0.cc (dll_crt0_0): Delete call to _cygtls::init().
- * exceptions.cc (sigpacket::process): When no thread is specified, try
- to find one via cygheap->find_tls.
-
-2012-08-08 Corinna Vinschen <corinna@vinschen.de>
-
- * include/sys/wait.h (_wait): Define when building newlib.
-
-2012-08-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * signal.cc (sigwaitinfo): Change cw_sig to the correct cw_sig_eintr.
-
-2012-08-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (sigdelayed): Simplify declaration.
- (_cygtls::call_signal_handler): Fix test for when to pop signal stack.
- Only do it exactly when what is on the stack is a no-op.
-
-2012-08-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * spawn.cc (child_info_spawn::worker): Put back a minor variation of
- Corinna's test for detecting a background process when starting a
- non-cygwin process.
-
-2012-08-01 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/socket.h (MSG_BCAST): Define.
- (MSG_MCAST): Define.
-
-2012-08-01 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (fhandler_socket::recv_internal): Add bool parameter.
- Add regparm attribute.
- * fhandler_socket.cc (fhandler_socket::read): Call recv_internal with
- second parameter set to false.
- (fhandler_socket::readv): Ditto.
- (fhandler_socket::recvfrom): Ditto.
- (fhandler_socket::recv_internal): Convert use_recvmsg from local
- variable to parameter. Use as request for using WSARecvMsg. Only
- fail if WSARecvMsg can't be loaded and wsamsg->Control.len > 0,
- otherwise use WSARecv{From}. Restrict dwFlags to MSG_PEEK when using
- WSARecvMsg.
- (fhandler_socket::recvmsg): Prefer using WSARecvMsg. Change priority
- of tests for not using WSARecvMsg. Call recv_internal with second
- parameter set accordingly.
-
-2012-08-01 Corinna Vinschen <corinna@vinschen.de>
-
- * Makefile.in: Semi-revert patch from 2012-07-01, assuming the previous
- patch to etc::dir_changed fixes the underlying issue.
-
-2012-07-31 Corinna Vinschen <corinna@vinschen.de>
-
- * path.cc (etc::dir_changed): Revert muto changes since function is
- called under lock condition anyway.
-
-2012-07-31 Corinna Vinschen <corinna@vinschen.de>
-
- * path.cc (etc::dir_changed): Change `io' to a static NO_COPY
- variable. Explain why. Add a muto to guard overwriting the changed_h
- handle by multiple concurrent threads.
- * path.h (class etc): Drop unused changed_h member.
-
-2012-07-30 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * winlean.h: Define constant which will be needed eventually. Remove
- hack in favor of another hack.
- * lib/crt0.h: Use "winlean.h".
-
-2012-07-30 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * winlean.h: Add temporary define.
- * winsup.h: Remove ancient debugging defines.
-
-2012-07-29 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygwait.cc (cancelable_wait): Add some debugging-only output.
- * exceptions.cc (sig_handle_tty_stop): Make sure that incyg is cleared
- when exiting if we have no parent process. Only wait for signal_arrived.
- (sigpacket::process): Make continue_now a bool. Delay sending
- signal_arrived until the end. Make code more defensive to avoid
- calling signal handler when stopped. Only set signal_arrived when
- stopped.
- * sigproc.cc (sig_hold): Rename from sigCONT. Make static.
- (sig_send): Accommodate sigCONT -> sig_hold rename.
- (wait_sig): Ditto.
- * sigproc.h (sigCONT): Delete declaration.
-
- * fhandler_console.cc (fhandler_console::write): Use new '%0c' facility
- to print characters. Change to paranoid to avoid excessive strace
- output.
- * fhandler_tty.cc (fhandler_pty_master::accept_input): Make frequent
- strace printf "paranoid" to help cut down on strace output size.
-
- * signal.cc (sigsuspend): Add standard syscall strace output.
- (sigpause): Ditto.
- (pause): Ditto.
-
-2012-07-29 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygtls.h (_cygtls::reset_signal_arrived): New function.
- (set_signal_arrived::~set_signal_arrived): Use reset_signal_arrived to
- reset state.
- * exceptions.cc (sig_handle_tty_stop): Use WAIT_SIGNALED rather than
- assume we know the return from cancelable_wait.
- (_cygtls::interrupt_setup): Modify to allow calling when executing in
- non-cygwin code via sigdelayed. Always reset signal_arrived.
- * gendef: Throughout use start_offset rather than the completely wrong
- sizeof__cygtls.
- (_sigdelayed): Rewrite to avoid duplication when calling the signal
- handler.
- (sigreturn): Delete.
- * gentls_offsets: Define start_offset rather than sizeof__cygtls.
- * tlsoffsets.h: Regenerate.
-
-2012-07-29 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_termios.cc (fhandler_termios::line_edit): Use special case
- '%0c' handling to print non-printable characters using hex notation.
- * smallprint.cc (__small_vsprintf): Semi-reimplement printing of
- non-printable characters in hex but only when padding is specified.
-
- * dcrt0.cc (dll_crt0_0): Remove tty_list initialization.
- * shared.cc (memory_init): Initialize tty_list here.
-
- * path.cc (path_conv::check): Remove unneeded parentheses from if
- check.
-
-2012-07-28 Corinna Vinschen <corinna@vinschen.de>
-
- * include/inttypes.h: Add x86_64 target considerations throughout.
- Define macros in C++ according to C99 requirements.
- * include/stdint.h: Ditto.
-
-2012-07-25 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * signal.cc (clock_nanosleep): Force return on signal rather than
- letting cancelable_wait loop on signal.
-
-2012-07-25 Corinna Vinschen <corinna@vinschen.de>
-
- * syscalls.cc (enum bin_status): Add dir_not_empty.
- (try_to_bin): Call NtQueryInformationFile(FileInternalInformation)
- with exact buffer size. Explain why.
- Ditto for NtSetInformationFile(FileRenameInformation).
- Handle race-condition which might lead to renaming a non-empty
- directory.
- (unlink_nt): Rearrange and partially rephrase comments related to the
- STATUS_SHARING_VIOLATION case. Fix condition under which a dir is
- tested for being non-empty. Handle dir_not_empty return code from
- try_to_bin. Gracefully handle disappearing directory in rm -r
- workaround. Fix typo in comment.
-
-2012-07-24 Corinna Vinschen <corinna@vinschen.de>
-
- * wincap.cc (wincapc::init): Drop memset call since it can result in
- a race condition. Drop all considerations for pre-Windows 2000 systems
- since Cygwin won't start on them anyway.
-
-2012-07-23 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- Change "set_thread_waiting" to "set_signal_arrived" throughout.
-
-2012-07-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000013.
- * cygserver_ipc.h (ipc_set_proc_info): Use _cygtls::ipc_set_proc_info
- to set per-thread signal arrived value.
- * cygthread.cc (cygthread::detach): Use per-thread signal_arrived via
- set_thread_waiting.
- * fork.cc (_cygtls::fixup_after_fork): Clear signal_arrived.
- (_cygtls::remove): Close any signal_arrived handle when thread exists.
- (_cygtls::find_tls): Remove unneeded function.
- * cygtls.h: Update copyright.
- (class _cygtls): Reorganize to help avoid rebuilding newlib when
- structure changes.
- (_cygtls::event): Delete.
- (_cygtls::threadkill): Ditto.
- (_cygtls::signal_waiting): Declare new bool.
- (_cygtls::find_tls): Delete declaration.
- (_cygtls::set_threadkill): Ditto.
- (_cygtls::reset_threadkill): Ditto.
- (_cygtls::set_signal_arrived): Declare new function.
- (class set_thread_waiting): Declare new class.
- * cygwait.cc (cw_nowait_storage): Define.
- (cygwait): Set per-thread signal_arrived via set_thread_waiting. Don't
- special-case _main_tls.
- * cygwait.h (cw_nowait): Define.
- (cw_infinite): Ditto.
- (cygwait): Redefine pathological wait-only case.
- * dcrt0.cc (dll_crt0_0): Remove call to now-defunct events_init().
- (dll_crt0_1): Remove call to now-defunct create_signal_arrived().
- * exceptions.cc: Reflect set_signal_mask() argument reordering
- throughout. Remove signal mask synchronization throughout.
- (events_init): Delete definition.
- (mask_sync): Delete now-unneeded mask synchronization.
- (set_signal_mask): Reverse order of arguments to "standard" to, from
- layout. Rename "newmask" argument to "setmask". Remove debugging.
- (sig_handle_tty_stop): Use cancelable_wait rather than WFMO.
- (_cygtls::interrupt_setup): Don't treat "threadkill" events specially.
- Conditionally set signal_arrived depending on whether the thread has
- created it or not.
- (sigpacket::process): Reorganize to reflect thread-specific sending of
- signals which is more in line with the way it was actually supposed to
- work.
- * fhandler_socket.cc (get_inet_addr): Use cancelable_wait rather than
- IsEventSignalled to avoid potential race.
- (fhandler_socket::wait_for_events): Set signal_arrived event using
- set_thread_waiting().
- (fhandler_socket::close): Use cygwait for the case of just
- waiting 10 ms for a signal.
- * fhandler_tape.cc (fhandler_dev_tape::_lock): Use cancelable_wait
- rather than WFMO. Redo switch/case tests accordingly.
- * fhandler_termios.cc (fhandler_termios::bg_check): Use cygwait for
- case of just waiting 0 ms for a potential signal.
- * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Use
- cancelable_wait rather than WFSO.
- * fhandler_windows.cc (fhandler_windows::read): Set per-thread
- signal_arrived via set_thread_waiting().
- * flock.cc (lf_setlock): Ditto.
- * select.cc (pselect): Ditto. Set per-thread signal_arrived using
- set_thread_waiting().
- * gendef: Don't special case handling of _cygtls::sig for threads.
- * gentls_offsets: Use #pragma once in tlsoffsets.h.
- * ntdll.h: Use #pragma once.
- * poll.cc: Reflect set_signal_mask() argument reordering.
- * posix_ipc.cc (ipc_mutex_lock): Use cancelable_wait rather than WFMO.
- (ipc_cond_timedwait): Set perl-thread signal arrived using
- set_thread_waiting().
- * security.h: Use #pragma once.
- * signal.cc (abort): Reflect set_signal_mask() argument reordering.
- (clock_nanosleep): Ditto. Change call to cancelable_wait to properly
- specify handling of cancel and interrupt.
- (sigwaitinfo): Remove handling of per-thread event in favor of
- per-thread signal_arrived. Use cancelable_wait rather than WFSO.
- * sigproc.cc (signal_arrived): Delete definition.
- (create_signal_arrived): Ditto.
- * sigproc.h (signal_arrived): Delete declaration.
- (set_signal_mask): Avoid defining as a "C" function. Don't
- conditionally declare.
- (create_signal_arrived): Delete declaration.
- * syscalls.cc (rename): Use cygwait() rather than WFSO.
- * thread.h (fast_mutex::lock): Use cw_infinite rather than LARGE_NULL.
- * wait.cc (wait4): Ditto.
- * thread.cc (pthread_mutex::lock): Ditto.
- (pthread::join): Ditto.
- (semaphore::_wait): Ditto.
- (pthread_kill): Remove set_threadkill() accommodation.
- * tlsoffsets.h: Regenerate.
-
-2012-07-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 17.
-
-2012-07-19 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * mount.cc (getmntent_r): Remove unused but set variable.
-
-2012-07-18 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * cygwin.din (getmntent_r): Export.
- * mount.cc (getmntent_r): New function.
- * posix.sgml (std-gnu): Add getmntent_r.
- * include/mntent.h (getmntent_r): Declare.
- * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
-
-2012-07-12 Corinna Vinschen <corinna@vinschen.de>
-
- * winlean.h: Make sure certain Windows macros are undefined again.
- Add comment to explain why.
- * winsup.h: Include winlean.h from C sources as well.
- * libc/minires-os-if.c: Drop including ntdef.h.
-
-2012-07-12 Corinna Vinschen <corinna@vinschen.de>
-
- * pseudo-reloc.cc: Drop including wchar.h and ntdef.h.
- (__report_error): Define module as WCHAR.
- * advapi.cc: Drop including wchar.h.
- * kernel32.cc: Ditto.
-
-2012-07-11 Corinna Vinschen <corinna@vinschen.de>
-
- * cygtls.cc (well_known_dlls): Add ole32.dll and wbemprox.dll.
-
-2012-07-09 Corinna Vinschen <corinna@vinschen.de>
-
- * cygwin.sc (.rdata): Revert patch from 2012-07-06.
-
-2012-07-09 Corinna Vinschen <corinna@vinschen.de>
-
- * passwd.cc (getpass): Make check for closed stream more reliable.
- Check if setting tty attributes worked and only revert to old state
- if so.
-
-2012-07-09 Corinna Vinschen <corinna@vinschen.de>
-
- * Makefile.in, configure.in, mkvers.sh: Revert accidental checkin from
- 2012-07-06.
-
-2012-07-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * Makefile.in: Change mingw_lib (temporarily?) back to w32api_lib.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * winlean.h (__STRALIGN_H_): Drop definition.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_procnet.cc: Fix copyright.
- * syslog.cc: Ditto.
- * libc/minires-os-if.c: Ditto.
- * libc/minires.h: Ditto.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- In terms of network related functionality, rely on Winsock definitions
- as much as possible:
- * dtable.cc: Drop including sys/socket.h.
- * fhandler_procnet.cc: Change includes accordingly.
- * fhandler_socket.cc: Ditto.
- (fhandler_socket::listen): Avoid gcc error message initializing sin6.
- (LPFN_WSARECVMSG): Only define when building against w32api headers.
- * net.cc: Change includes accordingly. Define USE_SYS_TYPES_FD_SET
- and __WSA_ERR_MACROS_DEFINED. Define _INC_NETIOAPI temporarily and
- explain why.
- (struct _IP_ADAPTER_UNICAST_ADDRESS_LH): Only define when building
- against w32api headers.
- (struct _IP_ADAPTER_ADDRESSES_LH): Ditto.
- (SIO_GET_INTERFACE_LIST): Ditto.
- (ws_freeaddrinfo): Rename from freeaddrinfo so as not to collide with
- Winsock declaration. Change througout.
- (ws_getaddrinfo): Ditto.
- (ws_getnameinfo): Ditto.
- * select.cc: Include netdb.h after defining USE_SYS_TYPES_FD_SET.
- * syslog.cc: Drop including netinet/in.h. Define USE_SYS_TYPES_FD_SET
- and include ws2tcpip.h.
- * include/netdb.h (struct addrinfo): Don't define when building Cygwin.
- * include/cygwin/if.h: Don't declare if_xxx functions when building
- Cygwin.
- * include/cygwin/in.h: Disable most definitions when building Cygwin.
- * include/cygwin/socket.h: Disable sockaddr and sockaddr_storage
- definitions when building Cygwin. Same for MCAST_INCLUDE/MCAST_EXCLUDE.
- * libc/inet_addr.c: Don't define __INSIDE_CYGWIN__ nor
- __INSIDE_CYGWIN_NET__.
- * libc/inet_network.c: Ditto.
- * libc/minires.h: Drop redundant inclusion of netdb.h. Define
- __INSIDE_CYGWIN_NET__ only before including netdb.h and resolver
- headers.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * winbase.h: Throughout use LONG rather than long type to prepare for
- 64 bit.
- (InterlockedCompareExchangePointer): Define.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_registry.cc (RegOpenUserClassesRoot): Only define when
- building against w32api headers.
- (RegOpenCurrentUser): Ditto.
- * fhandler_tty.cc (GetNamedPipeClientProcessId): Ditto.
- * ntdll.h (enum _PROCESSINFOCLASS): Add ProcessImageFileName.
- (RtlInitAnsiString): Declare.
- (RtlUnicodeStringToAnsiSize): Declare.
- * sched.cc (GetForegroundWindow): Ditto.
- * sec_helper.cc (SECURITY_NT_NON_UNIQUE): Define as
- SECURITY_NT_NON_UNIQUE_RID when building against w32api headers.
- (cygsid::get_sid): Use SECURITY_NT_NON_UNIQUE rather than
- SECURITY_NT_NON_UNIQUE_RID.
- (__sec_user): Use PISECURITY_DESCRIPTOR rather than PSECURITY_DESCRIPTOR
- to allow valid pointer arithmetic.
- (_recycler_sd): Ditto.
- (_everyone_sd): Ditto.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * advapi32.cc (_ADVAPI32_): Drop definition.
- * kernel32.cc (_KERNEL32_): Ditto.
- * winlean.h: Add definitions required to use Mingw64 headers.
- (FILE_SHARE_VALID_FLAGS): Drop definition.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * winsup.h (_WIN32_WINNT): Define. Explain why.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * libc/rcmd.cc: Don't undef __INSIDE_CYGWIN_NET__.
-
-2012-07-06 Corinna Vinschen <corinna@vinschen.de>
-
- * cygwin.sc (.rdata): Include all sections starting with .rdata.
- (.debug_pubtypes): Make sure section is loaded at the end like all other
- debug sections.
-
-2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dcrt0.cc (build_argv): Guard against NULL pointer dereference found
- by Clang.
-
-2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (setup_handler): Remove unneeded assignment found by
- Clang.
-
-2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * hookapi.cc (find_first_notloaded_dll): Remove unused assignment of
- importRVASize found by Clang.
-
-2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_tty.cc (fhandler_pty_slave::read): Remove duplicate
- assignment to bytes_in_pipe found by Clang.
-
-2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (exception::handle): Use error_code in klog, as
- intended. Found by Clang.
-
-2012-07-02 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (class fhandler_dev_clipboard): Remove member eof.
- * fhandler_clipboard.cc: Throughout remove handling of eof member.
- (fhandler_dev_clipboard::write): Handle EOF condition immediately,
- rather than pushing it erroneously to the next read call. Rearrange
- code. Fix bug in CF_UNICODETEXT case which potentially dropped single
- bytes at the end of the buffer. Add comment.
- * strfuncs.cc (sys_cp_wcstombs): Allow returning non-NUL-terminated
- buffer if dst != NULL and len == (size_t) -1. Extend leading comment
- to explain what's returned in more detail.
-
-2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_virtual.cc (fhandler_virtual::opendir): Eliminate duplicate
- assignment found by Clang.
-
-2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_registry.cc (fhandler_registry::open): Handle missing EROFS
- error condition pointed to by Clang.
-
-2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (_pinfo::commune_request): Eliminate unneeded assignment
- found by Clang.
-
-2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * external.cc (fillout_pinfo): Return NULL rather than 0.
- (exit_process): Guard against NULL pointer dereference found by Clang.
-
-2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * mount.cc (mount_info::conv_to_win32_path): Eliminate unneeded
- assignment found by Clang.
-
-2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * path.cc (symlink_info::check): Remove unneeded/unused variable found
- by Clang.
-
-2012-07-02 Corinna Vinschen <corinna@vinschen.de>
-
- * dll_init.cc (dll_list::alloc): Take long UNC paths into account.
-
-2012-07-01 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * Makefile.in: Add some more optimization flags for cygwait, malloc and
- path. Explain why -fomit-frame-pointer doesn't work right for passwd.o
- and path.o. Add -static to link command line for cygwin0.dll.
-
- * fhandler_disk_file.cc (fhandler_disk_file::facl): Reorganize slightly
- to silence compiler warning when compiling with -fstack-check.
- * net.cc (inet_ntop6): Initialize structure members to silence compiler
- warning when compiling with -fstack-check.
-
- * pseudo-reloc.cc (_pei386_runtime_relocator): Make this a C function.
- Detect NULL u.
- * winsup.h (_pei386_runtime_relocator): Declare this as extern "C".
- * lib/_cygwin_crt0_common.cc (_pei386_runtime_relocator): Call with
- NULL argument.
-
- * signal.cc (sigaction_worker): Eliminate last argument. Let callers
- report their own strace info. Regparmize.
- (sigaction): Reflect sigaction_worker changes.
- (siginterrupt): Ditto.
-
- * exceptions.cc: Update copyright.
-
-2012-07-01 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * path.cc: Perform some whitespace fixups throughout.
-
-2012-06-28 Corinna Vinschen <corinna@vinschen.de>
-
- * kernel32.cc (_KERNEL32_): Define. Explain why.
- (CreateFileMappingW): Drop undocumented flProtect flags.
-
-2012-06-28 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_serial.cc: Fix includes for IOCTL codes to support Mingw64.
- * fhandler_tape.cc: Ditto.
- * flock.cc (allow_others_to_sync): Use PISECURITY_DESCRIPTOR since
- PSECURITY_DESCRIPTOR is supposed to be the opaque type.
- * ntdll.h: Remove CreateDisposition flags again, now that they are
- defined in Mingw64's ntdef.h. Ditto for Create/Open flags.
-
-2012-06-28 Corinna Vinschen <corinna@vinschen.de>
-
- * exceptions.cc (RtlUnwind): Align declaration with MSDN.
- * ntdll.h: Define CreateDisposition Flags. Add comments.
- * winlean.h: Define FILE_SHARE_VALID_FLAGS if using Mingw64 headers.
-
-2012-06-27 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygwait.h (cancelable_wait): Make extern to avoid always including.
- * select.cc (allocfd_set): Try to make a little more efficient.
- (cygwin_select): Break into two functions to avoid what seems to be a
- strange compiler problem with alloca and sel constructor.
- (select): New function. Always honor return from call_signal_handler.
- (select_stuff::wait): Always honor return from call_signal_handler.
- * select.h (select_stuff::select_stuff): Use NULL to initialize
- pointers rather than 0.
-
-2012-06-27 Corinna Vinschen <corinna@vinschen.de>
-
- * exceptions.cc (exception::handle): Cast exception code to NTSTATUS
- for comparison.
- * ntdll.h: Drop defining NT status codes in favor of including
- ntstatus.h.
-
-2012-06-27 Corinna Vinschen <corinna@vinschen.de>
-
- * miscfuncs.cc (WritePipeOverlapped): Define second parameter LPCVOID,
- rather than PCVOID.
- * miscfuncs.h (WritePipeOverlapped): Ditto.
-
-2012-06-27 Corinna Vinschen <corinna@vinschen.de>
-
- * advapi32.cc (_ADVAPI32_): Define. Explain why.
- (ImpersonateNamedPipeClient): Add missing WINAPI.
- * ntdll.h (STATUS_INVALID_PARAMETER): Only define if it isn't already.
- (STATUS_DLL_NOT_FOUND): Ditto.
- (STATUS_ENTRYPOINT_NOT_FOUND): Ditto.
- (enum _EVENT_TYPE): Guard against redefinition since it's already
- defined in Mingw64's ntdef.h.
- (enum _TIMER_TYPE): Ditto.
- (enum _SECTION_INHERIT): Define if using Mingw64 headers since it's
- missing in Mingw64's ntdef.h.
- * winlean.h (__STRALIGN_H_): Define before including windows.h.
-
-2012-06-26 Corinna Vinschen <corinna@vinschen.de>
-
- * winsup.h (GetLastError): Drop redundant definition.
-
-2012-06-25 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygwait.cc (cancelable_wait): Make sure that timer is cancelled
- before cancelling thread.
-
-2012-06-25 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygwait.h (cancelable_wait): Need to force time to negative to
- indicate relative time.
-
-2012-06-21 Corinna Vinschen <corinna@vinschen.de>
-
- * path.cc (realpath): Fix comment.
-
-2012-06-21 Corinna Vinschen <corinna@vinschen.de>
-
- * path.cc (realpath): Call mount_info::conv_to_posix_path rather than
- mount_info::cygdrive_posix_path to convert DOS paths to POSIX paths.
- Add comment to explain why that's necessary at all.
-
-2012-06-18 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygwait.h (LARGE_NULL): Define.
- (cancelable_wait): Define variant which accepts DWORD time argument.
- (cygwait): Use cancelable_wait with DWORD argument.
- (cygwait): Use cancelable_wait with DWORD argument and cw_sig_eintr for
- timeout-only case.
- * exceptions.cc (handle_sigsuspend): Use LARGE_NULL as second argument
- to distinguish between cancelable_wait variants.
- * thread.cc (pthread_mutex::lock): Ditto.
- (pthread::join): Ditto.
- (semaphore::_timedwait): Ditto.
- * thread.h (fast_mutex::lock): Ditto.
- * wait.cc (wait4): Ditto.
-
-2012-06-18 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygwait.cc (cancelable_wait): Mimic old cygwait behavior more closely
- wrt handling of call_signal_handler.
- * cygwait.h (WAIT_CANCELED): Move here and redefine.
- (WAIT_SIGNALED): Ditto.
- * thread.h (WAIT_CANCELED): Delete.
- (WAIT_SIGNALED): Ditto.
-
-2012-06-18 Corinna Vinschen <corinna@vinschen.de>
-
- * cygheap.cc (init_cygheap::init_installation_root): Rearrange code
- creating valid native NT installation_root path. Only strip last
- backslash from path if the result is a valid NT path. Explain why.
-
-2012-06-17 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- Add '#include "cygwait.h"' throughout, where appropriate.
- * DevNotes: Add entry cgf-000012.
- * Makefile.in (DLL_OFILES): Add cygwait.o.
- * sigproc.h: Remove cygwait definitions.
- * cygwait.h: New file. Define/declare Cygwin waitfor functions.
- * cygwait.cc: Ditto.
- * exceptions.cc: Include cygwait.h.
- (handle_sigsuspend): Accommodate change in cancelable_wait arguments.
- (sigpacket::process): Display thread tls in debugging output.
- * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Use symbolic
- names for signal and cancel return.
- * fhandler_console.cc (fhandler_console::read): Ditto.
- (fhandler_dev_dsp::Audio_out::waitforspace): Ditto.
- fhandler_dev_dsp::Audio_in::waitfordata): Ditto.
- * fhandler_fifo.cc (fhandler_fifo::wait): Ditto.
- * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
- * fhandler_tty.cc (fhandler_pty_slave::read): Ditto.
- * select.cc (cygwin_select): Ditto.
- * wait.cc (wait4): Ditto.
- * thread.cc (cancelable_wait): Move definition to cygwait.h.
- (pthread_cond::wait): Accommodate change in cancelable_wait arguments.
- (pthread_mutex::lock): Ditto.
- (pthread_spinlock::lock): Ditto.
- (pthread::join): Ditto.
- (pthread::thread_init_wrapper): Display tls in debugging output.
- (semaphore::_timedwait): Ditto.
- * thread.h (cw_sig_wait): Move to cygwait.h.
- (cw_cancel_action): Delete.
- (cancelable_wait): Move declaration to cygwait.h.
-
-2012-06-11 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * regex/regcomp.c (p_ere): Allow vertical-line following
- left-parenthesis in ERE, as in glibc.
-
-2012-06-10 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * include/sys/elf_common.h (R_386_16): Define.
- (R_386_PC16): Define.
- (R_386_8): Define.
- (R_386_PC8): Define.
-
-2012-06-09 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.cc (cygwin_select): Remove select_timeout test.
- (select_stuff::wait): Return select_set_zero on timeout.
- (thread_socket): Report timeout when debugging.
-
-2012-06-05 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * include/elf.h: Update from FreeBSD.
- * include/machine/elf.h: New header, from FreeBSD.
- * include/sys/elf.h: Ditto.
- * include/sys/elf32.h: Update from FreeBSD.
- * include/sys/elf64.h: Ditto.
- * include/sys/elf_common.h: Ditto.
- (R_IA64_*): Define Linux-style names as aliases to R_IA_64_*.
- (R_SH_*): Define, based on sh-4 psABI.
- (R_390_*): Define, based on s390x psABI.
- * include/sys/elf_generic.h: Ditto.
-
-2012-06-04 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_disk_file.cc (fhandler_disk_file::link ): Translate
- STATUS_NOT_SUPPORTED to EPERM as well.
-
-2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (dtable::dup3): Only return with lock set when O_EXCL flag
- is passed in.
- * syscalls.cc (dup_finish): Pass O_EXCL in flags to dtable::dup3.
-
-2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000011.
- * fhandler.h (fhandler_base::refcnt): Delete.
- (fhandler_base::inc_refcnt): New function.
- (fhandler_base::dec_refcnt): New function.
- * cygheap.h (cygheap_fdnew::~cygheap_fdnew): Accommodate split of
- refcnt to inc_refcnt/dec_refcnt.
- (cygheap_fdget::cygheap_fdget): Ditto.
- (cygheap_fdget::~cygheap_fdget::cygheap_fdget): Ditto.
- * dtable.cc (dtable::release): Ditto.
- (cygwin_attach_handle_to_fd): Ditto.
- (dtable::init_std_file_from_handle): Ditto.
- (dtable::dup3): On success, return with fdtab locked.
- * dtable.h (dtable): Add dup_finish as a friend.
- * syscalls.cc (dup_finish): Define new function. Increment refcnt
- while fdtab is locked.
- (dup2): Use common dup_finish() to perform dup operation.
- (dup3): Ditto.
-
-2012-06-03 Corinna Vinschen <corinna@vinschen.de>
-
- * globals.cc (ro_u_refs): New R/O unicode string.
- * mount.cc (fs_info::update): Recognize ReFS.
- * mount.h (enum fs_info_type): Add refs.
- (class fs_info): Add refs flag and accessor methods.
- * ntdll.h (RtlAddAccessAllowedAceEx): Declare.
- (RtlAddAccessDeniedAceEx): Declare.
- * path.h (path_conv::fs_is_refs): Define.
- * sec_helper.cc (_recycler_sd): New function to create security
- descriptors suitable for the recycler bin starting with Vista.
- * security.cc (add_access_allowed_ace): Use RtlAddAccessAllowedAceEx
- and drop code to set AceFlags explicitely.
- (add_access_denied_ace): Use RtlAddAccessDeniedAceEx and drop code to
- set AceFlags explicitely.
- * security.h (_recycler_sd): Declare.
- (recycler_sd): Define.
- * syscalls.cc (desktop_ini): Change formatting.
- (desktop_ini_ext): Define third line of recycler desktop.ini file
- since Vista,
- (try_to_bin): Handle ReFS just like NTFS. Write Vista and later
- Recycler in all uppercase, just like shell32 does when recreating it.
- Fix comments to include ReFS. Don't implicitely reuse object
- attributes from earlier NtOpenFile call, rather recreate it for safety.
- Use recycler_sd call when creating security descriptor for Recycler
- dirs and files on Vista and later. Write third line of desktop.ini
- when on Vista and later.
-
-2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * winbase.h: Add missing copyright date.
-
-2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.cc (cygwin_select): Make sure that we only return -1 as an
- error return.
- (select_stuff::wait): Semi-revert to previous method for filling out
- w4.
-
-2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * select.cc (cygwin_select): Add some comments.
- (select_stuff::wait): Ditto.
-
-2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000010.
- * select.cc (set_handle_or_return_if_not_open): Remove unneeded final
- backslash from definition.
- (cygwin_select): Reorganize to incorporate outer retry loop. Move
- remaining time recalculation here for retry case. Use
- select_stuff::wait_states for loop control.
- (select_stuff::cleanup): Avoid unneeded initialization.
- (select_stuff::wait): Modify definition to return
- select_stuff::wait_states. Eliminate is_cancelable. Don't inspect
- element 1 of an array if it is a cancel handle. Remove loop. Rely on
- being called from enclosing loop in cygwin_select. Remove time
- recalculation when restarting. Try harder to always return from the
- bottom.
- * select.h (select_stuff::wait_state): New enum.
- (select_stuff::wait): Modify declaration to return
- select_stuff::wait_states.
-
-2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (setup_handler): Make debugging output a little more
- verbose.
-
-2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygtls.h (_cygtls::protect_linked_list): Delete unused field.
-
-2012-05-30 Corinna Vinschen <corinna@vinschen.de>
-
- * hookapi.cc (find_first_notloaded_dll): Extend comment. Fix usage of
- mapped memory. Shorten static library name buffer to MAX_PATH. Use
- strlcpy to copy library name to buffer. Only Unmap "map" if it has been
- Mapped before.
- * pinfo.cc (status_exit): Drop unneeded declaration of
- find_first_notloaded_dll in favor of the declaration in winsup.h.
-
-2012-05-30 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc: Remove temporary newlib workaround, now that newlib
- handles thread cancellation by itself.
- (class __cygwin_lock_handler): Remove.
- (__cygwin_lock_cleanup): Remove.
- (__cygwin_lock_lock): Revert newlib workaround,
- (__cygwin_lock_trylock): Ditto.
- (__cygwin_lock_unlock): Ditto.
- (pthread::pop_cleanup_handler): Ditto.
-
-2012-05-29 Corinna Vinschen <corinna@vinschen.de>
-
- * select.cc (select_stuff::wait): Temporarily disable restarting
- entirely.
-
-2012-05-29 Corinna Vinschen <corinna@vinschen.de>
-
- * security.h (cygsidlist::+=): Correctly copy well_known_sid info from
- source cygsid.
-
-2012-05-25 Corinna Vinschen <corinna@vinschen.de>
-
- * registry.cc (reg_key::build_reg): Fix typo in debug output.
-
-2012-05-25 Corinna Vinschen <corinna@vinschen.de>
-
- * select.cc (select_stuff::wait): When not returning after receiving
- a signal, recalculate timeout. Apply temporary fix to avoid crashes
- after calling the signal handler. Explain.
-
-2012-05-25 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_serial.cc (fhandler_serial::raw_read): Check for
- ERROR_OPERATION_ABORTED rather than ERROR_IO_INCOMPLETE after CancelIo.
-
-2012-05-25 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_serial.cc (fhandler_serial::raw_read): Just call ReadFile
- directly in case of non-blocking I/O and handle result gracefully.
-
-2012-05-24 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (__cygwin_lock_lock): Replace null thread check with test
- for cygwin_finished_initializing to handle process startup.
- (__cygwin_lock_trylock): Ditto.
- (__cygwin_lock_unlock): Ditto.
-
-2012-05-23 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (__cygwin_lock_lock): Take null thread at process startup
- into account.
- (__cygwin_lock_trylock): Ditto.
- (__cygwin_lock_unlock): Ditto.
-
-2012-05-23 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (pthread::cancel): Re-allow asynchronous cancellation from
- Cygwin code since it looks like the problem is Windows only.
-
-2012-05-23 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc: Add a temporary workaround to help Cygwin along while
- newlib doesn't install cleanup handlers. Explain the problem.
- (class __cygwin_lock_handler): New class.
- (__cygwin_lock_cleanup): New function.
- (__cygwin_lock_lock): Push __cygwin_lock_cleanup thread cleanup
- handler.
- (__cygwin_lock_trylock): Ditto.
- (__cygwin_lock_unlock): Pop thread cleanup handler.
- (pthread::pop_cleanup_handler): Temporarily allow cleanup function to
- destroy cleanup handler so we can pop in another function than we
- pushed in.
-
-2012-05-23 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (pthread::cancel): Only allow asynchronous cancellation
- if the thread is not executing Cygwin or Windows code. Explain why.
-
-2012-05-23 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (pthread::precreate): Make sure mutex is recursive.
- Explain why.
-
-2012-05-23 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (pthread::pop_cleanup_handler): Move setting the cancelstate
- to PTHREAD_CANCEL_DISABLE from here...
- (pthread::pop_all_cleanup_handlers): ...to here, otherwise any explicit
- call to pthread_cleanup_pop disables cancellation for this thread.
-
-2012-05-23 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (refcnt): Add i interlocked. Explain why.
- * winbase.h (ilockadd): New function.
- (InterlockedAdd): Define as ilockadd.
-
-2012-05-22 Corinna Vinschen <corinna@vinschen.de>
-
- * devices.in: Fix native name of /dev/kmem.
- * devices.cc: Regenerate.
- * dtable.cc (fh_alloc): Don't forget FH_KMEM.
- * fhandler_mem.cc (fhandler_dev_mem::open): Set errno to EACCES rather
- than ENOENT on systems not granting access to physical memory from
- user space.
-
-2012-05-22 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (pthread::cancel): Set thread's cancel_event in
- PTHREAD_CANCEL_ASYNCHRONOUS case, too. Explain why.
-
-2012-05-21 Corinna Vinschen <corinna@vinschen.de>
-
- * strace.cc (strace::activate): Move printing heap size from here...
- * heap.cc (heap_init_info): ...to here. Explain why. Print heap
- size in hex and decimal.
-
-2012-05-21 Corinna Vinschen <corinna@vinschen.de>
-
- * net.cc (cygwin_recvfrom): Don't shortcircuit if len == 0. Add comment
- to explain why.
- (cygwin_recv): Ditto.
- (cygwin_recvmsg): Ditto.
-
-2012-05-21 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_disk_file.cc (path_conv::isgood_inode): Rearrange, take
- Samba versions >= 3.5.4 into account, add comments.
-
-2012-05-16 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000009.
- * smallprint.cc (__small_vsprintf): Always treat '%c' and '%C' as
- characters. Don't decode them if they are > 127.
- (__small_vswprintf): Ditto.
-
-2012-05-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000008.
- * fhandler_tty.cc (bytes_available): Simplify by returning the number
- of bytes available in the message unless that is zero.
-
-2012-05-14 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * child_info.h (CURR_CHILD_INFO_MAGIC): Update.
-
-2012-05-14 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000007.
- * child_info.h (child_info_spawn::parent_winpid): Declare new field.
- (child_info_spawn::get_parent_handle): Declare new function.
- * dcrt0.cc (child_info_spawn::get_parent_handle): Define new function.
- (child_info_spawn::handle_spawn): Recreate parent handle if possible
- when dynamically loaded. Don't mess with parent handle if it's NULL.
- * spawn.cc (child_info_spawn::worker): Set parent_winpid appropriately.
-
-2012-05-12 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000006.
- * thread.cc (pthread::pop_cleanup_handler): Set cancel state to
- disabled to avoid recursively waiting for cancel.
-
-2012-05-12 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000005.
- * fhandler.h (PIPE_ADD_PID): Redefine to something we actually DON'T
- use.
- * pipe.cc (fhandler_pipe::create): Avoid clearing all open_mode bits
- when checking for PIPE_ADD_PID. Properly keep track of len so that
- passed in name is not overwritten.
-
-2012-05-10 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * cygwin.din (memrchr): Export.
- * posix.sgml (std-gnu): Add memrchr.
- * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
-
-2012-05-10 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 16.
-
-2012-05-08 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000004.
- * pinfo.cc (pinfo::init): Reuse shared memory if the state is marked
- with PID_REAPED.
- * spawn.cc (child_info_spawn::worker): Don't duplicate myself_pinfo
- into non-cygwin child.
-
- * fork.cc (frok::parent): Improve error output.
-
-2012-05-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000003.
- * cygheap.h (init_cygheap::pid_handle): Delete.
- * dcrt0.cc (child_info_spawn::handle_spawn): Keep parent open if we
- have execed.
- * pinfo.cc (pinfo::thisproc): Remove pid_handle manipulations.
- (pinfo::init): Don't consider a reaped process to be available.
- * spawn.cc (child_info_spawn::worker): Remove pid_handle manipulations.
- Make wr_proc_pipe and parent noninheritable when starting a program
- which doesn't use the Cygwin DLL. Conditionally reset wr_proc_pipe to
- inheritable if CreateProcess fails. Inject wr_proc_pipe handle into
- non-Cygwin process. Consider a non-cygwin process to be 'synced'.
-
-2012-05-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: Add entry cgf-000002.
- * fhandler_tty.cc (bytes_available): Revert to previous Oct-2011
- behavior where a dummy buffer is used to determine how many bytes will
- be read.
- (fhandler_pty_master::ioctl): Correct coercion in assignment.
-
-2012-05-03 Corinna Vinschen <corinna@vinschen.de>
-
- * net.cc (get_adapters_addresses): Only create thread on affected
- systems. Change comment acordingly.
- * wincap.h (wincaps::has_gaa_largeaddress_bug): New element.
- * wincap.cc: Implement above element throughout.
- (wincap_8): New globale wincaps to support Windows 8.
- (wincapc::init): Take Windows 8 into account. Set new
- has_gaa_largeaddress_bug member to false on 32 bit systems.
-
-2012-05-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * DevNotes: New file. Add entry cgf-000001.
- * sigproc.cc (proc_terminate): Don't set parent pid of child to 1 if
- we've execed since the execed process is still considered the parent.
-
- * child_info.h: Bump copyright.
-
-2012-05-02 Corinna Vinschen <corinna@vinschen.de>
-
- * fenv.cc (fesetround): Fix test for valid input parameter.
- (fesetprec): Ditto.
-
-2012-04-30 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler.h (PIPE_ADD_PID): Define new flag.
- * pipe.cc (fhandler_pipe::create): Don't indiscriminately add process
- id to every pipe since some pipe names (fifo, tty) don't need it.
- * sigproc.cc (sigproc_init): Pass PIPE_ADD_PID to fhandler_pipe::create
- to ensure that pid is always part of sigwait pipe name.
-
-2012-04-28 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * environ.cc (struct parse_thing): Add "pipe_byte" option.
- * globals.cc (pipe_byte): Declare.
- * pipe.cc (fhandler_pipe::create): Use current process id in pipe name
- rather than pid for simple name collision avoidance. Do this only once
- to avoid extra overhead when a busy pipe is found. Honor pipe_byte to
- create non-message pipes if set.
- * sigproc.cc (sigproc_init): Use a specific name for the signal pipe.
-
-2012-04-27 Corinna Vinschen <corinna@vinschen.de>
-
- * path.cc (find_fast_cwd_pointer): Fix for W8 CP 32 bit.
-
-2012-04-25 Thomas Wolff <towo@towo.net>
-
- * fhandler.h (class dev_console): Add member ext_mouse_mode5.
- * fhandler_console.cc (fhandler_console::read): Implement extended
- mouse mode 1005 (xterm, mintty).
- Fix actual mouse reporting for large coordinates.
-
-2012-04-24 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 15.
-
-2012-04-24 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_console.cc (ALT_PRESSED): Define earlier, never undefine.
- (CTRL_PRESSED): Ditto.
- (fhandler_console::read): Simplify expressions testing for pressed ALT
- or CTRL modifier keys.
- (get_nonascii_key): Ditto.
-
-2012-04-24 Thomas Wolff <towo@towo.net>
-
- * fhandler.h (class dev_console): Add members ext_mouse_mode6 and
- ext_mouse_mode15.
- * fhandler_console.cc (fhandler_console::read): Implement extended
- mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). Recognize,
- but don't implement extended mouse mode 1005 (xterm, mintty).
- Support mouse coordinates greater than 222 (each axis). Fix formatting.
- (fhandler_console::char_command): Initialize enhanced mouse reporting
- modes.
-
-2012-04-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (fh_alloc): Only disallow opening of nonexistent on-disk
- device.
- * path.cc (path_conv::check): Remove PATH_KEPT_HANDLE setting.
- * path.h (path_types): Remove PATH_KEPT_HANDLE.
- (path_conv::kept_handle): Delete now-unneeded function.
-
-2012-04-19 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (fh_alloc): Keep fh which was flagged as error if it is for
- an on-disk device and we were stating it.
- * path.cc (path_conv::check): Set PATH_KEPT_HANDLE.
- * path.h (path_types): Add PATH_KEPT_HANDLE.
- (path_conv::kept_handle): Implement.
-
-2012-04-18 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler.h (fhandler_base::nohandle): Revert to standard
- implementation.
- * dtable.cc (dtable::fixup_after_exec): Specifically reject releasing
- nohandle() type fhandlers rather than relying on contents of io_handle.
- (dtable::fixup_after_fork): Ditto.
- * fhandler_termios.cc: Add includes necessary for definitions of
- have_execed and have_execed_cygwin.
- (fhandler_termios::sigflush): Don't flush console input when we've
- started a non-Cygwin process.
-
-2012-04-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * wincap.h: Rename assitant to assistant throughout.
- * wincap.cc: Ditto.
- * devices.in (exists_console): Use fhandler_console::exists () rather
- than raw test.
- * devices.cc: Regenerate.
- * fhandler.h (fhandler_console::exists): Define new function.
- * fhandler_console.cc (fhandler_console::need_invisible): Use
- fhandler_console::exists () rather than raw test.
- * spawn.cc: Rename assitant to assistant throughout.
- (child_info_spawn::worker): Simplify test for when to start a
- non-Cygwin process in its own process group. Just do it whenever we
- start a non-Cygwin process.
-
-2012-04-12 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * devices.in (exists_console): Allow /dev/con{sole,in,out} to be
- referenced if a console exists.
- * devices.cc: Regenerate.
- * fhandler_console.cc (fhandler_console::set_unit): Ditto.
-
-2012-04-11 Corinna Vinschen <corinna@vinschen.de>
-
- * syscalls.cc (fhandler_base::stat_fixup): Fix inode numbers of
- non-device files in virtual fileysystems.
-
-2012-04-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (cygwin_attach_handle_to_fd): Defend against NULL return
- from build_fh_*.
- (dtable::init_std_file_from_handle): Ditto.
- * mmap.cc (mmap_record::alloc_fh): Ditto.
- * path.cc (path_conv::check): Ditto.
-
-2012-04-06 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler.h (fhandler_base::nohandle): Implement "by hand" rather than
- through macro. Set io_handle to INVALID_HANDLE_VALUE when setting flag
- to true.
-
-2012-04-06 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * path.c (path_conv::check): Avoid directly referencing fields of the
- dev structure when it can be easily avoided.
-
-2012-04-05 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 14.
-
-2012-04-05 Corinna Vinschen <corinna@vinschen.de>
-
- * passwd.cc (pwdgrp::read_passwd): Fix pretty_ls entry typo contain
- the required number of colons.
-
-2012-04-04 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler.h (fhandler_pty_common::bytes_available): Declare new
- function.
- (fhandler_pty_master::flush_to_slave): Ditto.
- * fhandler_tty.cc (bytes_available): Define new function.
- (fhandler_pty_common::bytes_available): Ditto.
- (handler_pty_master::flush_to_slave): Ditto.
- (fhandler_pty_master::process_slave_output): Call flush_to_slave ()
- here. Use bytes_available () rather than PeekNamedPipe. Clean up
- sloppy logic.
- (fhandler_pty_slave::read): Use bytes_available () rather than
- PeekNamedPipe.
- (fhandler_pty_slave::ioctl): Ditto.
- (fhandler_pty_master::ioctl): Ditto.
- (fhandler_pty_master::cleanup): Remove ancient #if 0.
- * select.cc (peek_pipe): Call flush_to_slave whenever we're checking
- for a pty master.
-
-2012-04-04 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_nodevice.cc (fhandler_nodevice::open): Convert EROFS to
- ENOENT if non-existent file got opened for reading only. Explain why.
- * path.cc (path_conv::check): Stick to ENOENT if file has been opened
- for informational purposes only. Add to comment.
-
-2012-04-04 Corinna Vinschen <corinna@vinschen.de>
-
- * path.cc (path_conv::check): Convert device type to FH_FS for
- non-existent files on /dev, unless /dev itself doesn't exist on disk.
- Add comment to explain why.
-
-2012-04-04 Corinna Vinschen <corinna@vinschen.de>
-
- * hookapi.cc (rvadelta): Compute max_size using SizeOfRawData rather
- than VirtualSize.
-
-2012-04-04 Corinna Vinschen <corinna@vinschen.de>
-
- * passwd.cc (_getpass_close_fd): New static pthread cleanup handler.
- (getpass): Rework to use /dev/tty in the first place. Install
- _getpass_close_fd as pthread cleanup handler. Flush prompt explicitely.
- Lock input and switch off signal input handling when reading password.
-
-2012-04-03 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 13.
-
-2012-04-03 Corinna Vinschen <corinna@vinschen.de>
-
- * syscalls.cc (fhandler_base::stat_fixup): Replace string comparison
- with new device::is_dev_resident() call.
-
-2012-04-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * devices.h (lives_in_dev): New field.
- (dev_on_fs): Set bit size.
- (is_dev_resident): Define new method.
- * devices.in: Use different method for labelling requested name for dev
- storage: prefix it with a ='. Use an actual ':' to denote an internal
- device.
- (exists_console): Avoid repeated test.
- (exists_ntdev_silent): Rename from the less-descriptive exists_ntdevs.
- (dev_dev_storage): Delete unneeded define.
- * gendevices: Add a flag to each line denoting whether the device lives
- in /dev space.
- (generate): Handle special ":" case here for internal devices. Parse
- =something_dev as requiring a storage location. Tack the rest of the
- line back onto the reformulated "$rest".
- * devices.cc: Regenerate.
-
-2012-04-02 Corinna Vinschen <corinna@vinschen.de>
-
- * devices.h (device::get_device): New method.
- * fhandler_dev.cc (fhandler_dev::readdir): Set st_ino to device number.
- * syscalls.cc (fhandler_base::stat_fixup): Ditto. Fix link count for
- CD-ROM devices. Fix typo in comment.
-
-2012-04-02 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (fhandler_base::stat_fixup): Rename from
- fhandler_base::set_ino_and_dev.
- * syscalls.cc (fhandler_base::stat_fixup): Ditto. Accommodate name
- change throughout. Fixup link count of console devices.
-
-2012-04-02 Corinna Vinschen <corinna@vinschen.de>
-
- * devices.h (FH_CYGDRIVE): Define as DEV_VIRTFS_MAJOR class device.
- (DEV_CYGDRIVE_MAJOR): Remove.
- (iscygdrive_dev): Define.
- * dtable.cc (fh_alloc): Accommodate above change.
- * path.cc (path_conv::check): Use iscygdrive_dev to check for cygdrive.
- * syscalls.cc (fhandler_base::set_ino_and_dev): Drop check for
- DEV_CYGDRIVE_MAJOR from conditional.
-
-2012-04-02 Corinna Vinschen <corinna@vinschen.de>
-
- * devices.h (FH_DEV): Define as DEV_VIRTFS_MAJOR class device.
- (DEV_DEV_MAJOR): Remove.
- * dtable.cc (fh_alloc): Accommodate above change.
- * syscalls.cc (set_ino_and_dev): Drop check for DEV_DEV_MAJOR from
- conditional.
-
-2012-04-02 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (fhandler_base::set_ino_and_dev): Declare.
- * syscalls.cc (fhandler_base::set_ino_and_dev): New method to set
- st_ino, st_dev, and st_rdev for devices in a single spot.
- (fstat64): Call fhandler_base::set_ino_and_dev instead of setting
- st_ino, st_dev, and st_rdev here.
- (stat_worker): Ditto.
-
-2012-04-02 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (fhandler_dev::open): Declare.
- (fhandler_dev::close): Declare.
- (fhandler_dev::fstat): Declare.
- (fhandler_dev::fstatvfs): Declare.
- (fhandler_cygdrive::fstatvfs): Declare.
- * fhandler_dev.cc (fhandler_dev::open): New method.
- (fhandler_dev::close): Ditto.
- (fhandler_dev::fstat): Ditto.
- (fhandler_dev::fstatvfs): Ditto.
- * fhandler_disk_file.cc (fhandler_base::fstat_helper): Don't fill
- st_rdev.
- (fhandler_cygdrive::fstatvfs): New method.
- * path.h (path_conv::fs_got_fs): New method.
- * mount.h (fs_info::got_fs): Change type to bool, make public.
-
-2012-04-02 Corinna Vinschen <corinna@vinschen.de>
-
- * mount.cc (fillout_mntent): Use "none" rather than 0 when checking
- FS type.
-
-2012-04-01 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (dtable::fixup_close): Define new function.
- (dtable::fixup_after_exec): Use fixup_close() and detect when it was
- not possible to open an inherited file handle.
- (dtable::fixup_after_fork): Defensively close any file handles which
- were not, for some reason, inheritable.
- * dtable.h: Make #pragma once.
- (dtable::fixup_close): Declare new function.
- * fhandler_console.cc (fhandler_console::set_unit): Set I/O handles to
- NULL when this function fails.
-
-2012-04-01 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_dev.cc (fhandler_dev::readdir): Fix formatting. Simplify
- code. Use device::type() to fetch dirent compatible device type.
- Add comment.
-
-2012-03-31 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * devices.h (device::exists_func): Redefine field.
- (device::dev_on_fs): Remove unneeded bit field. Just make a normal
- boolean.
- (device::exists): Redefine function.
- * devices.in: Move previous functions earlier since they are now only
- defined static. Rename some functions due to an as-yet unresolved bug
- in gendevices. Rename posix part of internal-only devices with a
- double-slash. gendevices will eventuall translate that to a ":".
- (device::parse): Rework to use dev pointer and dev_storage_end.
- * devices.cc: Regenerate.
- * gendevices: Translate "// to ": after shilka processing.
-
-2012-03-31 Corinna Vinschen <corinna@vinschen.de>
-
- * devices.cc: Regenerate.
- * devices.h (device::exists_func): New member function pointer,
- replacing noexpose.
- (device::expose): Remove.
- (device::exists_never): Declare.
- (device::exists_ptys): Declare.
- (device::exists_cons): Declare.
- (device::exists_console): Declare.
- (device::exists_nt_dev): Declare.
- (device::exists): Declare.
- * devices.in (dev_storage): Replace former noexpose values with
- pointers to matching exists_XXX method.
- (device::exists_never): New method.
- (device::exists_ptys): New method.
- (device::exists_cons): New method.
- (device::exists_console): New method.
- (device::exists_nt_dev): New method.
- (device::exists): New method.
- * fhandler_dev.cc (fhandler_dev::readdir): Replace call to
- device::expose with call to device::exists and drop all further
- existence filtering since it's done in device::exists now.
- * path.cc (path_conv::check): Replace call to device::expose with call
- to device::exists.
-
-2012-03-30 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * devices.cc: Regenerate.
- * devices.h (device::noexpose): New field.
- (device::dev_on_fs): Make a bit field.
- (get_major): Use proper type for declaration.
- (expose): New field.
- (ext_dev_storage): Delete declaration.
- (dev_storage_size): Ditto.
- (dev_storage): New declaration.
- (dev_storage_end): Ditto.
- * devices.in: Mark /dev/ptym*, /dev/com*, /dev/pipe, /dev/fifo, and
- "/dev" as "no expose".
- * fhandler.h (fhandler_dev::lastrealpos): Delete declaration.
- (fhandler_dev::devidx): Declare new field.
- * fhandler_disk_file.cc: Move fhandler_dev functions into
- fhandler_dev.cc.
- * fhandler_dev.cc: Add includes needed for functions moved from
- fhandler_disk_file.cc.
- (dev_storage_scan_start): Define place to start listing devices.
- (dev_storage_size): Define size of array to scan.
- (fhandler_dev::fhandler_dev): Move here from fhandler_disk_file.cc.
- (fhandler_dev::opendir): Ditto.
- (fhandler_dev::readdir): Just check devidx for non-NULL to determine
- when to go to disk for /dev content. Use dev_storage rather than
- ext_dev_storage. Iterate over dev_storage using devidx pointer. Use
- accessor functions rather than raw references to the device struct.
- Only increment dir->__d_position when we are actually going to be
- returning something. Add debug_printf for exit.
- (fhandler_dev::rewinddir): Set devidx as appropriate depending on
- whether there's a /dev on disk or not.
- * gendevices: Don't mark dev_storage static but do put it in the _RDATA
- section.
- * path.cc (path_conv::check): Use new "device::expose()" function to
- decide to forbid programs from referencing internal device types.
-
-2012-03-30 Corinna Vinschen <corinna@vinschen.de>
-
- * posix.sgml (std-notes): Change description of flock restrictions.
-
-2012-03-30 Corinna Vinschen <corinna@vinschen.de>
-
- * devices.h (DEV_TTY_MAJOR): Define, use throughout where appropriate.
- (DEV_VIRTFS_MAJOR): Ditto.
- * fhandler_dev.cc (fhandler_dev::readdir): Add comments. Tweak tests
- for invisible devices. Don't print comX devices, only ttySX. Drop
- requirement to call stat64.
-
-2012-03-29 Corinna Vinschen <corinna@vinschen.de>
-
- * Makefile.in (DLL_OFILES): Add fhandler_dev.o.
- * devices.h (DEV_DEV_MAJOR): Define.
- (FH_DEV): Redefine in terms of DEV_DEV_MAJOR.
- (ext_dev_storage): Declare.
- (dev_storage_size): Declare.
- (dev_dev_storage): Declare.
- (dev_dev): Define.
- (isdev_dev): Define.
- * devices.in (dev_dev_storage): Activate.
- (ext_dev_storage): Define as externally available pointer to
- dev_storage.
- (dev_storage_size): Define to contain number of dev_storage elements.
- * dir.cc (rmdir): Handle /dev as always not empty.
- * dtable.cc (fh_alloc): Handle DEV_DEV_MAJOR.
- * fhandler.h (fhandler_dev): New class, derived from fhandler_disk_file.
- (fhandler_union): Add fhandler_dev member.
- * fhandler_disk_file.cc (class __DIR_mounts): Handle /dev directory
- to make sure it always exists.
- * fhandler_dev.cc: New file implementing /dev.
- * globals.cc (ro_u_dev): New R/O unicode string.
- * path.cc (path_conv::check): Handle FH_DEV device.
-
-2012-03-29 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_console.cc (fhandler_console::set_unit): Don't succeed
- unless we are opening a console actually associated with this process.
-
-2012-03-29 Corinna Vinschen <corinna@vinschen.de>
-
- * sec_acl.cc (acl32): Fix potential crash if build_fh_name returns NULL.
-
-2012-03-29 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (ctrl_c_handler): Don't generate a SIGINT if we've
- execed a non-cygwin process. Let the Windows process deal with it
- itself.
-
-2012-03-28 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * sigproc.cc (proc_terminate): Avoid releasing myself.
-
-2012-03-28 Corinna Vinschen <corinna@vinschen.de>
-
- * times.cc (clock_setres): Set minperiod to period.
-
-2012-03-27 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_process.cc (process_tab): Add entry for mountinfo.
- (format_process_mountstuff): New function, derived from
- format_process_mounts. Only open another user's user_info shared
- memory area if the process is owned by another user. Actually
- access the opened shared user_info to get the right mount table.
- For other users, don't print remote cygdrive mount points. Print
- mountinfo or mounts output depending on the bool mountinfo argument.
- (format_process_mounts): Just call format_process_mountstuff with
- mountinfo set to false.
- (format_process_mountinfo): Ditto with mountinfo set to true.
-
-2012-03-27 Corinna Vinschen <corinna@vinschen.de>
-
- * times.cc (clock_setres): Revert previous change.
-
-2012-03-26 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (class fhandler_dev_clipboard): Add fstat method.
- * fhandler_clipboard.cc (cygcb_t): New type for Cygwin-specific
- clipboard format.
- (set_clipboard): Use new clipboard format to allow setting a timestamp.
- (fhandler_dev_clipboard::fstat): New method. Read modification and
- access timestamp as well as length from clipboard data.
- (fhandler_dev_clipboard::read): Use new clipboard format.
-
-2012-03-26 Corinna Vinschen <corinna@vinschen.de>
-
- * hires.h (hires_ms::dmsecs): Drop unused method.
- * times.cc (JITTER): Remove.
- (gtod): Revert to process-local variable.
- (hires_ms::nsecs): Just return system time to disallow discrepancy with
- the OS.
- (hires_ms::resolution): Return coarsest timer value from OS. Add
- comment to explain why.
- (clock_setres): Ditto.
-
-2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * child_info.h: Reset magic number.
-
-2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * child_info.h (child_info::postfork): Define new function.
- * fork.cc (frok::parent): Call postfork to do all of the manipulation
- required prior to calling pinfo::remember.
- * pinfo.h (pinfo::set_rd_proc_pipe): Just set pinfo's rd_proc_pipe.
- Don't bother setting it to NULL.
- * sigproc.cc (child_info_spawn::wait_for_myself): Call postfork to set
- up myself for waiting.
- * spawn.cc (child_info_spawn::worker): Avoid now-unnecessary global
- lock. Consistently test mode rather than chtype when making
- wr_proc_pipe decisions. Call postfork() to set up stuff prior to
- pinfo::remember.
-
-2012-03-21 Corinna Vinschen <corinna@vinschen.de>
-
- * cygtls.cc (well_known_dlls): Add advapi32.dll.
-
-2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * child_info.h: Reset magic number.
- (child_info_spawn::wait_for_myself): Move function to sigproc.cc.
- * pinfo.cc (is_toplevel_proc): Delete unneeded variable.
- * sigproc.cc (child_info_spawn::wait_for_myself): Move function from
- header to here. Do all setup required to properly wait for top-level
- execed process to exit.
- * spawn.cc (child_info_spawn::worker): Attempt to properly handle
- _P_DETACH. Set wr_proc_pipe if top-level process even when execing.
- Just call wait_for_myself() to... wait for myself. Don't call cleanup
- twice.
-
-2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (proc_waiter): Remove debugging.
-
-2012-03-20 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (set_std_handle): Call SetStdHandle with NULL if fd is
- closed.
- (dtable::release): "Close" standard handle if appropriate.
- * dcrt0.cc (dll_crt0_0): Fix minor switch formatting problem.
- * fork.cc (frok::parent): Make minor comment indentation change.
-
-2012-03-20 Corinna Vinschen <corinna@vinschen.de>
-
- * syscalls.cc (lseek): Fix debug output.
-
-2012-03-20 Christian Franke <franke@computer.org>
-
- * ntdll.h (SharedUserData): Add volatile qualifier. This fixes a
- possible infinite loop in hires_ms::timeGetTime_ns.
-
-2012-03-20 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/socket.h: Fix definitions of MCAST_INCLUDE and
- MCAST_EXCLUDE.
-
-2012-03-20 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * child_info.h (CURR_CHILD_INFO_MAGIC): Reset.
- (child_info::rd_proc_pipe): Declare new field.
- (child_info::wr_proc_pipe): Ditto.
- (child_info::prefork): Declare new function, derived from previous
- pinfo version.
- * dcrt0.cc (child_info_fork::handle_fork): Close previous wr_proc_pipe
- when appropriate and assign new one from passed-in child_info block.
- (child_info_spawn::handle_spawn): Assign our wr_proc_pipe handle from
- passed-in child_info block.
- * fork.cc (child_info::prefork): Define new function.
- (frok::child): Clear rd_proc_pipe and wr_proc_pipe so they will not be
- closed by the child_info destructor.
- (frok::parent): Use child_info prefork handling, outside of retry loop.
- Set rd_proc_pipe in child's pinfo after successful CreateProcess.
- Eliminate postfork call.
- * globals.cc (my_wr_proc_pipe): Define/declare new variable.
- * pinfo.cc (pinfo::pending_rd_proc_pipe): Delete.
- (pinfo::pending_wr_proc_pipe): Ditto.
- (pinfo::prefork): Ditto.
- (pinfo::postfork): Ditto.
- (pinfo::postexec): Ditto.
- (pinfo::wait): Assume that rd_proc_pipe is set up correctly prior to
- call.
- (_pinfo::alert_parent): Replace "wr_proc_pipe" with "my_wr_proc_pipe".
- * pinfo.h (_pinfo::_wr_proc_pipe): Delete declaration.
- (_pinfo::set_rd_proc_pipe): Define new function.
- (pinfo::pending_rd_proc_pipe): Delete declaration.
- (pinfo::pending_wr_proc_pipe): Ditto.
- (pinfo::prefork): Ditto.
- (pinfo::postfork): Ditto.
- (pinfo::postexec): Ditto.
- (pinfo::wr_proc_pipe): Ditto.
- * sigproc.cc (child_info::child_info): Clear rd_proc_pipe and
- wr_proc_pipe.
- (child_info::cleanup): Close rd_proc_pipe and
- wr_proc_pipe if necessary.
- (child_info_fork::child_info_fork): Set forker_finished to NULL by
- default.
- (child_info_spawn::child_info_spawn): Use my_wr_proc_pipe rather than
- myself->wr_proc_pipe.
- (child_info::sync): Ditto.
- (child_info_spawn::cleanup): Call child_info::cleanup.
- * spawn.cc (child_info_spawn::worker): Remove call to myself.prefork().
- Set wr_proc_pipe when execing or set up new rd_proc_pipe/wr_proc_pipe
- via child_info::prefork when spawning. Remove call to pinfo::postexec.
- Set rd_proc_pipe in child pinfo when spawning. Use my_wr_proc_pipe
- rather than myself->wr_proc_pipe. Remove call to postfork.
-
-2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (pinfo_init): Cosmetic change: unset "destroy" for myself.
- (pinfo::wait): Change some comments.
- (pinfo::prefork): Move a comment.
- (pinfo::postfork): Set pending_*_pipe variables to NULL if closed.
- (pinfo::postexec): Use right name when closing handle.
- (_pinfo::alert_parent): Ditto.
- * sigproc.h (hold_everything): Remove debugging label.
-
-2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygserver_ipc.h: Include sigproc.h for signal_arrived declaration.
-
-2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygprops.h: Use #pragma once.
- * mkglobals_h: Ditto for generated globals.h file.
- * globals.cc: Use specific NO_GLOBALS_H flag to control inclusion of
- globals.h.
- * winsup.h: Honor NO_GLOBALS_H to control inclusion of globals.h. Make
- clear_procimptoken extern inline so that it is only defined when
- needed.
-
-2012-03-19 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (cancelable_wait): Don't malloc tbi, just make it a struct
- on the stack to avoid memory leak.
-
-2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (pinfo::wait): Handle case where prefork was not called
- prior to calling wait(). This is the case when we are reabsorbing
- processes after being execed.
-
-2012-03-16 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fork.cc (lock_signals): Move to sigproc.h.
- (lock_pthread): Ditto.
- (hold_everything): Ditto.
- (frok::parent): Call myself.prefork() just before calling
- CreateProcess. Call myself.postfork () on function exit.
- * pinfo.cc (pinfo::pending_rd_proc_pipe): Define.
- (pinfo::pending_wr_proc_pipe): Ditto.
- (_pinfo::dup_proc_pipe): Delete.
- (pinfo::wait): Move pipe creation into pinfo::prefork. Set pipe
- variables from pending_*.
- (_pinfo::sync_proc_pipe): Delete.
- (_pinfo::proc_pipe_owner): Ditto.
- (pinfo::prefork): Define new function.
- (pinfo::postfork): Ditto.
- (pinfo::postexec): Ditto.
- (_pinfo::alert_parent): Remove obsolete call to sync_proc_pipe.
- (_pinfo::dup_proc_pipe): Delete declaration.
- (_pinfo::sync_proc_pipe): Ditto.
- (pinfo::pending_rd_proc_pipe): Declare.
- (pinfo::pending_wr_proc_pipe): Ditto.
- (pinfo::prefork): Declare new function.
- (pinfo::postfork): Ditto.
- (pinfo::postexec): Ditto.
- (pinfo::wr_proc_pipe): Define new wrapper function.
- * sigproc.h: Include "sync.h". Move locking functions from fork to
- here.
- * spawn.cc (child_info_spawn::worker): Delete now-unneeded requirement
- to record orig_wr_proc_pipe. Call hold_everything prior to doing
- anything. Call myself.prefork() if spawning. Replace wr_proc_pipe
- synchronization with call to myself.postexec(). Call myself.postfork()
- if not execing.
- * sync.h: Replace #ifdef wrapper with "#pragma once".
-
-2012-03-13 Corinna Vinschen <corinna@vinschen.de>
-
- * hookapi.cc (hook_or_detect_cygwin): Change condition when to use
- importRVAMaxSize or importRVASize for the mapping size. Make sure
- to map never more than the section size. Change comments accordingly.
-
-2012-03-13 Corinna Vinschen <corinna@vinschen.de>
-
- * include/netdb.h (h_errno): Add self-referencing macro and comment.
-
-2012-03-12 Corinna Vinschen <corinna@vinschen.de>
- Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler.h (wait_return): Add overlapped_nullread.
- * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Detect
- zero-byte read as a special case.
- (fhandler_base_overlapped::raw_read): Keep looping when zero-byte read
- detected without EOF.
- (fhandler_base_overlapped::raw_write): Quiet gcc warning by adding
- overlapped_nullread to switch statement even though it will never
- actually be hit.
-
-2012-03-10 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (fh_alloc): Treat pc.dev as unsigned.
- * fhandler_console.cc (fhandler_console::set_unit): Use lock always to
- avoid races between competing cygwin processes running on the console.
-
-2012-03-09 Corinna Vinschen <corinna@vinschen.de>
-
- * hookapi.cc (find_first_notloaded_dll): Fix a compiler warning.
-
-2012-03-09 Corinna Vinschen <corinna@vinschen.de>
-
- * hookapi.cc (rvadelta): Add parameter to return maximum available
- size from start of import RVA table to end of section.
- (find_first_notloaded_dll): Take big executables into account. Use
- offset and size computation as in hook_or_detect_cygwin, just simpler.
- (hook_or_detect_cygwin): Return NULL rather than false througout.
- Change computation of required mapping size to take non-gcc compilers
- into account. Explain the differences and what we do against them.
- Don't alloca buf if fn is NULL. Never use buf if fn is NULL.
-
-2012-03-08 Corinna Vinschen <corinna@vinschen.de>
-
- * net.cc (call_gaa): New thread function to call GetAdaptersAddresses.
- (get_adapters_addresses): Call call_gaa. If necessary, call it as
- child thread. Explain why that's necessary.
-
-2012-03-08 Václav Zeman <vhaisman@gmail.com>
-
- * path.cc (readlink): Avoid calling strlen() twice.
-
-2012-03-07 Corinna Vinschen <corinna@vinschen.de>
-
- * Throughout, replace usage of w32api's min with MIN from sys/param.h.
-
-2012-03-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (_pinfo::dup_proc_pipe): Reorganize to provide more
- information for failing condition.
- (pinfo::wait): Pass name of function to dup_proc_pipe. Eliminate error
- check for dup_proc_pipe since it never actually returned an error.
- * pinfo.h (_pinfo::dup_proc_pipe): Add an argument.
- * spawn.cc (child_info_spawn::worker): Pass name of function to
- dup_proc_pipe.
-
-2012-03-07 Corinna Vinschen <corinna@vinschen.de>
-
- * glob.cc (MAXPATHLEN): Reinstantiate with a value of 8192.
-
-2012-03-05 Denis Excoffier <cygwin@Denis-Excoffier.org>
-
- * pinfo.cc (_pinfo::dup_proc_pipe): Fix order of arguments in debug
- output.
-
-2012-03-05 Corinna Vinschen <corinna@vinschen.de>
-
- * init.cc (dll_entry): Move wincap.init call back from here...
- * dcrt0.cc (dll_crt0_0): ...to here.
-
-2012-03-05 Corinna Vinschen <corinna@vinschen.de>
-
- * cygheap.h (enum fcwd_version_t): Move here from path.cc.
- (class fcwd_access_t): Ditto. Only declare methods.
- (class cwdstuff): Move fast_cwd_ptr and fast_cwd_version from shared
- DLL section here.
- * path.cc: Keep fcwd_access_t method definitions.
- (fcwd_access_t::fast_cwd_version): New method.
- (find_fast_cwd_pointer): Change comment. Mention test on W8CP.
- (cwdstuff::init): Initialize fast_cwd_ptr and fast_cwd_version.
-
-2012-03-05 Corinna Vinschen <corinna@vinschen.de>
-
- * dll_init.cc (dll_list::operator[]): Extend comment a bit more to
- explain previous patch.
-
-2012-03-04 Corinna Vinschen <corinna@vinschen.de>
-
- * dll_init.cc (dll_list::alloc): Compare linked DLLs by basename only.
- Explain why. Add code to check if a DLL with the same basename but
- different path is the same DLL. Bail out if not.
- (in_load_after_fork): New static NO_COPY bool to allow to differ
- between linked and loaded DLL at fork.
- (dll_list::load_after_fork): Set in_load_after_fork accordingly.
- (dll_dllcrt0_1): Don't treat DLL as linked if in_load_after_fork is set.
- Drop test for in_forkee.
-
-2012-03-04 Corinna Vinschen <corinna@vinschen.de>
-
- * dll_init.cc: Revert pathname changes from 2012-02-08.
- (dll_list::operator[]): Add long comment to explain the misery.
- (dll_list::alloc): Skip long pathname prefix potentially returned by
- GetModuleFileNameW.
- * dll_init.h (dll_list::find_by_modname): Add back declaration.
-
-2012-03-04 Corinna Vinschen <corinna@vinschen.de>
-
- * winver.rc: Bump copyright date.
-
-2012-03-03 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler_console.cc (fhandler_console::dup): Only set ctty when we
- haven't specifically called setsid.
- * fhandler_tty.cc (fhandler_pty_slave::dup): Ditto. Also add comment
- documenting research into rxvt problem.
- * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Don't check
- specifically for myself->ctty == -1. Test for > 0 as that is the
- correct test.
- (fhandler_termios::sigflush): Ditto.
-
-2012-03-02 Corinna Vinschen <corinna@vinschen.de>
-
- * flock.cc (allow_others_to_sync): Reorder conditional expression to
- check for DACL presence first, since otherwise dacl pointer value is
- undefined. Add comment.
-
-2012-03-02 Corinna Vinschen <corinna@vinschen.de>
-
- * flock.cc (allow_others_to_sync): Use RtlGetDaclSecurityDescriptor
- rather than accessing the SECURITY_DESCRIPTOR structure directly.
- Take no DACL and NULL DACL into account.
-
-2012-03-02 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_console.cc (fhandler_console::input_tcsetattr): Revert
- previous patch.
- (fhandler_console::open_setup): Install Ctrl-C handler here, if this
- console is the controlling tty and the process hasn't been started by
- a Cygwin process.
-
-2012-03-02 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_console.cc (fhandler_console::input_tcsetattr): Set the
- state of the Ctrl-C handler depending on the setting of
- ENABLE_PROCESSED_INPUT.
-
-2012-02-28 Eric Blake <eblake@redhat.com>
-
- * include/sys/termios.h (tcgetsid): Fix return type.
- * termios.cc (tcgetsid): Likewise.
- * fhandler_termios.cc (fhandler_termios::tcgetsid): Likewise.
- * fhandler.h (fhandler_base): Likewise.
- * fhandler.cc (fhandler_base::tcgetsid): Likewise.
-
-2012-02-28 Corinna Vinschen <corinna@vinschen.de>
-
- * cygtls.cc (well_known_dlls): Add shlwapi.dll.
-
-2012-02-27 Corinna Vinschen <corinna@vinschen.de>
-
- * cygtls.cc (dll_cmp): New comparison function for bsearch.
- (well_known_dlls): New array containing well-known DLLs.
- (_cygtls::call2): Add code for BLODA detection.
- * net.cc (fdsock): Ditto.
-
-2012-02-26 Corinna Vinschen <corinna@vinschen.de>
-
- * environ.cc (enum settings): Add setbool. Rename justset to setdword
- to avoid future problems.
- (struct parse_thing): Change all justset to setbool for bool variables.
- (parse_options): Add a case for setbool setting for bool variables
- since justset (now setdword) always writes a DWORD value, thus
- overwriting adjacent memory locations.
- * external.cc (cygwin_internal): Drop extern declaration.
-
-2012-02-26 Corinna Vinschen <corinna@vinschen.de>
-
- * environ.cc (dos_file_warning): Drop declaration.
- (ignore_case_with_glob): Ditto.
- (allow_winsymlinks): Ditto.
- (reset_com): Move definition to globals.cc.
- (struct parse_thing): Add "detect_bloda" option.
- * fhandler_serial.cc (fhandler_serial::open): Drop (incorrect)
- declaration of reset_com.
- * globals.cc (ignore_case_with_glob): Move definition into C++-only
- block.
- (dos_file_warning): Define.
- (allow_winsymlinks): Define.
- (reset_com): Define.
- (detect_bloda): Define.
- * path.cc (dos_file_warning): Drop definition here.
- (allow_winsymlinks): Drop definition here.
-
-2012-02-26 Corinna Vinschen <corinna@vinschen.de>
-
- * flock.cc (LOCK_DIR_NAME_FMT): Define.
- (LOCK_DIR_NAME_LEN): Define.
- (LOCK_DIR_NAME_DEV_OFF): Define.
- (LOCK_DIR_NAME_INO_OFF): Define.
- (LOCK_OBJ_NAME_FMT): Define. Add comment.
- (class lockf_t): Use bitsize-explicit types. Declare from_obj_name,
- (class inode_t): Make use, unuse and inuse methods public. Add a
- lock argument to get method declaration.
- (inode_t::get): Add lock argument. Only lock node if lock arg is true.
- (inode_t::inode_t): Use LOCK_DIR_NAME_FMT as format string.
- (lockf_t::from_obj_name): New method to generate lockf_t content from
- lock event object basename.
- (inode_t::get_all_locks_list): Just call from_obj_name here and copy
- result into final lockf_t.
- (create_lock_obj_attr): Use LOCK_OBJ_NAME_FMT as format string.
- (create_lock_in_parent): New thread function to create lockf_t
- structure in parent process.
- (delete_lock_in_parent): New thread function to reap stale BSD locks in
- parent process.
- (lockf_t::create_lock_obj): Try to duplicate lock object handle into
- parent process and call create_lock_in_parent as parent remote thread.
- (lockf_t::del_lock_obj): Call delete_lock_in_parent as parent remote
- thread.
- (fhandler_disk_file::lock): Add lock arg to inode_t::get call.
-
-2012-02-25 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 12.
-
-2012-02-21 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * cygwin.din (scandirat): Export.
- * posix.sgml (std-gnu): Add scandirat.
- * syscalls.cc (scandirat): New function.
- * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
- * include/sys/dirent.h (scandirat): Declare.
-
-2012-02-21 Corinna Vinschen <corinna@vinschen.de>
-
- Based on an idea from Nick Lowe <nick.lowe@gmail.com>:
- * shared.cc (shared_info::init_obcaseinsensitive): Check actual state
- of case sensitivity on post-Windows 2000 systems.
- * wincap.h (wincaps::kernel_is_always_casesensitive): New element.
- * wincap.cc: Implement above element throughout.
-
-2012-02-20 Corinna Vinschen <corinna@vinschen.de>
-
- * flock.cc (inode_t::del_my_locks): Drop useless counter lc. Close
- lock object handle explicitely in case of called during fork. Add
- comment to explain why.
- * fork.cc (frok::child): Drop declaration of fixup_lockf_after_fork.
-
-2012-02-17 Corinna Vinschen <corinna@vinschen.de>
-
- * timer.cc (getitimer): Don't create another local ret variable in
- timer_gettime calling branch. Simplify conditional since timer_gettime
- always returns 0 or -1 anyway.
-
-2012-02-17 Corinna Vinschen <corinna@vinschen.de>
-
- * ntdll.h (struct _PEB): Add EnvironmentUpdateCount member.
- * spawn.cc (child_info_spawn::worker): Speed up job recognition. Expand
- comment to explain every little detail and so we never forget.
- * wincap.h (wincaps::has_program_compatibility_assitant): New element.
- * wincap.cc: Implement above element throughout.
-
-2012-02-17 Corinna Vinschen <corinna@vinschen.de>
-
- * mount.cc (get_disk_type): Drop unneeded toupper call. Convert case
- constants to wide chars.
-
-2012-02-16 Corinna Vinschen <corinna@vinschen.de>
-
- * autoload.cc (NetUseGetInfo): Define.
- * fhandler_disk_file.cc (fhandler_cygdrive::opendir): Rename flptst
- to drive. Call new get_disk_type function rather than is_floppy and
- check SMB drives with the NetUseGetInfo function. Explain why.
- * mount.cc (get_disk_type): New function to evaluate disk type from
- native NT device name.
- (is_floppy): Remove.
- * mount.h (enum disk_type): Define.
- (get_disk_type): Declare.
- * path.h (is_floppy): Drop declaration.
-
-2012-02-15 Corinna Vinschen <corinna@vinschen.de>
-
- * miscfuncs.cc: Revert change from 2012-02-13 which used the
- Windows-provided stack rather than an own stack created in
- CygwinCreateThread.
- (struct thread_wrapper_arg): Rename commitsize to stacklimit.
- (CygwinCreateThread): Rename commitsize to real_stacklimit.
-
-2012-02-15 Corinna Vinschen <corinna@vinschen.de>
-
- * dtable.cc (dtable::init_std_file_from_handle): Use tmp_pathbuf for
- name.
- (handle_to_fn): Ditto for device. Fix size in QueryDosDeviceW call.
-
-2012-02-15 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * smallprint.cc (tmpbuf): Declare new class holding a static buffer,
- protected by a lock.
- (__small_vsprintf): Use tmpbuf to hold large buffer.
- (__small_vswprintf): Ditto.
-
-2012-02-15 Corinna Vinschen <corinna@vinschen.de>
-
- * flock.cc (lf_setlock): Add timeout variable and set before calling
- WFMO. Drop debug output if process is not available. Set timeout to
- 0 instead. Document timeout 0 in WFMO comment.
- (lf_getblock): Drop invalid F_POSIX lock type shortcut. Only return
- overlap if event is not signalled. Fix comment.
-
-2012-02-14 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * pinfo.cc (_pinfo::set_ctty): Revert 2012-02-07 change to skip
- function if tty in question == our ctty.
-
- * syscalls.cc (setsid): Avoid two function calls.
-
- * dtable.cc (dtable::dup_worker): Remove debugging.
-
- * init.cc (search_for): Calculate for every new process rather than
- using shared value.
- (threadfunc_ix): Fill in for every new process rather than sing shared
- value.
-
-2012-02-14 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_disk_file.cc (fhandler_cygdrive::fstat): Don't bother to
- set st_nlink correctly, just set it to 1 to avoid potential network
- timeouts.
-
-2012-02-14 Corinna Vinschen <corinna@vinschen.de>
-
- * flock.cc (lf_setlock): Don't close waited lock object handle before
- we own the node lock. Fix comment.
-
-2012-02-14 Corinna Vinschen <corinna@vinschen.de>
-
- * cygheap.cc (init_cygheap::init_installation_root): Convert function
- init_installation_root into a cygheap method.
- * cygheap.h (struct init_cygheap): Move installation_root,
- installation_key, and installation_key_buf from shared
- .cygwin_dll_common DLL section to cygheap. Declare new method
- init_installation_root.
- * dtable.cc (handle_to_fn): Accommodate the move of installation strings
- to the cygheap.
- * external.cc (cygwin_internal): Ditto.
- * fhandler_console.cc (fhandler_console::open_shared_console): Ditto.
- * fhandler_mailslot.cc (fhandler_mailslot::get_object_attr): Ditto.
- * fhandler_tty.cc: Ditto, throughout.
- * mount.cc (mount_info::init): Ditto.
- * pipe.cc (fhandler_pipe::create): Ditto.
- * shared.cc: Ditto, throughout.
- (installation_root): Remove.
- (installation_key): Move to cygheap.
- (installation_key_buf): Ditto.
- (installation_root_inited): Remove.
- (SPIN_WAIT): Remove.
- (init_installation_root): Move to cygheap.
- (memory_init): Call cygheap->init_installation_root right after
- cygheap->user.init. Drop call of init_installation_root function.
- * shared_info.h (init_installation_root): Drop declaration.
- (installation_root): Ditto.
- (installation_key): Ditto.
- * uinfo.cc (pwdgrp::load): Accommodate the move of installation strings
- to the cygheap.
-
-2012-02-14 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc: Drop including unused headers.
-
-2012-02-13 Corinna Vinschen <corinna@vinschen.de>
-
- * miscfuncs.cc (struct thread_wrapper_arg): Convert char * to PBYTE.
- Change related casts throughout.
- (thread_wrapper): Only do the thread change if the application provided
- the stack. Otherwise, just use the Windows-provided stack. Set up
- POSIX guardpage here, if necessary. Move related comment from
- CygwinCreateThread here.
- (CygwinCreateThread): Never allocate and set up own stack here. Just
- compute stack size to reserve and use value in CreateThread call if
- stack hasn't been provided by the application.
-
-2012-02-13 Corinna Vinschen <corinna@vinschen.de>
-
- * Makefile.in (clean): Remove non-existent regexp dir.
-
- * collate.h: New header.
- (__collate_range_cmp): Declare.
- (__collate_load_error): Define.
- * glob.cc: Pull in latest version from FreeBSD. Simplify and reduce
- Cygwin-specific changes.
- * regex/regcomp.c: Include collate.h on Cygwin as well.
- (__collate_range_cmp): Move from here...
- * nlsfuncs.cc (__collate_range_cmp): ...to here.
-
- * miscfuncs.cc (thread_wrapper): Fix typo in comment.
- (CygwinCreateThread): Take dead zone of Windows stack into account.
- Change the way how the stack is commited and how to handle guardpages.
- Explain how and why.
- * thread.h (PTHREAD_DEFAULT_STACKSIZE): Change definition. Explain why.
-
-2012-02-12 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * include/pthread.h: Include time.h as required by POSIX.
-
-2012-02-12 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exception.h (stackdump): Declare.
- * exceptions.cc (stackdump): Rework to perform all operations needed
- for a stackdump and to avoid recursion.
- (exception::handle): Use simplified stackdump interface.
- * sigproc.cc (signal::exit): Ditto. Delete now, uneeded declaration.
-
-2012-02-11 Corinna Vinschen <corinna@vinschen.de>
-
- * miscfuncs.cc (DEFAULT_STACKSIZE): Remove.
- (CygwinCreateThread): Simplify code by assuming that now stack-related
- input values are undefined. Set stack protection to PAGE_READWRITE,
- as is default on Windows. Add lengthy comment to explain POSIX
- guardpage.
- * thread.cc (pthread_attr::pthread_attr): Initialize stacksize as
- PTHREAD_DEFAULT_STACKSIZE. Initialize guardsize as
- PTHREAD_DEFAULT_GUARDSIZE.
- * thread.h (PTHREAD_DEFAULT_STACKSIZE): Define. Add comment to explain.
- (PTHREAD_DEFAULT_GUARDSIZE): Define.
-
-2012-02-10 Corinna Vinschen <corinna@vinschen.de>
-
- * miscfuncs.cc (DEFAULT_STACKSIZE): Set to 1 Megs. Drop comment about
- RLIMIT_STACK.
-
- * registry.cc (get_registry_hive_path): Expect the user hive path to
- be never longer than MAX_PATH. Don't prepend native NT path prefix
- here. Add comment.
- (load_registry_hive): Prepend native NT path prefix here. Additionally
- try to load user's classes hive.
- * uinfo.cc (cygheap_user::env_userprofile): Reduce size of
- userprofile_env_buf to MAX_PATH. Add comment.
-
-2012-02-10 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * syscalls.cc (setsid): On second thought, in the spirit of keeping
- things kludgy, set ctty to -2 here as a special flag, and...
- (open): ...only eschew setting O_NOCTTY when that case is detected.
-
-2012-02-10 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * syscalls.cc (open): Semi-revert (?) to allowing open of a tty to
- become controlling tty if there is no controlling tty.
-
-2012-02-09 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * exceptions.cc (setup_handler): Reduce system_printf to sigproc_printf
- since it is for a transient situation which will undoubtedly be
- handled.
-
-2012-02-09 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::write): Set
- bytes_to_write to 0 in case it fits into the buffer, otherwise suffer
- early EOF in caller.
-
-2012-02-09 Corinna Vinschen <corinna@vinschen.de>
-
- * dll_init.h (struct dll): Re-add modname.
- * dll_init.cc: Throughout, use modname where it was used before.
- (dll_list::operator[]): Use modname. Move comment from dll_list::alloc
- here and remove hint about GetModuleBaseNameW.
- (dll_list::alloc): Store full path in name, pointer to basename in
- modname. Search dll using modname.
-
-2012-02-08 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (dtable::init_std_file_from_handle): Reinstate opening tty
- handles with O_RDWR permissions.
-
-2012-02-08 Corinna Vinschen <corinna@vinschen.de>
-
- * thread.cc (__pthread_cond_wait_init): New static function replacing
- __pthread_cond_dowait. Only check and potentially initialize cond and
- mutex, drop call to (*cond)->wait.
- (pthread_cond_timedwait): Replace call to __pthread_cond_dowait with
- separate calls to __pthread_cond_wait_init and (*cond)->wait to be
- able to initialize cond before accessing its clock_id member.
- (pthread_cond_wait): Ditto (more or less).
-
-2012-02-08 Christian Franke <franke@computer.org>
-
- * include/sys/wait.h: Remove C++ inline functions for `union wait'.
- For C++ use `void *' as __wait_status_ptr_t instead. This is less type
- safe but fixes compile error on `wait(NULL)'. Remove extra `;'.
-
-2012-02-08 Corinna Vinschen <corinna@vinschen.de>
-
- * sigproc.cc (child_info_fork::abort): Call TerminateProcess rather
- than ExitProcess.
-
-2012-02-08 Corinna Vinschen <corinna@vinschen.de>
-
- * uinfo.cc (cygheap_user::env_userprofile): Simplify since network
- drives are not supported here.
-
-2012-02-08 Corinna Vinschen <corinna@vinschen.de>
-
- * uinfo.cc (cygheap_user::env_userprofile): Convert native
- userprofile path returned from get_registry_hive_path to Win32 path.
-
-2012-02-08 Corinna Vinschen <corinna@vinschen.de>
-
- * dll_init.cc: Throughout, drop usage of modname in favor of name.
- (dll_list::find_by_modname): Remove.
- (dll_list::alloc): Only store module basename in name. Add comment to
- explain why. Simplify address check. Fix formatting in comment.
- * dll_init.h (struct dll): Drop modname and find_by_modname.
-
-2012-02-08 Corinna Vinschen <corinna@vinschen.de>
-
- * dll_init.cc (dll_list::alloc): Add DLL name to fabort output. Fix
- fabort string in case of bss start.
-
-2012-02-08 Corinna Vinschen <corinna@vinschen.de>
-
- * include/sys/sysmacros.h: Include sys/types.h.
-
-2012-02-07 Corinna Vinschen <corinna@vinschen.de>
-
- * mount.cc (mount_info::create_root_entry): Fix format specifier in
- api_fatal message.
-
-2012-02-07 Corinna Vinschen <corinna@vinschen.de>
-
- * include/process.h: Move here from include/cygwin subdir.
- * exec.cc: Change include of process.h to reflect the fact that it's
- now back in include.
- * spawn.cc: Ditto.
- * syscalls.cc: Ditto.
-
-2012-02-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygheap.cc (init_cygheap::manage_console_count): Delete.
- * cygheap.h (init_cygheap::manage_console_count): Ditto.
- (init_cygheap::console_count): Ditto.
- * fhandler.h (fhandler_console::has_a): Ditto.
- (fhandler_console::free_console): Declare new function.
- * fhandler_console.cc (fhandler_console::free_console): Define new
- function.
- (fhandler_console::open_setup): Delete call to manage_console_count.
- (fhandler_console::close): Ditto. Replace with call to free_console().
- * fhandler_tty.cc (fhandler_pty_slave::open): Delete call to
- manage_console_count.
- (fhandler_pty_slave::cleanup): Ditto.
- (fhandler_pty_slave::close): Call fhandler_console::free_console() if
- this is our controlling tty.
- * pinfo.cc (_pinfo::set_ctty): Skip function if tty in question == our
- ctty. Delete call to manage_console_count.
-
- * syscalls.cc (close_all_files): Avoid locking and avoid setting errno
- when iterating over fds.
-
-2012-02-07 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * include/cygwin/version.h: Bump CYGWIN_VERSION_DLL_MINOR to 11.
-
-2012-02-03 Václav Zeman <vhaisman@gmail.com>
-
- * grp.cc (pwdgrp::parse_group): Convert grp from macro to reference.
- * passwd.cc (pwdgrp::parse_passwd): Ditto for res.
-
-2012-02-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * syscalls.cc (close_all_files): Use cygheap_fdget to manipulate
- fhandler. Use debug_only_printf.
-
-2012-02-02 Corinna Vinschen <corinna@vinschen.de>
-
- Fix memory and handle leaks due to fdopendir:
- * dir.cc (closedir): Call global close instead of just releasing the
- fhandler.
- * fhandler_disk_file.cc (fhandler_disk_file::closedir): Don't close
- fhandler handle here, rely on global closedir doing the right thing.
- * fhandler_registry.cc (fhandler_registry::readdir): Also delete
- d_hash when closing registry key.
- (fhandler_registry::rewinddir): Ditto.
-
- Avoid infinite recursion in VirtualStore under UAC:
- * fhandler_registry.cc (VIRT_CLASSES_KEY_PREFIX): Define.
- (VIRT_CLASSES_KEY_SUFFIX): Ditto.
- (VIRT_CLASSES_KEY): Ditto.
- (VIRT_CLASSES_LINKTGT): Ditto.
- (fhandler_registry::exists): Return virt_symlink as file type if
- this is a Classes key under the VirtualStore.
- (fhandler_registry::fstat): Handle virt_symlink.
- (fhandler_registry::readdir): Return DT_LNK as d_type if this is a
- Classes key under the VirtualStore.
- (fhandler_registry::fill_filebuf): Handle Classes symlink.
-
- Handle user impersonation in /proc/registry access:
- * autoload.cc (RegOpenUserClassesRoot): Define.
- (RegOpenCurrentUser): Define.
- * fhandler_registry.cc (RegOpenUserClassesRoot): Declare function
- missing in w32api.
- (RegOpenCurrentUser): Ditto.
- (fetch_hkey): New function.
- (fhandler_registry::open): Call fetch_hkey to get root registry key.
- (open_key): Ditto.
-
-2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fcntl.cc (fcntl64): Add introductory debug statement. Call dup3
- directly via dtable method to avoid over-incrementing refcnt.
-
-2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (dtable::dup_worker): Add comment explaining why refcnt
- isn't incremented here.
- (dtable::dup3): Simplify slightly. Add comment.
- * syscalls.cc (dup3): Increment refcnt here, similarly to dup2.
-
-2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler.cc (fhandler_base_overlapped::has_ongoing_io): Don't block
- GetOverlappedResult since previous IsEventSignalled will have reset the
- handle.
- * select.cc (cygwin_select): Remove space before parentheses in syscall
- debugging output.
- (pipe_data_available): Streamline if block.
-
-2012-01-31 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * syscalls.cc (dup3): Fix debug typo.
-
- * fhandler.cc (flush_async_io): Assume only called for writer. Call
- GetOverlappedResult directly rather than kludging call to
- has_ongoing_io.
- (fhandler_base_overlapped::close): Only start flush thread when closing
- write handle. Only cancel I/O when reading.
-
-2012-01-28 Corinna Vinschen <corinna@vinschen.de>
-
- * cygwin.din: Fix order (DATA first).
-
-2012-01-27 Corinna Vinschen <corinna@vinschen.de>
-
- * dcrt0.cc (is_dos_path): New macro to recognize drive letter and UNC
- DOS paths.
- (globify): Call is_dos_path instead of isdrive.
-
-2012-01-26 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * sigproc.cc (child_info::retry_count): Default to 1.
-
-2012-01-23 Corinna Vinschen <corinna@vinschen.de>
-
- * syscalls.cc (gethostid): Simplify. Just fetch MachineGuid and
- create hash from there.
-
-2012-01-22 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * fhandler.h (fhandler_fifo::arm): Declare new function.
- * fhandler_fifo.cc (fhandler_fifo::arm): Define new function.
- (fhandler_fifo::open): Fix handling of RDWR pipes to avoid opening a
- second handle. Use arm() function to set events.
- (fhandler_fifo::raw_read): Correctly go into "connect again logic" when
- we detect another writer is available. Use arm() function to set event.
- * pipe.cc (fhandler_pipe::create): Add more detail to debugging output.
-
-2012-01-22 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygheap.h (cygheap_fdmanip::release): Simplify.
- * dtable.cc (dtable::release): Make void again. Skip not_open check
- since it is guaranteed to be open. Don't bother deleting here since
- actual deletion will be handled in cygheap_fdget::~cygheap_fdget.
- * dtable.h (dtable::release): Make void again.
- * syscalls.cc (dup2): Bump fhandler use count on successful dup.
-
-2012-01-22 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * cygheap.h (cygheap_fdget::~cygheap_fdget): Simplify now that refcnt
- reports reference count changes itself.
- * fhandler.cc (fhandler_base::reset): Set _refcnt to 0.
- * fhandler.h (fhandler_base::refcnt): Report refcnt when debugging.
-
- * select.cc (cygwin_select): Set return_on_signal to indicate when
- select should be interrupted.
- (select_stuff::wait): Keep looping unless return_on_signal is set.
- * select.h (select_stuff::return_on_signal): New variable.
- (select_stuff::select_stuff): Zero return_on_signal.
-
-2012-01-20 Corinna Vinschen <corinna@vinschen.de>
-
- * fhandler.h (fhandler_registry::opendir): Declare.
- * fhandler_registry.cc (fhandler_registry::opendir): New function.
-
-2012-01-13 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * include/cygwin/config.h (_GLIBC_EXTENSION): Define.
-
-2012-01-11 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * spawn.cc (child_info_spawn::worker): Delete debugging.
-
-2012-01-11 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- Update copyright on all files checked in so far this year.
- * fhandler.h: Use #pragma once rather than ifdef guards.
- (fhandler_console::tc_getpgid): Return our pgid if we have never opened
- a console.
- * fork.cc: Rearrange includes to accommodate fhandler.h use of pinfo.h.
- * sigproc.cc: Ditto.
- * spawn.cc: Ditto.
- (child_info_spawn::worker): Query myself->pgid rather than calling
- expensive function.
- * thread.h: Use #pragma once rather than ifdef guards.
- * pinfo.h: Use #pragma once rather than ifdef guards.
- (pinfo::remember): Don't define if sigproc.h has not been included.
- (pinfo::reattach): Ditto.
- * sigproc.h: Use #pragma once rather than ifdef guards. Use different
- test to see if pinfo.h has been included.
-
-2012-01-09 Corinna Vinschen <corinna@vinschen.de>
-
- * include/cygwin/process.h: Move here from newlib.
- * exec.cc: Change include of process.h to reflect the fact that it's
- now in the include/cygwin subfolder.
- * spawn.cc: Ditto.
- * syscalls.cc: Ditto.
-
-2012-01-09 Corinna Vinschen <corinna@vinschen.de>
-
- * miscfuncs.cc (thread_wrapper): Make sure stack is 16 byte aligned
- to make gcc-3 compiled pthread applications happy.
-
-2012-01-08 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * dtable.cc (dtable::stdio_init): Always initialize console when we
- have one.
- * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Use a better
- method to print tty name for debugging.
- (fhandler_termios::bg_check): Ditto.
- * pinfo.cc (_pinfo::set_ctty): Remove leftover debugging stuff.
- Simplify behavior when setting tty's sid and pgid to avoid overwriting
- previously set values.
-
- * spawn.cc (ch_spawn): Cosmetic change.
-
-2012-01-06 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * cygwin.din (pthread_sigqueue): Export.
- * posix.sgml (std-gnu): Add pthread_sigqueue.
- * thread.cc (pthread_sigqueue): New function.
- * thread.h (pthread_sigqueue): New function.
- * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
-
-2012-01-02 Christopher Faylor <me.cygwin2012@cgf.cx>
-
- * path.cc (get_current_dir_name): Avoid memory leak. Don't return PWD
- contents if directory doesn't actually exist.
-
-2012-01-01 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
-
- * cygwin.din (get_current_dir_name): Export.
- * path.cc (get_current_dir_name): New function.
- * posix.sgml (std-gnu): Add get_current_dir_name.
- * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+2013-01-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.h (_cygtls::signal_exit): Delete from class.
+ * exception.h (cygwin_exception): New class.
+ (cygwin_exception::dumpstack): Declare new function.
+ (cygwin_exception::context): Ditto.
+ (cygwin_exception::dump_exception): Ditto.
+ * exceptions.cc (cygwin_exception::dump_exception): Move into
+ cygwin_exception class. Accommodate new variable names.
+ (cygwin_exception::dumpstack): Ditto stackdump -> dumpstack.
+ (exception::handle): Move andreas processing earlier. Defer signal
+ processing decisions to the signal thread where they belong. Pass
+ exception information to sig_send via new siginfo_t si_cyg field.
+ (ctrl_c_handler): Wait for SIGHUP signal to be processed since it could
+ cause a process exit and we don't want races with thread exit lock.
+ (signal_exit): Move back here from sigproc.cc. Modify arguments and
+ remove from sigpacket class. Decide when to dump core based on signal
+ type.
+ (sigpacket::process): Handle exiting signals in context of threads
+ rather than in the signal thread. Signal debugger on non-Windows
+ signals. Remove setup_signal_exit call.
+ * sigproc.cc (no_signals_available): Remove argument.
+ (signal_exit_code): Delete.
+ (close_my_readsig): Ditto.
+ (_cygtls::signal_exit): Move to exceptions.cc.
+ (sigproc_terminate): Don't attempt to terminate signal thread.
+ (setup_signal_exit): Delete.
+ (exit_thread): Use new si_cyg entry in siginfo_t.
+ (sig_send): Just use empty initializer for si. Accommodate change in
+ no_signals_available argument.
+ (wait_sig): Remove attempt to "go asynchronous" on process exit.
+ Delete __SIGEXIT handling. Don't ever exit.
+ * sigproc.h: Remove __SIGEXIT from signal enum. Renumber.
+ * include/cygwin/signal.h (siginfo_t): Add si_cyg entry.
diff --git a/winsup/cygwin/ChangeLog-2012 b/winsup/cygwin/ChangeLog-2012
new file mode 100644
index 000000000..562c48c41
--- /dev/null
+++ b/winsup/cygwin/ChangeLog-2012
@@ -0,0 +1,3065 @@
+2012-12-31 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * sigproc.cc (wait_sig): Remove spurious extern.
+
+2012-12-31 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (dtable::dup3): Fix bounds checking for valid newfd.
+ * syscalls.cc (dup2): Ditto.
+ * winsup.h (events_terminate): Delete obsolete function declaration.
+
+2012-12-28 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000019.
+ * dcrt0.cc (do_exit): Just set exit_state to ES_EVENTS_TERMINATE and
+ nuke call to events_terminate which just set a superfluous flag.
+ * sigproc.cc (signal_exit_code): New variable.
+ (setup_signal_exit): Define new function.
+ (_cygtls::signal_exit): Remove accommodations for closing the signal
+ pipe handle.
+ (exit_thread): Just sleep if we're exiting.
+ (wait_sig): If signal_exit_code is set, just handle bookkeeping signals
+ and exit ReadFile loop if there is nothing more to process. Call
+ signal_exit at end if signal_exit_code is non-zero.
+ * sigproc.h (setup_signal_exit): Declare new function.
+ * exceptions.cc (sigpacket::process): Use setup_signal_exit to control
+ exiting due to a signal.
+ (exception::handle): Ditto. Query exit_state rather than defunct
+ exit_already to determine if we are exiting.
+ * globals.cc (ES_SIGNAL_EXIT): New enum.
+ * sync.h (lock_process::release): New function for explicitly unlocking
+ muto.
+ (lock_process::~lock_process): Use release method.
+
+2012-12-27 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fork.cc (child_info::prefork): Fix error message formatting.
+
+2012-12-22 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.h (select_stuff): Remove variable names from parameter
+ declarations.
+ (select_info): Ditto.
+ (select_record::dump_select_record): Declare new debugging-only
+ function.
+ (select_info): Zero all fields.
+ (select_pipe_info): Ditto.
+ (select_socket_info): Ditto.
+ (select_serial_info): Ditto.
+ (select_mailslot_info): Ditto.
+ * select.cc (select_record::dump_select_record): Define new
+ debugging-only function.
+ (select_stuff::test_and_set): Call dump_select_record when debugging.
+
+ * thread.cc (pthread_mutex::unlock): Revert setting of tid to 0 since,
+ in this context, it is a number, not a pointer.
+ (pthread_spinlock::unlock): Ditto.
+
+2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * sigproc.cc (exit_thread): undef ExitThread or suffer recursion.
+ Attempt to lock process prior to calling sig_send.
+
+2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ Revert the reversion and go with implementation described in
+ cgf-000017, with some modifications.
+ * init.cc (dll_entry): Revert previous change.
+ * miscfuncs.cc: Include sigproc.h for exit_thread declaration.
+ * winsup.h (ExitThread): Define as 'exit_thread' to ensure no
+ accidental use.
+ * sigproc.cc (exit_thread): New function.
+ (wait_sig): Handle __SIGTHREADEXIT case. Don't just block rather than
+ returning from this function.
+ * sigproc.h (__SIGTHREADEXIT): New enum.
+ (exit_thread): Declare.
+ * sync.cc (muto::release): Accept a tls command-line argument.
+ * sync.h (muto::release): Accept a tls command-line parameter. Default
+ to &_my_tls.
+
+ * cygerrno.h (__set_errno): Define as extern so that no function code
+ is ever emitted.
+ * cygserver_ipc.h (cygserver_ipc.h): Ditto.
+ * miscfuncs.h (transform_chars): Ditto.
+ * path.h (has_attribute): Ditto.
+ * security.h (privilege_luid): Ditto.
+ * winsup.h (flush_file_buffers): Ditto.
+
+2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000018.
+ * init.cc (dll_entry): Grab process lock before exiting to ensure that
+ thread doesn't exit before parent if parent is exiting.
+ * _cygtls.cc (_cygtls::call2): Revert previous 2012-12-21 change.
+ * miscfuncs.cc (thread_wrapper): Ditto.
+ * thread.cc (pthread::exit): Ditto.
+ * sigproc.cc (exit_thread): Ditto.
+ (wait_sig): Ditto.
+ * sync.cc (muto::release): Ditto.
+ * sync.h (muto::release): Ditto.
+ * sigproc.h (__SIGTHREADEXIT): Delete enum.
+ (exit_thread): Delete declaration.
+
+2012-12-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000017.
+ * _cygtls.cc (_cygtls::call2): Use new exit_thread function in place of
+ ExitThread.
+ * miscfuncs.cc (thread_wrapper): Ditto.
+ * thread.cc (pthread::exit): Ditto.
+ (pthread_mutex::unlock): Set tid to NULL rather than 0.
+ (pthread_spinlock::unlock): Ditto.
+ * pinfo.cc (commune_process): Actually call lock_process constructor.
+ * sigproc.cc (exit_thread): New function.
+ (wait_sig): Handle __SIGTHREADEXIT case. Don't just block rather than
+ returning from this function.
+ * sigproc.h (__SIGTHREADEXIT): New enum.
+ (exit_thread): Declare.
+ * sync.cc (muto::release): Accept a tls command-line argument.
+ * sync.h (muto::release): Accept a tls command-line parameter. Default
+ to &_my_tls.
+
+2012-12-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * dcrt0.cc (build_argv): Allow quoted filenames in @ expression.
+
+2012-12-19 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.h (select_stuff::select_stuff): Make default constructor
+ always zero everything while constructor with int arg just zeroes next.
+ * select.cc (select_stuff::test_and_set): Revert to using default
+ constructor.
+
+2012-12-19 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.cc (select_stuff::wait): Add windows error number to error message.
+
+2012-12-18 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.cc (select_stuff::test_and_set): Remove workaround and use
+ proper constructor.
+
+2012-12-18 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.cc (select_stuff::test_and_set): Work around problem of new()
+ not returning zeroed memory.
+
+2012-12-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::write): Don't attempt to sparsify
+ an already sparse file. Drop check for FILE_SUPPORTS_SPARSE_FILES
+ flag. Explicitely set FILE_ATTRIBUTE_SPARSE_FILE attribute in
+ cached attributes.
+ (fhandler_base::lseek): Only set did_lseek if sparseness is supported.
+ * fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Don't attempt
+ to sparsify an already sparse file. Explicitely set
+ FILE_ATTRIBUTE_SPARSE_FILE attribute in cached attributes.
+ * mount.cc (oopt): Add "sparse" flag.
+ (fillout_mntent): Ditto.
+ * path.h (enum path_types): Add PATH_SPARSE.
+ (path_conv::support_sparse): New method.
+ (path_conv::fs_flags): Constify.
+ (path_conv::fs_name_len): Ditto.
+ include/sys/mount.h: Replace unused MOUNT_MIXED flag with MOUNT_SPARSE.
+
+2012-12-10 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * sigproc.h (sig_send): Accept tid as argument #3. Default to NULL.
+ * sigproc.cc (sig_send): Ditto. Pass tid to other sig_send.
+ (sigpending): Send current thread as arg #3.
+
+2012-12-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (sigpacket::process): Reorganize to avoid use of tls
+ before initialization.
+
+ * fhandler_fifo.cc (fhandler_fifo::arm): Avoid improper printing of
+ integer as a string in debug output.
+
+2012-12-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * sigproc.h (sigpacket): Remove parameter names from declarations.
+ (sigpacket::sigtls): Rename from 'tls'.
+ * exceptions.cc (sigpacket::process): Define local tls variable and
+ assign that to sigtls if appropriate. Clarify debugging output.
+ * sigproc.cc (sig_send): Accommodate tls -> sigtls rename.
+ (pending_signals::add): Ditto.
+ (wait_sig): Ditto.
+
+2012-12-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.h (_cygtls::get_signal_arrived): Add parameter to make
+ lock/unlock conditional.
+ * exceptions.cc (_cygtls::interrupt_setup): Don't get a lock when
+ setting signal_arrived since we already have one.
+ * gendef: Add some comments to make it easier to find functions.
+
+2012-12-06 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * include/cygwin/wait.h (WAIT_ANY): Define.
+ (WAIT_MYPGRP): Define.
+
+2012-12-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * child_info.h (class child_info_spawn): Drop unused member lock.
+ (CURR_CHILD_INFO_MAGIC): Update.
+ * sigproc.cc (child_info_spawn::child_info_spawn): Drop setting lock.
+
+2012-12-04 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.h (_cygtls::will_wait_for_signal): Rename from
+ 'signal_waiting' to something more expressive. Reflect rename
+ throughout.
+ (_cygtls::get_signal_arrived): Rename from create_signal_arrived. Move
+ lock here.
+ (_cygtls::set_signal_arrived): Use get_signal_arrived.
+ * exceptions.cc (_cygtls::interrupt_setup): Use get_signal_arrived.
+ * tlsoffsets.h: Regenerate.
+
+2012-11-30 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * spawn.cc (child_info_spawn::worker): Make detection of '/c' case
+ insensitive when looking for cmd.exe command line.
+
+2012-11-26 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * configure.ac: Rename from configure.in.
+ * configure.in: Delete.
+ * configure: Regenerate.
+
+2012-11-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_registry.cc: Drop Mingw.org considerations.
+ * fhandler_serial.cc: Ditto.
+ * fhandler_socket.cc: Ditto.
+ * fhandler_tape.cc: Ditto.
+ * fhandler_tty.cc: Ditto.
+ * net.cc: Ditto.
+ * ntdll.h: Ditto.
+ * sched.cc: Ditto.
+ * sec_helper.cc: Ditto.
+
+2012-11-23 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * configure.in: Remove unneeded ALLOC substitution.
+ * configure: Regenerate.
+ * aclocal.m4: Ditto.
+
+2012-11-23 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * configure.in: Add previously-missed AC_NO_EXECUTABLES.
+ * configure: Regenerate.
+ * aclocal.m4: Ditto.
+
+2012-11-23 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * Makefile.in: Use explicit path to mkdir.
+
+2012-11-22 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.cc (select): Don't return -1 when we've timed out after
+ looping.
+
+2012-11-22 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * Makefile.in: Revamp for new configury.
+ (datarootdir): Add variable setting.
+ (winver_stamp): Accommodate changes to mkvers.sh setting.
+ (libc.a): Fix race when libm.a might not have been built yet.
+ * configure.in: Revamp for new configury.
+ * aclocal.m4: Regenerate.
+ * configure: Ditto.
+ * autogen.sh: New script.
+ * mkvers.sh: Find include directives via CFLAGS and friends rather than
+ assuming that w32api lives nearby.
+
+2012-11-21 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * termios.cc (cfsetspeed): New function.
+ * cygwin.din (cfsetspeed): Export.
+ * posix.sgml (std-bsd): Add cfsetspeed.
+ * include/sys/termios.h (cfsetspeed): Declare.
+ * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2012-11-16 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/mntent.h: Only include paths.h when building for Cygwin.
+ Add comment to explain why.
+
+2012-11-11 Corinna Vinschen <corinna@vinschen.de>
+
+ * winbase.h: Semi-reinstantiate to workaround lack inline assembler
+ implementation of InterlockedCompareExchange for i686 in Mingw64
+ headers.
+ * pinfo.cc (pinfo::init): Remove unused variable mapaddr.
+
+2012-11-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * sigproc.cc (proc_subproc): Delete unused variable child.
+
+2012-11-08 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_termios.cc (fhandler_termios::line_edit): Don't do special
+ character handling when stopped by CTRL-S.
+ * fhandler_tty.cc (bytes_available): Add arguments to debug_only_printf
+ call.
+ * sigproc.cc (proc_subproc): Simplify some if logic.
+
+2012-11-04 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * include/sys/termios.h (CBRK): Define as alias of CEOL.
+ (CREPRINT): Define as alias of CRPRNT.
+ (CDISCARD): Define as alias of CFLUSH.
+ (TTYDEF_*): Define.
+
+2012-10-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/sys/param.h: Include stddef.h to define NULL.
+
+2012-10-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhandler_disk_file::rewinddir): Fix using
+ wrong value in condition.
+
+2012-10-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/sys/cygwin.h: Add missing defines for CW_ALLOC_DRIVE_MAP,
+ CW_MAP_DRIVE_MAP and CW_FREE_DRIVE_MAP.
+
+2012-10-27 Kai Tietz <ktietz@redhat.com>
+
+ * dcrt0.cc (quoted): Renamed strechr to strchrnul.
+ * environ.cc (environ_init): Likewise.
+ * sec_acl.cc (aclfromtext32): Likewise.
+ * sec_auth.cc (extract_nt_dom_user): Likewise.
+ * uinfo.cc (pwdgrp::next_str): Likewise.
+ * string.h (strechr): Likewise.
+
+2012-10-26 Kai Tietz <ktietz@redhat.com>
+
+ * string.h (strechr): Replace assembler by
+ C code.
+ (ascii_strcasematch): Likewise.
+ (ascii_strncasematch): Likwise.
+
+2012-10-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * dir.cc (closedir): Fix syscall_printf.
+
+2012-10-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/signal.h (sigset_t): Define here.
+
+2012-10-24 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * Makefile.in (DLL_IMPORTS): Use system import libraries for
+ kernel32 and ntdll instead of from in-tree w32api.
+ (cygwin0.dll): Remove rule dependency on DLL_IMPORTS, as they
+ are no longer built in-tree.
+
+2012-10-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.h (List_insert): Cast first parameter in
+ InterlockedCompareExchangePointer call to avoid compiler warnings.
+ (List_remove): Ditto.
+
+2012-10-22 Corinna Vinschen <corinna@vinschen.de>
+
+ * winbase.h: Remove.
+
+2012-10-22 Corinna Vinschen <corinna@vinschen.de>
+
+ * child_info.h (CURR_CHILD_INFO_MAGIC): Update.
+
+2012-10-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 18.
+
+2012-10-16 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Remove lloffset.
+ Use offset directly. Add shortcut for lseek(fd, 0, SEEK_CUR) case.
+ (fhandler_dev_floppy::ioctl): Drop wrong RDSETBLK case.
+ * fhandler_raw.cc (fhandler_dev_raw::ioctl): Revamp RDSETBLK code.
+
+2012-10-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_tty.cc (fhandler_pty_slave::write): Fix potential exit from
+ loop with write mutex held. Delete redundant mutex release. Clear tty
+ error once we've grabbed it.
+
+2012-10-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_raw.cc (fhandler_dev_raw::fhandler_dev_raw): Drop gratuitous
+ initializing from previous patch.
+
+2012-10-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_floppy.cc (fhandler_dev_floppy::open): Fix comment.
+
+2012-10-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_tty.cc (fhandler_pty_slave::write): DWORD -> BOOL.
+
+2012-10-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (class fhandler_dev_raw): Add members devbufalloc and
+ devbufalign.
+ (class fhandler_dev_floppy): Remove member bytes_per_sector;
+ * fhandler_floppy.cc (bytes_per_sector): Define as devbufalign.
+ (fhandler_dev_floppy::open): Set devbufalign to a multiple of the
+ sector size and handle devbuf allocation and alignment in !O_DIRECT
+ case here. Change comment accordingly.
+ Call FSCTL_ALLOW_EXTENDED_DASD_IO for partitions as well.
+ (fhandler_dev_floppy::raw_write): Fix comment. Rewrite and fix
+ writing behaviour when application uses read and lseek.
+ (fhandler_dev_floppy::lseek): Use rounddown macro. Call
+ SetFilePointerEx rather than the old SetFilePointer.
+ (fhandler_dev_floppy::ioctl): Reformat switch. Call
+ IOCTL_DISK_UPDATE_PROPERTIES rather than IOCTL_DISK_UPDATE_DRIVE_SIZE
+ in BLKRRPART case. Support BLKIOMIN, BLKIOOPT, BLKPBSZGET and
+ BLKALIGNOFF.
+ * fhandler_raw.cc (fhandler_dev_raw::fhandler_dev_raw): Initialize
+ all devbuf-related members.
+ (fhandler_dev_raw::~fhandler_dev_raw): Delete devbufalloc rather than
+ devbuf.
+ (fhandler_dev_raw::open): Drop allocating devbuf.
+ (fhandler_dev_raw::dup): Allocate devbufalloc and set devbuf to support
+ new sector-aligned devbuf handling.
+ (fhandler_dev_raw::fixup_after_exec): Ditto.
+ * fhandler_tape.cc (fhandler_dev_tape::open): Ditto, set devbufalign
+ to 1.
+ * include/cygwin/fs.h (BLKIOMIN): Define.
+ (BLKIOOPT): Define.
+ (BLKALIGNOFF): Define.
+ (BLKPBSZGET): Define.
+
+2012-10-12 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_raw.cc (fhandler_dev_raw::open): Allow O_EXCL flag, as on
+ Linux.
+
+2012-10-11 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_termios.cc (fhandler_termios::line_edit): Don't manipulate
+ output_mutex on CTRL-S/CTRL-Q to avoid a deadlock.
+ * fhandler_tty.cc (fhandler_pty_slave::write): Loop when output_stopped
+ is detected before acquiring output_mutex. Acquire output_mutex in the
+ loop for each write.
+ * tty.h: Remove some obsolete defines.
+ (tty_min::output_stopped): Make 'bool'.
+
+2012-10-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/in.h (struct in_addr): Guard with s_addr to avoid
+ potential collision with Win32 headers.
+
+2012-10-09 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * child_info.h (child_info_spawn::has_execed): Remove unneeded
+ synchronization.
+
+2012-10-09 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc: Remove unneeded assert.h.
+
+2012-09-17 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (pinfo::init): Detect potential race where short block has
+ been retrieved but PID_EXECED flag is not set.
+
+2012-09-13 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygthread.cc (cygthread::stub): Remove old, unnecessary, FIXMEd code.
+ * spawn.cc (child_info_spawn::worker): Avoid calling close_all_files()
+ twice.
+
+2012-09-02 Jin-woo Ye <jojelino@gmail.com>
+ Corinna Vinschen <corinna@vinschen.de>
+
+ * pseudo-reloc.cc (auto_protect_for): New function.
+ (__write_memory): Call auto_protect_for to handle page protection.
+ (do_pseudo_reloc): Call auto_protect_for to restore old page protection.
+
+2012-08-26 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (pinfo::init): Remove assertion.
+
+2012-08-23 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (_pinfo::exists): Don't consider a process with no state to
+ exist.
+
+2012-08-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * net.cc (get_adapters_addresses): Drop FIXME part of comment.
+
+2012-08-17 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000016.
+ * cygtls.h (_cygtls::push): Inline.
+ (_cygtls::interrupt_now): Change signal number argument to siginfo_t
+ argument.
+ (_cygtls::interrupt_setup): Ditto.
+ (_cygtls::set_siginfo): Delete declaration.
+ (_cygtls::reset_signal_arrived): Don't reset signal_arrived signal.
+ Just reset flag.
+ * exceptions.cc (_cygtls::interrupt_now): Reflect argument changes.
+ Pass si to interrupt_setup.
+ (_cygtls::interrupt_setup): Reflect argument changes. Fill out tls
+ infodata here using passed-in si. Use si.si_signo instead of sig.
+ (sigpacket::setup_handler): Move this function into sigpacket class.
+ Use si field from the class as appropriate.
+ (sigpacket::process): Don't call tls->set_siginfo here since
+ setup_handler could fail. Eliminate now-unneeded sig argument.
+ * sigproc.h (sigpacket::setup_handler): Move setup_handler to this
+ class.
+
+2012-08-17 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (sig_handle_tty_stop): Clear tls sig field.
+ (sigpacket::process): When continuing, set tls->sig before arming
+ signal_arrived.
+
+2012-08-17 Thomas Wolff <towo@towo.net>
+
+ * fhandler_clipboard.cc (fhandler_dev_clipboard::read): Use
+ read-ahead buffer for reading Windows clipboard if caller's
+ buffer is too small for complete characters.
+ * include/limits.h: Remove outdated TODO comment.
+
+2012-08-16 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.cc (_cygtls::operator HANDLE): Reverse '?' test stupidity.
+
+2012-08-16 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygheap.cc (init_cygheap::find_tls): Don't consider unitialized
+ threads.
+ * cygtls.cc (_cygtls::operator HANDLE): Return NULL when tid is not
+ set.
+ * exceptions.cc (setup_handler): Don't try to suspend a thread if it
+ has no handle.
+
+2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ Rename cancelable_wait -> cygwait throughout.
+ * DevNotes: Add entry cgf-000015.
+ * cygwait.h (cygwait): Don't allow an optional PLARGE_INTEGER
+ argument.
+
+2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.h (_cygtls::create_signal_arrived): New function.
+ (_cygtls::set_signal_arrived): Lock creation of signal_arrived.
+ * cygwait.cc (cancelable_wait): Ignore signal_arrived event if _my_tls
+ 'sig' element does not exist.
+ * exceptions.cc (_cygtls::interrupt_setup): Create signal_arrived if
+ recipient thread has not created it.
+
+2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * gendef: Tighten up whitespace detection.
+
+2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * gendef: Delete unneeded read from <IN> which ate an arbitrary line
+ from cygwin.din.
+
+2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (sigdelayed): Move declaration to sigproc.h.
+ * sigproc.h (sigdelayed): Make symbol globally available.
+ * gendef (sigdelayed): Specifically zero incyg and stacklock.
+ * signal.cc (sigwaitinfo): Lock _my_tls and try harder to clean up
+ signal information.
+
+2012-08-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (_pinfo::exists): Don't consider an execed process to exist.
+
+2012-08-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * gmon.c (_mcleanup): Fix scope bug when using gmon_out array.
+
+2012-08-14 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * errno.cc (errmap): Keep sorted.
+
+2012-08-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (semaphore::_fixup_after_fork): Fix Win32 error output in
+ api_fatal call.
+
+2012-08-14 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * errno.cc (errmap): Keep sorted.
+
+2012-08-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * mount.cc (fs_names): Add missing ReFS entry. Change comment.
+ * mount.h (enum fs_info_type): Add comment.
+
+2012-08-13 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * errno.cc (errmap): Map ERROR_SXS_CANT_GEN_ACTCTX to ELIBBAD.
+
+2012-08-09 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000014.
+ * cygheap.cc (tls_sentry): Move here, rename from 'sentry' in cygtls.cc
+ (tls_sentry::lock): Ditto.
+ (nthreads): Move from cygtls.cc
+ (THREADLIST_CHUNK): Ditto.
+ (cygheap_init): Call init_tls_list().
+ (init_cygheap::init_tls_list): Define new function.
+ (init_cygheap::add_tls): Ditto.
+ (init_cygheap::remove_tls): Ditto.
+ (init_cygheap::find_tls): Ditto. Semi-resurrect from
+ _cygtls::find_tls.
+ * cygheap.h (init_cygheap::init_tls_list): Declare new function.
+ (init_cygheap::add_tls): Ditto.
+ (init_cygheap::remove_tls): Ditto.
+ (init_cygheap::find_tls): Ditto.
+ * cygtls.cc (sentry): Delete.
+ (sentry::lock): Ditto.
+ (nthreads): Ditto.
+ (THREADLIST_CHUNK): Ditto.
+ (_cygtls::init): Delete definition.
+ (_cygtls::init_thread): Call cygheap->add_tls() to add thread to global
+ list.
+ (_cygtls::remove): cygheap->remove_tls() to remove thread from global
+ list.
+ * cygtls.h (_cygtls::init): Delete declaration.
+ * dcrt0.cc (dll_crt0_0): Delete call to _cygtls::init().
+ * exceptions.cc (sigpacket::process): When no thread is specified, try
+ to find one via cygheap->find_tls.
+
+2012-08-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/sys/wait.h (_wait): Define when building newlib.
+
+2012-08-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * signal.cc (sigwaitinfo): Change cw_sig to the correct cw_sig_eintr.
+
+2012-08-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (sigdelayed): Simplify declaration.
+ (_cygtls::call_signal_handler): Fix test for when to pop signal stack.
+ Only do it exactly when what is on the stack is a no-op.
+
+2012-08-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * spawn.cc (child_info_spawn::worker): Put back a minor variation of
+ Corinna's test for detecting a background process when starting a
+ non-cygwin process.
+
+2012-08-01 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/socket.h (MSG_BCAST): Define.
+ (MSG_MCAST): Define.
+
+2012-08-01 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_socket::recv_internal): Add bool parameter.
+ Add regparm attribute.
+ * fhandler_socket.cc (fhandler_socket::read): Call recv_internal with
+ second parameter set to false.
+ (fhandler_socket::readv): Ditto.
+ (fhandler_socket::recvfrom): Ditto.
+ (fhandler_socket::recv_internal): Convert use_recvmsg from local
+ variable to parameter. Use as request for using WSARecvMsg. Only
+ fail if WSARecvMsg can't be loaded and wsamsg->Control.len > 0,
+ otherwise use WSARecv{From}. Restrict dwFlags to MSG_PEEK when using
+ WSARecvMsg.
+ (fhandler_socket::recvmsg): Prefer using WSARecvMsg. Change priority
+ of tests for not using WSARecvMsg. Call recv_internal with second
+ parameter set accordingly.
+
+2012-08-01 Corinna Vinschen <corinna@vinschen.de>
+
+ * Makefile.in: Semi-revert patch from 2012-07-01, assuming the previous
+ patch to etc::dir_changed fixes the underlying issue.
+
+2012-07-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (etc::dir_changed): Revert muto changes since function is
+ called under lock condition anyway.
+
+2012-07-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (etc::dir_changed): Change `io' to a static NO_COPY
+ variable. Explain why. Add a muto to guard overwriting the changed_h
+ handle by multiple concurrent threads.
+ * path.h (class etc): Drop unused changed_h member.
+
+2012-07-30 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * winlean.h: Define constant which will be needed eventually. Remove
+ hack in favor of another hack.
+ * lib/crt0.h: Use "winlean.h".
+
+2012-07-30 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * winlean.h: Add temporary define.
+ * winsup.h: Remove ancient debugging defines.
+
+2012-07-29 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygwait.cc (cancelable_wait): Add some debugging-only output.
+ * exceptions.cc (sig_handle_tty_stop): Make sure that incyg is cleared
+ when exiting if we have no parent process. Only wait for signal_arrived.
+ (sigpacket::process): Make continue_now a bool. Delay sending
+ signal_arrived until the end. Make code more defensive to avoid
+ calling signal handler when stopped. Only set signal_arrived when
+ stopped.
+ * sigproc.cc (sig_hold): Rename from sigCONT. Make static.
+ (sig_send): Accommodate sigCONT -> sig_hold rename.
+ (wait_sig): Ditto.
+ * sigproc.h (sigCONT): Delete declaration.
+
+ * fhandler_console.cc (fhandler_console::write): Use new '%0c' facility
+ to print characters. Change to paranoid to avoid excessive strace
+ output.
+ * fhandler_tty.cc (fhandler_pty_master::accept_input): Make frequent
+ strace printf "paranoid" to help cut down on strace output size.
+
+ * signal.cc (sigsuspend): Add standard syscall strace output.
+ (sigpause): Ditto.
+ (pause): Ditto.
+
+2012-07-29 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.h (_cygtls::reset_signal_arrived): New function.
+ (set_signal_arrived::~set_signal_arrived): Use reset_signal_arrived to
+ reset state.
+ * exceptions.cc (sig_handle_tty_stop): Use WAIT_SIGNALED rather than
+ assume we know the return from cancelable_wait.
+ (_cygtls::interrupt_setup): Modify to allow calling when executing in
+ non-cygwin code via sigdelayed. Always reset signal_arrived.
+ * gendef: Throughout use start_offset rather than the completely wrong
+ sizeof__cygtls.
+ (_sigdelayed): Rewrite to avoid duplication when calling the signal
+ handler.
+ (sigreturn): Delete.
+ * gentls_offsets: Define start_offset rather than sizeof__cygtls.
+ * tlsoffsets.h: Regenerate.
+
+2012-07-29 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_termios.cc (fhandler_termios::line_edit): Use special case
+ '%0c' handling to print non-printable characters using hex notation.
+ * smallprint.cc (__small_vsprintf): Semi-reimplement printing of
+ non-printable characters in hex but only when padding is specified.
+
+ * dcrt0.cc (dll_crt0_0): Remove tty_list initialization.
+ * shared.cc (memory_init): Initialize tty_list here.
+
+ * path.cc (path_conv::check): Remove unneeded parentheses from if
+ check.
+
+2012-07-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/inttypes.h: Add x86_64 target considerations throughout.
+ Define macros in C++ according to C99 requirements.
+ * include/stdint.h: Ditto.
+
+2012-07-25 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * signal.cc (clock_nanosleep): Force return on signal rather than
+ letting cancelable_wait loop on signal.
+
+2012-07-25 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (enum bin_status): Add dir_not_empty.
+ (try_to_bin): Call NtQueryInformationFile(FileInternalInformation)
+ with exact buffer size. Explain why.
+ Ditto for NtSetInformationFile(FileRenameInformation).
+ Handle race-condition which might lead to renaming a non-empty
+ directory.
+ (unlink_nt): Rearrange and partially rephrase comments related to the
+ STATUS_SHARING_VIOLATION case. Fix condition under which a dir is
+ tested for being non-empty. Handle dir_not_empty return code from
+ try_to_bin. Gracefully handle disappearing directory in rm -r
+ workaround. Fix typo in comment.
+
+2012-07-24 Corinna Vinschen <corinna@vinschen.de>
+
+ * wincap.cc (wincapc::init): Drop memset call since it can result in
+ a race condition. Drop all considerations for pre-Windows 2000 systems
+ since Cygwin won't start on them anyway.
+
+2012-07-23 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ Change "set_thread_waiting" to "set_signal_arrived" throughout.
+
+2012-07-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000013.
+ * cygserver_ipc.h (ipc_set_proc_info): Use _cygtls::ipc_set_proc_info
+ to set per-thread signal arrived value.
+ * cygthread.cc (cygthread::detach): Use per-thread signal_arrived via
+ set_thread_waiting.
+ * fork.cc (_cygtls::fixup_after_fork): Clear signal_arrived.
+ (_cygtls::remove): Close any signal_arrived handle when thread exists.
+ (_cygtls::find_tls): Remove unneeded function.
+ * cygtls.h: Update copyright.
+ (class _cygtls): Reorganize to help avoid rebuilding newlib when
+ structure changes.
+ (_cygtls::event): Delete.
+ (_cygtls::threadkill): Ditto.
+ (_cygtls::signal_waiting): Declare new bool.
+ (_cygtls::find_tls): Delete declaration.
+ (_cygtls::set_threadkill): Ditto.
+ (_cygtls::reset_threadkill): Ditto.
+ (_cygtls::set_signal_arrived): Declare new function.
+ (class set_thread_waiting): Declare new class.
+ * cygwait.cc (cw_nowait_storage): Define.
+ (cygwait): Set per-thread signal_arrived via set_thread_waiting. Don't
+ special-case _main_tls.
+ * cygwait.h (cw_nowait): Define.
+ (cw_infinite): Ditto.
+ (cygwait): Redefine pathological wait-only case.
+ * dcrt0.cc (dll_crt0_0): Remove call to now-defunct events_init().
+ (dll_crt0_1): Remove call to now-defunct create_signal_arrived().
+ * exceptions.cc: Reflect set_signal_mask() argument reordering
+ throughout. Remove signal mask synchronization throughout.
+ (events_init): Delete definition.
+ (mask_sync): Delete now-unneeded mask synchronization.
+ (set_signal_mask): Reverse order of arguments to "standard" to, from
+ layout. Rename "newmask" argument to "setmask". Remove debugging.
+ (sig_handle_tty_stop): Use cancelable_wait rather than WFMO.
+ (_cygtls::interrupt_setup): Don't treat "threadkill" events specially.
+ Conditionally set signal_arrived depending on whether the thread has
+ created it or not.
+ (sigpacket::process): Reorganize to reflect thread-specific sending of
+ signals which is more in line with the way it was actually supposed to
+ work.
+ * fhandler_socket.cc (get_inet_addr): Use cancelable_wait rather than
+ IsEventSignalled to avoid potential race.
+ (fhandler_socket::wait_for_events): Set signal_arrived event using
+ set_thread_waiting().
+ (fhandler_socket::close): Use cygwait for the case of just
+ waiting 10 ms for a signal.
+ * fhandler_tape.cc (fhandler_dev_tape::_lock): Use cancelable_wait
+ rather than WFMO. Redo switch/case tests accordingly.
+ * fhandler_termios.cc (fhandler_termios::bg_check): Use cygwait for
+ case of just waiting 0 ms for a potential signal.
+ * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Use
+ cancelable_wait rather than WFSO.
+ * fhandler_windows.cc (fhandler_windows::read): Set per-thread
+ signal_arrived via set_thread_waiting().
+ * flock.cc (lf_setlock): Ditto.
+ * select.cc (pselect): Ditto. Set per-thread signal_arrived using
+ set_thread_waiting().
+ * gendef: Don't special case handling of _cygtls::sig for threads.
+ * gentls_offsets: Use #pragma once in tlsoffsets.h.
+ * ntdll.h: Use #pragma once.
+ * poll.cc: Reflect set_signal_mask() argument reordering.
+ * posix_ipc.cc (ipc_mutex_lock): Use cancelable_wait rather than WFMO.
+ (ipc_cond_timedwait): Set perl-thread signal arrived using
+ set_thread_waiting().
+ * security.h: Use #pragma once.
+ * signal.cc (abort): Reflect set_signal_mask() argument reordering.
+ (clock_nanosleep): Ditto. Change call to cancelable_wait to properly
+ specify handling of cancel and interrupt.
+ (sigwaitinfo): Remove handling of per-thread event in favor of
+ per-thread signal_arrived. Use cancelable_wait rather than WFSO.
+ * sigproc.cc (signal_arrived): Delete definition.
+ (create_signal_arrived): Ditto.
+ * sigproc.h (signal_arrived): Delete declaration.
+ (set_signal_mask): Avoid defining as a "C" function. Don't
+ conditionally declare.
+ (create_signal_arrived): Delete declaration.
+ * syscalls.cc (rename): Use cygwait() rather than WFSO.
+ * thread.h (fast_mutex::lock): Use cw_infinite rather than LARGE_NULL.
+ * wait.cc (wait4): Ditto.
+ * thread.cc (pthread_mutex::lock): Ditto.
+ (pthread::join): Ditto.
+ (semaphore::_wait): Ditto.
+ (pthread_kill): Remove set_threadkill() accommodation.
+ * tlsoffsets.h: Regenerate.
+
+2012-07-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 17.
+
+2012-07-19 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * mount.cc (getmntent_r): Remove unused but set variable.
+
+2012-07-18 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * cygwin.din (getmntent_r): Export.
+ * mount.cc (getmntent_r): New function.
+ * posix.sgml (std-gnu): Add getmntent_r.
+ * include/mntent.h (getmntent_r): Declare.
+ * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2012-07-12 Corinna Vinschen <corinna@vinschen.de>
+
+ * winlean.h: Make sure certain Windows macros are undefined again.
+ Add comment to explain why.
+ * winsup.h: Include winlean.h from C sources as well.
+ * libc/minires-os-if.c: Drop including ntdef.h.
+
+2012-07-12 Corinna Vinschen <corinna@vinschen.de>
+
+ * pseudo-reloc.cc: Drop including wchar.h and ntdef.h.
+ (__report_error): Define module as WCHAR.
+ * advapi.cc: Drop including wchar.h.
+ * kernel32.cc: Ditto.
+
+2012-07-11 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygtls.cc (well_known_dlls): Add ole32.dll and wbemprox.dll.
+
+2012-07-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygwin.sc (.rdata): Revert patch from 2012-07-06.
+
+2012-07-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * passwd.cc (getpass): Make check for closed stream more reliable.
+ Check if setting tty attributes worked and only revert to old state
+ if so.
+
+2012-07-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * Makefile.in, configure.in, mkvers.sh: Revert accidental checkin from
+ 2012-07-06.
+
+2012-07-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * Makefile.in: Change mingw_lib (temporarily?) back to w32api_lib.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * winlean.h (__STRALIGN_H_): Drop definition.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_procnet.cc: Fix copyright.
+ * syslog.cc: Ditto.
+ * libc/minires-os-if.c: Ditto.
+ * libc/minires.h: Ditto.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ In terms of network related functionality, rely on Winsock definitions
+ as much as possible:
+ * dtable.cc: Drop including sys/socket.h.
+ * fhandler_procnet.cc: Change includes accordingly.
+ * fhandler_socket.cc: Ditto.
+ (fhandler_socket::listen): Avoid gcc error message initializing sin6.
+ (LPFN_WSARECVMSG): Only define when building against w32api headers.
+ * net.cc: Change includes accordingly. Define USE_SYS_TYPES_FD_SET
+ and __WSA_ERR_MACROS_DEFINED. Define _INC_NETIOAPI temporarily and
+ explain why.
+ (struct _IP_ADAPTER_UNICAST_ADDRESS_LH): Only define when building
+ against w32api headers.
+ (struct _IP_ADAPTER_ADDRESSES_LH): Ditto.
+ (SIO_GET_INTERFACE_LIST): Ditto.
+ (ws_freeaddrinfo): Rename from freeaddrinfo so as not to collide with
+ Winsock declaration. Change througout.
+ (ws_getaddrinfo): Ditto.
+ (ws_getnameinfo): Ditto.
+ * select.cc: Include netdb.h after defining USE_SYS_TYPES_FD_SET.
+ * syslog.cc: Drop including netinet/in.h. Define USE_SYS_TYPES_FD_SET
+ and include ws2tcpip.h.
+ * include/netdb.h (struct addrinfo): Don't define when building Cygwin.
+ * include/cygwin/if.h: Don't declare if_xxx functions when building
+ Cygwin.
+ * include/cygwin/in.h: Disable most definitions when building Cygwin.
+ * include/cygwin/socket.h: Disable sockaddr and sockaddr_storage
+ definitions when building Cygwin. Same for MCAST_INCLUDE/MCAST_EXCLUDE.
+ * libc/inet_addr.c: Don't define __INSIDE_CYGWIN__ nor
+ __INSIDE_CYGWIN_NET__.
+ * libc/inet_network.c: Ditto.
+ * libc/minires.h: Drop redundant inclusion of netdb.h. Define
+ __INSIDE_CYGWIN_NET__ only before including netdb.h and resolver
+ headers.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * winbase.h: Throughout use LONG rather than long type to prepare for
+ 64 bit.
+ (InterlockedCompareExchangePointer): Define.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_registry.cc (RegOpenUserClassesRoot): Only define when
+ building against w32api headers.
+ (RegOpenCurrentUser): Ditto.
+ * fhandler_tty.cc (GetNamedPipeClientProcessId): Ditto.
+ * ntdll.h (enum _PROCESSINFOCLASS): Add ProcessImageFileName.
+ (RtlInitAnsiString): Declare.
+ (RtlUnicodeStringToAnsiSize): Declare.
+ * sched.cc (GetForegroundWindow): Ditto.
+ * sec_helper.cc (SECURITY_NT_NON_UNIQUE): Define as
+ SECURITY_NT_NON_UNIQUE_RID when building against w32api headers.
+ (cygsid::get_sid): Use SECURITY_NT_NON_UNIQUE rather than
+ SECURITY_NT_NON_UNIQUE_RID.
+ (__sec_user): Use PISECURITY_DESCRIPTOR rather than PSECURITY_DESCRIPTOR
+ to allow valid pointer arithmetic.
+ (_recycler_sd): Ditto.
+ (_everyone_sd): Ditto.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * advapi32.cc (_ADVAPI32_): Drop definition.
+ * kernel32.cc (_KERNEL32_): Ditto.
+ * winlean.h: Add definitions required to use Mingw64 headers.
+ (FILE_SHARE_VALID_FLAGS): Drop definition.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * winsup.h (_WIN32_WINNT): Define. Explain why.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * libc/rcmd.cc: Don't undef __INSIDE_CYGWIN_NET__.
+
+2012-07-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygwin.sc (.rdata): Include all sections starting with .rdata.
+ (.debug_pubtypes): Make sure section is loaded at the end like all other
+ debug sections.
+
+2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dcrt0.cc (build_argv): Guard against NULL pointer dereference found
+ by Clang.
+
+2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (setup_handler): Remove unneeded assignment found by
+ Clang.
+
+2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * hookapi.cc (find_first_notloaded_dll): Remove unused assignment of
+ importRVASize found by Clang.
+
+2012-07-04 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_tty.cc (fhandler_pty_slave::read): Remove duplicate
+ assignment to bytes_in_pipe found by Clang.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (exception::handle): Use error_code in klog, as
+ intended. Found by Clang.
+
+2012-07-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (class fhandler_dev_clipboard): Remove member eof.
+ * fhandler_clipboard.cc: Throughout remove handling of eof member.
+ (fhandler_dev_clipboard::write): Handle EOF condition immediately,
+ rather than pushing it erroneously to the next read call. Rearrange
+ code. Fix bug in CF_UNICODETEXT case which potentially dropped single
+ bytes at the end of the buffer. Add comment.
+ * strfuncs.cc (sys_cp_wcstombs): Allow returning non-NUL-terminated
+ buffer if dst != NULL and len == (size_t) -1. Extend leading comment
+ to explain what's returned in more detail.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_virtual.cc (fhandler_virtual::opendir): Eliminate duplicate
+ assignment found by Clang.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_registry.cc (fhandler_registry::open): Handle missing EROFS
+ error condition pointed to by Clang.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (_pinfo::commune_request): Eliminate unneeded assignment
+ found by Clang.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * external.cc (fillout_pinfo): Return NULL rather than 0.
+ (exit_process): Guard against NULL pointer dereference found by Clang.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * mount.cc (mount_info::conv_to_win32_path): Eliminate unneeded
+ assignment found by Clang.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * path.cc (symlink_info::check): Remove unneeded/unused variable found
+ by Clang.
+
+2012-07-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc (dll_list::alloc): Take long UNC paths into account.
+
+2012-07-01 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * Makefile.in: Add some more optimization flags for cygwait, malloc and
+ path. Explain why -fomit-frame-pointer doesn't work right for passwd.o
+ and path.o. Add -static to link command line for cygwin0.dll.
+
+ * fhandler_disk_file.cc (fhandler_disk_file::facl): Reorganize slightly
+ to silence compiler warning when compiling with -fstack-check.
+ * net.cc (inet_ntop6): Initialize structure members to silence compiler
+ warning when compiling with -fstack-check.
+
+ * pseudo-reloc.cc (_pei386_runtime_relocator): Make this a C function.
+ Detect NULL u.
+ * winsup.h (_pei386_runtime_relocator): Declare this as extern "C".
+ * lib/_cygwin_crt0_common.cc (_pei386_runtime_relocator): Call with
+ NULL argument.
+
+ * signal.cc (sigaction_worker): Eliminate last argument. Let callers
+ report their own strace info. Regparmize.
+ (sigaction): Reflect sigaction_worker changes.
+ (siginterrupt): Ditto.
+
+ * exceptions.cc: Update copyright.
+
+2012-07-01 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * path.cc: Perform some whitespace fixups throughout.
+
+2012-06-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * kernel32.cc (_KERNEL32_): Define. Explain why.
+ (CreateFileMappingW): Drop undocumented flProtect flags.
+
+2012-06-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_serial.cc: Fix includes for IOCTL codes to support Mingw64.
+ * fhandler_tape.cc: Ditto.
+ * flock.cc (allow_others_to_sync): Use PISECURITY_DESCRIPTOR since
+ PSECURITY_DESCRIPTOR is supposed to be the opaque type.
+ * ntdll.h: Remove CreateDisposition flags again, now that they are
+ defined in Mingw64's ntdef.h. Ditto for Create/Open flags.
+
+2012-06-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * exceptions.cc (RtlUnwind): Align declaration with MSDN.
+ * ntdll.h: Define CreateDisposition Flags. Add comments.
+ * winlean.h: Define FILE_SHARE_VALID_FLAGS if using Mingw64 headers.
+
+2012-06-27 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygwait.h (cancelable_wait): Make extern to avoid always including.
+ * select.cc (allocfd_set): Try to make a little more efficient.
+ (cygwin_select): Break into two functions to avoid what seems to be a
+ strange compiler problem with alloca and sel constructor.
+ (select): New function. Always honor return from call_signal_handler.
+ (select_stuff::wait): Always honor return from call_signal_handler.
+ * select.h (select_stuff::select_stuff): Use NULL to initialize
+ pointers rather than 0.
+
+2012-06-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * exceptions.cc (exception::handle): Cast exception code to NTSTATUS
+ for comparison.
+ * ntdll.h: Drop defining NT status codes in favor of including
+ ntstatus.h.
+
+2012-06-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * miscfuncs.cc (WritePipeOverlapped): Define second parameter LPCVOID,
+ rather than PCVOID.
+ * miscfuncs.h (WritePipeOverlapped): Ditto.
+
+2012-06-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * advapi32.cc (_ADVAPI32_): Define. Explain why.
+ (ImpersonateNamedPipeClient): Add missing WINAPI.
+ * ntdll.h (STATUS_INVALID_PARAMETER): Only define if it isn't already.
+ (STATUS_DLL_NOT_FOUND): Ditto.
+ (STATUS_ENTRYPOINT_NOT_FOUND): Ditto.
+ (enum _EVENT_TYPE): Guard against redefinition since it's already
+ defined in Mingw64's ntdef.h.
+ (enum _TIMER_TYPE): Ditto.
+ (enum _SECTION_INHERIT): Define if using Mingw64 headers since it's
+ missing in Mingw64's ntdef.h.
+ * winlean.h (__STRALIGN_H_): Define before including windows.h.
+
+2012-06-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * winsup.h (GetLastError): Drop redundant definition.
+
+2012-06-25 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygwait.cc (cancelable_wait): Make sure that timer is cancelled
+ before cancelling thread.
+
+2012-06-25 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygwait.h (cancelable_wait): Need to force time to negative to
+ indicate relative time.
+
+2012-06-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (realpath): Fix comment.
+
+2012-06-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (realpath): Call mount_info::conv_to_posix_path rather than
+ mount_info::cygdrive_posix_path to convert DOS paths to POSIX paths.
+ Add comment to explain why that's necessary at all.
+
+2012-06-18 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygwait.h (LARGE_NULL): Define.
+ (cancelable_wait): Define variant which accepts DWORD time argument.
+ (cygwait): Use cancelable_wait with DWORD argument.
+ (cygwait): Use cancelable_wait with DWORD argument and cw_sig_eintr for
+ timeout-only case.
+ * exceptions.cc (handle_sigsuspend): Use LARGE_NULL as second argument
+ to distinguish between cancelable_wait variants.
+ * thread.cc (pthread_mutex::lock): Ditto.
+ (pthread::join): Ditto.
+ (semaphore::_timedwait): Ditto.
+ * thread.h (fast_mutex::lock): Ditto.
+ * wait.cc (wait4): Ditto.
+
+2012-06-18 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygwait.cc (cancelable_wait): Mimic old cygwait behavior more closely
+ wrt handling of call_signal_handler.
+ * cygwait.h (WAIT_CANCELED): Move here and redefine.
+ (WAIT_SIGNALED): Ditto.
+ * thread.h (WAIT_CANCELED): Delete.
+ (WAIT_SIGNALED): Ditto.
+
+2012-06-18 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygheap.cc (init_cygheap::init_installation_root): Rearrange code
+ creating valid native NT installation_root path. Only strip last
+ backslash from path if the result is a valid NT path. Explain why.
+
+2012-06-17 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ Add '#include "cygwait.h"' throughout, where appropriate.
+ * DevNotes: Add entry cgf-000012.
+ * Makefile.in (DLL_OFILES): Add cygwait.o.
+ * sigproc.h: Remove cygwait definitions.
+ * cygwait.h: New file. Define/declare Cygwin waitfor functions.
+ * cygwait.cc: Ditto.
+ * exceptions.cc: Include cygwait.h.
+ (handle_sigsuspend): Accommodate change in cancelable_wait arguments.
+ (sigpacket::process): Display thread tls in debugging output.
+ * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Use symbolic
+ names for signal and cancel return.
+ * fhandler_console.cc (fhandler_console::read): Ditto.
+ (fhandler_dev_dsp::Audio_out::waitforspace): Ditto.
+ fhandler_dev_dsp::Audio_in::waitfordata): Ditto.
+ * fhandler_fifo.cc (fhandler_fifo::wait): Ditto.
+ * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
+ * fhandler_tty.cc (fhandler_pty_slave::read): Ditto.
+ * select.cc (cygwin_select): Ditto.
+ * wait.cc (wait4): Ditto.
+ * thread.cc (cancelable_wait): Move definition to cygwait.h.
+ (pthread_cond::wait): Accommodate change in cancelable_wait arguments.
+ (pthread_mutex::lock): Ditto.
+ (pthread_spinlock::lock): Ditto.
+ (pthread::join): Ditto.
+ (pthread::thread_init_wrapper): Display tls in debugging output.
+ (semaphore::_timedwait): Ditto.
+ * thread.h (cw_sig_wait): Move to cygwait.h.
+ (cw_cancel_action): Delete.
+ (cancelable_wait): Move declaration to cygwait.h.
+
+2012-06-11 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * regex/regcomp.c (p_ere): Allow vertical-line following
+ left-parenthesis in ERE, as in glibc.
+
+2012-06-10 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * include/sys/elf_common.h (R_386_16): Define.
+ (R_386_PC16): Define.
+ (R_386_8): Define.
+ (R_386_PC8): Define.
+
+2012-06-09 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.cc (cygwin_select): Remove select_timeout test.
+ (select_stuff::wait): Return select_set_zero on timeout.
+ (thread_socket): Report timeout when debugging.
+
+2012-06-05 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * include/elf.h: Update from FreeBSD.
+ * include/machine/elf.h: New header, from FreeBSD.
+ * include/sys/elf.h: Ditto.
+ * include/sys/elf32.h: Update from FreeBSD.
+ * include/sys/elf64.h: Ditto.
+ * include/sys/elf_common.h: Ditto.
+ (R_IA64_*): Define Linux-style names as aliases to R_IA_64_*.
+ (R_SH_*): Define, based on sh-4 psABI.
+ (R_390_*): Define, based on s390x psABI.
+ * include/sys/elf_generic.h: Ditto.
+
+2012-06-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhandler_disk_file::link ): Translate
+ STATUS_NOT_SUPPORTED to EPERM as well.
+
+2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (dtable::dup3): Only return with lock set when O_EXCL flag
+ is passed in.
+ * syscalls.cc (dup_finish): Pass O_EXCL in flags to dtable::dup3.
+
+2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000011.
+ * fhandler.h (fhandler_base::refcnt): Delete.
+ (fhandler_base::inc_refcnt): New function.
+ (fhandler_base::dec_refcnt): New function.
+ * cygheap.h (cygheap_fdnew::~cygheap_fdnew): Accommodate split of
+ refcnt to inc_refcnt/dec_refcnt.
+ (cygheap_fdget::cygheap_fdget): Ditto.
+ (cygheap_fdget::~cygheap_fdget::cygheap_fdget): Ditto.
+ * dtable.cc (dtable::release): Ditto.
+ (cygwin_attach_handle_to_fd): Ditto.
+ (dtable::init_std_file_from_handle): Ditto.
+ (dtable::dup3): On success, return with fdtab locked.
+ * dtable.h (dtable): Add dup_finish as a friend.
+ * syscalls.cc (dup_finish): Define new function. Increment refcnt
+ while fdtab is locked.
+ (dup2): Use common dup_finish() to perform dup operation.
+ (dup3): Ditto.
+
+2012-06-03 Corinna Vinschen <corinna@vinschen.de>
+
+ * globals.cc (ro_u_refs): New R/O unicode string.
+ * mount.cc (fs_info::update): Recognize ReFS.
+ * mount.h (enum fs_info_type): Add refs.
+ (class fs_info): Add refs flag and accessor methods.
+ * ntdll.h (RtlAddAccessAllowedAceEx): Declare.
+ (RtlAddAccessDeniedAceEx): Declare.
+ * path.h (path_conv::fs_is_refs): Define.
+ * sec_helper.cc (_recycler_sd): New function to create security
+ descriptors suitable for the recycler bin starting with Vista.
+ * security.cc (add_access_allowed_ace): Use RtlAddAccessAllowedAceEx
+ and drop code to set AceFlags explicitely.
+ (add_access_denied_ace): Use RtlAddAccessDeniedAceEx and drop code to
+ set AceFlags explicitely.
+ * security.h (_recycler_sd): Declare.
+ (recycler_sd): Define.
+ * syscalls.cc (desktop_ini): Change formatting.
+ (desktop_ini_ext): Define third line of recycler desktop.ini file
+ since Vista,
+ (try_to_bin): Handle ReFS just like NTFS. Write Vista and later
+ Recycler in all uppercase, just like shell32 does when recreating it.
+ Fix comments to include ReFS. Don't implicitely reuse object
+ attributes from earlier NtOpenFile call, rather recreate it for safety.
+ Use recycler_sd call when creating security descriptor for Recycler
+ dirs and files on Vista and later. Write third line of desktop.ini
+ when on Vista and later.
+
+2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * winbase.h: Add missing copyright date.
+
+2012-06-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.cc (cygwin_select): Make sure that we only return -1 as an
+ error return.
+ (select_stuff::wait): Semi-revert to previous method for filling out
+ w4.
+
+2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * select.cc (cygwin_select): Add some comments.
+ (select_stuff::wait): Ditto.
+
+2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000010.
+ * select.cc (set_handle_or_return_if_not_open): Remove unneeded final
+ backslash from definition.
+ (cygwin_select): Reorganize to incorporate outer retry loop. Move
+ remaining time recalculation here for retry case. Use
+ select_stuff::wait_states for loop control.
+ (select_stuff::cleanup): Avoid unneeded initialization.
+ (select_stuff::wait): Modify definition to return
+ select_stuff::wait_states. Eliminate is_cancelable. Don't inspect
+ element 1 of an array if it is a cancel handle. Remove loop. Rely on
+ being called from enclosing loop in cygwin_select. Remove time
+ recalculation when restarting. Try harder to always return from the
+ bottom.
+ * select.h (select_stuff::wait_state): New enum.
+ (select_stuff::wait): Modify declaration to return
+ select_stuff::wait_states.
+
+2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (setup_handler): Make debugging output a little more
+ verbose.
+
+2012-06-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygtls.h (_cygtls::protect_linked_list): Delete unused field.
+
+2012-05-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * hookapi.cc (find_first_notloaded_dll): Extend comment. Fix usage of
+ mapped memory. Shorten static library name buffer to MAX_PATH. Use
+ strlcpy to copy library name to buffer. Only Unmap "map" if it has been
+ Mapped before.
+ * pinfo.cc (status_exit): Drop unneeded declaration of
+ find_first_notloaded_dll in favor of the declaration in winsup.h.
+
+2012-05-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc: Remove temporary newlib workaround, now that newlib
+ handles thread cancellation by itself.
+ (class __cygwin_lock_handler): Remove.
+ (__cygwin_lock_cleanup): Remove.
+ (__cygwin_lock_lock): Revert newlib workaround,
+ (__cygwin_lock_trylock): Ditto.
+ (__cygwin_lock_unlock): Ditto.
+ (pthread::pop_cleanup_handler): Ditto.
+
+2012-05-29 Corinna Vinschen <corinna@vinschen.de>
+
+ * select.cc (select_stuff::wait): Temporarily disable restarting
+ entirely.
+
+2012-05-29 Corinna Vinschen <corinna@vinschen.de>
+
+ * security.h (cygsidlist::+=): Correctly copy well_known_sid info from
+ source cygsid.
+
+2012-05-25 Corinna Vinschen <corinna@vinschen.de>
+
+ * registry.cc (reg_key::build_reg): Fix typo in debug output.
+
+2012-05-25 Corinna Vinschen <corinna@vinschen.de>
+
+ * select.cc (select_stuff::wait): When not returning after receiving
+ a signal, recalculate timeout. Apply temporary fix to avoid crashes
+ after calling the signal handler. Explain.
+
+2012-05-25 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_serial.cc (fhandler_serial::raw_read): Check for
+ ERROR_OPERATION_ABORTED rather than ERROR_IO_INCOMPLETE after CancelIo.
+
+2012-05-25 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_serial.cc (fhandler_serial::raw_read): Just call ReadFile
+ directly in case of non-blocking I/O and handle result gracefully.
+
+2012-05-24 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (__cygwin_lock_lock): Replace null thread check with test
+ for cygwin_finished_initializing to handle process startup.
+ (__cygwin_lock_trylock): Ditto.
+ (__cygwin_lock_unlock): Ditto.
+
+2012-05-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (__cygwin_lock_lock): Take null thread at process startup
+ into account.
+ (__cygwin_lock_trylock): Ditto.
+ (__cygwin_lock_unlock): Ditto.
+
+2012-05-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (pthread::cancel): Re-allow asynchronous cancellation from
+ Cygwin code since it looks like the problem is Windows only.
+
+2012-05-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc: Add a temporary workaround to help Cygwin along while
+ newlib doesn't install cleanup handlers. Explain the problem.
+ (class __cygwin_lock_handler): New class.
+ (__cygwin_lock_cleanup): New function.
+ (__cygwin_lock_lock): Push __cygwin_lock_cleanup thread cleanup
+ handler.
+ (__cygwin_lock_trylock): Ditto.
+ (__cygwin_lock_unlock): Pop thread cleanup handler.
+ (pthread::pop_cleanup_handler): Temporarily allow cleanup function to
+ destroy cleanup handler so we can pop in another function than we
+ pushed in.
+
+2012-05-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (pthread::cancel): Only allow asynchronous cancellation
+ if the thread is not executing Cygwin or Windows code. Explain why.
+
+2012-05-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (pthread::precreate): Make sure mutex is recursive.
+ Explain why.
+
+2012-05-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (pthread::pop_cleanup_handler): Move setting the cancelstate
+ to PTHREAD_CANCEL_DISABLE from here...
+ (pthread::pop_all_cleanup_handlers): ...to here, otherwise any explicit
+ call to pthread_cleanup_pop disables cancellation for this thread.
+
+2012-05-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (refcnt): Add i interlocked. Explain why.
+ * winbase.h (ilockadd): New function.
+ (InterlockedAdd): Define as ilockadd.
+
+2012-05-22 Corinna Vinschen <corinna@vinschen.de>
+
+ * devices.in: Fix native name of /dev/kmem.
+ * devices.cc: Regenerate.
+ * dtable.cc (fh_alloc): Don't forget FH_KMEM.
+ * fhandler_mem.cc (fhandler_dev_mem::open): Set errno to EACCES rather
+ than ENOENT on systems not granting access to physical memory from
+ user space.
+
+2012-05-22 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (pthread::cancel): Set thread's cancel_event in
+ PTHREAD_CANCEL_ASYNCHRONOUS case, too. Explain why.
+
+2012-05-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * strace.cc (strace::activate): Move printing heap size from here...
+ * heap.cc (heap_init_info): ...to here. Explain why. Print heap
+ size in hex and decimal.
+
+2012-05-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * net.cc (cygwin_recvfrom): Don't shortcircuit if len == 0. Add comment
+ to explain why.
+ (cygwin_recv): Ditto.
+ (cygwin_recvmsg): Ditto.
+
+2012-05-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (path_conv::isgood_inode): Rearrange, take
+ Samba versions >= 3.5.4 into account, add comments.
+
+2012-05-16 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000009.
+ * smallprint.cc (__small_vsprintf): Always treat '%c' and '%C' as
+ characters. Don't decode them if they are > 127.
+ (__small_vswprintf): Ditto.
+
+2012-05-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000008.
+ * fhandler_tty.cc (bytes_available): Simplify by returning the number
+ of bytes available in the message unless that is zero.
+
+2012-05-14 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * child_info.h (CURR_CHILD_INFO_MAGIC): Update.
+
+2012-05-14 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000007.
+ * child_info.h (child_info_spawn::parent_winpid): Declare new field.
+ (child_info_spawn::get_parent_handle): Declare new function.
+ * dcrt0.cc (child_info_spawn::get_parent_handle): Define new function.
+ (child_info_spawn::handle_spawn): Recreate parent handle if possible
+ when dynamically loaded. Don't mess with parent handle if it's NULL.
+ * spawn.cc (child_info_spawn::worker): Set parent_winpid appropriately.
+
+2012-05-12 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000006.
+ * thread.cc (pthread::pop_cleanup_handler): Set cancel state to
+ disabled to avoid recursively waiting for cancel.
+
+2012-05-12 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000005.
+ * fhandler.h (PIPE_ADD_PID): Redefine to something we actually DON'T
+ use.
+ * pipe.cc (fhandler_pipe::create): Avoid clearing all open_mode bits
+ when checking for PIPE_ADD_PID. Properly keep track of len so that
+ passed in name is not overwritten.
+
+2012-05-10 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * cygwin.din (memrchr): Export.
+ * posix.sgml (std-gnu): Add memrchr.
+ * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2012-05-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 16.
+
+2012-05-08 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000004.
+ * pinfo.cc (pinfo::init): Reuse shared memory if the state is marked
+ with PID_REAPED.
+ * spawn.cc (child_info_spawn::worker): Don't duplicate myself_pinfo
+ into non-cygwin child.
+
+ * fork.cc (frok::parent): Improve error output.
+
+2012-05-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000003.
+ * cygheap.h (init_cygheap::pid_handle): Delete.
+ * dcrt0.cc (child_info_spawn::handle_spawn): Keep parent open if we
+ have execed.
+ * pinfo.cc (pinfo::thisproc): Remove pid_handle manipulations.
+ (pinfo::init): Don't consider a reaped process to be available.
+ * spawn.cc (child_info_spawn::worker): Remove pid_handle manipulations.
+ Make wr_proc_pipe and parent noninheritable when starting a program
+ which doesn't use the Cygwin DLL. Conditionally reset wr_proc_pipe to
+ inheritable if CreateProcess fails. Inject wr_proc_pipe handle into
+ non-Cygwin process. Consider a non-cygwin process to be 'synced'.
+
+2012-05-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: Add entry cgf-000002.
+ * fhandler_tty.cc (bytes_available): Revert to previous Oct-2011
+ behavior where a dummy buffer is used to determine how many bytes will
+ be read.
+ (fhandler_pty_master::ioctl): Correct coercion in assignment.
+
+2012-05-03 Corinna Vinschen <corinna@vinschen.de>
+
+ * net.cc (get_adapters_addresses): Only create thread on affected
+ systems. Change comment acordingly.
+ * wincap.h (wincaps::has_gaa_largeaddress_bug): New element.
+ * wincap.cc: Implement above element throughout.
+ (wincap_8): New globale wincaps to support Windows 8.
+ (wincapc::init): Take Windows 8 into account. Set new
+ has_gaa_largeaddress_bug member to false on 32 bit systems.
+
+2012-05-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * DevNotes: New file. Add entry cgf-000001.
+ * sigproc.cc (proc_terminate): Don't set parent pid of child to 1 if
+ we've execed since the execed process is still considered the parent.
+
+ * child_info.h: Bump copyright.
+
+2012-05-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fenv.cc (fesetround): Fix test for valid input parameter.
+ (fesetprec): Ditto.
+
+2012-04-30 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler.h (PIPE_ADD_PID): Define new flag.
+ * pipe.cc (fhandler_pipe::create): Don't indiscriminately add process
+ id to every pipe since some pipe names (fifo, tty) don't need it.
+ * sigproc.cc (sigproc_init): Pass PIPE_ADD_PID to fhandler_pipe::create
+ to ensure that pid is always part of sigwait pipe name.
+
+2012-04-28 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * environ.cc (struct parse_thing): Add "pipe_byte" option.
+ * globals.cc (pipe_byte): Declare.
+ * pipe.cc (fhandler_pipe::create): Use current process id in pipe name
+ rather than pid for simple name collision avoidance. Do this only once
+ to avoid extra overhead when a busy pipe is found. Honor pipe_byte to
+ create non-message pipes if set.
+ * sigproc.cc (sigproc_init): Use a specific name for the signal pipe.
+
+2012-04-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (find_fast_cwd_pointer): Fix for W8 CP 32 bit.
+
+2012-04-25 Thomas Wolff <towo@towo.net>
+
+ * fhandler.h (class dev_console): Add member ext_mouse_mode5.
+ * fhandler_console.cc (fhandler_console::read): Implement extended
+ mouse mode 1005 (xterm, mintty).
+ Fix actual mouse reporting for large coordinates.
+
+2012-04-24 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 15.
+
+2012-04-24 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_console.cc (ALT_PRESSED): Define earlier, never undefine.
+ (CTRL_PRESSED): Ditto.
+ (fhandler_console::read): Simplify expressions testing for pressed ALT
+ or CTRL modifier keys.
+ (get_nonascii_key): Ditto.
+
+2012-04-24 Thomas Wolff <towo@towo.net>
+
+ * fhandler.h (class dev_console): Add members ext_mouse_mode6 and
+ ext_mouse_mode15.
+ * fhandler_console.cc (fhandler_console::read): Implement extended
+ mouse modes 1015 (urxvt, mintty, xterm) and 1006 (xterm). Recognize,
+ but don't implement extended mouse mode 1005 (xterm, mintty).
+ Support mouse coordinates greater than 222 (each axis). Fix formatting.
+ (fhandler_console::char_command): Initialize enhanced mouse reporting
+ modes.
+
+2012-04-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (fh_alloc): Only disallow opening of nonexistent on-disk
+ device.
+ * path.cc (path_conv::check): Remove PATH_KEPT_HANDLE setting.
+ * path.h (path_types): Remove PATH_KEPT_HANDLE.
+ (path_conv::kept_handle): Delete now-unneeded function.
+
+2012-04-19 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (fh_alloc): Keep fh which was flagged as error if it is for
+ an on-disk device and we were stating it.
+ * path.cc (path_conv::check): Set PATH_KEPT_HANDLE.
+ * path.h (path_types): Add PATH_KEPT_HANDLE.
+ (path_conv::kept_handle): Implement.
+
+2012-04-18 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler.h (fhandler_base::nohandle): Revert to standard
+ implementation.
+ * dtable.cc (dtable::fixup_after_exec): Specifically reject releasing
+ nohandle() type fhandlers rather than relying on contents of io_handle.
+ (dtable::fixup_after_fork): Ditto.
+ * fhandler_termios.cc: Add includes necessary for definitions of
+ have_execed and have_execed_cygwin.
+ (fhandler_termios::sigflush): Don't flush console input when we've
+ started a non-Cygwin process.
+
+2012-04-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * wincap.h: Rename assitant to assistant throughout.
+ * wincap.cc: Ditto.
+ * devices.in (exists_console): Use fhandler_console::exists () rather
+ than raw test.
+ * devices.cc: Regenerate.
+ * fhandler.h (fhandler_console::exists): Define new function.
+ * fhandler_console.cc (fhandler_console::need_invisible): Use
+ fhandler_console::exists () rather than raw test.
+ * spawn.cc: Rename assitant to assistant throughout.
+ (child_info_spawn::worker): Simplify test for when to start a
+ non-Cygwin process in its own process group. Just do it whenever we
+ start a non-Cygwin process.
+
+2012-04-12 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * devices.in (exists_console): Allow /dev/con{sole,in,out} to be
+ referenced if a console exists.
+ * devices.cc: Regenerate.
+ * fhandler_console.cc (fhandler_console::set_unit): Ditto.
+
+2012-04-11 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (fhandler_base::stat_fixup): Fix inode numbers of
+ non-device files in virtual fileysystems.
+
+2012-04-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (cygwin_attach_handle_to_fd): Defend against NULL return
+ from build_fh_*.
+ (dtable::init_std_file_from_handle): Ditto.
+ * mmap.cc (mmap_record::alloc_fh): Ditto.
+ * path.cc (path_conv::check): Ditto.
+
+2012-04-06 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler.h (fhandler_base::nohandle): Implement "by hand" rather than
+ through macro. Set io_handle to INVALID_HANDLE_VALUE when setting flag
+ to true.
+
+2012-04-06 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * path.c (path_conv::check): Avoid directly referencing fields of the
+ dev structure when it can be easily avoided.
+
+2012-04-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 14.
+
+2012-04-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * passwd.cc (pwdgrp::read_passwd): Fix pretty_ls entry typo contain
+ the required number of colons.
+
+2012-04-04 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler.h (fhandler_pty_common::bytes_available): Declare new
+ function.
+ (fhandler_pty_master::flush_to_slave): Ditto.
+ * fhandler_tty.cc (bytes_available): Define new function.
+ (fhandler_pty_common::bytes_available): Ditto.
+ (handler_pty_master::flush_to_slave): Ditto.
+ (fhandler_pty_master::process_slave_output): Call flush_to_slave ()
+ here. Use bytes_available () rather than PeekNamedPipe. Clean up
+ sloppy logic.
+ (fhandler_pty_slave::read): Use bytes_available () rather than
+ PeekNamedPipe.
+ (fhandler_pty_slave::ioctl): Ditto.
+ (fhandler_pty_master::ioctl): Ditto.
+ (fhandler_pty_master::cleanup): Remove ancient #if 0.
+ * select.cc (peek_pipe): Call flush_to_slave whenever we're checking
+ for a pty master.
+
+2012-04-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_nodevice.cc (fhandler_nodevice::open): Convert EROFS to
+ ENOENT if non-existent file got opened for reading only. Explain why.
+ * path.cc (path_conv::check): Stick to ENOENT if file has been opened
+ for informational purposes only. Add to comment.
+
+2012-04-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (path_conv::check): Convert device type to FH_FS for
+ non-existent files on /dev, unless /dev itself doesn't exist on disk.
+ Add comment to explain why.
+
+2012-04-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * hookapi.cc (rvadelta): Compute max_size using SizeOfRawData rather
+ than VirtualSize.
+
+2012-04-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * passwd.cc (_getpass_close_fd): New static pthread cleanup handler.
+ (getpass): Rework to use /dev/tty in the first place. Install
+ _getpass_close_fd as pthread cleanup handler. Flush prompt explicitely.
+ Lock input and switch off signal input handling when reading password.
+
+2012-04-03 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 13.
+
+2012-04-03 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (fhandler_base::stat_fixup): Replace string comparison
+ with new device::is_dev_resident() call.
+
+2012-04-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * devices.h (lives_in_dev): New field.
+ (dev_on_fs): Set bit size.
+ (is_dev_resident): Define new method.
+ * devices.in: Use different method for labelling requested name for dev
+ storage: prefix it with a ='. Use an actual ':' to denote an internal
+ device.
+ (exists_console): Avoid repeated test.
+ (exists_ntdev_silent): Rename from the less-descriptive exists_ntdevs.
+ (dev_dev_storage): Delete unneeded define.
+ * gendevices: Add a flag to each line denoting whether the device lives
+ in /dev space.
+ (generate): Handle special ":" case here for internal devices. Parse
+ =something_dev as requiring a storage location. Tack the rest of the
+ line back onto the reformulated "$rest".
+ * devices.cc: Regenerate.
+
+2012-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * devices.h (device::get_device): New method.
+ * fhandler_dev.cc (fhandler_dev::readdir): Set st_ino to device number.
+ * syscalls.cc (fhandler_base::stat_fixup): Ditto. Fix link count for
+ CD-ROM devices. Fix typo in comment.
+
+2012-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_base::stat_fixup): Rename from
+ fhandler_base::set_ino_and_dev.
+ * syscalls.cc (fhandler_base::stat_fixup): Ditto. Accommodate name
+ change throughout. Fixup link count of console devices.
+
+2012-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * devices.h (FH_CYGDRIVE): Define as DEV_VIRTFS_MAJOR class device.
+ (DEV_CYGDRIVE_MAJOR): Remove.
+ (iscygdrive_dev): Define.
+ * dtable.cc (fh_alloc): Accommodate above change.
+ * path.cc (path_conv::check): Use iscygdrive_dev to check for cygdrive.
+ * syscalls.cc (fhandler_base::set_ino_and_dev): Drop check for
+ DEV_CYGDRIVE_MAJOR from conditional.
+
+2012-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * devices.h (FH_DEV): Define as DEV_VIRTFS_MAJOR class device.
+ (DEV_DEV_MAJOR): Remove.
+ * dtable.cc (fh_alloc): Accommodate above change.
+ * syscalls.cc (set_ino_and_dev): Drop check for DEV_DEV_MAJOR from
+ conditional.
+
+2012-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_base::set_ino_and_dev): Declare.
+ * syscalls.cc (fhandler_base::set_ino_and_dev): New method to set
+ st_ino, st_dev, and st_rdev for devices in a single spot.
+ (fstat64): Call fhandler_base::set_ino_and_dev instead of setting
+ st_ino, st_dev, and st_rdev here.
+ (stat_worker): Ditto.
+
+2012-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_dev::open): Declare.
+ (fhandler_dev::close): Declare.
+ (fhandler_dev::fstat): Declare.
+ (fhandler_dev::fstatvfs): Declare.
+ (fhandler_cygdrive::fstatvfs): Declare.
+ * fhandler_dev.cc (fhandler_dev::open): New method.
+ (fhandler_dev::close): Ditto.
+ (fhandler_dev::fstat): Ditto.
+ (fhandler_dev::fstatvfs): Ditto.
+ * fhandler_disk_file.cc (fhandler_base::fstat_helper): Don't fill
+ st_rdev.
+ (fhandler_cygdrive::fstatvfs): New method.
+ * path.h (path_conv::fs_got_fs): New method.
+ * mount.h (fs_info::got_fs): Change type to bool, make public.
+
+2012-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * mount.cc (fillout_mntent): Use "none" rather than 0 when checking
+ FS type.
+
+2012-04-01 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (dtable::fixup_close): Define new function.
+ (dtable::fixup_after_exec): Use fixup_close() and detect when it was
+ not possible to open an inherited file handle.
+ (dtable::fixup_after_fork): Defensively close any file handles which
+ were not, for some reason, inheritable.
+ * dtable.h: Make #pragma once.
+ (dtable::fixup_close): Declare new function.
+ * fhandler_console.cc (fhandler_console::set_unit): Set I/O handles to
+ NULL when this function fails.
+
+2012-04-01 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_dev.cc (fhandler_dev::readdir): Fix formatting. Simplify
+ code. Use device::type() to fetch dirent compatible device type.
+ Add comment.
+
+2012-03-31 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * devices.h (device::exists_func): Redefine field.
+ (device::dev_on_fs): Remove unneeded bit field. Just make a normal
+ boolean.
+ (device::exists): Redefine function.
+ * devices.in: Move previous functions earlier since they are now only
+ defined static. Rename some functions due to an as-yet unresolved bug
+ in gendevices. Rename posix part of internal-only devices with a
+ double-slash. gendevices will eventuall translate that to a ":".
+ (device::parse): Rework to use dev pointer and dev_storage_end.
+ * devices.cc: Regenerate.
+ * gendevices: Translate "// to ": after shilka processing.
+
+2012-03-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * devices.cc: Regenerate.
+ * devices.h (device::exists_func): New member function pointer,
+ replacing noexpose.
+ (device::expose): Remove.
+ (device::exists_never): Declare.
+ (device::exists_ptys): Declare.
+ (device::exists_cons): Declare.
+ (device::exists_console): Declare.
+ (device::exists_nt_dev): Declare.
+ (device::exists): Declare.
+ * devices.in (dev_storage): Replace former noexpose values with
+ pointers to matching exists_XXX method.
+ (device::exists_never): New method.
+ (device::exists_ptys): New method.
+ (device::exists_cons): New method.
+ (device::exists_console): New method.
+ (device::exists_nt_dev): New method.
+ (device::exists): New method.
+ * fhandler_dev.cc (fhandler_dev::readdir): Replace call to
+ device::expose with call to device::exists and drop all further
+ existence filtering since it's done in device::exists now.
+ * path.cc (path_conv::check): Replace call to device::expose with call
+ to device::exists.
+
+2012-03-30 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * devices.cc: Regenerate.
+ * devices.h (device::noexpose): New field.
+ (device::dev_on_fs): Make a bit field.
+ (get_major): Use proper type for declaration.
+ (expose): New field.
+ (ext_dev_storage): Delete declaration.
+ (dev_storage_size): Ditto.
+ (dev_storage): New declaration.
+ (dev_storage_end): Ditto.
+ * devices.in: Mark /dev/ptym*, /dev/com*, /dev/pipe, /dev/fifo, and
+ "/dev" as "no expose".
+ * fhandler.h (fhandler_dev::lastrealpos): Delete declaration.
+ (fhandler_dev::devidx): Declare new field.
+ * fhandler_disk_file.cc: Move fhandler_dev functions into
+ fhandler_dev.cc.
+ * fhandler_dev.cc: Add includes needed for functions moved from
+ fhandler_disk_file.cc.
+ (dev_storage_scan_start): Define place to start listing devices.
+ (dev_storage_size): Define size of array to scan.
+ (fhandler_dev::fhandler_dev): Move here from fhandler_disk_file.cc.
+ (fhandler_dev::opendir): Ditto.
+ (fhandler_dev::readdir): Just check devidx for non-NULL to determine
+ when to go to disk for /dev content. Use dev_storage rather than
+ ext_dev_storage. Iterate over dev_storage using devidx pointer. Use
+ accessor functions rather than raw references to the device struct.
+ Only increment dir->__d_position when we are actually going to be
+ returning something. Add debug_printf for exit.
+ (fhandler_dev::rewinddir): Set devidx as appropriate depending on
+ whether there's a /dev on disk or not.
+ * gendevices: Don't mark dev_storage static but do put it in the _RDATA
+ section.
+ * path.cc (path_conv::check): Use new "device::expose()" function to
+ decide to forbid programs from referencing internal device types.
+
+2012-03-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * posix.sgml (std-notes): Change description of flock restrictions.
+
+2012-03-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * devices.h (DEV_TTY_MAJOR): Define, use throughout where appropriate.
+ (DEV_VIRTFS_MAJOR): Ditto.
+ * fhandler_dev.cc (fhandler_dev::readdir): Add comments. Tweak tests
+ for invisible devices. Don't print comX devices, only ttySX. Drop
+ requirement to call stat64.
+
+2012-03-29 Corinna Vinschen <corinna@vinschen.de>
+
+ * Makefile.in (DLL_OFILES): Add fhandler_dev.o.
+ * devices.h (DEV_DEV_MAJOR): Define.
+ (FH_DEV): Redefine in terms of DEV_DEV_MAJOR.
+ (ext_dev_storage): Declare.
+ (dev_storage_size): Declare.
+ (dev_dev_storage): Declare.
+ (dev_dev): Define.
+ (isdev_dev): Define.
+ * devices.in (dev_dev_storage): Activate.
+ (ext_dev_storage): Define as externally available pointer to
+ dev_storage.
+ (dev_storage_size): Define to contain number of dev_storage elements.
+ * dir.cc (rmdir): Handle /dev as always not empty.
+ * dtable.cc (fh_alloc): Handle DEV_DEV_MAJOR.
+ * fhandler.h (fhandler_dev): New class, derived from fhandler_disk_file.
+ (fhandler_union): Add fhandler_dev member.
+ * fhandler_disk_file.cc (class __DIR_mounts): Handle /dev directory
+ to make sure it always exists.
+ * fhandler_dev.cc: New file implementing /dev.
+ * globals.cc (ro_u_dev): New R/O unicode string.
+ * path.cc (path_conv::check): Handle FH_DEV device.
+
+2012-03-29 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_console.cc (fhandler_console::set_unit): Don't succeed
+ unless we are opening a console actually associated with this process.
+
+2012-03-29 Corinna Vinschen <corinna@vinschen.de>
+
+ * sec_acl.cc (acl32): Fix potential crash if build_fh_name returns NULL.
+
+2012-03-29 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (ctrl_c_handler): Don't generate a SIGINT if we've
+ execed a non-cygwin process. Let the Windows process deal with it
+ itself.
+
+2012-03-28 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * sigproc.cc (proc_terminate): Avoid releasing myself.
+
+2012-03-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * times.cc (clock_setres): Set minperiod to period.
+
+2012-03-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_process.cc (process_tab): Add entry for mountinfo.
+ (format_process_mountstuff): New function, derived from
+ format_process_mounts. Only open another user's user_info shared
+ memory area if the process is owned by another user. Actually
+ access the opened shared user_info to get the right mount table.
+ For other users, don't print remote cygdrive mount points. Print
+ mountinfo or mounts output depending on the bool mountinfo argument.
+ (format_process_mounts): Just call format_process_mountstuff with
+ mountinfo set to false.
+ (format_process_mountinfo): Ditto with mountinfo set to true.
+
+2012-03-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * times.cc (clock_setres): Revert previous change.
+
+2012-03-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (class fhandler_dev_clipboard): Add fstat method.
+ * fhandler_clipboard.cc (cygcb_t): New type for Cygwin-specific
+ clipboard format.
+ (set_clipboard): Use new clipboard format to allow setting a timestamp.
+ (fhandler_dev_clipboard::fstat): New method. Read modification and
+ access timestamp as well as length from clipboard data.
+ (fhandler_dev_clipboard::read): Use new clipboard format.
+
+2012-03-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * hires.h (hires_ms::dmsecs): Drop unused method.
+ * times.cc (JITTER): Remove.
+ (gtod): Revert to process-local variable.
+ (hires_ms::nsecs): Just return system time to disallow discrepancy with
+ the OS.
+ (hires_ms::resolution): Return coarsest timer value from OS. Add
+ comment to explain why.
+ (clock_setres): Ditto.
+
+2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * child_info.h: Reset magic number.
+
+2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * child_info.h (child_info::postfork): Define new function.
+ * fork.cc (frok::parent): Call postfork to do all of the manipulation
+ required prior to calling pinfo::remember.
+ * pinfo.h (pinfo::set_rd_proc_pipe): Just set pinfo's rd_proc_pipe.
+ Don't bother setting it to NULL.
+ * sigproc.cc (child_info_spawn::wait_for_myself): Call postfork to set
+ up myself for waiting.
+ * spawn.cc (child_info_spawn::worker): Avoid now-unnecessary global
+ lock. Consistently test mode rather than chtype when making
+ wr_proc_pipe decisions. Call postfork() to set up stuff prior to
+ pinfo::remember.
+
+2012-03-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygtls.cc (well_known_dlls): Add advapi32.dll.
+
+2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * child_info.h: Reset magic number.
+ (child_info_spawn::wait_for_myself): Move function to sigproc.cc.
+ * pinfo.cc (is_toplevel_proc): Delete unneeded variable.
+ * sigproc.cc (child_info_spawn::wait_for_myself): Move function from
+ header to here. Do all setup required to properly wait for top-level
+ execed process to exit.
+ * spawn.cc (child_info_spawn::worker): Attempt to properly handle
+ _P_DETACH. Set wr_proc_pipe if top-level process even when execing.
+ Just call wait_for_myself() to... wait for myself. Don't call cleanup
+ twice.
+
+2012-03-21 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (proc_waiter): Remove debugging.
+
+2012-03-20 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (set_std_handle): Call SetStdHandle with NULL if fd is
+ closed.
+ (dtable::release): "Close" standard handle if appropriate.
+ * dcrt0.cc (dll_crt0_0): Fix minor switch formatting problem.
+ * fork.cc (frok::parent): Make minor comment indentation change.
+
+2012-03-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (lseek): Fix debug output.
+
+2012-03-20 Christian Franke <franke@computer.org>
+
+ * ntdll.h (SharedUserData): Add volatile qualifier. This fixes a
+ possible infinite loop in hires_ms::timeGetTime_ns.
+
+2012-03-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/socket.h: Fix definitions of MCAST_INCLUDE and
+ MCAST_EXCLUDE.
+
+2012-03-20 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * child_info.h (CURR_CHILD_INFO_MAGIC): Reset.
+ (child_info::rd_proc_pipe): Declare new field.
+ (child_info::wr_proc_pipe): Ditto.
+ (child_info::prefork): Declare new function, derived from previous
+ pinfo version.
+ * dcrt0.cc (child_info_fork::handle_fork): Close previous wr_proc_pipe
+ when appropriate and assign new one from passed-in child_info block.
+ (child_info_spawn::handle_spawn): Assign our wr_proc_pipe handle from
+ passed-in child_info block.
+ * fork.cc (child_info::prefork): Define new function.
+ (frok::child): Clear rd_proc_pipe and wr_proc_pipe so they will not be
+ closed by the child_info destructor.
+ (frok::parent): Use child_info prefork handling, outside of retry loop.
+ Set rd_proc_pipe in child's pinfo after successful CreateProcess.
+ Eliminate postfork call.
+ * globals.cc (my_wr_proc_pipe): Define/declare new variable.
+ * pinfo.cc (pinfo::pending_rd_proc_pipe): Delete.
+ (pinfo::pending_wr_proc_pipe): Ditto.
+ (pinfo::prefork): Ditto.
+ (pinfo::postfork): Ditto.
+ (pinfo::postexec): Ditto.
+ (pinfo::wait): Assume that rd_proc_pipe is set up correctly prior to
+ call.
+ (_pinfo::alert_parent): Replace "wr_proc_pipe" with "my_wr_proc_pipe".
+ * pinfo.h (_pinfo::_wr_proc_pipe): Delete declaration.
+ (_pinfo::set_rd_proc_pipe): Define new function.
+ (pinfo::pending_rd_proc_pipe): Delete declaration.
+ (pinfo::pending_wr_proc_pipe): Ditto.
+ (pinfo::prefork): Ditto.
+ (pinfo::postfork): Ditto.
+ (pinfo::postexec): Ditto.
+ (pinfo::wr_proc_pipe): Ditto.
+ * sigproc.cc (child_info::child_info): Clear rd_proc_pipe and
+ wr_proc_pipe.
+ (child_info::cleanup): Close rd_proc_pipe and
+ wr_proc_pipe if necessary.
+ (child_info_fork::child_info_fork): Set forker_finished to NULL by
+ default.
+ (child_info_spawn::child_info_spawn): Use my_wr_proc_pipe rather than
+ myself->wr_proc_pipe.
+ (child_info::sync): Ditto.
+ (child_info_spawn::cleanup): Call child_info::cleanup.
+ * spawn.cc (child_info_spawn::worker): Remove call to myself.prefork().
+ Set wr_proc_pipe when execing or set up new rd_proc_pipe/wr_proc_pipe
+ via child_info::prefork when spawning. Remove call to pinfo::postexec.
+ Set rd_proc_pipe in child pinfo when spawning. Use my_wr_proc_pipe
+ rather than myself->wr_proc_pipe. Remove call to postfork.
+
+2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (pinfo_init): Cosmetic change: unset "destroy" for myself.
+ (pinfo::wait): Change some comments.
+ (pinfo::prefork): Move a comment.
+ (pinfo::postfork): Set pending_*_pipe variables to NULL if closed.
+ (pinfo::postexec): Use right name when closing handle.
+ (_pinfo::alert_parent): Ditto.
+ * sigproc.h (hold_everything): Remove debugging label.
+
+2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygserver_ipc.h: Include sigproc.h for signal_arrived declaration.
+
+2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygprops.h: Use #pragma once.
+ * mkglobals_h: Ditto for generated globals.h file.
+ * globals.cc: Use specific NO_GLOBALS_H flag to control inclusion of
+ globals.h.
+ * winsup.h: Honor NO_GLOBALS_H to control inclusion of globals.h. Make
+ clear_procimptoken extern inline so that it is only defined when
+ needed.
+
+2012-03-19 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (cancelable_wait): Don't malloc tbi, just make it a struct
+ on the stack to avoid memory leak.
+
+2012-03-19 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (pinfo::wait): Handle case where prefork was not called
+ prior to calling wait(). This is the case when we are reabsorbing
+ processes after being execed.
+
+2012-03-16 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fork.cc (lock_signals): Move to sigproc.h.
+ (lock_pthread): Ditto.
+ (hold_everything): Ditto.
+ (frok::parent): Call myself.prefork() just before calling
+ CreateProcess. Call myself.postfork () on function exit.
+ * pinfo.cc (pinfo::pending_rd_proc_pipe): Define.
+ (pinfo::pending_wr_proc_pipe): Ditto.
+ (_pinfo::dup_proc_pipe): Delete.
+ (pinfo::wait): Move pipe creation into pinfo::prefork. Set pipe
+ variables from pending_*.
+ (_pinfo::sync_proc_pipe): Delete.
+ (_pinfo::proc_pipe_owner): Ditto.
+ (pinfo::prefork): Define new function.
+ (pinfo::postfork): Ditto.
+ (pinfo::postexec): Ditto.
+ (_pinfo::alert_parent): Remove obsolete call to sync_proc_pipe.
+ (_pinfo::dup_proc_pipe): Delete declaration.
+ (_pinfo::sync_proc_pipe): Ditto.
+ (pinfo::pending_rd_proc_pipe): Declare.
+ (pinfo::pending_wr_proc_pipe): Ditto.
+ (pinfo::prefork): Declare new function.
+ (pinfo::postfork): Ditto.
+ (pinfo::postexec): Ditto.
+ (pinfo::wr_proc_pipe): Define new wrapper function.
+ * sigproc.h: Include "sync.h". Move locking functions from fork to
+ here.
+ * spawn.cc (child_info_spawn::worker): Delete now-unneeded requirement
+ to record orig_wr_proc_pipe. Call hold_everything prior to doing
+ anything. Call myself.prefork() if spawning. Replace wr_proc_pipe
+ synchronization with call to myself.postexec(). Call myself.postfork()
+ if not execing.
+ * sync.h: Replace #ifdef wrapper with "#pragma once".
+
+2012-03-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * hookapi.cc (hook_or_detect_cygwin): Change condition when to use
+ importRVAMaxSize or importRVASize for the mapping size. Make sure
+ to map never more than the section size. Change comments accordingly.
+
+2012-03-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/netdb.h (h_errno): Add self-referencing macro and comment.
+
+2012-03-12 Corinna Vinschen <corinna@vinschen.de>
+ Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler.h (wait_return): Add overlapped_nullread.
+ * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Detect
+ zero-byte read as a special case.
+ (fhandler_base_overlapped::raw_read): Keep looping when zero-byte read
+ detected without EOF.
+ (fhandler_base_overlapped::raw_write): Quiet gcc warning by adding
+ overlapped_nullread to switch statement even though it will never
+ actually be hit.
+
+2012-03-10 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (fh_alloc): Treat pc.dev as unsigned.
+ * fhandler_console.cc (fhandler_console::set_unit): Use lock always to
+ avoid races between competing cygwin processes running on the console.
+
+2012-03-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * hookapi.cc (find_first_notloaded_dll): Fix a compiler warning.
+
+2012-03-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * hookapi.cc (rvadelta): Add parameter to return maximum available
+ size from start of import RVA table to end of section.
+ (find_first_notloaded_dll): Take big executables into account. Use
+ offset and size computation as in hook_or_detect_cygwin, just simpler.
+ (hook_or_detect_cygwin): Return NULL rather than false througout.
+ Change computation of required mapping size to take non-gcc compilers
+ into account. Explain the differences and what we do against them.
+ Don't alloca buf if fn is NULL. Never use buf if fn is NULL.
+
+2012-03-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * net.cc (call_gaa): New thread function to call GetAdaptersAddresses.
+ (get_adapters_addresses): Call call_gaa. If necessary, call it as
+ child thread. Explain why that's necessary.
+
+2012-03-08 Václav Zeman <vhaisman@gmail.com>
+
+ * path.cc (readlink): Avoid calling strlen() twice.
+
+2012-03-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * Throughout, replace usage of w32api's min with MIN from sys/param.h.
+
+2012-03-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (_pinfo::dup_proc_pipe): Reorganize to provide more
+ information for failing condition.
+ (pinfo::wait): Pass name of function to dup_proc_pipe. Eliminate error
+ check for dup_proc_pipe since it never actually returned an error.
+ * pinfo.h (_pinfo::dup_proc_pipe): Add an argument.
+ * spawn.cc (child_info_spawn::worker): Pass name of function to
+ dup_proc_pipe.
+
+2012-03-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * glob.cc (MAXPATHLEN): Reinstantiate with a value of 8192.
+
+2012-03-05 Denis Excoffier <cygwin@Denis-Excoffier.org>
+
+ * pinfo.cc (_pinfo::dup_proc_pipe): Fix order of arguments in debug
+ output.
+
+2012-03-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * init.cc (dll_entry): Move wincap.init call back from here...
+ * dcrt0.cc (dll_crt0_0): ...to here.
+
+2012-03-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygheap.h (enum fcwd_version_t): Move here from path.cc.
+ (class fcwd_access_t): Ditto. Only declare methods.
+ (class cwdstuff): Move fast_cwd_ptr and fast_cwd_version from shared
+ DLL section here.
+ * path.cc: Keep fcwd_access_t method definitions.
+ (fcwd_access_t::fast_cwd_version): New method.
+ (find_fast_cwd_pointer): Change comment. Mention test on W8CP.
+ (cwdstuff::init): Initialize fast_cwd_ptr and fast_cwd_version.
+
+2012-03-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc (dll_list::operator[]): Extend comment a bit more to
+ explain previous patch.
+
+2012-03-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc (dll_list::alloc): Compare linked DLLs by basename only.
+ Explain why. Add code to check if a DLL with the same basename but
+ different path is the same DLL. Bail out if not.
+ (in_load_after_fork): New static NO_COPY bool to allow to differ
+ between linked and loaded DLL at fork.
+ (dll_list::load_after_fork): Set in_load_after_fork accordingly.
+ (dll_dllcrt0_1): Don't treat DLL as linked if in_load_after_fork is set.
+ Drop test for in_forkee.
+
+2012-03-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc: Revert pathname changes from 2012-02-08.
+ (dll_list::operator[]): Add long comment to explain the misery.
+ (dll_list::alloc): Skip long pathname prefix potentially returned by
+ GetModuleFileNameW.
+ * dll_init.h (dll_list::find_by_modname): Add back declaration.
+
+2012-03-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * winver.rc: Bump copyright date.
+
+2012-03-03 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_console.cc (fhandler_console::dup): Only set ctty when we
+ haven't specifically called setsid.
+ * fhandler_tty.cc (fhandler_pty_slave::dup): Ditto. Also add comment
+ documenting research into rxvt problem.
+ * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Don't check
+ specifically for myself->ctty == -1. Test for > 0 as that is the
+ correct test.
+ (fhandler_termios::sigflush): Ditto.
+
+2012-03-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * flock.cc (allow_others_to_sync): Reorder conditional expression to
+ check for DACL presence first, since otherwise dacl pointer value is
+ undefined. Add comment.
+
+2012-03-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * flock.cc (allow_others_to_sync): Use RtlGetDaclSecurityDescriptor
+ rather than accessing the SECURITY_DESCRIPTOR structure directly.
+ Take no DACL and NULL DACL into account.
+
+2012-03-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_console.cc (fhandler_console::input_tcsetattr): Revert
+ previous patch.
+ (fhandler_console::open_setup): Install Ctrl-C handler here, if this
+ console is the controlling tty and the process hasn't been started by
+ a Cygwin process.
+
+2012-03-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_console.cc (fhandler_console::input_tcsetattr): Set the
+ state of the Ctrl-C handler depending on the setting of
+ ENABLE_PROCESSED_INPUT.
+
+2012-02-28 Eric Blake <eblake@redhat.com>
+
+ * include/sys/termios.h (tcgetsid): Fix return type.
+ * termios.cc (tcgetsid): Likewise.
+ * fhandler_termios.cc (fhandler_termios::tcgetsid): Likewise.
+ * fhandler.h (fhandler_base): Likewise.
+ * fhandler.cc (fhandler_base::tcgetsid): Likewise.
+
+2012-02-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygtls.cc (well_known_dlls): Add shlwapi.dll.
+
+2012-02-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygtls.cc (dll_cmp): New comparison function for bsearch.
+ (well_known_dlls): New array containing well-known DLLs.
+ (_cygtls::call2): Add code for BLODA detection.
+ * net.cc (fdsock): Ditto.
+
+2012-02-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * environ.cc (enum settings): Add setbool. Rename justset to setdword
+ to avoid future problems.
+ (struct parse_thing): Change all justset to setbool for bool variables.
+ (parse_options): Add a case for setbool setting for bool variables
+ since justset (now setdword) always writes a DWORD value, thus
+ overwriting adjacent memory locations.
+ * external.cc (cygwin_internal): Drop extern declaration.
+
+2012-02-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * environ.cc (dos_file_warning): Drop declaration.
+ (ignore_case_with_glob): Ditto.
+ (allow_winsymlinks): Ditto.
+ (reset_com): Move definition to globals.cc.
+ (struct parse_thing): Add "detect_bloda" option.
+ * fhandler_serial.cc (fhandler_serial::open): Drop (incorrect)
+ declaration of reset_com.
+ * globals.cc (ignore_case_with_glob): Move definition into C++-only
+ block.
+ (dos_file_warning): Define.
+ (allow_winsymlinks): Define.
+ (reset_com): Define.
+ (detect_bloda): Define.
+ * path.cc (dos_file_warning): Drop definition here.
+ (allow_winsymlinks): Drop definition here.
+
+2012-02-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * flock.cc (LOCK_DIR_NAME_FMT): Define.
+ (LOCK_DIR_NAME_LEN): Define.
+ (LOCK_DIR_NAME_DEV_OFF): Define.
+ (LOCK_DIR_NAME_INO_OFF): Define.
+ (LOCK_OBJ_NAME_FMT): Define. Add comment.
+ (class lockf_t): Use bitsize-explicit types. Declare from_obj_name,
+ (class inode_t): Make use, unuse and inuse methods public. Add a
+ lock argument to get method declaration.
+ (inode_t::get): Add lock argument. Only lock node if lock arg is true.
+ (inode_t::inode_t): Use LOCK_DIR_NAME_FMT as format string.
+ (lockf_t::from_obj_name): New method to generate lockf_t content from
+ lock event object basename.
+ (inode_t::get_all_locks_list): Just call from_obj_name here and copy
+ result into final lockf_t.
+ (create_lock_obj_attr): Use LOCK_OBJ_NAME_FMT as format string.
+ (create_lock_in_parent): New thread function to create lockf_t
+ structure in parent process.
+ (delete_lock_in_parent): New thread function to reap stale BSD locks in
+ parent process.
+ (lockf_t::create_lock_obj): Try to duplicate lock object handle into
+ parent process and call create_lock_in_parent as parent remote thread.
+ (lockf_t::del_lock_obj): Call delete_lock_in_parent as parent remote
+ thread.
+ (fhandler_disk_file::lock): Add lock arg to inode_t::get call.
+
+2012-02-25 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 12.
+
+2012-02-21 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * cygwin.din (scandirat): Export.
+ * posix.sgml (std-gnu): Add scandirat.
+ * syscalls.cc (scandirat): New function.
+ * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+ * include/sys/dirent.h (scandirat): Declare.
+
+2012-02-21 Corinna Vinschen <corinna@vinschen.de>
+
+ Based on an idea from Nick Lowe <nick.lowe@gmail.com>:
+ * shared.cc (shared_info::init_obcaseinsensitive): Check actual state
+ of case sensitivity on post-Windows 2000 systems.
+ * wincap.h (wincaps::kernel_is_always_casesensitive): New element.
+ * wincap.cc: Implement above element throughout.
+
+2012-02-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * flock.cc (inode_t::del_my_locks): Drop useless counter lc. Close
+ lock object handle explicitely in case of called during fork. Add
+ comment to explain why.
+ * fork.cc (frok::child): Drop declaration of fixup_lockf_after_fork.
+
+2012-02-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * timer.cc (getitimer): Don't create another local ret variable in
+ timer_gettime calling branch. Simplify conditional since timer_gettime
+ always returns 0 or -1 anyway.
+
+2012-02-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * ntdll.h (struct _PEB): Add EnvironmentUpdateCount member.
+ * spawn.cc (child_info_spawn::worker): Speed up job recognition. Expand
+ comment to explain every little detail and so we never forget.
+ * wincap.h (wincaps::has_program_compatibility_assitant): New element.
+ * wincap.cc: Implement above element throughout.
+
+2012-02-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * mount.cc (get_disk_type): Drop unneeded toupper call. Convert case
+ constants to wide chars.
+
+2012-02-16 Corinna Vinschen <corinna@vinschen.de>
+
+ * autoload.cc (NetUseGetInfo): Define.
+ * fhandler_disk_file.cc (fhandler_cygdrive::opendir): Rename flptst
+ to drive. Call new get_disk_type function rather than is_floppy and
+ check SMB drives with the NetUseGetInfo function. Explain why.
+ * mount.cc (get_disk_type): New function to evaluate disk type from
+ native NT device name.
+ (is_floppy): Remove.
+ * mount.h (enum disk_type): Define.
+ (get_disk_type): Declare.
+ * path.h (is_floppy): Drop declaration.
+
+2012-02-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * miscfuncs.cc: Revert change from 2012-02-13 which used the
+ Windows-provided stack rather than an own stack created in
+ CygwinCreateThread.
+ (struct thread_wrapper_arg): Rename commitsize to stacklimit.
+ (CygwinCreateThread): Rename commitsize to real_stacklimit.
+
+2012-02-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * dtable.cc (dtable::init_std_file_from_handle): Use tmp_pathbuf for
+ name.
+ (handle_to_fn): Ditto for device. Fix size in QueryDosDeviceW call.
+
+2012-02-15 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * smallprint.cc (tmpbuf): Declare new class holding a static buffer,
+ protected by a lock.
+ (__small_vsprintf): Use tmpbuf to hold large buffer.
+ (__small_vswprintf): Ditto.
+
+2012-02-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * flock.cc (lf_setlock): Add timeout variable and set before calling
+ WFMO. Drop debug output if process is not available. Set timeout to
+ 0 instead. Document timeout 0 in WFMO comment.
+ (lf_getblock): Drop invalid F_POSIX lock type shortcut. Only return
+ overlap if event is not signalled. Fix comment.
+
+2012-02-14 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * pinfo.cc (_pinfo::set_ctty): Revert 2012-02-07 change to skip
+ function if tty in question == our ctty.
+
+ * syscalls.cc (setsid): Avoid two function calls.
+
+ * dtable.cc (dtable::dup_worker): Remove debugging.
+
+ * init.cc (search_for): Calculate for every new process rather than
+ using shared value.
+ (threadfunc_ix): Fill in for every new process rather than sing shared
+ value.
+
+2012-02-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhandler_cygdrive::fstat): Don't bother to
+ set st_nlink correctly, just set it to 1 to avoid potential network
+ timeouts.
+
+2012-02-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * flock.cc (lf_setlock): Don't close waited lock object handle before
+ we own the node lock. Fix comment.
+
+2012-02-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygheap.cc (init_cygheap::init_installation_root): Convert function
+ init_installation_root into a cygheap method.
+ * cygheap.h (struct init_cygheap): Move installation_root,
+ installation_key, and installation_key_buf from shared
+ .cygwin_dll_common DLL section to cygheap. Declare new method
+ init_installation_root.
+ * dtable.cc (handle_to_fn): Accommodate the move of installation strings
+ to the cygheap.
+ * external.cc (cygwin_internal): Ditto.
+ * fhandler_console.cc (fhandler_console::open_shared_console): Ditto.
+ * fhandler_mailslot.cc (fhandler_mailslot::get_object_attr): Ditto.
+ * fhandler_tty.cc: Ditto, throughout.
+ * mount.cc (mount_info::init): Ditto.
+ * pipe.cc (fhandler_pipe::create): Ditto.
+ * shared.cc: Ditto, throughout.
+ (installation_root): Remove.
+ (installation_key): Move to cygheap.
+ (installation_key_buf): Ditto.
+ (installation_root_inited): Remove.
+ (SPIN_WAIT): Remove.
+ (init_installation_root): Move to cygheap.
+ (memory_init): Call cygheap->init_installation_root right after
+ cygheap->user.init. Drop call of init_installation_root function.
+ * shared_info.h (init_installation_root): Drop declaration.
+ (installation_root): Ditto.
+ (installation_key): Ditto.
+ * uinfo.cc (pwdgrp::load): Accommodate the move of installation strings
+ to the cygheap.
+
+2012-02-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc: Drop including unused headers.
+
+2012-02-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * miscfuncs.cc (struct thread_wrapper_arg): Convert char * to PBYTE.
+ Change related casts throughout.
+ (thread_wrapper): Only do the thread change if the application provided
+ the stack. Otherwise, just use the Windows-provided stack. Set up
+ POSIX guardpage here, if necessary. Move related comment from
+ CygwinCreateThread here.
+ (CygwinCreateThread): Never allocate and set up own stack here. Just
+ compute stack size to reserve and use value in CreateThread call if
+ stack hasn't been provided by the application.
+
+2012-02-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * Makefile.in (clean): Remove non-existent regexp dir.
+
+ * collate.h: New header.
+ (__collate_range_cmp): Declare.
+ (__collate_load_error): Define.
+ * glob.cc: Pull in latest version from FreeBSD. Simplify and reduce
+ Cygwin-specific changes.
+ * regex/regcomp.c: Include collate.h on Cygwin as well.
+ (__collate_range_cmp): Move from here...
+ * nlsfuncs.cc (__collate_range_cmp): ...to here.
+
+ * miscfuncs.cc (thread_wrapper): Fix typo in comment.
+ (CygwinCreateThread): Take dead zone of Windows stack into account.
+ Change the way how the stack is commited and how to handle guardpages.
+ Explain how and why.
+ * thread.h (PTHREAD_DEFAULT_STACKSIZE): Change definition. Explain why.
+
+2012-02-12 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * include/pthread.h: Include time.h as required by POSIX.
+
+2012-02-12 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exception.h (stackdump): Declare.
+ * exceptions.cc (stackdump): Rework to perform all operations needed
+ for a stackdump and to avoid recursion.
+ (exception::handle): Use simplified stackdump interface.
+ * sigproc.cc (signal::exit): Ditto. Delete now, uneeded declaration.
+
+2012-02-11 Corinna Vinschen <corinna@vinschen.de>
+
+ * miscfuncs.cc (DEFAULT_STACKSIZE): Remove.
+ (CygwinCreateThread): Simplify code by assuming that now stack-related
+ input values are undefined. Set stack protection to PAGE_READWRITE,
+ as is default on Windows. Add lengthy comment to explain POSIX
+ guardpage.
+ * thread.cc (pthread_attr::pthread_attr): Initialize stacksize as
+ PTHREAD_DEFAULT_STACKSIZE. Initialize guardsize as
+ PTHREAD_DEFAULT_GUARDSIZE.
+ * thread.h (PTHREAD_DEFAULT_STACKSIZE): Define. Add comment to explain.
+ (PTHREAD_DEFAULT_GUARDSIZE): Define.
+
+2012-02-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * miscfuncs.cc (DEFAULT_STACKSIZE): Set to 1 Megs. Drop comment about
+ RLIMIT_STACK.
+
+ * registry.cc (get_registry_hive_path): Expect the user hive path to
+ be never longer than MAX_PATH. Don't prepend native NT path prefix
+ here. Add comment.
+ (load_registry_hive): Prepend native NT path prefix here. Additionally
+ try to load user's classes hive.
+ * uinfo.cc (cygheap_user::env_userprofile): Reduce size of
+ userprofile_env_buf to MAX_PATH. Add comment.
+
+2012-02-10 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * syscalls.cc (setsid): On second thought, in the spirit of keeping
+ things kludgy, set ctty to -2 here as a special flag, and...
+ (open): ...only eschew setting O_NOCTTY when that case is detected.
+
+2012-02-10 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * syscalls.cc (open): Semi-revert (?) to allowing open of a tty to
+ become controlling tty if there is no controlling tty.
+
+2012-02-09 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * exceptions.cc (setup_handler): Reduce system_printf to sigproc_printf
+ since it is for a transient situation which will undoubtedly be
+ handled.
+
+2012-02-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::write): Set
+ bytes_to_write to 0 in case it fits into the buffer, otherwise suffer
+ early EOF in caller.
+
+2012-02-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.h (struct dll): Re-add modname.
+ * dll_init.cc: Throughout, use modname where it was used before.
+ (dll_list::operator[]): Use modname. Move comment from dll_list::alloc
+ here and remove hint about GetModuleBaseNameW.
+ (dll_list::alloc): Store full path in name, pointer to basename in
+ modname. Search dll using modname.
+
+2012-02-08 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (dtable::init_std_file_from_handle): Reinstate opening tty
+ handles with O_RDWR permissions.
+
+2012-02-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (__pthread_cond_wait_init): New static function replacing
+ __pthread_cond_dowait. Only check and potentially initialize cond and
+ mutex, drop call to (*cond)->wait.
+ (pthread_cond_timedwait): Replace call to __pthread_cond_dowait with
+ separate calls to __pthread_cond_wait_init and (*cond)->wait to be
+ able to initialize cond before accessing its clock_id member.
+ (pthread_cond_wait): Ditto (more or less).
+
+2012-02-08 Christian Franke <franke@computer.org>
+
+ * include/sys/wait.h: Remove C++ inline functions for `union wait'.
+ For C++ use `void *' as __wait_status_ptr_t instead. This is less type
+ safe but fixes compile error on `wait(NULL)'. Remove extra `;'.
+
+2012-02-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * sigproc.cc (child_info_fork::abort): Call TerminateProcess rather
+ than ExitProcess.
+
+2012-02-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * uinfo.cc (cygheap_user::env_userprofile): Simplify since network
+ drives are not supported here.
+
+2012-02-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * uinfo.cc (cygheap_user::env_userprofile): Convert native
+ userprofile path returned from get_registry_hive_path to Win32 path.
+
+2012-02-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc: Throughout, drop usage of modname in favor of name.
+ (dll_list::find_by_modname): Remove.
+ (dll_list::alloc): Only store module basename in name. Add comment to
+ explain why. Simplify address check. Fix formatting in comment.
+ * dll_init.h (struct dll): Drop modname and find_by_modname.
+
+2012-02-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc (dll_list::alloc): Add DLL name to fabort output. Fix
+ fabort string in case of bss start.
+
+2012-02-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/sys/sysmacros.h: Include sys/types.h.
+
+2012-02-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * mount.cc (mount_info::create_root_entry): Fix format specifier in
+ api_fatal message.
+
+2012-02-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/process.h: Move here from include/cygwin subdir.
+ * exec.cc: Change include of process.h to reflect the fact that it's
+ now back in include.
+ * spawn.cc: Ditto.
+ * syscalls.cc: Ditto.
+
+2012-02-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygheap.cc (init_cygheap::manage_console_count): Delete.
+ * cygheap.h (init_cygheap::manage_console_count): Ditto.
+ (init_cygheap::console_count): Ditto.
+ * fhandler.h (fhandler_console::has_a): Ditto.
+ (fhandler_console::free_console): Declare new function.
+ * fhandler_console.cc (fhandler_console::free_console): Define new
+ function.
+ (fhandler_console::open_setup): Delete call to manage_console_count.
+ (fhandler_console::close): Ditto. Replace with call to free_console().
+ * fhandler_tty.cc (fhandler_pty_slave::open): Delete call to
+ manage_console_count.
+ (fhandler_pty_slave::cleanup): Ditto.
+ (fhandler_pty_slave::close): Call fhandler_console::free_console() if
+ this is our controlling tty.
+ * pinfo.cc (_pinfo::set_ctty): Skip function if tty in question == our
+ ctty. Delete call to manage_console_count.
+
+ * syscalls.cc (close_all_files): Avoid locking and avoid setting errno
+ when iterating over fds.
+
+2012-02-07 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * include/cygwin/version.h: Bump CYGWIN_VERSION_DLL_MINOR to 11.
+
+2012-02-03 Václav Zeman <vhaisman@gmail.com>
+
+ * grp.cc (pwdgrp::parse_group): Convert grp from macro to reference.
+ * passwd.cc (pwdgrp::parse_passwd): Ditto for res.
+
+2012-02-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * syscalls.cc (close_all_files): Use cygheap_fdget to manipulate
+ fhandler. Use debug_only_printf.
+
+2012-02-02 Corinna Vinschen <corinna@vinschen.de>
+
+ Fix memory and handle leaks due to fdopendir:
+ * dir.cc (closedir): Call global close instead of just releasing the
+ fhandler.
+ * fhandler_disk_file.cc (fhandler_disk_file::closedir): Don't close
+ fhandler handle here, rely on global closedir doing the right thing.
+ * fhandler_registry.cc (fhandler_registry::readdir): Also delete
+ d_hash when closing registry key.
+ (fhandler_registry::rewinddir): Ditto.
+
+ Avoid infinite recursion in VirtualStore under UAC:
+ * fhandler_registry.cc (VIRT_CLASSES_KEY_PREFIX): Define.
+ (VIRT_CLASSES_KEY_SUFFIX): Ditto.
+ (VIRT_CLASSES_KEY): Ditto.
+ (VIRT_CLASSES_LINKTGT): Ditto.
+ (fhandler_registry::exists): Return virt_symlink as file type if
+ this is a Classes key under the VirtualStore.
+ (fhandler_registry::fstat): Handle virt_symlink.
+ (fhandler_registry::readdir): Return DT_LNK as d_type if this is a
+ Classes key under the VirtualStore.
+ (fhandler_registry::fill_filebuf): Handle Classes symlink.
+
+ Handle user impersonation in /proc/registry access:
+ * autoload.cc (RegOpenUserClassesRoot): Define.
+ (RegOpenCurrentUser): Define.
+ * fhandler_registry.cc (RegOpenUserClassesRoot): Declare function
+ missing in w32api.
+ (RegOpenCurrentUser): Ditto.
+ (fetch_hkey): New function.
+ (fhandler_registry::open): Call fetch_hkey to get root registry key.
+ (open_key): Ditto.
+
+2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fcntl.cc (fcntl64): Add introductory debug statement. Call dup3
+ directly via dtable method to avoid over-incrementing refcnt.
+
+2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (dtable::dup_worker): Add comment explaining why refcnt
+ isn't incremented here.
+ (dtable::dup3): Simplify slightly. Add comment.
+ * syscalls.cc (dup3): Increment refcnt here, similarly to dup2.
+
+2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler.cc (fhandler_base_overlapped::has_ongoing_io): Don't block
+ GetOverlappedResult since previous IsEventSignalled will have reset the
+ handle.
+ * select.cc (cygwin_select): Remove space before parentheses in syscall
+ debugging output.
+ (pipe_data_available): Streamline if block.
+
+2012-01-31 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * syscalls.cc (dup3): Fix debug typo.
+
+ * fhandler.cc (flush_async_io): Assume only called for writer. Call
+ GetOverlappedResult directly rather than kludging call to
+ has_ongoing_io.
+ (fhandler_base_overlapped::close): Only start flush thread when closing
+ write handle. Only cancel I/O when reading.
+
+2012-01-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygwin.din: Fix order (DATA first).
+
+2012-01-27 Corinna Vinschen <corinna@vinschen.de>
+
+ * dcrt0.cc (is_dos_path): New macro to recognize drive letter and UNC
+ DOS paths.
+ (globify): Call is_dos_path instead of isdrive.
+
+2012-01-26 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * sigproc.cc (child_info::retry_count): Default to 1.
+
+2012-01-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (gethostid): Simplify. Just fetch MachineGuid and
+ create hash from there.
+
+2012-01-22 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler.h (fhandler_fifo::arm): Declare new function.
+ * fhandler_fifo.cc (fhandler_fifo::arm): Define new function.
+ (fhandler_fifo::open): Fix handling of RDWR pipes to avoid opening a
+ second handle. Use arm() function to set events.
+ (fhandler_fifo::raw_read): Correctly go into "connect again logic" when
+ we detect another writer is available. Use arm() function to set event.
+ * pipe.cc (fhandler_pipe::create): Add more detail to debugging output.
+
+2012-01-22 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygheap.h (cygheap_fdmanip::release): Simplify.
+ * dtable.cc (dtable::release): Make void again. Skip not_open check
+ since it is guaranteed to be open. Don't bother deleting here since
+ actual deletion will be handled in cygheap_fdget::~cygheap_fdget.
+ * dtable.h (dtable::release): Make void again.
+ * syscalls.cc (dup2): Bump fhandler use count on successful dup.
+
+2012-01-22 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * cygheap.h (cygheap_fdget::~cygheap_fdget): Simplify now that refcnt
+ reports reference count changes itself.
+ * fhandler.cc (fhandler_base::reset): Set _refcnt to 0.
+ * fhandler.h (fhandler_base::refcnt): Report refcnt when debugging.
+
+ * select.cc (cygwin_select): Set return_on_signal to indicate when
+ select should be interrupted.
+ (select_stuff::wait): Keep looping unless return_on_signal is set.
+ * select.h (select_stuff::return_on_signal): New variable.
+ (select_stuff::select_stuff): Zero return_on_signal.
+
+2012-01-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_registry::opendir): Declare.
+ * fhandler_registry.cc (fhandler_registry::opendir): New function.
+
+2012-01-13 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * include/cygwin/config.h (_GLIBC_EXTENSION): Define.
+
+2012-01-11 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * spawn.cc (child_info_spawn::worker): Delete debugging.
+
+2012-01-11 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ Update copyright on all files checked in so far this year.
+ * fhandler.h: Use #pragma once rather than ifdef guards.
+ (fhandler_console::tc_getpgid): Return our pgid if we have never opened
+ a console.
+ * fork.cc: Rearrange includes to accommodate fhandler.h use of pinfo.h.
+ * sigproc.cc: Ditto.
+ * spawn.cc: Ditto.
+ (child_info_spawn::worker): Query myself->pgid rather than calling
+ expensive function.
+ * thread.h: Use #pragma once rather than ifdef guards.
+ * pinfo.h: Use #pragma once rather than ifdef guards.
+ (pinfo::remember): Don't define if sigproc.h has not been included.
+ (pinfo::reattach): Ditto.
+ * sigproc.h: Use #pragma once rather than ifdef guards. Use different
+ test to see if pinfo.h has been included.
+
+2012-01-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/process.h: Move here from newlib.
+ * exec.cc: Change include of process.h to reflect the fact that it's
+ now in the include/cygwin subfolder.
+ * spawn.cc: Ditto.
+ * syscalls.cc: Ditto.
+
+2012-01-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * miscfuncs.cc (thread_wrapper): Make sure stack is 16 byte aligned
+ to make gcc-3 compiled pthread applications happy.
+
+2012-01-08 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * dtable.cc (dtable::stdio_init): Always initialize console when we
+ have one.
+ * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Use a better
+ method to print tty name for debugging.
+ (fhandler_termios::bg_check): Ditto.
+ * pinfo.cc (_pinfo::set_ctty): Remove leftover debugging stuff.
+ Simplify behavior when setting tty's sid and pgid to avoid overwriting
+ previously set values.
+
+ * spawn.cc (ch_spawn): Cosmetic change.
+
+2012-01-06 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * cygwin.din (pthread_sigqueue): Export.
+ * posix.sgml (std-gnu): Add pthread_sigqueue.
+ * thread.cc (pthread_sigqueue): New function.
+ * thread.h (pthread_sigqueue): New function.
+ * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
+2012-01-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * path.cc (get_current_dir_name): Avoid memory leak. Don't return PWD
+ contents if directory doesn't actually exist.
+
+2012-01-01 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
+
+ * cygwin.din (get_current_dir_name): Export.
+ * path.cc (get_current_dir_name): New function.
+ * posix.sgml (std-gnu): Add get_current_dir_name.
+ * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
diff --git a/winsup/cygwin/cygtls.h b/winsup/cygwin/cygtls.h
index 5913ce46f..a587f6a13 100644
--- a/winsup/cygwin/cygtls.h
+++ b/winsup/cygwin/cygtls.h
@@ -1,6 +1,6 @@
/* cygtls.h
- Copyright 2003, 2004, 2005, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
+ Copyright 2003, 2004, 2005, 2008, 2009, 2010, 2011, 2012, 2013 Red Hat, Inc.
This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
@@ -220,7 +220,6 @@ public:
__attribute__((regparm(3)));
bool inside_kernel (CONTEXT *);
- void signal_exit (int) __attribute__ ((noreturn, regparm(2)));
void copy_context (CONTEXT *) __attribute__ ((regparm(2)));
void signal_debugger (int) __attribute__ ((regparm(2)));
diff --git a/winsup/cygwin/exception.h b/winsup/cygwin/exception.h
index b0a66b4ee..c14aa1614 100644
--- a/winsup/cygwin/exception.h
+++ b/winsup/cygwin/exception.h
@@ -1,6 +1,6 @@
/* exception.h
- Copyright 2010, 2011, 2012 Red Hat, Inc.
+ Copyright 2010, 2011, 2012, 2013 Red Hat, Inc.
This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
@@ -28,10 +28,15 @@ public:
~exception () __attribute__ ((always_inline)) { _except_list = save; }
};
-void stackdump (DWORD, CONTEXT * = NULL, EXCEPTION_RECORD * = NULL);
-extern void inline
-stackdump (DWORD n, bool)
+class cygwin_exception
{
- stackdump (n, (CONTEXT *) 1);
-}
-
+ DWORD ebp;
+ PCONTEXT ctx;
+ EXCEPTION_RECORD *e;
+ void dump_exception ();
+public:
+ cygwin_exception (DWORD in_ebp, PCONTEXT in_ctx = NULL, EXCEPTION_RECORD *in_e = NULL):
+ ebp (in_ebp), ctx (in_ctx), e (in_e) {}
+ void dumpstack ();
+ PCONTEXT context () const {return ctx;}
+};
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index f1f0a43f8..93602c97a 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -1,7 +1,7 @@
/* exceptions.cc
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010, 2011, 2012, 2013 Red Hat, Inc.
This file is part of Cygwin.
@@ -163,8 +163,8 @@ open_stackdumpfile ()
/* Utilities for dumping the stack, etc. */
-static void
-dump_exception (EXCEPTION_RECORD *e, CONTEXT *in)
+void
+cygwin_exception::dump_exception ()
{
const char *exception_name = NULL;
@@ -181,15 +181,15 @@ dump_exception (EXCEPTION_RECORD *e, CONTEXT *in)
}
if (exception_name)
- small_printf ("Exception: %s at eip=%08x\r\n", exception_name, in->Eip);
+ small_printf ("Exception: %s at eip=%08x\r\n", exception_name, ctx->Eip);
else
- small_printf ("Signal %d at eip=%08x\r\n", e->ExceptionCode, in->Eip);
+ small_printf ("Signal %d at eip=%08x\r\n", e->ExceptionCode, ctx->Eip);
small_printf ("eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\r\n",
- in->Eax, in->Ebx, in->Ecx, in->Edx, in->Esi, in->Edi);
+ ctx->Eax, ctx->Ebx, ctx->Ecx, ctx->Edx, ctx->Esi, ctx->Edi);
small_printf ("ebp=%08x esp=%08x program=%W, pid %u, thread %s\r\n",
- in->Ebp, in->Esp, myself->progname, myself->pid, cygthread::name ());
+ ctx->Ebp, ctx->Esp, myself->progname, myself->pid, cygthread::name ());
small_printf ("cs=%04x ds=%04x es=%04x fs=%04x gs=%04x ss=%04x\r\n",
- in->SegCs, in->SegDs, in->SegEs, in->SegFs, in->SegGs, in->SegSs);
+ ctx->SegCs, ctx->SegDs, ctx->SegEs, ctx->SegFs, ctx->SegGs, ctx->SegSs);
}
/* A class for manipulating the stack. */
@@ -273,7 +273,7 @@ stack_info::walk ()
}
void
-stackdump (DWORD ebp, PCONTEXT in, EXCEPTION_RECORD *e)
+cygwin_exception::dumpstack ()
{
static bool already_dumped;
@@ -283,11 +283,11 @@ stackdump (DWORD ebp, PCONTEXT in, EXCEPTION_RECORD *e)
open_stackdumpfile ();
if (e)
- dump_exception (e, in);
+ dump_exception ();
int i;
- thestack.init (ebp, 1, !in); /* Initialize from the input CONTEXT */
+ thestack.init (ebp, 1, !ctx); /* Initialize from the input CONTEXT */
small_printf ("Stack trace:\r\nFrame Function Args\r\n");
for (i = 0; i < 16 && thestack++; i++)
{
@@ -349,7 +349,8 @@ cygwin_stackdump ()
CONTEXT c;
c.ContextFlags = CONTEXT_FULL;
GetThreadContext (GetCurrentThread (), &c);
- stackdump (c.Ebp);
+ cygwin_exception exc (c.Ebp);
+ exc.dumpstack ();
}
#define TIME_TO_WAIT_FOR_DEBUGGER 10000
@@ -484,7 +485,7 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void
if (exit_state || e->ExceptionFlags)
return 1;
- siginfo_t si = {0};
+ siginfo_t si = {};
si.si_code = SI_KERNEL;
/* Coerce win32 value to posix value. */
switch (e->ExceptionCode)
@@ -594,17 +595,12 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void
return 1;
}
+ if (me.andreas)
+ me.andreas->leave (); /* Return from a "san" caught fault */
+
debug_printf ("In cygwin_except_handler exception %p at %p sp %p", e->ExceptionCode, in->Eip, in->Esp);
debug_printf ("In cygwin_except_handler signal %d at %p", si.si_signo, in->Eip);
- bool masked = !!(me.sigmask & SIGTOMASK (si.si_signo));
- if (masked)
- syscall_printf ("signal %d, masked %p", si.si_signo,
- global_sigs[si.si_signo].sa_mask);
-
- debug_printf ("In cygwin_except_handler calling %p",
- global_sigs[si.si_signo].sa_handler);
-
DWORD *ebp = (DWORD *) in->Esp;
for (DWORD *bpend = (DWORD *) __builtin_frame_address (0); ebp > bpend; ebp--)
if (*ebp == in->SegCs && ebp[-1] == in->Eip)
@@ -613,9 +609,6 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void
break;
}
- if (me.andreas)
- me.andreas->leave (); /* Return from a "san" caught fault */
-
me.copy_context (in);
/* Temporarily replace windows top level SEH with our own handler.
@@ -623,63 +616,38 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void
will be removed automatically after our exception handler returns. */
_except_list->handler = handle;
- if (masked
- || &me == _sig_tls
- || !cygwin_finished_initializing
- || (void *) global_sigs[si.si_signo].sa_handler == (void *) SIG_DFL
- || (void *) global_sigs[si.si_signo].sa_handler == (void *) SIG_IGN
- || (void *) global_sigs[si.si_signo].sa_handler == (void *) SIG_ERR)
+ /* Another exception could happen while tracing or while exiting.
+ Only do this once. */
+ if (recursed++)
+ system_printf ("Error while dumping state (probably corrupted stack)");
+ else if (!try_to_debug (0))
+ rtl_unwind (frame, e);
+ else
{
- /* Print the exception to the console */
- if (!myself->cygstarted)
- for (int i = 0; status_info[i].name; i++)
- if (status_info[i].code == e->ExceptionCode)
- {
- system_printf ("Exception: %s", status_info[i].name);
- break;
- }
-
- /* Another exception could happen while tracing or while exiting.
- Only do this once. */
- if (recursed++)
- system_printf ("Error while dumping state (probably corrupted stack)");
- else
- {
- if (try_to_debug (0))
- {
- debugging = true;
- return 0;
- }
-
- rtl_unwind (frame, e);
- if (cygheap->rlim_core > 0UL)
- stackdump ((DWORD) ebp, in, e);
- }
-
- if ((NTSTATUS) e->ExceptionCode == STATUS_ACCESS_VIOLATION)
- {
- int error_code = 0;
- if (si.si_code == SEGV_ACCERR) /* Address present */
- error_code |= 1;
- if (e->ExceptionInformation[0]) /* Write access */
- error_code |= 2;
- if (!me.inside_kernel (in)) /* User space */
- error_code |= 4;
- klog (LOG_INFO, "%s[%d]: segfault at %08x rip %08x rsp %08x error %d",
- __progname, myself->pid,
- e->ExceptionInformation[1], in->Eip, in->Esp,
- error_code);
- }
+ debugging = true;
+ return 0;
+ }
- setup_signal_exit ((cygheap->rlim_core > 0UL ? 0x80 : 0) | si.si_signo);
+ /* FIXME: Probably should be handled in sigpacket::process */
+ if ((NTSTATUS) e->ExceptionCode == STATUS_ACCESS_VIOLATION)
+ {
+ int error_code = 0;
+ if (si.si_code == SEGV_ACCERR) /* Address present */
+ error_code |= 1;
+ if (e->ExceptionInformation[0]) /* Write access */
+ error_code |= 2;
+ if (!me.inside_kernel (in)) /* User space */
+ error_code |= 4;
+ klog (LOG_INFO, "%s[%d]: segfault at %08x rip %08x rsp %08x error %d",
+ __progname, myself->pid, e->ExceptionInformation[1],
+ in->Eip, in->Esp, error_code);
}
- si.si_addr = (si.si_signo == SIGSEGV || si.si_signo == SIGBUS
- ? (void *) e->ExceptionInformation[1]
- : (void *) in->Eip);
- si.si_errno = si.si_pid = si.si_uid = 0;
+ cygwin_exception exc ((DWORD) ebp, in, e);
+ si.si_cyg = (void *) &exc;
+ si.si_addr = (void *) in->Eip;
me.incyg++;
- sig_send (NULL, si, &me); // Signal myself
+ sig_send (NULL, si, &me); /* Signal myself */
me.incyg--;
e->ExceptionFlags = 0;
return 0;
@@ -962,7 +930,7 @@ ctrl_c_handler (DWORD type)
list goad. */
if (global_sigs[SIGHUP].sa_handler != SIG_DFL)
{
- sig_send (myself_nowait, SIGHUP);
+ sig_send (myself, SIGHUP);
return TRUE;
}
return FALSE;
@@ -1115,6 +1083,59 @@ set_signal_mask (sigset_t& setmask, sigset_t newmask)
sig_dispatch_pending (true);
}
+/* Exit due to a signal. Should only be called from the signal thread. */
+extern "C" {
+static void
+signal_exit (int sig, siginfo_t *si)
+{
+ debug_printf ("exiting due to signal %d", sig);
+ exit_state = ES_SIGNAL_EXIT;
+
+ if (have_execed)
+ {
+ sigproc_printf ("terminating captive process");
+ TerminateProcess (ch_spawn, sigExeced = sig);
+ }
+
+ if (cygheap->rlim_core > 0UL)
+ switch (sig)
+ {
+ case SIGABRT:
+ case SIGBUS:
+ case SIGFPE:
+ case SIGILL:
+ case SIGQUIT:
+ case SIGSEGV:
+ case SIGSYS:
+ case SIGTRAP:
+ case SIGXCPU:
+ case SIGXFSZ:
+ if (try_to_debug ())
+ break;
+ if (si->si_code != SI_USER && si->si_cyg)
+ ((cygwin_exception *) si->si_cyg)->dumpstack ();
+ else
+ {
+ cygwin_exception exc (_my_tls.thread_context.ebp);
+ exc.dumpstack ();
+ }
+ break;
+ }
+
+ lock_process until_exit (true);
+
+ if (have_execed || exit_state > ES_PROCESS_LOCKED)
+ myself.exit (sig);
+
+ /* Starve other threads in a vain attempt to stop them from doing something
+ stupid. */
+ SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_TIME_CRITICAL);
+
+ sigproc_printf ("about to call do_exit (%x)", sig);
+ do_exit (sig);
+}
+} /* extern "C" */
+
int __stdcall
sigpacket::process ()
{
@@ -1224,17 +1245,38 @@ sigpacket::process ()
stop:
handler = (void *) sig_handle_tty_stop;
thissig = dummy;
+ goto dosig;
+
+exit_sig:
+ handler = (void *) signal_exit;
+ thissig.sa_flags |= SA_SIGINFO;
+ if (si.si_signo == SIGKILL)
+ goto dispatch_sig;
dosig:
if (ISSTATE (myself, PID_STOPPED) && !continue_now)
+ {
rc = -1; /* No signals delivered if stopped */
- else
+ goto done;
+ }
+
+dispatch_sig:
+ /* Do stuff for gdb */
+ if (si.si_code == SI_USER || !si.si_cyg)
{
- /* Dispatch to the appropriate function. */
- sigproc_printf ("signal %d, signal handler %p", si.si_signo, handler);
- rc = setup_handler (handler, thissig, tls);
- continue_now = false;
+ CONTEXT c;
+ c.ContextFlags = CONTEXT_FULL;
+ GetThreadContext (hMainThread, &c);
+ _my_tls.copy_context (&c);
+
+ /* Tell gdb that we got a signal. Presumably, gdb already noticed this
+ if we hit an exception. */
+ _my_tls.signal_debugger (si.si_signo);
}
+ /* Dispatch to the appropriate function. */
+ sigproc_printf ("signal %d, signal handler %p", si.si_signo, handler);
+ rc = setup_handler (handler, thissig, tls);
+ continue_now = false;
done:
if (continue_now)
@@ -1245,10 +1287,6 @@ done:
sigproc_printf ("returning %d", rc);
return rc;
-exit_sig:
- sigproc_printf ("setting up for exit with signal %d", si.si_signo);
- setup_signal_exit (si.si_signo);
- return rc;
}
int
diff --git a/winsup/cygwin/include/cygwin/signal.h b/winsup/cygwin/include/cygwin/signal.h
index 7aecf1737..eaf5bd2c5 100644
--- a/winsup/cygwin/include/cygwin/signal.h
+++ b/winsup/cygwin/include/cygwin/signal.h
@@ -1,6 +1,6 @@
/* signal.h
- Copyright 2004, 2005, 2006, 2011 Red Hat, Inc.
+ Copyright 2004, 2005, 2006, 2011, 2012, 2013 Red Hat, Inc.
This file is part of Cygwin.
@@ -127,8 +127,13 @@ typedef struct
clock_t si_stime; /* system time */
};
- /* core dumping signals */
- void *si_addr; /* faulting address */
+ __extension__ struct
+ {
+ /* core dumping signals */
+ void *si_addr; /* faulting address */
+ void *si_cyg; /* pointer to block containing
+ cygwin-special info */
+ };
};
} siginfo_t;
#pragma pack(pop)
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index eeeb4dc9b..b67b694ab 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -1,7 +1,7 @@
/* sigproc.cc: inter/intra signal and sub process handler
- Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+ 2008, 2009, 2010, 2011, 2012, 2013 Red Hat, Inc.
This file is part of Cygwin.
@@ -31,7 +31,7 @@ details. */
#define WSSC 60000 // Wait for signal completion
#define WPSP 40000 // Wait for proc_subproc mutex
-#define no_signals_available(x) (!my_sendsig || ((x) && myself->exitcode & EXITCODE_SET) || (&_my_tls == _sig_tls))
+#define no_signals_available() (exit_state || (myself->exitcode & EXITCODE_SET) || (&_my_tls == _sig_tls))
/*
* Global variables
@@ -61,7 +61,6 @@ _cygtls NO_COPY *_sig_tls;
Static HANDLE my_sendsig;
Static HANDLE my_readsig;
-Static int signal_exit_code;
/* Function declarations */
static int __stdcall checkstate (waitq *) __attribute__ ((regparm (1)));
@@ -354,53 +353,6 @@ _cygtls::remove_wq (DWORD wait)
}
}
-inline void
-close_my_readsig ()
-{
- HANDLE h;
- if ((h = InterlockedExchangePointer (&my_readsig, NULL)))
- ForceCloseHandle1 (h, my_readsig);
-}
-
-/* Exit due to a signal, even in presence of more exceptions. We used to just
- call exit, but a SIGSEGV shouldn't cause atexit routines to run.
- Should only be called from the signal thread. */
-void
-_cygtls::signal_exit (int rc)
-{
- signal_debugger (rc & 0x7f);
-
- if (rc == SIGQUIT || rc == SIGABRT)
- {
- CONTEXT c;
- c.ContextFlags = CONTEXT_FULL;
- GetThreadContext (hMainThread, &c);
- copy_context (&c);
- if (cygheap->rlim_core > 0UL)
- rc |= 0x80;
- }
-
- if (have_execed)
- {
- sigproc_printf ("terminating captive process");
- TerminateProcess (ch_spawn, sigExeced = rc);
- }
-
- if ((rc & 0x80) && !try_to_debug ())
- stackdump (thread_context.ebp, true);
-
- lock_process until_exit (true);
- if (have_execed || exit_state > ES_PROCESS_LOCKED)
- myself.exit (rc);
-
- /* Starve other threads in a vain attempt to stop them from doing something
- stupid. */
- SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_TIME_CRITICAL);
-
- sigproc_printf ("about to call do_exit (%x)", rc);
- do_exit (rc);
-}
-
/* Terminate the wait_subproc thread.
Called on process exit.
Also called by spawn_guts to disassociate any subprocesses from this
@@ -523,36 +475,11 @@ sigproc_terminate (exit_states es)
exit_states prior_exit_state = exit_state;
exit_state = es;
if (!cygwin_finished_initializing)
- sigproc_printf ("don't worry about signal thread");
+ /* nothing to do */;
else if (prior_exit_state >= ES_FINAL)
sigproc_printf ("already performed");
else
- {
- sigproc_printf ("entering");
- sig_send (myself_nowait, __SIGEXIT);
- proc_terminate (); // clean up process stuff
- }
-}
-
-/* Set up stuff so that the signal thread will know that we are
- exiting due to a signal. */
-void
-setup_signal_exit (int sig)
-{
- signal_exit_code = sig; /* Tell wait_sig() that we are exiting. */
- exit_state = ES_SIGNAL_EXIT; /* Tell the rest of the world that we are exiting. */
-
- if (&_my_tls != _sig_tls)
- {
- sigpacket sp = {};
- sp.si.si_signo = __SIGEXIT;
- DWORD len;
- /* Write a packet to the wait_sig thread. It will eventuall cause
- the process to exit too. So just wait for that to happen after
- sending the packet. */
- WriteFile (my_sendsig, &sp, sizeof (sp), &len, NULL);
- Sleep (INFINITE);
- }
+ proc_terminate (); // clean up process stuff
}
/* Exit the current thread very carefully.
@@ -576,7 +503,7 @@ exit_thread (DWORD res)
}
ProtectHandle1 (h, exit_thread);
siginfo_t si = {__SIGTHREADEXIT, SI_KERNEL};
- si.si_value.sival_ptr = h;
+ si.si_cyg = h;
lock_process for_now; /* May block indefinitely if we're exiting. */
if (exit_state)
{
@@ -599,7 +526,7 @@ sig_send (_pinfo *p, int sig, _cygtls *tid)
/* nothing */;
else if (sig == __SIGFLUSH || sig == __SIGFLUSHFAST)
return 0;
- else if (sig == __SIGNOHOLD || sig == __SIGEXIT)
+ else if (sig == __SIGNOHOLD)
{
SetEvent (sig_hold);
sigheld = false;
@@ -611,10 +538,9 @@ sig_send (_pinfo *p, int sig, _cygtls *tid)
#endif
return -1;
}
- siginfo_t si = {0};
+ siginfo_t si = {};
si.si_signo = sig;
si.si_code = SI_KERNEL;
- si.si_pid = si.si_uid = si.si_errno = 0;
return sig_send (p, si, tid);
}
@@ -648,7 +574,7 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
}
else
{
- if (no_signals_available (si.si_signo != __SIGEXIT))
+ if (no_signals_available ())
{
set_errno (EAGAIN);
goto out; // Either exiting or not yet initializing
@@ -778,7 +704,7 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
}
else
{
- if (no_signals_available (true))
+ if (no_signals_available ())
sigproc_printf ("I'm going away now");
else if (!p->exec_sendsig)
system_printf ("error sending signal %d to pid %d, pipe handle %p, %E",
@@ -818,7 +744,7 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls)
rc = 0; // Successful exit
else
{
- if (!no_signals_available (true))
+ if (!no_signals_available ())
system_printf ("wait for sig_complete event failed, signal %d, rc %d, %E",
si.si_signo, rc);
set_errno (ENOSYS);
@@ -1390,12 +1316,6 @@ wait_sig (VOID *)
WaitForSingleObject (sig_hold, INFINITE);
DWORD nb;
- /* If signal_exit_code is set then we are shutting down due to a signal.
- We'll exit this loop iff there is nothing more in the signal queue. */
- if (signal_exit_code
- && (!PeekNamedPipe (my_readsig, NULL, 0, NULL, &nb, NULL) || !nb))
- break;
-
pack.sigtls = NULL;
if (!ReadFile (my_readsig, &pack, sizeof (pack), &nb, NULL))
break;
@@ -1415,8 +1335,9 @@ wait_sig (VOID *)
continue;
}
- if (signal_exit_code && pack.si.si_signo > 0)
- continue; /* No more real signals allowed */
+ /* Don't process signals when we start exiting */
+ if (exit_state && pack.si.si_signo)
+ continue;
sigset_t dummy_mask;
if (!pack.mask)
@@ -1459,10 +1380,6 @@ wait_sig (VOID *)
clearwait = true;
}
break;
- case __SIGEXIT:
- my_sendsig = NULL;
- sigproc_printf ("saw __SIGEXIT");
- break; /* handle below */
case __SIGSETPGRP:
init_console_handler (true);
break;
@@ -1475,7 +1392,7 @@ wait_sig (VOID *)
release the process lock which it held and close it's handle.
See cgf-000017 in DevNotes for more details.
*/
- HANDLE h = (HANDLE) pack.si.si_value.sival_ptr;
+ HANDLE h = (HANDLE) pack.si.si_cyg;
DWORD res = WaitForSingleObject (h, 5000);
lock_process::force_release (pack.sigtls);
ForceCloseHandle1 (h, exit_thread);
@@ -1519,20 +1436,5 @@ wait_sig (VOID *)
sigproc_printf ("signalling pack.wakeup %p", pack.wakeup);
SetEvent (pack.wakeup);
}
- if (pack.si.si_signo == __SIGEXIT)
- break;
}
-
- sigproc_printf ("signal thread exiting");
-
- my_sendsig = NULL; /* Make no_signals_allowed return true */
- close_my_readsig (); /* Cause any sig_send's to stop */
-
- if (signal_exit_code)
- _my_tls.signal_exit (signal_exit_code);
-
- /* Just wait for the process to go away. Otherwise, this thread's
- exit value could be interpreted as the process exit value.
- See cgf-000017 in DevNotes for more details. */
- Sleep (INFINITE);
}
diff --git a/winsup/cygwin/sigproc.h b/winsup/cygwin/sigproc.h
index 26332935e..0baf39403 100644
--- a/winsup/cygwin/sigproc.h
+++ b/winsup/cygwin/sigproc.h
@@ -24,9 +24,8 @@ enum
__SIGFLUSHFAST = -(NSIG + 6),
__SIGHOLD = -(NSIG + 7),
__SIGNOHOLD = -(NSIG + 8),
- __SIGEXIT = -(NSIG + 9),
- __SIGSETPGRP = -(NSIG + 10),
- __SIGTHREADEXIT = -(NSIG + 11)
+ __SIGSETPGRP = -(NSIG + 9),
+ __SIGTHREADEXIT = -(NSIG + 10)
};
#endif