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-existant 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.